Skip to content

Commit

Permalink
test: fix unit tests for arcgis adapter
Browse files Browse the repository at this point in the history
  • Loading branch information
JamesLMilner committed Nov 29, 2023
1 parent cb2b1c5 commit 2d40699
Showing 1 changed file with 40 additions and 13 deletions.
53 changes: 40 additions & 13 deletions src/adapters/arcgis-maps-sdk.adapter.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,16 @@ import Point from "@arcgis/core/geometry/Point";
import { TerraDrawAdapterStyling } from "../common";
import Color from "@arcgis/core/Color";
import MapViewScreenPoint = __esri.MapViewScreenPoint;
import { createMockCallbacks } from "../test/mock-callbacks";

jest.mock("@arcgis/core/views/MapView", () => jest.fn());
jest.mock("@arcgis/core/geometry/Point");
jest.mock("@arcgis/core/geometry/Polyline", () => jest.fn());
jest.mock("@arcgis/core/geometry/Polygon", () => jest.fn());
jest.mock("@arcgis/core/layers/GraphicsLayer");

const remove = jest.fn();

const createMockEsriMapView = () => {
return {
map: {
Expand All @@ -30,7 +33,7 @@ const createMockEsriMapView = () => {
})),
toScreen: jest.fn(() => ({ x: 0, y: 0 })),
toMap: jest.fn(() => ({ latitude: 0, longitude: 0 })),
on: jest.fn(),
on: jest.fn(() => ({ remove })),
} as unknown as MapView;
};

Expand All @@ -54,6 +57,27 @@ describe("TerraDrawArcGISMapsSDKAdapter", () => {
expect(adapter.setCursor).toBeDefined();
});

it("initializes a GraphicsLayer with the internal ID and adds it to the mapView", () => {
const mockGraphicsLayer = { id: "xx" };
const lib = {
GraphicsLayer: jest.fn().mockReturnValue(mockGraphicsLayer),
} as any;
const mockMapView = createMockEsriMapView();
const adapter = new TerraDrawArcGISMapsSDKAdapter({
map: mockMapView,
lib,
});

expect(lib.GraphicsLayer).toHaveBeenCalledTimes(1);
expect(lib.GraphicsLayer).toHaveBeenCalledWith({
id: adapter["_featureLayerName"],
});
expect(mockMapView.map.add).toHaveBeenCalledTimes(1);
expect(mockMapView.map.add).toHaveBeenCalledWith(mockGraphicsLayer);
});
});

describe("register", () => {
it("adds drag and double-click event listeners", () => {
const mockMapView = createMockEsriMapView();
const adapter = new TerraDrawArcGISMapsSDKAdapter({
Expand All @@ -65,6 +89,8 @@ describe("TerraDrawArcGISMapsSDKAdapter", () => {

expect(adapter).toBeDefined();

adapter.register(createMockCallbacks());

expect(mockMapView.on).toHaveBeenCalledTimes(2);
expect(mockMapView.on).toHaveBeenNthCalledWith(
1,
Expand All @@ -77,24 +103,25 @@ describe("TerraDrawArcGISMapsSDKAdapter", () => {
expect.any(Function),
);
});
});

it("initializes a GraphicsLayer with the internal ID and adds it to the mapView", () => {
const mockGraphicsLayer = { id: "xx" };
const lib = {
GraphicsLayer: jest.fn().mockReturnValue(mockGraphicsLayer),
} as any;
describe("unregister", () => {
it("removes drag and double-click event listeners", () => {
const mockMapView = createMockEsriMapView();
const removeAll = jest.fn();
const adapter = new TerraDrawArcGISMapsSDKAdapter({
map: mockMapView,
lib,
lib: {
GraphicsLayer: jest.fn(() => ({ graphics: { removeAll } })),
} as any,
});

expect(lib.GraphicsLayer).toHaveBeenCalledTimes(1);
expect(lib.GraphicsLayer).toHaveBeenCalledWith({
id: adapter["_featureLayerName"],
});
expect(mockMapView.map.add).toHaveBeenCalledTimes(1);
expect(mockMapView.map.add).toHaveBeenCalledWith(mockGraphicsLayer);
expect(adapter).toBeDefined();

adapter.register(createMockCallbacks());
adapter.unregister();
expect(removeAll).toBeCalledTimes(1);
expect(remove).toBeCalledTimes(2);
});
});

Expand Down

0 comments on commit 2d40699

Please sign in to comment.