def test_copy(self): """ Validates whether the copy function works correct """ machine = TestMachine() machine.name = 'testmachine1' machine.save() disk1 = TestDisk() disk1.name = 'test1' disk1.size = 100 disk1.order = 1 disk1.type = 'ONE' disk1.machine = machine disk1.save() disk2 = TestDisk() disk2.copy(disk1) self.assertEqual(disk2.name, 'test1', 'Properties should be copied') self.assertEqual(disk2.size, 100, 'Properties should be copied') self.assertEqual(disk2.order, 1, 'Properties should be copied') self.assertEqual(disk2.type, 'ONE', 'Properties should be copied') self.assertEqual(disk2.machine, None, 'Relations should not be copied') disk3 = TestDisk() disk3.copy(disk1, include_relations=True) self.assertEqual(disk3.machine.name, 'testmachine1', 'Relations should be copied') disk4 = TestDisk() disk4.copy(disk1, include=['name']) self.assertEqual(disk4.name, 'test1', 'Name should be copied') self.assertEqual(disk4.size, 0, 'Size should not be copied') self.assertEqual(disk4.machine, None, 'Relations should not be copied') disk5 = TestDisk() disk5.copy(disk1, exclude=['name']) self.assertEqual(disk5.name, None, 'Name should not be copied') self.assertEqual(disk5.size, 100, 'Size should be copied') self.assertEqual(disk5.machine, None, 'Relations should not be copied')
def test_typesafety(self): """ Validates typesafety checking on object properties """ disk = TestDisk() disk.name = 'test' disk.name = u'test' disk.name = None disk.size = 100 disk.size = 100.5 disk.order = 100 with self.assertRaises(TypeError): disk.order = 100.5 with self.assertRaises(TypeError): disk.__dict__['wrong_type_data'] = None disk.wrong_type_data = 'string' _ = disk.wrong_type with self.assertRaises(TypeError): disk.type = 'THREE' disk.type = 'ONE'