|
1 | 1 | import io |
| 2 | +from enum import Enum |
2 | 3 |
|
3 | 4 | import pytest |
4 | 5 |
|
@@ -75,6 +76,67 @@ def __init__(self, name): |
75 | 76 | sm.match_object("key_a", CustomObject(name="myname")) |
76 | 77 | sm._assert_all() |
77 | 78 |
|
| 79 | + def test_match_object_lists_and_iterators(self): |
| 80 | + class CustomObject: |
| 81 | + def __init__(self, name): |
| 82 | + self.name = name |
| 83 | + self.my_list = [9, 8, 7, 6, 5] |
| 84 | + self.my_iterator = (x for x in range(5)) |
| 85 | + |
| 86 | + sm = SnapshotSession(scope_key="A", verify=True, base_file_path="", update=False) |
| 87 | + sm.recorded_state = { |
| 88 | + "key_a": {"name": "myname", "my_iterator": [0, 1, 2, 3, 4], "my_list": [9, 8, 7, 6, 5]} |
| 89 | + } |
| 90 | + sm.match_object("key_a", CustomObject(name="myname")) |
| 91 | + sm._assert_all() |
| 92 | + |
| 93 | + def test_match_object_include_properties(self): |
| 94 | + class CustomObject: |
| 95 | + def __init__(self, name): |
| 96 | + self.name = name |
| 97 | + self._internal = "n/a" |
| 98 | + |
| 99 | + def some_method(self): |
| 100 | + # method should not be serialized |
| 101 | + return False |
| 102 | + |
| 103 | + @property |
| 104 | + def some_prop(self): |
| 105 | + # properties should be serialized |
| 106 | + return True |
| 107 | + |
| 108 | + @property |
| 109 | + def some_iterator(self): |
| 110 | + for i in range(3): |
| 111 | + yield i |
| 112 | + |
| 113 | + @property |
| 114 | + def _private_prop(self): |
| 115 | + # private properties should be ignored |
| 116 | + return False |
| 117 | + |
| 118 | + sm = SnapshotSession(scope_key="A", verify=True, base_file_path="", update=False) |
| 119 | + sm.recorded_state = { |
| 120 | + "key_a": {"name": "myname", "some_prop": True, "some_iterator": [0, 1, 2]} |
| 121 | + } |
| 122 | + sm.match_object("key_a", CustomObject(name="myname")) |
| 123 | + sm._assert_all() |
| 124 | + |
| 125 | + def test_match_object_enums(self): |
| 126 | + class TestEnum(Enum): |
| 127 | + value1 = "Value 1" |
| 128 | + value2 = "Value 2" |
| 129 | + |
| 130 | + class CustomObject: |
| 131 | + def __init__(self, name): |
| 132 | + self.name = name |
| 133 | + self.my_enum = TestEnum.value2 |
| 134 | + |
| 135 | + sm = SnapshotSession(scope_key="A", verify=True, base_file_path="", update=False) |
| 136 | + sm.recorded_state = {"key_a": {"name": "myname", "my_enum": "Value 2"}} |
| 137 | + sm.match_object("key_a", CustomObject(name="myname")) |
| 138 | + sm._assert_all() |
| 139 | + |
78 | 140 | def test_match_object_change(self): |
79 | 141 | class CustomObject: |
80 | 142 | def __init__(self, name): |
|
0 commit comments