Commit 5382c86c by John Eskew

Protect against divide by zero in DataDog event.

Add test for zero total/max score in a problem.
parent dffcc25b
......@@ -1117,6 +1117,7 @@ class CapaMixin(CapaFields):
if dog_stats_api:
dog_stats_api.increment(metric_name('checks'), tags=[u'result:success'])
if published_grade['max_grade'] != 0:
dog_stats_api.histogram(
metric_name('correct_pct'),
float(published_grade['grade']) / published_grade['max_grade'],
......
......@@ -731,6 +731,20 @@ class CapaModuleTest(unittest.TestCase):
# Expect an AJAX alert message in 'success'
self.assertIn(error_msg, result['success'])
def test_check_problem_zero_max_grade(self):
"""
Test that a capa problem with a max grade of zero doesn't generate an error.
"""
# Create the module
module = CapaFactory.create(attempts=1)
# Override the problem score to have a total of zero.
module.lcp.get_score = lambda: {'score': 0, 'total': 0}
# Check the problem
get_request_dict = {CapaFactory.input_key(): '3.14'}
module.check_problem(get_request_dict)
def test_check_problem_error_nonascii(self):
# Try each exception that capa_module should handle
......
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