67 lines
4.2 KiB
JavaScript
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);
|