Commit a428c081 by Awais Jibran

Fix Show Answer button display for the value "Answered" in studio

In docs it is explained that we should show "Show Answer" button for "Answered" value when the user has correctly submitted the answer. The current behavior is such, even if the learner has answered the question wrong, the "Show Answer" button would be available.

EDUCATOR-1563
parent 00d8b2a4
...@@ -906,7 +906,7 @@ class CapaMixin(ScorableXBlockMixin, CapaFields): ...@@ -906,7 +906,7 @@ class CapaMixin(ScorableXBlockMixin, CapaFields):
elif self.showanswer == SHOWANSWER.ANSWERED: elif self.showanswer == SHOWANSWER.ANSWERED:
# NOTE: this is slightly different from 'attempted' -- resetting the problems # NOTE: this is slightly different from 'attempted' -- resetting the problems
# makes lcp.done False, but leaves attempts unchanged. # makes lcp.done False, but leaves attempts unchanged.
return self.lcp.done return self.is_correct()
elif self.showanswer == SHOWANSWER.CLOSED: elif self.showanswer == SHOWANSWER.CLOSED:
return self.closed() return self.closed()
elif self.showanswer == SHOWANSWER.FINISHED: elif self.showanswer == SHOWANSWER.FINISHED:
......
...@@ -35,7 +35,7 @@ from xblock.scorable import Score ...@@ -35,7 +35,7 @@ from xblock.scorable import Score
from . import get_test_system from . import get_test_system
from pytz import UTC from pytz import UTC
from capa.correctmap import CorrectMap from capa.correctmap import CorrectMap
from ..capa_base_constants import RANDOMIZATION from ..capa_base_constants import RANDOMIZATION, SHOWANSWER
class CapaFactory(object): class CapaFactory(object):
...@@ -458,6 +458,27 @@ class CapaModuleTest(unittest.TestCase): ...@@ -458,6 +458,27 @@ class CapaModuleTest(unittest.TestCase):
graceperiod=self.two_day_delta_str) graceperiod=self.two_day_delta_str)
self.assertTrue(still_in_grace.answer_available()) self.assertTrue(still_in_grace.answer_available())
def test_showanswer_answered(self):
answer_wrong = CapaFactory.create(
showanswer=SHOWANSWER.ANSWERED,
max_attempts="1",
attempts="0",
due=self.tomorrow_str,
correct=False
)
self.assertFalse(answer_wrong.answer_available())
answer_correct = CapaFactory.create(
showanswer=SHOWANSWER.ANSWERED,
max_attempts="1",
attempts="0",
due=self.tomorrow_str,
correct=True
)
self.assertTrue(answer_correct.answer_available())
@ddt.data('', 'other-value') @ddt.data('', 'other-value')
def test_show_correctness_other(self, show_correctness): def test_show_correctness_other(self, show_correctness):
""" """
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment