1- from mavedb .view_models .variant import VariantEffectMeasurementCreate , VariantEffectMeasurement
2-
1+ from mavedb .view_models .variant import (
2+ SavedVariantEffectMeasurementWithMappedVariant ,
3+ VariantEffectMeasurement ,
4+ VariantEffectMeasurementCreate ,
5+ )
6+ from tests .helpers .constants import (
7+ TEST_MINIMAL_MAPPED_VARIANT ,
8+ TEST_MINIMAL_VARIANT ,
9+ TEST_POPULATED_VARIANT ,
10+ TEST_SAVED_VARIANT ,
11+ )
312from tests .helpers .util .common import dummy_attributed_object_from_dict
4- from tests .helpers .constants import TEST_MINIMAL_VARIANT , TEST_POPULATED_VARIANT , TEST_SAVED_VARIANT
513
614
715def test_minimal_variant_create ():
@@ -19,3 +27,51 @@ def test_saved_variant():
1927 dummy_attributed_object_from_dict ({** TEST_SAVED_VARIANT , "score_set_id" : 1 })
2028 )
2129 assert all (variant .__getattribute__ (k ) == v for k , v in TEST_SAVED_VARIANT .items ())
30+
31+
32+ def test_can_create_saved_variant_with_mapping_with_all_attributed_properties ():
33+ variant = TEST_SAVED_VARIANT .copy ()
34+ variant ["score_set_id" ] = 1
35+ variant ["mapped_variants" ] = [
36+ dummy_attributed_object_from_dict (
37+ {
38+ ** TEST_MINIMAL_MAPPED_VARIANT ,
39+ "id" : 1 ,
40+ "variant" : dummy_attributed_object_from_dict ({"urn" : "urn:mavedb:variant-xxx" }),
41+ }
42+ )
43+ ]
44+ variant_attributed_object = dummy_attributed_object_from_dict (variant )
45+ saved_variant = SavedVariantEffectMeasurementWithMappedVariant .model_validate (variant_attributed_object )
46+ assert saved_variant .mapped_variant is not None
47+ assert saved_variant .mapped_variant .variant_urn == "urn:mavedb:variant-xxx"
48+ for k , v in TEST_SAVED_VARIANT .items ():
49+ assert saved_variant .__getattribute__ (k ) == v
50+
51+
52+ # Missing attributed properties here are unproblematic, as they are optional on the view model.
53+ def test_can_create_saved_variant_with_mapping_with_missing_attributed_properties ():
54+ variant = TEST_SAVED_VARIANT .copy ()
55+ variant .pop ("mapped_variants" , None )
56+ variant ["score_set_id" ] = 1
57+
58+ variant_attributed_object = dummy_attributed_object_from_dict (variant )
59+ saved_variant = SavedVariantEffectMeasurementWithMappedVariant .model_validate (variant_attributed_object )
60+ for k , v in TEST_SAVED_VARIANT .items ():
61+ assert saved_variant .__getattribute__ (k ) == v
62+
63+
64+ def test_can_create_saved_variant_with_mapping_from_non_orm_context ():
65+ variant = TEST_SAVED_VARIANT .copy ()
66+ variant ["score_set_id" ] = 1
67+ variant ["mapped_variant" ] = {
68+ ** TEST_MINIMAL_MAPPED_VARIANT ,
69+ "id" : 1 ,
70+ "variant_urn" : "urn:mavedb:variant-xxx" ,
71+ }
72+
73+ saved_variant = SavedVariantEffectMeasurementWithMappedVariant .model_validate (variant )
74+ assert saved_variant .mapped_variant is not None
75+ assert saved_variant .mapped_variant .variant_urn == "urn:mavedb:variant-xxx"
76+ for k , v in TEST_SAVED_VARIANT .items ():
77+ assert saved_variant .__getattribute__ (k ) == v
0 commit comments