From feaf5da2ebd0d8df96fbded531f540175e76a127 Mon Sep 17 00:00:00 2001 From: Tim Krones Date: Thu, 1 Oct 2015 12:12:26 +0200 Subject: [PATCH] Don't try to replace "jump_to_id" URLs in review tips if there are no review tips. --- problem_builder/mentoring.py | 4 ++-- problem_builder/tests/unit/test_mentoring.py | 16 ++++++++++++++++ 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/problem_builder/mentoring.py b/problem_builder/mentoring.py index aa6385d5..f5d8d1d4 100644 --- a/problem_builder/mentoring.py +++ b/problem_builder/mentoring.py @@ -510,9 +510,9 @@ def review_tips(self): if result and result.get('status') != 'correct': # The student got this wrong. Check if there is a review tip to show. tip_html = child.get_review_tip() - if hasattr(self.runtime, 'replace_jump_to_id_urls'): - tip_html = self.runtime.replace_jump_to_id_urls(tip_html) if tip_html: + if hasattr(self.runtime, 'replace_jump_to_id_urls'): + tip_html = self.runtime.replace_jump_to_id_urls(tip_html) review_tips.append(tip_html) return review_tips diff --git a/problem_builder/tests/unit/test_mentoring.py b/problem_builder/tests/unit/test_mentoring.py index 6a2bc75b..6c41d37b 100644 --- a/problem_builder/tests/unit/test_mentoring.py +++ b/problem_builder/tests/unit/test_mentoring.py @@ -168,3 +168,19 @@ def test_get_tip_content(self): self.block.steps = [self.mcq_block] self.block.student_results = {'test_mcq': {'status': 'incorrect'}} self.assertEqual(self.block.review_tips, ['replaced-url']) + + def test_get_tip_content_no_tips(self): + self.mcq_block = MCQBlock(self.runtime_mock, DictFieldData({'name': 'test_mcq'}), Mock()) + self.mcq_block.get_review_tip = Mock() + # If there are no review tips, get_review_tip will return None; + # simulate this situation here: + self.mcq_block.get_review_tip.return_value = None + self.block.step_ids = [] + self.block.steps = [self.mcq_block] + self.block.student_results = {'test_mcq': {'status': 'incorrect'}} + try: + review_tips = self.block.review_tips + except TypeError: + self.fail('Trying to replace jump_to_id URLs in non-existent review tips.') + else: + self.assertEqual(review_tips, [])