|
| 1 | +from unittest import TestCase |
| 2 | + |
| 3 | +from objects.api.utils import merge_patch |
| 4 | + |
| 5 | + |
| 6 | +class MergePatchTests(TestCase): |
| 7 | + def test_merge_patch(self): |
| 8 | + |
| 9 | + test_data = [ |
| 10 | + ({"a": "b"}, {"a": "c"}, {"a": "c"}), |
| 11 | + ({"a": "b"}, {"b": "c"}, {"a": "b", "b": "c"}), |
| 12 | + ({"a": "b"}, {"a": None}, {"a": None}), |
| 13 | + ({"a": "b", "b": "c"}, {"a": None}, {"a": None, "b": "c"}), |
| 14 | + ({"a": ["b"]}, {"a": "c"}, {"a": "c"}), |
| 15 | + ({"a": "c"}, {"a": ["b"]}, {"a": ["b"]}), |
| 16 | + ( |
| 17 | + {"a": {"b": "c"}}, |
| 18 | + {"a": {"b": "d", "c": None}}, |
| 19 | + {"a": {"b": "d", "c": None}}, |
| 20 | + ), |
| 21 | + ({"a": [{"b": "c"}]}, {"a": [1]}, {"a": [1]}), |
| 22 | + (["a", "b"], ["c", "d"], ["c", "d"]), |
| 23 | + ({"a": "b"}, ["c"], ["c"]), |
| 24 | + ({"a": "foo"}, None, None), |
| 25 | + ({"a": "foo"}, "bar", "bar"), |
| 26 | + ({"e": None}, {"a": 1}, {"e": None, "a": 1}), |
| 27 | + ([1, 2], {"a": "b", "c": None}, {"a": "b", "c": None}), |
| 28 | + ({}, {"a": {"bb": {"ccc": None}}}, {"a": {"bb": {"ccc": None}}}), |
| 29 | + ({"a": "b"}, {"a": "b"}, {"a": "b"}), |
| 30 | + ] |
| 31 | + |
| 32 | + for target, patch, expected in test_data: |
| 33 | + with self.subTest(): |
| 34 | + self.assertEqual(merge_patch(target, patch), expected) |
0 commit comments