90 lines
4.5 KiB
TypeScript
90 lines
4.5 KiB
TypeScript
// ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
|
|
// ┃ ██████ ██████ ██████ █ █ █ █ █ █▄ ▀███ █ ┃
|
|
// ┃ ▄▄▄▄▄█ █▄▄▄▄▄ ▄▄▄▄▄█ ▀▀▀▀▀█▀▀▀▀▀ █ ▀▀▀▀▀█ ████████▌▐███ ███▄ ▀█ █ ▀▀▀▀▀ ┃
|
|
// ┃ █▀▀▀▀▀ █▀▀▀▀▀ █▀██▀▀ ▄▄▄▄▄ █ ▄▄▄▄▄█ ▄▄▄▄▄█ ████████▌▐███ █████▄ █ ▄▄▄▄▄ ┃
|
|
// ┃ █ ██████ █ ▀█▄ █ ██████ █ ███▌▐███ ███████▄ █ ┃
|
|
// ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
|
|
// ┃ Copyright (c) 2017, the Perspective Authors. ┃
|
|
// ┃ ╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌ ┃
|
|
// ┃ This file is part of the Perspective library, distributed under the terms ┃
|
|
// ┃ of the [Apache License 2.0](https://www.apache.org/licenses/LICENSE-2.0). ┃
|
|
// ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
|
|
|
|
import { test, expect } from "../helpers.ts";
|
|
|
|
// Uses test-only plugins ("Debug Styled" / "Debug Alt") declared in the
|
|
// viewer test module so this spec does not depend on the descendant
|
|
// `@perspective-dev/viewer-datagrid` / `-charts` packages.
|
|
test.beforeEach(async ({ page }) => {
|
|
await page.goto("/rust/perspective-viewer/test/html/superstore-debug.html");
|
|
await page.evaluate(async () => {
|
|
while (!window["__TEST_PERSPECTIVE_READY__"]) {
|
|
await new Promise((x) => setTimeout(x, 10));
|
|
}
|
|
});
|
|
});
|
|
|
|
test.describe("Reset", () => {
|
|
test("soft reset restores columns_config after plugin swap", async ({
|
|
page,
|
|
}) => {
|
|
const result = await page.evaluate(async () => {
|
|
const viewer = document.querySelector("perspective-viewer")!;
|
|
await viewer.getTable();
|
|
await viewer.restore({
|
|
plugin: "Debug Styled",
|
|
columns: ["Profit"],
|
|
columns_config: {
|
|
Profit: {
|
|
number_format: {
|
|
style: "currency",
|
|
currency: "USD",
|
|
},
|
|
},
|
|
},
|
|
});
|
|
|
|
await viewer.restore({ plugin: "Debug Alt" });
|
|
await viewer.reset();
|
|
await viewer.flush();
|
|
|
|
// The active plugin is slotted into the viewer's light DOM, not
|
|
// its shadow root.
|
|
const plugin = viewer.querySelector(
|
|
"perspective-viewer-debug-styled",
|
|
) as any;
|
|
|
|
const config = await viewer.save();
|
|
return {
|
|
active_plugin: config.plugin,
|
|
saved_columns_config: config.columns_config,
|
|
applied_columns_config: plugin?._restored_columns_config,
|
|
};
|
|
});
|
|
|
|
// Soft reset reverts to the default plugin ...
|
|
expect(result.active_plugin).toBe("Debug Styled");
|
|
|
|
// ... the preserved `columns_config` is re-applied to that plugin
|
|
// (the plugin's own `restore()` saw it) ...
|
|
expect(result.applied_columns_config).toMatchObject({
|
|
Profit: {
|
|
number_format: {
|
|
style: "currency",
|
|
currency: "USD",
|
|
},
|
|
},
|
|
});
|
|
|
|
// ... and it survives the round-trip back out through `save()`.
|
|
expect(result.saved_columns_config).toMatchObject({
|
|
Profit: {
|
|
number_format: {
|
|
style: "currency",
|
|
currency: "USD",
|
|
},
|
|
},
|
|
});
|
|
});
|
|
});
|