"""Test application.""" from unittest.mock import patch import app @patch('app.file_parsing') def test_main(mock_fp, request_engine): """Test main.""" mock_fp.get_product_ids_from_csv.return_value = {1, 2, 3} request_engine['ows-product-digital'].add_spec( 'GET', '/product/audio/1/validate', response={'validations': {'is_valid': True}}) request_engine['ows-product-digital'].add_spec( 'GET', '/product/audio/2/validate', response={'validations': {'is_valid': True}}) request_engine['ows-product-digital'].add_spec( 'GET', '/product/audio/3/validate', response={'validations': {'is_valid': True}}) request_engine['ows-product-digital'].add_spec('POST', '/product/audio/1/submit') request_engine['ows-product-digital'].add_spec('POST', '/product/audio/2/submit') request_engine['ows-product-digital'].add_spec('POST', '/product/audio/3/submit') request_engine['ows-product-review'].add_spec('POST', '/review-queue/product/1', status=201) request_engine['ows-product-review'].add_spec('POST', '/review-queue/product/2', status=201) request_engine['ows-product-review'].add_spec('POST', '/review-queue/product/3', status=201) actual = app.main() assert actual == {'errors': [], 'submitted_ids': [1, 2, 3], 'validations': []} @patch('app.file_parsing') def test_main_error_handling(mock_fp, request_engine): """Test main error handling.""" mock_fp.get_product_ids_from_csv.return_value = {4, 5, 6} request_engine['ows-product-digital'].add_spec( 'GET', '/product/audio/4/validate', response={'validations': {'is_valid': True}}) request_engine['ows-product-digital'].add_spec( 'GET', '/product/audio/5/validate', response={'validations': {'is_valid': True}}) request_engine['ows-product-digital'].add_spec( 'GET', '/product/audio/6/validate', response={'validations': {'is_valid': True}}) request_engine['ows-product-digital'].add_spec('POST', '/product/audio/4/submit') request_engine['ows-product-digital'].add_spec('POST', '/product/audio/5/submit') request_engine['ows-product-digital'].add_spec('POST', '/product/audio/6/submit') request_engine['ows-product-review'].add_spec( 'POST', '/review-queue/product/4', status=409, response={}) request_engine['ows-product-review'].add_spec( 'POST', '/review-queue/product/5', status=500, response='baz') request_engine['ows-product-review'].add_spec('POST', '/review-queue/product/6', status=201) actual = app.main() assert actual == { 'errors': [ (4, 'Product is already submitted.'), (5, 'Failed to call submit endpoint with error: "baz"'), ], 'submitted_ids': [6], 'validations': [], }