nss: upgrade to release 3.73
[LibreOffice.git] / sc / qa / uitest / calc_tests4 / trackedChanges.py
blob1aef34d7e32784f4646768e719671afb6d52ca02
1 # -*- tab-width: 4; indent-tabs-mode: nil; py-indent-offset: 4 -*-
3 # This Source Code Form is subject to the terms of the Mozilla Public
4 # License, v. 2.0. If a copy of the MPL was not distributed with this
5 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
6 # tests for tracked changes ; tdf912270
8 from uitest.framework import UITestCase
9 from libreoffice.calc.document import get_cell_by_position
10 from libreoffice.uno.propertyvalue import mkPropertyValues
11 from uitest.uihelper.calc import enter_text_to_cell
12 from uitest.uihelper.common import get_state_as_dict
13 import datetime
14 import org.libreoffice.unotest
15 import pathlib
17 def get_url_for_data_file(file_name):
18 return pathlib.Path(org.libreoffice.unotest.makeCopyFromTDOC(file_name)).as_uri()
20 class CalcTrackedChanges(UITestCase):
22 def test_tdf131907(self):
23 calc_doc = self.ui_test.load_file(get_url_for_data_file("tdf131907.ods"))
24 xCalcDoc = self.xUITest.getTopFocusWindow()
25 self.ui_test.execute_modeless_dialog_through_command(".uno:AcceptChanges")
26 xTrackDlg = self.xUITest.getTopFocusWindow()
28 xChangesList = xTrackDlg.getChild("calcchanges")
29 self.assertEqual(1, len(xChangesList.getChildren()))
31 textStart = "Row inserted \tSheet1.1:1\t \t"
32 textEnd = "(Row 1:1 inserted)"
33 self.assertTrue(get_state_as_dict(xChangesList.getChild('0'))["Text"].startswith(textStart))
34 self.assertTrue(get_state_as_dict(xChangesList.getChild('0'))["Text"].endswith(textEnd))
36 #it would crash here
37 xRejBtn = xTrackDlg.getChild("reject")
38 xRejBtn.executeAction("CLICK", tuple())
40 self.assertEqual(2, len(xChangesList.getChildren()))
41 self.assertEqual(get_state_as_dict(xChangesList.getChild('0'))["Text"], "Accepted")
42 self.assertEqual(get_state_as_dict(xChangesList.getChild('1'))["Text"], "Rejected")
44 xCancBtn = xTrackDlg.getChild("close")
45 xCancBtn.executeAction("CLICK", tuple())
47 self.ui_test.close_doc()
49 def test_tdf66263_Protect_Records(self):
50 calc_doc = self.ui_test.create_doc_in_start_center("calc")
51 xCalcDoc = self.xUITest.getTopFocusWindow()
52 gridwin = xCalcDoc.getChild("grid_window")
53 document = self.ui_test.get_component()
54 self.xUITest.executeCommand(".uno:TraceChangeMode")
55 #protect dialog
56 self.ui_test.execute_dialog_through_command(".uno:ProtectTraceChangeMode")
57 xDialog = self.xUITest.getTopFocusWindow()
58 xpass = xDialog.getChild("pass1ed")
59 xpass.executeAction("TYPE", mkPropertyValues({"TEXT":"a"}))
60 xconfirm = xDialog.getChild("confirm1ed")
61 xconfirm.executeAction("TYPE", mkPropertyValues({"TEXT":"a"}))
62 xOkBtn = xDialog.getChild("ok")
63 xOkBtn.executeAction("CLICK", tuple())
64 #verify password
65 self.ui_test.execute_dialog_through_command(".uno:ProtectTraceChangeMode")
66 xDialog = self.xUITest.getTopFocusWindow()
67 xpass = xDialog.getChild("pass1ed")
68 xpass.executeAction("TYPE", mkPropertyValues({"TEXT":"a"}))
69 xOkBtn = xDialog.getChild("ok")
70 xOkBtn.executeAction("CLICK", tuple())
72 self.ui_test.close_doc()
74 def test_tracked_changes_accept(self):
76 calc_doc = self.ui_test.create_doc_in_start_center("calc")
77 xCalcDoc = self.xUITest.getTopFocusWindow()
78 gridwin = xCalcDoc.getChild("grid_window")
79 document = self.ui_test.get_component()
80 #track changes; enter text to cell
81 self.xUITest.executeCommand(".uno:TraceChangeMode")
82 enter_text_to_cell(gridwin, "A1", "Test LibreOffice")
83 enter_text_to_cell(gridwin, "A2", "Test LibreOffice")
84 #accept tracked changes
85 self.ui_test.execute_modeless_dialog_through_command(".uno:AcceptChanges")
86 xTrackDlg = self.xUITest.getTopFocusWindow()
88 xChangesList = xTrackDlg.getChild("calcchanges")
89 self.assertEqual(2, len(xChangesList.getChildren()))
91 textStart = "Changed contents\tSheet1.A1\t \t" + datetime.datetime.now().strftime("%m/%d/%Y")
92 textEnd = "(Cell A1 changed from '<empty>' to 'Test LibreOffice')"
93 textStart2 = "Changed contents\tSheet1.A2\t \t" + datetime.datetime.now().strftime("%m/%d/%Y")
94 textEnd2 = "(Cell A2 changed from '<empty>' to 'Test LibreOffice')"
95 self.assertTrue(get_state_as_dict(xChangesList.getChild('0'))["Text"].startswith(textStart))
96 self.assertTrue(get_state_as_dict(xChangesList.getChild('0'))["Text"].endswith(textEnd))
97 self.assertTrue(get_state_as_dict(xChangesList.getChild('1'))["Text"].startswith(textStart2))
98 self.assertTrue(get_state_as_dict(xChangesList.getChild('1'))["Text"].endswith(textEnd2))
100 xAccBtn = xTrackDlg.getChild("accept")
101 xAccBtn.executeAction("CLICK", tuple())
103 self.assertEqual(2, len(xChangesList.getChildren()))
104 self.assertTrue(get_state_as_dict(xChangesList.getChild('0'))["Text"].startswith(textStart2))
105 self.assertTrue(get_state_as_dict(xChangesList.getChild('0'))["Text"].endswith(textEnd2))
106 self.assertEqual(get_state_as_dict(xChangesList.getChild('1'))["Text"], "Accepted")
108 xAccBtn = xTrackDlg.getChild("accept")
109 xAccBtn.executeAction("CLICK", tuple())
111 self.assertEqual(1, len(xChangesList.getChildren()))
112 self.assertEqual(get_state_as_dict(xChangesList.getChild('0'))["Text"], "Accepted")
113 xChangesList.getChild('0').executeAction("EXPAND", tuple())
115 self.assertEqual(2, len(xChangesList.getChild('0').getChildren()))
117 self.assertTrue(get_state_as_dict(xChangesList.getChild('0').getChild('0'))["Text"].startswith(textStart))
118 self.assertTrue(get_state_as_dict(xChangesList.getChild('0').getChild('0'))["Text"].endswith(textEnd))
119 self.assertTrue(get_state_as_dict(xChangesList.getChild('0').getChild('1'))["Text"].startswith(textStart2))
120 self.assertTrue(get_state_as_dict(xChangesList.getChild('0').getChild('1'))["Text"].endswith(textEnd2))
122 xCancBtn = xTrackDlg.getChild("close")
123 xCancBtn.executeAction("CLICK", tuple())
125 self.assertEqual(get_cell_by_position(document, 0, 0, 0).getString(), "Test LibreOffice")
126 self.ui_test.close_doc()
128 def test_tracked_changes_acceptall(self):
130 calc_doc = self.ui_test.create_doc_in_start_center("calc")
131 xCalcDoc = self.xUITest.getTopFocusWindow()
132 gridwin = xCalcDoc.getChild("grid_window")
133 document = self.ui_test.get_component()
134 #track changes; enter text to cell
135 self.xUITest.executeCommand(".uno:TraceChangeMode")
136 enter_text_to_cell(gridwin, "A1", "Test LibreOffice")
137 enter_text_to_cell(gridwin, "A2", "Test LibreOffice")
138 #accept All tracked changes
139 self.ui_test.execute_modeless_dialog_through_command(".uno:AcceptChanges")
140 xTrackDlg = self.xUITest.getTopFocusWindow()
142 xChangesList = xTrackDlg.getChild("calcchanges")
143 self.assertEqual(2, len(xChangesList.getChildren()))
145 textStart = "Changed contents\tSheet1.A1\t \t" + datetime.datetime.now().strftime("%m/%d/%Y")
146 textEnd = "(Cell A1 changed from '<empty>' to 'Test LibreOffice')"
147 textStart2 = "Changed contents\tSheet1.A2\t \t" + datetime.datetime.now().strftime("%m/%d/%Y")
148 textEnd2 = "(Cell A2 changed from '<empty>' to 'Test LibreOffice')"
149 self.assertTrue(get_state_as_dict(xChangesList.getChild('0'))["Text"].startswith(textStart))
150 self.assertTrue(get_state_as_dict(xChangesList.getChild('0'))["Text"].endswith(textEnd))
151 self.assertTrue(get_state_as_dict(xChangesList.getChild('1'))["Text"].startswith(textStart2))
152 self.assertTrue(get_state_as_dict(xChangesList.getChild('1'))["Text"].endswith(textEnd2))
154 xAccBtn = xTrackDlg.getChild("acceptall")
155 xAccBtn.executeAction("CLICK", tuple())
157 self.assertEqual(1, len(xChangesList.getChildren()))
158 self.assertEqual(get_state_as_dict(xChangesList.getChild('0'))["Text"], "Accepted")
159 xChangesList.getChild('0').executeAction("EXPAND", tuple())
161 self.assertEqual(2, len(xChangesList.getChild('0').getChildren()))
163 self.assertTrue(get_state_as_dict(xChangesList.getChild('0').getChild('0'))["Text"].startswith(textStart))
164 self.assertTrue(get_state_as_dict(xChangesList.getChild('0').getChild('0'))["Text"].endswith(textEnd))
165 self.assertTrue(get_state_as_dict(xChangesList.getChild('0').getChild('1'))["Text"].startswith(textStart2))
166 self.assertTrue(get_state_as_dict(xChangesList.getChild('0').getChild('1'))["Text"].endswith(textEnd2))
168 xCancBtn = xTrackDlg.getChild("close")
169 xCancBtn.executeAction("CLICK", tuple())
171 self.assertEqual(get_cell_by_position(document, 0, 0, 0).getString(), "Test LibreOffice")
172 self.ui_test.close_doc()
174 def test_tracked_changes_reject(self):
176 calc_doc = self.ui_test.create_doc_in_start_center("calc")
177 xCalcDoc = self.xUITest.getTopFocusWindow()
178 gridwin = xCalcDoc.getChild("grid_window")
179 document = self.ui_test.get_component()
180 #track changes; enter text to cell
181 self.xUITest.executeCommand(".uno:TraceChangeMode")
182 enter_text_to_cell(gridwin, "A1", "Test LibreOffice")
183 enter_text_to_cell(gridwin, "A2", "Test LibreOffice")
184 #accept tracked changes
185 self.ui_test.execute_modeless_dialog_through_command(".uno:AcceptChanges")
186 xTrackDlg = self.xUITest.getTopFocusWindow()
188 xChangesList = xTrackDlg.getChild("calcchanges")
189 self.assertEqual(2, len(xChangesList.getChildren()))
191 textStart = "Changed contents\tSheet1.A1\t \t" + datetime.datetime.now().strftime("%m/%d/%Y")
192 textEnd = "(Cell A1 changed from '<empty>' to 'Test LibreOffice')"
193 textStart2 = "Changed contents\tSheet1.A2\t \t" + datetime.datetime.now().strftime("%m/%d/%Y")
194 textEnd2 = "(Cell A2 changed from '<empty>' to 'Test LibreOffice')"
195 self.assertTrue(get_state_as_dict(xChangesList.getChild('0'))["Text"].startswith(textStart))
196 self.assertTrue(get_state_as_dict(xChangesList.getChild('0'))["Text"].endswith(textEnd))
197 self.assertTrue(get_state_as_dict(xChangesList.getChild('1'))["Text"].startswith(textStart2))
198 self.assertTrue(get_state_as_dict(xChangesList.getChild('1'))["Text"].endswith(textEnd2))
200 xRejBtn = xTrackDlg.getChild("reject")
201 xRejBtn.executeAction("CLICK", tuple())
203 self.assertEqual(3, len(xChangesList.getChildren()))
204 self.assertTrue(get_state_as_dict(xChangesList.getChild('0'))["Text"].startswith(textStart2))
205 self.assertTrue(get_state_as_dict(xChangesList.getChild('0'))["Text"].endswith(textEnd2))
206 self.assertEqual(get_state_as_dict(xChangesList.getChild('1'))["Text"], "Accepted")
207 self.assertEqual(get_state_as_dict(xChangesList.getChild('2'))["Text"], "Rejected")
209 xAccBtn = xTrackDlg.getChild("reject")
210 xAccBtn.executeAction("CLICK", tuple())
212 self.assertEqual(2, len(xChangesList.getChildren()))
213 self.assertEqual(get_state_as_dict(xChangesList.getChild('0'))["Text"], "Accepted")
214 self.assertEqual(get_state_as_dict(xChangesList.getChild('1'))["Text"], "Rejected")
216 xChangesList.getChild('0').executeAction("EXPAND", tuple())
217 self.assertEqual(2, len(xChangesList.getChild('0').getChildren()))
219 textEnd3 = "(Cell A1 changed from 'Test LibreOffice' to '<empty>')"
220 textEnd4 = "(Cell A2 changed from 'Test LibreOffice' to '<empty>')"
221 self.assertTrue(get_state_as_dict(xChangesList.getChild('0').getChild('0'))["Text"].startswith(textStart))
222 self.assertTrue(get_state_as_dict(xChangesList.getChild('0').getChild('0'))["Text"].endswith(textEnd3))
223 self.assertTrue(get_state_as_dict(xChangesList.getChild('0').getChild('1'))["Text"].startswith(textStart2))
224 self.assertTrue(get_state_as_dict(xChangesList.getChild('0').getChild('1'))["Text"].endswith(textEnd4))
226 xChangesList.getChild('1').executeAction("EXPAND", tuple())
227 self.assertEqual(2, len(xChangesList.getChild('1').getChildren()))
229 self.assertTrue(get_state_as_dict(xChangesList.getChild('1').getChild('0'))["Text"].startswith(textStart))
230 self.assertTrue(get_state_as_dict(xChangesList.getChild('1').getChild('0'))["Text"].endswith(textEnd))
231 self.assertTrue(get_state_as_dict(xChangesList.getChild('1').getChild('1'))["Text"].startswith(textStart2))
232 self.assertTrue(get_state_as_dict(xChangesList.getChild('1').getChild('1'))["Text"].endswith(textEnd2))
234 xCancBtn = xTrackDlg.getChild("close")
235 xCancBtn.executeAction("CLICK", tuple())
237 self.assertEqual(get_cell_by_position(document, 0, 0, 0).getString(), "")
238 self.ui_test.close_doc()
240 def test_tracked_changes_rejectall(self):
242 calc_doc = self.ui_test.create_doc_in_start_center("calc")
243 xCalcDoc = self.xUITest.getTopFocusWindow()
244 gridwin = xCalcDoc.getChild("grid_window")
245 document = self.ui_test.get_component()
246 #track changes; enter text to cell
247 self.xUITest.executeCommand(".uno:TraceChangeMode")
248 enter_text_to_cell(gridwin, "A1", "Test LibreOffice")
249 enter_text_to_cell(gridwin, "A2", "Test LibreOffice")
250 #accept tracked changes
251 self.ui_test.execute_modeless_dialog_through_command(".uno:AcceptChanges")
252 xTrackDlg = self.xUITest.getTopFocusWindow()
254 xChangesList = xTrackDlg.getChild("calcchanges")
255 self.assertEqual(2, len(xChangesList.getChildren()))
257 textStart = "Changed contents\tSheet1.A1\t \t" + datetime.datetime.now().strftime("%m/%d/%Y")
258 textEnd = "(Cell A1 changed from '<empty>' to 'Test LibreOffice')"
259 textStart2 = "Changed contents\tSheet1.A2\t \t" + datetime.datetime.now().strftime("%m/%d/%Y")
260 textEnd2 = "(Cell A2 changed from '<empty>' to 'Test LibreOffice')"
261 self.assertTrue(get_state_as_dict(xChangesList.getChild('0'))["Text"].startswith(textStart))
262 self.assertTrue(get_state_as_dict(xChangesList.getChild('0'))["Text"].endswith(textEnd))
263 self.assertTrue(get_state_as_dict(xChangesList.getChild('1'))["Text"].startswith(textStart2))
264 self.assertTrue(get_state_as_dict(xChangesList.getChild('1'))["Text"].endswith(textEnd2))
266 xAccBtn = xTrackDlg.getChild("rejectall")
267 xAccBtn.executeAction("CLICK", tuple())
269 self.assertEqual(2, len(xChangesList.getChildren()))
270 self.assertEqual(get_state_as_dict(xChangesList.getChild('0'))["Text"], "Accepted")
271 self.assertEqual(get_state_as_dict(xChangesList.getChild('1'))["Text"], "Rejected")
273 xChangesList.getChild('0').executeAction("EXPAND", tuple())
274 self.assertEqual(2, len(xChangesList.getChild('0').getChildren()))
276 textEnd3 = "(Cell A1 changed from 'Test LibreOffice' to '<empty>')"
277 textEnd4 = "(Cell A2 changed from 'Test LibreOffice' to '<empty>')"
278 self.assertTrue(get_state_as_dict(xChangesList.getChild('0').getChild('0'))["Text"].startswith(textStart2))
279 self.assertTrue(get_state_as_dict(xChangesList.getChild('0').getChild('0'))["Text"].endswith(textEnd4))
280 self.assertTrue(get_state_as_dict(xChangesList.getChild('0').getChild('1'))["Text"].startswith(textStart))
281 self.assertTrue(get_state_as_dict(xChangesList.getChild('0').getChild('1'))["Text"].endswith(textEnd3))
283 xChangesList.getChild('1').executeAction("EXPAND", tuple())
284 self.assertEqual(2, len(xChangesList.getChild('1').getChildren()))
286 self.assertTrue(get_state_as_dict(xChangesList.getChild('1').getChild('0'))["Text"].startswith(textStart))
287 self.assertTrue(get_state_as_dict(xChangesList.getChild('1').getChild('0'))["Text"].endswith(textEnd))
288 self.assertTrue(get_state_as_dict(xChangesList.getChild('1').getChild('1'))["Text"].startswith(textStart2))
289 self.assertTrue(get_state_as_dict(xChangesList.getChild('1').getChild('1'))["Text"].endswith(textEnd2))
291 xCancBtn = xTrackDlg.getChild("close")
292 xCancBtn.executeAction("CLICK", tuple())
294 self.assertEqual(get_cell_by_position(document, 0, 0, 0).getString(), "")
295 self.ui_test.close_doc()
297 def test_tdf136062(self):
299 self.ui_test.load_file(get_url_for_data_file("tdf136062.ods"))
301 self.xUITest.getTopFocusWindow()
303 self.ui_test.execute_modeless_dialog_through_command(".uno:AcceptChanges")
304 xTrackDlg = self.xUITest.getTopFocusWindow()
306 xChangesList = xTrackDlg.getChild("calcchanges")
307 self.assertEqual(1, len(xChangesList.getChildren()))
309 xRejectAllBtn = xTrackDlg.getChild("rejectall")
310 xRejectBtn = xTrackDlg.getChild("reject")
311 xAcceptAllBtn = xTrackDlg.getChild("acceptall")
312 xAcceptBtn = xTrackDlg.getChild("accept")
314 # Without the fix in place, it would have failed with
315 # AssertionError: 'R~eject All' != 'R~eject All/Clear formatting'
316 self.assertEqual('R~eject All', get_state_as_dict(xRejectAllBtn)['Text'])
317 self.assertEqual('~Reject', get_state_as_dict(xRejectBtn)['Text'])
318 self.assertEqual('A~ccept All', get_state_as_dict(xAcceptAllBtn)['Text'])
319 self.assertEqual('~Accept', get_state_as_dict(xAcceptBtn)['Text'])
321 xCancBtn = xTrackDlg.getChild("close")
322 xCancBtn.executeAction("CLICK", tuple())
324 self.ui_test.close_doc()
326 # vim: set shiftwidth=4 softtabstop=4 expandtab: