@itwin/core-backend 5.4.0-dev.6 → 5.5.0-dev.1
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.
- package/CHANGELOG.md +64 -1
- package/lib/cjs/IModelDb.d.ts +2 -1
- package/lib/cjs/IModelDb.d.ts.map +1 -1
- package/lib/cjs/IModelDb.js +20 -10
- package/lib/cjs/IModelDb.js.map +1 -1
- package/lib/cjs/IModelHost.d.ts +11 -0
- package/lib/cjs/IModelHost.d.ts.map +1 -1
- package/lib/cjs/IModelHost.js +6 -0
- package/lib/cjs/IModelHost.js.map +1 -1
- package/lib/cjs/LocalhostIpcHost.d.ts +1 -0
- package/lib/cjs/LocalhostIpcHost.d.ts.map +1 -1
- package/lib/cjs/LocalhostIpcHost.js +1 -1
- package/lib/cjs/LocalhostIpcHost.js.map +1 -1
- package/lib/cjs/NativeHost.d.ts.map +1 -1
- package/lib/cjs/NativeHost.js +7 -0
- package/lib/cjs/NativeHost.js.map +1 -1
- package/lib/cjs/NavigationRelationship.d.ts +8 -0
- package/lib/cjs/NavigationRelationship.d.ts.map +1 -1
- package/lib/cjs/NavigationRelationship.js +12 -1
- package/lib/cjs/NavigationRelationship.js.map +1 -1
- package/lib/cjs/TxnManager.d.ts +30 -1
- package/lib/cjs/TxnManager.d.ts.map +1 -1
- package/lib/cjs/TxnManager.js +53 -2
- package/lib/cjs/TxnManager.js.map +1 -1
- package/lib/cjs/internal/ChannelAdmin.d.ts.map +1 -1
- package/lib/cjs/internal/ChannelAdmin.js +9 -1
- package/lib/cjs/internal/ChannelAdmin.js.map +1 -1
- package/lib/cjs/internal/OnlineStatus.d.ts +15 -0
- package/lib/cjs/internal/OnlineStatus.d.ts.map +1 -0
- package/lib/cjs/internal/OnlineStatus.js +28 -0
- package/lib/cjs/internal/OnlineStatus.js.map +1 -0
- package/lib/cjs/internal/workspace/WorkspaceImpl.d.ts.map +1 -1
- package/lib/cjs/internal/workspace/WorkspaceImpl.js +12 -0
- package/lib/cjs/internal/workspace/WorkspaceImpl.js.map +1 -1
- package/lib/esm/IModelDb.d.ts +2 -1
- package/lib/esm/IModelDb.d.ts.map +1 -1
- package/lib/esm/IModelDb.js +20 -10
- package/lib/esm/IModelDb.js.map +1 -1
- package/lib/esm/IModelHost.d.ts +11 -0
- package/lib/esm/IModelHost.d.ts.map +1 -1
- package/lib/esm/IModelHost.js +6 -0
- package/lib/esm/IModelHost.js.map +1 -1
- package/lib/esm/LocalhostIpcHost.d.ts +1 -0
- package/lib/esm/LocalhostIpcHost.d.ts.map +1 -1
- package/lib/esm/LocalhostIpcHost.js +1 -1
- package/lib/esm/LocalhostIpcHost.js.map +1 -1
- package/lib/esm/NativeHost.d.ts.map +1 -1
- package/lib/esm/NativeHost.js +8 -1
- package/lib/esm/NativeHost.js.map +1 -1
- package/lib/esm/NavigationRelationship.d.ts +8 -0
- package/lib/esm/NavigationRelationship.d.ts.map +1 -1
- package/lib/esm/NavigationRelationship.js +10 -0
- package/lib/esm/NavigationRelationship.js.map +1 -1
- package/lib/esm/TxnManager.d.ts +30 -1
- package/lib/esm/TxnManager.d.ts.map +1 -1
- package/lib/esm/TxnManager.js +53 -2
- package/lib/esm/TxnManager.js.map +1 -1
- package/lib/esm/internal/ChannelAdmin.d.ts.map +1 -1
- package/lib/esm/internal/ChannelAdmin.js +9 -1
- package/lib/esm/internal/ChannelAdmin.js.map +1 -1
- package/lib/esm/internal/OnlineStatus.d.ts +15 -0
- package/lib/esm/internal/OnlineStatus.d.ts.map +1 -0
- package/lib/esm/internal/OnlineStatus.js +24 -0
- package/lib/esm/internal/OnlineStatus.js.map +1 -0
- package/lib/esm/internal/workspace/WorkspaceImpl.d.ts.map +1 -1
- package/lib/esm/internal/workspace/WorkspaceImpl.js +13 -1
- package/lib/esm/internal/workspace/WorkspaceImpl.js.map +1 -1
- package/lib/esm/test/element/ElementAspect.test.js +27 -0
- package/lib/esm/test/element/ElementAspect.test.js.map +1 -1
- package/lib/esm/test/hubaccess/ApplyChangeset.test.js +100 -2
- package/lib/esm/test/hubaccess/ApplyChangeset.test.js.map +1 -1
- package/lib/esm/test/hubaccess/Rebase.test.js +285 -1
- package/lib/esm/test/hubaccess/Rebase.test.js.map +1 -1
- package/lib/esm/test/imodel/Code.test.js +369 -248
- package/lib/esm/test/imodel/Code.test.js.map +1 -1
- package/lib/esm/test/imodel/IModel.test.js +3 -0
- package/lib/esm/test/imodel/IModel.test.js.map +1 -1
- package/lib/esm/test/incrementalSchemaLocater/IncrementalLoading.test.js +27 -8
- package/lib/esm/test/incrementalSchemaLocater/IncrementalLoading.test.js.map +1 -1
- package/lib/esm/test/incrementalSchemaLocater/utils/IncrementalTestHelper.d.ts +4 -1
- package/lib/esm/test/incrementalSchemaLocater/utils/IncrementalTestHelper.d.ts.map +1 -1
- package/lib/esm/test/incrementalSchemaLocater/utils/IncrementalTestHelper.js +14 -4
- package/lib/esm/test/incrementalSchemaLocater/utils/IncrementalTestHelper.js.map +1 -1
- package/lib/esm/test/standalone/ChangeMerge.test.js +24 -0
- package/lib/esm/test/standalone/ChangeMerge.test.js.map +1 -1
- package/package.json +14 -14
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Code.test.js","sourceRoot":"","sources":["../../../../src/test/imodel/Code.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { assert, expect } from \"chai\";\r\nimport * as path from \"node:path\";\r\nimport { SnapshotDb } from \"../../core-backend\";\r\nimport { Code, ElementProps } from \"@itwin/core-common\";\r\nimport { IModelTestUtils } from \"../IModelTestUtils\";\r\nimport { KnownTestLocations } from \"../KnownTestLocations\";\r\nimport { Id64 } from \"@itwin/core-bentley\";\r\n\r\ndescribe(\"Code insertion tests\", () => {\r\n let imodel: SnapshotDb;\r\n\r\n before(async () => {\r\n IModelTestUtils.registerTestBimSchema();\r\n const seedFile = IModelTestUtils.resolveAssetFile(\"test.bim\");\r\n const snapshotFile = IModelTestUtils.prepareOutputFile(\"IModel\", \"test.bim\");\r\n imodel = IModelTestUtils.createSnapshotFromSeed(snapshotFile, seedFile);\r\n const schemaPathname = path.join(KnownTestLocations.assetsDir, \"TestBim.ecschema.xml\");\r\n await imodel.importSchemas([schemaPathname]);\r\n imodel.saveChanges();\r\n });\r\n\r\n after(() => {\r\n imodel.close();\r\n });\r\n\r\n it(\"should query an element by code\", () => {\r\n assert.exists(imodel.elements);\r\n const code = new Code({ scope: \"0x11\", spec: \"0x10\", value: \"RF1.dgn\" });\r\n const elementId = imodel.elements.queryElementIdByCode(code);\r\n assert.exists(elementId);\r\n assert.equal(elementId, \"0x1e\");\r\n });\r\n\r\n it(\"should get undefined when querying an element with a bad code value\", () => {\r\n assert.exists(imodel.elements);\r\n const badCode = new Code({ scope: \"0x11\", spec: \"0x10\", value: \"RF1_does_not_exist.dgn\" });\r\n const elementId = imodel.elements.queryElementIdByCode(badCode);\r\n assert.isUndefined(elementId);\r\n });\r\n\r\n it(\"should get undefined when querying an element with an empty code\", () => {\r\n assert.exists(imodel.elements);\r\n const emptyCode = Code.createEmpty();\r\n const elementId = imodel.elements.queryElementIdByCode(emptyCode);\r\n assert.isUndefined(elementId);\r\n });\r\n\r\n it(\"should throw when querying an element with a NULL code value\", () => {\r\n assert.exists(imodel.elements);\r\n expect(() => imodel.elements.queryElementIdByCode({\r\n scope: \"0x11\", spec: \"0x10\",\r\n value: undefined as any\r\n })).to.throw(\"Invalid Code\");\r\n });\r\n\r\n it(\"should throw when querying an element with an empty code spec\", () => {\r\n assert.exists(imodel.elements);\r\n const noSpecCode = new Code({ scope: \"0x11\", spec: \"\", value: \"RF1.dgn\" });\r\n expect(() => imodel.elements.queryElementIdByCode(noSpecCode)).to.throw(\"Invalid CodeSpec\");\r\n });\r\n\r\n it(\"should throw when querying an element with a bad code spec\", () => {\r\n assert.exists(imodel.elements);\r\n const badSpecCode = new Code({ scope: \"0x11\", spec: \"not a real id\", value: \"RF1.dgn\" });\r\n expect(() => imodel.elements.queryElementIdByCode(badSpecCode)).to.throw(\"Invalid CodeSpec\");\r\n });\r\n\r\n it(\"should get undefined when querying for an element id with no scope\", () => {\r\n assert.exists(imodel.elements);\r\n const noScopeCode = new Code({ scope: \"\", spec: \"0x10\", value: \"RF1.dgn\" });\r\n const elementId = imodel.elements.queryElementIdByCode(noScopeCode);\r\n assert.isUndefined(elementId);\r\n });\r\n\r\n it(\"should get undefined when querying for an element id with a bad scope\", () => {\r\n assert.exists(imodel.elements);\r\n const badScopeCode = new Code({ scope: \"not a real id\", spec: \"0x10\", value: \"RF1.dgn\" });\r\n const elementId = imodel.elements.queryElementIdByCode(badScopeCode);\r\n assert.isUndefined(elementId);\r\n });\r\n\r\n it(\"should insert an element with valid Code\", () => {\r\n assert.exists(imodel.elements);\r\n const elProps: ElementProps = {\r\n classFullName: 'BisCore:RepositoryLink',\r\n code: { scope: \"0x1\", spec: \"0x10\", value: \"new code\" },\r\n id: '0x1e',\r\n model: '0x11',\r\n userLabel: 'RF1.dgn',\r\n federationGuid: undefined,\r\n };\r\n\r\n const id = imodel.elements.insertElement(elProps);\r\n assert.exists(id);\r\n assert.isTrue(Id64.isValidId64(id));\r\n });\r\n\r\n it(\"should fail to insert an element with invalid Code scope\", () => {\r\n assert.exists(imodel.elements);\r\n const elProps: ElementProps = {\r\n classFullName: 'BisCore:RepositoryLink',\r\n code: { scope: \"bad scope\", spec: \"0x10\", value: \"new code\" }, // invalid scope value\r\n id: '0x1e',\r\n model: '0x11',\r\n userLabel: 'RF1.dgn',\r\n federationGuid: undefined,\r\n };\r\n\r\n expect(() => imodel.elements.insertElement(elProps)).throws(\"invalid code scope\").to.have.property(\"metadata\");\r\n elProps.code.scope = \"0x34322\"; // valid id, but element doesn't exist\r\n expect(() => imodel.elements.insertElement(elProps)).throws(\"invalid code scope\").to.have.property(\"metadata\");\r\n elProps.code.scope = undefined as any; // nothing\r\n expect(() => imodel.elements.insertElement(elProps)).throws(\"invalid code scope\").to.have.property(\"metadata\");\r\n });\r\n\r\n it(\"should fail to insert an element with invalid Code spec\", () => {\r\n assert.exists(imodel.elements);\r\n const elProps: ElementProps = {\r\n classFullName: 'BisCore:RepositoryLink',\r\n code: { scope: \"0x1\", spec: \"0x34322\", value: \"new code\" }, // valid id, but element doesn't exist\r\n id: '0x1e',\r\n model: '0x11',\r\n userLabel: 'RF1.dgn',\r\n federationGuid: undefined,\r\n };\r\n\r\n expect(() => imodel.elements.insertElement(elProps)).throws(\"Error inserting element\").to.have.property(\"metadata\");\r\n // TODO: Non-ID values currently do not throw an error. This should be caught in TS\r\n // elProps.code.spec = \"not a spec in the model\"; // not an id\r\n // expect(() => imodel.elements.insertElement(elProps)).throws(\"Error inserting element\").to.have.property(\"metadata\");\r\n // elProps.code.spec = undefined as any; // nothing\r\n // expect(() => imodel.elements.insertElement(elProps)).throws(\"Error inserting element\").to.have.property(\"metadata\");\r\n });\r\n\r\n it(\"should fail to insert an element with a duplicate valid code\", () => {\r\n assert.exists(imodel.elements);\r\n const elProps: ElementProps = {\r\n classFullName: 'BisCore:RepositoryLink',\r\n code: { scope: \"0x1\", spec: \"0x10\", value: \"new code duplicate test\" },\r\n id: '0x1e',\r\n model: '0x11',\r\n userLabel: 'RF1.dgn',\r\n federationGuid: undefined,\r\n };\r\n\r\n const id = imodel.elements.insertElement(elProps);\r\n assert.exists(id);\r\n assert.isTrue(Id64.isValidId64(id));\r\n\r\n const elProps2: ElementProps = {\r\n classFullName: 'BisCore:RepositoryLink',\r\n code: { scope: \"0x1\", spec: \"0x10\", value: \"new code duplicate test\" },\r\n id: '0x1e',\r\n model: '0x11',\r\n userLabel: 'RF1.dgn',\r\n federationGuid: undefined,\r\n };\r\n\r\n expect(() => imodel.elements.insertElement(elProps2)).throws(\"Error inserting element\").to.have.property(\"metadata\");\r\n });\r\n\r\n it(\"should update an element code to a valid code\", () => {\r\n assert.exists(imodel.elements);\r\n const elProps: ElementProps = {\r\n classFullName: 'BisCore:RepositoryLink',\r\n code: { scope: \"0x1\", spec: \"0x10\", value: \"newcode update\" },\r\n id: '0x1e',\r\n model: '0x11',\r\n userLabel: 'RF1.dgn',\r\n federationGuid: undefined,\r\n };\r\n const elementId = imodel.elements.insertElement(elProps);\r\n const element = imodel.elements.getElement(elementId);\r\n assert.equal(element.code.value, elProps.code.value);\r\n assert.equal(element.code.spec, elProps.code.spec);\r\n assert.equal(element.code.scope, elProps.code.scope);\r\n\r\n let newCode = new Code({ scope: \"0x1\", spec: \"0x10\", value: \"UpdatedValue.dgn2\" });\r\n element.code = newCode;\r\n element.update();\r\n\r\n const updatedElement = imodel.elements.getElement(elementId);\r\n assert.equal(updatedElement.code.value, newCode.value);\r\n assert.equal(updatedElement.code.spec, newCode.spec);\r\n assert.equal(updatedElement.code.scope, newCode.scope);\r\n\r\n newCode = new Code({ scope: \"0x12\", spec: \"0x11\", value: \"UpdatedValue.dgn2\" });\r\n element.code = newCode;\r\n element.update();\r\n\r\n const updatedElement2 = imodel.elements.getElement(elementId);\r\n assert.equal(updatedElement2.code.value, newCode.value);\r\n assert.equal(updatedElement2.code.spec, newCode.spec);\r\n assert.equal(updatedElement2.code.scope, newCode.scope);\r\n });\r\n\r\n it(\"should fail to update an element code to a duplicate valid code\", () => {\r\n assert.exists(imodel.elements);\r\n const elProps: ElementProps = {\r\n classFullName: 'BisCore:RepositoryLink',\r\n code: { scope: \"0x1\", spec: \"0x10\", value: \"newcode3\" },\r\n id: '0x1e',\r\n model: '0x11',\r\n userLabel: 'RF1.dgn',\r\n federationGuid: undefined,\r\n };\r\n const elementId = imodel.elements.insertElement(elProps);\r\n const element = imodel.elements.getElement(elementId);\r\n assert.equal(element.code.value, elProps.code.value);\r\n assert.equal(element.code.spec, elProps.code.spec);\r\n assert.equal(element.code.scope, elProps.code.scope);\r\n\r\n const elProps2: ElementProps = {\r\n classFullName: 'BisCore:RepositoryLink',\r\n code: { scope: \"0x1\", spec: \"0x10\", value: \"newcode32\" },\r\n id: '0x1e',\r\n model: '0x11',\r\n userLabel: 'RF1.dgn',\r\n federationGuid: undefined,\r\n };\r\n const elementId2 = imodel.elements.insertElement(elProps2);\r\n const element2 = imodel.elements.getElement(elementId2);\r\n assert.equal(element2.code.value, elProps2.code.value);\r\n assert.equal(element2.code.spec, elProps2.code.spec);\r\n assert.equal(element2.code.scope, elProps2.code.scope);\r\n\r\n element.code = element2.code;\r\n expect(() => element.update()).to.throw(\"Error updating element\").to.have.property(\"metadata\");\r\n });\r\n\r\n it(\"should fail to update an element code with an invalid code value\", () => {\r\n assert.exists(imodel.elements);\r\n const elProps: ElementProps = {\r\n classFullName: 'BisCore:RepositoryLink',\r\n code: { scope: \"0x1\", spec: \"0x10\", value: \"newcode4\" },\r\n id: '0x1e',\r\n model: '0x11',\r\n userLabel: 'RF1.dgn',\r\n federationGuid: undefined,\r\n };\r\n const elementId = imodel.elements.insertElement(elProps);\r\n const element = imodel.elements.getElement(elementId);\r\n assert.equal(element.code.value, elProps.code.value);\r\n assert.equal(element.code.spec, elProps.code.spec);\r\n assert.equal(element.code.scope, elProps.code.scope);\r\n\r\n let newCode = new Code({ scope: \"0x1\", spec: \"0x10\", value: \"\" }); // empty value\r\n element.code = newCode;\r\n element.update();\r\n\r\n const updatedElement = imodel.elements.getElement(elementId);\r\n assert.equal(updatedElement.code.value, newCode.value);\r\n assert.equal(updatedElement.code.spec, newCode.spec);\r\n assert.equal(updatedElement.code.scope, newCode.scope);\r\n\r\n newCode = new Code({ scope: \"0x1\", spec: \"0x10\", value: \"validcodeagain\" }); // reset the code\r\n element.code = newCode;\r\n element.update();\r\n\r\n newCode = new Code({ scope: \"0x1\", spec: \"0x11\" }); // NULL value\r\n newCode.value = undefined as any;\r\n element.code = newCode;\r\n element.update();\r\n\r\n const updatedElement2 = imodel.elements.getElement(elementId);\r\n assert.equal(updatedElement2.code.value, \"\");\r\n assert.equal(updatedElement2.code.spec, newCode.spec);\r\n assert.equal(updatedElement2.code.scope, newCode.scope);\r\n\r\n newCode = Code.createEmpty(); // Empty Code\r\n element.code = newCode;\r\n element.update();\r\n\r\n const updatedElement3 = imodel.elements.getElement(elementId);\r\n assert.equal(updatedElement3.code.value, newCode.value);\r\n assert.equal(updatedElement3.code.spec, newCode.spec);\r\n assert.equal(updatedElement3.code.scope, newCode.scope);\r\n });\r\n\r\n it(\"should fail to update an element code with an invalid code scope\", () => {\r\n assert.exists(imodel.elements);\r\n const elProps: ElementProps = {\r\n classFullName: 'BisCore:RepositoryLink',\r\n code: { scope: \"0x1\", spec: \"0x10\", value: \"newcode5\" },\r\n id: '0x1e',\r\n model: '0x11',\r\n userLabel: 'RF1.dgn',\r\n federationGuid: undefined,\r\n };\r\n const elementId = imodel.elements.insertElement(elProps);\r\n const element = imodel.elements.getElement(elementId);\r\n assert.equal(element.code.value, elProps.code.value);\r\n assert.equal(element.code.spec, elProps.code.spec);\r\n assert.equal(element.code.scope, elProps.code.scope);\r\n\r\n let newCode = new Code({ scope: \"\", spec: \"0x10\", value: \"newcode5\" }); // empty scope\r\n element.code = newCode;\r\n expect(() => element.update()).to.throw(\"Error updating element\").to.have.property(\"metadata\");\r\n\r\n const updatedElement = imodel.elements.getElement(elementId);\r\n assert.equal(updatedElement.code.value, elProps.code.value);\r\n assert.equal(updatedElement.code.spec, elProps.code.spec);\r\n assert.equal(updatedElement.code.scope, elProps.code.scope);\r\n\r\n newCode = new Code({ scope: \"not a real id\", spec: \"0x10\", value: \"newcode5\" }); // bad id\r\n element.code = newCode;\r\n expect(() => element.update()).to.throw(\"Error updating element\").to.have.property(\"metadata\");\r\n\r\n const updatedElement2 = imodel.elements.getElement(elementId);\r\n assert.equal(updatedElement2.code.value, elProps.code.value);\r\n assert.equal(updatedElement2.code.spec, elProps.code.spec);\r\n assert.equal(updatedElement2.code.scope, elProps.code.scope);\r\n });\r\n});"]}
|
|
1
|
+
{"version":3,"file":"Code.test.js","sourceRoot":"","sources":["../../../../src/test/imodel/Code.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { assert, expect } from \"chai\";\r\nimport * as path from \"node:path\";\r\nimport { SnapshotDb } from \"../../core-backend\";\r\nimport { Code, ElementProps } from \"@itwin/core-common\";\r\nimport { IModelTestUtils } from \"../IModelTestUtils\";\r\nimport { KnownTestLocations } from \"../KnownTestLocations\";\r\nimport { Id64 } from \"@itwin/core-bentley\";\r\n\r\ndescribe(\"Code Tests\", () => {\r\n let imodel: SnapshotDb;\r\n\r\n before(async () => {\r\n IModelTestUtils.registerTestBimSchema();\r\n const seedFile = IModelTestUtils.resolveAssetFile(\"test.bim\");\r\n const snapshotFile = IModelTestUtils.prepareOutputFile(\"IModel\", \"test.bim\");\r\n imodel = IModelTestUtils.createSnapshotFromSeed(snapshotFile, seedFile);\r\n const schemaPathname = path.join(KnownTestLocations.assetsDir, \"TestBim.ecschema.xml\");\r\n await imodel.importSchemas([schemaPathname]);\r\n imodel.saveChanges();\r\n });\r\n\r\n after(() => {\r\n imodel.close();\r\n });\r\n\r\n describe(\"Code Query Tests\", () => {\r\n it(\"should query an element by code\", () => {\r\n assert.exists(imodel.elements);\r\n const code = new Code({ scope: \"0x11\", spec: \"0x10\", value: \"RF1.dgn\" });\r\n const elementId = imodel.elements.queryElementIdByCode(code);\r\n assert.exists(elementId);\r\n assert.equal(elementId, \"0x1e\");\r\n });\r\n\r\n it(\"should get undefined when querying an element with a bad code value\", () => {\r\n assert.exists(imodel.elements);\r\n const badCode = new Code({ scope: \"0x11\", spec: \"0x10\", value: \"RF1_does_not_exist.dgn\" });\r\n const elementId = imodel.elements.queryElementIdByCode(badCode);\r\n assert.isUndefined(elementId);\r\n });\r\n\r\n it(\"should get undefined when querying an element with an empty code\", () => {\r\n assert.exists(imodel.elements);\r\n const emptyCode = Code.createEmpty();\r\n const elementId = imodel.elements.queryElementIdByCode(emptyCode);\r\n assert.isUndefined(elementId);\r\n });\r\n\r\n it(\"should get undefined when querying an element with a non-breaking space value\", () => {\r\n assert.exists(imodel.elements);\r\n const elProps: ElementProps = {\r\n classFullName: 'BisCore:RepositoryLink',\r\n code: { scope: \"0x11\", spec: \"0x10\", value: \"\\xa0\" },\r\n id: '0x1e',\r\n model: '0x11',\r\n userLabel: 'RF1.dgn',\r\n federationGuid: undefined,\r\n };\r\n\r\n const id = imodel.elements.insertElement(elProps);\r\n assert.exists(id);\r\n assert.isTrue(Id64.isValidId64(id));\r\n\r\n const nonBreakingSpaceCode = new Code({ scope: \"0x11\", spec: \"0x10\", value: \"\\xa0\" });\r\n const elementId = imodel.elements.queryElementIdByCode(nonBreakingSpaceCode);\r\n assert.isUndefined(elementId);\r\n });\r\n\r\n it(\"should throw when querying an element with a NULL value\", () => {\r\n assert.exists(imodel.elements);\r\n const nullValueCode = { scope: \"0x11\", spec: \"0x10\", value: undefined as any };\r\n expect(() => imodel.elements.queryElementIdByCode(nullValueCode)).to.throw(\"Invalid Code\");\r\n });\r\n\r\n it(\"should throw when querying an element with an empty spec\", () => {\r\n assert.exists(imodel.elements);\r\n const noSpecCode = new Code({ scope: \"0x11\", spec: \"\", value: \"RF1.dgn\" });\r\n expect(() => imodel.elements.queryElementIdByCode(noSpecCode)).to.throw(\"Invalid CodeSpec\");\r\n });\r\n\r\n it(\"should get undefined when querying an element with a whitespace string spec\", () => {\r\n assert.exists(imodel.elements);\r\n const elProps: ElementProps = {\r\n classFullName: 'BisCore:RepositoryLink',\r\n code: { scope: \"0x11\", spec: \" \", value: \"RF1.dgn\" },\r\n id: '0x1e',\r\n model: '0x11',\r\n userLabel: 'RF1.dgn',\r\n federationGuid: undefined,\r\n };\r\n\r\n const id = imodel.elements.insertElement(elProps);\r\n assert.exists(id);\r\n assert.isTrue(Id64.isValidId64(id));\r\n\r\n const whitespaceCode = { scope: \"0x11\", spec: \" \", value: \"RF1.dgn\" };\r\n const elementId = imodel.elements.queryElementIdByCode(whitespaceCode);\r\n assert.isUndefined(elementId);\r\n });\r\n\r\n it(\"should get undefined when querying an element with a non-breaking space spec\", () => {\r\n assert.exists(imodel.elements);\r\n const nonBreakingSpaceCode = { scope: \"0x11\", spec: \"\\xa0\", value: \"RF1.dgn\" };\r\n const elementId = imodel.elements.queryElementIdByCode(nonBreakingSpaceCode);\r\n assert.isUndefined(elementId);\r\n });\r\n\r\n it(\"should throw when querying an element with a bad spec\", () => {\r\n assert.exists(imodel.elements);\r\n const badSpecCode = new Code({ scope: \"0x11\", spec: \"not a real id\", value: \"RF1.dgn\" });\r\n expect(() => imodel.elements.queryElementIdByCode(badSpecCode)).to.throw(\"Invalid CodeSpec\");\r\n });\r\n\r\n it(\"should get undefined when querying for an element id with no scope\", () => {\r\n assert.exists(imodel.elements);\r\n const noScopeCode = new Code({ scope: \"\", spec: \"0x10\", value: \"RF1.dgn\" });\r\n const elementId = imodel.elements.queryElementIdByCode(noScopeCode);\r\n assert.isUndefined(elementId);\r\n });\r\n\r\n it(\"should get undefined when querying for an element id with non-breaking space scope\", () => {\r\n assert.exists(imodel.elements);\r\n const nonBreakingSpaceCode = new Code({ scope: \"\\xa0\", spec: \"0x10\", value: \"RF1.dgn\" });\r\n const elementId = imodel.elements.queryElementIdByCode(nonBreakingSpaceCode);\r\n assert.isUndefined(elementId);\r\n });\r\n\r\n it(\"should get undefined when querying for an element id with a bad scope\", () => {\r\n assert.exists(imodel.elements);\r\n const badScopeCode = new Code({ scope: \"not a real id\", spec: \"0x10\", value: \"RF1.dgn\" });\r\n const elementId = imodel.elements.queryElementIdByCode(badScopeCode);\r\n assert.isUndefined(elementId);\r\n });\r\n });\r\n\r\n describe(\"Code Insertion Tests\", () => {\r\n it(\"should insert an element with valid Code\", () => {\r\n assert.exists(imodel.elements);\r\n const elProps: ElementProps = {\r\n classFullName: 'BisCore:RepositoryLink',\r\n code: { scope: \"0x1\", spec: \"0x10\", value: \"new code\" },\r\n id: '0x1e',\r\n model: '0x11',\r\n userLabel: 'RF1.dgn',\r\n federationGuid: undefined,\r\n };\r\n\r\n const id = imodel.elements.insertElement(elProps);\r\n assert.exists(id);\r\n assert.isTrue(Id64.isValidId64(id));\r\n });\r\n\r\n it(\"should fail to insert an element with invalid Code scope\", () => {\r\n assert.exists(imodel.elements);\r\n const elProps: ElementProps = {\r\n classFullName: 'BisCore:RepositoryLink',\r\n code: { scope: \"bad scope\", spec: \"0x10\", value: \"new code\" }, // invalid scope value\r\n id: '0x1e',\r\n model: '0x11',\r\n userLabel: 'RF1.dgn',\r\n federationGuid: undefined,\r\n };\r\n\r\n expect(() => imodel.elements.insertElement(elProps)).throws(\"invalid code scope\").to.have.property(\"metadata\");\r\n elProps.code.scope = \"0x34322\"; // valid id, but element doesn't exist\r\n expect(() => imodel.elements.insertElement(elProps)).throws(\"invalid code scope\").to.have.property(\"metadata\");\r\n elProps.code.scope = undefined as any; // nothing\r\n expect(() => imodel.elements.insertElement(elProps)).throws(\"invalid code scope\").to.have.property(\"metadata\");\r\n });\r\n\r\n it(\"should insert and trim an element with a code value with trailing spaces\", () => {\r\n assert.exists(imodel.elements);\r\n const elProps: ElementProps = {\r\n classFullName: 'BisCore:RepositoryLink',\r\n code: { scope: \"0x1\", spec: \"0x10\", value: \"new code trailing space test \" },\r\n id: '0x1e',\r\n model: '0x11',\r\n userLabel: 'RF1.dgn',\r\n federationGuid: undefined,\r\n };\r\n\r\n const id = imodel.elements.insertElement(elProps);\r\n assert.exists(id);\r\n assert.isTrue(Id64.isValidId64(id));\r\n\r\n const queryResult = imodel.elements.queryElementIdByCode({ scope: \"0x1\", spec: \"0x10\", value: \"new code trailing space test \" });\r\n assert.exists(queryResult);\r\n assert.equal(queryResult, id);\r\n const element = imodel.elements.getElement(id);\r\n assert.equal(element.code.value, \"new code trailing space test\");\r\n\r\n const elProps2: ElementProps = {\r\n classFullName: 'BisCore:RepositoryLink',\r\n code: { scope: \"0x1\", spec: \"0x10\", value: \"new code trailing space test2\\xa0\" },\r\n id: '0x1e',\r\n model: '0x11',\r\n userLabel: 'RF1.dgn',\r\n federationGuid: undefined,\r\n };\r\n\r\n const id2 = imodel.elements.insertElement(elProps2);\r\n assert.exists(id2);\r\n assert.isTrue(Id64.isValidId64(id2));\r\n\r\n const queryResult2 = imodel.elements.queryElementIdByCode({ scope: \"0x1\", spec: \"0x10\", value: \"new code trailing space test2\\xa0\" });\r\n assert.exists(queryResult2);\r\n assert.equal(queryResult2, id2);\r\n const element2 = imodel.elements.getElement(id2);\r\n assert.equal(element2.code.value, \"new code trailing space test2\");\r\n });\r\n\r\n it(\"should insert and trim an element with a code value that is only trailing spaces\", () => {\r\n assert.exists(imodel.elements);\r\n const elProps: ElementProps = {\r\n classFullName: 'BisCore:RepositoryLink',\r\n code: { scope: \"0x1\", spec: \"0x10\", value: \" \" },\r\n id: '0x1e',\r\n model: '0x11',\r\n userLabel: 'RF1.dgn',\r\n federationGuid: undefined,\r\n };\r\n\r\n const id = imodel.elements.insertElement(elProps);\r\n assert.exists(id);\r\n assert.isTrue(Id64.isValidId64(id));\r\n\r\n const element = imodel.elements.getElement(id);\r\n assert.equal(element.code.value, \"\");\r\n\r\n const elProps2: ElementProps = {\r\n classFullName: 'BisCore:RepositoryLink',\r\n code: { scope: \"0x1\", spec: \"0x10\", value: \"\\xa0\" },\r\n id: '0x1e',\r\n model: '0x11',\r\n userLabel: 'RF1.dgn',\r\n federationGuid: undefined,\r\n };\r\n\r\n const id2 = imodel.elements.insertElement(elProps2);\r\n assert.exists(id2);\r\n assert.isTrue(Id64.isValidId64(id2));\r\n\r\n const element2 = imodel.elements.getElement(id2);\r\n assert.equal(element2.code.value, \"\");\r\n });\r\n\r\n it(\"should fail to insert an element with invalid Code spec\", () => {\r\n assert.exists(imodel.elements);\r\n const elProps: ElementProps = {\r\n classFullName: 'BisCore:RepositoryLink',\r\n code: { scope: \"0x1\", spec: \"0x34322\", value: \"new code\" }, // valid id, but element doesn't exist\r\n id: '0x1e',\r\n model: '0x11',\r\n userLabel: 'RF1.dgn',\r\n federationGuid: undefined,\r\n };\r\n\r\n expect(() => imodel.elements.insertElement(elProps)).throws(\"Error inserting element\").to.have.property(\"metadata\");\r\n // TODO: Non-ID values currently do not throw an error. This should be caught in TS\r\n // elProps.code.spec = \"not a spec in the model\"; // not an id\r\n // expect(() => imodel.elements.insertElement(elProps)).throws(\"Error inserting element\").to.have.property(\"metadata\");\r\n // elProps.code.spec = undefined as any; // nothing\r\n // expect(() => imodel.elements.insertElement(elProps)).throws(\"Error inserting element\").to.have.property(\"metadata\");\r\n });\r\n\r\n it(\"should fail to insert an element with a duplicate valid code\", () => {\r\n assert.exists(imodel.elements);\r\n const elProps: ElementProps = {\r\n classFullName: 'BisCore:RepositoryLink',\r\n code: { scope: \"0x1\", spec: \"0x10\", value: \"new code duplicate test\" },\r\n id: '0x1e',\r\n model: '0x11',\r\n userLabel: 'RF1.dgn',\r\n federationGuid: undefined,\r\n };\r\n\r\n const id = imodel.elements.insertElement(elProps);\r\n assert.exists(id);\r\n assert.isTrue(Id64.isValidId64(id));\r\n\r\n const elProps2: ElementProps = {\r\n classFullName: 'BisCore:RepositoryLink',\r\n code: { scope: \"0x1\", spec: \"0x10\", value: \"new code duplicate test\" },\r\n id: '0x1e',\r\n model: '0x11',\r\n userLabel: 'RF1.dgn',\r\n federationGuid: undefined,\r\n };\r\n\r\n expect(() => imodel.elements.insertElement(elProps2)).throws(\"Error inserting element\").to.have.property(\"metadata\");\r\n });\r\n });\r\n\r\n describe(\"Code Update Tests\", () => {\r\n it(\"should update an element code to a valid code\", () => {\r\n assert.exists(imodel.elements);\r\n const elProps: ElementProps = {\r\n classFullName: 'BisCore:RepositoryLink',\r\n code: { scope: \"0x1\", spec: \"0x10\", value: \"newcode update\" },\r\n id: '0x1e',\r\n model: '0x11',\r\n userLabel: 'RF1.dgn',\r\n federationGuid: undefined,\r\n };\r\n const elementId = imodel.elements.insertElement(elProps);\r\n const element = imodel.elements.getElement(elementId);\r\n assert.equal(element.code.value, elProps.code.value);\r\n assert.equal(element.code.spec, elProps.code.spec);\r\n assert.equal(element.code.scope, elProps.code.scope);\r\n\r\n let newCode = new Code({ scope: \"0x1\", spec: \"0x10\", value: \"UpdatedValue.dgn2\" });\r\n element.code = newCode;\r\n element.update();\r\n\r\n const updatedElement = imodel.elements.getElement(elementId);\r\n assert.equal(updatedElement.code.value, newCode.value);\r\n assert.equal(updatedElement.code.spec, newCode.spec);\r\n assert.equal(updatedElement.code.scope, newCode.scope);\r\n\r\n newCode = new Code({ scope: \"0x12\", spec: \"0x11\", value: \"UpdatedValue.dgn2\" });\r\n element.code = newCode;\r\n element.update();\r\n\r\n const updatedElement2 = imodel.elements.getElement(elementId);\r\n assert.equal(updatedElement2.code.value, newCode.value);\r\n assert.equal(updatedElement2.code.spec, newCode.spec);\r\n assert.equal(updatedElement2.code.scope, newCode.scope);\r\n });\r\n\r\n it(\"should fail to update an element code to a duplicate valid code\", () => {\r\n assert.exists(imodel.elements);\r\n const elProps: ElementProps = {\r\n classFullName: 'BisCore:RepositoryLink',\r\n code: { scope: \"0x1\", spec: \"0x10\", value: \"newcode3\" },\r\n id: '0x1e',\r\n model: '0x11',\r\n userLabel: 'RF1.dgn',\r\n federationGuid: undefined,\r\n };\r\n const elementId = imodel.elements.insertElement(elProps);\r\n const element = imodel.elements.getElement(elementId);\r\n assert.equal(element.code.value, elProps.code.value);\r\n assert.equal(element.code.spec, elProps.code.spec);\r\n assert.equal(element.code.scope, elProps.code.scope);\r\n\r\n const elProps2: ElementProps = {\r\n classFullName: 'BisCore:RepositoryLink',\r\n code: { scope: \"0x1\", spec: \"0x10\", value: \"newcode32\" },\r\n id: '0x1e',\r\n model: '0x11',\r\n userLabel: 'RF1.dgn',\r\n federationGuid: undefined,\r\n };\r\n const elementId2 = imodel.elements.insertElement(elProps2);\r\n const element2 = imodel.elements.getElement(elementId2);\r\n assert.equal(element2.code.value, elProps2.code.value);\r\n assert.equal(element2.code.spec, elProps2.code.spec);\r\n assert.equal(element2.code.scope, elProps2.code.scope);\r\n\r\n element.code = element2.code;\r\n expect(() => element.update()).to.throw(\"Error updating element\").to.have.property(\"metadata\");\r\n });\r\n\r\n it(\"should update an element code with edge case code values\", () => {\r\n assert.exists(imodel.elements);\r\n const elProps: ElementProps = {\r\n classFullName: 'BisCore:RepositoryLink',\r\n code: { scope: \"0x1\", spec: \"0x10\", value: \"newcode4\" },\r\n id: '0x1e',\r\n model: '0x11',\r\n userLabel: 'RF1.dgn',\r\n federationGuid: undefined,\r\n };\r\n const elementId = imodel.elements.insertElement(elProps);\r\n const element = imodel.elements.getElement(elementId);\r\n assert.equal(element.code.value, elProps.code.value);\r\n assert.equal(element.code.spec, elProps.code.spec);\r\n assert.equal(element.code.scope, elProps.code.scope);\r\n\r\n let newCode = new Code({ scope: \"0x1\", spec: \"0x10\", value: \"\" }); // empty value\r\n element.code = newCode;\r\n element.update();\r\n\r\n const updatedElement = imodel.elements.getElement(elementId);\r\n assert.equal(updatedElement.code.value, newCode.value);\r\n assert.equal(updatedElement.code.spec, newCode.spec);\r\n assert.equal(updatedElement.code.scope, newCode.scope);\r\n\r\n newCode = new Code({ scope: \"0x1\", spec: \"0x10\", value: \"validcodeagain\" }); // reset the code\r\n element.code = newCode;\r\n element.update();\r\n\r\n newCode = new Code({ scope: \"0x1\", spec: \"0x11\" }); // NULL value\r\n newCode.value = undefined as any;\r\n element.code = newCode;\r\n element.update();\r\n\r\n const updatedElement2 = imodel.elements.getElement(elementId);\r\n assert.equal(updatedElement2.code.value, \"\");\r\n assert.equal(updatedElement2.code.spec, newCode.spec);\r\n assert.equal(updatedElement2.code.scope, newCode.scope);\r\n\r\n newCode = Code.createEmpty(); // Empty Code\r\n element.code = newCode;\r\n element.update();\r\n\r\n const updatedElement3 = imodel.elements.getElement(elementId);\r\n assert.equal(updatedElement3.code.value, newCode.value);\r\n assert.equal(updatedElement3.code.spec, newCode.spec);\r\n assert.equal(updatedElement3.code.scope, newCode.scope);\r\n\r\n newCode = new Code({ scope: \"0x1\", spec: \"0x11\", value: \"\\xa0\" }); // non-breaking space value\r\n element.code = newCode;\r\n element.update();\r\n\r\n const updatedElement4 = imodel.elements.getElement(elementId);\r\n assert.equal(updatedElement4.code.value, \"\");\r\n assert.equal(updatedElement4.code.spec, newCode.spec);\r\n assert.equal(updatedElement4.code.scope, newCode.scope);\r\n });\r\n\r\n it(\"should fail to update an element code with an invalid code scope\", () => {\r\n assert.exists(imodel.elements);\r\n const elProps: ElementProps = {\r\n classFullName: 'BisCore:RepositoryLink',\r\n code: { scope: \"0x1\", spec: \"0x10\", value: \"newcode5\" },\r\n id: '0x1e',\r\n model: '0x11',\r\n userLabel: 'RF1.dgn',\r\n federationGuid: undefined,\r\n };\r\n const elementId = imodel.elements.insertElement(elProps);\r\n const element = imodel.elements.getElement(elementId);\r\n assert.equal(element.code.value, elProps.code.value);\r\n assert.equal(element.code.spec, elProps.code.spec);\r\n assert.equal(element.code.scope, elProps.code.scope);\r\n\r\n let newCode = new Code({ scope: \"\", spec: \"0x10\", value: \"newcode5\" }); // empty scope\r\n element.code = newCode;\r\n expect(() => element.update()).to.throw(\"Error updating element\").to.have.property(\"metadata\");\r\n\r\n const updatedElement = imodel.elements.getElement(elementId);\r\n assert.equal(updatedElement.code.value, elProps.code.value);\r\n assert.equal(updatedElement.code.spec, elProps.code.spec);\r\n assert.equal(updatedElement.code.scope, elProps.code.scope);\r\n\r\n newCode = new Code({ scope: \"not a real id\", spec: \"0x10\", value: \"newcode5\" }); // bad id\r\n element.code = newCode;\r\n expect(() => element.update()).to.throw(\"Error updating element\").to.have.property(\"metadata\");\r\n\r\n const updatedElement2 = imodel.elements.getElement(elementId);\r\n assert.equal(updatedElement2.code.value, elProps.code.value);\r\n assert.equal(updatedElement2.code.spec, elProps.code.spec);\r\n assert.equal(updatedElement2.code.scope, elProps.code.scope);\r\n });\r\n });\r\n});"]}
|
|
@@ -2198,6 +2198,9 @@ describe("iModel", () => {
|
|
|
2198
2198
|
expect(id2).to.equal(id);
|
|
2199
2199
|
const element2 = db.elements.getElementProps(id2);
|
|
2200
2200
|
expect(element2).to.not.equal(element1);
|
|
2201
|
+
// Make sure that the statement caches are not cleared
|
|
2202
|
+
expect(db._sqliteStatementCache.size).to.be.greaterThan(0);
|
|
2203
|
+
expect(db._statementCache.size).to.be.greaterThan(0);
|
|
2201
2204
|
db.abandonChanges();
|
|
2202
2205
|
db.close();
|
|
2203
2206
|
});
|