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
        addZWikiPage(self.folder, 'test_oldtype', 'Test Title')
        # self.folder.invokeFactory('Wiki Page', 'test_oldtype')

        #A direct assignment doesn't work here, you have to use the setter or
        #the value will come out blank.
        #The field migrator uses obj.getRawFieldName()
        self.folder.test_oldtype.setText('Some random wiki text\n\n * With some bullets\n')

        #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.test_oldtype
        
        ###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.test_oldtype

        #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')


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

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

    return suite