Ejemplo n.º 1
0
    def test_should_return_errors_and_no_values_if_unjsonify_worksheet_result_has_errors(self, mock_get_object):
        mock_sheet = mock_get_object.return_value
        mock_sheet.owner = self.user

        worksheet = Worksheet()
        worksheet[1, 3].formula = '=string'
        worksheet[1, 3].value = 'test value'
        worksheet._usercode_error = {
            "message": "I am an error message",
            "line": 2
        }
        mock_sheet.unjsonify_worksheet.side_effect = lambda: worksheet
        mock_sheet.allow_json_api_access = True
        self.request.method = 'POST'
        self.request.POST['api_key'] = mock_sheet.api_key = 'key'

        expected_json = {
            "usercode_error" : {
                "message": "I am an error message",
                "line": "2"
            }
        }

        actual = calculate_and_get_json_for_api(self.request, self.user.username, self.sheet.id)

        self.assertFalse(mock_sheet.save.called)
        self.assertTrue(isinstance(actual, HttpResponse))
        self.assertEquals(actual.content, json.dumps(expected_json))
Ejemplo n.º 2
0
 def test_to_ui_json_meta_data_includes_usercode_errors(self):
     sheet = Sheet(width=10, height=5)
     worksheet = Worksheet()
     worksheet._usercode_error = {'message': 'ABC', 'line': 123}
     expected_json_contents = {
         'width': sheet.width,
         'height': sheet.height,
         'name': sheet.name,
         'usercode_error': {
             'message': 'ABC',
             'line': '123'
         }
     }
     self.assertEquals(
         json.loads(sheet_to_ui_json_meta_data(sheet, worksheet)),
         expected_json_contents)
 def test_to_ui_json_meta_data_includes_usercode_errors(self):
     sheet = Sheet(width=10, height=5)
     worksheet = Worksheet()
     worksheet._usercode_error = {
         'message' : 'ABC',
         'line' : 123
     }
     expected_json_contents = {
         'width': sheet.width,
         'height': sheet.height,
         'name': sheet.name,
         'usercode_error' : {
             'message' : 'ABC',
             'line' : '123'
         }
     }
     self.assertEquals(json.loads(sheet_to_ui_json_meta_data(sheet, worksheet)), expected_json_contents)
 def test_calculate_clears_previous_worksheet_usercode_error(self, mock_evaluate_formulae_in_context, mock_execute_usercode):
     worksheet = Worksheet()
     worksheet._usercode_error = "Argh!"
     calculate(worksheet, sentinel.usercode, sentinel.private_key)
     self.assertEquals(worksheet._usercode_error, None)
Ejemplo n.º 5
0
    def test_worksheet_with_data_to_json(self):
        self.maxDiff = None

        worksheet = Worksheet()

        worksheet.B29.formula = "a constant"
        worksheet.B29.value = 56
        worksheet.B29.formatted_value = "fifty-six"
        worksheet.B29.error = "b0rken"

        worksheet.C29.formula = "another constant"
        worksheet.C29.value = ["value", "is", "a", "list"]
        worksheet.C29.formatted_value = "[the same list]"

        class UnJSONableObject(object):
            def __str__(self):
                return "The result of str-ing the object"
        worksheet.D29.formula = None
        worksheet.D29.value = UnJSONableObject()
        worksheet.D29.formatted_value = "The formatted object"

        worksheet.E29.formula = '=1 + 2'
        worksheet.E29.value = 3
        worksheet.E29.formatted_value = "Three"

        worksheet._console_text = "The console text"
        worksheet._usercode_error = { "message": "The usercode error", "line": 23 }

        worksheet_json = worksheet_to_json(worksheet)

        self.assertEquals(
            json.loads(worksheet_json),
            {
                u"2,29" : {
                    u"formula" : u"a constant",
                    u"value" : 56,
                    u"formatted_value": u"fifty-six",
                    u"error": u"b0rken"
                },

                u"3,29" : {
                    u"formula" : u"another constant",
                    u"value" : [u"value", u"is", u"a", u"list"],
                    u"formatted_value": u"[the same list]"
                },

                u"4,29" : {
                    u"formula" : None,
                    u"formatted_value": u"The formatted object",
                },

                u"5,29" : {
                    u"formula" : u"=1 + 2",
                    u"python_formula" : u"1 + 2",
                    u"value": 3,
                    u"formatted_value": u"Three",
                },

                u"_console_text": u"The console text",
                u"_usercode_error": { u"message": u"The usercode error", u"line": 23 },
            }
        )
Ejemplo n.º 6
0
 def test_calculate_clears_previous_worksheet_usercode_error(
         self, mock_evaluate_formulae_in_context, mock_execute_usercode):
     worksheet = Worksheet()
     worksheet._usercode_error = "Argh!"
     calculate(worksheet, sentinel.usercode, sentinel.private_key)
     self.assertEquals(worksheet._usercode_error, None)