def test_serialize_dict_tag_set(self): test_values = { "id": 123, "tags": [{ "id": 1, "name": "foo" }, { "id": 2, "name": "bar" }, { "id": 3, "name": "baz" }], } test = Record(test_values, None, None).serialize() self.assertEqual(len(test["tags"]), 3)
def test_attribute_access(self): test_values = { "id": 123, "units": 12, "nested_dict": { "id": 222, "name": "bar" }, "int_list": [123, 321, 231], } test_obj = Record(test_values, None, None) self.assertEqual(test_obj.id, 123) self.assertEqual(test_obj.units, 12) self.assertEqual(test_obj.nested_dict.name, "bar") self.assertEqual(test_obj.int_list[1], 321) with self.assertRaises(AttributeError) as _: test_obj.nothing
def test_dict_access(self): test_values = { "id": 123, "units": 12, "nested_dict": { "id": 222, "name": "bar" }, "int_list": [123, 321, 231], } test_obj = Record(test_values, None, None) self.assertEqual(test_obj["id"], 123) self.assertEqual(test_obj["units"], 12) self.assertEqual(test_obj["nested_dict"]["name"], "bar") self.assertEqual(test_obj["int_list"][1], 321) with self.assertRaises(KeyError) as _: test_obj["nothing"]
def test_dict(self): test_values = { "id": 123, "custom_fields": { "foo": "bar" }, "string_field": "foobar", "int_field": 1, "nested_dict": { "id": 222, "name": "bar" }, "tags": ["foo", "bar"], "int_list": [123, 321, 231], "empty_list": [], "record_list": [ { "id": 123, "name": "Test", "str_attr": "foo", "int_attr": 123, "custom_fields": { "foo": "bar" }, "tags": ["foo", "bar"], }, { "id": 321, "name": "Test 1", "str_attr": "bar", "int_attr": 321, "custom_fields": { "foo": "bar" }, "tags": ["foo", "bar"], }, ], } test = Record(test_values, None, None) self.assertEqual(dict(test), test_values)
def test_serialize_tag_list_order(self): """Add tests to ensure we're preserving tag order This test could still give false-negatives, but making the tag list longer helps mitigate that. """ test_tags = [ "one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "ten", ] test = Record({"id": 123, "tags": test_tags}, None, None).serialize() self.assertEqual(test["tags"], test_tags)
def test_serialize_string_tag_set(self): test_values = {"id": 123, "tags": ["foo", "bar", "foo"]} test = Record(test_values, None, None).serialize() self.assertEqual(len(test["tags"]), 2)
def test_serialize_list_of_ints(self): test_values = {"id": 123, "units": [12]} test_obj = Record(test_values, None, None) test = test_obj.serialize() self.assertEqual(test["units"], [12])
def test_hash(self): endpoint = Mock() endpoint.name = "test-endpoint" test = Record({}, None, endpoint) self.assertIsInstance(hash(test), int)