"""Unit tests for WorksheetAdjustmentDetail logic.""" from unittest.mock import call, patch from abacus_worksheet.logic import worksheet_adjustment_detail from abacus_worksheet.schemas.worksheet_adjustment_detail import ( WorksheetAdjustmentDetailSchema, ) from tests.utils.factories import ( WorksheetAdjustmentDetailFactory, WorksheetAdjustmentFactory, ) @patch( 'abacus_worksheet.logic.worksheet_adjustment_detail.WorksheetAdjustmentDetailSchema' ) @patch('abacus_worksheet.logic.worksheet_adjustment_detail.WorksheetAdjustmentDetail') def test_get_by_statement_period_adjustment_file_id(mock_model, mock_schema): """Test get_by_worksheet_adjustment_id function.""" worksheet_adjustment = WorksheetAdjustmentFactory.create() worksheet_adjustment_id = worksheet_adjustment.worksheet_adjustment_id mock_worksheet_adjustment_details = WorksheetAdjustmentDetailFactory.create_batch( 5, worksheet_adjustment=worksheet_adjustment ) request_params = {'limit': 25, 'offset': 0} mock_dump_data = WorksheetAdjustmentDetailSchema(many=True).dump( mock_worksheet_adjustment_details ) mock_model.get_by_worksheet_adjustment_id.return_value = ( mock_worksheet_adjustment_details, len(mock_worksheet_adjustment_details), ) mock_schema.return_value.dump.return_value = mock_dump_data res = worksheet_adjustment_detail.get_by_worksheet_adjustment_id( worksheet_adjustment_id, request_params ) assert res.status == 200 assert res.message.get('items') == mock_dump_data assert res.message.get('total_count') == 5 assert mock_model.get_by_worksheet_adjustment_id.call_args_list == [ call(worksheet_adjustment_id, **request_params) ] assert mock_schema.return_value.dump.call_args_list == [ call(mock_worksheet_adjustment_details) ] @patch('abacus_worksheet.logic.worksheet_adjustment_detail.WorksheetAdjustmentDetail') def test_create_worksheet_adjustment_details(mock_model): """Test create_worksheet_adjustment_details function.""" mock_worksheet_adjustment = WorksheetAdjustmentFactory.create() worksheet_adjustment_id = mock_worksheet_adjustment.worksheet_adjustment_id mock_worksheet_adjustment_detail = WorksheetAdjustmentDetailFactory.create( worksheet_adjustment=mock_worksheet_adjustment ) mock_model.build.return_value = mock_worksheet_adjustment_detail mock_model.commit_changes.return_value = True params = { 'adjustment_details': [ { 'statement_period_adjustment_file_id': 1, 'account_id': '12345', 'contract_id': '12345', 'activity_statement_period_id': 1, 'apply_to_statement_period_id': 2, 'reference_adjustment_type_id': 65, 'amount': '890.12', 'currency_code': 'USD', 'upc': '12345678901', 'distribution_type': 'digital', } ], 'worksheet_adjustment_id': worksheet_adjustment_id, } result = worksheet_adjustment_detail.create_worksheet_adjustment_details(**params) assert result == [mock_worksheet_adjustment_detail] assert mock_model.build.call_count == 1 mock_model.build.assert_called_once() mock_model.commit_changes.assert_called_once()