"""Integration tests for lambda function.""" from datetime import datetime from datetime import timedelta from conftest import create_acccount_contract_fixture from conftest import create_account_fixture from conftest import create_contract_fixture from conftest import create_contract_lifecycle_fixture from conftest import create_contract_lifecycle_schedule_detail_fixture from conftest import create_contract_lifecycle_schedule_fixture from conftest import dockerized_lambda_api_client from conftest import get_db_field_value import pytest @pytest.mark.jira('ACC-7429') def test_auto_terminate_contract(basic_headers, clean_db): """Assert lambda action.""" account_id = 1 contract_id = 1 contract_lifecycle_schedule_id = 1 renewal_type = 'continuously_active' lifecycle_status = 'to_be_terminated' create_account_fixture(account_id) create_contract_fixture(contract_id) create_acccount_contract_fixture(account_id, contract_id) create_contract_lifecycle_schedule_fixture(contract_id, renewal_type) contract_lifecycle_id = create_contract_lifecycle_fixture( contract_id=contract_id, contract_lifecycle_schedule_id=contract_lifecycle_schedule_id, lifecycle_status=lifecycle_status, termination_effective='2023-11-18' ) create_contract_lifecycle_schedule_detail_fixture() dockerized_lambda = dockerized_lambda_api_client(basic_headers) res = dockerized_lambda.post_lambda('2015-03-31', {}) assert res.status_code == 200 assert res.json() == {'status': 'OK'} value = get_db_field_value( 'contract_lifecycle', 'lifecycle_status', 'contract_lifecycle_id = {}'.format(contract_lifecycle_id) ) assert value == 'terminated' @pytest.mark.jira('ACC-7424') def test_auto_renew_contract(basic_headers, clean_db): """Assert lambda action.""" account_id = 1 contract_id = 1 renewal_type = 'renew_periodically' lifecycle_status = 'active' renewal_effective = '2023-11-01' create_account_fixture(account_id) create_contract_fixture(contract_id) create_acccount_contract_fixture(account_id, contract_id) contract_lifecycle_schedule_detail_id = \ create_contract_lifecycle_schedule_detail_fixture() contract_lifecycle_schedule_id_1 = create_contract_lifecycle_schedule_fixture( contract_id=contract_id, renewal_type=renewal_type, renewal_offset_detail_id=contract_lifecycle_schedule_detail_id, termination_notice_detail_id=contract_lifecycle_schedule_detail_id ) create_contract_lifecycle_schedule_fixture( contract_id=contract_id, renewal_type=renewal_type, renewal_offset_detail_id=contract_lifecycle_schedule_detail_id, termination_notice_detail_id=contract_lifecycle_schedule_detail_id ) contract_lifecycle_id_1 = create_contract_lifecycle_fixture( contract_id=contract_id, contract_lifecycle_schedule_id=contract_lifecycle_schedule_id_1, lifecycle_status=lifecycle_status, renewal_effective=renewal_effective ) dockerized_lambda = dockerized_lambda_api_client(basic_headers) res = dockerized_lambda.post_lambda('2015-03-31', {}) assert res.status_code == 200 assert res.json() == {'status': 'OK'} status = get_db_field_value( 'contract_lifecycle', 'lifecycle_status', 'contract_lifecycle_id = {}'.format(contract_lifecycle_id_1) ) assert status == 'inactive' status = get_db_field_value( 'contract_lifecycle', 'lifecycle_status', 'contract_lifecycle_id = 2' ) assert status == 'active' # check the new lifecycle renewal_effective_date calculated correctly new_renewal_effective = get_db_field_value( 'contract_lifecycle', 'renewal_effective', 'contract_lifecycle_id = 2' ) renewal_effective_date = datetime.strptime(renewal_effective, '%Y-%m-%d') # as per contract_lifecycle_schedule_detail entry + 1 day # since lifecycle_term_start date is next day expected_date = renewal_effective_date + timedelta(days=21) assert new_renewal_effective == expected_date.date() deleted_by = get_db_field_value( 'contract_lifecycle', 'deleted_by', 'contract_lifecycle_id = {}'.format(contract_lifecycle_id_1) ) assert deleted_by == 'default_user_id' deleted_by = get_db_field_value( 'contract_lifecycle_schedule', 'deleted_by', 'contract_lifecycle_schedule_id = {}'.format(contract_lifecycle_schedule_id_1) ) assert deleted_by == 'default_user_id' @pytest.mark.jira('ACC-7430') def test_auto_activate_contract(basic_headers, clean_db): """Assert lambda action.""" account_id = 1 contract_id = 1 renewal_type = 'continuously_active' lifecycle_status = 'init' create_account_fixture(account_id) create_contract_fixture(contract_id) create_acccount_contract_fixture(account_id, contract_id) contract_lifecycle_schedule_id_1 = create_contract_lifecycle_schedule_fixture( contract_id, renewal_type ) create_contract_lifecycle_schedule_fixture(contract_id, renewal_type) today_date = datetime.today().strftime('%Y-%m-%d') contract_lifecycle_id_1 = create_contract_lifecycle_fixture( contract_id=contract_id, contract_lifecycle_schedule_id=contract_lifecycle_schedule_id_1, lifecycle_status=lifecycle_status, lifecycle_term_start=today_date, renewal_effective=None ) create_contract_lifecycle_schedule_detail_fixture() dockerized_lambda = dockerized_lambda_api_client(basic_headers) res = dockerized_lambda.post_lambda('2015-03-31', {}) assert res.status_code == 200 assert res.json() == {'status': 'OK'} status = get_db_field_value( 'contract_lifecycle', 'lifecycle_status', 'contract_lifecycle_id = {}'.format(contract_lifecycle_id_1) ) assert status == 'active'