Skip to content

Commit

Permalink
update tests
Browse files Browse the repository at this point in the history
  • Loading branch information
iethree committed May 7, 2024
1 parent 9165b02 commit 277fff3
Show file tree
Hide file tree
Showing 9 changed files with 110 additions and 107 deletions.
53 changes: 32 additions & 21 deletions frontend/src/metabase-types/api/mocks/activity.ts
Original file line number Diff line number Diff line change
@@ -1,33 +1,44 @@
import type {
ActivityModelObject,
PopularItem,
RecentItem,
RecentTableItem,
RecentCollectionItem,
} from "metabase-types/api";

export const createMockModelObject = (
opts?: Partial<ActivityModelObject>,
): ActivityModelObject => ({
name: "Orders",
...opts,
});

export const createMockRecentItem = (
opts?: Partial<RecentItem>,
export const createMockRecentTableItem = (
opts?: Partial<RecentTableItem>,
): RecentItem => ({
id: 1,
model: "table",
model_id: 1,
model_object: createMockModelObject(),
cnt: 1,
max_ts: "2021-03-01T00:00:00.000Z",
user_id: 1,
name: "my_cool_table",
display_name: "My Cool Table",
timestamp: "2021-03-01T00:00:00.000Z",
database: {
id: 1,
name: "My Cool Collection",
initial_sync_status: "complete",
},
...opts,
});

export const createMockPopularItem = (
opts?: Partial<PopularItem>,
): PopularItem => ({
model: "table",
model_id: 1,
model_object: createMockModelObject(),
export const createMockRecentCollectionItem = (
opts?: Partial<RecentCollectionItem>,
): RecentItem => ({
id: 1,
model: "card",
name: "My Cool Question",
timestamp: "2021-03-01T00:00:00.000Z",
parent_collection: {
id: 1,
name: "My Cool Collection",
},
...opts,
});

export const createMockPopularTableItem = (
opts?: Partial<RecentTableItem>,
): PopularItem => createMockRecentTableItem(opts);

export const createMockPopularCollectionItem = (
opts?: Partial<RecentCollectionItem>,
): PopularItem => createMockRecentCollectionItem(opts);
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,8 @@ import type {
} from "metabase-types/api";
import {
createMockDatabase,
createMockPopularItem,
createMockRecentItem,
createMockPopularTableItem,
createMockRecentTableItem,
createMockUser,
} from "metabase-types/api/mocks";
import {
Expand Down Expand Up @@ -86,8 +86,8 @@ describe("HomeContent", () => {
first_login: "2020-01-05T00:00:00Z",
}),
databases: [createMockDatabase()],
recentItems: [createMockRecentItem()],
popularItems: [createMockPopularItem()],
recentItems: [createMockRecentTableItem()],
popularItems: [createMockPopularTableItem()],
});

expect(
Expand All @@ -103,7 +103,7 @@ describe("HomeContent", () => {
first_login: "2020-01-05T00:00:00Z",
}),
databases: [createMockDatabase()],
popularItems: [createMockPopularItem()],
popularItems: [createMockPopularTableItem()],
});

expect(
Expand All @@ -119,7 +119,7 @@ describe("HomeContent", () => {
first_login: "2020-01-01T00:00:00Z",
}),
databases: [createMockDatabase()],
recentItems: [createMockRecentItem()],
recentItems: [createMockRecentTableItem()],
});

expect(screen.getByText("Pick up where you left off")).toBeInTheDocument();
Expand All @@ -146,7 +146,7 @@ describe("HomeContent", () => {
first_login: "2020-01-10T00:00:00Z",
}),
databases: [createMockDatabase()],
recentItems: [createMockRecentItem()],
recentItems: [createMockRecentTableItem()],
});

expect(screen.getByText(/Here are some explorations/)).toBeInTheDocument();
Expand All @@ -160,7 +160,7 @@ describe("HomeContent", () => {
first_login: "2020-01-10T00:00:00Z",
}),
databases: [createMockDatabase()],
recentItems: [createMockRecentItem()],
recentItems: [createMockRecentTableItem()],
isXrayEnabled: false,
});

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,28 @@ import { screen } from "@testing-library/react";
import { setupPopularItemsEndpoints } from "__support__/server-mocks";
import { renderWithProviders, waitForLoaderToBeRemoved } from "__support__/ui";
import type { PopularItem } from "metabase-types/api";
import { createMockPopularItem } from "metabase-types/api/mocks";
import { createMockPopularCollectionItem } from "metabase-types/api/mocks";

import { HomePopularSection } from "./HomePopularSection";

interface SetupOpts {
popularItems: PopularItem[];
}

const samplePopularItems = [
createMockPopularCollectionItem({
model: "dashboard",
name: "Metrics",
}),
createMockPopularCollectionItem({
model: "dashboard",
name: "Revenue",
}),
createMockPopularCollectionItem({
model: "card",
name: "Orders",
}),
];
const setup = async ({ popularItems }: SetupOpts) => {
setupPopularItemsEndpoints(popularItems);
renderWithProviders(<HomePopularSection />);
Expand All @@ -20,41 +34,15 @@ const setup = async ({ popularItems }: SetupOpts) => {
describe("HomePopularSection", () => {
it("should render a list of items of the same type", async () => {
await setup({
popularItems: [
createMockPopularItem({
model: "dashboard",
model_object: {
name: "Metrics",
},
}),
createMockPopularItem({
model: "dashboard",
model_object: {
name: "Revenue",
},
}),
],
popularItems: samplePopularItems.slice(0, 2),
});

expect(screen.getByText(/popular dashboards/)).toBeInTheDocument();
});

it("should render a list of items of different types", async () => {
await setup({
popularItems: [
createMockPopularItem({
model: "dashboard",
model_object: {
name: "Metrics",
},
}),
createMockPopularItem({
model: "card",
model_object: {
name: "Revenue",
},
}),
],
popularItems: samplePopularItems,
});

expect(screen.getByText(/popular items/)).toBeInTheDocument();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,10 @@ import { screen } from "@testing-library/react";
import { setupRecentViewsEndpoints } from "__support__/server-mocks";
import { renderWithProviders, waitForLoaderToBeRemoved } from "__support__/ui";
import type { User } from "metabase-types/api";
import { createMockRecentItem, createMockUser } from "metabase-types/api/mocks";
import {
createMockRecentTableItem,
createMockUser,
} from "metabase-types/api/mocks";

import { HomeRecentSection } from "./HomeRecentSection";

Expand All @@ -13,11 +16,10 @@ interface SetupOpts {

const setup = async ({ user = createMockUser() }: SetupOpts = {}) => {
setupRecentViewsEndpoints([
createMockRecentItem({
createMockRecentTableItem({
model: "table",
model_object: {
name: "Orders",
},
name: "ORDERS",
display_name: "Orders",
}),
]);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,7 @@ import { SearchBar } from "metabase/nav/components/search/SearchBar";
import type { CollectionItem, RecentItem } from "metabase-types/api";
import {
createMockCollectionItem,
createMockModelObject,
createMockRecentItem,
createMockRecentTableItem,
createMockUser,
} from "metabase-types/api/mocks";
import {
Expand All @@ -47,9 +46,10 @@ const TEST_RECENT_VIEWS_RESULTS: RecentItem[] = [
"Recents CDE",
"Recents DEF",
].map((name, index) =>
createMockRecentItem({
model_object: createMockModelObject({ name }),
model_id: index + 1,
createMockRecentTableItem({
name,
display_name: name,
id: index + 1,
}),
);

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import { KBarProvider, useKBar } from "kbar";
import { useEffect } from "react";
import { withRouter, type WithRouterProps } from "react-router";
import _ from "underscore";

import {
setupDatabasesEndpoints,
Expand All @@ -20,8 +21,7 @@ import {
createMockCollection,
createMockCollectionItem,
createMockDatabase,
createMockModelObject,
createMockRecentItem,
createMockRecentCollectionItem,
} from "metabase-types/api/mocks";
import {
createMockAdminAppState,
Expand Down Expand Up @@ -76,21 +76,22 @@ const dashboard = createMockCollectionItem({
collection: collection_1,
});

const recents_1 = createMockRecentItem({
const recents_1 = createMockRecentCollectionItem({
..._.pick(model_1, "id", "name"),
model: "dataset",
model_object: createMockModelObject({
...model_1,
collection_id: null,
}),
moderated_status: "verified",
parent_collection: {
id: null,
name: "Our analytics",
},
});

const recents_2 = createMockRecentItem({
const recents_2 = createMockRecentCollectionItem({
..._.pick(dashboard, "id", "name"),
model: "dashboard",
model_object: createMockModelObject({
...dashboard,
collection_id: dashboard.collection?.id,
collection_name: dashboard.collection?.name,
}),
parent_collection: {
id: dashboard.collection?.id as number,
name: dashboard.collection?.name as string,
},
});

mockGetBoundingClientRect();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -275,7 +275,7 @@ describe("QB Actions > initializeQB", () => {

it("does not run question query in notebook mode", async () => {
const runQuestionQuerySpy = jest.spyOn(querying, "runQuestionQuery");
const baseUrl = Urls.question(card);
const baseUrl = Urls.question(card as Card);
const location = getLocationForCard(card, {
pathname: `${baseUrl}/notebook`,
});
Expand Down Expand Up @@ -310,7 +310,7 @@ describe("QB Actions > initializeQB", () => {
});

it("sets QB mode to notebook if opening /notebook route", async () => {
const baseUrl = Urls.question(card);
const baseUrl = Urls.question(card as Card);
const location = getLocationForCard(card, {
pathname: `${baseUrl}/notebook`,
});
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,9 +22,8 @@ import type {
import {
createMockCollectionItem,
createMockCollection,
createMockRecentItem,
createMockTable,
createMockDashboard,
createMockRecentTableItem,
createMockRecentCollectionItem,
createMockUser,
createMockLinkDashboardCard,
} from "metabase-types/api/mocks";
Expand Down Expand Up @@ -284,28 +283,26 @@ describe("LinkViz", () => {
});

it("clicking a recent item should update the entity", async () => {
const recentTableItem = createMockRecentItem({
cnt: 20,
user_id: 20,
const recentTableItem = createMockRecentTableItem({
model: "table",
model_id: 121,
model_object: createMockTable({
id: 121,
name: "Table Uno",
display_name: "Table Uno",
db_id: 20,
}),
id: 121,
name: "Table Uno",
display_name: "Table Uno",
database: {
id: 20,
name: "Database Uno",
initial_sync_status: "complete",
},
});

const recentDashboardItem = createMockRecentItem({
cnt: 20,
user_id: 20,
const recentDashboardItem = createMockRecentCollectionItem({
id: 131,
name: "Dashboard Uno",
model: "dashboard",
model_id: 131,
model_object: createMockDashboard({
id: 131,
name: "Dashboard Uno",
}),
parent_collection: {
id: 1,
name: "Collection Uno",
},
});

setupRecentViewsEndpoints([recentTableItem, recentDashboardItem]);
Expand Down
8 changes: 6 additions & 2 deletions frontend/test/__support__/server-mocks/activity.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,15 @@ import fetchMock from "fetch-mock";
import type { PopularItem, RecentItem, Dashboard } from "metabase-types/api";

export function setupRecentViewsEndpoints(recentlyViewedItems: RecentItem[]) {
fetchMock.get("path:/api/activity/recent_views", recentlyViewedItems);
fetchMock.get("path:/api/activity/recent_views", {
recent_views: recentlyViewedItems,
});
}

export function setupPopularItemsEndpoints(popularItems: PopularItem[]) {
fetchMock.get("path:/api/activity/popular_items", popularItems);
fetchMock.get("path:/api/activity/popular_items", {
popular_items: popularItems,
});
}

export function setupMostRecentlyViewedDashboard(
Expand Down

0 comments on commit 277fff3

Please sign in to comment.