7
7
from tests import TestCase, get_test_notebook
10
from zim.history import History, HistoryRecord
10
from zim.history import History, HistoryPath
11
11
from zim.notebook import Path
12
12
from zim.config import ConfigDict
23
23
def _assertCurrent(self, history, page):
24
24
current = history.get_current()
25
self.assertTrue(isinstance(current, HistoryRecord))
25
self.assertTrue(isinstance(current, HistoryPath))
26
26
self.assertEqual(current.name, page.name)
28
28
def testLinear(self):
63
64
self.assertTrue(history.get_next() is None)
64
65
self.assertTrue(history.get_current().is_last)
67
# Add page multiple times
68
i = len(history.history)
69
path = Path(history.history[-1].name)
72
self.assertEqual(len(history.history), i)
73
self.assertEqual(history.current, i - 1)
75
# Test dropping forward stack
76
path1 = history.history[10]
77
path2 = history.history[-1]
78
history.set_current(path1)
79
self.assertEqual(history.current, 10)
80
self.assertEqual(len(history.history), len(self.pages))
83
self.assertEqual(history.current, 11)
84
self.assertEqual(len(history.history), 12)
87
old = zim.history.MAX_HISTORY
88
zim.history.MAX_HISTORY = 3
89
for page in self.pages:
91
zim.history.MAX_HISTORY = old
93
self.assertEqual(len(history.history), 3)
66
95
def testUnique(self):
67
96
'''Get recent pages from history'''
68
97
history = History(self.notebook)
101
130
self.assertEqual(history.get_child(Path('Test')), Path('Test:wiki'))
102
131
self.assertEqual(history.get_grandchild(Path('Test')), Path('Test:wiki'))
133
def testMovePage(self):
134
'''Test history is updated for moved pages'''
135
history = History(self.notebook)
136
for page in self.pages:
139
self.assertTrue(Path('Test:wiki') in history.history)
141
history._on_page_moved(Path('Test'), Path('New'), False)
142
self.assertFalse(Path('Test:wiki') in history.history)
143
self.assertTrue(Path('New:wiki') in history.history)
145
history._on_page_moved(Path('New'), Path('Test'), False)
146
self.assertFalse(Path('New:wiki') in history.history)
147
self.assertTrue(Path('Test:wiki') in history.history)
149
self.assertEqual(history.history, self.pages)
104
151
def testDeletedNotInUnique(self):
105
152
'''Test if deleted pages and their children show up in unique history list'''
106
153
history = History(self.notebook)
107
154
for page in self.pages:
108
155
history.append(page)
109
156
for page in self.pages:
159
self.assertEqual(len(history.history), 2 * len(self.pages))
112
161
uniques = list(history.get_unique())
113
162
self.assertEqual(len(uniques), len(self.pages))
115
164
history._on_page_deleted(self.pages[0])
116
165
uniques = list(history.get_unique())
117
166
self.assertTrue(len(uniques) < len(self.pages))
119
169
history._on_page_stored(self.pages[0])
120
170
uniques = list(history.get_unique())
121
self.assertEqual(len(uniques), len(self.pages))
171
self.assertEqual(len(uniques), i + 1)
172
# Not same as len(self.pages) because of deleted children
123
174
for page in self.pages:
124
175
history._on_page_deleted(page)
125
176
uniques = list(history.get_unique())
126
177
self.assertEqual(len(uniques), 0)
127
self.assertTrue(len(list(history.get_history())) > 0)
180
len(list(history.get_history())),
181
2 * len(self.pages) )
183
for page in self.pages:
184
history._on_page_stored(page)
185
uniques = list(history.get_unique())
186
self.assertEqual(len(uniques), len(self.pages))
130
189
def testSerialize(self):
131
190
'''Test parsing the history from the state file'''
132
191
uistate = ConfigDict()