def test_populate_dictionary_with_basic_link_from_DB(self): # Create resources and Link src_id = "124816" tar_id = "112358" src_res = core_model.Resource(src_id, occi_sla.AGREEMENT, None) tar_res = core_model.Resource(tar_id, occi_sla.AGREEMENT, None) lnk_id = "/agreement/load-link-entity-from-DB" lnk = core_model.Link(lnk_id, None, None, src_res, tar_res) links = EntityDictionary(self.api.registry) links._persist_resource(src_id, src_res) links._persist_resource(tar_id, tar_res) links._persist_link(lnk_id, lnk) links.populate_from_db() self.assertEqual(len(links), 3) self.assertTrue(isinstance(links[lnk_id], core_model.Link)) self.assertEqual(links[lnk_id].identifier, lnk_id) # Removing assistive field templates for comparison temp_src = links[lnk_id].source.__dict__ temp_trgt = links[lnk_id].target.__dict__ temp_src.pop('templates') temp_trgt.pop('templates') self.assertEqual(temp_src, src_res.__dict__) self.assertEqual(temp_trgt, tar_res.__dict__)
def test_populate_dictionary_with_resource_containing_links(self): # Test entities - creating a resource with two links res_tar_1_id = "/an-id/res_tar_1" res_src_1_id = "/an-id/res_src_1" lnk_1_id = "/an-id/lnk_1_id" res_tar_2_id = "/an-id/res_tar_2" res_src_2_id = "/an-id/res_src_2" lnk_2_id = "/an-id/lnk_2_id" res_m_id = "/an-id/res_m" res_src_1 = core_model.Resource(res_src_1_id, occi_sla.AGREEMENT, None) res_tar_1 = core_model.Resource(res_tar_1_id, occi_sla.AGREEMENT, None) lnk_1 = core_model.Link(lnk_1_id, occi_sla.AGREEMENT_LINK, None, res_src_1, res_tar_1) res_src_2 = core_model.Resource(res_src_2_id, occi_sla.AGREEMENT, None) res_tar_2 = core_model.Resource(res_tar_2_id, occi_sla.AGREEMENT, None) lnk_2 = core_model.Link(lnk_2_id, occi_sla.AGREEMENT_LINK, None, res_src_2, res_tar_2) res_m = core_model.Resource(res_m_id, occi_sla.AGREEMENT, None, [lnk_1, lnk_2]) # Persist all to DB but not dict in memory entities = EntityDictionary(self.api.registry) entities._persist_link(lnk_1_id, lnk_1) entities._persist_link(lnk_2_id, lnk_2) entities._persist_resource(res_src_1_id, res_src_1) entities._persist_resource(res_tar_1_id, res_tar_1) entities._persist_resource(res_src_2_id, res_src_2) entities._persist_resource(res_tar_2_id, res_tar_2) entities._persist_resource(res_m_id, res_m) entities.populate_from_db() self.assertEqual(len(entities), 7) self.assertEqual(len(entities[res_m_id].links), 2) for link in entities[res_m_id].links: if link.identifier == lnk_1_id: # Removing assistive field templates for comparison temp_src = link.source.__dict__ temp_trgt = link.target.__dict__ temp_src.pop('templates') temp_trgt.pop('templates') self.assertEqual(temp_src, res_src_1.__dict__) self.assertEqual(temp_trgt, res_tar_1.__dict__) else: # Removing assistive field templates for comparison temp_src = link.source.__dict__ temp_trgt = link.target.__dict__ temp_src.pop('templates') temp_trgt.pop('templates') self.assertEqual(temp_src, res_src_2.__dict__) self.assertEqual(temp_trgt, res_tar_2.__dict__)