Files
2026-07-13 12:23:53 +08:00

67 lines
4.2 KiB
JavaScript

// ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
// ┃ ██████ ██████ ██████ █ █ █ █ █ █▄ ▀███ █ ┃
// ┃ ▄▄▄▄▄█ █▄▄▄▄▄ ▄▄▄▄▄█ ▀▀▀▀▀█▀▀▀▀▀ █ ▀▀▀▀▀█ ████████▌▐███ ███▄ ▀█ █ ▀▀▀▀▀ ┃
// ┃ █▀▀▀▀▀ █▀▀▀▀▀ █▀██▀▀ ▄▄▄▄▄ █ ▄▄▄▄▄█ ▄▄▄▄▄█ ████████▌▐███ █████▄ █ ▄▄▄▄▄ ┃
// ┃ █ ██████ █ ▀█▄ █ ██████ █ ███▌▐███ ███████▄ █ ┃
// ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
// ┃ 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 "@perspective-dev/test";
import perspective from "./perspective_client";
((perspective) => {
test.describe("Multiple Server instances", function () {
test("Construct Table from remote View", async function ({ page }) {
await page.goto("/rust/perspective-js/test/html/test.html");
const [json0, json1] = await page.evaluate(async () => {
let perspective = await import(
"http://localhost:6598/node_modules/@perspective-dev/client/dist/esm/perspective.inline.js"
);
const worker0 = await perspective.worker();
const worker1 = await perspective.worker();
const table0 = await worker0.table("x,y\n1,2\n3,4");
const view0 = await table0.view();
const table1 = await worker1.table(view0);
const view1 = await table1.view();
const json0 = await view0.to_json();
const json1 = await view1.to_json();
return [json0, json1];
});
expect(json0).toEqual(json1);
});
test("View on_update transfers to new table", async function ({
page,
}) {
await page.goto("/rust/perspective-js/test/html/test.html");
const [json0, json1] = await page.evaluate(async () => {
let perspective = await import(
"http://localhost:6598/node_modules/@perspective-dev/client/dist/esm/perspective.inline.js"
);
const worker0 = await perspective.worker();
const worker1 = await perspective.worker();
const table0 = await worker0.table("x,y\n1,2\n3,4");
const view0 = await table0.view();
const table1 = await worker1.table(view0);
const view1 = await table1.view();
const { promise, resolve } = Promise.withResolvers();
await view1.on_update(() => resolve());
await table0.update([{ x: 6 }]);
await promise;
const json0 = await view0.to_json();
const json1 = await view1.to_json();
return [json0, json1];
});
expect(json0).toEqual(json1);
});
});
})(perspective);