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

Fix field values endpoints in public & embedded dashboards (#45659)

* Fix field values endpoints

* E2E tests
parent 55d4f0fd
No related branches found
No related tags found
No related merge requests found
......@@ -3203,6 +3203,86 @@ describe("44047", () => {
});
});
describe("issue 45659", () => {
const parameterDetails = {
name: "ID",
slug: "id",
id: "f8ec7c71",
type: "id",
sectionId: "id",
default: [10],
};
const questionDetails = {
name: "People",
query: { "source-table": PEOPLE_ID },
};
const dashboardDetails = {
name: "Dashboard",
parameters: [parameterDetails],
enable_embedding: true,
embedding_params: {
[parameterDetails.slug]: "enabled",
},
};
function createDashboard() {
return cy
.createDashboardWithQuestions({
dashboardDetails,
questions: [questionDetails],
})
.then(({ dashboard, questions: [card] }) => {
addOrUpdateDashboardCard({
dashboard_id: dashboard.id,
card_id: card.id,
card: {
parameter_mappings: [
{
card_id: card.id,
parameter_id: parameterDetails.id,
target: [
"dimension",
["field", PEOPLE.ID, { "base-type": "type/BigInteger" }],
],
},
],
},
}).then(() => ({ dashboard }));
});
}
function verifyFilterWithRemapping() {
filterWidget().findByText("Tressa White").should("be.visible");
}
beforeEach(() => {
restore();
cy.signInAsAdmin();
cy.request("PUT", `/api/field/${PEOPLE.ID}`, {
has_field_values: "list",
});
});
it("should remap initial parameter values in public dashboards (metabase#45659)", () => {
createDashboard().then(({ dashboard }) =>
visitPublicDashboard(dashboard.id),
);
verifyFilterWithRemapping();
});
it("should remap initial parameter values in embedded dashboards (metabase#45659)", () => {
createDashboard().then(({ dashboard }) =>
visitEmbeddedPage({
resource: { dashboard: dashboard.id },
params: {},
}),
);
verifyFilterWithRemapping();
});
});
describe("44266", () => {
const filterDetails = {
name: "Equal to",
......
......@@ -24,9 +24,9 @@ export const usePublicDashboardEndpoints = (props: WithRouterProps) => {
useEffect(() => {
if (uuid) {
setPublicDashboardEndpoints();
setPublicDashboardEndpoints(uuid);
} else if (token) {
setEmbedDashboardEndpoints();
setEmbedDashboardEndpoints(token);
}
}, [uuid, token]);
......
......@@ -461,8 +461,8 @@ export function setPublicQuestionEndpoints(uuid) {
setCardEndpoints("/api/public/card/:uuid", { uuid });
}
export function setPublicDashboardEndpoints() {
setDashboardEndpoints("/api/public");
export function setPublicDashboardEndpoints(uuid) {
setDashboardEndpoints("/api/public/dashboard/:uuid", { uuid });
}
export function setEmbedQuestionEndpoints(token) {
......@@ -471,9 +471,9 @@ export function setEmbedQuestionEndpoints(token) {
}
}
export function setEmbedDashboardEndpoints() {
export function setEmbedDashboardEndpoints(token) {
if (!IS_EMBED_PREVIEW) {
setDashboardEndpoints(embedBase);
setDashboardEndpoints("/api/embed/dashboard/:token", { token });
} else {
setDashboardParameterValuesEndpoint(embedBase);
}
......@@ -486,35 +486,51 @@ function GET_with(url, params, omitKeys) {
function setCardEndpoints(prefix, params) {
CardApi.parameterValues = GET_with(
prefix + "/params/:paramId/values",
`${prefix}/params/:paramId/values`,
params,
["cardId"],
);
CardApi.parameterSearch = GET_with(
prefix + "/params/:paramId/search/:query",
`${prefix}/params/:paramId/search/:query`,
params,
["cardId"],
);
MetabaseApi.field_values = GET_with(
prefix + "/field/:fieldId/values",
`${prefix}/field/:fieldId/values`,
params,
);
MetabaseApi.field_search = GET_with(
prefix + "/field/:fieldId/search/:searchFieldId",
`${prefix}/field/:fieldId/search/:searchFieldId`,
params,
);
MetabaseApi.field_remapping = GET_with(
prefix + "/field/:fieldId/remapping/:remappedFieldId",
`${prefix}/field/:fieldId/remapping/:remappedFieldId`,
params,
);
}
function setDashboardEndpoints(prefix) {
DashboardApi.parameterValues = GET(
`${prefix}/dashboard/:dashId/params/:paramId/values`,
function setDashboardEndpoints(prefix, params) {
DashboardApi.parameterValues = GET_with(
`${prefix}/params/:paramId/values`,
params,
["dashId"],
);
DashboardApi.parameterSearch = GET(
`${prefix}/dashboard/:dashId/params/:paramId/search/:query`,
DashboardApi.parameterSearch = GET_with(
`${prefix}/params/:paramId/search/:query`,
params,
["dashId"],
);
MetabaseApi.field_values = GET_with(
`${prefix}/field/:fieldId/values`,
params,
);
MetabaseApi.field_search = GET_with(
`${prefix}/dashboard/:dashId/field/:fieldId/search/:searchFieldId`,
params,
);
MetabaseApi.field_remapping = GET_with(
`${prefix}/field/:fieldId/remapping/:remappedFieldId`,
params,
);
}
......
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