"""Tests for POST /reports/contract-subtotals-dataloader endpoint.""" import json from oto import status from tests.testutils import db, mock_auth @db.test_schema_default_seed def test_post_report_contract_subtotals_dataloader(auth_client, mocker): """Expect to bulk fetch report contract subtotals.""" mock_auth(mocker, [24601, 120594]) request_data = { "report_ids": [1, 2, 3], } result = auth_client.post( "/reports/contract-subtotals-dataloader", data=json.dumps(request_data), content_type="application/json", ) result_data = json.loads(result.data.decode()) assert result.status_code == status.OK assert result_data == [ { "data": [ { "contract_id": 1001, "subtotal": { "currency": "USD", "amount": 500.0, }, }, { "contract_id": 1002, "subtotal": { "currency": "USD", "amount": 300.0, }, }, ] }, { "data": [ { "contract_id": 1003, "subtotal": { "currency": "EUR", "amount": 800.0, }, } ] }, {"data": []}, ] @db.test_schema_default_seed def test_post_report_contract_subtotals_dataloader_empty_list(auth_client, mocker): """Expect empty response for empty request.""" mock_auth(mocker, [24601]) request_data = { "report_ids": [], } result = auth_client.post( "/reports/contract-subtotals-dataloader", data=json.dumps(request_data), content_type="application/json", ) result_data = json.loads(result.data.decode()) assert result.status_code == status.OK assert result_data == [] @db.test_schema_default_seed def test_post_report_contract_subtotals_dataloader_nonexistent_reports( auth_client, mocker ): """Expect empty data for non-existent reports.""" mock_auth(mocker, [24601]) request_data = { "report_ids": [999, 1000], } result = auth_client.post( "/reports/contract-subtotals-dataloader", data=json.dumps(request_data), content_type="application/json", ) result_data = json.loads(result.data.decode()) assert result.status_code == status.OK assert result_data == [{"data": []}, {"data": []}]