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)
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)
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)
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)
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)