def test_org_unmerge(self): """ Test undoing an organization merge """ request = self.factory.post("/cp") request.user = None # merge orgs 4 and 5 into org 3 t_org = self.entities["org"][3] admin.merge_organizations(self.entities["org"][4:6], t_org, request) print(t_org) # check that merge log exists merges = models.OrganizationMerge.objects.filter(to_org=t_org) self.assertEqual(merges.count(), 2) # undo merges i = 4 for merge in [m for m in merges]: self.assertEqual(merge.from_org, self.entities["org"][i]) merge.undo() i += 1 # check that all entities moved back for tag in ["ix", "net", "fac"]: i = 4 for ent in self.entities[tag][4:6]: ent.refresh_from_db() self.assertEqual(ent.org, self.entities["org"][i]) i += 1 # check that all users moved back i = 4 for user in self.entities["user"][4:6]: org = self.entities["org"][i] self.assertEqual(user.is_org_member(t_org), False) self.assertEqual(user.is_org_admin(t_org), False) self.assertEqual(user.is_org_member(org), True) self.assertEqual(user.is_org_admin(org), False) i += 1 # check that all merged orgs are deleted for org in self.entities["org"][4:6]: org.refresh_from_db() self.assertEqual(org.status, "ok") # check that target org is still in tact t_org.refresh_from_db() self.assertEqual(t_org.status, "ok")
def test_org_merge(self): """ Test the org merge functionality, which should merge 1 or more organizations into a target organization, moving all entities to the target organization """ request = self.factory.post("/cp") request.user = None # TEST 1 # merge orgs 1 and 2 into org 0 t_org = self.entities["org"][0] admin.merge_organizations(self.entities["org"][1:3], t_org, request) # check that all entities moved for tag in ["ix", "net", "fac"]: for ent in self.entities[tag][0:3]: ent.refresh_from_db() self.assertEqual(ent.org, t_org) # check that all users moved i = 1 for user in self.entities["user"][1:3]: org = self.entities["org"][i] self.assertEqual(user.is_org_member(t_org), True) self.assertEqual(user.is_org_admin(t_org), False) self.assertEqual(user.is_org_member(org), False) self.assertEqual(user.is_org_admin(org), False) i += 1 # check that all merged orgs are deleted for org in self.entities["org"][1:3]: org.refresh_from_db() self.assertEqual(org.status, "deleted") # check that target org is still in tact t_org.refresh_from_db() self.assertEqual(t_org.status, "ok") # TEST 2 - Dont allow merging of target org into target org with pytest.raises(ValueError): admin.merge_organizations([t_org], t_org, request)