def get_blocks(self): blocks = [] for group in SchemaHelper.get_groups(self.survey_json): if 'skip_condition' in group: skip = evaluate_skip_condition(group['skip_condition'], self.metadata, self.answer_store) if skip: continue no_of_repeats = 1 repeating_rule = SchemaHelper.get_repeat_rule(group) if repeating_rule: no_of_repeats = evaluate_repeat(repeating_rule, self.answer_store) for i in range(0, no_of_repeats): for block in group['blocks']: if 'skip_condition' in block: skip = evaluate_skip_condition(block['skip_condition'], self.metadata, self.answer_store) if skip: continue blocks.append({ "group_id": group['id'], "group_instance": i, "block": block, }) return blocks
def test_get_repeating_rule(self): survey = load_schema_file("test_repeating_household.json") groups = [group for group in SchemaHelper.get_groups(survey)] rule = SchemaHelper.get_repeat_rule(groups[1]) self.assertEqual( { 'type': 'answer_count', 'answer_id': 'first-name', 'navigation_label_answer_ids': ['first-name', 'last-name'], }, rule)
def test_get_groups(self): survey = load_schema_file("test_repeating_household.json") groups = [group for group in SchemaHelper.get_groups(survey)] self.assertEqual(len(groups), 3)