def test_evaluate_skip_condition_returns_true_when_more_than_one_rule_is_true( self): # Given skip_condition = [{ 'when': [{ 'id': 'this', 'condition': 'equals', 'value': 'value' }] }, { 'when': [{ 'id': 'that', 'condition': 'equals', 'value': 'other value' }] }] answer_store = AnswerStore() answer_store.add(Answer(answer_id='this', value='value')) answer_store.add(Answer(answer_id='that', value='other value')) # When condition = evaluate_skip_condition(skip_condition, {}, answer_store) # Then self.assertTrue(condition)
def test_evaluate_skip_condition_returns_false_when_both_or_rules_false( self): # Given skip_condition = [{ 'when': [{ 'id': 'this', 'condition': 'equals', 'value': 'value' }] }, { 'when': [{ 'id': 'that', 'condition': 'equals', 'value': 'other value' }] }] answer_store = AnswerStore() answer_store.add(Answer(answer_id='this', value='not correct')) answer_store.add(Answer(answer_id='that', value='not correct')) # When condition = evaluate_skip_condition(skip_condition, {}, answer_store) # Then self.assertFalse(condition)
def test_evaluate_skip_condition_returns_true_when_that_rule_true(self): skip_condition = [ { 'when': [ { 'id': 'this', 'condition': 'equals', 'value': 'value' } ] }, { 'when': [ { 'id': 'that', 'condition': 'equals', 'value': 'other value' } ] } ] answer_store = AnswerStore() answer_store.add(Answer(answer_id='that', value='other value')) self.assertTrue(evaluate_skip_condition(skip_condition, {}, answer_store))
def _should_skip_group(self, current_group_instance, group): skip_group = False skip_condition = SchemaHelper.get_skip_condition(group) if skip_condition: skip_group = evaluate_skip_condition(skip_condition, self.metadata, self.answer_store, current_group_instance) return skip_group
def test_evaluate_skip_condition_returns_false_when_no_skip_condition(self): # Given skip_condition = None # When condition = evaluate_skip_condition(skip_condition, {}, AnswerStore()) # Then self.assertFalse(condition)
def _evaluate_skip_conditions(block_json, location, answer_store, metadata): for question in SchemaHelper.get_questions_for_block(block_json): if 'skip_condition' in question: skip_question = evaluate_skip_condition([question['skip_condition']], metadata, answer_store, location.group_instance) question['skipped'] = skip_question for answer in question['answers']: if answer['mandatory'] and skip_question: answer['mandatory'] = False return block_json