"""Unit tests for Promo Player Track model.""" import pytest from promo_player.models import promo_player_track from tests.utils import db_operations @pytest.fixture def db_fixture(): """Drop and re-create all the SQLite tables and seed them.""" db_operations.create_tables() db_operations.seed_data() def test_create(db_fixture): """Test that a promo player track can be created.""" data = { 'promo_player_id': 11, 'track_id': 12, 'sequence_number': 1 } result = promo_player_track.create(data) created = result.message assert created['promo_player_id'] == 11 assert created['track_id'] == 12 def test_create_missing_parameters(db_fixture): """Test that an error response is returned if missing parameters.""" data = {'track_id': 1} result = promo_player_track.create(data) assert result.status == 400 def test_update(db_fixture): """Test that a promo player track can be updated.""" data = { 'promo_player_id': 1, 'track_id': 1, 'sequence_number': 2 } result = promo_player_track.update(data) updated = result.message assert updated['promo_player_id'] == 1 assert updated['track_id'] == 1 assert updated['sequence_number'] == 2 def test_update_missing_parameters(db_fixture): """Test that an error response is returned if missing parameters.""" data = { 'sequence_number': 2 } result = promo_player_track.update(data) assert result.status == 400 def test_update_not_found(db_fixture): """Test that an error response is returned if not found.""" data = { 'promo_player_id': 666, 'track_id': 1, 'sequence_number': 2 } result = promo_player_track.update(data) assert result.status == 404 def test_delete(db_fixture): """Test that a promo player track can be deleted.""" promo_player_id = 2 track_id = 3 result = promo_player_track.delete(promo_player_id, track_id) item = result.message assert item['promo_player_id'] == 2 assert item['track_id'] == 3 def test_delete_not_found(db_fixture): """Test that an error response is returned if not found.""" promo_player_id = 666 track_id = 3 result = promo_player_track.delete(promo_player_id, track_id) assert result.status == 404 def test_delete_missing_parameters(db_fixture): """Test that an error response is returned if missing parameters.""" promo_player_id = 2 track_id = None result = promo_player_track.delete(promo_player_id, track_id) assert result.status == 400 def test_get_by_promo_player_id(db_fixture): """Test that promo player tracks can be retrieved by promo_player_id.""" promo_player_id = 1 result = promo_player_track.get_by_promo_player_id(promo_player_id) items = result.message['items'] assert len(items) == 2 assert items[0]['track_id'] == 1 assert items[1]['track_id'] == 2 def test_get_by_promo_player_id_no_results(db_fixture): """Test that an empty list is returned if no results.""" promo_player_id = 666 result = promo_player_track.get_by_promo_player_id(promo_player_id) items = result.message['items'] assert len(items) == 0 def test_get_by_promo_player_id_missing_parameters(db_fixture): """Test that an error response is returned if missing parameters.""" promo_player_id = None result = promo_player_track.get_by_promo_player_id(promo_player_id) assert result.status == 400