"""Tests for Insertion Point handler tier.""" from unittest.mock import MagicMock from podcast.constants import schema from podcast.logic import insertion_point def test_insertion_points_create(fixture_client, monkeypatch): """Test insertion point logic tier is called properly.""" podcast_id = 1 episode_id = 1 monkeypatch.setattr( insertion_point, 'create_insertion_points', MagicMock(return_value={'items': []})) data = [ {'point_type': 'mid', 'count': 1, 'timecode': '10.20'}, {'point_type': 'post', 'count': 1, 'timecode': '0'}, ] url = '/podcasts/{0}/episodes/{1}/points'.format(podcast_id, episode_id) fixture_client.post(url, json=data) validated_data = schema.InsertionPointsPayloadSchema(many=True).load(data) insertion_point.create_insertion_points.assert_called_once_with( podcast_id, episode_id, validated_data) def test_insertion_points_create_validation_fail(fixture_client, monkeypatch): """Test insertion point logic tier is not called.""" podcast_id = 1 episode_id = 1 monkeypatch.setattr( insertion_point, 'create_insertion_points', MagicMock(return_value={'items': []}) ) data = [ {'point_type': 'middle', 'count': 1, 'timecode': '10.20'}, {'point_type': 'post', 'count': 1, 'timecode': '0'}, ] url = '/podcasts/{0}/episodes/{1}/points'.format(podcast_id, episode_id) fixture_client.post(url, json=data) assert not insertion_point.create_insertion_points.called