def test_reload_config(self): """Test reloading the spreadsheet configurations.""" NEW_SHEETS = {"sheet1": {}, "sheet2": {}} new_config = ConfigMock() new_config.SHEETS = NEW_SHEETS self._ss_mock.sheets = { "sheet1": SheetMock("sheet1", SPREADSHEET_ID), "sheet2": SheetMock("sheet2", SPREADSHEET_ID), } # check if all sheets configurations were reloaded with mock.patch("sheet.Sheet.reload_config") as sheet_reload_mock: with mock.patch("importlib.reload", side_effect=return_module): self._ss_mock.reload_config(new_config) self.assertEqual(self._ss_mock._config, new_config) sheet_reload_mock.assert_has_calls( (mock.call({}), mock.call({}))) # check if configurations were not reloaded with mock.patch("sheet.Sheet.reload_config") as sheet_reload_mock: with mock.patch("importlib.reload", side_effect=return_module): self._ss_mock.reload_config(new_config) sheet_reload_mock.assert_not_called()
def test_actualize_sheets(self): SHEET1 = "sheet1" SHEET2 = "sheet2" SHEET2_ID = 1456241 ss_mock = SpreadsheetMock(CONFIG) ss_mock.sheets = { SHEET1: SheetMock(SHEET1, SPREADSHEET_ID), SHEET2: SheetMock(SHEET2, SPREADSHEET_ID), } execute_mock = mock.Mock(return_value={ "sheets": [{ "properties": { "title": SHEET2, "sheetId": SHEET2_ID } }] }) get_mock = mock.Mock(return_value=mock.Mock(execute=execute_mock)) ss_mock._ss_resource = mock.Mock(get=get_mock) ss_mock._actualize_sheets() self.assertIsNone(ss_mock.sheets.get(SHEET1)) self.assertEqual(ss_mock.sheets[SHEET2].id, SHEET2_ID)
def test_post_requests_w_no_requests(self): """Check if batchUpdate() haven't been called in case of empty requests.""" sheet = SheetMock("sheet1", SPREADSHEET_ID) execute_mock = mock.Mock() ss_resource_mock = mock.Mock(batchUpdate=mock.Mock( return_value=mock.Mock(execute=execute_mock))) sheet._post_requests(ss_resource_mock, []) execute_mock.assert_not_called()
def test_delete_sheets_requests(self): """Check if delete-sheet requests are built fine.""" FIRST_SHEET_ID = 123 SHEETS_IN_CONF = ("sheet_2", ) self._ss_mock.sheets = { "sheet_1": SheetMock("sheet_1", SPREADSHEET_ID, FIRST_SHEET_ID), "sheet_2": SheetMock("sheet_2", SPREADSHEET_ID), } reqs = self._ss_mock._build_delete_sheets_requests(SHEETS_IN_CONF) self.assertEqual(len(reqs), 1) self.assertEqual(reqs[0]["deleteSheet"]["sheetId"], FIRST_SHEET_ID)
def test_reload_config(self): """Check if sheet configurations reloaded correclty.""" sheet = SheetMock("sheet1", SPREADSHEET_ID) CONFIG = {"repo_names": {}} with mock.patch("sheet_builder.SheetBuilder.reload_config" ) as builder_reload_mock: sheet.reload_config(CONFIG) builder_reload_mock.assert_called_once_with(CONFIG) self.assertEqual(sheet._config, CONFIG)
def test_clear_bottom(self): """Check that clearing table bottom works fine.""" sheet = SheetMock("sheet1", SPREADSHEET_ID) execute_mock = mock.Mock() clear_mock = mock.Mock(execute=execute_mock) values_mock = mock.Mock(return_value=mock.Mock(clear=clear_mock)) ss_resource_mock = mock.Mock(values=values_mock) sheet._clear_bottom(ss_resource_mock, 5, 10) clear_mock.assert_called_once_with(spreadsheetId=SPREADSHEET_ID, range="sheet1!A7:J")
def test_update_all_sheets(self): """Update sheets one by one.""" ss_mock = SpreadsheetMock(CONFIG) sheet1 = SheetMock("sheet1", SPREADSHEET_ID) sheet2 = SheetMock("sheet2", SPREADSHEET_ID) ss_mock.sheets = {"sheet1": sheet1, "sheet2": sheet2} with mock.patch("sheet.Sheet.update") as update_sheet: ss_mock.update_all_sheets() # no spreadsheet resource used in # this test, so args will be None update_sheet.assert_has_calls((mock.call(None, {}), mock.call(None, {})))
def test_post_requests(self): """Check if batchUpdate() with given requests were called.""" REQUESTS = [{"req1": {}}] sheet = SheetMock("sheet1", SPREADSHEET_ID) execute_mock = mock.Mock() batch_mock = mock.Mock(return_value=mock.Mock(execute=execute_mock)) ss_resource_mock = mock.Mock(batchUpdate=batch_mock) sheet._post_requests(ss_resource_mock, REQUESTS) batch_mock.assert_called_once_with(spreadsheetId=SPREADSHEET_ID, body={"requests": REQUESTS})
def test_update_structure(self): """ Test spreadsheet structure updating. New sheet creation and old sheet deleting included. """ SHEET3_ID = 5623 RENAME_REQUEST = { "updateSpreadsheetProperties": { "properties": { "title": "MockTitle" }, "fields": "title", } } CREATE_REQUEST = { "addSheet": { "properties": { "title": "sheet1", "gridProperties": { "rowCount": 1000, "columnCount": 26 }, } } } DELETE_REQUEST = {"deleteSheet": {"sheetId": SHEET3_ID}} ss_mock = SpreadsheetMock(CONFIG, "test_id") ss_mock.sheets = { "sheet2": SheetMock("sheet2", SPREADSHEET_ID, 123), "sheet3": SheetMock("sheet3", SPREADSHEET_ID, SHEET3_ID), } batch_mock = self._prepare_batch_mock() ss_mock._ss_resource = mock.Mock(batchUpdate=batch_mock) ss_mock._config_updated = True actual_mock = ss_mock._actualize_sheets = mock.Mock() with mock.patch("sheet_builder.SheetBuilder._login_on_github", return_value=github.Github): ss_mock.update_structure() actual_mock.assert_called_once() batch_mock.assert_called_once_with( body={ "requests": [RENAME_REQUEST, CREATE_REQUEST, DELETE_REQUEST] }, spreadsheetId="ss_id", )
def test_new_sheets_requests(self): """Check if add-new-sheet requests are built fine.""" SHEETS_IN_CONF = ("sheet_1", "sheet_2") self._ss_mock.sheets = { "sheet_1": SheetMock("sheet_1", SPREADSHEET_ID) } with mock.patch("sheet_builder.SheetBuilder", return_value=SheetBuilderMock): reqs = self._ss_mock._build_new_sheets_requests(SHEETS_IN_CONF) self.assertEqual(len(reqs), 1) self.assertEqual(reqs[0]["addSheet"]["properties"]["title"], "sheet_2")
def test_spot_issue_object_updated(self): """Test spotting issues objects.""" sheet = SheetMock("sheet1", SPREADSHEET_ID) # check when issue was updated self.assertEqual( sheet._spot_issue_object("123", {"123": "updated_issue"}), "updated_issue") # check on first update sheet._builder.first_update = True read_mock = mock.Mock(return_value="read_issue") with mock.patch.object(sheet, "_builder", read_issue=read_mock): self.assertEqual( sheet._spot_issue_object("123", {"1253": "Issue"}), "read_issue") # check when issue wasn't updated sheet._builder.first_update = False sheet._builder._issues_index = {"123": "index_issue"} self.assertEqual(sheet._spot_issue_object("123", {"1253": "Issue"}), "index_issue")