Example #1
0
    def test_sheet_to_value_only_json_with_content(self):
        worksheet = Worksheet()
        worksheet[2, 1].formula = 'Row 1, col 2 formula'
        worksheet[2, 1].value = 'Row 1, col 2 value'
        worksheet[10, 1].formula = 'Row 1, col 10 formula'
        worksheet[10, 1].value = 'Row 1, col 10 value'
        worksheet[1, 5].formula = 'Row 5, col 1 formula'
        worksheet[1, 5].value = 'Row 5, col 1 value'
        worksheet[10, 5].formula = u'Row 5, col 10 formula avec un \xe9'
        worksheet[10, 5].value = u'Row 5, col 10 value avec un autre \xe9'

        expected_json_contents = {
            'name': "Sheet name",
            '1': {
                '5': "Row 5, col 1 value",
            },
            '2': {
                '1': "Row 1, col 2 value",
            },
            '10': {
                '1': "Row 1, col 10 value",
                '5': u"Row 5, col 10 value avec un autre \xe9",
            }
        }
        result = _sheet_to_value_only_json("Sheet name", worksheet)
        self.assertEquals(json.loads(result), expected_json_contents)
Example #2
0
    def test_sheet_to_value_only_json_does_not_include_errors(self):
        self.maxDiff = None

        worksheet = Worksheet()
        worksheet.A1.formula = 'a broken formula'
        worksheet.A1.error = 'TestingError'
        worksheet.A2.formula = 'an OK formula'
        worksheet.A2.value = "23"
        expected_json_contents = {
            'name': "Sheet name",
            '1' : {
                '2' : '23',
            }
        }
        result = _sheet_to_value_only_json("Sheet name", worksheet)
        self.assertEquals(json.loads(result), expected_json_contents)
Example #3
0
    def test_run_worksheet_should_return_worksheet_with_calculated_values_only(
            self, mock_urllib2):
        self.maxDiff = None

        original_sheet = Worksheet()

        original_sheet.A2.formula = '1'
        original_sheet.A2.value = 1

        original_sheet.C3.formula = '5'
        original_sheet.C3.value = 5

        original_sheet.E4.formula = '=A2 + C3'
        original_sheet.E4.value = 6

        expected_sheet = Worksheet()
        expected_sheet.name = 'Untitled'
        for (col, row), cell in original_sheet.items():
            expected_sheet[col, row].value = cell.value
        foreign_sheet = Sheet()
        foreign_sheet.owner = User(username='******', password='******')
        foreign_sheet.owner.save()
        foreign_sheet.contents_json = worksheet_to_json(original_sheet)
        foreign_sheet.calculate()

        mock_opener = mock_urllib2.build_opener.return_value
        mock_urlopen_file = mock_opener.open.return_value
        mock_urlopen_file.read.return_value = _sheet_to_value_only_json(
            foreign_sheet.name,
            worksheet_from_json(foreign_sheet.contents_json))

        worksheet_url = 'ws_url/'
        result = run_worksheet(worksheet_url, None, sentinel.private_key)

        target_url = '%sv%s/json/' % (worksheet_url, CURRENT_API_VERSION)
        self.assertCalledOnce(mock_opener.open,
                              target_url,
                              data=urlencode({
                                  'dirigible_l337_private_key':
                                  sentinel.private_key
                              }))
        self.assertEquals(type(result), Worksheet)
        self.assertEquals(result, expected_sheet)
Example #4
0
 def test_sheet_to_value_only_json_non_string_cell_values(self):
     known_object = object()
     worksheet = Worksheet()
     worksheet.A1.formula = 'an int'
     worksheet.A1.value = 123
     worksheet.A2.formula = 'a float'
     worksheet.A2.value = 1.25
     worksheet.A3.formula = 'a list'
     worksheet.A3.value = [1, 2, 3]
     worksheet.A4.formula = 'an object'
     worksheet.A4.value = known_object
     expected_ko = unicode(known_object)
     expected_json_contents = {
         'name': "Sheet name",
         '1' : {
             '1' : 123,
             '2' : 1.25,
             '3' : [1, 2, 3],
             '4' : expected_ko,
         },
     }
     result = _sheet_to_value_only_json("Sheet name", worksheet)
     self.assertEquals(json.loads(result), expected_json_contents)
    def test_run_worksheet_should_return_worksheet_with_calculated_values_only(self, mock_urllib2):
        self.maxDiff = None

        original_sheet = Worksheet()

        original_sheet.A2.formula = '1'
        original_sheet.A2.value = 1

        original_sheet.C3.formula = '5'
        original_sheet.C3.value = 5

        original_sheet.E4.formula = '=A2 + C3'
        original_sheet.E4.value = 6

        expected_sheet = Worksheet()
        expected_sheet.name = 'Untitled'
        for (col, row), cell in original_sheet.items():
            expected_sheet[col, row].value = cell.value
        foreign_sheet = Sheet()
        foreign_sheet.owner = User(username='******', password='******')
        foreign_sheet.owner.save()
        foreign_sheet.contents_json = worksheet_to_json(original_sheet)
        foreign_sheet.calculate()

        mock_opener = mock_urllib2.build_opener.return_value
        mock_urlopen_file = mock_opener.open.return_value
        mock_urlopen_file.read.return_value = _sheet_to_value_only_json(
            foreign_sheet.name, worksheet_from_json(foreign_sheet.contents_json)
        )

        worksheet_url = 'ws_url/'
        result = run_worksheet(worksheet_url, None, sentinel.private_key)

        target_url = '%sv%s/json/' % (worksheet_url, CURRENT_API_VERSION)
        self.assertCalledOnce(mock_opener.open, target_url, data=urlencode({'dirigible_l337_private_key': sentinel.private_key}))
        self.assertEquals(type(result), Worksheet)
        self.assertEquals(result, expected_sheet)
Example #6
0
 def test_sheet_to_value_only_json_for_empty_worksheet(self):
     expected = dict(name='A sheet name')
     result = _sheet_to_value_only_json("A sheet name", Worksheet())
     self.assertEquals(json.loads(result), expected)