"""Unit tests for WorksheetAdjustmentDetail model.""" from decimal import Decimal from abacus_worksheet.models.worksheet_adjustment_detail import ( WorksheetAdjustmentDetail, ) from tests.utils.factories import ( WorksheetAdjustmentDetailFactory, WorksheetAdjustmentFactory, ) def test_worksheet_adjustment_detail_create(mock_worksheet_adjustment_detail_data): """Test worksheet_adjustment_detail model.""" mock_data = mock_worksheet_adjustment_detail_data response = WorksheetAdjustmentDetail.build(**mock_data) assert ( response.statement_period_adjustment_file_id == mock_data['statement_period_adjustment_file_id'] ) assert response.worksheet_adjustment_id == mock_data['worksheet_adjustment_id'] assert response.account_id == mock_data['account_id'] assert response.contract_id == mock_data['contract_id'] assert ( response.activity_statement_period_id == mock_data['activity_statement_period_id'] ) assert ( response.apply_to_statement_period_id == mock_data['apply_to_statement_period_id'] ) assert ( response.reference_adjustment_type_id == mock_data['reference_adjustment_type_id'] ) assert response.currency_code == mock_data['currency_code'] assert response.amount == mock_data['amount'] assert response.upc == mock_data['upc'] assert response.note == mock_data['note'] assert response.internal_note == mock_data['internal_note'] def test_get_by_worksheet_adjustment_id(): """Test to get worksheet adjustment detail by statement_period_adjustment_file_id.""" worksheet_adjustment = WorksheetAdjustmentFactory.create() worksheet_adjustment2 = WorksheetAdjustmentFactory.create() limit = 2 offset = 0 WorksheetAdjustmentDetailFactory.create_batch( 5, worksheet_adjustment=worksheet_adjustment, ) WorksheetAdjustmentDetailFactory.create( worksheet_adjustment=worksheet_adjustment, deleted_by='Test User', deleted_at='2023-10-06', ) WorksheetAdjustmentDetailFactory.create( worksheet_adjustment=worksheet_adjustment2, ) items, total_count = WorksheetAdjustmentDetail.get_by_worksheet_adjustment_id( worksheet_adjustment.worksheet_adjustment_id, limit, offset ) assert total_count == 5 assert len(items) == 2 assert ( items[0].worksheet_adjustment_id == worksheet_adjustment.worksheet_adjustment_id ) def test_soft_delete_worksheet_adjustment_details(): """Test to soft delete workshet adjustment details.""" worksheet_adjustment = WorksheetAdjustmentFactory.create() WorksheetAdjustmentDetailFactory.create_batch( 5, worksheet_adjustment=worksheet_adjustment, ) adjustments_details = WorksheetAdjustmentDetail.query.all() assert ( all( [ adjustment.deleted_by is None and adjustment.deleted_at is None for adjustment in adjustments_details ] ) is True ) statement_period_adjustment_file_id = 1 WorksheetAdjustmentDetail.soft_delete_worksheet_adjustment_details( statement_period_adjustment_file_id ) assert ( all( [ adjustment.deleted_by is not None and adjustment.deleted_at is not None for adjustment in adjustments_details ] ) is True ) def test__query_to_get_worksheet_adjustment_detail(): """Test _query_to_get_worksheet_adjustment_detail method.""" WorksheetAdjustmentFactory.create() worksheet_adjustment_2 = WorksheetAdjustmentFactory.create( adjustment_amount=Decimal('100.00'), adjustment_currency_code='EUR' ) WorksheetAdjustmentDetailFactory.create( amount=Decimal('50.00'), currency_code='EUR', worksheet_adjustment=worksheet_adjustment_2, ) WorksheetAdjustmentDetailFactory.create( amount=Decimal('50.00'), currency_code='EUR', upc='1234567891', worksheet_adjustment=worksheet_adjustment_2, ) result = WorksheetAdjustmentDetail._query_to_get_worksheet_adjustment_detail().all() assert len(result) == 2 assert all([res.currency_code == 'EUR' for res in result]) assert all([res.amount == Decimal('50.00') for res in result])