diff --git a/product/ERP5Type/tests/testDynamicClassGeneration.py b/product/ERP5Type/tests/testDynamicClassGeneration.py index 8e17b809e5590e51efd90d182b47b24af4e65815..4c2d39d1d27130211b55879271c8a0a1e37d0c52 100644 --- a/product/ERP5Type/tests/testDynamicClassGeneration.py +++ b/product/ERP5Type/tests/testDynamicClassGeneration.py @@ -3035,6 +3035,7 @@ class Test(ERP5TypeTestCase): types_tool = self.portal.portal_types ptype = types_tool.newContent(name, type_class="File", portal_type='Base Type') file = ptype.constructInstance(self.portal, name, data="foo") + file_uid = file.getUid() self.assertEqual(file.size, len("foo")) self.commit() try: @@ -3052,6 +3053,19 @@ class Test(ERP5TypeTestCase): self.assertRaises(BrokenModified, setattr, file, "size", 0) self.assertIsInstance(file, ERP5BaseBroken) self.assertEqual(file.size, len("foo")) + + # Now if we repair the portal type definition, instances will + # no longer be broken and be modifiable again. + ptype.setTypeClass("File") + self.commit() + + file = self.portal[name] + self.assertNotIsInstance(file, ERP5BaseBroken) + self.assertEqual(file.getUid(), file_uid) + self.assertEqual(file.getData(), "foo") + file.setData("something else") + self.assertEqual(file.getData(), "something else") + self.assertNotIn("__Broken_state__", file.__dict__) finally: self.portal._delObject(name) types_tool._delObject(name)