X-Git-Url: https://git.mdrn.pl/redakcja.git/blobdiff_plain/325dea54f6083bbf3ffb2bde983922d799a46f68..3bcc03862b46d25ec0c81cfa49c0d1596ba0c271:/lib/tests/test_vstorage.py diff --git a/lib/tests/test_vstorage.py b/lib/tests/test_vstorage.py new file mode 100644 index 00000000..bcaf9162 --- /dev/null +++ b/lib/tests/test_vstorage.py @@ -0,0 +1,94 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- + +import os +import tempfile +from nose.tools import * + +import vstorage + + +def clear_directory(top): + for root, dirs, files in os.walk(top, topdown=False): + for name in files: + os.remove(os.path.join(root, name)) + for name in dirs: + os.rmdir(os.path.join(root, name)) + try: + os.removedirs(top) + except OSError: + pass + + +class TestMercurialStorage(object): + def setUp(self): + self.repo_path = tempfile.mkdtemp() + self.repo = vstorage.VersionedStorage(self.repo_path) + + def tearDown(self): + clear_directory(self.repo_path) + + def test_save_text(self): + text = u"test text" + title = u"test title" + author = u"test author" + comment = u"test comment" + self.repo.save_text(title, text, author, comment, parent=-1) + saved = self.repo.open_page(title).read() + assert saved == text + + def test_save_text_noparent(self): + text = u"test text" + title = u"test title" + author = u"test author" + comment = u"test comment" + self.repo.save_text(title, text, author, comment, parent=None) + saved = self.repo.open_page(title).read() + assert saved == text + + def test_save_merge_no_conflict(self): + text = u"test\ntext" + title = u"test title" + author = u"test author" + comment = u"test comment" + self.repo.save_text(title, text, author, comment, parent=-1) + self.repo.save_text(title, text, author, comment, parent=-1) + saved = self.repo.open_page(title).read() + assert saved == text + + def test_save_merge_line_conflict(self): + text = u"test\ntest\n" + text1 = u"test\ntext\n" + text2 = u"text\ntest\n" + title = u"test title" + author = u"test author" + comment = u"test comment" + self.repo.save_text(title, text, author, comment, parent=-1) + self.repo.save_text(title, text1, author, comment, parent=0) + self.repo.save_text(title, text2, author, comment, parent=0) + saved = self.repo.open_page(title).read() + # Other conflict markers placement can also be correct + assert_equal(saved, u'''\ +text +test +<<<<<<< local +======= +text +>>>>>>> other +''') + + def test_delete(self): + text = u"text test" + title = u"test title" + author = u"test author" + comment = u"test comment" + self.repo.save_text(title, text, author, comment, parent=-1) + assert title in self.repo + self.repo.delete_page(title, author, comment) + assert title not in self.repo + + @raises(vstorage.DocumentNotFound) + def test_document_not_found(self): + self.repo.open_page(u'unknown entity') + +