"""Unit testcases for StatementPeriodAdjustmentBatchCriteria handlers.""" from unittest.mock import patch from owsresponse import response from royalties.schemas import StatementPeriodAdjustmentBatchCriteriaDetailSchema from royalties.tests.utils.factories import ( StatementPeriodAdjustmentBatchCriteriaFactory, ) @patch('royalties.blueprints.statement_period_adjustment_batch_criteria.logic') def test_get_statement_period_adjustment_batch_criteria(mock_logic, fixture_client): """Test to get statement_period_adjustment_batch_criteria.""" mock_adjustment_batch = StatementPeriodAdjustmentBatchCriteriaFactory.create() mock_response = StatementPeriodAdjustmentBatchCriteriaDetailSchema().dump( mock_adjustment_batch ) mock_logic.get_statement_period_adjustment_batch_criteria.return_value = ( response.Response(message=mock_response, status=200) ) statement_period_adjustment_file_id = ( mock_adjustment_batch.statement_period_adjustment_file_id ) res = fixture_client.get( f'/statement-period-adjustment-file/{statement_period_adjustment_file_id}/batch-criteria' ) assert res.status_code == 200 assert res.json == mock_response @patch('royalties.blueprints.statement_period_adjustment_batch_criteria.logic') def test_create_statement_period_adjustment_batch_criteria(mock_logic, fixture_client): """Test to create statement_period_adjustment_batch_criteria.""" mock_adjustment_batch = StatementPeriodAdjustmentBatchCriteriaFactory.create() mock_response = StatementPeriodAdjustmentBatchCriteriaDetailSchema().dump( mock_adjustment_batch ) mock_logic.create_statement_period_adjustment_batch_criteria.return_value = ( response.Response(message=mock_response, status=201) ) mock_post_request = { 'statement_period_adjustment_file_id': mock_adjustment_batch.statement_period_adjustment_file_id, 'batch_criteria': { 'payment_schedules': ['30_days_after_quarter_end'], 'reference_payment_entities': [1, 2, 3], }, } res = fixture_client.post( '/statement-period-adjustment-batch-criteria', json=mock_post_request ) assert res.status_code == 201 assert res.json == mock_response @patch('royalties.blueprints.statement_period_adjustment_batch_criteria.logic') def test_create_adjustment_file_and_batch_criteria(mock_logic, fixture_client): """Test to create statement period adjustment file and batch_criteria.""" mock_adjustment_batch = StatementPeriodAdjustmentBatchCriteriaFactory.create() mock_response = StatementPeriodAdjustmentBatchCriteriaDetailSchema().dump( mock_adjustment_batch ) mock_logic.create_adjustment_file_and_batch_criteria.return_value = ( response.Response(message=mock_response, status=201) ) statement_period_id = 1 batch_criteria = { 'payment_schedules': ['30_days_after_quarter_end'], 'reference_payment_entities': [1, 2, 3], } file_name = 'Test flowthrough adjustment' mock_request_post_body = {'batch_criteria': batch_criteria, 'file_name': file_name} res = fixture_client.post( f'/statement-period/{statement_period_id}/adjustment-file/batch-criteria', json=mock_request_post_body, ) assert res.status_code == 201 assert res.json == mock_response