import datetime
import pytz
from django.test import TestCase, RequestFactory
from rest_framework import status
from radioco.apps.api import serializers
from radioco.apps.radioco.test_utils import TestDataMixin
from radioco.apps.schedules.models import Transmission
MOCK_CONTEXT = {'request': RequestFactory().get('')}
[docs]class TestApi(TestDataMixin):
[docs] def test_api(self):
response = self.client.get('/api/2/')
self.assertEqual(response.status_code, status.HTTP_200_OK)
[docs]class TestSerializers(TestDataMixin, TestCase):
[docs] def test_programme(self):
serializer = serializers.ProgrammeSerializer(
self.programme,
context=MOCK_CONTEXT
)
self.assertListEqual(
serializer.data.keys(),
['id', 'slug', 'name', 'synopsis', 'runtime', 'photo_url', 'rss_url', 'language', 'category'])
[docs] def test_programme_photo_url(self):
serializer = serializers.ProgrammeSerializer(
self.programme,
context=MOCK_CONTEXT
)
self.assertEqual(
serializer.data['photo_url'], "http://testserver/media/defaults/example/radio_5.jpg"
)
[docs] def test_episode(self):
serializer = serializers.EpisodeSerializer(self.episode)
self.assertListEqual(
serializer.data.keys(),
['title', 'programme', 'summary', 'issue_date', 'season', 'number_in_season'])
[docs] def test_episode_programme(self):
serializer = serializers.EpisodeSerializer(self.episode)
self.assertEqual(serializer.data['programme'], 'classic-hits')
[docs] def test_schedule(self):
serializer = serializers.ScheduleSerializer(self.schedule)
schedule_id = self.schedule.id
calendar_id = self.calendar.id
self.assertDictEqual(serializer.data, {
'title': u'Classic hits',
'source': None,
'start': '2015-01-01T14:00:00Z',
'calendar': calendar_id,
'runtime': datetime.timedelta(minutes=60),
'type': 'L',
'id': schedule_id,
'programme': u'classic-hits'})
[docs] def test_transmission(self):
serializer = serializers.TransmissionSerializer(
Transmission(self.schedule, pytz.utc.localize(datetime.datetime(2015, 1, 6, 14, 0, 0))),
context=MOCK_CONTEXT
)
self.assertDictEqual(
serializer.data,
{
'id': self.schedule.id,
'schedule': self.schedule.id,
'programme': self.schedule.programme.id,
'episode': None,
'source': None,
'type': u'L',
'start': '2015-01-06T14:00:00Z',
'end': '2015-01-06T15:00:00Z',
'name': u'Classic hits',
'slug': u'classic-hits',
'programme_url': u'http://testserver/programmes/classic-hits/',
'episode_url': None,
}
)