mirror of
https://github.com/maputnik/editor.git
synced 2026-02-04 19:50:01 +00:00
This is basically the content of #841 with the code review changes and relevant fixes to tests/driver code to pass the tests. CC: @ShellyDCMS After this we should lint the project and add the lint to the CI to make sure it doesn't break. --------- Co-authored-by: ShellyDCMS <60476837+ShellyDCMS@users.noreply.github.com> Co-authored-by: shelly_goldblit <shelly_goldblit@dell.com>
492 lines
10 KiB
TypeScript
492 lines
10 KiB
TypeScript
import { v1 as uuid } from "uuid";
|
|
import MaputnikDriver from "./driver";
|
|
|
|
describe("layers", () => {
|
|
let { beforeAndAfter, given, when, get, should } = new MaputnikDriver();
|
|
beforeAndAfter();
|
|
beforeEach(() => {
|
|
when.setStyle("both");
|
|
when.openLayersModal();
|
|
});
|
|
|
|
describe("ops", () => {
|
|
it("delete", () => {
|
|
var id = when.fillLayersModal({
|
|
type: "background",
|
|
});
|
|
|
|
should.equalStyleStore(
|
|
(a: any) => a.layers,
|
|
[
|
|
{
|
|
id: id,
|
|
type: "background",
|
|
},
|
|
]
|
|
);
|
|
|
|
when.click("layer-list-item:" + id + ":delete");
|
|
|
|
should.equalStyleStore((a: any) => a.layers, []);
|
|
});
|
|
|
|
it("duplicate", () => {
|
|
var styleObj;
|
|
var id = when.fillLayersModal({
|
|
type: "background",
|
|
});
|
|
|
|
should.equalStyleStore(
|
|
(a: any) => a.layers,
|
|
[
|
|
{
|
|
id: id,
|
|
type: "background",
|
|
},
|
|
]
|
|
);
|
|
|
|
when.click("layer-list-item:" + id + ":copy");
|
|
|
|
should.equalStyleStore(
|
|
(a: any) => a.layers,
|
|
[
|
|
{
|
|
id: id + "-copy",
|
|
type: "background",
|
|
},
|
|
{
|
|
id: id,
|
|
type: "background",
|
|
},
|
|
]
|
|
);
|
|
});
|
|
|
|
it("hide", () => {
|
|
var styleObj;
|
|
var id = when.fillLayersModal({
|
|
type: "background",
|
|
});
|
|
|
|
should.equalStyleStore(
|
|
(a: any) => a.layers,
|
|
[
|
|
{
|
|
id: id,
|
|
type: "background",
|
|
},
|
|
]
|
|
);
|
|
|
|
when.click("layer-list-item:" + id + ":toggle-visibility");
|
|
|
|
should.equalStyleStore(
|
|
(a: any) => a.layers,
|
|
[
|
|
{
|
|
id: id,
|
|
type: "background",
|
|
layout: {
|
|
visibility: "none",
|
|
},
|
|
},
|
|
]
|
|
);
|
|
|
|
when.click("layer-list-item:" + id + ":toggle-visibility");
|
|
|
|
should.equalStyleStore(
|
|
(a: any) => a.layers,
|
|
[
|
|
{
|
|
id: id,
|
|
type: "background",
|
|
layout: {
|
|
visibility: "visible",
|
|
},
|
|
},
|
|
]
|
|
);
|
|
});
|
|
});
|
|
|
|
describe("background", () => {
|
|
it("add", () => {
|
|
var id = when.fillLayersModal({
|
|
type: "background",
|
|
});
|
|
|
|
should.equalStyleStore(
|
|
(a: any) => a.layers,
|
|
[
|
|
{
|
|
id: id,
|
|
type: "background",
|
|
},
|
|
]
|
|
);
|
|
});
|
|
|
|
describe("modify", () => {
|
|
function createBackground() {
|
|
// Setup
|
|
var id = uuid();
|
|
|
|
when.selectWithin("add-layer.layer-type", "background");
|
|
when.setValue(
|
|
get.dataAttribute("add-layer.layer-id", "input"),
|
|
"background:" + id
|
|
);
|
|
|
|
when.click("add-layer");
|
|
|
|
should.equalStyleStore(
|
|
(a: any) => a.layers,
|
|
[
|
|
{
|
|
id: "background:" + id,
|
|
type: "background",
|
|
},
|
|
]
|
|
);
|
|
return id;
|
|
}
|
|
|
|
// ====> THESE SHOULD BE FROM THE SPEC
|
|
describe("layer", () => {
|
|
it("expand/collapse");
|
|
it("id", () => {
|
|
var bgId = createBackground();
|
|
|
|
when.click("layer-list-item:background:" + bgId);
|
|
|
|
var id = uuid();
|
|
when.setValue(
|
|
get.dataAttribute("layer-editor.layer-id", "input"),
|
|
"foobar:" + id
|
|
);
|
|
when.click("min-zoom");
|
|
|
|
should.equalStyleStore(
|
|
(a: any) => a.layers,
|
|
[
|
|
{
|
|
id: "foobar:" + id,
|
|
type: "background",
|
|
},
|
|
]
|
|
);
|
|
});
|
|
|
|
it("min-zoom", () => {
|
|
var bgId = createBackground();
|
|
|
|
when.click("layer-list-item:background:" + bgId);
|
|
when.setValue(
|
|
get.dataAttribute("min-zoom", 'input[type="text"]'),
|
|
"1"
|
|
);
|
|
|
|
when.click("layer-editor.layer-id");
|
|
|
|
should.equalStyleStore(
|
|
(a: any) => a.layers,
|
|
[
|
|
{
|
|
id: "background:" + bgId,
|
|
type: "background",
|
|
minzoom: 1,
|
|
},
|
|
]
|
|
);
|
|
|
|
// AND RESET!
|
|
// driver.setValue(driver.get.dataAttribute("min-zoom", "input"), "")
|
|
// driver.click(driver.get.dataAttribute("max-zoom", "input"));
|
|
|
|
// driver.isStyleStoreEqual((a: any) => a.layers, [
|
|
// {
|
|
// "id": 'background:'+bgId,
|
|
// "type": 'background'
|
|
// }
|
|
// ]);
|
|
});
|
|
|
|
it("max-zoom", () => {
|
|
var bgId = createBackground();
|
|
|
|
when.click("layer-list-item:background:" + bgId);
|
|
when.setValue(
|
|
get.dataAttribute("max-zoom", 'input[type="text"]'),
|
|
"1"
|
|
);
|
|
|
|
when.click("layer-editor.layer-id");
|
|
|
|
should.equalStyleStore(
|
|
(a: any) => a.layers,
|
|
[
|
|
{
|
|
id: "background:" + bgId,
|
|
type: "background",
|
|
maxzoom: 1,
|
|
},
|
|
]
|
|
);
|
|
});
|
|
|
|
it("comments", () => {
|
|
var bgId = createBackground();
|
|
var id = uuid();
|
|
|
|
when.click("layer-list-item:background:" + bgId);
|
|
when.setValue(get.dataAttribute("layer-comment", "textarea"), id);
|
|
|
|
when.click("layer-editor.layer-id");
|
|
|
|
should.equalStyleStore(
|
|
(a: any) => a.layers,
|
|
[
|
|
{
|
|
id: "background:" + bgId,
|
|
type: "background",
|
|
metadata: {
|
|
"maputnik:comment": id,
|
|
},
|
|
},
|
|
]
|
|
);
|
|
|
|
// Unset it again.
|
|
// TODO: This fails
|
|
// driver.setValue(driver.getDataAttribute("layer-comment", "textarea"), "");
|
|
// driver.click(driver.getDataAttribute("min-zoom", "input"));
|
|
|
|
// driver.isStyleStoreEqual((a: any) => a.layers, [
|
|
// {
|
|
// "id": 'background:'+bgId,
|
|
// "type": 'background'
|
|
// }
|
|
// ]);
|
|
});
|
|
|
|
it("color", () => {
|
|
var bgId = createBackground();
|
|
|
|
when.click("layer-list-item:background:" + bgId);
|
|
|
|
when.click("spec-field:background-color");
|
|
|
|
should.equalStyleStore(
|
|
(a: any) => a.layers,
|
|
[
|
|
{
|
|
id: "background:" + bgId,
|
|
type: "background",
|
|
},
|
|
]
|
|
);
|
|
});
|
|
});
|
|
|
|
describe("filter", () => {
|
|
it("expand/collapse");
|
|
it("compound filter");
|
|
});
|
|
|
|
describe("paint", () => {
|
|
it("expand/collapse");
|
|
it("color");
|
|
it("pattern");
|
|
it("opacity");
|
|
});
|
|
// <=====
|
|
|
|
describe("json-editor", () => {
|
|
it("expand/collapse");
|
|
it("modify");
|
|
|
|
// TODO
|
|
it.skip("parse error", () => {
|
|
var bgId = createBackground();
|
|
|
|
when.click("layer-list-item:background:" + bgId);
|
|
|
|
var errorSelector = ".CodeMirror-lint-marker-error";
|
|
should.notExist(errorSelector);
|
|
|
|
when.click(".CodeMirror");
|
|
when.typeKeys(
|
|
"\uE013\uE013\uE013\uE013\uE013\uE013\uE013\uE013\uE013\uE013\uE013\uE013 {"
|
|
);
|
|
should.exist(errorSelector);
|
|
});
|
|
});
|
|
});
|
|
});
|
|
|
|
describe("fill", () => {
|
|
it("add", () => {
|
|
var id = when.fillLayersModal({
|
|
type: "fill",
|
|
layer: "example",
|
|
});
|
|
|
|
should.equalStyleStore(
|
|
(a: any) => a.layers,
|
|
[
|
|
{
|
|
id: id,
|
|
type: "fill",
|
|
source: "example",
|
|
},
|
|
]
|
|
);
|
|
});
|
|
|
|
// TODO: Change source
|
|
it("change source");
|
|
});
|
|
|
|
describe("line", () => {
|
|
it("add", () => {
|
|
var id = when.fillLayersModal({
|
|
type: "line",
|
|
layer: "example",
|
|
});
|
|
|
|
should.equalStyleStore(
|
|
(a: any) => a.layers,
|
|
[
|
|
{
|
|
id: id,
|
|
type: "line",
|
|
source: "example",
|
|
},
|
|
]
|
|
);
|
|
});
|
|
|
|
it("groups", () => {
|
|
// TODO
|
|
// Click each of the layer groups.
|
|
});
|
|
});
|
|
|
|
describe("symbol", () => {
|
|
it("add", () => {
|
|
var id = when.fillLayersModal({
|
|
type: "symbol",
|
|
layer: "example",
|
|
});
|
|
|
|
should.equalStyleStore(
|
|
(a: any) => a.layers,
|
|
[
|
|
{
|
|
id: id,
|
|
type: "symbol",
|
|
source: "example",
|
|
},
|
|
]
|
|
);
|
|
});
|
|
});
|
|
|
|
describe("raster", () => {
|
|
it("add", () => {
|
|
var id = when.fillLayersModal({
|
|
type: "raster",
|
|
layer: "raster",
|
|
});
|
|
|
|
should.equalStyleStore(
|
|
(a: any) => a.layers,
|
|
[
|
|
{
|
|
id: id,
|
|
type: "raster",
|
|
source: "raster",
|
|
},
|
|
]
|
|
);
|
|
});
|
|
});
|
|
|
|
describe("circle", () => {
|
|
it("add", () => {
|
|
var id = when.fillLayersModal({
|
|
type: "circle",
|
|
layer: "example",
|
|
});
|
|
|
|
should.equalStyleStore(
|
|
(a: any) => a.layers,
|
|
[
|
|
{
|
|
id: id,
|
|
type: "circle",
|
|
source: "example",
|
|
},
|
|
]
|
|
);
|
|
});
|
|
});
|
|
|
|
describe("fill extrusion", () => {
|
|
it("add", () => {
|
|
var id = when.fillLayersModal({
|
|
type: "fill-extrusion",
|
|
layer: "example",
|
|
});
|
|
|
|
should.equalStyleStore(
|
|
(a: any) => a.layers,
|
|
[
|
|
{
|
|
id: id,
|
|
type: "fill-extrusion",
|
|
source: "example",
|
|
},
|
|
]
|
|
);
|
|
});
|
|
});
|
|
|
|
describe("groups", () => {
|
|
it("simple", () => {
|
|
when.setStyle("geojson");
|
|
|
|
when.openLayersModal();
|
|
when.fillLayersModal({
|
|
id: "foo",
|
|
type: "background",
|
|
});
|
|
|
|
when.openLayersModal();
|
|
when.fillLayersModal({
|
|
id: "foo_bar",
|
|
type: "background",
|
|
});
|
|
|
|
when.openLayersModal();
|
|
when.fillLayersModal({
|
|
id: "foo_bar_baz",
|
|
type: "background",
|
|
});
|
|
|
|
should.beVisible("layer-list-item:foo");
|
|
|
|
should.notBeVisible("layer-list-item:foo_bar");
|
|
should.notBeVisible("layer-list-item:foo_bar_baz");
|
|
|
|
when.click("layer-list-group:foo-0");
|
|
|
|
should.beVisible("layer-list-item:foo");
|
|
should.beVisible("layer-list-item:foo_bar");
|
|
should.beVisible("layer-list-item:foo_bar_baz");
|
|
});
|
|
});
|
|
});
|