"""Functional tests for retrieving a territories. Test endpoint: GET /marketing/territories """ import json from product_digital_marketing.constants import header from tests.unit.factories import territory_factory from tests.unit.test_utils import db @db.test_schema def test_get_territories_success(client, request_engine, grass_headers): """Check that get territories works.""" territory_1 = territory_factory.TerritoryFactory( name='Lego Island', category='continent' ) territory_2 = territory_factory.TerritoryFactory( name='D\'ni', category='region' ) territory_3 = territory_factory.TerritoryFactory( name='Lumpy Space', category='region' ) db.seed_models([territory_1, territory_2, territory_3]) response = client.get( '/marketing/territories', headers=grass_headers) assert response.status_code == 200 data = json.loads(response.data.decode()) assert data == { 'items': [ { 'name': 'Lego Island', 'id': territory_1.pk, 'category': 'continent' }, { 'name': 'D\'ni', 'id': territory_2.pk, 'category': 'region' }, { 'name': 'Lumpy Space', 'id': territory_3.pk, 'category': 'region' } ] } @db.test_schema def test_get_territories_failure(client): """Check that get territories fails when data is missing.""" response = client.get('/marketing/territories') assert response.status_code == 404 def test_get_territories_invalid_headers(client, grass_headers): """Check that endpoint returns 400 with wrong GRASS headers.""" del grass_headers[header.GRASS_ACCOUNT_ID] response = client.get( '/marketing/territories', headers=grass_headers) assert response.status_code == 400 data = json.loads(response.data.decode()) assert data['message'] == 'Incomplete Grass Headers'