def test_is_summary_or_confirmation_returns_false_when_block_is_none(self): block = None is_summary_or_confirmation = SchemaHelper.is_summary_or_confirmation( block) self.assertFalse(is_summary_or_confirmation)
def build_navigation(self, current_group_id, current_group_instance): """ Build navigation based on the current group/instance selected :param current_group_id: :param current_group_instance: :return: """ if self.survey_json.get('navigation', False) is False: return None navigation = [] last_group_id = SchemaHelper.get_last_group_id(self.survey_json) for group in filter(lambda x: 'hide_in_navigation' not in x, self.survey_json['groups']): logger.debug("building frontend navigation", group_id=group['id']) first_location = Location(group['id'], 0, group['blocks'][0]['id']) last_block_in_group = SchemaHelper.get_last_block_in_group(group) is_summary_or_confirm_group = last_block_in_group and \ SchemaHelper.is_summary_or_confirmation(last_block_in_group) last_block_location = Location(group['id'], 0, last_block_in_group['id']) can_get_to_summary = is_summary_or_confirm_group and self.routing_path and \ last_block_location in self.routing_path skip_group = self._should_skip_group(current_group_instance, group) if not skip_group: repeating_rule = SchemaHelper.get_repeat_rule(group) if repeating_rule: logger.debug("building repeating navigation", group_id=group['id']) navigation.extend( self._build_repeating_navigation( repeating_rule, group, current_group_id, current_group_instance)) elif last_group_id == group['id'] and can_get_to_summary: logger.debug("building navigation", group_id=group['id']) if len(self.completed_blocks) > 0 and set( self.routing_path[:-1]).issubset( self.completed_blocks): navigation.append( self._build_single_navigation( group, current_group_id, first_location)) elif last_group_id != group[ 'id'] and not is_summary_or_confirm_group: logger.debug("building navigation", group_id=group['id']) navigation.append( self._build_single_navigation(group, current_group_id, first_location)) return navigation
def test_is_summary_or_confirmation_returns_true_when_type_is_confirmation( self): block = { 'type': 'Confirmation', } is_summary_or_confirmation = SchemaHelper.is_summary_or_confirmation( block) self.assertTrue(is_summary_or_confirmation)
def test_is_summary_or_confirmation_returns_false_when_type_is_questionnaire( self): block = { 'type': 'Questionnaire', } is_summary_or_confirmation = SchemaHelper.is_summary_or_confirmation( block) self.assertFalse(is_summary_or_confirmation)
def test_is_summary_or_confirmation_returns_false_when_block_has_no_type( self): block = { 'id': 'block-with-no-type', } is_summary_or_confirmation = SchemaHelper.is_summary_or_confirmation( block) self.assertFalse(is_summary_or_confirmation)