def test_clone_with_relation(self): clone = models.clone(self.vehicle, Vehicle.owner, paint="blue", options=self.vehicle.options, parts=self.vehicle.parts) db.add(clone) db.flush() self.assertNotEqual(clone, self.vehicle) self.assertNotEqual(clone.as_dict(), self.vehicle.as_dict()) self.assertNotEqual(clone.id, self.vehicle.id) self.assertEqual(clone.paint, "blue") self.assertEqual(clone.name, self.vehicle.name) clone.paint = "red" self.assertIsNot(clone.owner, self.vehicle.owner) self.assertNotEqual(clone.owner.as_dict(), self.vehicle.owner.as_dict()) self.assertNotEqual(clone.owner.id, self.vehicle.owner.id) self.assertEqual(clone.owner.first_name, self.vehicle.owner.first_name) self.assertEqual(clone.owner.last_name, self.vehicle.owner.last_name) self.assertEqual(clone.options, self.vehicle.options) self.assertEqual(clone.parts, self.vehicle.parts)
def test_shallow_clone(self): clone = models.clone(self.vehicle) db.add(clone) db.flush() self.assertNotEqual(clone, self.vehicle) self.assertNotEqual(clone.as_dict(), self.vehicle.as_dict()) self.assertNotEqual(clone.id, self.vehicle.id) self.assertEqual(clone.name, self.vehicle.name) # self.assertEqual(models.model_to_dict(clone), models.model_to_dict(self.vehicle)) self.assertIsNone(clone.owner) self.assertEqual(clone.options, []) self.assertEqual(clone.parts, [])
def test_clone_list_relation(self): clone = models.clone(self.vehicle, Vehicle.options) db.add(clone) db.flush() self.assertNotEqual(clone, self.vehicle) self.assertNotEqual(clone.as_dict(), self.vehicle.as_dict()) self.assertNotEqual(clone.id, self.vehicle.id) for cloned, orig in zip(clone.options, self.vehicle.options): self.assertNotEqual(cloned, orig) self.assertNotEqual(cloned.as_dict(), orig.as_dict()) self.assertNotEqual(cloned.id, orig.id)
def test_clone_with_relation_options(self): clone = models.clone(self.vehicle, make_args(Vehicle.owner, first_name="test")) db.add(clone) db.flush() self.assertNotEqual(clone, self.vehicle) self.assertNotEqual(clone.as_dict(), self.vehicle.as_dict()) self.assertNotEqual(clone.id, self.vehicle.id) self.assertNotEqual(clone.owner, self.vehicle.owner) self.assertNotEqual(clone.owner.as_dict(), self.vehicle.owner.as_dict()) self.assertNotEqual(clone.owner.id, self.vehicle.owner.id) self.assertEqual(clone.owner.first_name, "test")
def test_shallow_clone(self): clone = models.clone(self.vehicle) db.add(clone) db.flush() self.assertNotEqual(clone, self.vehicle) self.assertNotEqual(clone.as_dict(), self.vehicle.as_dict()) self.assertNotEqual(clone.id, self.vehicle.id) self.assertEqual(clone.is_used, self.vehicle.is_used) self.assertEqual(clone.msrp, self.vehicle.msrp) self.assertEqual(clone.name, self.vehicle.name) self.assertEqual(clone.paint, self.vehicle.paint) self.assertEqual(clone.type, self.vehicle.type) self.assertIsNone(clone.owner) self.assertEqual(clone.options, []) self.assertEqual(clone.parts, [])
def test_clone_with_composite(self): business = Business( name="test", location=Address(street="street 1", state="state 1", zip="zip 1"), other_location=Address(street="street 2", state="state 2", zip="zip 2"), ) clone = models.clone(business) self.assertNotEqual(clone, business) self.assertDictEqual(models.model_to_dict(clone), models.model_to_dict(business)) self.assertNotEqual(id(clone.location), id(business.location)) self.assertNotEqual(id(clone.other_location), id(business.other_location)) self.assertEqual(clone.location, business.location) self.assertEqual(clone.other_location, business.other_location)
def test_clone_none(self): self.assertIsNone(models.clone(None))