def test_ORMWrapper_post_save_fixups_add(self): """ Apply a post_save_fixup that adds a reverse foreign key """ orm = self.make_coreapi() testModel = orm.TestModel() testModel.save() testModelTwo = orm.TestModelTwo(testmodel_id=testModel.id) testModelTwo.save() # Make sure the reverse_relation is unpopulated. This should be the case, as fake_stub.py() doesn't populate # the reverse relation. But let's be sure, in case someone fixes that. testModel._wrapped_class.testmodeltwos_ids = [] post_save_fixups = [{ "src_fieldName": "testmodel", "dest_id": None, # this field appears to not be used... "dest_model": testModel, "remove": False, "reverse_fieldName": "testmodeltwos", }] testModelTwo.post_save_fixups = post_save_fixups testModelTwo.do_post_save_fixups() self.assertEqual(testModel._wrapped_class.testmodeltwos_ids, [testModelTwo.id])
def test_ORMWrapper_post_save_fixups_remove(self): """ Apply a post_save_fixup that removes a reverse foreign key """ orm = self.make_coreapi() testModel = orm.TestModel() testModel.save() testModelTwo = orm.TestModelTwo(testmodel_id=testModel.id) # fake_stub.py doesn't populate the reverse relations for us, so force what the server would have done... testModel._wrapped_class.testmodeltwos_ids = [testModelTwo.id] post_save_fixups = [{ "src_fieldName": "testmodel", "dest_id": None, # this field appears to not be used... "dest_model": testModel, "remove": True, "reverse_fieldName": "testmodeltwos", }] testModelTwo.post_save_fixups = post_save_fixups testModelTwo.do_post_save_fixups() self.assertEqual(testModel._wrapped_class.testmodeltwos_ids, [])
def test_ORMWrapper_fk_set(self): """ fk_set will set the testmodel field on TesTModelTwo to point to the TestModel. """ orm = self.make_coreapi() testModel = orm.TestModel() testModel.save() testModelTwo = orm.TestModelTwo() testModelTwo.fk_set("testmodel", testModel) self.assertEqual(testModelTwo.testmodel_id, testModel.id)
def test_ORMWrapper_fk_resolve(self): """ If we create a TestModelTwo that has a foreign key reference to a TestModel, then calling fk_resolve should return that model. """ orm = self.make_coreapi() testModel = orm.TestModel() testModel.save() testModelTwo = orm.TestModelTwo(testmodel_id=testModel.id) testModel_resolved = testModelTwo.fk_resolve("testmodel") self.assertEqual(testModel_resolved.id, testModel.id) # the cache should have been populated self.assertIn(("testmodel", testModel_resolved), testModelTwo.cache.items())
def test_ORMWrapper_gen_fkmap(self): """ TestModelTwo includes a foreignkey relation to TestModel, and the fkmap should contain that relation """ orm = self.make_coreapi() testModelTwo = orm.TestModelTwo() self.assertDictEqual( testModelTwo.gen_fkmap(), { "testmodel": { "kind": "fk", "modelName": "TestModel", "reverse_fieldName": "testmodeltwos", "src_fieldName": "testmodel_id", } }, )
def test_ORMWrapper_reverse_fk_resolve(self): """ If a TestModelTwo has a relation to TestModel, then TestModel's reverse_fk should be resolvable to a list of TestModelTwo objects. """ orm = self.make_coreapi() testModel = orm.TestModel() testModel.save() testModelTwo = orm.TestModelTwo(testmodel_id=testModel.id) testModelTwo.save() # fake_stub.py doesn't populate the reverse relations for us, so force what the server would have done... testModel._wrapped_class.testmodeltwos_ids = [testModelTwo.id] testModelTwos_resolved = testModel.reverse_fk_resolve("testmodeltwos") self.assertEqual(testModelTwos_resolved.count(), 1) # the reverse_cache should have been populated self.assertIn(("testmodeltwos", testModelTwos_resolved), testModel.reverse_cache.items())