From d3546ce44743f5f670dcd67bdb4ec33f67ca0b8d Mon Sep 17 00:00:00 2001 From: Cal Herries <39073188+calherries@users.noreply.github.com> Date: Mon, 17 Jul 2023 16:42:05 +0300 Subject: [PATCH] Don't display spinners next to schema in query database selector (#32394) --- .../DataSelectorDatabaseSchemaPicker.tsx | 2 +- ...aSelectorDatabaseSchemaPicker.unit.spec.js | 44 ++++++++++++++++++- 2 files changed, 44 insertions(+), 2 deletions(-) diff --git a/frontend/src/metabase/query_builder/components/DataSelector/DataSelectorDatabaseSchemaPicker/DataSelectorDatabaseSchemaPicker.tsx b/frontend/src/metabase/query_builder/components/DataSelector/DataSelectorDatabaseSchemaPicker/DataSelectorDatabaseSchemaPicker.tsx index 796bc78a089..c5f829be031 100644 --- a/frontend/src/metabase/query_builder/components/DataSelector/DataSelectorDatabaseSchemaPicker/DataSelectorDatabaseSchemaPicker.tsx +++ b/frontend/src/metabase/query_builder/components/DataSelector/DataSelectorDatabaseSchemaPicker/DataSelectorDatabaseSchemaPicker.tsx @@ -92,7 +92,7 @@ const DataSelectorDatabaseSchemaPicker = ({ return true; }; - const showSpinner = ({ active }: { active?: boolean }) => !active; + const showSpinner = ({ active }: { active?: boolean }) => active === false; const renderSectionIcon = ({ icon }: { icon?: IconName }) => icon && <Icon className="Icon text-default" name={icon} size={18} />; diff --git a/frontend/src/metabase/query_builder/components/DataSelector/DataSelectorDatabaseSchemaPicker/DataSelectorDatabaseSchemaPicker.unit.spec.js b/frontend/src/metabase/query_builder/components/DataSelector/DataSelectorDatabaseSchemaPicker/DataSelectorDatabaseSchemaPicker.unit.spec.js index 0f8f87f9f75..6d4aa8db712 100644 --- a/frontend/src/metabase/query_builder/components/DataSelector/DataSelectorDatabaseSchemaPicker/DataSelectorDatabaseSchemaPicker.unit.spec.js +++ b/frontend/src/metabase/query_builder/components/DataSelector/DataSelectorDatabaseSchemaPicker/DataSelectorDatabaseSchemaPicker.unit.spec.js @@ -1,7 +1,34 @@ -import { render, screen } from "@testing-library/react"; +import { render } from "@testing-library/react"; +import { checkNotNull } from "metabase/core/utils/types"; +import { getMetadata } from "metabase/selectors/metadata"; +import { createMockDatabase, createMockSchema } from "metabase-types/api/mocks"; +import { createMockState } from "metabase-types/store/mocks"; +import { createMockEntitiesState } from "__support__/store"; +import { renderWithProviders, screen } from "__support__/ui"; import DataSelectorDatabaseSchemaPicker from "./DataSelectorDatabaseSchemaPicker"; +const setup = opts => { + const state = createMockState({ + entities: createMockEntitiesState({ databases: [opts.database] }), + }); + const metadata = getMetadata(state); + const database = checkNotNull(metadata.database(opts.database.id)); + const schemas = database.getSchemas(); + + renderWithProviders( + <DataSelectorDatabaseSchemaPicker + selectedDatabase={database} + selectedSchema={schemas[0]} + databases={[database]} + schemas={schemas} + onChangeSchema={jest.fn()} + onChangeDatabase={jest.fn()} + />, + { storeInitialState: state }, + ); +}; + describe("DataSelectorDatabaseSchemaPicker", () => { it("displays loading message when it has no databases", () => { render(<DataSelectorDatabaseSchemaPicker databases={[]} />); @@ -62,4 +89,19 @@ describe("DataSelectorDatabaseSchemaPicker", () => { expect(screen.getByText("Saved Questions")).toBeInTheDocument(); }); }); + + it("doesn't display a loading spinner next to a schema when the database has initial_sync_status='incomplete'", () => { + const database = createMockDatabase({ + initial_sync_status: "incomplete", + schemas: [ + createMockSchema({ id: 1, name: "Schema 1" }), + createMockSchema({ id: 2, name: "Schema 2" }), + ], + }); + setup({ database }); + // There should only be one loading-spinner next to the database name, and not the schema names + expect(screen.getByTestId("loading-spinner")).toBeInTheDocument(); + expect(screen.getByText("Schema 1")).toBeInTheDocument(); + expect(screen.getByText("Schema 2")).toBeInTheDocument(); + }); }); -- GitLab