"""Test models""" import pytest from app.models import User class TestUserModel: """Test User model""" @pytest.mark.unit def test_user_creation(self, db_session): """Test creating a user""" user = User( email="test2@example.com", username="testuser2", first_name="Test", last_name="User", is_admin=False, is_active=True, ) user.set_password("password123") db_session.add(user) db_session.commit() assert user.id is not None assert user.email == "test2@example.com" assert user.username == "testuser2" assert user.first_name == "Test" assert user.last_name == "User" @pytest.mark.unit def test_user_password_hashing(self, db_session): """Test password hashing and verification""" user = User(email="test1@example.com", username="testuser1") user.set_password("password123") db_session.add(user) db_session.commit() assert user.check_password("password123") is True assert user.check_password("wrongpassword") is False @pytest.mark.unit def test_user_to_dict(self, db_session): """Test user serialization to dictionary""" user = User( email="test@example.com", username="testuser", first_name="Test", last_name="User", ) user.set_password("password123") db_session.add(user) db_session.commit() user_dict = user.to_dict() assert user_dict["email"] == "test@example.com" assert user_dict["username"] == "testuser" assert "password" not in user_dict assert "password_hash" not in user_dict @pytest.mark.unit def test_user_repr(self, db_session): """Test user string representation""" user = User(email="test3@example.com", username="testuser3") user.set_password("password123") db_session.add(user) db_session.commit() assert repr(user) == ""