"""Tests for ows-territories model.""" from oto import response import pytest from conflict_manager.constants import ows_territories as territories_const from conflict_manager.constants import services from conflict_manager.models import ows_territories from tests import testutils STANDARD = territories_const.ISO_3166_1_2016 ERROR_RESPONSE = response.create_error_response( code=services.SERVICE_ERROR_CODES[services.OWS_TERRITORIES], message='Server error.' ) @pytest.fixture def outputted_territories_map(): """Fixture of mapped territories.""" return { 'FR': { 'territory_name': 'France', 'orch_id': 6, 'territory_code_a2': 'FR', 'standard': 'ISO_3166_1_2016', 'territory_code_numeric': 250, 'territory_code_a3': 'FRA', 'continent': 'Europe' }, 'US': { 'territory_name': 'United States of America', 'orch_id': 1, 'territory_code_a2': 'US', 'standard': 'ISO_3166_1_2016', 'territory_code_numeric': 840, 'territory_code_a3': 'USA', 'continent': 'North America' } } def test_ows_responses(mocker, territories_data, outputted_territories_map): """Test success response and verify results are cached.""" ows_territories._response_cache = {} mock_ows = testutils.patch_get_from_ows_service( mocker, territories_data) territories_response = ows_territories.get_territories_map(STANDARD) endpoint = '/territory/{}'.format(STANDARD) service = services.OWS_TERRITORIES mock_ows.assert_called_with(service, endpoint) assert territories_response.message == outputted_territories_map assert ows_territories._response_cache # Verify caching works mock_ows.reset_mock() territories_response = ows_territories.get_territories_map(STANDARD) mock_ows.assert_not_called() assert territories_response.message == outputted_territories_map def test_ows_responses_errors(mocker, ows_not_found_response): """Test not_found and error responses from ows-territories.""" test_cases = [ ows_not_found_response, ERROR_RESPONSE ] for expected_response in test_cases: # Reset response cache ows_territories._response_cache = {} mock_ows = testutils.patch_get_from_ows_service( mocker, expected_response) territories_response = ows_territories.get_territories_map(STANDARD) endpoint = '/territory/{}'.format(STANDARD) service = services.OWS_TERRITORIES mock_ows.assert_called_with(service, endpoint) assert territories_response == expected_response def test_make_territory_map(territories_data, outputted_territories_map): """Test territory map.""" territories_map = ows_territories._make_territory_map(territories_data) assert territories_map == outputted_territories_map