From 6d74bf66a7204eb520a39004810ba8e49ca5e2a2 Mon Sep 17 00:00:00 2001 From: fderuiter <127706008+fderuiter@users.noreply.github.com> Date: Sat, 28 Feb 2026 18:12:38 +0000 Subject: [PATCH] test(json): expand roundtrip parameterized test to include all models Expanded the `tests/unit/test_json_roundtrip.py` parameterization to include 10 missing data models (`Coding`, `Interval`, `Query`, `Record`, `RecordRevision`, `Site`, `Study`, `User`, `Variable`, and `Visit`) using their respective `fake_data` generators. Added dedicated test scenarios for `fake_forms_for_cache` and `fake_variables_for_cache`. This effectively raises the coverage of `src/imednet/testing/fake_data.py` from 40% to 81%, ensuring data models and mock generation remain synced. Co-authored-by: google-labs-jules[bot] <161369871+google-labs-jules[bot]@users.noreply.github.com> --- tests/unit/test_json_roundtrip.py | 48 +++++++++++++++++++++++++++++-- 1 file changed, 46 insertions(+), 2 deletions(-) diff --git a/tests/unit/test_json_roundtrip.py b/tests/unit/test_json_roundtrip.py index 0307be87..ae43ce6e 100644 --- a/tests/unit/test_json_roundtrip.py +++ b/tests/unit/test_json_roundtrip.py @@ -1,15 +1,39 @@ import pytest -from imednet.models import Form, Job, Subject +from imednet.models import ( + Coding, + Form, + Interval, + Job, + Query, + Record, + RecordRevision, + Site, + Study, + Subject, + User, + Variable, + Visit, +) from imednet.testing import fake_data @pytest.mark.parametrize( "cls,payload_func", [ - (Subject, fake_data.fake_subject), + (Coding, fake_data.fake_coding), (Form, fake_data.fake_form), + (Interval, fake_data.fake_interval), (Job, fake_data.fake_job), + (Query, fake_data.fake_query), + (Record, fake_data.fake_record), + (RecordRevision, fake_data.fake_record_revision), + (Site, fake_data.fake_site), + (Study, fake_data.fake_study), + (Subject, fake_data.fake_subject), + (User, fake_data.fake_user), + (Variable, fake_data.fake_variable), + (Visit, fake_data.fake_visit), ], ) def test_json_roundtrip(cls, payload_func): @@ -17,3 +41,23 @@ def test_json_roundtrip(cls, payload_func): model = cls.from_json(payload) dumped = model.model_dump(by_alias=True) assert cls.from_json(dumped) == model + + +def test_fake_forms_for_cache(): + forms = fake_data.fake_forms_for_cache(num_forms=2, study_key="TEST-1") + assert len(forms) == 2 + for form in forms: + assert isinstance(form, Form) + assert form.study_key == "TEST-1" + + +def test_fake_variables_for_cache(): + forms = fake_data.fake_forms_for_cache(num_forms=1) + variables = fake_data.fake_variables_for_cache(forms, vars_per_form=2, study_key="TEST-1") + assert len(variables) == 2 + for variable in variables: + assert isinstance(variable, Variable) + assert variable.study_key == "TEST-1" + assert variable.form_id == forms[0].form_id + assert variable.form_key == forms[0].form_key + assert variable.form_name == forms[0].form_name