"""Tests for ows_carveouts model.""" from unittest.mock import MagicMock from flexmock import flexmock from owsrequest import request import pytest from product_digital.constants import services from product_digital.models import ows_carveouts def test_get_instant_grats_stores_expected_return(): """Test expected response body returned.""" stores_data = {'1': 'ITunes'} mock_response = MagicMock(status_code=200) mock_response.json = MagicMock(return_value=stores_data) (flexmock(request) .should_receive('get') .with_args( services.OWS_CARVEOUTS, '/stores/grats') .and_return(mock_response)) result = ows_carveouts.get_instant_grats_stores() assert result.status == 200 assert result.message == stores_data @pytest.mark.parametrize('response_status', [404, 400]) def test_get_instant_grats_stores_failure(response_status): """Test that a grats stores error status is returned.""" mock_response = MagicMock(status_code=response_status) (flexmock(request) .should_receive('get') .with_args( services.OWS_CARVEOUTS, '/stores/grats') .and_return(mock_response)) result = ows_carveouts.get_instant_grats_stores() assert result.status == response_status def test_get_instant_grats_stores_no_json_failure(): """Test that a grats stores error no json data returned.""" mock_response = MagicMock(status_code=500, content=b'') mock_response.json = MagicMock() mock_response.json.side_effect = ValueError() (flexmock(request) .should_receive('get') .with_args( services.OWS_CARVEOUTS, '/stores/grats') .and_return(mock_response)) result = ows_carveouts.get_instant_grats_stores() assert result.status == 500