@@ -37,6 +37,48 @@ def test_context_replacement(self):
37
37
sm .match ("key_a" , {"aaa" : "something" , "bbb" : "something hello" })
38
38
sm ._assert_all ()
39
39
40
+ def test_match_object_nochange (self ):
41
+ class CustomObject :
42
+ def __init__ (self , name , nested = False ):
43
+ self .name = name
44
+ if nested :
45
+ self .nested = CustomObject (f"nested{ name } " )
46
+ self .listed = [CustomObject (f"listed{ name } " ), "otherobj" ]
47
+
48
+ sm = SnapshotSession (scope_key = "A" , verify = True , base_file_path = "" , update = False )
49
+ sm .recorded_state = {
50
+ "key_a" : {
51
+ "name" : "myname" ,
52
+ "nested" : {"name" : "nestedmyname" },
53
+ "listed" : [{"name" : "listedmyname" }, "otherobj" ],
54
+ }
55
+ }
56
+ sm .match_object ("key_a" , CustomObject (name = "myname" , nested = True ))
57
+ sm ._assert_all ()
58
+
59
+ def test_match_object_ignore_private_values (self ):
60
+ class CustomObject :
61
+ def __init__ (self , name ):
62
+ self .name = name
63
+ self ._internal = "n/a"
64
+
65
+ sm = SnapshotSession (scope_key = "A" , verify = True , base_file_path = "" , update = False )
66
+ sm .recorded_state = {"key_a" : {"name" : "myname" }}
67
+ sm .match_object ("key_a" , CustomObject (name = "myname" ))
68
+ sm ._assert_all ()
69
+
70
+ def test_match_object_change (self ):
71
+ class CustomObject :
72
+ def __init__ (self , name ):
73
+ self .name = name
74
+
75
+ sm = SnapshotSession (scope_key = "A" , verify = True , base_file_path = "" , update = False )
76
+ sm .recorded_state = {"key_a" : {"name" : "myname" }}
77
+ sm .match_object ("key_a" , CustomObject (name = "diffname" ))
78
+ with pytest .raises (Exception ) as ctx :
79
+ sm ._assert_all ()
80
+ ctx .match ("Parity snapshot failed" )
81
+
40
82
# def test_context_replacement_no_change(self):
41
83
# sm = SnapshotSession(scope_key="A", verify=True, base_file_path="", update=False)
42
84
# sm.add_transformer(TransformerUtility.key_value("name"))
0 commit comments