Ejemplo n.º 1
0
class Persister(object):
    def __init__(self, load_files=[], output_file=None):
        self.__registry = Registry()
        self.load_files = load_files
        self.output_file = output_file
        for file in self.load_files:
            self.load_file(file)

    def load_file(self, file_path):
        try:
            f = open(file_path)
            json_content = f.read()
            f.close()
            data = json.loads(json_content)
            self.__registry.merge(data)
        except Exception, err:
#            print err
            pass
Ejemplo n.º 2
0
class TestRegistry:
    def setUp(self):
        self.r = Registry({"key0": "value0", "key_nasted0": {"key1": "value1"}})

    def test_get(self):
        value = self.r.get("key0")
        eq_(value, "value0")
        value = self.r.get("key_nasted0")
        eq_(value, {"key1": "value1"})
        # must get copy of value
        value["key1"] = "other value"
        value = self.r.get("key_nasted0")
        eq_(value, {"key1": "value1"})

    def test_get_nasted(self):
        value = self.r.get("key_nasted0.key1")
        eq_(value, "value1")

    def test_key_is_nasted(self):
        assert self.r.is_nasted("a.b")
        assert not self.r.is_nasted("a")
        assert not self.r.is_nasted(None)

    def test_extract_key(self):
        assert self.r.extract_key("a.b") == ["a", "b"]
        assert self.r.extract_key("a") == ["a"]
        assert self.r.extract_key(None) == []

    def test_set(self):
        self.r.set("key", "setted")
        value = self.r.get("key")
        eq_(value, "setted")

    def test_set_nasted(self):
        self.r.set("a.b", "c")
        value = self.r.get("a.b")
        eq_(value, "c")
        self.r.set("x.y", "z")
        value = self.r.get("x.y")
        eq_(value, "z")

    def test_remove(self):
        self.r.set("a", "b")
        self.r.remove("a")
        value = self.r.get("a")
        assert not value

        self.r.set("a.a", "c")
        self.r.set("a.b", "d")
        self.r.remove("a.b")
        assert not self.r.get("a.b")
        assert self.r.get("a.a") == "c"

    def test_get_values(self):
        (version, values) = self.r.get_values()
        assert values["key0"] == "value0"

    def test_set_values(self):
        self.r.set_values({"a": "b"})
        (version, values) = self.r.get_values()
        assert values == {"a": "b"}

    def test_set_values_with_version(self):
        self.r.set_values({"a": "b"}, 1)
        (version, values) = self.r.get_values()
        assert version == 1

    def test_get_version(self):
        assert self.r.get_version()

    def test_update_version_when_set(self):
        old_version = self.r.get_version()
        self.r.set("a", "b")
        new_version = self.r.get_version()
        assert old_version != new_version

    def test_version_not_update_when_nothing_change(self):
        self.r.set("a", "b")
        old_version = self.r.get_version()
        self.r.set("a", "b")
        new_version = self.r.get_version()
        assert old_version == new_version

        self.r.set("x.y", "z")
        old_version = self.r.get_version()
        self.r.set("x.y", "z")
        new_version = self.r.get_version()
        assert old_version == new_version

    def test_update_version_when_set_values(self):
        old_version = self.r.get_version()
        self.r.set_values({"a": "b"})
        new_version = self.r.get_version()
        assert old_version != new_version

    def test_update_version_when_remove(self):
        self.r.set("a", "b")
        old_version = self.r.get_version()
        self.r.remove("a")
        new_version = self.r.get_version()
        assert old_version != new_version

    def test_merge(self):
        self.r.set("a", {"k0": "v0", "k3": "v3"})
        b = {"a": {"k1": "v1", "k3": "v33"}, "c": "d"}
        self.r.merge(b)
        assert self.r.get("a.k0") == "v0"
        assert self.r.get("a.k1") == "v1"
        assert self.r.get("a.k3") == "v33"
        assert self.r.get("c") == "d"

    def test_ignode_when_key_not_found(self):
        self.r.remove("notexist")