def test_upgrade_step_2(self):

        event = self.portal["dummy_2"]

        # Old schema. Values as expected, storage is AnnotationStorage
        self.assertTrue(event.getTimezone() == "Europe/Vienna")
        self.assertTrue(event.getRecurrence() == "RRULE:FREQ=DAILY;COUNT=3")
        self.assertTrue(isinstance(event.getField("timezone").storage, atapi.AnnotationStorage))
        self.assertTrue(isinstance(event.getField("recurrence").storage, atapi.AnnotationStorage))

        schema = event.schema
        schema.addField(atapi.StringField("timezone", widget=atapi.StringWidget()))
        schema.addField(atapi.StringField("recurrence", widget=atapi.StringWidget()))

        # New schema before upgrade. Empty fields, storage is AttributeStorage
        self.assertTrue(event.getTimezone() == "")
        self.assertTrue(event.getRecurrence() == "")
        self.assertTrue(isinstance(event.getField("timezone").storage, atapi.AttributeStorage))
        self.assertTrue(isinstance(event.getField("recurrence").storage, atapi.AttributeStorage))

        # Upgrade!
        upgrade_step_2(self.portal)

        # New schema after upgrade. Values as expected, storage is
        # AttributeStorage
        self.assertTrue(event.getTimezone() == "Europe/Vienna")
        self.assertTrue(event.getRecurrence() == "RRULE:FREQ=DAILY;COUNT=3")
        self.assertTrue(isinstance(event.getField("timezone").storage, atapi.AttributeStorage))
        self.assertTrue(isinstance(event.getField("recurrence").storage, atapi.AttributeStorage))
    def test_upgrade_step_2(self):
        _dummy_2 = mkDummyInContext(MockATEvent_2, oid='dummy_2',
                                    context=self.portal,
                                    schema=MockSchema)
        _dummy_2.title = 'Baz'
        _dummy_2.setStartDate(DateTime())
        _dummy_2.setEndDate(DateTime())
        _dummy_2.setTimezone("Europe/Vienna")
        _dummy_2.setRecurrence("RRULE:FREQ=DAILY;COUNT=3")
        _dummy_2.reindexObject()

        event = self.portal['dummy_2']

        # Old schema. Values as expected, storage is AnnotationStorage
        self.assertTrue(event.getTimezone() == 'Europe/Vienna')
        self.assertTrue(event.getRecurrence() == 'RRULE:FREQ=DAILY;COUNT=3')
        self.assertTrue(isinstance(event.getField('timezone').storage,
                                   atapi.AnnotationStorage))
        self.assertTrue(isinstance(event.getField('recurrence').storage,
                                   atapi.AnnotationStorage))

        schema = event.schema
        schema.addField(
            atapi.StringField('timezone',
                widget=atapi.StringWidget(),
            )
        )
        schema.addField(
            atapi.StringField('recurrence',
                widget=atapi.StringWidget(),
            )
        )

        # New schema before upgrade. Empty fields, storage is AttributeStorage
        self.assertTrue(event.getTimezone() == '')
        self.assertTrue(event.getRecurrence() == '')
        self.assertTrue(isinstance(event.getField('timezone').storage,
                                   atapi.AttributeStorage))
        self.assertTrue(isinstance(event.getField('recurrence').storage,
                                   atapi.AttributeStorage))

        # Upgrade!
        upgrade_step_2(self.portal)

        # New schema after upgrade. Values as expected, storage is
        # AttributeStorage
        self.assertTrue(event.getTimezone() == 'Europe/Vienna')
        self.assertTrue(event.getRecurrence() == 'RRULE:FREQ=DAILY;COUNT=3')
        self.assertTrue(isinstance(event.getField('timezone').storage,
                                   atapi.AttributeStorage))
        self.assertTrue(isinstance(event.getField('recurrence').storage,
                                   atapi.AttributeStorage))