test_model.py 4.07 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115
"""
Tests for Mobile API Configuration Models
"""
from datetime import datetime
import ddt
from django.test import TestCase
from pytz import UTC
from mobile_api.models import AppVersionConfig, MobileApiConfig


@ddt.ddt
class TestAppVersionConfigModel(TestCase):
    """
    Tests for app version configuration model
    """
    def setUp(self):
        super(TestAppVersionConfigModel, self).setUp()

    def set_app_version_config(self):
        """ Creates configuration data for platform versions """
        AppVersionConfig(platform="ios", version="1.1.1", expire_at=None, enabled=True).save()
        AppVersionConfig(
            platform="ios",
            version="2.2.2",
            expire_at=datetime(2014, 01, 01, tzinfo=UTC),
            enabled=True
        ).save()
        AppVersionConfig(
            platform="ios",
            version="4.1.1",
            expire_at=datetime(5000, 01, 01, tzinfo=UTC),
            enabled=False
        ).save()
        AppVersionConfig(
            platform="ios",
            version="4.4.4",
            expire_at=datetime(9000, 01, 01, tzinfo=UTC),
            enabled=True
        ).save()
        AppVersionConfig(platform="ios", version="6.6.6", expire_at=None, enabled=True).save()
        AppVersionConfig(platform="ios", version="8.8.8", expire_at=None, enabled=False).save()

        AppVersionConfig(platform="android", version="1.1.1", expire_at=None, enabled=True).save()
        AppVersionConfig(
            platform="android",
            version="2.2.2",
            expire_at=datetime(2014, 01, 01, tzinfo=UTC),
            enabled=True
        ).save()
        AppVersionConfig(
            platform="android",
            version="4.4.4",
            expire_at=datetime(9000, 01, 01, tzinfo=UTC),
            enabled=True
        ).save()
        AppVersionConfig(platform="android", version="8.8.8", expire_at=None, enabled=True).save()

    @ddt.data(
        ('ios', '4.4.4'),
        ('ios', '6.6.6'),
        ("android", '4.4.4'),
        ('android', '8.8.8')
    )
    @ddt.unpack
    def test_no_configs_available(self, platform, version):
        self.assertIsNone(AppVersionConfig.latest_version(platform))
        self.assertIsNone(AppVersionConfig.last_supported_date(platform, version))

    @ddt.data(('ios', '6.6.6'), ('android', '8.8.8'))
    @ddt.unpack
    def test_latest_version(self, platform, latest_version):
        self.set_app_version_config()
        self.assertEqual(latest_version, AppVersionConfig.latest_version(platform))

    @ddt.data(
        ('ios', '3.3.3', datetime(9000, 1, 1, tzinfo=UTC)),
        ('ios', '4.4.4', datetime(9000, 1, 1, tzinfo=UTC)),
        ('ios', '6.6.6', None),
        ("android", '4.4.4', datetime(9000, 1, 1, tzinfo=UTC)),
        ('android', '8.8.8', None)
    )
    @ddt.unpack
    def test_last_supported_date(self, platform, version, last_supported_date):
        self.set_app_version_config()
        self.assertEqual(last_supported_date, AppVersionConfig.last_supported_date(platform, version))


class TestMobileApiConfig(TestCase):
    """
    Tests MobileAPIConfig
    """

    def test_video_profile_list(self):
        """Check that video_profiles config is returned in order as a list"""
        MobileApiConfig(video_profiles="mobile_low,mobile_high,youtube").save()
        video_profile_list = MobileApiConfig.get_video_profiles()
        self.assertEqual(
            video_profile_list,
            [u'mobile_low', u'mobile_high', u'youtube']
        )

    def test_video_profile_list_with_whitespace(self):
        """Check video_profiles config with leading and trailing whitespace"""
        MobileApiConfig(video_profiles=" mobile_low , mobile_high,youtube ").save()
        video_profile_list = MobileApiConfig.get_video_profiles()
        self.assertEqual(
            video_profile_list,
            [u'mobile_low', u'mobile_high', u'youtube']
        )

    def test_empty_video_profile(self):
        """Test an empty video_profile"""
        MobileApiConfig(video_profiles="").save()
        video_profile_list = MobileApiConfig.get_video_profiles()
        self.assertEqual(video_profile_list, [])