@itwin/core-backend 5.4.0-dev.7 → 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.
Files changed (432) hide show
  1. package/CHANGELOG.md +30 -1
  2. package/lib/cjs/BackendHubAccess.js.map +1 -1
  3. package/lib/cjs/BackendLoggerCategory.js.map +1 -1
  4. package/lib/cjs/BisCoreSchema.js.map +1 -1
  5. package/lib/cjs/BlobContainerService.js.map +1 -1
  6. package/lib/cjs/BriefcaseManager.js.map +1 -1
  7. package/lib/cjs/CatalogDb.js.map +1 -1
  8. package/lib/cjs/Category.js.map +1 -1
  9. package/lib/cjs/ChangeSummaryManager.js +2 -2
  10. package/lib/cjs/ChangeSummaryManager.js.map +1 -1
  11. package/lib/cjs/ChangedElementsDb.js.map +1 -1
  12. package/lib/cjs/ChangesetECAdaptor.js +248 -248
  13. package/lib/cjs/ChangesetECAdaptor.js.map +1 -1
  14. package/lib/cjs/ChannelControl.js.map +1 -1
  15. package/lib/cjs/CheckpointManager.js.map +1 -1
  16. package/lib/cjs/ClassRegistry.js +5 -5
  17. package/lib/cjs/ClassRegistry.js.map +1 -1
  18. package/lib/cjs/CloudSqlite.js.map +1 -1
  19. package/lib/cjs/CodeService.js.map +1 -1
  20. package/lib/cjs/CodeSpecs.js.map +1 -1
  21. package/lib/cjs/ConcurrentQuery.js.map +1 -1
  22. package/lib/cjs/CustomViewState3dCreator.js.map +1 -1
  23. package/lib/cjs/DevTools.js.map +1 -1
  24. package/lib/cjs/DisplayStyle.js.map +1 -1
  25. package/lib/cjs/ECDb.js.map +1 -1
  26. package/lib/cjs/ECSchemaXmlContext.js.map +1 -1
  27. package/lib/cjs/ECSqlStatement.js.map +1 -1
  28. package/lib/cjs/Element.js.map +1 -1
  29. package/lib/cjs/ElementAspect.js.map +1 -1
  30. package/lib/cjs/ElementGraphics.js.map +1 -1
  31. package/lib/cjs/ElementTreeWalker.js.map +1 -1
  32. package/lib/cjs/Entity.js.map +1 -1
  33. package/lib/cjs/EntityReferences.js.map +1 -1
  34. package/lib/cjs/ExportGraphics.js.map +1 -1
  35. package/lib/cjs/ExternalSource.js.map +1 -1
  36. package/lib/cjs/FontFile.js.map +1 -1
  37. package/lib/cjs/GeoCoordConfig.js.map +1 -1
  38. package/lib/cjs/GeographicCRSServices.js.map +1 -1
  39. package/lib/cjs/GeometrySummary.js +47 -47
  40. package/lib/cjs/GeometrySummary.js.map +1 -1
  41. package/lib/cjs/IModelDb.d.ts.map +1 -1
  42. package/lib/cjs/IModelDb.js +20 -17
  43. package/lib/cjs/IModelDb.js.map +1 -1
  44. package/lib/cjs/IModelDbFonts.js.map +1 -1
  45. package/lib/cjs/IModelElementCloneContext.js.map +1 -1
  46. package/lib/cjs/IModelHost.d.ts +11 -0
  47. package/lib/cjs/IModelHost.d.ts.map +1 -1
  48. package/lib/cjs/IModelHost.js +6 -0
  49. package/lib/cjs/IModelHost.js.map +1 -1
  50. package/lib/cjs/IModelIncrementalSchemaLocater.js.map +1 -1
  51. package/lib/cjs/IModelJsFs.js.map +1 -1
  52. package/lib/cjs/ImageSourceConversion.js.map +1 -1
  53. package/lib/cjs/IpcHost.js.map +1 -1
  54. package/lib/cjs/LineStyle.js.map +1 -1
  55. package/lib/cjs/LocalHub.js +1 -1
  56. package/lib/cjs/LocalHub.js.map +1 -1
  57. package/lib/cjs/LocalhostIpcHost.d.ts +1 -0
  58. package/lib/cjs/LocalhostIpcHost.d.ts.map +1 -1
  59. package/lib/cjs/LocalhostIpcHost.js +1 -1
  60. package/lib/cjs/LocalhostIpcHost.js.map +1 -1
  61. package/lib/cjs/LockControl.js.map +1 -1
  62. package/lib/cjs/Material.js.map +1 -1
  63. package/lib/cjs/Model.js.map +1 -1
  64. package/lib/cjs/NativeAppStorage.js.map +1 -1
  65. package/lib/cjs/NativeHost.d.ts.map +1 -1
  66. package/lib/cjs/NativeHost.js +7 -0
  67. package/lib/cjs/NativeHost.js.map +1 -1
  68. package/lib/cjs/NavigationRelationship.d.ts +8 -0
  69. package/lib/cjs/NavigationRelationship.d.ts.map +1 -1
  70. package/lib/cjs/NavigationRelationship.js +12 -1
  71. package/lib/cjs/NavigationRelationship.js.map +1 -1
  72. package/lib/cjs/PromiseMemoizer.js.map +1 -1
  73. package/lib/cjs/PropertyStore.js.map +1 -1
  74. package/lib/cjs/Relationship.js.map +1 -1
  75. package/lib/cjs/RpcBackend.js.map +1 -1
  76. package/lib/cjs/SQLiteDb.js.map +1 -1
  77. package/lib/cjs/Schema.js.map +1 -1
  78. package/lib/cjs/SchemaSync.js.map +1 -1
  79. package/lib/cjs/SchemaUtils.js.map +1 -1
  80. package/lib/cjs/SheetIndex.js.map +1 -1
  81. package/lib/cjs/SqliteChangesetReader.js.map +1 -1
  82. package/lib/cjs/SqliteStatement.js.map +1 -1
  83. package/lib/cjs/StashManager.js.map +1 -1
  84. package/lib/cjs/Texture.js.map +1 -1
  85. package/lib/cjs/TileStorage.js.map +1 -1
  86. package/lib/cjs/TxnManager.d.ts +16 -4
  87. package/lib/cjs/TxnManager.d.ts.map +1 -1
  88. package/lib/cjs/TxnManager.js +25 -3
  89. package/lib/cjs/TxnManager.js.map +1 -1
  90. package/lib/cjs/ViewDefinition.js.map +1 -1
  91. package/lib/cjs/ViewStateHydrator.js.map +1 -1
  92. package/lib/cjs/ViewStore.js.map +1 -1
  93. package/lib/cjs/annotations/ElementDrivesTextAnnotation.js.map +1 -1
  94. package/lib/cjs/annotations/FrameGeometry.js.map +1 -1
  95. package/lib/cjs/annotations/LeaderGeometry.js.map +1 -1
  96. package/lib/cjs/annotations/TextAnnotationElement.js.map +1 -1
  97. package/lib/cjs/annotations/TextAnnotationGeometry.js.map +1 -1
  98. package/lib/cjs/annotations/TextBlockGeometry.js.map +1 -1
  99. package/lib/cjs/annotations/TextBlockLayout.js.map +1 -1
  100. package/lib/cjs/assets/IModelChange.02.00.00.ecschema.xml +90 -90
  101. package/lib/cjs/assets/Settings/Schemas/Base.Schema.json +32 -32
  102. package/lib/cjs/assets/Settings/Schemas/Gcs.schema.json +27 -27
  103. package/lib/cjs/assets/Settings/Schemas/Workspace.Schema.json +94 -94
  104. package/lib/cjs/assets/Settings/backend.setting.json5 +21 -21
  105. package/lib/cjs/core-backend.js.map +1 -1
  106. package/lib/cjs/domains/FunctionalElements.js.map +1 -1
  107. package/lib/cjs/domains/FunctionalSchema.js.map +1 -1
  108. package/lib/cjs/domains/GenericElements.js.map +1 -1
  109. package/lib/cjs/domains/GenericSchema.js.map +1 -1
  110. package/lib/cjs/internal/ChangesetConflictArgs.js.map +1 -1
  111. package/lib/cjs/internal/ChannelAdmin.d.ts.map +1 -1
  112. package/lib/cjs/internal/ChannelAdmin.js +9 -1
  113. package/lib/cjs/internal/ChannelAdmin.js.map +1 -1
  114. package/lib/cjs/internal/ElementLRUCache.js.map +1 -1
  115. package/lib/cjs/internal/FontFileImpl.js.map +1 -1
  116. package/lib/cjs/internal/HubMock.js.map +1 -1
  117. package/lib/cjs/internal/IModelDbFontsImpl.js.map +1 -1
  118. package/lib/cjs/internal/NativePlatform.js.map +1 -1
  119. package/lib/cjs/internal/NoLocks.js.map +1 -1
  120. package/lib/cjs/internal/OnlineStatus.d.ts +15 -0
  121. package/lib/cjs/internal/OnlineStatus.d.ts.map +1 -0
  122. package/lib/cjs/internal/OnlineStatus.js +28 -0
  123. package/lib/cjs/internal/OnlineStatus.js.map +1 -0
  124. package/lib/cjs/internal/ServerBasedLocks.js.map +1 -1
  125. package/lib/cjs/internal/Symbols.js.map +1 -1
  126. package/lib/cjs/internal/annotations/fields.js.map +1 -1
  127. package/lib/cjs/internal/cross-package.js.map +1 -1
  128. package/lib/cjs/internal/workspace/SettingsImpl.js.map +1 -1
  129. package/lib/cjs/internal/workspace/SettingsSchemasImpl.js.map +1 -1
  130. package/lib/cjs/internal/workspace/WorkspaceImpl.d.ts.map +1 -1
  131. package/lib/cjs/internal/workspace/WorkspaceImpl.js +12 -0
  132. package/lib/cjs/internal/workspace/WorkspaceImpl.js.map +1 -1
  133. package/lib/cjs/internal/workspace/WorkspaceSqliteDb.js.map +1 -1
  134. package/lib/cjs/rpc/multipart.js.map +1 -1
  135. package/lib/cjs/rpc/tracing.js.map +1 -1
  136. package/lib/cjs/rpc/web/logging.js.map +1 -1
  137. package/lib/cjs/rpc/web/request.js.map +1 -1
  138. package/lib/cjs/rpc/web/response.js.map +1 -1
  139. package/lib/cjs/rpc-impl/DevToolsRpcImpl.js.map +1 -1
  140. package/lib/cjs/rpc-impl/IModelReadRpcImpl.js.map +1 -1
  141. package/lib/cjs/rpc-impl/IModelTileRpcImpl.js.map +1 -1
  142. package/lib/cjs/rpc-impl/RpcBriefcaseUtility.js.map +1 -1
  143. package/lib/cjs/rpc-impl/SnapshotIModelRpcImpl.js.map +1 -1
  144. package/lib/cjs/workspace/Settings.js.map +1 -1
  145. package/lib/cjs/workspace/SettingsSchemas.js.map +1 -1
  146. package/lib/cjs/workspace/Workspace.js.map +1 -1
  147. package/lib/cjs/workspace/WorkspaceEditor.js.map +1 -1
  148. package/lib/esm/BackendHubAccess.js.map +1 -1
  149. package/lib/esm/BackendLoggerCategory.js.map +1 -1
  150. package/lib/esm/BisCoreSchema.js.map +1 -1
  151. package/lib/esm/BlobContainerService.js.map +1 -1
  152. package/lib/esm/BriefcaseManager.js.map +1 -1
  153. package/lib/esm/CatalogDb.js.map +1 -1
  154. package/lib/esm/Category.js.map +1 -1
  155. package/lib/esm/ChangeSummaryManager.js +2 -2
  156. package/lib/esm/ChangeSummaryManager.js.map +1 -1
  157. package/lib/esm/ChangedElementsDb.js.map +1 -1
  158. package/lib/esm/ChangesetECAdaptor.js +248 -248
  159. package/lib/esm/ChangesetECAdaptor.js.map +1 -1
  160. package/lib/esm/ChannelControl.js.map +1 -1
  161. package/lib/esm/CheckpointManager.js.map +1 -1
  162. package/lib/esm/ClassRegistry.js +5 -5
  163. package/lib/esm/ClassRegistry.js.map +1 -1
  164. package/lib/esm/CloudSqlite.js.map +1 -1
  165. package/lib/esm/CodeService.js.map +1 -1
  166. package/lib/esm/CodeSpecs.js.map +1 -1
  167. package/lib/esm/ConcurrentQuery.js.map +1 -1
  168. package/lib/esm/CustomViewState3dCreator.js.map +1 -1
  169. package/lib/esm/DevTools.js.map +1 -1
  170. package/lib/esm/DisplayStyle.js.map +1 -1
  171. package/lib/esm/ECDb.js.map +1 -1
  172. package/lib/esm/ECSchemaXmlContext.js.map +1 -1
  173. package/lib/esm/ECSqlStatement.js.map +1 -1
  174. package/lib/esm/Element.js.map +1 -1
  175. package/lib/esm/ElementAspect.js.map +1 -1
  176. package/lib/esm/ElementGraphics.js.map +1 -1
  177. package/lib/esm/ElementTreeWalker.js.map +1 -1
  178. package/lib/esm/Entity.js.map +1 -1
  179. package/lib/esm/EntityReferences.js.map +1 -1
  180. package/lib/esm/ExportGraphics.js.map +1 -1
  181. package/lib/esm/ExternalSource.js.map +1 -1
  182. package/lib/esm/FontFile.js.map +1 -1
  183. package/lib/esm/GeoCoordConfig.js.map +1 -1
  184. package/lib/esm/GeographicCRSServices.js.map +1 -1
  185. package/lib/esm/GeometrySummary.js +47 -47
  186. package/lib/esm/GeometrySummary.js.map +1 -1
  187. package/lib/esm/IModelDb.d.ts.map +1 -1
  188. package/lib/esm/IModelDb.js +20 -17
  189. package/lib/esm/IModelDb.js.map +1 -1
  190. package/lib/esm/IModelDbFonts.js.map +1 -1
  191. package/lib/esm/IModelElementCloneContext.js.map +1 -1
  192. package/lib/esm/IModelHost.d.ts +11 -0
  193. package/lib/esm/IModelHost.d.ts.map +1 -1
  194. package/lib/esm/IModelHost.js +6 -0
  195. package/lib/esm/IModelHost.js.map +1 -1
  196. package/lib/esm/IModelIncrementalSchemaLocater.js.map +1 -1
  197. package/lib/esm/IModelJsFs.js.map +1 -1
  198. package/lib/esm/ImageSourceConversion.js.map +1 -1
  199. package/lib/esm/IpcHost.js.map +1 -1
  200. package/lib/esm/LineStyle.js.map +1 -1
  201. package/lib/esm/LocalHub.js +1 -1
  202. package/lib/esm/LocalHub.js.map +1 -1
  203. package/lib/esm/LocalhostIpcHost.d.ts +1 -0
  204. package/lib/esm/LocalhostIpcHost.d.ts.map +1 -1
  205. package/lib/esm/LocalhostIpcHost.js +1 -1
  206. package/lib/esm/LocalhostIpcHost.js.map +1 -1
  207. package/lib/esm/LockControl.js.map +1 -1
  208. package/lib/esm/Material.js.map +1 -1
  209. package/lib/esm/Model.js.map +1 -1
  210. package/lib/esm/NativeAppStorage.js.map +1 -1
  211. package/lib/esm/NativeHost.d.ts.map +1 -1
  212. package/lib/esm/NativeHost.js +8 -1
  213. package/lib/esm/NativeHost.js.map +1 -1
  214. package/lib/esm/NavigationRelationship.d.ts +8 -0
  215. package/lib/esm/NavigationRelationship.d.ts.map +1 -1
  216. package/lib/esm/NavigationRelationship.js +10 -0
  217. package/lib/esm/NavigationRelationship.js.map +1 -1
  218. package/lib/esm/PromiseMemoizer.js.map +1 -1
  219. package/lib/esm/PropertyStore.js.map +1 -1
  220. package/lib/esm/Relationship.js.map +1 -1
  221. package/lib/esm/RpcBackend.js.map +1 -1
  222. package/lib/esm/SQLiteDb.js.map +1 -1
  223. package/lib/esm/Schema.js.map +1 -1
  224. package/lib/esm/SchemaSync.js.map +1 -1
  225. package/lib/esm/SchemaUtils.js.map +1 -1
  226. package/lib/esm/SheetIndex.js.map +1 -1
  227. package/lib/esm/SqliteChangesetReader.js.map +1 -1
  228. package/lib/esm/SqliteStatement.js.map +1 -1
  229. package/lib/esm/StashManager.js.map +1 -1
  230. package/lib/esm/Texture.js.map +1 -1
  231. package/lib/esm/TileStorage.js.map +1 -1
  232. package/lib/esm/TxnManager.d.ts +16 -4
  233. package/lib/esm/TxnManager.d.ts.map +1 -1
  234. package/lib/esm/TxnManager.js +25 -3
  235. package/lib/esm/TxnManager.js.map +1 -1
  236. package/lib/esm/ViewDefinition.js.map +1 -1
  237. package/lib/esm/ViewStateHydrator.js.map +1 -1
  238. package/lib/esm/ViewStore.js.map +1 -1
  239. package/lib/esm/annotations/ElementDrivesTextAnnotation.js.map +1 -1
  240. package/lib/esm/annotations/FrameGeometry.js.map +1 -1
  241. package/lib/esm/annotations/LeaderGeometry.js.map +1 -1
  242. package/lib/esm/annotations/TextAnnotationElement.js.map +1 -1
  243. package/lib/esm/annotations/TextAnnotationGeometry.js.map +1 -1
  244. package/lib/esm/annotations/TextBlockGeometry.js.map +1 -1
  245. package/lib/esm/annotations/TextBlockLayout.js.map +1 -1
  246. package/lib/esm/core-backend.js.map +1 -1
  247. package/lib/esm/domains/FunctionalElements.js.map +1 -1
  248. package/lib/esm/domains/FunctionalSchema.js.map +1 -1
  249. package/lib/esm/domains/GenericElements.js.map +1 -1
  250. package/lib/esm/domains/GenericSchema.js.map +1 -1
  251. package/lib/esm/internal/ChangesetConflictArgs.js.map +1 -1
  252. package/lib/esm/internal/ChannelAdmin.d.ts.map +1 -1
  253. package/lib/esm/internal/ChannelAdmin.js +9 -1
  254. package/lib/esm/internal/ChannelAdmin.js.map +1 -1
  255. package/lib/esm/internal/ElementLRUCache.js.map +1 -1
  256. package/lib/esm/internal/FontFileImpl.js.map +1 -1
  257. package/lib/esm/internal/HubMock.js.map +1 -1
  258. package/lib/esm/internal/IModelDbFontsImpl.js.map +1 -1
  259. package/lib/esm/internal/NativePlatform.js.map +1 -1
  260. package/lib/esm/internal/NoLocks.js.map +1 -1
  261. package/lib/esm/internal/OnlineStatus.d.ts +15 -0
  262. package/lib/esm/internal/OnlineStatus.d.ts.map +1 -0
  263. package/lib/esm/internal/OnlineStatus.js +24 -0
  264. package/lib/esm/internal/OnlineStatus.js.map +1 -0
  265. package/lib/esm/internal/ServerBasedLocks.js.map +1 -1
  266. package/lib/esm/internal/Symbols.js.map +1 -1
  267. package/lib/esm/internal/annotations/fields.js.map +1 -1
  268. package/lib/esm/internal/cross-package.js.map +1 -1
  269. package/lib/esm/internal/workspace/SettingsImpl.js.map +1 -1
  270. package/lib/esm/internal/workspace/SettingsSchemasImpl.js.map +1 -1
  271. package/lib/esm/internal/workspace/WorkspaceImpl.d.ts.map +1 -1
  272. package/lib/esm/internal/workspace/WorkspaceImpl.js +13 -1
  273. package/lib/esm/internal/workspace/WorkspaceImpl.js.map +1 -1
  274. package/lib/esm/internal/workspace/WorkspaceSqliteDb.js.map +1 -1
  275. package/lib/esm/rpc/multipart.js.map +1 -1
  276. package/lib/esm/rpc/tracing.js.map +1 -1
  277. package/lib/esm/rpc/web/logging.js.map +1 -1
  278. package/lib/esm/rpc/web/request.js.map +1 -1
  279. package/lib/esm/rpc/web/response.js.map +1 -1
  280. package/lib/esm/rpc-impl/DevToolsRpcImpl.js.map +1 -1
  281. package/lib/esm/rpc-impl/IModelReadRpcImpl.js.map +1 -1
  282. package/lib/esm/rpc-impl/IModelTileRpcImpl.js.map +1 -1
  283. package/lib/esm/rpc-impl/RpcBriefcaseUtility.js.map +1 -1
  284. package/lib/esm/rpc-impl/SnapshotIModelRpcImpl.js.map +1 -1
  285. package/lib/esm/test/AdvancedEqual.js.map +1 -1
  286. package/lib/esm/test/AnnotationTestUtils.js.map +1 -1
  287. package/lib/esm/test/AttachDb.test.js +11 -11
  288. package/lib/esm/test/AttachDb.test.js.map +1 -1
  289. package/lib/esm/test/ElementDrivesElement.test.js +23 -23
  290. package/lib/esm/test/ElementDrivesElement.test.js.map +1 -1
  291. package/lib/esm/test/ElementLRUCache.test.js.map +1 -1
  292. package/lib/esm/test/GeometryTestUtil.js.map +1 -1
  293. package/lib/esm/test/IModelHost.test.js.map +1 -1
  294. package/lib/esm/test/IModelTestUtils.js.map +1 -1
  295. package/lib/esm/test/ImageSourceConversion.test.js.map +1 -1
  296. package/lib/esm/test/IpcHost.test.js.map +1 -1
  297. package/lib/esm/test/KnownTestLocations.js.map +1 -1
  298. package/lib/esm/test/PrintElementTree.js.map +1 -1
  299. package/lib/esm/test/PropertyDb.test.js.map +1 -1
  300. package/lib/esm/test/RevisionUtility.js.map +1 -1
  301. package/lib/esm/test/SchemaUtils.test.js +25 -25
  302. package/lib/esm/test/SchemaUtils.test.js.map +1 -1
  303. package/lib/esm/test/SequentialLogMatcher.js.map +1 -1
  304. package/lib/esm/test/TestChangeSetUtility.js.map +1 -1
  305. package/lib/esm/test/TestUtils.js.map +1 -1
  306. package/lib/esm/test/annotations/Fields.test.js +53 -53
  307. package/lib/esm/test/annotations/Fields.test.js.map +1 -1
  308. package/lib/esm/test/annotations/FrameGeometry.test.js.map +1 -1
  309. package/lib/esm/test/annotations/LeaderGeometry.test.js.map +1 -1
  310. package/lib/esm/test/annotations/TextAnnotation.test.js.map +1 -1
  311. package/lib/esm/test/annotations/TextBlock.test.js.map +1 -1
  312. package/lib/esm/test/assets/IncrementalSchemaLocater/configs/old.config.js.map +1 -1
  313. package/lib/esm/test/assets/IncrementalSchemaLocater/configs/simple.config.js.map +1 -1
  314. package/lib/esm/test/categories/Category.test.js.map +1 -1
  315. package/lib/esm/test/codespec/CodeSpec.test.js.map +1 -1
  316. package/lib/esm/test/ecdb/CTE.test.js +88 -88
  317. package/lib/esm/test/ecdb/CTE.test.js.map +1 -1
  318. package/lib/esm/test/ecdb/ConcurrentQuery.test.js +15 -15
  319. package/lib/esm/test/ecdb/ConcurrentQuery.test.js.map +1 -1
  320. package/lib/esm/test/ecdb/ConcurrentQueryLoad.test.js +15 -15
  321. package/lib/esm/test/ecdb/ConcurrentQueryLoad.test.js.map +1 -1
  322. package/lib/esm/test/ecdb/ECDb.test.js +72 -72
  323. package/lib/esm/test/ecdb/ECDb.test.js.map +1 -1
  324. package/lib/esm/test/ecdb/ECDbTestHelper.js.map +1 -1
  325. package/lib/esm/test/ecdb/ECSchemaXmlContext.test.js.map +1 -1
  326. package/lib/esm/test/ecdb/ECSqlAst.test.js +65 -65
  327. package/lib/esm/test/ecdb/ECSqlAst.test.js.map +1 -1
  328. package/lib/esm/test/ecdb/ECSqlQuery.test.js.map +1 -1
  329. package/lib/esm/test/ecdb/ECSqlReader.test.js +16 -16
  330. package/lib/esm/test/ecdb/ECSqlReader.test.js.map +1 -1
  331. package/lib/esm/test/ecdb/ECSqlStatement.test.js +332 -332
  332. package/lib/esm/test/ecdb/ECSqlStatement.test.js.map +1 -1
  333. package/lib/esm/test/ecdb/SqliteStatement.test.js.map +1 -1
  334. package/lib/esm/test/ecsql/dataset/ECSqlDatasets.js.map +1 -1
  335. package/lib/esm/test/ecsql/src/ECSqlTestGenerator.js +21 -21
  336. package/lib/esm/test/ecsql/src/ECSqlTestGenerator.js.map +1 -1
  337. package/lib/esm/test/ecsql/src/ECSqlTestParser.js.map +1 -1
  338. package/lib/esm/test/ecsql/src/ECSqlTestRunner.test.js.map +1 -1
  339. package/lib/esm/test/element/DeleteDefinitionElements.test.js.map +1 -1
  340. package/lib/esm/test/element/ElementAspect.test.js +49 -22
  341. package/lib/esm/test/element/ElementAspect.test.js.map +1 -1
  342. package/lib/esm/test/element/ElementDependencyGraph.test.js.map +1 -1
  343. package/lib/esm/test/element/ElementRoundTrip.test.js +139 -139
  344. package/lib/esm/test/element/ElementRoundTrip.test.js.map +1 -1
  345. package/lib/esm/test/element/ExcludedElements.test.js.map +1 -1
  346. package/lib/esm/test/element/ExternalSource.test.js.map +1 -1
  347. package/lib/esm/test/element/NullStructArray.test.js +13 -13
  348. package/lib/esm/test/element/NullStructArray.test.js.map +1 -1
  349. package/lib/esm/test/element/ProjectInformationRecord.test.js.map +1 -1
  350. package/lib/esm/test/element/SheetInformationAspect.test.js.map +1 -1
  351. package/lib/esm/test/element/UrlLink.test.js.map +1 -1
  352. package/lib/esm/test/font/FontFile.test.js.map +1 -1
  353. package/lib/esm/test/font/IModelDbFonts.test.js.map +1 -1
  354. package/lib/esm/test/hubaccess/ApplyChangeset.test.js +132 -34
  355. package/lib/esm/test/hubaccess/ApplyChangeset.test.js.map +1 -1
  356. package/lib/esm/test/hubaccess/BriefcaseManager.test.js.map +1 -1
  357. package/lib/esm/test/hubaccess/CheckpointManager.test.js.map +1 -1
  358. package/lib/esm/test/hubaccess/Rebase.test.js +197 -41
  359. package/lib/esm/test/hubaccess/Rebase.test.js.map +1 -1
  360. package/lib/esm/test/imageData.js.map +1 -1
  361. package/lib/esm/test/imodel/Code.test.js +369 -248
  362. package/lib/esm/test/imodel/Code.test.js.map +1 -1
  363. package/lib/esm/test/imodel/ElementTreeWalker.test.js.map +1 -1
  364. package/lib/esm/test/imodel/GetTextureImage.test.js.map +1 -1
  365. package/lib/esm/test/imodel/IModel.test.js +47 -44
  366. package/lib/esm/test/imodel/IModel.test.js.map +1 -1
  367. package/lib/esm/test/imodel/ProjectExtents.test.js.map +1 -1
  368. package/lib/esm/test/imodel/SchemaXmlImport.test.js.map +1 -1
  369. package/lib/esm/test/incrementalSchemaLocater/ECSqlQueries.test.js.map +1 -1
  370. package/lib/esm/test/incrementalSchemaLocater/IncrementalLoading.test.js +27 -8
  371. package/lib/esm/test/incrementalSchemaLocater/IncrementalLoading.test.js.map +1 -1
  372. package/lib/esm/test/incrementalSchemaLocater/utils/IModelSchemaLocater.js.map +1 -1
  373. package/lib/esm/test/incrementalSchemaLocater/utils/IncrementalTestHelper.d.ts +4 -1
  374. package/lib/esm/test/incrementalSchemaLocater/utils/IncrementalTestHelper.d.ts.map +1 -1
  375. package/lib/esm/test/incrementalSchemaLocater/utils/IncrementalTestHelper.js +14 -4
  376. package/lib/esm/test/incrementalSchemaLocater/utils/IncrementalTestHelper.js.map +1 -1
  377. package/lib/esm/test/incrementalSchemaLocater/utils/TestSqlSchemaLocater.js.map +1 -1
  378. package/lib/esm/test/index.js.map +1 -1
  379. package/lib/esm/test/misc/DevTools.test.js.map +1 -1
  380. package/lib/esm/test/misc/EntitySubClasses.test.js.map +1 -1
  381. package/lib/esm/test/misc/GeoServices.test.js.map +1 -1
  382. package/lib/esm/test/misc/PromiseMemoizer.test.js.map +1 -1
  383. package/lib/esm/test/native/DgnDbWorker.test.js.map +1 -1
  384. package/lib/esm/test/rpc/response.test.js.map +1 -1
  385. package/lib/esm/test/schema/ClassRegistry.test.js +99 -99
  386. package/lib/esm/test/schema/ClassRegistry.test.js.map +1 -1
  387. package/lib/esm/test/schema/FunctionalDomain.test.js.map +1 -1
  388. package/lib/esm/test/schema/GenericDomain.test.js.map +1 -1
  389. package/lib/esm/test/schema/IModelSchemaContext.test.js.map +1 -1
  390. package/lib/esm/test/sheetindex/SheetIndex.test.js.map +1 -1
  391. package/lib/esm/test/standalone/ChangeMerge.test.js +24 -0
  392. package/lib/esm/test/standalone/ChangeMerge.test.js.map +1 -1
  393. package/lib/esm/test/standalone/ChangesetReader.test.js +124 -124
  394. package/lib/esm/test/standalone/ChangesetReader.test.js.map +1 -1
  395. package/lib/esm/test/standalone/CustomViewState3dCreator.test.js.map +1 -1
  396. package/lib/esm/test/standalone/DisplayStyle.test.js.map +1 -1
  397. package/lib/esm/test/standalone/Drawing.test.js.map +1 -1
  398. package/lib/esm/test/standalone/ElementGraphics.test.js.map +1 -1
  399. package/lib/esm/test/standalone/ElementMesh.test.js.map +1 -1
  400. package/lib/esm/test/standalone/ExportGraphics.test.js +14 -14
  401. package/lib/esm/test/standalone/ExportGraphics.test.js.map +1 -1
  402. package/lib/esm/test/standalone/GeometryChangeEvents.test.js.map +1 -1
  403. package/lib/esm/test/standalone/GeometryStream.test.js.map +1 -1
  404. package/lib/esm/test/standalone/HubMock.test.js.map +1 -1
  405. package/lib/esm/test/standalone/IModelLimits.test.js.map +1 -1
  406. package/lib/esm/test/standalone/IModelWrite.test.js +27 -27
  407. package/lib/esm/test/standalone/IModelWrite.test.js.map +1 -1
  408. package/lib/esm/test/standalone/InlineGeometryPartReferences.test.js.map +1 -1
  409. package/lib/esm/test/standalone/MergeConflict.test.js.map +1 -1
  410. package/lib/esm/test/standalone/NativeAppStorage.test.js.map +1 -1
  411. package/lib/esm/test/standalone/RenderMaterialElement.test.js.map +1 -1
  412. package/lib/esm/test/standalone/RenderTimeline.test.js.map +1 -1
  413. package/lib/esm/test/standalone/SQLiteDb.test.js.map +1 -1
  414. package/lib/esm/test/standalone/SchemaUtils.test.js.map +1 -1
  415. package/lib/esm/test/standalone/SectionDrawing.test.js.map +1 -1
  416. package/lib/esm/test/standalone/ServerBasedLocks.test.js.map +1 -1
  417. package/lib/esm/test/standalone/Setting.test.js.map +1 -1
  418. package/lib/esm/test/standalone/Settings.test.js.map +1 -1
  419. package/lib/esm/test/standalone/SettingsSchemas.test.js.map +1 -1
  420. package/lib/esm/test/standalone/SnapshotDb.test.js.map +1 -1
  421. package/lib/esm/test/standalone/Texture.test.js.map +1 -1
  422. package/lib/esm/test/standalone/TileCache.test.js.map +1 -1
  423. package/lib/esm/test/standalone/TileTree.test.js.map +1 -1
  424. package/lib/esm/test/standalone/TxnManager.test.js.map +1 -1
  425. package/lib/esm/test/standalone/ViewDefinition.test.js.map +1 -1
  426. package/lib/esm/test/standalone/ViewStoreDb.test.js.map +1 -1
  427. package/lib/esm/test/standalone/Workspace.test.js.map +1 -1
  428. package/lib/esm/workspace/Settings.js.map +1 -1
  429. package/lib/esm/workspace/SettingsSchemas.js.map +1 -1
  430. package/lib/esm/workspace/Workspace.js.map +1 -1
  431. package/lib/esm/workspace/WorkspaceEditor.js.map +1 -1
  432. package/package.json +14 -14
@@ -4,7 +4,7 @@ import { Code } from "@itwin/core-common";
4
4
  import { IModelTestUtils } from "../IModelTestUtils";
5
5
  import { KnownTestLocations } from "../KnownTestLocations";
6
6
  import { Id64 } from "@itwin/core-bentley";
7
- describe("Code insertion tests", () => {
7
+ describe("Code Tests", () => {
8
8
  let imodel;
9
9
  before(async () => {
10
10
  IModelTestUtils.registerTestBimSchema();
@@ -18,255 +18,376 @@ describe("Code insertion tests", () => {
18
18
  after(() => {
19
19
  imodel.close();
20
20
  });
21
- it("should query an element by code", () => {
22
- assert.exists(imodel.elements);
23
- const code = new Code({ scope: "0x11", spec: "0x10", value: "RF1.dgn" });
24
- const elementId = imodel.elements.queryElementIdByCode(code);
25
- assert.exists(elementId);
26
- assert.equal(elementId, "0x1e");
21
+ describe("Code Query Tests", () => {
22
+ it("should query an element by code", () => {
23
+ assert.exists(imodel.elements);
24
+ const code = new Code({ scope: "0x11", spec: "0x10", value: "RF1.dgn" });
25
+ const elementId = imodel.elements.queryElementIdByCode(code);
26
+ assert.exists(elementId);
27
+ assert.equal(elementId, "0x1e");
28
+ });
29
+ it("should get undefined when querying an element with a bad code value", () => {
30
+ assert.exists(imodel.elements);
31
+ const badCode = new Code({ scope: "0x11", spec: "0x10", value: "RF1_does_not_exist.dgn" });
32
+ const elementId = imodel.elements.queryElementIdByCode(badCode);
33
+ assert.isUndefined(elementId);
34
+ });
35
+ it("should get undefined when querying an element with an empty code", () => {
36
+ assert.exists(imodel.elements);
37
+ const emptyCode = Code.createEmpty();
38
+ const elementId = imodel.elements.queryElementIdByCode(emptyCode);
39
+ assert.isUndefined(elementId);
40
+ });
41
+ it("should get undefined when querying an element with a non-breaking space value", () => {
42
+ assert.exists(imodel.elements);
43
+ const elProps = {
44
+ classFullName: 'BisCore:RepositoryLink',
45
+ code: { scope: "0x11", spec: "0x10", value: "\xa0" },
46
+ id: '0x1e',
47
+ model: '0x11',
48
+ userLabel: 'RF1.dgn',
49
+ federationGuid: undefined,
50
+ };
51
+ const id = imodel.elements.insertElement(elProps);
52
+ assert.exists(id);
53
+ assert.isTrue(Id64.isValidId64(id));
54
+ const nonBreakingSpaceCode = new Code({ scope: "0x11", spec: "0x10", value: "\xa0" });
55
+ const elementId = imodel.elements.queryElementIdByCode(nonBreakingSpaceCode);
56
+ assert.isUndefined(elementId);
57
+ });
58
+ it("should throw when querying an element with a NULL value", () => {
59
+ assert.exists(imodel.elements);
60
+ const nullValueCode = { scope: "0x11", spec: "0x10", value: undefined };
61
+ expect(() => imodel.elements.queryElementIdByCode(nullValueCode)).to.throw("Invalid Code");
62
+ });
63
+ it("should throw when querying an element with an empty spec", () => {
64
+ assert.exists(imodel.elements);
65
+ const noSpecCode = new Code({ scope: "0x11", spec: "", value: "RF1.dgn" });
66
+ expect(() => imodel.elements.queryElementIdByCode(noSpecCode)).to.throw("Invalid CodeSpec");
67
+ });
68
+ it("should get undefined when querying an element with a whitespace string spec", () => {
69
+ assert.exists(imodel.elements);
70
+ const elProps = {
71
+ classFullName: 'BisCore:RepositoryLink',
72
+ code: { scope: "0x11", spec: " ", value: "RF1.dgn" },
73
+ id: '0x1e',
74
+ model: '0x11',
75
+ userLabel: 'RF1.dgn',
76
+ federationGuid: undefined,
77
+ };
78
+ const id = imodel.elements.insertElement(elProps);
79
+ assert.exists(id);
80
+ assert.isTrue(Id64.isValidId64(id));
81
+ const whitespaceCode = { scope: "0x11", spec: " ", value: "RF1.dgn" };
82
+ const elementId = imodel.elements.queryElementIdByCode(whitespaceCode);
83
+ assert.isUndefined(elementId);
84
+ });
85
+ it("should get undefined when querying an element with a non-breaking space spec", () => {
86
+ assert.exists(imodel.elements);
87
+ const nonBreakingSpaceCode = { scope: "0x11", spec: "\xa0", value: "RF1.dgn" };
88
+ const elementId = imodel.elements.queryElementIdByCode(nonBreakingSpaceCode);
89
+ assert.isUndefined(elementId);
90
+ });
91
+ it("should throw when querying an element with a bad spec", () => {
92
+ assert.exists(imodel.elements);
93
+ const badSpecCode = new Code({ scope: "0x11", spec: "not a real id", value: "RF1.dgn" });
94
+ expect(() => imodel.elements.queryElementIdByCode(badSpecCode)).to.throw("Invalid CodeSpec");
95
+ });
96
+ it("should get undefined when querying for an element id with no scope", () => {
97
+ assert.exists(imodel.elements);
98
+ const noScopeCode = new Code({ scope: "", spec: "0x10", value: "RF1.dgn" });
99
+ const elementId = imodel.elements.queryElementIdByCode(noScopeCode);
100
+ assert.isUndefined(elementId);
101
+ });
102
+ it("should get undefined when querying for an element id with non-breaking space scope", () => {
103
+ assert.exists(imodel.elements);
104
+ const nonBreakingSpaceCode = new Code({ scope: "\xa0", spec: "0x10", value: "RF1.dgn" });
105
+ const elementId = imodel.elements.queryElementIdByCode(nonBreakingSpaceCode);
106
+ assert.isUndefined(elementId);
107
+ });
108
+ it("should get undefined when querying for an element id with a bad scope", () => {
109
+ assert.exists(imodel.elements);
110
+ const badScopeCode = new Code({ scope: "not a real id", spec: "0x10", value: "RF1.dgn" });
111
+ const elementId = imodel.elements.queryElementIdByCode(badScopeCode);
112
+ assert.isUndefined(elementId);
113
+ });
27
114
  });
28
- it("should get undefined when querying an element with a bad code value", () => {
29
- assert.exists(imodel.elements);
30
- const badCode = new Code({ scope: "0x11", spec: "0x10", value: "RF1_does_not_exist.dgn" });
31
- const elementId = imodel.elements.queryElementIdByCode(badCode);
32
- assert.isUndefined(elementId);
115
+ describe("Code Insertion Tests", () => {
116
+ it("should insert an element with valid Code", () => {
117
+ assert.exists(imodel.elements);
118
+ const elProps = {
119
+ classFullName: 'BisCore:RepositoryLink',
120
+ code: { scope: "0x1", spec: "0x10", value: "new code" },
121
+ id: '0x1e',
122
+ model: '0x11',
123
+ userLabel: 'RF1.dgn',
124
+ federationGuid: undefined,
125
+ };
126
+ const id = imodel.elements.insertElement(elProps);
127
+ assert.exists(id);
128
+ assert.isTrue(Id64.isValidId64(id));
129
+ });
130
+ it("should fail to insert an element with invalid Code scope", () => {
131
+ assert.exists(imodel.elements);
132
+ const elProps = {
133
+ classFullName: 'BisCore:RepositoryLink',
134
+ code: { scope: "bad scope", spec: "0x10", value: "new code" }, // invalid scope value
135
+ id: '0x1e',
136
+ model: '0x11',
137
+ userLabel: 'RF1.dgn',
138
+ federationGuid: undefined,
139
+ };
140
+ expect(() => imodel.elements.insertElement(elProps)).throws("invalid code scope").to.have.property("metadata");
141
+ elProps.code.scope = "0x34322"; // valid id, but element doesn't exist
142
+ expect(() => imodel.elements.insertElement(elProps)).throws("invalid code scope").to.have.property("metadata");
143
+ elProps.code.scope = undefined; // nothing
144
+ expect(() => imodel.elements.insertElement(elProps)).throws("invalid code scope").to.have.property("metadata");
145
+ });
146
+ it("should insert and trim an element with a code value with trailing spaces", () => {
147
+ assert.exists(imodel.elements);
148
+ const elProps = {
149
+ classFullName: 'BisCore:RepositoryLink',
150
+ code: { scope: "0x1", spec: "0x10", value: "new code trailing space test " },
151
+ id: '0x1e',
152
+ model: '0x11',
153
+ userLabel: 'RF1.dgn',
154
+ federationGuid: undefined,
155
+ };
156
+ const id = imodel.elements.insertElement(elProps);
157
+ assert.exists(id);
158
+ assert.isTrue(Id64.isValidId64(id));
159
+ const queryResult = imodel.elements.queryElementIdByCode({ scope: "0x1", spec: "0x10", value: "new code trailing space test " });
160
+ assert.exists(queryResult);
161
+ assert.equal(queryResult, id);
162
+ const element = imodel.elements.getElement(id);
163
+ assert.equal(element.code.value, "new code trailing space test");
164
+ const elProps2 = {
165
+ classFullName: 'BisCore:RepositoryLink',
166
+ code: { scope: "0x1", spec: "0x10", value: "new code trailing space test2\xa0" },
167
+ id: '0x1e',
168
+ model: '0x11',
169
+ userLabel: 'RF1.dgn',
170
+ federationGuid: undefined,
171
+ };
172
+ const id2 = imodel.elements.insertElement(elProps2);
173
+ assert.exists(id2);
174
+ assert.isTrue(Id64.isValidId64(id2));
175
+ const queryResult2 = imodel.elements.queryElementIdByCode({ scope: "0x1", spec: "0x10", value: "new code trailing space test2\xa0" });
176
+ assert.exists(queryResult2);
177
+ assert.equal(queryResult2, id2);
178
+ const element2 = imodel.elements.getElement(id2);
179
+ assert.equal(element2.code.value, "new code trailing space test2");
180
+ });
181
+ it("should insert and trim an element with a code value that is only trailing spaces", () => {
182
+ assert.exists(imodel.elements);
183
+ const elProps = {
184
+ classFullName: 'BisCore:RepositoryLink',
185
+ code: { scope: "0x1", spec: "0x10", value: " " },
186
+ id: '0x1e',
187
+ model: '0x11',
188
+ userLabel: 'RF1.dgn',
189
+ federationGuid: undefined,
190
+ };
191
+ const id = imodel.elements.insertElement(elProps);
192
+ assert.exists(id);
193
+ assert.isTrue(Id64.isValidId64(id));
194
+ const element = imodel.elements.getElement(id);
195
+ assert.equal(element.code.value, "");
196
+ const elProps2 = {
197
+ classFullName: 'BisCore:RepositoryLink',
198
+ code: { scope: "0x1", spec: "0x10", value: "\xa0" },
199
+ id: '0x1e',
200
+ model: '0x11',
201
+ userLabel: 'RF1.dgn',
202
+ federationGuid: undefined,
203
+ };
204
+ const id2 = imodel.elements.insertElement(elProps2);
205
+ assert.exists(id2);
206
+ assert.isTrue(Id64.isValidId64(id2));
207
+ const element2 = imodel.elements.getElement(id2);
208
+ assert.equal(element2.code.value, "");
209
+ });
210
+ it("should fail to insert an element with invalid Code spec", () => {
211
+ assert.exists(imodel.elements);
212
+ const elProps = {
213
+ classFullName: 'BisCore:RepositoryLink',
214
+ code: { scope: "0x1", spec: "0x34322", value: "new code" }, // valid id, but element doesn't exist
215
+ id: '0x1e',
216
+ model: '0x11',
217
+ userLabel: 'RF1.dgn',
218
+ federationGuid: undefined,
219
+ };
220
+ expect(() => imodel.elements.insertElement(elProps)).throws("Error inserting element").to.have.property("metadata");
221
+ // TODO: Non-ID values currently do not throw an error. This should be caught in TS
222
+ // elProps.code.spec = "not a spec in the model"; // not an id
223
+ // expect(() => imodel.elements.insertElement(elProps)).throws("Error inserting element").to.have.property("metadata");
224
+ // elProps.code.spec = undefined as any; // nothing
225
+ // expect(() => imodel.elements.insertElement(elProps)).throws("Error inserting element").to.have.property("metadata");
226
+ });
227
+ it("should fail to insert an element with a duplicate valid code", () => {
228
+ assert.exists(imodel.elements);
229
+ const elProps = {
230
+ classFullName: 'BisCore:RepositoryLink',
231
+ code: { scope: "0x1", spec: "0x10", value: "new code duplicate test" },
232
+ id: '0x1e',
233
+ model: '0x11',
234
+ userLabel: 'RF1.dgn',
235
+ federationGuid: undefined,
236
+ };
237
+ const id = imodel.elements.insertElement(elProps);
238
+ assert.exists(id);
239
+ assert.isTrue(Id64.isValidId64(id));
240
+ const elProps2 = {
241
+ classFullName: 'BisCore:RepositoryLink',
242
+ code: { scope: "0x1", spec: "0x10", value: "new code duplicate test" },
243
+ id: '0x1e',
244
+ model: '0x11',
245
+ userLabel: 'RF1.dgn',
246
+ federationGuid: undefined,
247
+ };
248
+ expect(() => imodel.elements.insertElement(elProps2)).throws("Error inserting element").to.have.property("metadata");
249
+ });
33
250
  });
34
- it("should get undefined when querying an element with an empty code", () => {
35
- assert.exists(imodel.elements);
36
- const emptyCode = Code.createEmpty();
37
- const elementId = imodel.elements.queryElementIdByCode(emptyCode);
38
- assert.isUndefined(elementId);
39
- });
40
- it("should throw when querying an element with a NULL code value", () => {
41
- assert.exists(imodel.elements);
42
- expect(() => imodel.elements.queryElementIdByCode({
43
- scope: "0x11", spec: "0x10",
44
- value: undefined
45
- })).to.throw("Invalid Code");
46
- });
47
- it("should throw when querying an element with an empty code spec", () => {
48
- assert.exists(imodel.elements);
49
- const noSpecCode = new Code({ scope: "0x11", spec: "", value: "RF1.dgn" });
50
- expect(() => imodel.elements.queryElementIdByCode(noSpecCode)).to.throw("Invalid CodeSpec");
51
- });
52
- it("should throw when querying an element with a bad code spec", () => {
53
- assert.exists(imodel.elements);
54
- const badSpecCode = new Code({ scope: "0x11", spec: "not a real id", value: "RF1.dgn" });
55
- expect(() => imodel.elements.queryElementIdByCode(badSpecCode)).to.throw("Invalid CodeSpec");
56
- });
57
- it("should get undefined when querying for an element id with no scope", () => {
58
- assert.exists(imodel.elements);
59
- const noScopeCode = new Code({ scope: "", spec: "0x10", value: "RF1.dgn" });
60
- const elementId = imodel.elements.queryElementIdByCode(noScopeCode);
61
- assert.isUndefined(elementId);
62
- });
63
- it("should get undefined when querying for an element id with a bad scope", () => {
64
- assert.exists(imodel.elements);
65
- const badScopeCode = new Code({ scope: "not a real id", spec: "0x10", value: "RF1.dgn" });
66
- const elementId = imodel.elements.queryElementIdByCode(badScopeCode);
67
- assert.isUndefined(elementId);
68
- });
69
- it("should insert an element with valid Code", () => {
70
- assert.exists(imodel.elements);
71
- const elProps = {
72
- classFullName: 'BisCore:RepositoryLink',
73
- code: { scope: "0x1", spec: "0x10", value: "new code" },
74
- id: '0x1e',
75
- model: '0x11',
76
- userLabel: 'RF1.dgn',
77
- federationGuid: undefined,
78
- };
79
- const id = imodel.elements.insertElement(elProps);
80
- assert.exists(id);
81
- assert.isTrue(Id64.isValidId64(id));
82
- });
83
- it("should fail to insert an element with invalid Code scope", () => {
84
- assert.exists(imodel.elements);
85
- const elProps = {
86
- classFullName: 'BisCore:RepositoryLink',
87
- code: { scope: "bad scope", spec: "0x10", value: "new code" }, // invalid scope value
88
- id: '0x1e',
89
- model: '0x11',
90
- userLabel: 'RF1.dgn',
91
- federationGuid: undefined,
92
- };
93
- expect(() => imodel.elements.insertElement(elProps)).throws("invalid code scope").to.have.property("metadata");
94
- elProps.code.scope = "0x34322"; // valid id, but element doesn't exist
95
- expect(() => imodel.elements.insertElement(elProps)).throws("invalid code scope").to.have.property("metadata");
96
- elProps.code.scope = undefined; // nothing
97
- expect(() => imodel.elements.insertElement(elProps)).throws("invalid code scope").to.have.property("metadata");
98
- });
99
- it("should fail to insert an element with invalid Code spec", () => {
100
- assert.exists(imodel.elements);
101
- const elProps = {
102
- classFullName: 'BisCore:RepositoryLink',
103
- code: { scope: "0x1", spec: "0x34322", value: "new code" }, // valid id, but element doesn't exist
104
- id: '0x1e',
105
- model: '0x11',
106
- userLabel: 'RF1.dgn',
107
- federationGuid: undefined,
108
- };
109
- expect(() => imodel.elements.insertElement(elProps)).throws("Error inserting element").to.have.property("metadata");
110
- // TODO: Non-ID values currently do not throw an error. This should be caught in TS
111
- // elProps.code.spec = "not a spec in the model"; // not an id
112
- // expect(() => imodel.elements.insertElement(elProps)).throws("Error inserting element").to.have.property("metadata");
113
- // elProps.code.spec = undefined as any; // nothing
114
- // expect(() => imodel.elements.insertElement(elProps)).throws("Error inserting element").to.have.property("metadata");
115
- });
116
- it("should fail to insert an element with a duplicate valid code", () => {
117
- assert.exists(imodel.elements);
118
- const elProps = {
119
- classFullName: 'BisCore:RepositoryLink',
120
- code: { scope: "0x1", spec: "0x10", value: "new code duplicate test" },
121
- id: '0x1e',
122
- model: '0x11',
123
- userLabel: 'RF1.dgn',
124
- federationGuid: undefined,
125
- };
126
- const id = imodel.elements.insertElement(elProps);
127
- assert.exists(id);
128
- assert.isTrue(Id64.isValidId64(id));
129
- const elProps2 = {
130
- classFullName: 'BisCore:RepositoryLink',
131
- code: { scope: "0x1", spec: "0x10", value: "new code duplicate test" },
132
- id: '0x1e',
133
- model: '0x11',
134
- userLabel: 'RF1.dgn',
135
- federationGuid: undefined,
136
- };
137
- expect(() => imodel.elements.insertElement(elProps2)).throws("Error inserting element").to.have.property("metadata");
138
- });
139
- it("should update an element code to a valid code", () => {
140
- assert.exists(imodel.elements);
141
- const elProps = {
142
- classFullName: 'BisCore:RepositoryLink',
143
- code: { scope: "0x1", spec: "0x10", value: "newcode update" },
144
- id: '0x1e',
145
- model: '0x11',
146
- userLabel: 'RF1.dgn',
147
- federationGuid: undefined,
148
- };
149
- const elementId = imodel.elements.insertElement(elProps);
150
- const element = imodel.elements.getElement(elementId);
151
- assert.equal(element.code.value, elProps.code.value);
152
- assert.equal(element.code.spec, elProps.code.spec);
153
- assert.equal(element.code.scope, elProps.code.scope);
154
- let newCode = new Code({ scope: "0x1", spec: "0x10", value: "UpdatedValue.dgn2" });
155
- element.code = newCode;
156
- element.update();
157
- const updatedElement = imodel.elements.getElement(elementId);
158
- assert.equal(updatedElement.code.value, newCode.value);
159
- assert.equal(updatedElement.code.spec, newCode.spec);
160
- assert.equal(updatedElement.code.scope, newCode.scope);
161
- newCode = new Code({ scope: "0x12", spec: "0x11", value: "UpdatedValue.dgn2" });
162
- element.code = newCode;
163
- element.update();
164
- const updatedElement2 = imodel.elements.getElement(elementId);
165
- assert.equal(updatedElement2.code.value, newCode.value);
166
- assert.equal(updatedElement2.code.spec, newCode.spec);
167
- assert.equal(updatedElement2.code.scope, newCode.scope);
168
- });
169
- it("should fail to update an element code to a duplicate valid code", () => {
170
- assert.exists(imodel.elements);
171
- const elProps = {
172
- classFullName: 'BisCore:RepositoryLink',
173
- code: { scope: "0x1", spec: "0x10", value: "newcode3" },
174
- id: '0x1e',
175
- model: '0x11',
176
- userLabel: 'RF1.dgn',
177
- federationGuid: undefined,
178
- };
179
- const elementId = imodel.elements.insertElement(elProps);
180
- const element = imodel.elements.getElement(elementId);
181
- assert.equal(element.code.value, elProps.code.value);
182
- assert.equal(element.code.spec, elProps.code.spec);
183
- assert.equal(element.code.scope, elProps.code.scope);
184
- const elProps2 = {
185
- classFullName: 'BisCore:RepositoryLink',
186
- code: { scope: "0x1", spec: "0x10", value: "newcode32" },
187
- id: '0x1e',
188
- model: '0x11',
189
- userLabel: 'RF1.dgn',
190
- federationGuid: undefined,
191
- };
192
- const elementId2 = imodel.elements.insertElement(elProps2);
193
- const element2 = imodel.elements.getElement(elementId2);
194
- assert.equal(element2.code.value, elProps2.code.value);
195
- assert.equal(element2.code.spec, elProps2.code.spec);
196
- assert.equal(element2.code.scope, elProps2.code.scope);
197
- element.code = element2.code;
198
- expect(() => element.update()).to.throw("Error updating element").to.have.property("metadata");
199
- });
200
- it("should fail to update an element code with an invalid code value", () => {
201
- assert.exists(imodel.elements);
202
- const elProps = {
203
- classFullName: 'BisCore:RepositoryLink',
204
- code: { scope: "0x1", spec: "0x10", value: "newcode4" },
205
- id: '0x1e',
206
- model: '0x11',
207
- userLabel: 'RF1.dgn',
208
- federationGuid: undefined,
209
- };
210
- const elementId = imodel.elements.insertElement(elProps);
211
- const element = imodel.elements.getElement(elementId);
212
- assert.equal(element.code.value, elProps.code.value);
213
- assert.equal(element.code.spec, elProps.code.spec);
214
- assert.equal(element.code.scope, elProps.code.scope);
215
- let newCode = new Code({ scope: "0x1", spec: "0x10", value: "" }); // empty value
216
- element.code = newCode;
217
- element.update();
218
- const updatedElement = imodel.elements.getElement(elementId);
219
- assert.equal(updatedElement.code.value, newCode.value);
220
- assert.equal(updatedElement.code.spec, newCode.spec);
221
- assert.equal(updatedElement.code.scope, newCode.scope);
222
- newCode = new Code({ scope: "0x1", spec: "0x10", value: "validcodeagain" }); // reset the code
223
- element.code = newCode;
224
- element.update();
225
- newCode = new Code({ scope: "0x1", spec: "0x11" }); // NULL value
226
- newCode.value = undefined;
227
- element.code = newCode;
228
- element.update();
229
- const updatedElement2 = imodel.elements.getElement(elementId);
230
- assert.equal(updatedElement2.code.value, "");
231
- assert.equal(updatedElement2.code.spec, newCode.spec);
232
- assert.equal(updatedElement2.code.scope, newCode.scope);
233
- newCode = Code.createEmpty(); // Empty Code
234
- element.code = newCode;
235
- element.update();
236
- const updatedElement3 = imodel.elements.getElement(elementId);
237
- assert.equal(updatedElement3.code.value, newCode.value);
238
- assert.equal(updatedElement3.code.spec, newCode.spec);
239
- assert.equal(updatedElement3.code.scope, newCode.scope);
240
- });
241
- it("should fail to update an element code with an invalid code scope", () => {
242
- assert.exists(imodel.elements);
243
- const elProps = {
244
- classFullName: 'BisCore:RepositoryLink',
245
- code: { scope: "0x1", spec: "0x10", value: "newcode5" },
246
- id: '0x1e',
247
- model: '0x11',
248
- userLabel: 'RF1.dgn',
249
- federationGuid: undefined,
250
- };
251
- const elementId = imodel.elements.insertElement(elProps);
252
- const element = imodel.elements.getElement(elementId);
253
- assert.equal(element.code.value, elProps.code.value);
254
- assert.equal(element.code.spec, elProps.code.spec);
255
- assert.equal(element.code.scope, elProps.code.scope);
256
- let newCode = new Code({ scope: "", spec: "0x10", value: "newcode5" }); // empty scope
257
- element.code = newCode;
258
- expect(() => element.update()).to.throw("Error updating element").to.have.property("metadata");
259
- const updatedElement = imodel.elements.getElement(elementId);
260
- assert.equal(updatedElement.code.value, elProps.code.value);
261
- assert.equal(updatedElement.code.spec, elProps.code.spec);
262
- assert.equal(updatedElement.code.scope, elProps.code.scope);
263
- newCode = new Code({ scope: "not a real id", spec: "0x10", value: "newcode5" }); // bad id
264
- element.code = newCode;
265
- expect(() => element.update()).to.throw("Error updating element").to.have.property("metadata");
266
- const updatedElement2 = imodel.elements.getElement(elementId);
267
- assert.equal(updatedElement2.code.value, elProps.code.value);
268
- assert.equal(updatedElement2.code.spec, elProps.code.spec);
269
- assert.equal(updatedElement2.code.scope, elProps.code.scope);
251
+ describe("Code Update Tests", () => {
252
+ it("should update an element code to a valid code", () => {
253
+ assert.exists(imodel.elements);
254
+ const elProps = {
255
+ classFullName: 'BisCore:RepositoryLink',
256
+ code: { scope: "0x1", spec: "0x10", value: "newcode update" },
257
+ id: '0x1e',
258
+ model: '0x11',
259
+ userLabel: 'RF1.dgn',
260
+ federationGuid: undefined,
261
+ };
262
+ const elementId = imodel.elements.insertElement(elProps);
263
+ const element = imodel.elements.getElement(elementId);
264
+ assert.equal(element.code.value, elProps.code.value);
265
+ assert.equal(element.code.spec, elProps.code.spec);
266
+ assert.equal(element.code.scope, elProps.code.scope);
267
+ let newCode = new Code({ scope: "0x1", spec: "0x10", value: "UpdatedValue.dgn2" });
268
+ element.code = newCode;
269
+ element.update();
270
+ const updatedElement = imodel.elements.getElement(elementId);
271
+ assert.equal(updatedElement.code.value, newCode.value);
272
+ assert.equal(updatedElement.code.spec, newCode.spec);
273
+ assert.equal(updatedElement.code.scope, newCode.scope);
274
+ newCode = new Code({ scope: "0x12", spec: "0x11", value: "UpdatedValue.dgn2" });
275
+ element.code = newCode;
276
+ element.update();
277
+ const updatedElement2 = imodel.elements.getElement(elementId);
278
+ assert.equal(updatedElement2.code.value, newCode.value);
279
+ assert.equal(updatedElement2.code.spec, newCode.spec);
280
+ assert.equal(updatedElement2.code.scope, newCode.scope);
281
+ });
282
+ it("should fail to update an element code to a duplicate valid code", () => {
283
+ assert.exists(imodel.elements);
284
+ const elProps = {
285
+ classFullName: 'BisCore:RepositoryLink',
286
+ code: { scope: "0x1", spec: "0x10", value: "newcode3" },
287
+ id: '0x1e',
288
+ model: '0x11',
289
+ userLabel: 'RF1.dgn',
290
+ federationGuid: undefined,
291
+ };
292
+ const elementId = imodel.elements.insertElement(elProps);
293
+ const element = imodel.elements.getElement(elementId);
294
+ assert.equal(element.code.value, elProps.code.value);
295
+ assert.equal(element.code.spec, elProps.code.spec);
296
+ assert.equal(element.code.scope, elProps.code.scope);
297
+ const elProps2 = {
298
+ classFullName: 'BisCore:RepositoryLink',
299
+ code: { scope: "0x1", spec: "0x10", value: "newcode32" },
300
+ id: '0x1e',
301
+ model: '0x11',
302
+ userLabel: 'RF1.dgn',
303
+ federationGuid: undefined,
304
+ };
305
+ const elementId2 = imodel.elements.insertElement(elProps2);
306
+ const element2 = imodel.elements.getElement(elementId2);
307
+ assert.equal(element2.code.value, elProps2.code.value);
308
+ assert.equal(element2.code.spec, elProps2.code.spec);
309
+ assert.equal(element2.code.scope, elProps2.code.scope);
310
+ element.code = element2.code;
311
+ expect(() => element.update()).to.throw("Error updating element").to.have.property("metadata");
312
+ });
313
+ it("should update an element code with edge case code values", () => {
314
+ assert.exists(imodel.elements);
315
+ const elProps = {
316
+ classFullName: 'BisCore:RepositoryLink',
317
+ code: { scope: "0x1", spec: "0x10", value: "newcode4" },
318
+ id: '0x1e',
319
+ model: '0x11',
320
+ userLabel: 'RF1.dgn',
321
+ federationGuid: undefined,
322
+ };
323
+ const elementId = imodel.elements.insertElement(elProps);
324
+ const element = imodel.elements.getElement(elementId);
325
+ assert.equal(element.code.value, elProps.code.value);
326
+ assert.equal(element.code.spec, elProps.code.spec);
327
+ assert.equal(element.code.scope, elProps.code.scope);
328
+ let newCode = new Code({ scope: "0x1", spec: "0x10", value: "" }); // empty value
329
+ element.code = newCode;
330
+ element.update();
331
+ const updatedElement = imodel.elements.getElement(elementId);
332
+ assert.equal(updatedElement.code.value, newCode.value);
333
+ assert.equal(updatedElement.code.spec, newCode.spec);
334
+ assert.equal(updatedElement.code.scope, newCode.scope);
335
+ newCode = new Code({ scope: "0x1", spec: "0x10", value: "validcodeagain" }); // reset the code
336
+ element.code = newCode;
337
+ element.update();
338
+ newCode = new Code({ scope: "0x1", spec: "0x11" }); // NULL value
339
+ newCode.value = undefined;
340
+ element.code = newCode;
341
+ element.update();
342
+ const updatedElement2 = imodel.elements.getElement(elementId);
343
+ assert.equal(updatedElement2.code.value, "");
344
+ assert.equal(updatedElement2.code.spec, newCode.spec);
345
+ assert.equal(updatedElement2.code.scope, newCode.scope);
346
+ newCode = Code.createEmpty(); // Empty Code
347
+ element.code = newCode;
348
+ element.update();
349
+ const updatedElement3 = imodel.elements.getElement(elementId);
350
+ assert.equal(updatedElement3.code.value, newCode.value);
351
+ assert.equal(updatedElement3.code.spec, newCode.spec);
352
+ assert.equal(updatedElement3.code.scope, newCode.scope);
353
+ newCode = new Code({ scope: "0x1", spec: "0x11", value: "\xa0" }); // non-breaking space value
354
+ element.code = newCode;
355
+ element.update();
356
+ const updatedElement4 = imodel.elements.getElement(elementId);
357
+ assert.equal(updatedElement4.code.value, "");
358
+ assert.equal(updatedElement4.code.spec, newCode.spec);
359
+ assert.equal(updatedElement4.code.scope, newCode.scope);
360
+ });
361
+ it("should fail to update an element code with an invalid code scope", () => {
362
+ assert.exists(imodel.elements);
363
+ const elProps = {
364
+ classFullName: 'BisCore:RepositoryLink',
365
+ code: { scope: "0x1", spec: "0x10", value: "newcode5" },
366
+ id: '0x1e',
367
+ model: '0x11',
368
+ userLabel: 'RF1.dgn',
369
+ federationGuid: undefined,
370
+ };
371
+ const elementId = imodel.elements.insertElement(elProps);
372
+ const element = imodel.elements.getElement(elementId);
373
+ assert.equal(element.code.value, elProps.code.value);
374
+ assert.equal(element.code.spec, elProps.code.spec);
375
+ assert.equal(element.code.scope, elProps.code.scope);
376
+ let newCode = new Code({ scope: "", spec: "0x10", value: "newcode5" }); // empty scope
377
+ element.code = newCode;
378
+ expect(() => element.update()).to.throw("Error updating element").to.have.property("metadata");
379
+ const updatedElement = imodel.elements.getElement(elementId);
380
+ assert.equal(updatedElement.code.value, elProps.code.value);
381
+ assert.equal(updatedElement.code.spec, elProps.code.spec);
382
+ assert.equal(updatedElement.code.scope, elProps.code.scope);
383
+ newCode = new Code({ scope: "not a real id", spec: "0x10", value: "newcode5" }); // bad id
384
+ element.code = newCode;
385
+ expect(() => element.update()).to.throw("Error updating element").to.have.property("metadata");
386
+ const updatedElement2 = imodel.elements.getElement(elementId);
387
+ assert.equal(updatedElement2.code.value, elProps.code.value);
388
+ assert.equal(updatedElement2.code.spec, elProps.code.spec);
389
+ assert.equal(updatedElement2.code.scope, elProps.code.scope);
390
+ });
270
391
  });
271
392
  });
272
393
  //# sourceMappingURL=Code.test.js.map