"""Tests for Performer Model.""" import pytest from backend.connectors import mysql from backend.models.performer import Performer from backend.models.performer import PerformerRole from tests.testutils import db from tests.testutils.fixtures.performer_roles_fixture import performer_roles @db.test_schema_no_seed def test_performer_role(): """Test Performer Role table.""" test_performer = performer_roles[1] with mysql.ows_track_db_session() as session: performer_role_id = test_performer['performer_role_id'] performer_role = session.query(PerformerRole).get(performer_role_id) assert performer_role assert performer_role.performer_role_id == performer_role_id assert performer_role.performer_role == \ test_performer['performer_role'] @db.test_schema_no_seed def test_performer(performer_factory): """Test Performer table.""" performer = performer_factory(performer_type='featured', tuid=1) # Save Data with mysql.ows_track_db_session() as session: session.merge(performer) # Retrieve Data with mysql.ows_track_db_session() as session: saved_performer = session.query(Performer).get(performer.performer_id) assert saved_performer @pytest.mark.parametrize('invalid_type', ['invalid', None, '', ' ']) def test_no_invalid_performer_type(performer_factory, invalid_type): """Test invalid performer type raises exception.""" performer = performer_factory(performer_type='featured', tuid=1) with pytest.raises(ValueError): performer.performer_type = invalid_type @pytest.mark.parametrize('invalid_birth_name', [None, '', ' ']) def test_no_invalid_birth_name(performer_factory, invalid_birth_name): """Test invalid birth name raises exception.""" performer = performer_factory(performer_type='featured', tuid=1) with pytest.raises(ValueError): performer.birth_name = invalid_birth_name def test_performer_dict(performer_factory): """Test Performer dictionary.""" performer = performer_factory(performer_type='featured', tuid=1) assert performer.to_dict() == { 'performer_id': 1, 'performer_role_id': 1, 'type': 'featured', 'birth_name': performer.birth_name, 'tuid': 1, }