From 9c85d920ee860ebd3f942db32c6c5d61f7edf568 Mon Sep 17 00:00:00 2001 From: Calen Pennington Date: Mon, 11 Mar 2013 10:48:06 -0400 Subject: [PATCH] Fixing tests created on master --- .../contentstore/tests/test_contentstore.py | 5 +- common/lib/xmodule/xmodule/capa_module.py | 3 + .../xmodule/tests/test_annotatable_module.py | 6 +- .../xmodule/xmodule/tests/test_capa_module.py | 123 ++++++------------ 4 files changed, 48 insertions(+), 89 deletions(-) diff --git a/cms/djangoapps/contentstore/tests/test_contentstore.py b/cms/djangoapps/contentstore/tests/test_contentstore.py index d3c59664e8..db953cd294 100644 --- a/cms/djangoapps/contentstore/tests/test_contentstore.py +++ b/cms/djangoapps/contentstore/tests/test_contentstore.py @@ -276,10 +276,11 @@ class ContentStoreToyCourseTest(ModuleStoreTestCase): course = ms.get_item(location) + metadata = own_metadata(course) # add a bool piece of unknown metadata so we can verify we don't throw an exception - course.metadata['new_metadata'] = True + metadata['new_metadata'] = True - ms.update_metadata(location, course.metadata) + ms.update_metadata(location, metadata) print 'Exporting to tempdir = {0}'.format(root_dir) diff --git a/common/lib/xmodule/xmodule/capa_module.py b/common/lib/xmodule/xmodule/capa_module.py index 1b93bb4ec4..9829555134 100644 --- a/common/lib/xmodule/xmodule/capa_module.py +++ b/common/lib/xmodule/xmodule/capa_module.py @@ -135,6 +135,9 @@ class CapaModule(XModule): # see comment on randomization_bin self.seed = randomization_bin(system.seed, self.location.url) + if self.max_attempts == '': + self.max_attempts = None + # Need the problem location in openendedresponse to send out. Adding # it to the system here seems like the least clunky way to get it # there. diff --git a/common/lib/xmodule/xmodule/tests/test_annotatable_module.py b/common/lib/xmodule/xmodule/tests/test_annotatable_module.py index 30f9c9ff92..43eae8e43e 100644 --- a/common/lib/xmodule/xmodule/tests/test_annotatable_module.py +++ b/common/lib/xmodule/xmodule/tests/test_annotatable_module.py @@ -28,13 +28,11 @@ class AnnotatableModuleTestCase(unittest.TestCase): The Iliad of Homer by Samuel Butler ''' - definition = { 'data': sample_xml } descriptor = Mock() - instance_state = None - shared_state = None + module_data = {'data': sample_xml} def setUp(self): - self.annotatable = AnnotatableModule(test_system(), self.location, self.definition, self.descriptor, self.instance_state, self.shared_state) + self.annotatable = AnnotatableModule(test_system(), self.location, self.descriptor, self.module_data) def test_annotation_data_attr(self): el = etree.fromstring('test') diff --git a/common/lib/xmodule/xmodule/tests/test_capa_module.py b/common/lib/xmodule/xmodule/tests/test_capa_module.py index ca8f267c39..0f70dc122c 100644 --- a/common/lib/xmodule/xmodule/tests/test_capa_module.py +++ b/common/lib/xmodule/xmodule/tests/test_capa_module.py @@ -59,7 +59,8 @@ class CapaFactory(object): force_save_button=None, attempts=None, problem_state=None, - correct=False + correct=False, + done=None ): """ All parameters are optional, and are added to the created problem if specified. @@ -77,23 +78,24 @@ class CapaFactory(object): attempts: also added to instance state. Will be converted to an int. """ - definition = {'data': CapaFactory.sample_problem_xml, } location = Location(["i4x", "edX", "capa_test", "problem", "SampleProblem{0}".format(CapaFactory.next_num())]) - model_data = {} + model_data = {'data': CapaFactory.sample_problem_xml} + if graceperiod is not None: model_data['graceperiod'] = graceperiod if due is not None: model_data['due'] = due if max_attempts is not None: - model_data['max_attempts'] = int(max_attempts) + model_data['max_attempts'] = max_attempts if showanswer is not None: model_data['showanswer'] = showanswer if force_save_button is not None: model_data['force_save_button'] = force_save_button if rerandomize is not None: model_data['rerandomize'] = rerandomize - + if done is not None: + model_data['done'] = done descriptor = Mock(weight="1") if problem_state is not None: @@ -103,11 +105,6 @@ class CapaFactory(object): # since everything else is a string. model_data['attempts'] = int(attempts) - if len(instance_state_dict) > 0: - instance_state = json.dumps(instance_state_dict) - else: - instance_state = None - system = test_system() system.render_template = Mock(return_value="
Test Template HTML
") module = CapaModule(system, location, descriptor, model_data) @@ -422,7 +419,6 @@ class CapaModuleTest(unittest.TestCase): # Expect that the number of attempts is incremented by 1 self.assertEqual(module.attempts, 2) - def test_check_problem_incorrect(self): module = CapaFactory.create(attempts=0) @@ -456,32 +452,27 @@ class CapaModuleTest(unittest.TestCase): # Expect that number of attempts NOT incremented self.assertEqual(module.attempts, 3) - def test_check_problem_resubmitted_with_randomize(self): # Randomize turned on module = CapaFactory.create(rerandomize='always', attempts=0) # Simulate that the problem is completed - module.lcp.done = True + module.done = True # Expect that we cannot submit with self.assertRaises(xmodule.exceptions.NotFoundError): - get_request_dict = { CapaFactory.input_key(): '3.14' } + get_request_dict = {CapaFactory.input_key(): '3.14'} module.check_problem(get_request_dict) # Expect that number of attempts NOT incremented self.assertEqual(module.attempts, 0) - def test_check_problem_resubmitted_no_randomize(self): # Randomize turned off - module = CapaFactory.create(rerandomize='never', attempts=0) - - # Simulate that the problem is completed - module.lcp.done = True + module = CapaFactory.create(rerandomize='never', attempts=0, done=True) # Expect that we can submit successfully - get_request_dict = { CapaFactory.input_key(): '3.14' } + get_request_dict = {CapaFactory.input_key(): '3.14'} result = module.check_problem(get_request_dict) self.assertEqual(result['success'], 'correct') @@ -489,7 +480,6 @@ class CapaModuleTest(unittest.TestCase): # Expect that number of attempts IS incremented self.assertEqual(module.attempts, 1) - def test_check_problem_queued(self): module = CapaFactory.create(attempts=1) @@ -530,13 +520,8 @@ class CapaModuleTest(unittest.TestCase): def test_reset_problem(self): - module = CapaFactory.create() - - # Mock the module's capa problem - # to simulate that the problem is done - mock_problem = MagicMock(capa.capa_problem.LoncapaProblem) - mock_problem.done = True - module.lcp = mock_problem + module = CapaFactory.create(done=True) + module.new_lcp = Mock(wraps=module.new_lcp) # Stub out HTML rendering with patch('xmodule.capa_module.CapaModule.get_problem_html') as mock_html: @@ -554,7 +539,7 @@ class CapaModuleTest(unittest.TestCase): self.assertEqual(result['html'], "
Test HTML
") # Expect that the problem was reset - mock_problem.do_reset.assert_called_once_with() + module.new_lcp.assert_called_once_with({'seed': None}) def test_reset_problem_closed(self): @@ -573,10 +558,8 @@ class CapaModuleTest(unittest.TestCase): def test_reset_problem_not_done(self): - module = CapaFactory.create() - # Simulate that the problem is NOT done - module.lcp.done = False + module = CapaFactory.create(done=False) # Try to reset the problem get_request_dict = {} @@ -587,10 +570,7 @@ class CapaModuleTest(unittest.TestCase): def test_save_problem(self): - module = CapaFactory.create() - - # Simulate that the problem is not done (not attempted or reset) - module.lcp.done = False + module = CapaFactory.create(done=False) # Save the problem get_request_dict = { CapaFactory.input_key(): '3.14' } @@ -605,10 +585,7 @@ class CapaModuleTest(unittest.TestCase): def test_save_problem_closed(self): - module = CapaFactory.create() - - # Simulate that the problem is NOT done (not attempted or reset) - module.lcp.done = False + module = CapaFactory.create(done=False) # Simulate that the problem is closed with patch('xmodule.capa_module.CapaModule.closed') as mock_closed: @@ -623,10 +600,7 @@ class CapaModuleTest(unittest.TestCase): def test_save_problem_submitted_with_randomize(self): - module = CapaFactory.create(rerandomize='always') - - # Simulate that the problem is completed - module.lcp.done = True + module = CapaFactory.create(rerandomize='always', done=True) # Try to save get_request_dict = { CapaFactory.input_key(): '3.14' } @@ -637,10 +611,7 @@ class CapaModuleTest(unittest.TestCase): def test_save_problem_submitted_no_randomize(self): - module = CapaFactory.create(rerandomize='never') - - # Simulate that the problem is completed - module.lcp.done = True + module = CapaFactory.create(rerandomize='never', done=True) # Try to save get_request_dict = { CapaFactory.input_key(): '3.14' } @@ -697,8 +668,7 @@ class CapaModuleTest(unittest.TestCase): # If user submitted a problem but hasn't reset, # do NOT show the check button # Note: we can only reset when rerandomize="always" - module = CapaFactory.create(rerandomize="always") - module.lcp.done = True + module = CapaFactory.create(rerandomize="always", done=True) self.assertFalse(module.should_show_check_button()) # Otherwise, DO show the check button @@ -709,8 +679,7 @@ class CapaModuleTest(unittest.TestCase): # and we do NOT have a reset button, then we can show the check button # Setting rerandomize to "never" ensures that the reset button # is not shown - module = CapaFactory.create(rerandomize="never") - module.lcp.done = True + module = CapaFactory.create(rerandomize="never", done=True) self.assertTrue(module.should_show_check_button()) @@ -719,35 +688,29 @@ class CapaModuleTest(unittest.TestCase): attempts = random.randint(1,10) # If we're after the deadline, do NOT show the reset button - module = CapaFactory.create(due=self.yesterday_str) - module.lcp.done = True + module = CapaFactory.create(due=self.yesterday_str, done=True) self.assertFalse(module.should_show_reset_button()) # If the user is out of attempts, do NOT show the reset button - module = CapaFactory.create(attempts=attempts, max_attempts=attempts) - module.lcp.done = True + module = CapaFactory.create(attempts=attempts, max_attempts=attempts, done=True) self.assertFalse(module.should_show_reset_button()) # If we're NOT randomizing, then do NOT show the reset button - module = CapaFactory.create(rerandomize="never") - module.lcp.done = True + module = CapaFactory.create(rerandomize="never", done=True) self.assertFalse(module.should_show_reset_button()) # If the user hasn't submitted an answer yet, # then do NOT show the reset button - module = CapaFactory.create() - module.lcp.done = False + module = CapaFactory.create(done=False) self.assertFalse(module.should_show_reset_button()) # Otherwise, DO show the reset button - module = CapaFactory.create() - module.lcp.done = True + module = CapaFactory.create(done=True) self.assertTrue(module.should_show_reset_button()) # If survey question for capa (max_attempts = 0), # DO show the reset button - module = CapaFactory.create(max_attempts=0) - module.lcp.done = True + module = CapaFactory.create(max_attempts=0, done=True) self.assertTrue(module.should_show_reset_button()) @@ -756,58 +719,52 @@ class CapaModuleTest(unittest.TestCase): attempts = random.randint(1,10) # If we're after the deadline, do NOT show the save button - module = CapaFactory.create(due=self.yesterday_str) - module.lcp.done = True + module = CapaFactory.create(due=self.yesterday_str, done=True) self.assertFalse(module.should_show_save_button()) # If the user is out of attempts, do NOT show the save button - module = CapaFactory.create(attempts=attempts, max_attempts=attempts) - module.lcp.done = True + module = CapaFactory.create(attempts=attempts, max_attempts=attempts, done=True) self.assertFalse(module.should_show_save_button()) # If user submitted a problem but hasn't reset, do NOT show the save button - module = CapaFactory.create(rerandomize="always") - module.lcp.done = True + module = CapaFactory.create(rerandomize="always", done=True) self.assertFalse(module.should_show_save_button()) # Otherwise, DO show the save button - module = CapaFactory.create() - module.lcp.done = False + module = CapaFactory.create(done=False) self.assertTrue(module.should_show_save_button()) # If we're not randomizing, then we can re-save - module = CapaFactory.create(rerandomize="never") - module.lcp.done = True + module = CapaFactory.create(rerandomize="never", done=True) self.assertTrue(module.should_show_save_button()) # If survey question for capa (max_attempts = 0), # DO show the save button - module = CapaFactory.create(max_attempts=0) - module.lcp.done = False + module = CapaFactory.create(max_attempts=0, done=False) self.assertTrue(module.should_show_save_button()) def test_should_show_save_button_force_save_button(self): # If we're after the deadline, do NOT show the save button # even though we're forcing a save module = CapaFactory.create(due=self.yesterday_str, - force_save_button="true") - module.lcp.done = True + force_save_button="true", + done=True) self.assertFalse(module.should_show_save_button()) # If the user is out of attempts, do NOT show the save button - attempts = random.randint(1,10) + attempts = random.randint(1, 10) module = CapaFactory.create(attempts=attempts, max_attempts=attempts, - force_save_button="true") - module.lcp.done = True + force_save_button="true", + done=True) self.assertFalse(module.should_show_save_button()) # Otherwise, if we force the save button, # then show it even if we would ordinarily # require a reset first module = CapaFactory.create(force_save_button="true", - rerandomize="always") - module.lcp.done = True + rerandomize="always", + done=True) self.assertTrue(module.should_show_save_button()) def test_no_max_attempts(self):