Skip to content
Snippets Groups Projects
Unverified Commit bea54e1e authored by Anton Kulyk's avatar Anton Kulyk Committed by GitHub
Browse files

Fix saving nested questions to Our Analytics (#18383)

* Unskip the repro test

* Fix duplicate variable calc

* Fix schema update with blank tables state
parent 3a4ff619
Branches
Tags
No related merge requests found
......@@ -54,10 +54,8 @@ export default createEntity({
return state;
}
const virtualQuestionId = getQuestionVirtualTableId(question);
return updateIn(
state,
[getCollectionVirtualSchemaId(question.collection), "tables"],
tables => addTableAvoidingDuplicates(tables, virtualQuestionId),
return updateIn(state, [schema, "tables"], tables =>
addTableAvoidingDuplicates(tables, virtualQuestionId),
);
}
......@@ -68,16 +66,12 @@ export default createEntity({
return state;
}
const virtualQuestionId = getQuestionVirtualTableId(question);
return updateIn(
state,
[getCollectionVirtualSchemaId(question.collection), "tables"],
tables => {
if (question.archived) {
return tables.filter(id => id !== virtualQuestionId);
}
return addTableAvoidingDuplicates(tables, virtualQuestionId);
},
);
return updateIn(state, [schema, "tables"], tables => {
if (question.archived) {
return tables.filter(id => id !== virtualQuestionId);
}
return addTableAvoidingDuplicates(tables, virtualQuestionId);
});
}
return state;
......@@ -85,5 +79,8 @@ export default createEntity({
});
function addTableAvoidingDuplicates(tables, tableId) {
if (!Array.isArray(tables)) {
return [tableId];
}
return tables.includes(tableId) ? tables : [...tables, tableId];
}
......@@ -167,6 +167,23 @@ describe("schema entity", () => {
});
});
it("should create collection schema's tables when adding a saved question", () => {
const question = getQuestion();
const nextState = Schemas.reducer(
{
[ROOT_COLLECTION_VIRTUAL_SCHEMA]: {},
},
getCreateAction(question),
);
expect(nextState).toEqual({
[ROOT_COLLECTION_VIRTUAL_SCHEMA]: {
tables: [`card__${question.id}`],
},
});
});
it("should not add new question ID if it's already present", () => {
const question = getQuestion();
const id = `card__${question.id}`;
......
......@@ -5,7 +5,7 @@ const questionDetails = {
native: { query: "select REVIEWER from REVIEWS LIMIT 1" },
};
describe.skip("issue 18364", () => {
describe("issue 18364", () => {
beforeEach(() => {
cy.intercept("POST", "/api/card").as("cardCreated");
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment