@itwin/rpcinterface-full-stack-tests 5.2.0-dev.1 → 5.2.0-dev.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -127,10 +127,6 @@ describe("IModelReadRpcInterface Methods from an IModelConnection", () => {
|
|
|
127
127
|
expect(iModel.models.loaded.size).to.equal(1);
|
|
128
128
|
expect(iModel.models.loaded.get(modelId)).to.not.be.undefined;
|
|
129
129
|
});
|
|
130
|
-
it("getClassHierarchy should work as expected", async () => {
|
|
131
|
-
const result = await iModel.findClassFor("BisCore:LineStyle", undefined);
|
|
132
|
-
expect(result).undefined;
|
|
133
|
-
});
|
|
134
130
|
it("getIModelCoordinatesFromGeoCoordinates should work as expected", async () => {
|
|
135
131
|
const wgs84Converter = iModel.geoServices.getConverter("WGS84");
|
|
136
132
|
const nad27Converter = iModel.geoServices.getConverter("NAD27");
|
|
@@ -240,6 +236,38 @@ describe("IModelReadRpcInterface Methods from an IModelConnection", () => {
|
|
|
240
236
|
expect(ranges).to.not.be.undefined;
|
|
241
237
|
expect(ranges.length).to.be.equal(1);
|
|
242
238
|
});
|
|
239
|
+
it("queryExtents should return IModelStatus.InvalidId status for invalid id64", async () => {
|
|
240
|
+
const modelIds = ["notid64"];
|
|
241
|
+
const extents = await iModel.models.queryExtents(modelIds);
|
|
242
|
+
expect(extents).to.not.be.undefined;
|
|
243
|
+
expect(extents.length).to.be.equal(modelIds.length);
|
|
244
|
+
expect(extents.every(e => e.status === core_bentley_1.IModelStatus.InvalidId)).to.be.true;
|
|
245
|
+
expect(extents.every(e => core_geometry_1.Range3d.isNull(core_geometry_1.Range3d.fromJSON(e.extents)))).to.be.true;
|
|
246
|
+
});
|
|
247
|
+
it("queryExtents should return null extents with IModelStatus.Success for models without elements", async () => {
|
|
248
|
+
const modelIds = ["0x1c", "0x20000000001"];
|
|
249
|
+
const extents = await iModel.models.queryExtents(modelIds);
|
|
250
|
+
expect(extents).to.not.be.undefined;
|
|
251
|
+
expect(extents.length).to.be.equal(modelIds.length);
|
|
252
|
+
expect(extents.every(e => e.status === core_bentley_1.IModelStatus.Success)).to.be.true;
|
|
253
|
+
expect(extents.every(e => core_geometry_1.Range3d.isNull(core_geometry_1.Range3d.fromJSON(e.extents)))).to.be.true;
|
|
254
|
+
});
|
|
255
|
+
it("queryExtents should return extents with IModelStatus.Success for models with elements", async () => {
|
|
256
|
+
const modelIds = ["0x22", "0x23", "0x24"];
|
|
257
|
+
const extents = await iModel.models.queryExtents(modelIds);
|
|
258
|
+
expect(extents).to.not.be.undefined;
|
|
259
|
+
expect(extents.length).to.be.equal(modelIds.length);
|
|
260
|
+
expect(extents.every(e => e.status === core_bentley_1.IModelStatus.Success)).to.be.true;
|
|
261
|
+
expect(extents.every(e => core_geometry_1.Range3d.isNull(core_geometry_1.Range3d.fromJSON(e.extents)))).to.be.false;
|
|
262
|
+
});
|
|
263
|
+
it("queryExtents should return null extents with IModelStatus.NotFound non existing models", async () => {
|
|
264
|
+
const modelIds = ["0x11111", "0x22222", "0x33333"];
|
|
265
|
+
const extents = await iModel.models.queryExtents(modelIds);
|
|
266
|
+
expect(extents).to.not.be.undefined;
|
|
267
|
+
expect(extents.length).to.be.equal(modelIds.length);
|
|
268
|
+
expect(extents.every(e => e.status === core_bentley_1.IModelStatus.NotFound)).to.be.true;
|
|
269
|
+
expect(extents.every(e => core_geometry_1.Range3d.isNull(core_geometry_1.Range3d.fromJSON(e.extents)))).to.be.true;
|
|
270
|
+
});
|
|
243
271
|
it("getMassProperties should work as expected", async () => {
|
|
244
272
|
const requestProps = {
|
|
245
273
|
operation: core_common_1.MassPropertiesOperation.AccumulateVolumes,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IModelConnection.test.js","sourceRoot":"","sources":["../../src/frontend/IModelConnection.test.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\nimport { Buffer } from \"buffer\";\nimport * as chai from \"chai\";\nimport { AccessToken, BentleyStatus, CompressedId64Set, Id64, Id64Set } from \"@itwin/core-bentley\";\nimport { Matrix4d, Point3d, XYZProps, YawPitchRollAngles } from \"@itwin/core-geometry\";\nimport {\n EcefLocation, GeoCoordStatus, IModelReadRpcInterface, IModelVersion, MassPropertiesOperation, MassPropertiesPerCandidateRequestProps, MassPropertiesRequestProps, ModelQueryParams,\n} from \"@itwin/core-common\";\nimport { CheckpointConnection, IModelApp, IModelConnection, SpatialModelState } from \"@itwin/core-frontend\";\nimport { TestFrontendAuthorizationClient } from \"@itwin/oidc-signin-tool/lib/cjs/frontend\";\nimport { TestContext } from \"./setup/TestContext\";\n\n/* eslint-disable @typescript-eslint/no-deprecated */\n\nconst expect = chai.expect;\n\n(global as any).btoa = (str: string) => {\n const buffer = Buffer.from(str, \"binary\");\n return buffer.toString(\"base64\");\n};\n\ndescribe(\"IModel Connection\", () => {\n let accessToken: AccessToken;\n let testContext: TestContext;\n\n before(async function () {\n testContext = await TestContext.instance();\n\n if (!testContext.settings.runiModelReadRpcTests)\n this.skip();\n\n accessToken = testContext.serviceAuthToken;\n IModelApp.authorizationClient = new TestFrontendAuthorizationClient(accessToken);\n });\n\n it(\"should successfully open an IModelConnection for read\", async () => {\n const iTwinId = testContext.iModelWithChangesets!.iTwinId;\n const iModelId = testContext.iModelWithChangesets!.iModelId;\n\n const iModel: IModelConnection = await CheckpointConnection.openRemote(iTwinId, iModelId);\n\n expect(iModel).to.exist.and.be.not.empty;\n\n const iModelRpcProps = iModel.getRpcProps();\n expect(iModelRpcProps).to.exist.and.be.not.empty;\n });\n\n it(\"should successfully close an open an IModelConnection\", async () => {\n const iModelId = testContext.iModelWithChangesets!.iModelId;\n const iTwinId = testContext.iModelWithChangesets!.iTwinId;\n const iModel = await CheckpointConnection.openRemote(iTwinId, iModelId);\n\n expect(iModel).to.exist;\n return expect(iModel.close()).to.eventually.be.fulfilled;\n });\n});\n\ndescribe.skip(\"IModel Connection with client credentials\", () => {\n let accessToken: AccessToken;\n let testContext: TestContext;\n\n before(async function () {\n testContext = await TestContext.instance();\n\n // If client credentials are not supplied or imodel read rpc tests are disabled skip test suite\n if (!testContext.settings.clientConfiguration || !testContext.settings.runiModelReadRpcTests)\n this.skip();\n accessToken = testContext.clientAccessToken!;\n IModelApp.authorizationClient = new TestFrontendAuthorizationClient(accessToken);\n });\n\n it(\"should successfully open an IModelConnection for read\", async () => {\n const iTwinId = testContext.iModelWithChangesets!.iTwinId;\n const iModelId = testContext.iModelWithChangesets!.iModelId;\n const changeSetId = (await testContext.iModelWithChangesets!.getConnection()).changeset.id;\n\n const iModel = await CheckpointConnection.openRemote(iTwinId, iModelId, undefined === changeSetId ? IModelVersion.latest() : IModelVersion.asOfChangeSet(changeSetId));\n\n expect(iModel).to.exist.and.be.not.empty;\n\n const iModelRpcProps = iModel.getRpcProps();\n expect(iModelRpcProps).to.exist.and.be.not.empty;\n });\n});\n\ndescribe(\"IModelReadRpcInterface Methods from an IModelConnection\", () => {\n let iModel: IModelConnection;\n let iTwinId: string;\n let accessToken: AccessToken;\n let testContext: TestContext;\n\n before(async function () {\n testContext = await TestContext.instance();\n\n if (!testContext.settings.runiModelReadRpcTests) {\n this.skip();\n }\n\n const iModelId = testContext.iModelWithChangesets!.iModelId;\n iTwinId = testContext.iModelWithChangesets!.iTwinId;\n accessToken = testContext.serviceAuthToken;\n IModelApp.authorizationClient = new TestFrontendAuthorizationClient(accessToken);\n iModel = await CheckpointConnection.openRemote(iTwinId, iModelId);\n });\n\n it(\"queryEntityIds should work as expected\", async () => {\n const ids = await iModel.elements.queryIds({ limit: 10, from: \"BisCore:Subject\" });\n expect(ids).to.exist;\n });\n\n it(\"getToolTipMessage should work as expected\", async () => {\n const ids: Id64Set = await iModel.elements.queryIds({ limit: 10, from: \"BisCore:Subject\" });\n const id = ids.values().next().value!;\n\n const tooltip = await iModel.getToolTipMessage(id); // \"0x338\"\n\n expect(tooltip).to.not.be.undefined;\n });\n\n it(\"getDefaultViewId should work as expected\", async () => {\n const result = await iModel.views.queryDefaultViewId();\n\n expect(result).to.not.be.undefined;\n });\n\n it(\"getGeometrySummary should work as expected\", async () => {\n const ids: Id64Set = await iModel.elements.queryIds({ limit: 10, from: \"BisCore:Subject\" });\n const id = ids.values().next().value!;\n const result = await IModelReadRpcInterface.getClient().getGeometrySummary(iModel.getRpcProps(), { elementIds: [id], options: {} });\n expect(result).to.not.be.undefined;\n });\n\n it(\"requestSnap should work as expected\", async () => {\n const ids: Id64Set = await iModel.elements.queryIds({ limit: 10, from: \"BisCore:PhysicalElement\" });\n const id = ids.values().next().value!;\n\n const worldToView = Matrix4d.createIdentity();\n const snap = await iModel.requestSnap({\n id,\n testPoint: { x: 1, y: 2, z: 3 },\n closePoint: { x: 1, y: 2, z: 3 },\n worldToView: worldToView.toJSON(),\n });\n\n expect(snap.status).to.not.be.undefined;\n });\n\n it(\"queryModelProps should work as expected\", async () => {\n const modelQueryParams: ModelQueryParams = { limit: 10, from: SpatialModelState.classFullName, wantPrivate: false };\n const curModelProps = await iModel.models.queryProps(modelQueryParams);\n\n expect(curModelProps).to.not.be.undefined;\n expect(curModelProps.length).gt(0);\n });\n\n it(\"getModelProps should work as expected\", async () => {\n const modelQueryParams: ModelQueryParams = { limit: 10, from: SpatialModelState.classFullName, wantPrivate: false };\n const curModelProps = await iModel.models.queryProps(modelQueryParams);\n const modelId = curModelProps[0].id!.toString();\n\n await iModel.models.load(modelId); // \"0x1c\"\n\n expect(iModel.models.loaded.size).to.equal(1);\n expect(iModel.models.loaded.get(modelId)).to.not.be.undefined;\n });\n\n it(\"getClassHierarchy should work as expected\", async () => {\n const result = await iModel.findClassFor(\"BisCore:LineStyle\", undefined);\n expect(result).undefined;\n });\n\n it(\"getIModelCoordinatesFromGeoCoordinates should work as expected\", async () => {\n const wgs84Converter = iModel.geoServices.getConverter(\"WGS84\");\n const nad27Converter = iModel.geoServices.getConverter(\"NAD27\");\n\n const geoPointList: XYZProps[] = [];\n\n for (let iLatitude = 0; iLatitude < 10; iLatitude++) {\n for (let iLongitude = 0; iLongitude < 10; iLongitude++) {\n geoPointList.push({ x: (132.600 + 0.02 * iLongitude), y: (34.350 + 0.02 * iLatitude), z: 0.0 });\n }\n }\n\n const testPoints: XYZProps[] = [];\n for (let iGeoPoint = 1; iGeoPoint < geoPointList.length; iGeoPoint += 2)\n testPoints.push(geoPointList[iGeoPoint]);\n\n const wgs84Response = await wgs84Converter!.getIModelCoordinatesFromGeoCoordinates(testPoints);\n\n // shouldn't have any from the cache.\n expect(wgs84Response.fromCache === 0).to.be.true;\n\n // shouldn't have any failures.\n for (const result of wgs84Response.iModelCoords) {\n expect(GeoCoordStatus.Success === result.s);\n }\n\n const nad27Response = await nad27Converter!.getIModelCoordinatesFromGeoCoordinates(testPoints);\n\n // shouldn't have any from the cache.\n expect(nad27Response.fromCache).eq(0);\n });\n\n it(\"getGeoCoordinatesFromIModelCoordinates should work as expected\", async () => {\n const ecefProps = new EcefLocation({ orientation: YawPitchRollAngles.createDegrees(0, 0, 0), origin: Point3d.create(0, 0, 0) });\n iModel.setEcefLocation(ecefProps);\n\n await iModel.spatialToCartographic({ x: 6378.137, y: 0, z: 0 });\n });\n\n /* NEEDSWORK queryPage no longer exists; you cannot specify a specific rows-per-page to query for (only a maximum via LIMIT).\n it(\"queryRowCount should work as expected\", async () => {\n const getRowPerPage = (nPageSize: number, nRowCount: number) => {\n const nRowPerPage = nRowCount / nPageSize;\n const nPages = Math.ceil(nRowPerPage);\n const nRowOnLastPage = nRowCount - (Math.floor(nRowPerPage) * pageSize);\n const pages = new Array(nPages).fill(pageSize);\n if (nRowPerPage) {\n pages[nPages - 1] = nRowOnLastPage;\n }\n return pages;\n };\n\n const pageSize = 5;\n const query = \"SELECT ECInstanceId as Id, Parent.Id as ParentId FROM BisCore.Element\";\n const rowCount = await iModel.queryRowCount(query);\n\n // verify row per page\n const rowPerPage = getRowPerPage(pageSize, rowCount);\n for (let k = 0; k < rowPerPage.length; k++) {\n const row = await iModel.queryPage(query, undefined, { size: pageSize, start: k });\n expect(row.length).to.be.equal(rowPerPage[k]);\n }\n\n // verify with async iterator\n const resultSet = [];\n for await (const row of iModel.query(query, undefined, { size: pageSize })) {\n resultSet.push(row);\n expect(Reflect.has(row, \"id\")).to.be.true;\n if (Reflect.ownKeys(row).length > 1) {\n expect(Reflect.has(row, \"parentId\")).to.be.true;\n const parentId: string = row.parentId;\n expect(parentId.startsWith(\"0x\")).to.be.true;\n }\n const id: string = row.id;\n expect(id.startsWith(\"0x\"));\n }\n expect(rowCount).to.be.equal(resultSet.length);\n });\n */\n\n it(\"queryModelRanges should work as expected\", async () => {\n const modelProps = await iModel.models.queryProps({ limit: 10, from: \"BisCore.SpatialModel\" });\n const modelId = modelProps[0].id!.toString();\n\n let idSet: Id64Set = Id64.toIdSet(modelId);\n\n let ranges = await iModel.models.queryModelRanges(idSet);\n\n expect(ranges).to.not.be.undefined;\n expect(ranges.length).to.be.equal(1);\n idSet = new Set<string>();\n for (const modelProp of modelProps) {\n idSet.add(modelProp.id!.toString());\n }\n ranges = await iModel.models.queryModelRanges(idSet);\n expect(ranges).to.not.be.undefined;\n expect(ranges.length).to.be.gte(1);\n\n });\n\n it(\"queryModelRanges should properly handle models that aren't geometric\", async () => {\n // the below clause is created specifically for the test iModel, if that iModel were to be changed and it contained models that were geometricModels\n // but not PhysicalModels then the test may fail.\n let ranges;\n let modelProps = await iModel.models.queryProps({ limit: 10, from: \"BisCore.Model\", where: \"ec_classname(ECClassId) <> 'BisCore:PhysicalModel'\" });\n let idSet: Id64Set = new Set<string>();\n for (const modelProp of modelProps) {\n idSet.add(modelProp.id!.toString());\n }\n if (idSet.size === 1) { // queryModelRanges throws error if idSet size is 1 AND the id in the set returns some error for querying its extents\n await expect(iModel.models.queryModelRanges(idSet)).to.be.rejectedWith(Error);\n } else {\n ranges = await iModel.models.queryModelRanges(idSet);\n expect(ranges).to.not.be.undefined;\n expect(ranges.length).to.be.equal(0);\n }\n const dictModelId = await iModel.models.getDictionaryModel();\n idSet = Id64.toIdSet(dictModelId);\n await expect(iModel.models.queryModelRanges(idSet)).to.be.rejectedWith(Error);\n\n modelProps = await iModel.models.queryProps({ limit: 10, from: \"BisCore.SpatialModel\" });\n idSet.add(modelProps[0].id!.toString());\n ranges = await iModel.models.queryModelRanges(idSet);\n expect(ranges).to.not.be.undefined;\n expect(ranges.length).to.be.equal(1);\n });\n it(\"getMassProperties should work as expected\", async () => {\n const requestProps: MassPropertiesRequestProps = {\n operation: MassPropertiesOperation.AccumulateVolumes,\n };\n\n const result = await IModelReadRpcInterface.getClient().getMassProperties(iModel.getRpcProps(), requestProps);\n expect(result).to.not.be.null;\n });\n it(\"getMassPropertiesPerCandidate should be able to process multiple elements\", async () => {\n const candidates = [...await iModel.elements.queryIds({ from: \"BisCore.GeometricElement3d\", limit: 2, where: \"GeometryStream IS NOT NULL\" })];\n expect(candidates.length).to.be.equal(2);\n\n const requestProps: MassPropertiesPerCandidateRequestProps = {\n operations: [MassPropertiesOperation.AccumulateVolumes],\n candidates: CompressedId64Set.compressIds(candidates),\n };\n\n const result = await IModelReadRpcInterface.getClient().getMassPropertiesPerCandidate(iModel.getRpcProps(), requestProps);\n expect(result).to.not.be.null;\n expect(result.length).to.be.equal(2);\n const candidate1Result = result.find((r) => r.candidate === candidates[0]);\n const candidate2Result = result.find((r) => r.candidate === candidates[1]);\n expect(candidate1Result).to.not.be.undefined;\n expect(candidate2Result).to.not.be.undefined;\n expect(candidate1Result?.status).to.be.equal(BentleyStatus.SUCCESS);\n expect(candidate2Result?.status).to.be.equal(BentleyStatus.SUCCESS);\n\n const expectedCandidate1Result = await IModelReadRpcInterface.getClient().getMassProperties(\n iModel.getRpcProps(),\n { operation: MassPropertiesOperation.AccumulateVolumes, candidates: [candidates[0]] },\n );\n const expectedCandidate2Result = await IModelReadRpcInterface.getClient().getMassProperties(\n iModel.getRpcProps(),\n { operation: MassPropertiesOperation.AccumulateVolumes, candidates: [candidates[1]] },\n );\n\n expect(candidate1Result).to.deep.eq({ ...expectedCandidate1Result, candidate: candidates[0] });\n expect(candidate2Result).to.deep.eq({ ...expectedCandidate2Result, candidate: candidates[1] });\n });\n\n it(\"queryAllUsedSpatialSubCategories should find subcategories coming from spatial categories of 3d Elements\", async () => {\n const result = await iModel.queryAllUsedSpatialSubCategories();\n expect(result).to.not.be.null;\n expect(result.length).to.not.be.equal(0);\n });\n});\n\ndescribe(\"Snapping\", () => {\n let iModel: IModelConnection;\n let iTwinId: string;\n let accessToken: AccessToken;\n let testContext: TestContext;\n\n before(async function () {\n testContext = await TestContext.instance();\n\n if (!testContext.settings.runiModelReadRpcTests)\n this.skip();\n\n const iModelId = testContext.iModelWithChangesets!.iModelId;\n iTwinId = testContext.iModelWithChangesets!.iTwinId;\n accessToken = testContext.serviceAuthToken;\n IModelApp.authorizationClient = new TestFrontendAuthorizationClient(accessToken);\n iModel = await CheckpointConnection.openRemote(iTwinId, iModelId);\n });\n\n it(\"should be able to request a snap\", async () => {\n const ids = await iModel.elements.queryIds({ limit: 10, from: \"BisCore:PhysicalElement\" });\n const id = ids.values().next().value!;\n\n const worldToView = Matrix4d.createIdentity();\n const snapProps = {\n id,\n testPoint: { x: 1, y: 2, z: 3 },\n closePoint: { x: 1, y: 2, z: 3 },\n worldToView: worldToView.toJSON(),\n };\n\n const snap = await IModelReadRpcInterface.getClient().requestSnap(iModel.getRpcProps(), id, snapProps);\n expect(snap.status).to.not.be.undefined;\n });\n\n it(\"should be able to cancel a snap\", async () => {\n const ids = await iModel.elements.queryIds({ limit: 10, from: \"BisCore:PhysicalElement\" });\n const id = ids.values().next().value!;\n\n const worldToView = Matrix4d.createIdentity();\n const snapProps = {\n id,\n testPoint: { x: 1, y: 2, z: 3 },\n closePoint: { x: 1, y: 2, z: 3 },\n worldToView: worldToView.toJSON(),\n };\n\n const promise = IModelReadRpcInterface.getClient().requestSnap(iModel.getRpcProps(), id, snapProps);\n try {\n await IModelReadRpcInterface.getClient().cancelSnap(iModel.getRpcProps(), id);\n const snap = await promise;\n\n // This is what we expect if the snap is completed before the cancellation is processed.\n expect(snap.status).not.to.be.undefined;\n } catch (err: any) {\n // This is what we expect if the cancellation occurs in time to really cancel the snap.\n expect(err.message).to.equal(\"Unknown server response code.\");\n }\n });\n});\n"]}
|
|
1
|
+
{"version":3,"file":"IModelConnection.test.js","sourceRoot":"","sources":["../../src/frontend/IModelConnection.test.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\nimport { Buffer } from \"buffer\";\nimport * as chai from \"chai\";\nimport { AccessToken, BentleyStatus, CompressedId64Set, Id64, Id64Set, IModelStatus } from \"@itwin/core-bentley\";\nimport { Matrix4d, Point3d, Range3d, XYZProps, YawPitchRollAngles } from \"@itwin/core-geometry\";\nimport {\n EcefLocation, GeoCoordStatus, IModelReadRpcInterface, IModelVersion, MassPropertiesOperation, MassPropertiesPerCandidateRequestProps, MassPropertiesRequestProps, ModelQueryParams,\n} from \"@itwin/core-common\";\nimport { CheckpointConnection, IModelApp, IModelConnection, SpatialModelState } from \"@itwin/core-frontend\";\nimport { TestFrontendAuthorizationClient } from \"@itwin/oidc-signin-tool/lib/cjs/frontend\";\nimport { TestContext } from \"./setup/TestContext\";\n\n/* eslint-disable @typescript-eslint/no-deprecated */\n\nconst expect = chai.expect;\n\n(global as any).btoa = (str: string) => {\n const buffer = Buffer.from(str, \"binary\");\n return buffer.toString(\"base64\");\n};\n\ndescribe(\"IModel Connection\", () => {\n let accessToken: AccessToken;\n let testContext: TestContext;\n\n before(async function () {\n testContext = await TestContext.instance();\n\n if (!testContext.settings.runiModelReadRpcTests)\n this.skip();\n\n accessToken = testContext.serviceAuthToken;\n IModelApp.authorizationClient = new TestFrontendAuthorizationClient(accessToken);\n });\n\n it(\"should successfully open an IModelConnection for read\", async () => {\n const iTwinId = testContext.iModelWithChangesets!.iTwinId;\n const iModelId = testContext.iModelWithChangesets!.iModelId;\n\n const iModel: IModelConnection = await CheckpointConnection.openRemote(iTwinId, iModelId);\n\n expect(iModel).to.exist.and.be.not.empty;\n\n const iModelRpcProps = iModel.getRpcProps();\n expect(iModelRpcProps).to.exist.and.be.not.empty;\n });\n\n it(\"should successfully close an open an IModelConnection\", async () => {\n const iModelId = testContext.iModelWithChangesets!.iModelId;\n const iTwinId = testContext.iModelWithChangesets!.iTwinId;\n const iModel = await CheckpointConnection.openRemote(iTwinId, iModelId);\n\n expect(iModel).to.exist;\n return expect(iModel.close()).to.eventually.be.fulfilled;\n });\n});\n\ndescribe.skip(\"IModel Connection with client credentials\", () => {\n let accessToken: AccessToken;\n let testContext: TestContext;\n\n before(async function () {\n testContext = await TestContext.instance();\n\n // If client credentials are not supplied or imodel read rpc tests are disabled skip test suite\n if (!testContext.settings.clientConfiguration || !testContext.settings.runiModelReadRpcTests)\n this.skip();\n accessToken = testContext.clientAccessToken!;\n IModelApp.authorizationClient = new TestFrontendAuthorizationClient(accessToken);\n });\n\n it(\"should successfully open an IModelConnection for read\", async () => {\n const iTwinId = testContext.iModelWithChangesets!.iTwinId;\n const iModelId = testContext.iModelWithChangesets!.iModelId;\n const changeSetId = (await testContext.iModelWithChangesets!.getConnection()).changeset.id;\n\n const iModel = await CheckpointConnection.openRemote(iTwinId, iModelId, undefined === changeSetId ? IModelVersion.latest() : IModelVersion.asOfChangeSet(changeSetId));\n\n expect(iModel).to.exist.and.be.not.empty;\n\n const iModelRpcProps = iModel.getRpcProps();\n expect(iModelRpcProps).to.exist.and.be.not.empty;\n });\n});\n\ndescribe(\"IModelReadRpcInterface Methods from an IModelConnection\", () => {\n let iModel: IModelConnection;\n let iTwinId: string;\n let accessToken: AccessToken;\n let testContext: TestContext;\n\n before(async function () {\n testContext = await TestContext.instance();\n\n if (!testContext.settings.runiModelReadRpcTests) {\n this.skip();\n }\n\n const iModelId = testContext.iModelWithChangesets!.iModelId;\n iTwinId = testContext.iModelWithChangesets!.iTwinId;\n accessToken = testContext.serviceAuthToken;\n IModelApp.authorizationClient = new TestFrontendAuthorizationClient(accessToken);\n iModel = await CheckpointConnection.openRemote(iTwinId, iModelId);\n });\n\n it(\"queryEntityIds should work as expected\", async () => {\n const ids = await iModel.elements.queryIds({ limit: 10, from: \"BisCore:Subject\" });\n expect(ids).to.exist;\n });\n\n it(\"getToolTipMessage should work as expected\", async () => {\n const ids: Id64Set = await iModel.elements.queryIds({ limit: 10, from: \"BisCore:Subject\" });\n const id = ids.values().next().value!;\n\n const tooltip = await iModel.getToolTipMessage(id); // \"0x338\"\n\n expect(tooltip).to.not.be.undefined;\n });\n\n it(\"getDefaultViewId should work as expected\", async () => {\n const result = await iModel.views.queryDefaultViewId();\n\n expect(result).to.not.be.undefined;\n });\n\n it(\"getGeometrySummary should work as expected\", async () => {\n const ids: Id64Set = await iModel.elements.queryIds({ limit: 10, from: \"BisCore:Subject\" });\n const id = ids.values().next().value!;\n const result = await IModelReadRpcInterface.getClient().getGeometrySummary(iModel.getRpcProps(), { elementIds: [id], options: {} });\n expect(result).to.not.be.undefined;\n });\n\n it(\"requestSnap should work as expected\", async () => {\n const ids: Id64Set = await iModel.elements.queryIds({ limit: 10, from: \"BisCore:PhysicalElement\" });\n const id = ids.values().next().value!;\n\n const worldToView = Matrix4d.createIdentity();\n const snap = await iModel.requestSnap({\n id,\n testPoint: { x: 1, y: 2, z: 3 },\n closePoint: { x: 1, y: 2, z: 3 },\n worldToView: worldToView.toJSON(),\n });\n\n expect(snap.status).to.not.be.undefined;\n });\n\n it(\"queryModelProps should work as expected\", async () => {\n const modelQueryParams: ModelQueryParams = { limit: 10, from: SpatialModelState.classFullName, wantPrivate: false };\n const curModelProps = await iModel.models.queryProps(modelQueryParams);\n\n expect(curModelProps).to.not.be.undefined;\n expect(curModelProps.length).gt(0);\n });\n\n it(\"getModelProps should work as expected\", async () => {\n const modelQueryParams: ModelQueryParams = { limit: 10, from: SpatialModelState.classFullName, wantPrivate: false };\n const curModelProps = await iModel.models.queryProps(modelQueryParams);\n const modelId = curModelProps[0].id!.toString();\n\n await iModel.models.load(modelId); // \"0x1c\"\n\n expect(iModel.models.loaded.size).to.equal(1);\n expect(iModel.models.loaded.get(modelId)).to.not.be.undefined;\n });\n\n it(\"getIModelCoordinatesFromGeoCoordinates should work as expected\", async () => {\n const wgs84Converter = iModel.geoServices.getConverter(\"WGS84\");\n const nad27Converter = iModel.geoServices.getConverter(\"NAD27\");\n\n const geoPointList: XYZProps[] = [];\n\n for (let iLatitude = 0; iLatitude < 10; iLatitude++) {\n for (let iLongitude = 0; iLongitude < 10; iLongitude++) {\n geoPointList.push({ x: (132.600 + 0.02 * iLongitude), y: (34.350 + 0.02 * iLatitude), z: 0.0 });\n }\n }\n\n const testPoints: XYZProps[] = [];\n for (let iGeoPoint = 1; iGeoPoint < geoPointList.length; iGeoPoint += 2)\n testPoints.push(geoPointList[iGeoPoint]);\n\n const wgs84Response = await wgs84Converter!.getIModelCoordinatesFromGeoCoordinates(testPoints);\n\n // shouldn't have any from the cache.\n expect(wgs84Response.fromCache === 0).to.be.true;\n\n // shouldn't have any failures.\n for (const result of wgs84Response.iModelCoords) {\n expect(GeoCoordStatus.Success === result.s);\n }\n\n const nad27Response = await nad27Converter!.getIModelCoordinatesFromGeoCoordinates(testPoints);\n\n // shouldn't have any from the cache.\n expect(nad27Response.fromCache).eq(0);\n });\n\n it(\"getGeoCoordinatesFromIModelCoordinates should work as expected\", async () => {\n const ecefProps = new EcefLocation({ orientation: YawPitchRollAngles.createDegrees(0, 0, 0), origin: Point3d.create(0, 0, 0) });\n iModel.setEcefLocation(ecefProps);\n\n await iModel.spatialToCartographic({ x: 6378.137, y: 0, z: 0 });\n });\n\n /* NEEDSWORK queryPage no longer exists; you cannot specify a specific rows-per-page to query for (only a maximum via LIMIT).\n it(\"queryRowCount should work as expected\", async () => {\n const getRowPerPage = (nPageSize: number, nRowCount: number) => {\n const nRowPerPage = nRowCount / nPageSize;\n const nPages = Math.ceil(nRowPerPage);\n const nRowOnLastPage = nRowCount - (Math.floor(nRowPerPage) * pageSize);\n const pages = new Array(nPages).fill(pageSize);\n if (nRowPerPage) {\n pages[nPages - 1] = nRowOnLastPage;\n }\n return pages;\n };\n\n const pageSize = 5;\n const query = \"SELECT ECInstanceId as Id, Parent.Id as ParentId FROM BisCore.Element\";\n const rowCount = await iModel.queryRowCount(query);\n\n // verify row per page\n const rowPerPage = getRowPerPage(pageSize, rowCount);\n for (let k = 0; k < rowPerPage.length; k++) {\n const row = await iModel.queryPage(query, undefined, { size: pageSize, start: k });\n expect(row.length).to.be.equal(rowPerPage[k]);\n }\n\n // verify with async iterator\n const resultSet = [];\n for await (const row of iModel.query(query, undefined, { size: pageSize })) {\n resultSet.push(row);\n expect(Reflect.has(row, \"id\")).to.be.true;\n if (Reflect.ownKeys(row).length > 1) {\n expect(Reflect.has(row, \"parentId\")).to.be.true;\n const parentId: string = row.parentId;\n expect(parentId.startsWith(\"0x\")).to.be.true;\n }\n const id: string = row.id;\n expect(id.startsWith(\"0x\"));\n }\n expect(rowCount).to.be.equal(resultSet.length);\n });\n */\n\n it(\"queryModelRanges should work as expected\", async () => {\n const modelProps = await iModel.models.queryProps({ limit: 10, from: \"BisCore.SpatialModel\" });\n const modelId = modelProps[0].id!.toString();\n\n let idSet: Id64Set = Id64.toIdSet(modelId);\n\n let ranges = await iModel.models.queryModelRanges(idSet);\n\n expect(ranges).to.not.be.undefined;\n expect(ranges.length).to.be.equal(1);\n idSet = new Set<string>();\n for (const modelProp of modelProps) {\n idSet.add(modelProp.id!.toString());\n }\n ranges = await iModel.models.queryModelRanges(idSet);\n expect(ranges).to.not.be.undefined;\n expect(ranges.length).to.be.gte(1);\n\n });\n\n it(\"queryModelRanges should properly handle models that aren't geometric\", async () => {\n // the below clause is created specifically for the test iModel, if that iModel were to be changed and it contained models that were geometricModels\n // but not PhysicalModels then the test may fail.\n let ranges;\n let modelProps = await iModel.models.queryProps({ limit: 10, from: \"BisCore.Model\", where: \"ec_classname(ECClassId) <> 'BisCore:PhysicalModel'\" });\n let idSet: Id64Set = new Set<string>();\n for (const modelProp of modelProps) {\n idSet.add(modelProp.id!.toString());\n }\n if (idSet.size === 1) { // queryModelRanges throws error if idSet size is 1 AND the id in the set returns some error for querying its extents\n await expect(iModel.models.queryModelRanges(idSet)).to.be.rejectedWith(Error);\n } else {\n ranges = await iModel.models.queryModelRanges(idSet);\n expect(ranges).to.not.be.undefined;\n expect(ranges.length).to.be.equal(0);\n }\n const dictModelId = await iModel.models.getDictionaryModel();\n idSet = Id64.toIdSet(dictModelId);\n await expect(iModel.models.queryModelRanges(idSet)).to.be.rejectedWith(Error);\n\n modelProps = await iModel.models.queryProps({ limit: 10, from: \"BisCore.SpatialModel\" });\n idSet.add(modelProps[0].id!.toString());\n ranges = await iModel.models.queryModelRanges(idSet);\n expect(ranges).to.not.be.undefined;\n expect(ranges.length).to.be.equal(1);\n });\n\n it(\"queryExtents should return IModelStatus.InvalidId status for invalid id64\", async () => {\n const modelIds = [\"notid64\"];\n const extents = await iModel.models.queryExtents(modelIds);\n\n expect(extents).to.not.be.undefined;\n expect(extents.length).to.be.equal(modelIds.length);\n expect(extents.every(e => e.status === IModelStatus.InvalidId)).to.be.true;\n expect(extents.every(e => Range3d.isNull(Range3d.fromJSON(e.extents)))).to.be.true;\n });\n\n it(\"queryExtents should return null extents with IModelStatus.Success for models without elements\", async () => {\n const modelIds = [\"0x1c\", \"0x20000000001\"];\n const extents = await iModel.models.queryExtents(modelIds);\n\n expect(extents).to.not.be.undefined;\n expect(extents.length).to.be.equal(modelIds.length);\n expect(extents.every(e => e.status === IModelStatus.Success)).to.be.true;\n expect(extents.every(e => Range3d.isNull(Range3d.fromJSON(e.extents)))).to.be.true;\n });\n\n it(\"queryExtents should return extents with IModelStatus.Success for models with elements\", async () => {\n const modelIds = [\"0x22\", \"0x23\", \"0x24\"];\n const extents = await iModel.models.queryExtents(modelIds);\n\n expect(extents).to.not.be.undefined;\n expect(extents.length).to.be.equal(modelIds.length);\n expect(extents.every(e => e.status === IModelStatus.Success)).to.be.true;\n expect(extents.every(e => Range3d.isNull(Range3d.fromJSON(e.extents)))).to.be.false;\n });\n\n it(\"queryExtents should return null extents with IModelStatus.NotFound non existing models\", async () => {\n const modelIds = [\"0x11111\", \"0x22222\", \"0x33333\"];\n const extents = await iModel.models.queryExtents(modelIds);\n\n expect(extents).to.not.be.undefined;\n expect(extents.length).to.be.equal(modelIds.length);\n expect(extents.every(e => e.status === IModelStatus.NotFound)).to.be.true;\n expect(extents.every(e => Range3d.isNull(Range3d.fromJSON(e.extents)))).to.be.true;\n });\n\n it(\"getMassProperties should work as expected\", async () => {\n const requestProps: MassPropertiesRequestProps = {\n operation: MassPropertiesOperation.AccumulateVolumes,\n };\n\n const result = await IModelReadRpcInterface.getClient().getMassProperties(iModel.getRpcProps(), requestProps);\n expect(result).to.not.be.null;\n });\n it(\"getMassPropertiesPerCandidate should be able to process multiple elements\", async () => {\n const candidates = [...await iModel.elements.queryIds({ from: \"BisCore.GeometricElement3d\", limit: 2, where: \"GeometryStream IS NOT NULL\" })];\n expect(candidates.length).to.be.equal(2);\n\n const requestProps: MassPropertiesPerCandidateRequestProps = {\n operations: [MassPropertiesOperation.AccumulateVolumes],\n candidates: CompressedId64Set.compressIds(candidates),\n };\n\n const result = await IModelReadRpcInterface.getClient().getMassPropertiesPerCandidate(iModel.getRpcProps(), requestProps);\n expect(result).to.not.be.null;\n expect(result.length).to.be.equal(2);\n const candidate1Result = result.find((r) => r.candidate === candidates[0]);\n const candidate2Result = result.find((r) => r.candidate === candidates[1]);\n expect(candidate1Result).to.not.be.undefined;\n expect(candidate2Result).to.not.be.undefined;\n expect(candidate1Result?.status).to.be.equal(BentleyStatus.SUCCESS);\n expect(candidate2Result?.status).to.be.equal(BentleyStatus.SUCCESS);\n\n const expectedCandidate1Result = await IModelReadRpcInterface.getClient().getMassProperties(\n iModel.getRpcProps(),\n { operation: MassPropertiesOperation.AccumulateVolumes, candidates: [candidates[0]] },\n );\n const expectedCandidate2Result = await IModelReadRpcInterface.getClient().getMassProperties(\n iModel.getRpcProps(),\n { operation: MassPropertiesOperation.AccumulateVolumes, candidates: [candidates[1]] },\n );\n\n expect(candidate1Result).to.deep.eq({ ...expectedCandidate1Result, candidate: candidates[0] });\n expect(candidate2Result).to.deep.eq({ ...expectedCandidate2Result, candidate: candidates[1] });\n });\n\n it(\"queryAllUsedSpatialSubCategories should find subcategories coming from spatial categories of 3d Elements\", async () => {\n const result = await iModel.queryAllUsedSpatialSubCategories();\n expect(result).to.not.be.null;\n expect(result.length).to.not.be.equal(0);\n });\n});\n\ndescribe(\"Snapping\", () => {\n let iModel: IModelConnection;\n let iTwinId: string;\n let accessToken: AccessToken;\n let testContext: TestContext;\n\n before(async function () {\n testContext = await TestContext.instance();\n\n if (!testContext.settings.runiModelReadRpcTests)\n this.skip();\n\n const iModelId = testContext.iModelWithChangesets!.iModelId;\n iTwinId = testContext.iModelWithChangesets!.iTwinId;\n accessToken = testContext.serviceAuthToken;\n IModelApp.authorizationClient = new TestFrontendAuthorizationClient(accessToken);\n iModel = await CheckpointConnection.openRemote(iTwinId, iModelId);\n });\n\n it(\"should be able to request a snap\", async () => {\n const ids = await iModel.elements.queryIds({ limit: 10, from: \"BisCore:PhysicalElement\" });\n const id = ids.values().next().value!;\n\n const worldToView = Matrix4d.createIdentity();\n const snapProps = {\n id,\n testPoint: { x: 1, y: 2, z: 3 },\n closePoint: { x: 1, y: 2, z: 3 },\n worldToView: worldToView.toJSON(),\n };\n\n const snap = await IModelReadRpcInterface.getClient().requestSnap(iModel.getRpcProps(), id, snapProps);\n expect(snap.status).to.not.be.undefined;\n });\n\n it(\"should be able to cancel a snap\", async () => {\n const ids = await iModel.elements.queryIds({ limit: 10, from: \"BisCore:PhysicalElement\" });\n const id = ids.values().next().value!;\n\n const worldToView = Matrix4d.createIdentity();\n const snapProps = {\n id,\n testPoint: { x: 1, y: 2, z: 3 },\n closePoint: { x: 1, y: 2, z: 3 },\n worldToView: worldToView.toJSON(),\n };\n\n const promise = IModelReadRpcInterface.getClient().requestSnap(iModel.getRpcProps(), id, snapProps);\n try {\n await IModelReadRpcInterface.getClient().cancelSnap(iModel.getRpcProps(), id);\n const snap = await promise;\n\n // This is what we expect if the snap is completed before the cancellation is processed.\n expect(snap.status).not.to.be.undefined;\n } catch (err: any) {\n // This is what we expect if the cancellation occurs in time to really cancel the snap.\n expect(err.message).to.equal(\"Unknown server response code.\");\n }\n });\n});\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@itwin/rpcinterface-full-stack-tests",
|
|
3
|
-
"version": "5.2.0-dev.
|
|
3
|
+
"version": "5.2.0-dev.10",
|
|
4
4
|
"description": "Test the full iTwin.js Core stack (frontend and backend) using standard RPC interfaces",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -32,15 +32,15 @@
|
|
|
32
32
|
"dotenv-expand": "^5.1.0",
|
|
33
33
|
"mocha": "^11.1.0",
|
|
34
34
|
"openid-client": "^4.7.4",
|
|
35
|
-
"@itwin/build-tools": "5.2.0-dev.
|
|
36
|
-
"@itwin/core-
|
|
37
|
-
"@itwin/core-
|
|
38
|
-
"@itwin/
|
|
39
|
-
"@itwin/core-
|
|
40
|
-
"@itwin/core-
|
|
41
|
-
"@itwin/
|
|
42
|
-
"@itwin/
|
|
43
|
-
"@itwin/presentation-frontend": "5.2.0-dev.
|
|
35
|
+
"@itwin/build-tools": "5.2.0-dev.10",
|
|
36
|
+
"@itwin/core-geometry": "5.2.0-dev.10",
|
|
37
|
+
"@itwin/core-bentley": "5.2.0-dev.10",
|
|
38
|
+
"@itwin/core-common": "5.2.0-dev.10",
|
|
39
|
+
"@itwin/core-frontend": "5.2.0-dev.10",
|
|
40
|
+
"@itwin/core-quantity": "5.2.0-dev.10",
|
|
41
|
+
"@itwin/presentation-common": "5.2.0-dev.10",
|
|
42
|
+
"@itwin/certa": "5.2.0-dev.10",
|
|
43
|
+
"@itwin/presentation-frontend": "5.2.0-dev.10"
|
|
44
44
|
},
|
|
45
45
|
"devDependencies": {
|
|
46
46
|
"@itwin/itwins-client": "^1.6.1",
|
|
@@ -63,11 +63,11 @@
|
|
|
63
63
|
"typescript": "~5.6.2",
|
|
64
64
|
"webpack": "^5.97.1",
|
|
65
65
|
"webpack-cli": "^5.0.1",
|
|
66
|
-
"@itwin/core-backend": "5.2.0-dev.
|
|
67
|
-
"@itwin/
|
|
68
|
-
"
|
|
69
|
-
"@itwin/
|
|
70
|
-
"
|
|
66
|
+
"@itwin/core-backend": "5.2.0-dev.10",
|
|
67
|
+
"@itwin/ecschema-metadata": "5.2.0-dev.10",
|
|
68
|
+
"@itwin/express-server": "5.2.0-dev.10",
|
|
69
|
+
"@itwin/presentation-backend": "5.2.0-dev.10",
|
|
70
|
+
"internal-tools": "3.0.0-dev.69"
|
|
71
71
|
},
|
|
72
72
|
"scripts": {
|
|
73
73
|
"build": "tsc 1>&2 && npm run -s webpack:test",
|