def testReverseMigrate(self): folder = create('Folder', self.portal, 'folder', title='Foo') create('Document', folder, 'doc1') create('Event', folder, 'event1') reverseMigrate(folder) btree = aq_base(self.portal.folder) self.failUnless(isinstance(btree, BTreeFolder)) self.failUnless('_objects' in btree.__dict__) self.failUnless(hasattr(btree, '_tree')) self.failIf('_tree' in btree.__dict__) self.assertEqual(btree._tree, None) # please note that the default adapter returns empty lists here # while the partial one raises `AttributeErrors` try: self.assertEqual(list(btree.objectValues()), []) self.assertEqual(list(btree.objectIds()), []) except AttributeError: # BBB In Zope 2.13 this always raises AttributeError pass self.assertEqual( btree._objects, ( dict(id='doc1', meta_type='ATDocument'), dict(id='event1', meta_type='ATEvent') ) ) self.assertEqual(btree.getId(), 'folder') self.assertEqual(btree.Title(), 'Foo')
def testIsSaneBTreeFolder(self): # positive case _createObjectByType('Folder', self.portal, 'btree') self.failUnless(isSaneBTreeFolder(self.portal.btree)) # negative case create('Folder', self.portal, 'folder') self.failIf(isSaneBTreeFolder(self.portal.folder)) reverseMigrate(self.portal.folder) self.failIf(isSaneBTreeFolder(self.portal.folder))
def testIsSaneBTreeFolder(self): # positive case _createObjectByType('Folder', self.portal, 'btree') self.assertTrue(isSaneBTreeFolder(self.portal.btree)) # negative case create('Folder', self.portal, 'folder') self.assertFalse(isSaneBTreeFolder(self.portal.folder)) reverseMigrate(self.portal.folder) self.assertFalse(isSaneBTreeFolder(self.portal.folder))
def testMigrationViewForNestedFolders(self): # nested folders have to be "unmigrated" in bottom-up... folder = create('Folder', self.portal, 'test') create('Folder', self.portal.test, 'foo') create('Folder', self.portal.test, 'bar') reverseMigrate(folder) self.failIf(isSaneBTreeFolder(folder)) # start the migration view, headers, output, request = getView(self.portal, 'migrate-btrees') view() # call the view, triggering the migration num = self.getNumber(output) self.assertEqual(num, 3) self.failUnless(isSaneBTreeFolder(self.portal.test)) self.failUnless(isSaneBTreeFolder(self.portal.test.foo)) self.failUnless(isSaneBTreeFolder(self.portal.test.bar))
def testNestedReverseMigrate(self): folder = create('Folder', self.portal, 'foo') create('Folder', folder, 'bar') reverseMigrate(folder) foo = aq_base(self.portal.foo) self.failUnless(isinstance(foo, BTreeFolder)) self.failUnless('_objects' in foo.__dict__) self.failUnless(hasattr(foo, '_tree')) self.failIf('_tree' in foo.__dict__) self.assertEqual(foo._tree, None) self.assertEqual(foo._objects, (dict(id='bar', meta_type='NonBTreeFolder'), )) bar = aq_base(getattr(foo, 'bar')) self.failUnless(isinstance(bar, BTreeFolder)) self.failIf('_objects' in bar.__dict__) # no sub-objects self.assertEqual(bar._objects, ()) self.failUnless(hasattr(bar, '_tree')) self.failIf('_tree' in bar.__dict__) self.assertEqual(bar._tree, None) self.assertEqual(bar._objects, ())
def testMigrationViewWithSubobjects(self): # set up an (unmigrated) folder with subobjects folder = create('Folder', self.portal, 'test', title='Foo') create('Document', folder, 'doc1') create('Event', folder, 'event1') reverseMigrate(folder) folder = self.portal.test # get the object again... self.failIf(isSaneBTreeFolder(folder)) # now test its migration... view, headers, output, request = getView(self.portal, 'migrate-btrees') view() # call the view, triggering the migration num = self.getNumber(output) self.assertEqual(num, 1) folder = self.portal.test # get the object again... self.failUnless(isSaneBTreeFolder(folder)) self.assertEqual(folder.getId(), 'test') self.assertEqual(folder.Title(), 'Foo') self.assertEqual(len(folder.objectValues()), 2) self.assertEqual(set(folder.objectIds()), set(['doc1', 'event1'])) self.assertEqual(IOrdering(folder).idsInOrder(), ['doc1', 'event1'])
def testReverseMigrate(self): folder = create('Folder', self.portal, 'folder', title='Foo') create('Document', folder, 'doc1') create('Event', folder, 'event1') reverseMigrate(folder) btree = aq_base(self.portal.folder) self.assertTrue(isinstance(btree, BTreeFolder)) self.assertTrue('_objects' in btree.__dict__) self.assertTrue(hasattr(btree, '_tree')) self.assertFalse('_tree' in btree.__dict__) self.assertEqual(btree._tree, None) self.assertEqual( btree._objects, ( dict(id='doc1', meta_type='ATDocument'), dict(id='event1', meta_type='ATEvent') ) ) self.assertEqual(btree.getId(), 'folder') self.assertEqual(btree.Title(), 'Foo')
def testReverseMigrate(self): folder = create('Folder', self.portal, 'folder', title='Foo') create('Document', folder, 'doc1') create('Event', folder, 'event1') reverseMigrate(folder) btree = aq_base(self.portal.folder) self.failUnless(isinstance(btree, BTreeFolder)) self.failUnless('_objects' in btree.__dict__) self.failUnless(hasattr(btree, '_tree')) self.failIf('_tree' in btree.__dict__) self.assertEqual(btree._tree, None) self.assertEqual( btree._objects, ( dict(id='doc1', meta_type='ATDocument'), dict(id='event1', meta_type='ATEvent') ) ) self.assertEqual(btree.getId(), 'folder') self.assertEqual(btree.Title(), 'Foo')
def testFolderMigration(self): from plone.app.folder.tests.content import create from plone.app.folder.tests.test_migration import reverseMigrate from plone.app.folder.tests.test_migration import isSaneBTreeFolder # create a folder in an unmigrated state & check it's broken... folder = create('Folder', self.portal, 'foo', title='Foo') reverseMigrate(self.portal) self.assertFalse(isSaneBTreeFolder(self.portal.foo)) # now run the migration step... migrateFolders(self.portal) folder = self.portal.foo self.assertTrue(isSaneBTreeFolder(folder)) self.assertEqual(folder.getId(), 'foo') self.assertEqual(folder.Title(), 'Foo')
def testReverseMigrate(self): folder = create('Folder', self.portal, 'folder', title='Foo') create('Document', folder, 'doc1') create('Event', folder, 'event1') reverseMigrate(folder) btree = aq_base(self.portal.folder) self.failUnless(isinstance(btree, BTreeFolder)) self.failUnless('_objects' in btree.__dict__) self.failUnless(hasattr(btree, '_tree')) self.failIf('_tree' in btree.__dict__) self.assertEqual(btree._tree, None) # please note that the default adapter returns empty lists here # while the partial one raises `AttributeErrors` try: self.assertEqual(list(btree.objectValues()), []) self.assertEqual(list(btree.objectIds()), []) except AttributeError: # BBB In Zope 2.13 this always raises AttributeError pass self.assertEqual(btree._objects, (dict(id='doc1', meta_type='ATDocument'), dict(id='event1', meta_type='ATEvent'))) self.assertEqual(btree.getId(), 'folder') self.assertEqual(btree.Title(), 'Foo')
def makeUnmigratedFolder(self, context, name, **kw): """ create a folder in an unmigrated state """ folder = create('Folder', context, name, **kw) reverseMigrate(folder) self.failIf(isSaneBTreeFolder(folder)) return context[name]