"""Test Class for distribution_format_mapping.py.""" from unittest.mock import MagicMock from unittest.mock import patch import pytest from feed_sender.flows.proper_new_releases_tracks.util import ( distribution_format_mapping) @patch('feed_sender.flows.proper_new_releases_tracks.util.' 'distribution_format_mapping.request.process') def test_call_product_configuration_microservice_good_response( mock_request_process): """Test output is correct if response is good.""" mock_response = MagicMock() mock_response.status_code = 200 mock_response.content = ( b'[{"proper_formid": "VNL7", "proper_format": "7", ' b'"distribution_format_id": "67"}, ' b'{"proper_formid": null, "proper_format": "PCP", ' b'"distribution_format_id": "104"}, ' b'{"proper_formid": "SACD", "proper_format": "DD", ' b'"distribution_format_id": "125"}]' ) mock_request_process.return_value = mock_response expected_result = [ {'proper_format': '7', 'proper_formid': 'VNL7', 'distribution_format_id': '67'}, {'proper_format': 'PCP', 'proper_formid': None, 'distribution_format_id': '104'}, {'proper_format': 'DD', 'proper_formid': 'SACD', 'distribution_format_id': '125'} ] result = distribution_format_mapping.\ call_product_configuration_microservice() assert result == expected_result @patch('feed_sender.flows.proper_new_releases_tracks.util.' 'distribution_format_mapping.request.process') def test_call_product_configuration_microservice_404(mock_request_process): """Test exception is thrown if microservice returns 404 error.""" mock_response = MagicMock() mock_response.status_code = 404 mock_response.content = ( b'{"code": "not_found_error", ' b'"message": "No supply chain exists for provided ID."}' ) mock_request_process.return_value = mock_response expected_error_msg = 'Request to ows-product-configuration ' \ 'microservice failed: No supply chain exists ' \ 'for provided ID.' with pytest.raises(Exception) as err: distribution_format_mapping.call_product_configuration_microservice() assert str(err.value) == expected_error_msg @patch('feed_sender.flows.proper_new_releases_tracks.util.' 'distribution_format_mapping.call_product_configuration_microservice') def test_distribution_format_mapping(mock_microservice): """Test response from microservice is parsed correctly.""" response_content = [ {'proper_format': '7', 'proper_formid': 'VNL7', 'distribution_format_id': '67'}, {'proper_format': 'PCP', 'proper_formid': None, 'distribution_format_id': '104'}, {'proper_format': 'DD', 'proper_formid': 'SACD', 'distribution_format_id': '125'} ] mock_microservice.return_value = response_content expected_result = { 67: {'format': '7', 'formid': 'VNL7'}, 125: {'format': 'DD', 'formid': 'SACD'} } result = distribution_format_mapping.get_distribution_format_mapping() assert result == expected_result