"""Test find_products.""" from unittest.mock import patch from src.logic import find_products def build_mock_row(**kwargs): """Build a mock row.""" return { 'PRODUCT_ID': 1, 'RELEASE_ID': 1, 'RELEASES_FIVETRAN_DELETED': False, 'RELEASES_DELETIONS': 'N', 'VENDOR_ID': 1, 'VENDOR_FIVETRAN_DELETED': False, 'VENDOR_STATUS': 'signed', 'RELEASES_SUBACCOUNT_ID': 2, 'SUBACCOUNT_ID': 2, 'SUBACCOUNT_FIVETRAN_DELETED': False, 'SUBACCOUNT_DELETED_DATE': None, 'PROJECT_ID': 1, 'PROJECT_FIVETRAN_DELETED': False, 'PROJECT_DELETIONS': 'N', **kwargs } def test_get_reason(): """Test get_reason.""" mock_row = build_mock_row(RELEASE_ID=None) assert find_products.get_reason(mock_row) == 'release_hard_delete' mock_row = build_mock_row(RELEASES_FIVETRAN_DELETED=True) assert find_products.get_reason(mock_row) == 'release_hard_delete' mock_row = build_mock_row(RELEASES_DELETIONS='Y') assert find_products.get_reason(mock_row) == 'release_soft_delete' mock_row = build_mock_row(VENDOR_ID=None) assert find_products.get_reason(mock_row) == 'vendor_hard_delete' mock_row = build_mock_row(VENDOR_FIVETRAN_DELETED=True) assert find_products.get_reason(mock_row) == 'vendor_hard_delete' mock_row = build_mock_row(VENDOR_STATUS='deletion') assert find_products.get_reason(mock_row) == 'vendor_soft_delete' mock_row = build_mock_row(SUBACCOUNT_ID=None) assert find_products.get_reason(mock_row) == 'subaccount_hard_delete' mock_row = build_mock_row(SUBACCOUNT_FIVETRAN_DELETED=True) assert find_products.get_reason(mock_row) == 'subaccount_hard_delete' mock_row = build_mock_row(SUBACCOUNT_DELETED_DATE='12/12/2020') assert find_products.get_reason(mock_row) == 'subaccount_soft_delete' mock_row['RELEASES_SUBACCOUNT_ID'] = None assert find_products.get_reason(mock_row) == 'unknown_reason' mock_row = build_mock_row(PROJECT_ID=None) assert find_products.get_reason(mock_row) == 'project_hard_delete' mock_row = build_mock_row(PROJECT_FIVETRAN_DELETED=True) assert find_products.get_reason(mock_row) == 'project_hard_delete' mock_row = build_mock_row(PROJECT_DELETIONS='Y') assert find_products.get_reason(mock_row) == 'project_soft_delete' @patch('src.logic.find_products.query_snowflake') def test_find_deleted_products(mock_query): """Test find_deleted_products.""" mock_response = [ build_mock_row(VENDOR_ID=None), build_mock_row(RELEASE_ID=None) ] mock_query.return_value = mock_response actual = find_products.find_deleted_products() assert actual == [(1, 'vendor_hard_delete'), (1, 'release_hard_delete')]