|
5 | 5 | import numpy as np |
6 | 6 | import pandas as pd |
7 | 7 | import pytest |
| 8 | +from pandas.testing import assert_frame_equal |
8 | 9 |
|
9 | 10 | from nhp.model.inpatients import InpatientsModel |
10 | 11 |
|
@@ -239,6 +240,7 @@ def test_process_results(mock_model): |
239 | 240 | "rn": [1] * 12, |
240 | 241 | "has_procedure": [0, 1] * 6, |
241 | 242 | "speldur": list(range(12)), |
| 243 | + "maternity_delivery_in_spell": [True, False] * 6, |
242 | 244 | } |
243 | 245 | ) |
244 | 246 | df["pod"] = "ip_" + df["group"] + "_admission" |
@@ -431,6 +433,21 @@ def test_process_results(mock_model): |
431 | 433 | "8-14 days", |
432 | 434 | np.nan, |
433 | 435 | ], |
| 436 | + "maternity_delivery_in_spell": [ |
| 437 | + True, |
| 438 | + True, |
| 439 | + False, |
| 440 | + False, |
| 441 | + False, |
| 442 | + True, |
| 443 | + False, |
| 444 | + False, |
| 445 | + False, |
| 446 | + True, |
| 447 | + True, |
| 448 | + False, |
| 449 | + ] |
| 450 | + * 2, |
434 | 451 | "measure": [ |
435 | 452 | "admissions", |
436 | 453 | "beddays", |
@@ -491,32 +508,31 @@ def test_process_results(mock_model): |
491 | 508 | pd.testing.assert_frame_equal(actual, expected) |
492 | 509 |
|
493 | 510 |
|
494 | | -def test_aggregate(mock_model): |
| 511 | +def test_specific_aggregations(mocker, mock_model): |
495 | 512 | """Test that it aggregates the results correctly.""" |
496 | | - |
497 | 513 | # arrange |
498 | | - def create_agg_stub(model_results, cols=None): |
499 | | - name = "+".join(cols) if cols else "default" |
500 | | - return {name: model_results.to_dict(orient="list")} |
| 514 | + m = mocker.patch("nhp.model.InpatientsModel.get_agg", return_value="agg_data") |
501 | 515 |
|
502 | 516 | mdl = mock_model |
503 | | - mdl._create_agg = Mock(wraps=create_agg_stub) |
504 | | - mdl.process_results = Mock(return_value="processed_data") |
505 | 517 |
|
506 | | - mr_mock = Mock() |
507 | | - mr_mock.get_model_results.return_value = "nhp.model_data" |
| 518 | + mock_data = pd.DataFrame({"maternity_delivery_in_spell": [True, False], "value": [1, 2]}) |
508 | 519 |
|
509 | 520 | # act |
510 | | - actual_mr, actual_aggs = mdl.aggregate(mr_mock) |
| 521 | + actual = mdl.specific_aggregations(mock_data) |
511 | 522 |
|
512 | 523 | # assert |
| 524 | + assert actual == { |
| 525 | + "sex+tretspef_grouped": "agg_data", |
| 526 | + "tretspef": "agg_data", |
| 527 | + "tretspef+los_group": "agg_data", |
| 528 | + "delivery_episode_in_spell": "agg_data", |
| 529 | + } |
513 | 530 |
|
514 | | - mdl.process_results.assert_called_once_with("nhp.model_data") |
515 | | - assert actual_mr == "processed_data" |
516 | | - assert actual_aggs == [ |
517 | | - ["sex", "tretspef_grouped"], |
518 | | - ["tretspef"], |
519 | | - ["tretspef", "los_group"], |
| 531 | + assert [(len(i[0][0]), *i[0][1:]) for i in m.call_args_list] == [ |
| 532 | + (2, "sex", "tretspef_grouped"), |
| 533 | + (2, "tretspef"), |
| 534 | + (2, "tretspef", "los_group"), |
| 535 | + (1,), |
520 | 536 | ] |
521 | 537 |
|
522 | 538 |
|
|
0 commit comments