| import unittest |
| from baim.state import Element, State |
|
|
|
|
| class StateTests(unittest.TestCase): |
| def test_hash_excludes_ephemeral_references(self): |
| a = State("a", 1, "https://example.org", (Element("e1", "button", " Next ", "0"),)) |
| b = State("b", 7, a.origin, (Element("e9", "button", "Next", "0"),)) |
| self.assertEqual(a.state_hash, b.state_hash) |
| self.assertIn("reset", b.delta(a)) |
|
|
| def test_sensitive_name_never_serialized(self): |
| a = State("a", 1, "https://example.org", (Element("e1", "textbox", "secret", "0", sensitive=True),)) |
| self.assertNotIn("secret", str(a.compact())) |
|
|
| def test_order_changes_hash(self): |
| elements = (Element("e1", "link", "A", "0"), Element("e2", "link", "B", "1")) |
| a = State("a", 1, "https://example.org", elements) |
| b = State("a", 2, a.origin, tuple(reversed(elements))) |
| self.assertNotEqual(a.state_hash, b.state_hash) |
| self.assertEqual(b.delta(a)["order"], ["e2", "e1"]) |
|
|
|
|
| if __name__ == "__main__": |
| unittest.main() |
|
|