Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
giswqs
GitHub Repository: giswqs/geemap
Path: blob/master/tests/layer_manager.spec.ts
2313 views
1
import { AnyModel } from "@anywidget/types";
2
import "../js/layer_manager";
3
4
import { default as layerManagerRender, LayerManager, LayerManagerModel } from "../js/layer_manager";
5
import { FakeAnyModel } from "./fake_anywidget";
6
7
describe("<layer-manager>", () => {
8
let layerManager: LayerManager;
9
10
async function makeManager(model: AnyModel<LayerManagerModel>) {
11
const container = document.createElement("div");
12
layerManagerRender.render({
13
model, el: container, experimental: {
14
invoke: () => new Promise(() => [model, []]),
15
}
16
});
17
const element = container.firstElementChild as LayerManager;
18
document.body.appendChild(element);
19
await element.updateComplete;
20
return element;
21
}
22
23
beforeEach(async () => {
24
layerManager = await makeManager(new FakeAnyModel<LayerManagerModel>({
25
visible: true,
26
children: [],
27
}));
28
});
29
30
afterEach(() => {
31
Array.from(document.querySelectorAll("layer-manager")).forEach((el) => {
32
el.remove();
33
})
34
});
35
36
it("can be instantiated.", async () => {
37
expect(layerManager.shadowRoot?.querySelector(".all-layers-text")).toBeDefined();
38
});
39
40
it("sets model properties on property change.", async () => {
41
const setSpy = spyOn(FakeAnyModel.prototype, "set");
42
const saveSpy = spyOn(FakeAnyModel.prototype, "save_changes");
43
layerManager.visible = false;
44
await layerManager.updateComplete;
45
expect(setSpy).toHaveBeenCalledOnceWith("visible", false);
46
expect(saveSpy).toHaveBeenCalledTimes(1);
47
});
48
});
49