|
6 | 6 | import unittest |
7 | 7 | from unittest import mock |
8 | 8 |
|
9 | | -from khard.carddav_object import CarddavObject |
| 9 | +from khard.carddav_object import CarddavObject, multi_property_key |
10 | 10 |
|
11 | 11 |
|
12 | 12 | class CarddavObjectFormatDateObject(unittest.TestCase): |
@@ -57,3 +57,28 @@ def test_parsing_base64_ecoded_photo_vcard_v4(self): |
57 | 57 | self.assertEqual(uri_stuff, 'data:image/png;base64') |
58 | 58 | data = base64.decodebytes(data.encode()) |
59 | 59 | self.assertEqual(data[:8], self.PNG_HEADER) |
| 60 | + |
| 61 | + |
| 62 | +class MultiPropertyKey(unittest.TestCase): |
| 63 | + """Test for the multi_property_key helper function""" |
| 64 | + |
| 65 | + def test_strings_are_in_the_first_sort_group(self) -> None: |
| 66 | + group, _key = multi_property_key("some string") |
| 67 | + self.assertEqual(group, 0) |
| 68 | + |
| 69 | + def test_dicts_are_in_the_second_sort_group(self) -> None: |
| 70 | + group, _key = multi_property_key({"some": "dict"}) |
| 71 | + self.assertEqual(group, 1) |
| 72 | + |
| 73 | + def test_strings_are_their_own_keys(self) -> None: |
| 74 | + _group, key = multi_property_key("some string") |
| 75 | + self.assertEqual(key, "some string") |
| 76 | + |
| 77 | + def test_dicts_are_keyed_by_the_first_key(self) -> None: |
| 78 | + _group, key = multi_property_key({"some": "dict", "more": "stuff"}) |
| 79 | + self.assertEqual(key, "some") |
| 80 | + |
| 81 | + def test_all_strings_are_sorted_before_dicts(self) -> None: |
| 82 | + my_list = ["a", {"c": "d"}, "e", {"f": "g"}] |
| 83 | + my_list.sort(key=multi_property_key) |
| 84 | + self.assertEqual(my_list, ["a", "e", {"c": "d"}, {"f": "g"}]) |
0 commit comments