118 lines
4.0 KiB
Python
118 lines
4.0 KiB
Python
"""
|
|
Tests for Mobile API Configuration Models
|
|
"""
|
|
from __future__ import absolute_import
|
|
|
|
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 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, 1, 1, tzinfo=UTC),
|
|
enabled=True
|
|
).save()
|
|
AppVersionConfig(
|
|
platform="ios",
|
|
version="4.1.1",
|
|
expire_at=datetime(5000, 1, 1, tzinfo=UTC),
|
|
enabled=False
|
|
).save()
|
|
AppVersionConfig(
|
|
platform="ios",
|
|
version="4.4.4",
|
|
expire_at=datetime(9000, 1, 1, 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, 1, 1, tzinfo=UTC),
|
|
enabled=True
|
|
).save()
|
|
AppVersionConfig(
|
|
platform="android",
|
|
version="4.4.4",
|
|
expire_at=datetime(9000, 1, 1, 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, [])
|