Пример #1
0
    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()
Пример #2
0
    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)
Пример #3
0
    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()
Пример #4
0
    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)
Пример #5
0
    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)
Пример #6
0
    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")
Пример #7
0
    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, {})))
Пример #8
0
    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})
Пример #9
0
    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",
        )
Пример #10
0
    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")
Пример #11
0
    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")