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):
elif self.showanswer == SHOWANSWER.ANSWERED:
# NOTE: this is slightly different from 'attempted' -- resetting the problems
# makes lcp.done False, but leaves attempts unchanged.
return self.lcp.done
return self.is_correct()
elif self.showanswer == SHOWANSWER.CLOSED:
return self.closed()
elif self.showanswer == SHOWANSWER.FINISHED:
......
......@@ -35,7 +35,7 @@ from xblock.scorable import Score
from . import get_test_system
from pytz import UTC
from capa.correctmap import CorrectMap
from ..capa_base_constants import RANDOMIZATION
from ..capa_base_constants import RANDOMIZATION, SHOWANSWER
class CapaFactory(object):
......@@ -458,6 +458,27 @@ class CapaModuleTest(unittest.TestCase):
graceperiod=self.two_day_delta_str)
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')
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