From c658c6514925634ad26c676011aaa59835efa56c Mon Sep 17 00:00:00 2001 From: Diana Huang Date: Mon, 25 Mar 2013 15:00:45 -0400 Subject: [PATCH 1/3] Add new Matlab unit tests. --- common/lib/capa/capa/tests/test_inputtypes.py | 63 +++++++++++++++++++ 1 file changed, 63 insertions(+) diff --git a/common/lib/capa/capa/tests/test_inputtypes.py b/common/lib/capa/capa/tests/test_inputtypes.py index 250cedd549..911fdd07d2 100644 --- a/common/lib/capa/capa/tests/test_inputtypes.py +++ b/common/lib/capa/capa/tests/test_inputtypes.py @@ -381,6 +381,32 @@ class MatlabTest(unittest.TestCase): self.assertEqual(context, expected) + def test_rendering_while_queued(self): + state = {'value': 'print "good evening"', + 'status': 'incomplete', + 'input_state': {'queuestate': 'queued'}, + } + elt = etree.fromstring(self.xml) + + input_class = lookup_tag('matlabinput') + the_input = self.input_class(test_system, elt, state) + context = the_input._get_render_context() + expected = {'id': 'prob_1_2', + 'value': 'print "good evening"', + 'status': 'queued', + 'msg': self.input_class.plot_submitted_msg, + 'mode': self.mode, + 'rows': self.rows, + 'cols': self.cols, + 'queue_msg': '', + 'linenumbers': 'true', + 'hidden': '', + 'tabsize': int(self.tabsize), + 'queue_len': '1', + } + + self.assertEqual(context, expected) + def test_plot_data(self): get = {'submission': 'x = 1234;'} response = self.the_input.handle_ajax("plot", get) @@ -391,6 +417,43 @@ class MatlabTest(unittest.TestCase): self.assertTrue(self.the_input.input_state['queuekey'] is not None) self.assertEqual(self.the_input.input_state['queuestate'], 'queued') + def test_ungraded_response_success(self): + queuekey = 'abcd' + input_state = {'queuekey': queuekey, 'queuestate': 'queued'} + state = {'value': 'print "good evening"', + 'status': 'incomplete', + 'input_state': input_state, + 'feedback': {'message': '3'}, } + elt = etree.fromstring(self.xml) + + the_input = self.input_class(test_system, elt, state) + inner_msg = 'hello!' + queue_msg = json.dumps({'msg': inner_msg}) + + the_input.ungraded_response(queue_msg, queuekey) + self.assertTrue(input_state['queuekey'] is None) + self.assertTrue(input_state['queuestate'] is None) + self.assertEqual(input_state['queue_msg'], inner_msg) + + def test_ungraded_response_key_mismatch(self): + queuekey = 'abcd' + input_state = {'queuekey': queuekey, 'queuestate': 'queued'} + state = {'value': 'print "good evening"', + 'status': 'incomplete', + 'input_state': input_state, + 'feedback': {'message': '3'}, } + elt = etree.fromstring(self.xml) + + the_input = self.input_class(test_system, elt, state) + inner_msg = 'hello!' + queue_msg = json.dumps({'msg': inner_msg}) + + the_input.ungraded_response(queue_msg, 'abc') + self.assertEqual(input_state['queuekey'], queuekey) + self.assertEqual(input_state['queuestate'], 'queued') + self.assertFalse('queue_msg' in input_state) + + From 8cd4220b5fb79e211d61ac16555694d68abeb3c1 Mon Sep 17 00:00:00 2001 From: Diana Huang Date: Wed, 3 Apr 2013 09:15:38 -0400 Subject: [PATCH 2/3] Fix the conditions by which we show the queueing message for Matlab inputs --- common/lib/capa/capa/inputtypes.py | 6 +++--- common/lib/capa/capa/tests/test_inputtypes.py | 2 -- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/common/lib/capa/capa/inputtypes.py b/common/lib/capa/capa/inputtypes.py index b4e9fe1654..901ab25e60 100644 --- a/common/lib/capa/capa/inputtypes.py +++ b/common/lib/capa/capa/inputtypes.py @@ -655,11 +655,11 @@ class MatlabInput(CodeInput): # Check if problem has been queued self.queuename = 'matlab' self.queue_msg = '' - if 'queue_msg' in self.input_state and self.status in ['queued','incomplete', 'unsubmitted']: + if 'queue_msg' in self.input_state and self.status in ['queued', 'incomplete', 'unsubmitted']: self.queue_msg = self.input_state['queue_msg'] - if 'queued' in self.input_state and self.input_state['queuestate'] is not None: + if 'queuestate' in self.input_state and self.input_state['queuestate'] == 'queued': self.status = 'queued' - self.queue_len = 1 + self.queue_len = '1' self.msg = self.plot_submitted_msg diff --git a/common/lib/capa/capa/tests/test_inputtypes.py b/common/lib/capa/capa/tests/test_inputtypes.py index 911fdd07d2..e7f0b784bc 100644 --- a/common/lib/capa/capa/tests/test_inputtypes.py +++ b/common/lib/capa/capa/tests/test_inputtypes.py @@ -361,7 +361,6 @@ class MatlabTest(unittest.TestCase): 'feedback': {'message': '3'}, } elt = etree.fromstring(self.xml) - input_class = lookup_tag('matlabinput') the_input = self.input_class(test_system, elt, state) context = the_input._get_render_context() @@ -388,7 +387,6 @@ class MatlabTest(unittest.TestCase): } elt = etree.fromstring(self.xml) - input_class = lookup_tag('matlabinput') the_input = self.input_class(test_system, elt, state) context = the_input._get_render_context() expected = {'id': 'prob_1_2', From 2230fe3c23fdcc225db23b04e752d0d7f2c3a8d8 Mon Sep 17 00:00:00 2001 From: Diana Huang Date: Wed, 3 Apr 2013 15:08:33 -0400 Subject: [PATCH 3/3] Set the queue_len more consistently. --- common/lib/capa/capa/inputtypes.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/common/lib/capa/capa/inputtypes.py b/common/lib/capa/capa/inputtypes.py index 901ab25e60..18bc92f0a3 100644 --- a/common/lib/capa/capa/inputtypes.py +++ b/common/lib/capa/capa/inputtypes.py @@ -659,7 +659,7 @@ class MatlabInput(CodeInput): self.queue_msg = self.input_state['queue_msg'] if 'queuestate' in self.input_state and self.input_state['queuestate'] == 'queued': self.status = 'queued' - self.queue_len = '1' + self.queue_len = 1 self.msg = self.plot_submitted_msg @@ -702,7 +702,7 @@ class MatlabInput(CodeInput): def _extra_context(self): ''' Set up additional context variables''' extra_context = { - 'queue_len': self.queue_len, + 'queue_len': str(self.queue_len), 'queue_msg': self.queue_msg } return extra_context