"""Unit tests for podcast season model.""" import pytest from podcast.models import podcast_season from podcast.utils import exc def test_create_seasons_success(seasons_fixture): """Test create seasons success.""" result = podcast_season.create_seasons(100, seasons_fixture, False) assert result == [ { 'id': 6, 'podcast_id': 100, 'number': 1, 'name': 'test season', 'external_id': 'test-id' }, { 'id': 7, 'podcast_id': 100, 'number': 2, 'name': 'another season', 'external_id': None } ] def test_update_seasons_success(seasons_fixture): """Test update seasons success.""" seasons_fixture[0]['id'] = 1 seasons_fixture[0]['number'] = 3 seasons_fixture[0]['name'] = 'updated season name' seasons_fixture[1]['id'] = 2 seasons_fixture[1]['external_id'] = 'external_id' seasons_fixture.extend( [ {'number': 3, 'name': 'third season', 'external_id': 'external_id 3'}, {'number': 4, 'name': 'fourth season'} ] ) result = podcast_season.create_seasons(1, seasons_fixture, True) assert result == [ { 'id': 1, 'podcast_id': 1, 'number': 3, 'name': 'updated season name', 'external_id': 'test-id' }, { 'id': 2, 'podcast_id': 1, 'number': 2, 'name': 'another season', 'external_id': 'external_id' }, { 'id': 6, 'podcast_id': 1, 'number': 3, 'name': 'third season', 'external_id': 'external_id 3' }, { 'id': 7, 'podcast_id': 1, 'number': 4, 'name': 'fourth season', 'external_id': None } ] def test_update_seasons_failure(seasons_fixture): """Test update seasons failure when active seasons are deleted.""" seasons_fixture[0]['id'] = 3 with pytest.raises(exc.OwsError) as err: podcast_season.create_seasons(1, seasons_fixture, True) assert err.value.status == 400 assert err.value.message == 'Missing active season ids: {1}' def test_delete_seasons_success(seasons_fixture): """Test delete seasons success.""" seasons_fixture[0]['id'] = 1 seasons_fixture[1]['id'] = 2 result = podcast_season.create_seasons(1, seasons_fixture, True) assert result == [ { 'id': 1, 'podcast_id': 1, 'number': 1, 'name': 'test season', 'external_id': 'test-id' }, { 'id': 2, 'podcast_id': 1, 'number': 2, 'name': 'another season', 'external_id': 'pod_1_season_2' } ] def test_get_seasons_status(): """Test episode model return data by episode_id.""" result = podcast_season.get_seasons_status([1, 2]) assert result == { 'items': [ {'season_id': 1, 'is_active': True}, {'season_id': 2, 'is_active': False} ] } def test_get_seasons_by_ids(): """Test get seasons by ids.""" results = podcast_season.get_seasons_by_ids([1, 2]) assert len(results['items']) == 2 assert results == { 'items': [ {'id': 1, 'podcast_id': 1, 'number': 1, 'name': 's1', 'external_id': 'pod_1_season_1'}, {'id': 2, 'podcast_id': 1, 'number': 2, 'name': 's2', 'external_id': 'pod_1_season_2'} ] } def test_get_seasons_by_ids_no_data(): """Test get seasons by ids with no items.""" results = podcast_season.get_seasons_by_ids([10, 20]) assert len(results['items']) == 0