Newer
Older
floop.migration / floop / migration / tests / test_migration.py
import transaction
from floop.migration.migrate import migrate
from floop.migration.tests.base import MigrationTestCase
from Products.ZWiki import addZWikiPage

class TestThisMigration(MigrationTestCase):
    """Test the migration from oldtype to newtype
    """
    def afterSetUp(self):
        #Create an object to migrate
        self.membership = self.portal.portal_membership
        self.membership.addMember('new_owner', 'secret', ['Member'], [])
        self.folder.manage_addProduct['ZWiki'].manage_addZWikiPage('TestPage')
        self.folder.TestPage.setText('Some random wiki text\n\n * With some bullets\n')
        self.folder.TestPage.creator = 'new_owner'
        #Need this to avoid copy errors
        transaction.savepoint(optimistic=True)


    def testItemMigrated(self):
        #portal_type and meta_type should be of type newtype
        oldItem = self.folder.TestPage
        
        ###Before the migration
        self.assertEqual(oldItem.portal_type, "Wiki Page",
                         "oldItem.portal_type was %s, but should have been blah" %
                         oldItem.portal_type)
        self.assertEqual(oldItem.meta_type, "ZWiki Page",
                         "oldItem.meta_type was %s, but should have been blah" %
                         oldItem.meta_type)

        ###Run the migration
        old = migrate(self.portal)

        ###After the migration
        #Recopy the item, the old object held on to that old type info
        newItem = self.folder.TestPage

        #The item should now have the new types
        self.assertEqual(newItem.portal_type, "Document",
                         "newItem.portal_type was %s, but should have been blah" %
                         newItem.portal_type)
        self.assertEqual(newItem.meta_type, "ATDocument",
                         "newItem.meta_type was %s, but should have been blah" %
                         newItem.meta_type)

        #Make sure the field values transferred to the new fields
#        import pdb; pdb.set_trace()
        self.assertEqual(newItem.getField('text').getContentType(newItem), 'text/structured')
        self.assertEqual(newItem.getText(), '<h2>Some random wiki text</h2>\n\n<ul>\n<li>With some bullets</li>\n\n</ul>\n',
                         'text field did not transfer')
        self.assertEqual(newItem.Creator(), 'new_owner', 'Owner did not transfer.')


def test_suite():
    from unittest import TestSuite
    from unittest import makeSuite

    suite = TestSuite()
    suite.addTest(makeSuite(TestThisMigration)) #Class from above

    return suite