Skip to content
Snippets Groups Projects
Unverified Commit 0281e962 authored by Alexander Polyankin's avatar Alexander Polyankin Committed by GitHub
Browse files

Fix tests (#30827)

parent 4243ba6b
No related branches found
No related tags found
No related merge requests found
/* eslint-disable react/display-name, react/prop-types */
import React from "react";
import { renderWithProviders, screen } from "__support__/ui";
import { createMockDatabase, createMockTable } from "metabase-types/api/mocks";
import {
SAMPLE_DATABASE,
MULTI_SCHEMA_DATABASE,
ORDERS_ID,
ORDERS,
SAMPLE_DB_ID,
PRODUCTS,
PEOPLE,
metadata,
} from "__support__/sample_database_fixture";
PRODUCTS_ID,
PEOPLE_ID,
createSampleDatabase,
} from "metabase-types/api/mocks/presets";
import { createMockMetadata } from "__support__/metadata";
import { renderWithProviders, screen } from "__support__/ui";
import * as Urls from "metabase/lib/urls";
import Question from "metabase-lib/Question";
import QuestionDataSource from "./QuestionDataSource";
const MULTI_SCHEMA_DB_ID = 2;
const MULTI_SCHEMA_TABLE1_ID = 100;
const MULTI_SCHEMA_TABLE2_ID = 101;
const BASE_GUI_QUESTION = {
display: "table",
visualization_settings: {},
dataset_query: {
type: "query",
database: SAMPLE_DATABASE.id,
database: SAMPLE_DB_ID,
query: {
"source-table": ORDERS.id,
"source-table": ORDERS_ID,
},
},
};
......@@ -30,7 +39,7 @@ const BASE_NATIVE_QUESTION = {
visualization_settings: {},
dataset_query: {
type: "native",
database: SAMPLE_DATABASE.id,
database: SAMPLE_DB_ID,
native: {
query: "select * from orders",
},
......@@ -44,11 +53,29 @@ const SAVED_QUESTION = {
collection_id: null,
};
const ORDERS_QUERY = {
type: "query",
database: SAMPLE_DB_ID,
query: { "source-table": ORDERS_ID },
};
const PRODUCTS_QUERY = {
type: "query",
database: SAMPLE_DB_ID,
query: { "source-table": PRODUCTS_ID },
};
const PEOPLE_QUERY = {
type: "query",
database: SAMPLE_DB_ID,
query: { "source-table": PEOPLE_ID },
};
const QUERY_IN_MULTI_SCHEMA_DB = {
type: "query",
database: MULTI_SCHEMA_DATABASE.id,
database: MULTI_SCHEMA_DB_ID,
query: {
"source-table": MULTI_SCHEMA_DATABASE.tables[0].id,
"source-table": MULTI_SCHEMA_TABLE1_ID,
},
};
......@@ -56,42 +83,42 @@ const QUERY_IN_MULTI_SCHEMA_DB = {
const ORDERS_PRODUCT_JOIN_CONDITION = [
"=",
["field", ORDERS.PRODUCT_ID.id, null],
["field", PRODUCTS.ID.id, { "join-alias": "Products" }],
["field", ORDERS.PRODUCT_ID, null],
["field", PRODUCTS.ID, { "join-alias": "Products" }],
];
const ORDERS_PEOPLE_JOIN_CONDITION = [
"=",
["field", ORDERS.USER_ID.id, null],
["field", PEOPLE.ID.id, { "join-alias": "People" }],
["field", ORDERS.USER_ID, null],
["field", PEOPLE.ID, { "join-alias": "People" }],
];
const PRODUCTS_JOIN = {
alias: "Products",
condition: ORDERS_PRODUCT_JOIN_CONDITION,
"source-table": PRODUCTS.id,
"source-table": PRODUCTS_ID,
};
const PEOPLE_JOIN = {
alias: "People",
condition: ORDERS_PEOPLE_JOIN_CONDITION,
"source-table": PEOPLE.id,
"source-table": PEOPLE_ID,
};
const QUERY_WITH_PRODUCTS_JOIN = {
type: "query",
database: SAMPLE_DATABASE.id,
database: SAMPLE_DB_ID,
query: {
"source-table": ORDERS.id,
"source-table": ORDERS_ID,
joins: [PRODUCTS_JOIN],
},
};
const QUERY_WITH_PRODUCTS_PEOPLE_JOIN = {
type: "query",
database: SAMPLE_DATABASE.id,
database: SAMPLE_DB_ID,
query: {
"source-table": ORDERS.id,
"source-table": ORDERS_ID,
joins: [PRODUCTS_JOIN, PEOPLE_JOIN],
},
};
......@@ -99,13 +126,13 @@ const QUERY_WITH_PRODUCTS_PEOPLE_JOIN = {
// Filters
const RANDOM_ORDER_ID = 155;
const ORDERS_PK_FILTER = ["=", ["field", ORDERS.ID.id, null], RANDOM_ORDER_ID];
const ORDERS_PK_FILTER = ["=", ["field", ORDERS.ID, null], RANDOM_ORDER_ID];
const ORDER_DETAIL_QUERY = {
type: "query",
database: SAMPLE_DATABASE.id,
database: SAMPLE_DB_ID,
query: {
"source-table": ORDERS.id,
"source-table": ORDERS_ID,
filter: ["and", ORDERS_PK_FILTER],
},
};
......@@ -119,8 +146,31 @@ const SOURCE_QUESTION_COLLECTION_SCHEMA_NAME = "Everything else";
// Factories
function getMetadata() {
return createMockMetadata({
databases: [
createSampleDatabase(),
createMockDatabase({
id: MULTI_SCHEMA_DB_ID,
tables: [
createMockTable({
id: MULTI_SCHEMA_TABLE1_ID,
db_id: MULTI_SCHEMA_DB_ID,
schema: "first_schema",
}),
createMockTable({
id: MULTI_SCHEMA_TABLE2_ID,
db_id: MULTI_SCHEMA_DB_ID,
schema: "second_schema",
}),
],
}),
],
});
}
function getQuestion(card) {
return new Question(card, metadata);
return new Question(card, getMetadata());
}
function getAdHocQuestion(overrides) {
......@@ -143,12 +193,26 @@ function getSavedNativeQuestion(overrides) {
});
}
function getAdHocOrdersQuestion() {
return getAdHocQuestion({ dataset_query: ORDERS_QUERY });
}
function getAdHocProductsQuestion() {
return getAdHocQuestion({ dataset_query: PRODUCTS_QUERY });
}
function getAdHocPeopleQuestion() {
return getAdHocQuestion({ dataset_query: PEOPLE_QUERY });
}
function getNestedQuestionTableMock(isMultiSchemaDB) {
const db = isMultiSchemaDB ? MULTI_SCHEMA_DATABASE : SAMPLE_DATABASE;
const dbId = isMultiSchemaDB ? MULTI_SCHEMA_DB_ID : SAMPLE_DB_ID;
const metadata = getMetadata();
return {
id: SOURCE_QUESTION_VIRTUAL_ID,
db,
db_id: db.id,
db: metadata.database(dbId),
db_id: dbId,
display_name: SOURCE_QUESTION_NAME,
schema_name: SOURCE_QUESTION_COLLECTION_SCHEMA_NAME,
schema: {
......@@ -165,11 +229,11 @@ function getNestedQuestionTableMock(isMultiSchemaDB) {
}
function getAdHocNestedQuestion({ isMultiSchemaDB } = {}) {
const db = isMultiSchemaDB ? MULTI_SCHEMA_DATABASE : SAMPLE_DATABASE;
const dbId = isMultiSchemaDB ? MULTI_SCHEMA_DB_ID : SAMPLE_DB_ID;
const question = getAdHocQuestion({
dataset_query: {
type: "query",
database: db.id,
database: dbId,
query: {
"source-table": SOURCE_QUESTION_VIRTUAL_ID,
},
......@@ -182,11 +246,11 @@ function getAdHocNestedQuestion({ isMultiSchemaDB } = {}) {
}
function getSavedNestedQuestion({ isMultiSchemaDB } = {}) {
const db = isMultiSchemaDB ? MULTI_SCHEMA_DATABASE : SAMPLE_DATABASE;
const dbId = isMultiSchemaDB ? MULTI_SCHEMA_DB_ID : SAMPLE_DB_ID;
const question = getSavedGUIQuestion({
dataset_query: {
type: "query",
database: db.id,
database: dbId,
query: {
"source-table": SOURCE_QUESTION_VIRTUAL_ID,
},
......@@ -424,12 +488,12 @@ describe("QuestionDataSource", () => {
expect(orders).toBeInTheDocument();
expect(orders.closest("a")).toHaveAttribute(
"href",
ORDERS.newQuestion().getUrl(),
getAdHocOrdersQuestion().getUrl(),
);
expect(products).toBeInTheDocument();
expect(products.closest("a")).toHaveAttribute(
"href",
PRODUCTS.newQuestion().getUrl(),
getAdHocProductsQuestion().getUrl(),
);
});
});
......@@ -452,17 +516,17 @@ describe("QuestionDataSource", () => {
expect(orders).toBeInTheDocument();
expect(orders.closest("a")).toHaveAttribute(
"href",
ORDERS.newQuestion().getUrl(),
getAdHocOrdersQuestion().getUrl(),
);
expect(products).toBeInTheDocument();
expect(products.closest("a")).toHaveAttribute(
"href",
PRODUCTS.newQuestion().getUrl(),
getAdHocProductsQuestion().getUrl(),
);
expect(people).toBeInTheDocument();
expect(people.closest("a")).toHaveAttribute(
"href",
PEOPLE.newQuestion().getUrl(),
getAdHocPeopleQuestion().getUrl(),
);
});
});
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment