def test_recipe_put_to_store(): _cleanup() config = { "server_store": ["tiddlywebplugins.devstore", { "store_root": STORE_DIR }], "instance_tiddlers": {}, "root_dir": "" } env = { "tiddlyweb.config": config } store = Store(config["server_store"][0], config["server_store"][1], env) name = "foo" recipe = Recipe(name) store.put(recipe) assert os.path.exists("%s.recipe" % os.path.join(STORE_DIR, name))
def test_get_tiddler_revision(): _cleanup() config = { "server_store": ["tiddlywebplugins.devstore", { "store_root": STORE_DIR }], "instance_tiddlers": { "myBag": ["%s/alpha/index.recipe" % REPO_DIR] }, "root_dir": "" } env = { "tiddlyweb.config": config } store = Store(config["server_store"][0], config["server_store"][1], env) tiddler = Tiddler("lorem") tiddler.bag = "myBag" t = store.get(tiddler) assert t.title == "lorem" assert t.bag == "myBag" assert t.revision == 1 assert t.tags == [] assert t.creator == "FND" assert t.modifier == "FND" assert len(t.created) == 14 assert len(t.modified) == 14 assert t.created == t.modified assert t.text == "lorem ipsum" tiddler = Tiddler("hello world") tiddler.bag = "myBag" tiddler.tags = ["foo", "bar"] tiddler.modifier = "FND" tiddler.text = "lorem ipsum" store.put(tiddler) tiddler = Tiddler("hello world") tiddler.bag = "myBag" t = store.get(tiddler) assert t.title == "hello world" assert t.bag == "myBag" assert t.revision == 1 assert t.tags == ["foo", "bar"] assert t.creator == "FND" assert t.modifier == "FND" assert len(t.created) == 14 assert len(t.modified) == 14 assert t.created == t.modified assert t.text == "lorem ipsum"
def test_list_bags_in_store(): _cleanup() config = { "server_store": ["tiddlywebplugins.devstore", { "store_root": STORE_DIR }], "instance_tiddlers": { "alpha": ["%s/alpha/index.recipe" % REPO_DIR], "bravo": ["%s/bravo/index.recipe" % REPO_DIR] }, "root_dir": "" } env = { "tiddlyweb.config": config } store = Store(config["server_store"][0], config["server_store"][1], env) actual = [bag.name for bag in store.list_bags()] expected = ["bravo", "alpha"] assert sorted(actual) == sorted(expected)
def test_list_recipes_in_store(): _cleanup() config = { "server_store": ["tiddlywebplugins.devstore", {"store_root": STORE_DIR}], "instance_tiddlers": {}, "root_dir": "", } env = {"tiddlyweb.config": config} store = Store(config["server_store"][0], config["server_store"][1], env) for name in ["alpha", "bravo", "charlie"]: filepath = "%s.recipe" % os.path.join(STORE_DIR, name) open(filepath, "w").close() actual = [recipe.name for recipe in store.list_recipes()] expected = ["bravo", "alpha", "charlie"] assert set(actual) == set(expected)
def test_tiddler_put(): _cleanup() config = { "server_store": ["tiddlywebplugins.devstore", { "store_root": STORE_DIR }], "instance_tiddlers": { "myBag": [] }, "root_dir": "" } env = { "tiddlyweb.config": config } store = Storage(config["server_store"][1], env) tiddler = Tiddler("lorem") tiddler.bag = "myBag" store.tiddler_put(tiddler) tiddler_path = os.path.join(STORE_DIR, tiddler.bag, "%s.tid" % tiddler.title) assert os.path.exists(tiddler_path)
def test_get_bag_from_store(): _cleanup() config = { "server_store": ["tiddlywebplugins.devstore", {"store_root": STORE_DIR}], "instance_tiddlers": {"myBag": ["%s/alpha/index.recipe" % REPO_DIR]}, "root_dir": "", } env = {"tiddlyweb.config": config} store = Store(config["server_store"][0], config["server_store"][1], env) bag = Bag("myBag") bag = store.get(bag) assert bag.name == "myBag" actual = [tiddler.title for tiddler in bag.list_tiddlers()] expected = ["SiteTitle", "foo", "lorem"] assert sorted(actual) == sorted(expected)
def test_bag_get(): _cleanup() config = { "server_store": ["tiddlywebplugins.devstore", {"store_root": STORE_DIR}], "instance_tiddlers": {"myBag": ["%s/bravo/index.recipe" % REPO_DIR]}, "root_dir": "", } env = {"tiddlyweb.config": config} store = Storage(config["server_store"][1], env) bag = Bag("myBag") bag = store.bag_get(bag) assert bag.name == "myBag" actual = [tiddler.title for tiddler in bag.list_tiddlers()] expected = ["lorem", "foo", "SiteTitle", "ipsum", "bar"] assert set(actual) == set(expected) # XXX: sets as temporary workaround for dupes issue
def test_tiddler_get(): _cleanup() config = { "server_store": ["tiddlywebplugins.devstore", { "store_root": STORE_DIR }], "instance_tiddlers": { "myBag": ["%s/alpha/index.recipe" % REPO_DIR] }, "root_dir": "" } env = { "tiddlyweb.config": config } store = Storage(config["server_store"][1], env) tiddler = Tiddler("lorem") tiddler.bag = "myBag" t = store.tiddler_get(tiddler) assert t.title == "lorem" assert t.bag == "myBag" assert t.tags == [] assert t.creator == "FND" assert t.modifier == "FND" assert len(t.created) == 14 assert len(t.modified) == 14 assert t.created == t.modified assert t.text == "lorem ipsum" tiddler = Tiddler("foo") tiddler.bag = "myBag" t = store.tiddler_get(tiddler) assert t.title == "foo" assert t.bag == "myBag" assert t.type == "text/javascript" assert t.revision == 1 assert t.tags == ["systemConfig"] assert t.creator == None assert t.modifier == None assert len(t.created) == 14 assert len(t.modified) == 14 assert t.created == t.modified assert t.text == 'console.log("foo");'
def test_put_tiddler_to_store(): _cleanup() config = { "server_store": ["tiddlywebplugins.devstore", { "store_root": STORE_DIR }], "instance_tiddlers": { "myBag": ["%s/alpha/index.recipe" % REPO_DIR] }, "root_dir": "" } env = { "tiddlyweb.config": config } store = Store(config["server_store"][0], config["server_store"][1], env) tiddler = Tiddler("lorem") tiddler.bag = "myBag" store.put(tiddler) tiddler_path = os.path.join(STORE_DIR, tiddler.bag, "%s.tid" % tiddler.title) assert os.path.exists(tiddler_path) tiddler = Tiddler("foo bar") tiddler.bag = "myBag" store.put(tiddler) tiddler_path = os.path.join(STORE_DIR, "myBag", "foo%20bar.tid") assert os.path.exists(tiddler_path) assert store.get(tiddler).title == "foo bar" # XXX: testing get operation here for convenience bag = Bag("myBag") try: assert "foo bar" in [t.title for t in store.list_bag_tiddlers(bag)] except AttributeError: # TiddlyWeb 1.0 has no list_bag_tiddlers method pass tiddler = Tiddler("foo/bar") tiddler.bag = "myBag" store.put(tiddler) tiddler_path = os.path.join(STORE_DIR, "myBag", "foo%2Fbar.tid") assert os.path.exists(tiddler_path) assert store.get(tiddler).title == "foo/bar"
def test_recipe_delete_from_store(): _cleanup() config = { "server_store": ["tiddlywebplugins.devstore", { "store_root": STORE_DIR }], "instance_tiddlers": {}, "root_dir": "" } env = { "tiddlyweb.config": config } store = Store(config["server_store"][0], config["server_store"][1], env) name = "foo" recipe = Recipe(name) recipe.desc = "lorem ipsum" store.put(recipe) recipe = Recipe(name) store.delete(recipe) recipe = Recipe(name) raises(NoRecipeError, "store.get(recipe)")
def test_serialization(): _cleanup() config = { "server_store": ["tiddlywebplugins.devstore", { "store_root": STORE_DIR }], "instance_tiddlers": {}, "root_dir": "" } env = { "tiddlyweb.config": config } store = Store(config["server_store"][0], config["server_store"][1], env) name = "foo" recipe = Recipe(name) recipe.desc = "lorem ipsum" store.put(recipe) f = open("%s.recipe" % os.path.join(STORE_DIR, name)) actual = f.read() f.close() expected = """desc: lorem ipsum policy: {"read": [], "create": [], "manage": [], "accept": [], "write": [], "owner": null, "delete": []} """ assert actual == expected
def test_basic_search_store(): _cleanup() config = { "server_store": ["tiddlywebplugins.devstore", { "store_root": STORE_DIR }], "instance_tiddlers": {}, "root_dir": "" } env = { "tiddlyweb.config": config } store = Store(config["server_store"][0], config["server_store"][1], env) bagone = Bag('bagone') bagtwo = Bag('bagtwo') tiddler1 = Tiddler('tiddler1', 'bagone') tiddler2 = Tiddler('tiddler2', 'bagtwo') tiddler1.text = tiddler2.text = 'ohhai' store.put(bagone) store.put(bagtwo) store.put(tiddler1) store.put(tiddler2) tiddlers = list(store.search('ohhai')) assert len(tiddlers) == 2 assert ['tiddler1', 'tiddler2'] == sorted([tiddler.title for tiddler in tiddlers])