@seasketch/geoprocessing
Version:
Geoprocessing and reporting framework for SeaSketch 2.0
138 lines • 5.57 kB
JavaScript
import { test, expect } from "vitest";
import React from "react";
import { render } from "@testing-library/react";
import SketchAttributesCard from "./SketchAttributesCard.js";
import { ReportContext } from "../context/index.js";
test("SketchAttributesCard renders all userAttributes", () => {
const { getAllByText } = render(React.createElement(ReportContext.Provider, { value: {
geometryUri: `https://localhost/geom/abc123`,
sketchProperties: {
id: "abc123",
createdAt: new Date().toISOString(),
updatedAt: new Date().toISOString(),
sketchClassId: "123abc",
name: "My Sketch",
isCollection: false,
userAttributes: [
{
exportId: "field1",
label: "Field 1",
fieldType: "TextField",
value: "hi there",
},
{
exportId: "field2",
label: "Number",
fieldType: "NumberField",
value: 1,
},
],
},
projectUrl: "https://example.com/project",
visibleLayers: [],
language: "en",
} },
React.createElement(SketchAttributesCard, null)));
expect(getAllByText("Field 1").length).toBe(1);
expect(getAllByText("Number").length).toBe(1);
});
test("Can deal with null values", () => {
const { getAllByText } = render(React.createElement(ReportContext.Provider, { value: {
geometryUri: `https://localhost/geom/abc123`,
sketchProperties: {
id: "abc123",
createdAt: new Date().toISOString(),
updatedAt: new Date().toISOString(),
sketchClassId: "123abc",
name: "My Sketch",
isCollection: false,
userAttributes: [
{
exportId: "field1",
label: "Field 1",
fieldType: "TextField",
value: "hi there",
},
{
exportId: "field2",
label: "Number",
fieldType: "NumberField",
value: null,
},
],
},
projectUrl: "https://example.com/project",
visibleLayers: [],
language: "en",
} },
React.createElement(SketchAttributesCard, null)));
expect(getAllByText("Field 1").length).toBe(1);
expect(getAllByText("Number").length).toBe(1);
});
test("SketchAttributesCard autoHide option hides card if there are no attributes", () => {
const { getAllByText } = render(React.createElement(ReportContext.Provider, { value: {
geometryUri: `https://localhost/geom/abc123`,
sketchProperties: {
id: "abc123",
createdAt: new Date().toISOString(),
updatedAt: new Date().toISOString(),
sketchClassId: "123abc",
name: "My Sketch",
userAttributes: [],
isCollection: false,
},
projectUrl: "https://example.com/project",
visibleLayers: [],
language: "en",
} },
React.createElement(SketchAttributesCard, { autoHide: true })));
expect(() => getAllByText("Attributes")).toThrow(/Unable to find/);
render(React.createElement(ReportContext.Provider, { value: {
geometryUri: `https://localhost/geom/abc123`,
sketchProperties: {
id: "abc123",
createdAt: new Date().toISOString(),
updatedAt: new Date().toISOString(),
sketchClassId: "123abc",
name: "My Sketch",
userAttributes: [],
isCollection: false,
},
projectUrl: "https://example.com/project",
visibleLayers: [],
language: "en",
} },
React.createElement(SketchAttributesCard, { autoHide: false })));
expect(getAllByText("Attributes").length).toBe(1);
render(React.createElement(ReportContext.Provider, { value: {
geometryUri: `https://localhost/geom/abc123`,
sketchProperties: {
id: "abc123",
createdAt: new Date().toISOString(),
updatedAt: new Date().toISOString(),
sketchClassId: "123abc",
name: "My Sketch",
isCollection: false,
userAttributes: [
{
exportId: "field1",
label: "Field 1",
fieldType: "TextField",
value: "hi there",
},
{
exportId: "field2",
label: "Number",
fieldType: "NumberField",
value: 1,
},
],
},
projectUrl: "https://example.com/project",
visibleLayers: [],
language: "en",
} },
React.createElement(SketchAttributesCard, { autoHide: true })));
expect(getAllByText("Attributes").length).toBe(2);
});
//# sourceMappingURL=SketchAttributesCard.test.js.map