2023-03-06 09:57:25 +00:00
|
|
|
import { AppUrls } from "@dashboard/apps/urls";
|
2023-02-28 13:20:17 +00:00
|
|
|
import * as config from "@dashboard/config";
|
|
|
|
import { ThemeType } from "@saleor/app-sdk/app-bridge";
|
2023-01-27 15:21:19 +00:00
|
|
|
|
|
|
|
describe("AppUrls (apps/urls.ts)", () => {
|
|
|
|
describe("isAppDeepUrlChange", () => {
|
|
|
|
it("Returns true if only nested app path changes", () => {
|
|
|
|
expect(
|
|
|
|
AppUrls.isAppDeepUrlChange(
|
|
|
|
"XYZ",
|
|
|
|
"/apps/XYZ/app/configuration",
|
|
|
|
"/apps/XYZ/app/error",
|
|
|
|
),
|
|
|
|
).toBe(true);
|
|
|
|
});
|
|
|
|
it("Returns false if dashboard path changes outside of app path", () => {
|
|
|
|
expect(
|
|
|
|
AppUrls.isAppDeepUrlChange("XYZ", "/apps/XYZ/configuration", "/orders"),
|
|
|
|
).toBe(false);
|
|
|
|
});
|
|
|
|
});
|
2023-02-28 13:20:17 +00:00
|
|
|
|
|
|
|
describe("resolveAppIframeUrl", () => {
|
|
|
|
afterAll(() => {
|
|
|
|
jest.clearAllMocks();
|
|
|
|
});
|
|
|
|
|
|
|
|
describe("For full URL provided in env", () => {
|
|
|
|
beforeEach(() => {
|
|
|
|
jest
|
|
|
|
.spyOn(config, "getApiUrl")
|
|
|
|
.mockImplementation(() => "https://shop.saleor.cloud/graphql/");
|
|
|
|
});
|
|
|
|
|
|
|
|
it.each<
|
|
|
|
[string, string, Record<string, string> & { theme: ThemeType }, string]
|
|
|
|
>([
|
|
|
|
[
|
|
|
|
"XyZ123",
|
|
|
|
"https://my-app.vercel.app",
|
|
|
|
{ param1: "param1", theme: "light" },
|
|
|
|
"https://my-app.vercel.app?domain=shop.saleor.cloud&saleorApiUrl=https%3A%2F%2Fshop.saleor.cloud%2Fgraphql%2F&id=XyZ123¶m1=param1&theme=light",
|
|
|
|
],
|
|
|
|
[
|
|
|
|
"AbC987",
|
|
|
|
"https://my-app.vercel.app/configuration",
|
|
|
|
{ param1: "param1", param2: "param2", theme: "light" },
|
|
|
|
"https://my-app.vercel.app/configuration?domain=shop.saleor.cloud&saleorApiUrl=https%3A%2F%2Fshop.saleor.cloud%2Fgraphql%2F&id=AbC987¶m1=param1¶m2=param2&theme=light",
|
|
|
|
],
|
|
|
|
])(
|
|
|
|
"Generates valid URL from segments",
|
|
|
|
(id, appUrl, params, expectedUrl) => {
|
|
|
|
const result = AppUrls.resolveAppIframeUrl(id, appUrl, params);
|
|
|
|
|
|
|
|
expect(result).toEqual(expectedUrl);
|
|
|
|
},
|
|
|
|
);
|
|
|
|
});
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Test this scenario for cloud deployments where origin is computed.
|
|
|
|
*
|
|
|
|
* Current jest is not set up for testing location/URL
|
|
|
|
*/
|
|
|
|
test.todo(
|
|
|
|
"Test if URL is valid when API_URL in env is absolute path like /graphql/",
|
|
|
|
);
|
|
|
|
});
|
2023-01-27 15:21:19 +00:00
|
|
|
});
|