def test_cut_then_paste_same_sheet(self): sheet = Sheet() worksheet = Worksheet() worksheet.A1.formula = 'safe' worksheet.A2.formula = 'topleft' worksheet.B2.formula = 'topright' worksheet.A3.formula = 'bottomleft' worksheet.B3.formula = 'bottomright' sheet.jsonify_worksheet(worksheet) clipboard = Clipboard() clipboard.cut(sheet, (1, 2), (2, 3)) updated_worksheet = sheet.unjsonify_worksheet() self.assertEquals(updated_worksheet.A1.formula, 'safe') self.assertEquals(updated_worksheet.A2, Cell() ) self.assertEquals(updated_worksheet.B2, Cell() ) self.assertEquals(updated_worksheet.A3, Cell() ) clipboard.paste_to(sheet, (2, 3), (2, 3)) updated_worksheet = sheet.unjsonify_worksheet() self.assertEquals(updated_worksheet.A1.formula, 'safe') self.assertEquals(updated_worksheet.A2, Cell() ) self.assertEquals(updated_worksheet.B2, Cell() ) self.assertEquals(updated_worksheet.A3, Cell() ) self.assertEquals(updated_worksheet.B3.formula, 'topleft') self.assertEquals(updated_worksheet.C3.formula, 'topright') self.assertEquals(updated_worksheet.C4.formula, 'bottomright') self.assertEquals(updated_worksheet.B4.formula, 'bottomleft')
def test_cut_calls_copy_then_cuts_and_remembers_some_stuff(self): clipboard = Clipboard() sheet = Sheet() user = User() user.username = '******' user.save() sheet.owner = user clipboard.copy = Mock(wraps=clipboard.copy) worksheet = Worksheet() worksheet.A1.formula = 'outside' worksheet.A2.formula = 'inside' sheet.jsonify_worksheet(worksheet) sheet.save() clipboard.cut(sheet, (1, 2), (3, 4)) self.assertCalledOnce(clipboard.copy, sheet, (1, 2), (3, 4)) worksheet = sheet.unjsonify_worksheet() self.assertEquals(worksheet.A1.formula, 'outside') self.assertEquals(worksheet.A2, Cell()) self.assertEquals(clipboard.source_left, 1) self.assertEquals(clipboard.source_top, 2) self.assertEquals(clipboard.source_right, 3) self.assertEquals(clipboard.source_bottom, 4) self.assertEquals(clipboard.is_cut, True) self.assertEquals(clipboard.source_sheet, sheet)
def test_paste_to_for_cut_different_sheet(self): self.user = User() self.user.save() c2 = Cell() c2.formula = 'foo' c2.formatted_value = 'fv' d2 = Cell() d2.formula = 'fv to become formula' d2.formatted_value = d2.formula c3 = Cell() d3 = Cell() c5 = Cell() c5.formula = 'a safe source cell' dest_cells = { (3, 4): c2, (3, 5): c3, (4, 4): d2, (4, 5): d3, } source_sheet = Sheet() source_sheet.owner = self.user source_sheet.save() clipboard = Clipboard() clipboard.to_cells = Mock() clipboard.to_cells.return_value = dest_cells.iteritems() clipboard.is_cut = True clipboard.source_sheet = source_sheet clipboard.source_left = 3 clipboard.source_top = 2 clipboard.source_right = 4 clipboard.source_bottom = 3 destination_sheet = Sheet() destination_sheet.owner = self.user destination_worksheet = Worksheet() destination_worksheet.C4.formula = 'i am in danger!' destination_worksheet.A1.formula = 'i am safe :-)' destination_sheet.jsonify_worksheet(destination_worksheet) destination_sheet.save() clipboard.paste_to(destination_sheet, (3, 4), (3, 4)) updated_worksheet = destination_sheet.unjsonify_worksheet() self.assertEquals(updated_worksheet.A1.formula, 'i am safe :-)') self.assertEquals(updated_worksheet.C4.formula, c2.formula) self.assertEquals(updated_worksheet.D4.formula, d2.formula) self.assertEquals(updated_worksheet.C5.formula, c3.formula) self.assertEquals(updated_worksheet.d5.formula, d3.formula) # paste should reset the clipboard so that future pastes act as # though they came from a copy self.assertEquals(clipboard.source_left, 3) self.assertEquals(clipboard.source_top, 4) self.assertEquals(clipboard.source_right, 4) self.assertEquals(clipboard.source_bottom, 5) self.assertEquals(clipboard.is_cut, False) self.assertEquals(clipboard.source_sheet, None)
def test_unjsonify_worksheet_should_return_worksheet(self, mock_worksheet_from_json): sheet = Sheet() sheet.contents_json = sentinel.contents_json worksheet = sheet.unjsonify_worksheet() self.assertEquals(worksheet, mock_worksheet_from_json.return_value) self.assertCalledOnce(mock_worksheet_from_json, sentinel.contents_json)
def test_paste_to_should_tile_clipboard_contents_across_selected_range(self): sheet = Sheet() worksheet = Worksheet() worksheet.A1.formula = '=c1' worksheet.B1.formula = '=d1' worksheet.A2.formula = '=c2' worksheet.B2.formula = '=d2' sheet.jsonify_worksheet(worksheet) clipboard = Clipboard() clipboard.copy(sheet, (1, 1), (2, 2)) clipboard.paste_to(sheet, (3, 3), (5, 7)) worksheet = sheet.unjsonify_worksheet() self.assertEquals(worksheet.C3.formula, '=E3') self.assertEquals(worksheet.D3.formula, '=F3') self.assertEquals(worksheet.E3.formula, '=G3') self.assertEquals(worksheet.F3.formula, None) self.assertEquals(worksheet.C4.formula, '=E4') self.assertEquals(worksheet.D4.formula, '=F4') self.assertEquals(worksheet.E4.formula, '=G4') self.assertEquals(worksheet.F4.formula, None) self.assertEquals(worksheet.C5.formula, '=E5') self.assertEquals(worksheet.D5.formula, '=F5') self.assertEquals(worksheet.E5.formula, '=G5') self.assertEquals(worksheet.F5.formula, None) self.assertEquals(worksheet.C6.formula, '=E6') self.assertEquals(worksheet.D6.formula, '=F6') self.assertEquals(worksheet.E6.formula, '=G6') self.assertEquals(worksheet.F6.formula, None) self.assertEquals(worksheet.C7.formula, '=E7') self.assertEquals(worksheet.D7.formula, '=F7') self.assertEquals(worksheet.E7.formula, '=G7') self.assertEquals(worksheet.F7.formula, None) self.assertEquals(worksheet.C8.formula, None) self.assertEquals(worksheet.D8.formula, None) self.assertEquals(worksheet.E8.formula, None) self.assertEquals(worksheet.F8.formula, None)
def test_calculate_calls_calculate_with_unjsonified_worksheet_and_saves_recalced_json( self, mock_calculate ): sheet = Sheet() sheet.jsonify_worksheet = Mock() sheet.unjsonify_worksheet = Mock() sheet.usercode = sentinel.usercode sheet.timeout_seconds = sentinel.timeout_seconds sheet.create_private_key = Mock() sheet.otp = Mock() sheet.calculate() self.assertCalledOnce( mock_calculate, sheet.unjsonify_worksheet.return_value, sheet.usercode, sheet.timeout_seconds, sheet.create_private_key.return_value ) self.assertCalledOnce(sheet.jsonify_worksheet, sheet.unjsonify_worksheet.return_value)
def test_paste_to_for_copy(self): c2 = Cell() c2.formula = 'foo' c2.formatted_value = 'fv' d2 = Cell() d2.formula = 'fv to become formula' d2.formatted_value = d2.formula c3 = Cell() d3 = Cell() cells = { (2, 2): c2, (2, 3): c3, (3, 2): d2, (3, 3): d3, } clipboard = Clipboard() clipboard.source_left = 1 clipboard.source_top = 1 clipboard.source_right = 2 clipboard.source_bottom = 2 clipboard.to_cells = Mock() clipboard.to_cells.return_value = cells.iteritems() sheet = Sheet() worksheet = Worksheet() worksheet.B3.formula = 'i am in danger!' worksheet.A1.formula = 'i am safe :-)' sheet.jsonify_worksheet(worksheet) clipboard.paste_to(sheet, (2, 2), (2, 2)) updated_worksheet = sheet.unjsonify_worksheet() self.assertEquals(updated_worksheet.A1.formula, 'i am safe :-)') self.assertEquals(updated_worksheet.B2.formula, c2.formula) self.assertEquals(updated_worksheet.C2.formula, d2.formula) self.assertEquals(updated_worksheet.B3.formula, c3.formula) self.assertEquals(updated_worksheet.C3.formula, d3.formula)