Skip to content

Commit fb02c09

Browse files
committed
fix: encoding/decoding issue with embed apis (#9224)
* fix: encoding/decoding issue with embed apis * Fix canvas * Add new time range tests
1 parent 30d297e commit fb02c09

2 files changed

Lines changed: 45 additions & 11 deletions

File tree

web-admin/src/features/embeds/init-embed-public-api.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -179,5 +179,5 @@ export function removeEmbedParams(searchParams: URLSearchParams) {
179179
const cleanedParams = new URLSearchParams(searchParams);
180180
EmbedParams.forEach((param) => cleanedParams.delete(param));
181181
const search = cleanedParams.toString();
182-
return decodeURIComponent(search);
182+
return search;
183183
}

web-admin/tests/embeds.spec.ts

Lines changed: 44 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,7 @@ test.describe("Embeds", () => {
104104

105105
expectMessageContaining(
106106
logMessages,
107-
"f=advertiser_name+IN+('Instacart')",
107+
"tr=P7D&grain=day&f=advertiser_name+IN+%28%27Instacart%27%29",
108108
);
109109
});
110110

@@ -151,7 +151,7 @@ test.describe("Embeds", () => {
151151

152152
expectMessageContaining(
153153
logMessages,
154-
`{"id":1337,"result":{"state":"tr=P7D&grain=day&f=advertiser_name+IN+('Instacart')"}}`,
154+
`{"id":1337,"result":{"state":"tr=P7D&grain=day&f=advertiser_name+IN+%28%27Instacart%27%29"}}`,
155155
);
156156
});
157157

@@ -166,16 +166,34 @@ test.describe("Embeds", () => {
166166
{
167167
id: 1337,
168168
method: "setState",
169-
params: "tr=P7D&grain=day&f=advertiser_name+IN+('Instacart')",
169+
params:
170+
"tr=P7D&grain=day&f=advertiser_name+IN+%28%27Instacart%27%29",
170171
},
171172
"*",
172173
);
173174
});
174-
175175
await expect(
176176
frame.getByRole("row", { name: "Instacart $2.1k" }),
177177
).toBeVisible();
178178
expectMessageContaining(logMessages, `{"id":1337,"result":true}`);
179+
180+
// Set new rill syntax that includes `+` in the syntax.
181+
await embedPage.evaluate(() => {
182+
const iframe = document.querySelector("iframe");
183+
iframe?.contentWindow?.postMessage(
184+
{
185+
id: 1338,
186+
method: "setState",
187+
params:
188+
"tr=2D+as+of+latest%2FD%2B1D&grain=day&f=advertiser_name+IN+%28%27Instacart%27%29",
189+
},
190+
"*",
191+
);
192+
});
193+
await expect(
194+
frame.getByRole("row", { name: "Instacart $1.1k" }),
195+
).toBeVisible();
196+
expectMessageContaining(logMessages, `{"id":1338,"result":true}`);
179197
});
180198

181199
test("getThemeMode returns current theme mode", async ({ embedPage }) => {
@@ -347,7 +365,7 @@ test.describe("Embeds", () => {
347365

348366
expectMessageContaining(
349367
logMessages,
350-
"tr=PT6H&compare_tr=rill-PP&grain=hour&f=advertiser_name+IN+('Instacart')",
368+
"tr=PT6H&compare_tr=rill-PP&grain=hour&f=advertiser_name+IN+%28%27Instacart%27%29",
351369
);
352370
});
353371
});
@@ -380,7 +398,7 @@ test.describe("Embeds", () => {
380398

381399
expectMessageContaining(
382400
logMessages,
383-
"tr=PT24H&compare_tr=rill-PP&f.bids_metrics=advertiser_name+IN+('Instacart')",
401+
"tr=PT24H&compare_tr=rill-PP&f.bids_metrics=advertiser_name+IN+%28%27Instacart%27%29",
384402
);
385403
});
386404

@@ -407,7 +425,7 @@ test.describe("Embeds", () => {
407425

408426
expectMessageContaining(
409427
logMessages,
410-
`{"id":1337,"result":{"state":"tr=PT24H&compare_tr=rill-PP&f.bids_metrics=advertiser_name+IN+('Instacart')"}}`,
428+
`{"id":1337,"result":{"state":"tr=PT24H&compare_tr=rill-PP&f.bids_metrics=advertiser_name+IN+%28%27Instacart%27%29"}}`,
411429
);
412430
});
413431

@@ -425,16 +443,32 @@ test.describe("Embeds", () => {
425443
id: 1337,
426444
method: "setState",
427445
params:
428-
"tr=P7D&compare_tr=rill-PW&f=advertiser_name+IN+('Instacart')",
446+
"tr=P7D&compare_tr=rill-PW&f.bids_metrics=advertiser_name+IN+%28%27Instacart%27%29",
429447
},
430448
"*",
431449
);
432450
});
433-
434451
await expect(frame.getByLabel("overall_spend KPI data")).toContainText(
435452
/Advertising Spend Overall\s*\$2,066\s*\+\$1,926 \+1k%\s*vs previous week/,
436453
);
437454
expectMessageContaining(logMessages, `{"id":1337,"result":true}`);
455+
456+
await embedPage.evaluate(() => {
457+
const iframe = document.querySelector("iframe");
458+
iframe?.contentWindow?.postMessage(
459+
{
460+
id: 1338,
461+
method: "setState",
462+
params:
463+
"tr=2D+as+of+latest%2FD%2B1D&grain=day&compare_tr=rill-PP&f.bids_metrics=advertiser_name+IN+%28%27Instacart%27%29",
464+
},
465+
"*",
466+
);
467+
});
468+
await expect(frame.getByLabel("overall_spend KPI data")).toContainText(
469+
/Advertising Spend Overall\s*\$1,128\s*\+\$1,075 \+2k%\s*vs previous period/,
470+
);
471+
expectMessageContaining(logMessages, `{"id":1338,"result":true}`);
438472
});
439473

440474
test("getThemeMode returns current theme mode for canvas", async ({
@@ -509,7 +543,7 @@ test.describe("Embeds", () => {
509543

510544
expectMessageContaining(
511545
logMessages,
512-
"tr=PT6H&compare_tr=rill-PP&f=advertiser_name+IN+('Instacart')",
546+
"tr=PT6H&compare_tr=rill-PP&f=advertiser_name+IN+%28%27Instacart%27%29",
513547
);
514548
});
515549
});

0 commit comments

Comments
 (0)