"""conftest. This file gets picked up when running py.test tests: http://pytest.org/latest/writing_plugins.html#conftest """ import datetime from oto import response import pytest from promo_player import api @pytest.fixture def fixture_client(): """Fixture for an API client.""" return api.app.test_client() @pytest.fixture def fixture_success(): """Fixture for a success response.""" return response.Response(status=200) @pytest.fixture def fixture_fatal(): """Fixture for a fatal response.""" return response.create_fatal_response() @pytest.fixture def fixture_not_found(): """Fixture for a not found response.""" return response.create_not_found_response() @pytest.fixture def fixture_promo_player_response(): """Fixture for a response containing a promo player.""" return response.Response({ 'promo_player_id': 1, 'product_id': 2, 'vendor_id': 3, 'code': '0123456789abcdefghij', 'active': True, 'expiration_mode': 'none', 'skin': 'light', 'expiry_time': None }) @pytest.fixture def fixture_promo_player_without_product_response(): """Fixture for a response containing a promo player without a product.""" return response.Response({ 'promo_player_id': 1, 'vendor_id': 3, 'code': '0123456789abcdefghij', 'active': True, 'expiration_mode': 'none', 'skin': 'light', 'expiry_time': None }) @pytest.fixture def fixture_validated_promo_player_response(): """Fixture for a response containing a validated promo player.""" return response.Response({ 'promo_player': { 'promo_player_id': 1, 'product_id': 2, 'vendor_id': 3, 'code': '0123456789abcdefghij', 'active': True, 'expiration_mode': 'none', 'skin': 'light' }, 'product_details': { 'product_id': 2, 'product_name': 'Two', 'delivered_version': 'Test', 'subaccount_id': None, } }) @pytest.fixture def fixture_inactive_promo_player_response(): """Fixture for a response containing an inactive promo player.""" return response.Response({ 'promo_player_id': 1, 'product_id': 2, 'vendor_id': 3, 'code': '0123456789abcdefghij', 'active': False, 'expiration_mode': 'none', 'skin': 'light' }) @pytest.fixture def fixture_product_response(): """Fixture for a response containing a product.""" return response.Response({ 'product_id': 2, 'product_name': 'Two', 'release_date': '1991-12-04' }) @pytest.fixture def fixture_tracks_response(): """Fixture for a response containing a list of tracks for a product.""" return response.Response({ 'items': [ {'tuid': 1}, {'tuid': 2}, {'tuid': 3} ] }) @pytest.fixture def fixture_assets_response(): """Fixture for a response containing a list of assets for a product.""" return response.Response({ 'assets': [] }) @pytest.fixture def fixture_cover_response(): """Fixture for a response containing a cover URL for a product.""" return response.Response('https://images.theorchard.io/blabla') @pytest.fixture def fixture_version_response(): """Fixture for a response containing a static asset version.""" return response.Response('666666666') @pytest.fixture def fixture_track_bad_product_response(): """Fixture for a response containing a track with a different product.""" return response.Response({ 'tuid': 1, 'product_id': 666 }) @pytest.fixture def fixture_track_response(): """Fixture for a response containing a track.""" return response.Response({ 'tuid': 1, 'product_id': 2 }) @pytest.fixture def fixture_manifest_url_response(): """Fixture for a response containing a manifest URL.""" return response.Response({ 'url': 'https://manifest.test' }) @pytest.fixture def fixture_now(monkeypatch): """Fixture for datetime.now() set on the 4th of December 1991.""" class fixed_datetime(datetime.datetime): @classmethod def now(cls): return datetime.datetime(1991, 12, 4) monkeypatch.setattr(datetime, 'datetime', fixed_datetime) @pytest.fixture def fixture_requests_result(): """Fixture for a requests result object.""" class requests_result(): def __init__(self, status_code, text): self.status_code = status_code self.text = text def init_requests_result(status_code, text): return requests_result(status_code, text) return init_requests_result