+ assert_equal(same_repo.repo_revision(), current_repo_revision)
+
+
+ def test_history(self):
+ COMMITS = [
+ {"author": "bunny", "text":"1", "comment": "Oh yeah!"},
+ {"author": "frank", "text":"2", "comment": "Second is the best!"},
+ {"text":"3", "comment": "Third"}, # anonymous
+ {"author": "welma", "text":"4", "comment": "Fourth"},
+ ]
+
+ for commit in COMMITS:
+ self.repo.save_text(title = u"Sample", **commit)
+
+ for n, entry in enumerate(reversed(list(self.repo.page_history(u"Sample")))):
+ assert_equal(entry["version"], n)
+ assert_equal(entry["author"], COMMITS[n].get("author", "anonymous") )
+ assert_equal(entry["description"], COMMITS[n]["comment"])
+ assert_equal(entry["tag"], [])
+
+
+class TestVSTags(object):
+
+ TITLE_1 = "Sample"
+
+ COMMITS = [
+ {"author": "bunny", "text":"1", "comment": "Oh yeah!"},
+ {"author": "frank", "text":"2", "comment": "Second is the best!"},
+ {"text":"3", "comment": "Third"}, # anonymous
+ {"author": "welma", "text":"4", "comment": "Fourth"},
+ ]
+
+ def setUp(self):
+ self.repo_path = tempfile.mkdtemp()
+ self.repo = vstorage.VersionedStorage(self.repo_path)
+
+ # generate some history
+ for commit in self.COMMITS:
+ self.repo.save_text(title = u"Sample", **commit)
+
+ # verify
+ for n, entry in enumerate(reversed(list(self.repo.page_history(self.TITLE_1)))):
+ assert_equal(entry["tag"], [])
+
+ def tearDown(self):
+ clear_directory(self.repo_path)
+
+ def test_add_tag(self):
+ TAG_USER = "mike_the_tagger"
+ TAG_NAME = "production"
+ TAG_VERSION = 2
+
+ # Add tag
+ self.repo.add_page_tag(self.TITLE_1, TAG_VERSION, TAG_NAME, TAG_USER)
+
+ # check history again
+ history = list(self.repo.page_history(self.TITLE_1))
+ for entry in reversed(history):
+ if entry["version"] == TAG_VERSION:
+ assert_equal(entry["tag"], [TAG_NAME])
+ else:
+ assert_equal(entry["tag"], [])
+
+ def test_add_many_tags(self):
+ TAG_USER = "mike_the_tagger"
+ tags = [
+ (2, "production", "mike"),
+ (2, "finished", "jeremy"),
+ (0, "original", "jeremy"),
+ ]
+
+
+ for rev, name, user in tags:
+ self.repo.add_page_tag(self.TITLE_1, rev, name, user)
+
+ # check history again
+ history = list(self.repo.page_history(self.TITLE_1))
+ for entry in reversed(history):
+ expected = [ tag[1] for tag in tags if tag[0] == entry["version"] ]
+ assert_equal(set(entry["tag"]), set(expected))