"""Test unsubmit.""" from unittest.mock import call from unittest.mock import Mock from unittest.mock import patch from src.logic import unsubmit @patch('src.logic.unsubmit.graphql_connector') def test_unsubmit_products(mock_gql): """Test unsubmit_products.""" mock_execute = Mock() mock_execute.side_effect = [ {'data': 'foo'}, {'errors': [{'extensions': {'response': {'status': 400}}}]}, {'errors': [{'extensions': {'response': {'status': 500}}}]} ] mock_gql.execute = mock_execute mock_products = [(1, 'foo'), (2, 'bar'), (3, 'baz')] actual = unsubmit.unsubmit_products(mock_products) assert actual == [(1, 'foo', 'success'), (2, 'bar', 'error'), (3, 'baz', 'error')] @patch('src.logic.unsubmit.unsubmit_product') def test_skipping_hard_deletes(mock_unsubmit_product): """Test skipping unsubmitting hard deletes.""" mock_products = [ (1, 'release_hard_delete'), (2, 'release_soft_delete'), (3, 'vendor_hard_delete'), (4, 'vendor_soft_delete'), (5, 'subaccount_hard_delete'), (6, 'subaccount_soft_delete'), (7, 'project_hard_delete'), (8, 'project_soft_delete') ] unsubmit.unsubmit_products(mock_products) assert mock_unsubmit_product.call_args_list == [ call(2, 'release_soft_delete'), call(4, 'vendor_soft_delete'), call(6, 'subaccount_soft_delete'), call(8, 'project_soft_delete') ]