Skip to content

Commit 96fb28b

Browse files
author
Niklaus Johner
committed
Add test for merging repofolder into another one.
1 parent f1a969b commit 96fb28b

File tree

2 files changed

+98
-0
lines changed

2 files changed

+98
-0
lines changed
Binary file not shown.

opengever/bundle/tests/test_os_migration.py

Lines changed: 98 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -130,6 +130,7 @@ def test_repository_excel_analyser_os_test_branch_and_leaf_creation(self):
130130
self.assertDictEqual(
131131
{'is_valid': True,
132132
'leaf_node_violated': False,
133+
'merge_into': None,
133134
'new_item': OperationItem(1, u"F\xfchrung und Koordination", ""),
134135
'new_number': None,
135136
'new_parent_position': None,
@@ -147,6 +148,7 @@ def test_repository_excel_analyser_os_test_branch_and_leaf_creation(self):
147148
self.assertDictEqual(
148149
{'is_valid': True,
149150
'leaf_node_violated': False,
151+
'merge_into': None,
150152
'new_item': OperationItem(0, u'Allgemeines und \xdcbergreifendes'),
151153
'new_number': '0',
152154
'new_parent_position': None,
@@ -167,6 +169,7 @@ def test_repository_excel_analyser_os_test_branch_and_leaf_creation(self):
167169
self.assertDictEqual(
168170
{'is_valid': True,
169171
'leaf_node_violated': False,
172+
'merge_into': None,
170173
'new_item': OperationItem(4, 'Created branch', 'comment 1'),
171174
'new_number': None,
172175
'new_parent_position': None,
@@ -192,6 +195,7 @@ def test_repository_excel_analyser_os_test_branch_and_leaf_creation(self):
192195
self.assertDictEqual(
193196
{'is_valid': True,
194197
'leaf_node_violated': False,
198+
'merge_into': None,
195199
'new_item': OperationItem(41, 'created leaf', 'comment 2'),
196200
'new_number': None,
197201
'new_parent_position': None,
@@ -218,6 +222,7 @@ def test_repository_excel_analyser_os_test_branch_and_leaf_creation(self):
218222
self.assertDictEqual(
219223
{'is_valid': True,
220224
'leaf_node_violated': False,
225+
'merge_into': None,
221226
'new_item': OperationItem(42, 'Moved leaf', 'comment for moved one'),
222227
'new_number': '2',
223228
'new_parent_position': '4',
@@ -244,6 +249,7 @@ def test_repository_excel_analyser_os_test_migration(self):
244249
self.assertDictEqual(
245250
{'is_valid': True,
246251
'leaf_node_violated': False,
252+
'merge_into': None,
247253
'new_item': OperationItem(1, u"F\xfchrung und Koordination", ""),
248254
'new_number': None,
249255
'new_parent_position': None,
@@ -261,6 +267,7 @@ def test_repository_excel_analyser_os_test_migration(self):
261267
self.assertDictEqual(
262268
{'is_valid': True,
263269
'leaf_node_violated': False,
270+
'merge_into': None,
264271
'new_item': OperationItem(0, u'Branch with new number', ''),
265272
'new_number': '0',
266273
'new_parent_position': None,
@@ -280,6 +287,7 @@ def test_repository_excel_analyser_os_test_migration(self):
280287
self.assertDictEqual(
281288
{'is_valid': True,
282289
'leaf_node_violated': False,
290+
'merge_into': None,
283291
'new_item': OperationItem('01', 'created leaf in branch with new number', 'comment 1'),
284292
'new_number': None,
285293
'new_parent_position': None,
@@ -305,6 +313,7 @@ def test_repository_excel_analyser_os_test_migration(self):
305313
self.assertDictEqual(
306314
{'is_valid': True,
307315
'leaf_node_violated': False,
316+
'merge_into': None,
308317
'new_item': OperationItem(12, 'created leaf in existing branch', 'comment 2'),
309318
'new_number': None,
310319
'new_parent_position': None,
@@ -328,6 +337,7 @@ def test_repository_excel_analyser_os_test_migration(self):
328337
self.assertDictEqual(
329338
{'is_valid': True,
330339
'leaf_node_violated': False,
340+
'merge_into': None,
331341
'new_item': OperationItem('02', 'Moved leaf in branch with new number', 'comment for moved one'),
332342
'new_number': '2',
333343
'new_parent_position': '0',
@@ -360,6 +370,7 @@ def test_repository_excel_analyser_os_test_invalid(self):
360370
self.assertEqual(
361371
{'is_valid': False,
362372
'leaf_node_violated': True,
373+
'merge_into': None,
363374
'new_item': OperationItem('111', u"Rechnungspr\xfcfungskommission", None),
364375
'new_number': '1',
365376
'new_parent_position': '11',
@@ -378,6 +389,7 @@ def test_repository_excel_analyser_os_test_invalid(self):
378389
self.assertEqual(
379390
{'is_valid': False,
380391
'leaf_node_violated': False,
392+
'merge_into': None,
381393
'new_item': OperationItem('41', u"Spinn\xe4nnetzregistrar", None),
382394
'new_number': '1',
383395
'new_parent_position': '4',
@@ -399,6 +411,7 @@ def test_repository_excel_analyser_os_test_invalid(self):
399411
self.assertEqual(
400412
{'is_valid': False,
401413
'leaf_node_violated': False,
414+
'merge_into': None,
402415
'new_item': OperationItem('51', 'New leaf', None),
403416
'new_number': None,
404417
'new_parent_position': None,
@@ -426,6 +439,7 @@ def test_repository_excel_analyser_os_test_invalid(self):
426439
self.assertEqual(
427440
{'is_valid': False,
428441
'leaf_node_violated': True,
442+
'merge_into': None,
429443
'new_item': OperationItem('112', 'Second new leaf', None),
430444
'new_number': None,
431445
'new_parent_position': None,
@@ -452,6 +466,7 @@ def test_repository_excel_analyser_os_test_invalid(self):
452466
self.assertEqual(
453467
{'is_valid': False,
454468
'leaf_node_violated': False,
469+
'merge_into': None,
455470
'new_item': OperationItem('1211', 'fourth level', None),
456471
'new_number': None,
457472
'new_parent_position': None,
@@ -599,6 +614,7 @@ def test_repository_migrator_change_description(self):
599614
self.assertEqual(
600615
{'is_valid': True,
601616
'leaf_node_violated': False,
617+
'merge_into': None,
602618
'new_item': OperationItem(1, u"F\xfchrung", "New description"),
603619
'new_number': None,
604620
'new_parent_position': None,
@@ -632,6 +648,7 @@ def test_repository_migrator_change_refnum(self):
632648
self.assertEqual(
633649
{'is_valid': True,
634650
'leaf_node_violated': False,
651+
'merge_into': None,
635652
'new_item': OperationItem(0, u"F\xfchrung", u"Alles zum Thema F\xfchrung."),
636653
'new_number': '0',
637654
'new_parent_position': None,
@@ -648,6 +665,7 @@ def test_repository_migrator_change_refnum(self):
648665
self.assertEqual(
649666
{'is_valid': True,
650667
'leaf_node_violated': False,
668+
'merge_into': None,
651669
'new_item': OperationItem('01', u'Vertr\xe4ge und Vereinbarungen', None),
652670
'new_number': None,
653671
'new_parent_position': None,
@@ -693,6 +711,7 @@ def test_repository_migrator_change_title(self):
693711
self.assertEqual(
694712
{'is_valid': True,
695713
'leaf_node_violated': False,
714+
'merge_into': None,
696715
'new_item': OperationItem(1, "New title", u"Alles zum Thema F\xfchrung."),
697716
'new_number': None,
698717
'new_parent_position': None,
@@ -744,6 +763,7 @@ def test_repository_migrator_move(self):
744763
self.assertEqual(
745764
{'is_valid': True,
746765
'leaf_node_violated': False,
766+
'merge_into': None,
747767
'new_item': OperationItem(21, u'Vertr\xe4ge und Vereinbarungen', None),
748768
'new_number': '1',
749769
'new_parent_position': '2',
@@ -799,6 +819,7 @@ def test_repository_migrator_create_leaf(self):
799819
self.assertEqual(
800820
{'is_valid': True,
801821
'leaf_node_violated': False,
822+
'merge_into': None,
802823
'new_item': OperationItem(12, u'New leaf', 'New description'),
803824
'new_number': None,
804825
'new_parent_position': None,
@@ -856,6 +877,7 @@ def test_repository_migrator_create_branch_and_leaf_in_reporoot(self):
856877
self.assertEqual(
857878
{'is_valid': True,
858879
'leaf_node_violated': False,
880+
'merge_into': None,
859881
'new_item': OperationItem(4, u'New branch', 'New description'),
860882
'new_number': None,
861883
'new_parent_position': None,
@@ -879,6 +901,7 @@ def test_repository_migrator_create_branch_and_leaf_in_reporoot(self):
879901
self.assertEqual(
880902
{'is_valid': True,
881903
'leaf_node_violated': False,
904+
'merge_into': None,
882905
'new_item': OperationItem(41, u'New leaf', 'New leaf description'),
883906
'new_number': None,
884907
'new_parent_position': None,
@@ -947,6 +970,7 @@ def test_repository_migrator_create_in_moved_repofolder(self):
947970
self.assertEqual(
948971
{'is_valid': True,
949972
'leaf_node_violated': False,
973+
'merge_into': None,
950974
'new_item': OperationItem(12, u"Rechnungspr\xfcfungskommission", None),
951975
'new_number': '2',
952976
'new_parent_position': '1',
@@ -965,6 +989,7 @@ def test_repository_migrator_create_in_moved_repofolder(self):
965989
self.assertEqual(
966990
{'is_valid': True,
967991
'leaf_node_violated': False,
992+
'merge_into': None,
968993
'new_item': OperationItem(121, u'New leaf', 'New description'),
969994
'new_number': None,
970995
'new_parent_position': None,
@@ -1041,6 +1066,7 @@ def test_repository_migrator_move_into_created_repofolder(self):
10411066
self.assertEqual(
10421067
{'is_valid': True,
10431068
'leaf_node_violated': False,
1069+
'merge_into': None,
10441070
'new_item': OperationItem(4, u'New branch', 'New description'),
10451071
'new_number': None,
10461072
'new_parent_position': None,
@@ -1064,6 +1090,7 @@ def test_repository_migrator_move_into_created_repofolder(self):
10641090
self.assertEqual(
10651091
{'is_valid': True,
10661092
'leaf_node_violated': False,
1093+
'merge_into': None,
10671094
'new_item': OperationItem(41, u'Vertr\xe4ge und Vereinbarungen', None),
10681095
'new_number': '1',
10691096
'new_parent_position': '4',
@@ -1129,6 +1156,7 @@ def test_repository_migrator_move_into_repository_root(self):
11291156
self.assertEqual(
11301157
{'is_valid': True,
11311158
'leaf_node_violated': False,
1159+
'merge_into': None,
11321160
'new_item': OperationItem(4, u'Vertr\xe4ge und Vereinbarungen', None),
11331161
'new_number': '4',
11341162
'new_parent_position': '',
@@ -1203,6 +1231,7 @@ def test_repository_migrator_move_into_moved_repofolder(self):
12031231
self.assertEqual(
12041232
{'is_valid': True,
12051233
'leaf_node_violated': False,
1234+
'merge_into': None,
12061235
'new_item': OperationItem(12, u"Rechnungspr\xfcfungskommission", None),
12071236
'new_number': '2',
12081237
'new_parent_position': '1',
@@ -1219,6 +1248,7 @@ def test_repository_migrator_move_into_moved_repofolder(self):
12191248
self.assertDictEqual(
12201249
{'is_valid': True,
12211250
'leaf_node_violated': False,
1251+
'merge_into': None,
12221252
'new_item': OperationItem(121, u'Vertr\xe4ge und Vereinbarungen', ''),
12231253
'new_number': '1',
12241254
'new_parent_position': '12',
@@ -1413,6 +1443,7 @@ def test_repository_migrator_create_sets_permissions_correctly(self):
14131443
self.assertEqual(
14141444
{'is_valid': True,
14151445
'leaf_node_violated': False,
1446+
'merge_into': None,
14161447
'new_item': OperationItem(12, u'New leaf', 'New description'),
14171448
'new_number': None,
14181449
'new_parent_position': None,
@@ -1464,6 +1495,73 @@ def test_repository_migrator_create_sets_permissions_correctly(self):
14641495
'nicole.kohler': ['Owner']},
14651496
self.branch_repofolder.__ac_local_roles__)
14661497

1498+
def test_repository_migrator_merge_into_existing_repofolder(self):
1499+
self.login(self.manager)
1500+
migration_file = resource_filename('opengever.bundle.tests', 'assets/os_migration/os_test_merge_into_existing_repofolder.xlsx')
1501+
analysis_file = resource_filename('opengever.bundle.tests', 'assets/os_migration/test_analysis.xlsx')
1502+
analyser = RepositoryExcelAnalyser(migration_file, analysis_file)
1503+
analyser.analyse()
1504+
1505+
# We nerge eaf_repofolder into empty_repofolder
1506+
changed_rows = self.get_changed_rows(analyser.analysed_rows)
1507+
self.assertEqual(1, len(changed_rows))
1508+
1509+
self.assertEqual(
1510+
{'is_valid': True,
1511+
'leaf_node_violated': False,
1512+
'merge_into': ('2', self.empty_repofolder.UID()),
1513+
'new_item': OperationItem(2, u'Vertr\xe4ge und Vereinbarungen', None),
1514+
'new_number': None,
1515+
'new_parent_position': None,
1516+
'new_parent_uid': None,
1517+
'new_position_guid': None,
1518+
'new_position_parent_guid': None,
1519+
'new_position_parent_position': None,
1520+
'new_title': None,
1521+
'old_item': OperationItem(11, u'Vertr\xe4ge und Vereinbarungen', None),
1522+
'permissions': None,
1523+
'repository_depth_violated': False,
1524+
'uid': self.leaf_repofolder.UID()},
1525+
changed_rows[0])
1526+
1527+
migrator = RepositoryMigrator(analyser.analysed_rows)
1528+
self.assertEqual(1, len(migrator.items_to_merge()))
1529+
self.assertEqual(changed_rows, migrator.items_to_merge())
1530+
1531+
directly_contained = self.leaf_repofolder.contentValues()
1532+
contained = self.portal.portal_catalog.unrestrictedSearchResults(
1533+
path={'query': self.leaf_repofolder.absolute_url_path(),
1534+
'exclude_root': True})
1535+
contained_uids = [brain.UID for brain in contained]
1536+
self.assertEqual(16, len(directly_contained))
1537+
self.assertEqual(59, len(contained_uids))
1538+
1539+
with self.observe_children(self.branch_repofolder) as branch_children,\
1540+
self.observe_children(self.empty_repofolder) as children:
1541+
migrator.run()
1542+
1543+
# check that branch_repofolder was deleted
1544+
self.assertEqual(1, len(branch_children['removed']))
1545+
1546+
# check that the content of the leaf_folder was moved
1547+
self.assertEqual(16, len(children['added']))
1548+
self.assertItemsEqual(directly_contained, children['added'])
1549+
1550+
# We check that new_branch and all contained objects were updated
1551+
# correctly
1552+
contained_brains = self.portal.portal_catalog.unrestrictedSearchResults(
1553+
path={'query': self.empty_repofolder.absolute_url_path(),
1554+
'exclude_root': True})
1555+
1556+
self.assertItemsEqual([brain.UID for brain in contained_brains],
1557+
contained_uids)
1558+
1559+
for brain in contained_brains:
1560+
obj = brain.getObject()
1561+
self.assertObjectConsistency(
1562+
obj, parent_path=self.empty_repofolder.absolute_url_path(),
1563+
parent_refnum='Client1 2')
1564+
14671565

14681566
class TestOSMigrationValidation(IntegrationTestCase, OSMigrationTestMixin):
14691567

0 commit comments

Comments
 (0)