"""Integration tests for ows-accounting: transaction_types""" import pytest from tests.integration import conftest from tests.integration.conftest import \ d3_user_transaction_types_expectations, label_18805, label_7482, \ quarterly_user_transaction_types_expectations, subaccount_13823, \ subaccount_transaction_types_expectations, user_headers from tests.testutils.snowflake.snowflake_query_helper import \ SnowflakeQueryHelper @pytest.mark.parametrize('user, period, expectations', [(label_18805, '230', d3_user_transaction_types_expectations), (subaccount_13823, '230', subaccount_transaction_types_expectations), (label_7482, '226', quarterly_user_transaction_types_expectations)]) def test_transaction_types(user, period, expectations): """/transaction_types gives transaction types for D3 user, subaccount and a quarterly user""" params = {'periods': period} test_user = user() headers = user_headers( test_user['user_type'], test_user['id'], test_user['vend_contact_id']) ows_accounting_client = conftest.ows_accounting_api_client(headers) results = ows_accounting_client.get_transaction_types(params) assert results.status_code == 200, \ 'Result of call was {}, expected 200.'.format(results.status_code) json_results = results.json() expected = expectations() transaction_types_from_response = list( map(lambda i: i['long_name'], json_results['items'])) assert set(expected) == set(transaction_types_from_response) @pytest.mark.parametrize('user, user_type, current_accounting_period', [(label_18805, 'labelid', 230), (subaccount_13823, 'subaccountid', 230)]) def test_transaction_types_current_period(user, user_type, current_accounting_period): """/transaction_types gives transaction types for current accounting_period - label/subaccount.""" params = {'periods': current_accounting_period} test_user = user() headers = user_headers( test_user['user_type'], test_user['id'], test_user['vend_contact_id']) ows_accounting_client = conftest.ows_accounting_api_client(headers) results = ows_accounting_client.get_transaction_types(params) assert results.status_code == 200, \ 'Result of call was {}, expected 200.'.format(results.status_code) json_results = results.json() response_transaction_types = list( map(lambda i: i['long_name'], json_results['items'])) snowflake_transaction_types = SnowflakeQueryHelper.transaction_types( test_user['id'], user_type, current_accounting_period) assert set(response_transaction_types) == set(snowflake_transaction_types)