Ejemplo n.º 1
0
 def test_init(self):
     # Arrange
     test_data = {"key1": "value1", "key2": "value2", "$key3": "value3"}
     # Act
     obj1 = ObjectDict()
     obj2 = ObjectDict(test_data)
     # Assert
     self.assertEqual(obj1, {})
     self.assertEqual(obj2, test_data)
     for key, value in test_data.items():
         self.assertTrue(hasattr(obj2, key))
         self.assertEqual(getattr(obj2, key), value)
Ejemplo n.º 2
0
 def test_convert_value(self):
     # Arrange
     test_data = {
         "key1": "value1",
         "key2": {
             "k1": "v1"
         },
         "key3": {
             "k2": {
                 "k3": "v3"
             }
         }
     }
     obj = ObjectDict(test_data)
     # Act
     key1 = obj.key1
     key2 = obj["key2"]
     key3 = obj.key3
     k1 = key2.k1
     k2 = key3["k2"]
     k3 = k2.k3
     # Assert
     self.assertEqual(obj, test_data)
     self.assertTrue(isinstance(obj, ObjectDict))
     self.assertTrue(isinstance(key1, str))
     self.assertTrue(isinstance(key2, ObjectDict))
     self.assertTrue(isinstance(key3, ObjectDict))
     self.assertTrue(isinstance(k1, str))
     self.assertTrue(isinstance(k2, ObjectDict))
     self.assertTrue(isinstance(k3, str))
Ejemplo n.º 3
0
    def test_to_mongo(self):
        # Arrange
        obj = ObjectDict()
        obj["$prop1"] = "value1"
        obj["prop.2"] = "value2"
        obj["prop.$3"] = "value3"
        obj["prop4"] = copy.deepcopy(obj)
        obj["prop5"] = [{"key.1": "v1", "$key2": "v2"}]
        expected = {
            "\$prop1": "value1",
            "prop$DOT$2": "value2",
            "prop$DOT$$3": "value3",
            "prop4": {
                "\$prop1": "value1",
                "prop$DOT$2": "value2",
                "prop$DOT$$3": "value3",
            },
            "prop5": [{
                "key$DOT$1": "v1",
                "\$key2": "v2"
            }]
        }

        # Act
        mongo_dict = dict(obj._to_mongoiter())
        # Assert
        self.assertTrue(hasattr(obj, "$prop1"))
        self.assertTrue(hasattr(obj, "prop.2"))
        self.assertTrue(hasattr(obj, "prop.$3"))
        self.assertEqual(obj["$prop1"], "value1")
        self.assertEqual(obj["prop.2"], "value2")
        self.assertEqual(obj["prop.$3"], "value3")
        self.assertEqual(mongo_dict, expected)
Ejemplo n.º 4
0
 def _create_manifest_shard(self, resource):
     if "\\$collection" in resource:
         tmpResource = resource["properties"]
     else:
         tmpResource = resource
     tmpResult = {}
     tmpResult["properties"] = self._flatten_shard(tmpResource)
     tmpResult["$shard"] = True
     tmpResult["$collection"] = self._collection_name
     return dict(ObjectDict(tmpResult)._to_mongoiter())
Ejemplo n.º 5
0
 def test_del_property(self):
     # Arrange
     test_data = {"key1": "value1", "key2": "value2", "$key3": "value3"}
     obj = ObjectDict(test_data)
     # Act
     del obj.key1
     del obj["key2"]
     # Assert
     self.assertNotEqual(obj, test_data)
     self.assertFalse(hasattr(obj, "key1"))
     self.assertFalse(hasattr(obj, "key2"))
     self.assertFalse("key1" in obj)
     self.assertFalse("key2" in obj)
     self.assertTrue(hasattr(obj, "$key3"))
     self.assertEqual(getattr(obj, "$key3"), "value3")
Ejemplo n.º 6
0
 def test_add_property(self):
     # Arrange
     test_data = {"key1": "value1", "key2": "value2", "$key3": "value3"}
     obj = ObjectDict(test_data)
     # Act
     obj.key4 = "value4"
     obj["key5"] = "value5"
     # Assert
     self.assertTrue(hasattr(obj, "key4"))
     self.assertEqual(getattr(obj, "key4"), "value4")
     self.assertTrue(hasattr(obj, "key5"))
     self.assertEqual(getattr(obj, "key5"), "value5")
     self.assertNotEqual(obj, test_data)
     for key, value in test_data.items():
         self.assertTrue(hasattr(obj, key))
         self.assertEqual(getattr(obj, key), value)
Ejemplo n.º 7
0
    def test_convert_value_nested(self):
        # Arrange
        test_data = {
            "key1": "value1",
            "key2": {
                "k1": "v1"
            },
            "key3": {
                "k2": {
                    "k3": "v3"
                }
            },
            "key4": [{
                "k4": {
                    "k5": "v5"
                }
            }]
        }
        expected_data = {
            "key1": "value1",
            "key2": {
                "k1": "v1"
            },
            "key3": {
                "k2": {
                    "k3": "v3"
                }
            },
            "key4": [{
                "k4": {
                    "k5": "v5"
                }
            }, {
                "k6": "v6"
            }],
            "key5": {
                "k7": [{
                    "k8": "v8"
                }, {
                    "k9": "v9"
                }]
            }
        }
        obj = ObjectDict(test_data)
        # Act

        key1 = obj.key1
        key2 = obj["key2"]
        key3 = obj.key3
        key4 = obj.key4
        k1 = key2.k1
        k2 = key3["k2"]
        k3 = k2.k3
        key4 = obj.key4
        key4.append({"k6": "v6"})
        obj.key5 = {"k7": [{"k8": "v8"}]}
        k7 = obj.key5.k7
        k7.append({"k9": "v9"})
        # Assert
        self.assertEqual(obj, expected_data)
        self.assertTrue(isinstance(obj, ObjectDict))
        self.assertTrue(isinstance(key1, str))
        self.assertTrue(isinstance(key2, ObjectDict))
        self.assertTrue(isinstance(key3, ObjectDict))
        self.assertTrue(isinstance(k1, str))
        self.assertTrue(isinstance(k2, ObjectDict))
        self.assertTrue(isinstance(k3, str))