import pytest from sqlmodel import Session import src.models as models import src.users.service as users_service import src.users.exceptions as users_exceptions import tests.factories.users as users_factory class TestUsersService: def test_get_all_users(self, session: Session, users: list[models.UserPublic]): result = users_service.get_all(session, [], []) assert len(result) == 3 assert result == users def test_get_all_users_filter_names( self, session: Session, users: list[models.UserPublic]): result = users_service.get_all(session, ['test user 1 (admin)'], []) assert len(result) == 1 assert result == [users[0]] def test_get_all_users_filter_emails( self, session: Session, users: list[models.UserPublic]): result = users_service.get_all(session, [], ['test1@test.com']) assert len(result) == 1 def test_get_all_users_all_filters( self, session: Session, users: list[models.UserPublic]): result = users_service.get_all( session, ['test user 1 (admin)'], ['test1@test.com']) assert len(result) == 1 def test_get_one_user(self, session: Session, users: list[models.UserPublic]): result = users_service.get_one(session, users[0].id) assert result == users[0] def test_get_one_user_notfound(self, session: Session): result = users_service.get_one(session, 122) assert result is None def test_create_user( self, session: Session, ): user_create = users_factory.user_create_factory( name="new test user", email='test@test.fr', role_names=['test role'] ) result = users_service.create_one(session, user_create) assert result.id is not None assert result.name == "new test user" assert result.email == "test@test.fr" assert len(result.roles) == 1 def test_create_user_invalidinput( self, session: Session, ): user_create = None with pytest.raises(users_exceptions.UserCreateError): result = users_service.create_one(session, user_create) def test_update_user( self, session: Session, users: list[models.UserPublic] ): user_update = users_factory.user_update_factory( name="updated test user", email='test@testttt.fr', role_names=['test role'] ) user_id = users[0].id result = users_service.update_one(session, user_id, user_update) assert result.id == user_id assert result.name == 'updated test user' assert result.email == 'test@testttt.fr' def test_update_user_notfound( self, session: Session, ): user_update = users_factory.user_update_factory( name="updated test user", email='test@testttt.fr', role_names=['test role'] ) user_id = 123 with pytest.raises(users_exceptions.UserNotFoundError): result = users_service.update_one(session, user_id, user_update) def test_delete_user( self, session: Session, users: list[models.UserPublic] ): user_id = users[0].id result = users_service.delete_one(session, user_id) check = users_service.get_one(session, user_id) assert check is None def test_delete_user_notfound( self, session: Session, users: list[models.UserPublic] ): user_id = 123 with pytest.raises(users_exceptions.UserNotFoundError): result = users_service.delete_one(session, user_id)