def test_recursive_indexes(self): c = CommCareCase( _id='infinite-recursion', name='infinite_recursion', type='bug', indices=[CommCareCaseIndex(identifier='self', referenced_type='bug', referenced_id='infinite-recursion')], ) c.save() # this call used to fail with infinite recursion hierarchy = get_case_hierarchy(c, {}) self.assertEqual(1, len(hierarchy['case_list']))
def test_recursive_indexes(self): factory = CaseFactory() [case] = factory.create_or_update_case(CaseStructure( case_id='infinite-recursion', attrs={'case_type': 'bug'}, indices=[CaseIndex(CaseStructure(case_id='infinite-recursion'), related_type='bug')], walk_related=False )) # this call used to fail with infinite recursion hierarchy = get_case_hierarchy(case, {}) self.assertEqual(1, len(hierarchy['case_list']))
def test_complex_index(self): cp = CommCareCase( _id='parent', name='parent', type='parent', ) cp.save() # cases processed according to ID order so ensure that this case is # processed after the task case by making its ID sort after task ID cc = CommCareCase( _id='z_goal', name='goal', type='goal', indices=[ CommCareCaseIndex(identifier='parent', referenced_type='parent', referenced_id='parent') ], ) cc.save() cc = CommCareCase( _id='task1', name='task1', type='task', indices=[ CommCareCaseIndex(identifier='goal', referenced_type='goal', referenced_id='z_goal'), CommCareCaseIndex(identifier='parent', referenced_type='parent', referenced_id='parent') ], ) cc.save() # with 'ignore_relationship_types' if a case got processed along the ignored relationship first # then it got marked as 'seen' and would be not be processed again when it came to the correct relationship type_info = { 'task': { 'ignore_relationship_types': ['parent'] }, } hierarchy = get_case_hierarchy(cp, type_info) self.assertEqual(3, len(hierarchy['case_list'])) self.assertEqual(1, len(hierarchy['child_cases'])) self.assertEqual(2, len(hierarchy['child_cases'][0]['case_list'])) self.assertEqual(1, len(hierarchy['child_cases'][0]['child_cases']))
def test_recursive_indexes(self): c = FormProcessorInterface.create_case_from_generic(GenericCommCareCase( id='infinite-recursion', name='infinite_recursion', type='bug', indices=[GenericCommCareCaseIndex( identifier='self', referenced_type='bug', referenced_id='infinite-recursion' )], )) # this call used to fail with infinite recursion hierarchy = get_case_hierarchy(c, {}) self.assertEqual(1, len(hierarchy['case_list']))
def test_recursive_indexes(self): c = CommCareCase( _id='infinite-recursion', name='infinite_recursion', type='bug', indices=[ CommCareCaseIndex(identifier='self', referenced_type='bug', referenced_id='infinite-recursion') ], ) c.save() # this call used to fail with infinite recursion hierarchy = get_case_hierarchy(c, {}) self.assertEqual(1, len(hierarchy['case_list']))
def test_normal_index(self): factory = CaseFactory() [cp] = factory.create_or_update_case( CaseStructure(case_id='parent', attrs={'case_type': 'parent'}) ) factory.create_or_update_case(CaseStructure( case_id='child', attrs={'case_type': 'child'}, indices=[CaseIndex(CaseStructure(case_id='parent'), related_type='parent')], walk_related=False )) hierarchy = get_case_hierarchy(cp, {}) self.assertEqual(2, len(hierarchy['case_list'])) self.assertEqual(1, len(hierarchy['child_cases']))
def test_normal_index(self): factory = CaseFactory() [cp] = factory.create_or_update_case( CaseStructure(case_id='parent', attrs={'case_type': 'parent'})) factory.create_or_update_case( CaseStructure(case_id='child', attrs={'case_type': 'child'}, indices=[ CaseIndex(CaseStructure(case_id='parent'), related_type='parent') ], walk_related=False)) hierarchy = get_case_hierarchy(cp, {}) self.assertEqual(2, len(hierarchy['case_list'])) self.assertEqual(1, len(hierarchy['child_cases']))
def test_normal_index(self): cp = CommCareCase( _id='parent', name='parent', type='parent', ) cp.save() cc = CommCareCase( _id='child', name='child', type='child', indices=[CommCareCaseIndex(identifier='parent', referenced_type='parent', referenced_id='parent')], ) cc.save() hierarchy = get_case_hierarchy(cp, {}) self.assertEqual(2, len(hierarchy['case_list'])) self.assertEqual(1, len(hierarchy['child_cases']))
def test_complex_index(self): factory = CaseFactory() cp = factory.create_or_update_case( CaseStructure(case_id='parent', attrs={'case_type': 'parent'}))[0] # cases processed according to ID order so ensure that this case is # processed after the task case by making its ID sort after task ID factory.create_or_update_case( CaseStructure(case_id='z_goal', attrs={'case_type': 'goal'}, indices=[ CaseIndex(CaseStructure(case_id='parent'), related_type='parent') ], walk_related=False)) factory.create_or_update_case( CaseStructure( case_id='task1', attrs={'case_type': 'task'}, indices=[ CaseIndex(CaseStructure(case_id='z_goal'), related_type='goal', identifier='goal'), CaseIndex(CaseStructure(case_id='parent'), related_type='parent') ], walk_related=False, )) # with 'ignore_relationship_types' if a case got processed along the ignored relationship first # then it got marked as 'seen' and would be not be processed again when it came to the correct relationship type_info = { 'task': { 'ignore_relationship_types': ['parent'] }, } hierarchy = get_case_hierarchy(cp, type_info) self.assertEqual(3, len(hierarchy['case_list'])) self.assertEqual(1, len(hierarchy['child_cases'])) self.assertEqual(2, len(hierarchy['child_cases'][0]['case_list'])) self.assertEqual(1, len(hierarchy['child_cases'][0]['child_cases']))
def test_complex_index(self): cp = CommCareCase( _id='parent', name='parent', type='parent', ) cp.save() # cases processed according to ID order so ensure that this case is # processed after the task case by making its ID sort after task ID cc = CommCareCase( _id='z_goal', name='goal', type='goal', indices=[CommCareCaseIndex(identifier='parent', referenced_type='parent', referenced_id='parent')], ) cc.save() cc = CommCareCase( _id='task1', name='task1', type='task', indices=[ CommCareCaseIndex(identifier='goal', referenced_type='goal', referenced_id='z_goal'), CommCareCaseIndex(identifier='parent', referenced_type='parent', referenced_id='parent') ], ) cc.save() # with 'ignore_relationship_types' if a case got processed along the ignored relationship first # then it got marked as 'seen' and would be not be processed again when it came to the correct relationship type_info = { 'task': { 'ignore_relationship_types': ['parent'] }, } hierarchy = get_case_hierarchy(cp, type_info) self.assertEqual(3, len(hierarchy['case_list'])) self.assertEqual(1, len(hierarchy['child_cases'])) self.assertEqual(2, len(hierarchy['child_cases'][0]['case_list'])) self.assertEqual(1, len(hierarchy['child_cases'][0]['child_cases']))
def test_normal_index(self): cp = FormProcessorInterface.create_case_from_generic(GenericCommCareCase( id='parent', name='parent', type='parent', )) FormProcessorInterface.create_case_from_generic(GenericCommCareCase( id='child', name='child', type='child', indices=[GenericCommCareCaseIndex( identifier='parent', referenced_type='parent', referenced_id='parent' )], )) hierarchy = get_case_hierarchy(cp, {}) self.assertEqual(2, len(hierarchy['case_list'])) self.assertEqual(1, len(hierarchy['child_cases']))
def test_normal_index(self): cp = CommCareCase( _id='parent', name='parent', type='parent', ) cp.save() cc = CommCareCase( _id='child', name='child', type='child', indices=[ CommCareCaseIndex(identifier='parent', referenced_type='parent', referenced_id='parent') ], ) cc.save() hierarchy = get_case_hierarchy(cp, {}) self.assertEqual(2, len(hierarchy['case_list'])) self.assertEqual(1, len(hierarchy['child_cases']))
def test_complex_index(self): factory = CaseFactory() cp = factory.create_or_update_case(CaseStructure(case_id='parent', attrs={'case_type': 'parent'}))[0] # cases processed according to ID order so ensure that this case is # processed after the task case by making its ID sort after task ID factory.create_or_update_case(CaseStructure( case_id='z_goal', attrs={'case_type': 'goal'}, indices=[CaseIndex(CaseStructure(case_id='parent'), related_type='parent')], walk_related=False )) factory.create_or_update_case(CaseStructure( case_id='task1', attrs={'case_type': 'task'}, indices=[ CaseIndex(CaseStructure(case_id='z_goal'), related_type='goal', identifier='goal'), CaseIndex(CaseStructure(case_id='parent'), related_type='parent') ], walk_related=False, )) # with 'ignore_relationship_types' if a case got processed along the ignored relationship first # then it got marked as 'seen' and would be not be processed again when it came to the correct relationship type_info = { 'task': { 'ignore_relationship_types': ['parent'] }, } hierarchy = get_case_hierarchy(cp, type_info) self.assertEqual(3, len(hierarchy['case_list'])) self.assertEqual(1, len(hierarchy['child_cases'])) self.assertEqual(2, len(hierarchy['child_cases'][0]['case_list'])) self.assertEqual(1, len(hierarchy['child_cases'][0]['child_cases']))
def test_extension_index(self): factory = CaseFactory() [case] = factory.create_or_update_case( CaseStructure(case_id="standard_case", attrs={'case_type': "standard_type"}) ) factory.create_or_update_case( CaseStructure( case_id="extension_case", attrs={'case_type': "extension_type"}, indices=[ CaseIndex( CaseStructure(case_id="standard_case"), related_type='standard_type', relationship=CASE_INDEX_EXTENSION ) ], walk_related=False ) ) hierarchy = get_case_hierarchy(case, {}) self.assertEqual(2, len(hierarchy['case_list'])) self.assertEqual(1, len(hierarchy['child_cases']))