def test_get_extension_to_close_child_host(self): """should still return extension chain if outgoing index is a child index""" created_cases = self._create_host_is_subcase_chain() # host open, should be empty no_cases = get_extensions_to_close(created_cases[-1], self.domain) self.assertEqual(set(), no_cases) # close parent, shouldn't get extensions # don't actually close the cases otherwise they will get excluded created_cases[-1].closed = True no_cases = get_extensions_to_close(created_cases[-1], self.domain) self.assertEqual(set(), no_cases) # close host that is also a child created_cases[-2].closed = True full_chain = get_extensions_to_close(created_cases[-2], self.domain) self.assertEqual(set(self.extension_ids[0:2]), full_chain)
def test_get_extension_to_close(self): """should return empty if case is not a host, otherwise should return full chain""" created_cases = self._create_extension_chain() # host open, should be empty no_cases = get_extensions_to_close(created_cases[-1], self.domain) self.assertEqual(set(), no_cases) # don't actually close the cases otherwise they will get excluded created_cases[-1].closed = True # top level host closed, should get full chain full_chain = get_extensions_to_close(created_cases[-1], self.domain) self.assertEqual(set(self.extension_ids), full_chain) # extension (also a host), should get it's chain created_cases[2].closed = True no_cases = get_extensions_to_close(created_cases[2], self.domain) self.assertEqual(set(self.extension_ids[1:3]), no_cases)
def test_get_extension_to_close(self): """should return empty if case is not a host, otherwise should return full chain""" created_cases = self._create_extension_chain() # host open, should be empty no_cases = get_extensions_to_close(created_cases[-1], self.domain) self.assertEqual(set(), no_cases) created_cases[-1] = self.factory.create_or_update_case(CaseStructure( case_id=self.host_id, attrs={'close': True} ))[0] # host closed, should get full chain full_chain = get_extensions_to_close(created_cases[-1], self.domain) self.assertEqual(set(self.extension_ids), full_chain) # extension (not a host), should be empty no_cases = get_extensions_to_close(created_cases[2], self.domain) self.assertEqual(set(), no_cases)
def test_get_extension_to_close_child_host(self): """should still return extension chain if outgoing index is a child index""" created_cases = self._create_host_is_subcase_chain() # host open, should be empty no_cases = get_extensions_to_close(created_cases[-1], self.domain) self.assertEqual(set(), no_cases) # close parent, shouldn't get extensions created_cases[-1] = self.factory.create_or_update_case(CaseStructure( case_id=self.parent_id, attrs={'close': True} ))[0] no_cases = get_extensions_to_close(created_cases[-1], self.domain) self.assertEqual(set(), no_cases) # close host that is also a child created_cases[-2] = self.factory.create_or_update_case(CaseStructure( case_id=self.host_id, attrs={'close': True} ))[0] full_chain = get_extensions_to_close(created_cases[-2], self.domain) self.assertEqual(set(self.extension_ids[0:2]), full_chain)
def test_get_extension_to_close_child_host(self): """should still return extension chain if outgoing index is a child index""" created_cases = self._create_host_is_subcase_chain() # host open, should be empty no_cases = get_extensions_to_close(created_cases[-1], self.domain) self.assertEqual(set(), no_cases) # close parent, shouldn't get extensions created_cases[-1] = self.factory.create_or_update_case(CaseStructure( case_id='parent', attrs={'close': True} ))[0] no_cases = get_extensions_to_close(created_cases[-1], self.domain) self.assertEqual(set(), no_cases) # close host that is also a child created_cases[-2] = self.factory.create_or_update_case(CaseStructure( case_id=self.host_id, attrs={'close': True} ))[0] full_chain = get_extensions_to_close(created_cases[-2], self.domain) self.assertEqual(set(self.extension_ids[0:2]), full_chain)
def test_get_ush_custom_extension_chain(self): # test USH specific tree of where only extension(2) should be included # patient (host) # / \ # contact(id=1) extension(id=2) # / # extension(id=3) host = CaseStructure(case_id=self.host_id, attrs={'create': True, 'case_type': 'patient'}) contact_extension = CaseStructure( case_id=self.extension_ids[0], indices=[CaseIndex( related_structure=host, relationship="extension", )], attrs={'create': True, 'case_type': 'contact'} ) extensions_1 = CaseStructure( case_id=self.extension_ids[1], indices=[CaseIndex( related_structure=host, relationship="extension", )], attrs={'create': True} ) ext_of_contact = CaseStructure( case_id=self.extension_ids[2], indices=[CaseIndex( related_structure=contact_extension, relationship="extension", )], attrs={'create': True} ) created_cases = self.factory.create_or_update_cases([ext_of_contact]) self.factory.create_or_update_cases([extensions_1]) created_cases[-1].closed = True self.assertEqual( set(self.extension_ids), get_extensions_to_close(self.domain, [created_cases[-1]]) ) # contact and its extensions shouldn't be included in USH case self.assertEqual( {self.extension_ids[1]}, get_ush_extension_cases_to_close(self.domain, [created_cases[-1]]) )