1 from django.test import TestCase
2 from dvcs.models import Change, Document
4 class DocumentModelTests(TestCase):
6 def assertTextEqual(self, given, expected):
7 return self.assertEqual(given, expected,
8 "Expected '''%s'''\n differs from text: '''%s'''" % (expected, given)
11 def test_empty_file(self):
12 doc = Document.objects.create(name=u"Sample Document")
13 self.assert_(doc.head is not None)
14 self.assertEqual(doc.materialize(), u"")
16 def test_single_commit(self):
17 doc = Document.objects.create(name=u"Sample Document")
18 doc.commit(text=u"Ala ma kota", description="Commit #1")
19 self.assert_(doc.head is not None)
20 self.assertEqual(doc.change_set.count(), 2)
21 self.assertEqual(doc.materialize(), u"Ala ma kota")
23 def test_chained_commits(self):
24 doc = Document.objects.create(name=u"Sample Document")
25 c1 = doc.commit(description="Commit #1", text=u"""
29 c2 = doc.commit(description="Commit #2", text=u"""
33 c3 = doc.commit(description="Commit #3", text=u"""
38 self.assert_(doc.head is not None)
39 self.assertEqual(doc.change_set.count(), 4)
41 self.assertEqual(doc.materialize(), u"""
46 self.assertEqual(doc.materialize(version=c3), u"""
51 self.assertEqual(doc.materialize(version=c2), u"""
55 self.assertEqual(doc.materialize(version=c1), """
61 def test_parallel_commit_noconflict(self):
62 doc = Document.objects.create(name=u"Sample Document")
63 self.assert_(doc.head is not None)
65 base = doc.commit(description="Commit #1", text=u"""
70 c1 = doc.commit(description="Commit #2", text=u"""
74 self.assertTextEqual(c1.materialize(), u"""
78 c2 = doc.commit(description="Commit #3", text=u"""
83 self.assertEqual(doc.change_set.count(), 5)
84 self.assertTextEqual(doc.materialize(), u"""
90 def test_parallel_commit_conflict(self):
91 doc = Document.objects.create(name=u"Sample Document")
92 self.assert_(doc.head is not None)
94 base = doc.commit(description="Commit #1", text=u"""
100 c1 = doc.commit(description="Commit #2", text=u"""
105 c2 = doc.commit(description="Commit #3", text=u"""
110 self.assertEqual(doc.change_set.count(), 5)
111 self.assertTextEqual(doc.materialize(), u"""