From a547401e08cdd21d77e30a5bb8c910ebfaf7d0ed Mon Sep 17 00:00:00 2001 From: Candid Dauth Date: Mon, 15 Apr 2024 05:23:46 +0200 Subject: [PATCH] Import client v4 in integration tests --- ...facilmap-client-npm-4.1.1-841eedca5b.patch | 90 +++++++++++++++++++ client/src/client.ts | 2 +- integration-tests/package.json | 2 +- .../src/socket-v3/padData.test.ts | 4 +- integration-tests/src/utils.ts | 23 ++--- yarn.lock | 31 ++++--- 6 files changed, 128 insertions(+), 24 deletions(-) create mode 100644 .yarn/patches/facilmap-client-npm-4.1.1-841eedca5b.patch diff --git a/.yarn/patches/facilmap-client-npm-4.1.1-841eedca5b.patch b/.yarn/patches/facilmap-client-npm-4.1.1-841eedca5b.patch new file mode 100644 index 00000000..d10b490a --- /dev/null +++ b/.yarn/patches/facilmap-client-npm-4.1.1-841eedca5b.patch @@ -0,0 +1,90 @@ +diff --git a/dist/facilmap-client.d.ts b/dist/facilmap-client.d.ts +index 80360fe16876fe53bcad94efe2ef607c0be793ee..442708ef08dd539c393924c86f510785697130da 100644 +--- a/dist/facilmap-client.d.ts ++++ b/dist/facilmap-client.d.ts +@@ -1,45 +1,45 @@ +-import { Bbox } from 'facilmap-types'; +-import { BboxWithZoom } from 'facilmap-types'; +-import { CRU } from 'facilmap-types'; +-import { EventHandler } from 'facilmap-types'; +-import { EventName } from 'facilmap-types'; +-import { FindOnMapQuery } from 'facilmap-types'; +-import { FindPadsQuery } from 'facilmap-types'; +-import { FindPadsResult } from 'facilmap-types'; +-import { FindQuery } from 'facilmap-types'; +-import { GetPadQuery } from 'facilmap-types'; +-import { HistoryEntry } from 'facilmap-types'; +-import { ID } from 'facilmap-types'; +-import { Line } from 'facilmap-types'; +-import { LineExportRequest } from 'facilmap-types'; +-import { LineTemplate } from 'facilmap-types'; +-import { LineTemplateRequest } from 'facilmap-types'; +-import { LineToRouteCreate } from 'facilmap-types'; ++import { Bbox } from 'facilmap-types-v4'; ++import { BboxWithZoom } from 'facilmap-types-v4'; ++import { CRU } from 'facilmap-types-v4'; ++import { EventHandler } from 'facilmap-types-v4'; ++import { EventName } from 'facilmap-types-v4'; ++import { FindOnMapQuery } from 'facilmap-types-v4'; ++import { FindPadsQuery } from 'facilmap-types-v4'; ++import { FindPadsResult } from 'facilmap-types-v4'; ++import { FindQuery } from 'facilmap-types-v4'; ++import { GetPadQuery } from 'facilmap-types-v4'; ++import { HistoryEntry } from 'facilmap-types-v4'; ++import { ID } from 'facilmap-types-v4'; ++import { Line } from 'facilmap-types-v4'; ++import { LineExportRequest } from 'facilmap-types-v4'; ++import { LineTemplate } from 'facilmap-types-v4'; ++import { LineTemplateRequest } from 'facilmap-types-v4'; ++import { LineToRouteCreate } from 'facilmap-types-v4'; + import { ManagerOptions } from 'socket.io-client'; +-import { Marker } from 'facilmap-types'; +-import { MultipleEvents } from 'facilmap-types'; +-import { ObjectWithId } from 'facilmap-types'; +-import { PadData } from 'facilmap-types'; +-import { PadId } from 'facilmap-types'; +-import { PagedResults } from 'facilmap-types'; +-import { Route } from 'facilmap-types'; +-import { RouteClear } from 'facilmap-types'; +-import { RouteCreate } from 'facilmap-types'; +-import { RouteExportRequest } from 'facilmap-types'; +-import { RouteInfo } from 'facilmap-types'; +-import { RouteRequest } from 'facilmap-types'; +-import { SearchResult } from 'facilmap-types'; +-import { SetLanguageRequest } from 'facilmap-types'; +-import { SocketEvents } from 'facilmap-types'; ++import { Marker } from 'facilmap-types-v4'; ++import { MultipleEvents } from 'facilmap-types-v4'; ++import { ObjectWithId } from 'facilmap-types-v4'; ++import { PadData } from 'facilmap-types-v4'; ++import { PadId } from 'facilmap-types-v4'; ++import { PagedResults } from 'facilmap-types-v4'; ++import { Route } from 'facilmap-types-v4'; ++import { RouteClear } from 'facilmap-types-v4'; ++import { RouteCreate } from 'facilmap-types-v4'; ++import { RouteExportRequest } from 'facilmap-types-v4'; ++import { RouteInfo } from 'facilmap-types-v4'; ++import { RouteRequest } from 'facilmap-types-v4'; ++import { SearchResult } from 'facilmap-types-v4'; ++import { SetLanguageRequest } from 'facilmap-types-v4'; ++import { SocketEvents } from 'facilmap-types-v4'; + import { SocketOptions } from 'socket.io-client'; +-import { SocketRequest } from 'facilmap-types'; +-import { SocketRequestName } from 'facilmap-types'; +-import { SocketResponse } from 'facilmap-types'; +-import { SocketVersion } from 'facilmap-types'; +-import { TrackPoint } from 'facilmap-types'; +-import { Type } from 'facilmap-types'; +-import { View } from 'facilmap-types'; +-import { Writable } from 'facilmap-types'; ++import { SocketRequest } from 'facilmap-types-v4'; ++import { SocketRequestName } from 'facilmap-types-v4'; ++import { SocketResponse } from 'facilmap-types-v4'; ++import { SocketVersion } from 'facilmap-types-v4'; ++import { TrackPoint } from 'facilmap-types-v4'; ++import { Type } from 'facilmap-types-v4'; ++import { View } from 'facilmap-types-v4'; ++import { Writable } from 'facilmap-types-v4'; + + declare class Client { + private socket; diff --git a/client/src/client.ts b/client/src/client.ts index 0de7b08e..3eaae35b 100644 --- a/client/src/client.ts +++ b/client/src/client.ts @@ -670,7 +670,7 @@ class Client { return this.state.listeningToHistory; } - get padData(): PadData | undefined { + get padData(): (PadData & { writable: Writable }) | undefined { return this.data.padData; } diff --git a/integration-tests/package.json b/integration-tests/package.json index e55cb6fe..40c69294 100644 --- a/integration-tests/package.json +++ b/integration-tests/package.json @@ -22,7 +22,7 @@ "dependencies": { "facilmap-client": "workspace:^", "facilmap-client-v3": "patch:facilmap-client@npm%3A3#../.yarn/patches/facilmap-client-npm-3.4.0-9ca14d53cc.patch", - "facilmap-client-v4": "npm:facilmap-client@4", + "facilmap-client-v4": "patch:facilmap-client@npm%3A4#../.yarn/patches/facilmap-client-npm-4.1.1-841eedca5b.patch", "facilmap-types": "workspace:^", "facilmap-types-v3": "npm:facilmap-types@3", "facilmap-types-v4": "npm:facilmap-types@4", diff --git a/integration-tests/src/socket-v3/padData.test.ts b/integration-tests/src/socket-v3/padData.test.ts index fc8a6784..a28a886a 100644 --- a/integration-tests/src/socket-v3/padData.test.ts +++ b/integration-tests/src/socket-v3/padData.test.ts @@ -1,6 +1,6 @@ import { expect, test, vi } from "vitest"; import { createTemporaryPad, generateTestPadId, getFacilMapUrl, getTemporaryPadData, openClient } from "../utils"; -import { Writable, type PadData, CRU, type FindPadsResult, type PagedResults } from "facilmap-types"; +import { Writable, type PadData, CRU, type FindPadsResult, type PagedResults, SocketVersion } from "facilmap-types"; import { pick } from "lodash-es"; import Client from "facilmap-client"; @@ -249,7 +249,7 @@ test("Rename pad (duplicate IDs)", async () => { test("Delete pad", async () => { const client = await openClient(); - const padData = getTemporaryPadData({}); + const padData = getTemporaryPadData(SocketVersion.V3, {}); await createTemporaryPad(client, padData, async () => { expect(client.deleted).toBe(false); diff --git a/integration-tests/src/utils.ts b/integration-tests/src/utils.ts index b060dd6d..c48ed6e2 100644 --- a/integration-tests/src/utils.ts +++ b/integration-tests/src/utils.ts @@ -1,6 +1,7 @@ import { io, Socket } from "socket.io-client"; import Client from "facilmap-client"; -import { type CRU, type PadData, SocketVersion, type SocketClientToServerEvents, type SocketServerToClientEvents, Writable } from "facilmap-types"; +import ClientV4 from "facilmap-client-v4"; +import { type CRU, type PadData, SocketVersion, type SocketClientToServerEvents, type SocketServerToClientEvents } from "facilmap-types"; import { generateRandomPadId, sleep } from "facilmap-utils"; // Workaround for https://stackoverflow.com/q/64639839/242365 @@ -30,12 +31,14 @@ export async function openSocket(version: V): Promise(id?: string, version: V = SocketVersion.V3 as any): Promise> { - const client = new clientConstructors[version](getFacilMapUrl(), id, { reconnection: false }) as any; +type ClientInstance = InstanceType & { _version: V }; + +export async function openClient(id?: string, version: V = SocketVersion.V3 as any): Promise> { + const client = Object.assign(new clientConstructors[version](getFacilMapUrl(), id, { reconnection: false }) as any, { _version: version }); await new Promise((resolve, reject) => { if (id != null) { client.on("padData", () => { @@ -54,7 +57,7 @@ export function generateTestPadId(): string { return `integration-test-${generateRandomPadId()}`; } -export function getTemporaryPadData>>(data: D): D & Pick, "id" | "writeId" | "adminId"> { +export function getTemporaryPadData["createPad"]>[0]>>(version: V, data: D): D & Pick["createPad"]>[0], "id" | "writeId" | "adminId"> { return { id: generateTestPadId(), writeId: generateTestPadId(), @@ -63,13 +66,13 @@ export function getTemporaryPadData>>(data }; } -export async function createTemporaryPad>, C extends InstanceType>( - client: C, +export async function createTemporaryPad>>( + client: ClientInstance, data: D, - callback?: (createPadData: ReturnType>, padData: PadData & { writable: Writable }, result: Awaited>) => Promise + callback?: (createPadData: ReturnType>, padData: NonNullable["padData"]>, result: Awaited["createPad"]>>) => Promise ): Promise { - const createPadData = getTemporaryPadData(data); - const result = await client.createPad(createPadData); + const createPadData = getTemporaryPadData(client._version, data); + const result = await client.createPad(createPadData as any); try { await callback?.(createPadData, client.padData!, result as any); } finally { diff --git a/yarn.lock b/yarn.lock index 5f065a2c..45da6539 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3913,14 +3913,14 @@ __metadata: languageName: node linkType: hard -"facilmap-client-v4@npm:facilmap-client@4": - version: 4.1.0 - resolution: "facilmap-client@npm:4.1.0" +"facilmap-client-v4@patch:facilmap-client@npm%3A4#../.yarn/patches/facilmap-client-npm-4.1.1-841eedca5b.patch::locator=facilmap-integration-tests%40workspace%3Aintegration-tests": + version: 4.1.1 + resolution: "facilmap-client-v4@patch:facilmap-client@npm%3A4.1.1#../.yarn/patches/facilmap-client-npm-4.1.1-841eedca5b.patch::version=4.1.1&hash=4ef405&locator=facilmap-integration-tests%40workspace%3Aintegration-tests" dependencies: - facilmap-types: ^4.1.0 + facilmap-types: ^4.1.1 serialize-error: ^11.0.3 socket.io-client: ^4.7.5 - checksum: dded594b13c9f4ada8619bb15182984b8a9bb1b08cdc2a29027a775a7835fdfdf33db50fe4465cc9ba8e00d86a09227b1508a270045871869556ffc20b8c6e41 + checksum: 4d88abb6a0a5c4cc7e084918a28261e493b9cae5cac76f8c781e78ab16a0335b3687f5f493a28a16625b0519606bc87d54c921c051ce0c2fdc0b5caba51593a8 languageName: node linkType: hard @@ -3934,6 +3934,17 @@ __metadata: languageName: node linkType: hard +"facilmap-client@npm:4": + version: 4.1.1 + resolution: "facilmap-client@npm:4.1.1" + dependencies: + facilmap-types: ^4.1.1 + serialize-error: ^11.0.3 + socket.io-client: ^4.7.5 + checksum: b07d372100fd7d05bac4a6ad5dd772b42badab6c99e75f7ee51510f26d4d82bc7b367c88e5c00cb8a666ccfb7b48c05ca4b57ce3e91bc69f0270f47c7f5bc905 + languageName: node + linkType: hard + "facilmap-client@workspace:^, facilmap-client@workspace:client": version: 0.0.0-use.local resolution: "facilmap-client@workspace:client" @@ -4021,7 +4032,7 @@ __metadata: "@types/lodash-es": ^4.17.12 facilmap-client: "workspace:^" facilmap-client-v3: "patch:facilmap-client@npm%3A3#../.yarn/patches/facilmap-client-npm-3.4.0-9ca14d53cc.patch" - facilmap-client-v4: "npm:facilmap-client@4" + facilmap-client-v4: "patch:facilmap-client@npm%3A4#../.yarn/patches/facilmap-client-npm-4.1.1-841eedca5b.patch" facilmap-types: "workspace:^" facilmap-types-v3: "npm:facilmap-types@3" facilmap-types-v4: "npm:facilmap-types@4" @@ -4161,13 +4172,13 @@ __metadata: languageName: node linkType: hard -"facilmap-types-v4@npm:facilmap-types@4, facilmap-types@npm:^4.1.0": - version: 4.1.0 - resolution: "facilmap-types@npm:4.1.0" +"facilmap-types-v4@npm:facilmap-types@4, facilmap-types@npm:^4.1.1": + version: 4.1.1 + resolution: "facilmap-types@npm:4.1.1" dependencies: "@types/geojson": ^7946.0.14 zod: ^3.22.4 - checksum: 7d5afea1b80ba99994d9c648fe33c908bf816a9f96be9ae2d011d4691dd4842ecc1df30f6e6a74eb99d5836df7e49112189294ff7cc42d79ab90897ba35b683f + checksum: 70775a479dc0b0ccedf69b5f9fc7306b6d0fe7d50d836889b4ece1b409089620413ddc05c1996889901f9c3ae4e15235b3fc67280424383784fbc49dba4509dc languageName: node linkType: hard