from unittest import mock import faker import pytest from fansifter_common.artist.exceptions import InvalidGlobalParticipantIdError from fansifter_common.artist.validators import ArtistValidator from tests.factories import GlobalParticipantFactory @pytest.fixture def artist_validator(graphql_router_client_mock: mock.MagicMock) -> ArtistValidator: return ArtistValidator(graphql_router_client=graphql_router_client_mock) def test_validate_global_participant_id( artist_validator: ArtistValidator, graphql_router_client_mock: mock.MagicMock, ) -> None: global_participant = GlobalParticipantFactory.build() graphql_router_client_mock.get_global_participant_by_gp_id.return_value = ( global_participant ) result = artist_validator.validate_global_participant_id(global_participant.id) assert result == global_participant def test_validate_global_participant_id_invalid( artist_validator: ArtistValidator, graphql_router_client_mock: mock.MagicMock, faker: faker.Faker, ) -> None: global_participant_id = faker.uuid4() graphql_router_client_mock.get_global_participant_by_gp_id.return_value = None with pytest.raises(InvalidGlobalParticipantIdError): artist_validator.validate_global_participant_id(global_participant_id)