@itwin/core-backend 5.13.0-dev.11 → 5.13.0-dev.13

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 (484) hide show
  1. package/lib/cjs/BackendHubAccess.js.map +1 -1
  2. package/lib/cjs/BackendLoggerCategory.js.map +1 -1
  3. package/lib/cjs/BisCoreSchema.js.map +1 -1
  4. package/lib/cjs/BlobContainerService.js.map +1 -1
  5. package/lib/cjs/BriefcaseManager.js.map +1 -1
  6. package/lib/cjs/CatalogDb.js.map +1 -1
  7. package/lib/cjs/Category.js.map +1 -1
  8. package/lib/cjs/ChangeSummaryManager.js +2 -2
  9. package/lib/cjs/ChangeSummaryManager.js.map +1 -1
  10. package/lib/cjs/ChangedElementsDb.js.map +1 -1
  11. package/lib/cjs/ChangesetECAdaptor.js +248 -248
  12. package/lib/cjs/ChangesetECAdaptor.js.map +1 -1
  13. package/lib/cjs/ChangesetReader.js +3 -3
  14. package/lib/cjs/ChangesetReader.js.map +1 -1
  15. package/lib/cjs/ChangesetReaderTypes.js.map +1 -1
  16. package/lib/cjs/ChannelControl.js.map +1 -1
  17. package/lib/cjs/CheckpointManager.js.map +1 -1
  18. package/lib/cjs/ClassRegistry.js +5 -5
  19. package/lib/cjs/ClassRegistry.js.map +1 -1
  20. package/lib/cjs/CloudSqlite.js.map +1 -1
  21. package/lib/cjs/CodeService.js.map +1 -1
  22. package/lib/cjs/CodeSpecs.js.map +1 -1
  23. package/lib/cjs/ConcurrentQuery.js.map +1 -1
  24. package/lib/cjs/CustomViewState3dCreator.js.map +1 -1
  25. package/lib/cjs/DevTools.js.map +1 -1
  26. package/lib/cjs/DisplayStyle.js.map +1 -1
  27. package/lib/cjs/ECDb.js.map +1 -1
  28. package/lib/cjs/ECSchemaXmlContext.js.map +1 -1
  29. package/lib/cjs/ECSqlRowExecutor.js.map +1 -1
  30. package/lib/cjs/ECSqlStatement.js.map +1 -1
  31. package/lib/cjs/ECSqlSyncReader.js.map +1 -1
  32. package/lib/cjs/EditTxn.js.map +1 -1
  33. package/lib/cjs/Element.js.map +1 -1
  34. package/lib/cjs/ElementAspect.js.map +1 -1
  35. package/lib/cjs/ElementGraphics.js.map +1 -1
  36. package/lib/cjs/ElementTreeWalker.js.map +1 -1
  37. package/lib/cjs/Entity.js.map +1 -1
  38. package/lib/cjs/EntityReferences.js.map +1 -1
  39. package/lib/cjs/ExportGraphics.js.map +1 -1
  40. package/lib/cjs/ExternalSource.js.map +1 -1
  41. package/lib/cjs/FontFile.js.map +1 -1
  42. package/lib/cjs/GeoCoordConfig.js.map +1 -1
  43. package/lib/cjs/GeographicCRSServices.js.map +1 -1
  44. package/lib/cjs/GeometrySummary.js +47 -47
  45. package/lib/cjs/GeometrySummary.js.map +1 -1
  46. package/lib/cjs/IModelDb.js +25 -25
  47. package/lib/cjs/IModelDb.js.map +1 -1
  48. package/lib/cjs/IModelDbFonts.js.map +1 -1
  49. package/lib/cjs/IModelElementCloneContext.js.map +1 -1
  50. package/lib/cjs/IModelHost.js.map +1 -1
  51. package/lib/cjs/IModelIncrementalSchemaLocater.js.map +1 -1
  52. package/lib/cjs/IModelJsFs.js.map +1 -1
  53. package/lib/cjs/ImageSourceConversion.js.map +1 -1
  54. package/lib/cjs/IpcHost.js.map +1 -1
  55. package/lib/cjs/LineStyle.js.map +1 -1
  56. package/lib/cjs/LocalHub.js +1 -1
  57. package/lib/cjs/LocalHub.js.map +1 -1
  58. package/lib/cjs/LocalhostIpcHost.js.map +1 -1
  59. package/lib/cjs/LockControl.js.map +1 -1
  60. package/lib/cjs/Material.js.map +1 -1
  61. package/lib/cjs/Model.js.map +1 -1
  62. package/lib/cjs/NativeAppStorage.js.map +1 -1
  63. package/lib/cjs/NativeHost.js.map +1 -1
  64. package/lib/cjs/NavigationRelationship.js.map +1 -1
  65. package/lib/cjs/PartialChangeUnifier.js +7 -7
  66. package/lib/cjs/PartialChangeUnifier.js.map +1 -1
  67. package/lib/cjs/PromiseMemoizer.js.map +1 -1
  68. package/lib/cjs/PropertyStore.js.map +1 -1
  69. package/lib/cjs/Relationship.js.map +1 -1
  70. package/lib/cjs/RpcBackend.js.map +1 -1
  71. package/lib/cjs/SQLiteDb.js.map +1 -1
  72. package/lib/cjs/Schema.js.map +1 -1
  73. package/lib/cjs/SchemaSync.js.map +1 -1
  74. package/lib/cjs/SchemaUtils.js.map +1 -1
  75. package/lib/cjs/SheetIndex.js.map +1 -1
  76. package/lib/cjs/SqliteChangesetReader.js.map +1 -1
  77. package/lib/cjs/SqliteStatement.js.map +1 -1
  78. package/lib/cjs/StashManager.js.map +1 -1
  79. package/lib/cjs/Texture.js.map +1 -1
  80. package/lib/cjs/TileStorage.js.map +1 -1
  81. package/lib/cjs/TxnManager.js.map +1 -1
  82. package/lib/cjs/ViewDefinition.js.map +1 -1
  83. package/lib/cjs/ViewStateHydrator.js.map +1 -1
  84. package/lib/cjs/ViewStore.js.map +1 -1
  85. package/lib/cjs/annotations/ElementDrivesTextAnnotation.js.map +1 -1
  86. package/lib/cjs/annotations/FrameGeometry.js.map +1 -1
  87. package/lib/cjs/annotations/LeaderGeometry.js.map +1 -1
  88. package/lib/cjs/annotations/TextAnnotationElement.js.map +1 -1
  89. package/lib/cjs/annotations/TextAnnotationGeometry.js.map +1 -1
  90. package/lib/cjs/annotations/TextBlockGeometry.js.map +1 -1
  91. package/lib/cjs/annotations/TextBlockLayout.js.map +1 -1
  92. package/lib/cjs/assets/IModelChange.02.00.00.ecschema.xml +90 -90
  93. package/lib/cjs/assets/Settings/Schemas/Base.Schema.json +36 -36
  94. package/lib/cjs/assets/Settings/Schemas/Gcs.schema.json +28 -28
  95. package/lib/cjs/assets/Settings/Schemas/Workspace.Schema.json +94 -94
  96. package/lib/cjs/assets/Settings/backend.setting.json5 +21 -21
  97. package/lib/cjs/core-backend.js.map +1 -1
  98. package/lib/cjs/domains/FunctionalElements.js.map +1 -1
  99. package/lib/cjs/domains/FunctionalSchema.js.map +1 -1
  100. package/lib/cjs/domains/GenericElements.js.map +1 -1
  101. package/lib/cjs/domains/GenericSchema.js.map +1 -1
  102. package/lib/cjs/internal/ChangesetConflictArgs.js.map +1 -1
  103. package/lib/cjs/internal/ChannelAdmin.js.map +1 -1
  104. package/lib/cjs/internal/ECSqlInstanceReshaper.js.map +1 -1
  105. package/lib/cjs/internal/ElementLRUCache.js.map +1 -1
  106. package/lib/cjs/internal/FontFileImpl.js.map +1 -1
  107. package/lib/cjs/internal/HubMock.js.map +1 -1
  108. package/lib/cjs/internal/IModelDbFontsImpl.js.map +1 -1
  109. package/lib/cjs/internal/IntegrityCheck.js.map +1 -1
  110. package/lib/cjs/internal/NativePlatform.js.map +1 -1
  111. package/lib/cjs/internal/NoLocks.js.map +1 -1
  112. package/lib/cjs/internal/OnlineStatus.js.map +1 -1
  113. package/lib/cjs/internal/ServerBasedLocks.js +33 -33
  114. package/lib/cjs/internal/ServerBasedLocks.js.map +1 -1
  115. package/lib/cjs/internal/Symbols.js.map +1 -1
  116. package/lib/cjs/internal/annotations/fields.js.map +1 -1
  117. package/lib/cjs/internal/cross-package.js.map +1 -1
  118. package/lib/cjs/internal/workspace/SettingsEditorImpl.js.map +1 -1
  119. package/lib/cjs/internal/workspace/SettingsImpl.js.map +1 -1
  120. package/lib/cjs/internal/workspace/SettingsSchemasImpl.js.map +1 -1
  121. package/lib/cjs/internal/workspace/WorkspaceImpl.js.map +1 -1
  122. package/lib/cjs/internal/workspace/WorkspaceSqliteDb.js.map +1 -1
  123. package/lib/cjs/rpc/multipart.js.map +1 -1
  124. package/lib/cjs/rpc/tracing.js.map +1 -1
  125. package/lib/cjs/rpc/web/logging.js.map +1 -1
  126. package/lib/cjs/rpc/web/request.js.map +1 -1
  127. package/lib/cjs/rpc/web/response.js.map +1 -1
  128. package/lib/cjs/rpc-impl/DevToolsRpcImpl.js.map +1 -1
  129. package/lib/cjs/rpc-impl/IModelReadRpcImpl.js.map +1 -1
  130. package/lib/cjs/rpc-impl/IModelTileRpcImpl.js.map +1 -1
  131. package/lib/cjs/rpc-impl/RpcBriefcaseUtility.js.map +1 -1
  132. package/lib/cjs/rpc-impl/SnapshotIModelRpcImpl.js.map +1 -1
  133. package/lib/cjs/workspace/Settings.js.map +1 -1
  134. package/lib/cjs/workspace/SettingsDb.js.map +1 -1
  135. package/lib/cjs/workspace/SettingsEditor.js.map +1 -1
  136. package/lib/cjs/workspace/SettingsSchemas.js.map +1 -1
  137. package/lib/cjs/workspace/Workspace.js.map +1 -1
  138. package/lib/cjs/workspace/WorkspaceEditor.js.map +1 -1
  139. package/lib/esm/BackendHubAccess.js.map +1 -1
  140. package/lib/esm/BackendLoggerCategory.js.map +1 -1
  141. package/lib/esm/BisCoreSchema.js.map +1 -1
  142. package/lib/esm/BlobContainerService.js.map +1 -1
  143. package/lib/esm/BriefcaseManager.js.map +1 -1
  144. package/lib/esm/CatalogDb.js.map +1 -1
  145. package/lib/esm/Category.js.map +1 -1
  146. package/lib/esm/ChangeSummaryManager.js +2 -2
  147. package/lib/esm/ChangeSummaryManager.js.map +1 -1
  148. package/lib/esm/ChangedElementsDb.js.map +1 -1
  149. package/lib/esm/ChangesetECAdaptor.js +248 -248
  150. package/lib/esm/ChangesetECAdaptor.js.map +1 -1
  151. package/lib/esm/ChangesetReader.js +3 -3
  152. package/lib/esm/ChangesetReader.js.map +1 -1
  153. package/lib/esm/ChangesetReaderTypes.js.map +1 -1
  154. package/lib/esm/ChannelControl.js.map +1 -1
  155. package/lib/esm/CheckpointManager.js.map +1 -1
  156. package/lib/esm/ClassRegistry.js +5 -5
  157. package/lib/esm/ClassRegistry.js.map +1 -1
  158. package/lib/esm/CloudSqlite.js.map +1 -1
  159. package/lib/esm/CodeService.js.map +1 -1
  160. package/lib/esm/CodeSpecs.js.map +1 -1
  161. package/lib/esm/ConcurrentQuery.js.map +1 -1
  162. package/lib/esm/CustomViewState3dCreator.js.map +1 -1
  163. package/lib/esm/DevTools.js.map +1 -1
  164. package/lib/esm/DisplayStyle.js.map +1 -1
  165. package/lib/esm/ECDb.js.map +1 -1
  166. package/lib/esm/ECSchemaXmlContext.js.map +1 -1
  167. package/lib/esm/ECSqlRowExecutor.js.map +1 -1
  168. package/lib/esm/ECSqlStatement.js.map +1 -1
  169. package/lib/esm/ECSqlSyncReader.js.map +1 -1
  170. package/lib/esm/EditTxn.js.map +1 -1
  171. package/lib/esm/Element.js.map +1 -1
  172. package/lib/esm/ElementAspect.js.map +1 -1
  173. package/lib/esm/ElementGraphics.js.map +1 -1
  174. package/lib/esm/ElementTreeWalker.js.map +1 -1
  175. package/lib/esm/Entity.js.map +1 -1
  176. package/lib/esm/EntityReferences.js.map +1 -1
  177. package/lib/esm/ExportGraphics.js.map +1 -1
  178. package/lib/esm/ExternalSource.js.map +1 -1
  179. package/lib/esm/FontFile.js.map +1 -1
  180. package/lib/esm/GeoCoordConfig.js.map +1 -1
  181. package/lib/esm/GeographicCRSServices.js.map +1 -1
  182. package/lib/esm/GeometrySummary.js +47 -47
  183. package/lib/esm/GeometrySummary.js.map +1 -1
  184. package/lib/esm/IModelDb.js +25 -25
  185. package/lib/esm/IModelDb.js.map +1 -1
  186. package/lib/esm/IModelDbFonts.js.map +1 -1
  187. package/lib/esm/IModelElementCloneContext.js.map +1 -1
  188. package/lib/esm/IModelHost.js.map +1 -1
  189. package/lib/esm/IModelIncrementalSchemaLocater.js.map +1 -1
  190. package/lib/esm/IModelJsFs.js.map +1 -1
  191. package/lib/esm/ImageSourceConversion.js.map +1 -1
  192. package/lib/esm/IpcHost.js.map +1 -1
  193. package/lib/esm/LineStyle.js.map +1 -1
  194. package/lib/esm/LocalHub.js +1 -1
  195. package/lib/esm/LocalHub.js.map +1 -1
  196. package/lib/esm/LocalhostIpcHost.js.map +1 -1
  197. package/lib/esm/LockControl.js.map +1 -1
  198. package/lib/esm/Material.js.map +1 -1
  199. package/lib/esm/Model.js.map +1 -1
  200. package/lib/esm/NativeAppStorage.js.map +1 -1
  201. package/lib/esm/NativeHost.js.map +1 -1
  202. package/lib/esm/NavigationRelationship.js.map +1 -1
  203. package/lib/esm/PartialChangeUnifier.js +7 -7
  204. package/lib/esm/PartialChangeUnifier.js.map +1 -1
  205. package/lib/esm/PromiseMemoizer.js.map +1 -1
  206. package/lib/esm/PropertyStore.js.map +1 -1
  207. package/lib/esm/Relationship.js.map +1 -1
  208. package/lib/esm/RpcBackend.js.map +1 -1
  209. package/lib/esm/SQLiteDb.js.map +1 -1
  210. package/lib/esm/Schema.js.map +1 -1
  211. package/lib/esm/SchemaSync.js.map +1 -1
  212. package/lib/esm/SchemaUtils.js.map +1 -1
  213. package/lib/esm/SheetIndex.js.map +1 -1
  214. package/lib/esm/SqliteChangesetReader.js.map +1 -1
  215. package/lib/esm/SqliteStatement.js.map +1 -1
  216. package/lib/esm/StashManager.js.map +1 -1
  217. package/lib/esm/Texture.js.map +1 -1
  218. package/lib/esm/TileStorage.js.map +1 -1
  219. package/lib/esm/TxnManager.js.map +1 -1
  220. package/lib/esm/ViewDefinition.js.map +1 -1
  221. package/lib/esm/ViewStateHydrator.js.map +1 -1
  222. package/lib/esm/ViewStore.js.map +1 -1
  223. package/lib/esm/annotations/ElementDrivesTextAnnotation.js.map +1 -1
  224. package/lib/esm/annotations/FrameGeometry.js.map +1 -1
  225. package/lib/esm/annotations/LeaderGeometry.js.map +1 -1
  226. package/lib/esm/annotations/TextAnnotationElement.js.map +1 -1
  227. package/lib/esm/annotations/TextAnnotationGeometry.js.map +1 -1
  228. package/lib/esm/annotations/TextBlockGeometry.js.map +1 -1
  229. package/lib/esm/annotations/TextBlockLayout.js.map +1 -1
  230. package/lib/esm/core-backend.js.map +1 -1
  231. package/lib/esm/domains/FunctionalElements.js.map +1 -1
  232. package/lib/esm/domains/FunctionalSchema.js.map +1 -1
  233. package/lib/esm/domains/GenericElements.js.map +1 -1
  234. package/lib/esm/domains/GenericSchema.js.map +1 -1
  235. package/lib/esm/internal/ChangesetConflictArgs.js.map +1 -1
  236. package/lib/esm/internal/ChannelAdmin.js.map +1 -1
  237. package/lib/esm/internal/ECSqlInstanceReshaper.js.map +1 -1
  238. package/lib/esm/internal/ElementLRUCache.js.map +1 -1
  239. package/lib/esm/internal/FontFileImpl.js.map +1 -1
  240. package/lib/esm/internal/HubMock.js.map +1 -1
  241. package/lib/esm/internal/IModelDbFontsImpl.js.map +1 -1
  242. package/lib/esm/internal/IntegrityCheck.js.map +1 -1
  243. package/lib/esm/internal/NativePlatform.js.map +1 -1
  244. package/lib/esm/internal/NoLocks.js.map +1 -1
  245. package/lib/esm/internal/OnlineStatus.js.map +1 -1
  246. package/lib/esm/internal/ServerBasedLocks.js +33 -33
  247. package/lib/esm/internal/ServerBasedLocks.js.map +1 -1
  248. package/lib/esm/internal/Symbols.js.map +1 -1
  249. package/lib/esm/internal/annotations/fields.js.map +1 -1
  250. package/lib/esm/internal/cross-package.js.map +1 -1
  251. package/lib/esm/internal/workspace/SettingsEditorImpl.js.map +1 -1
  252. package/lib/esm/internal/workspace/SettingsImpl.js.map +1 -1
  253. package/lib/esm/internal/workspace/SettingsSchemasImpl.js.map +1 -1
  254. package/lib/esm/internal/workspace/WorkspaceImpl.js.map +1 -1
  255. package/lib/esm/internal/workspace/WorkspaceSqliteDb.js.map +1 -1
  256. package/lib/esm/rpc/multipart.js.map +1 -1
  257. package/lib/esm/rpc/tracing.js.map +1 -1
  258. package/lib/esm/rpc/web/logging.js.map +1 -1
  259. package/lib/esm/rpc/web/request.js.map +1 -1
  260. package/lib/esm/rpc/web/response.js.map +1 -1
  261. package/lib/esm/rpc-impl/DevToolsRpcImpl.js.map +1 -1
  262. package/lib/esm/rpc-impl/IModelReadRpcImpl.js.map +1 -1
  263. package/lib/esm/rpc-impl/IModelTileRpcImpl.js.map +1 -1
  264. package/lib/esm/rpc-impl/RpcBriefcaseUtility.js.map +1 -1
  265. package/lib/esm/rpc-impl/SnapshotIModelRpcImpl.js.map +1 -1
  266. package/lib/esm/test/AdvancedEqual.js.map +1 -1
  267. package/lib/esm/test/AnnotationTestUtils.js.map +1 -1
  268. package/lib/esm/test/AttachDb.test.js +11 -11
  269. package/lib/esm/test/AttachDb.test.js.map +1 -1
  270. package/lib/esm/test/ElementDrivesElement.test.js +23 -23
  271. package/lib/esm/test/ElementDrivesElement.test.js.map +1 -1
  272. package/lib/esm/test/ElementLRUCache.test.js.map +1 -1
  273. package/lib/esm/test/GeometryTestUtil.js.map +1 -1
  274. package/lib/esm/test/IModelHost.test.js.map +1 -1
  275. package/lib/esm/test/IModelTestUtils.js.map +1 -1
  276. package/lib/esm/test/ImageSourceConversion.test.js.map +1 -1
  277. package/lib/esm/test/IpcHost.test.js.map +1 -1
  278. package/lib/esm/test/KnownTestLocations.js.map +1 -1
  279. package/lib/esm/test/PrintElementTree.js.map +1 -1
  280. package/lib/esm/test/PropertyDb.test.js.map +1 -1
  281. package/lib/esm/test/RevisionUtility.js.map +1 -1
  282. package/lib/esm/test/SchemaChangesetCanBeReversed.test.js +51 -51
  283. package/lib/esm/test/SchemaChangesetCanBeReversed.test.js.map +1 -1
  284. package/lib/esm/test/SchemaUtils.test.js +25 -25
  285. package/lib/esm/test/SchemaUtils.test.js.map +1 -1
  286. package/lib/esm/test/SequentialLogMatcher.js.map +1 -1
  287. package/lib/esm/test/SquashSchemaAndDataChanges.test.js +129 -129
  288. package/lib/esm/test/SquashSchemaAndDataChanges.test.js.map +1 -1
  289. package/lib/esm/test/TestChangeSetUtility.js.map +1 -1
  290. package/lib/esm/test/TestEditTxn.js.map +1 -1
  291. package/lib/esm/test/TestUtils.js.map +1 -1
  292. package/lib/esm/test/annotations/Fields.test.js +53 -53
  293. package/lib/esm/test/annotations/Fields.test.js.map +1 -1
  294. package/lib/esm/test/annotations/FrameGeometry.test.js.map +1 -1
  295. package/lib/esm/test/annotations/LeaderGeometry.test.js.map +1 -1
  296. package/lib/esm/test/annotations/TextAnnotation.test.js.map +1 -1
  297. package/lib/esm/test/annotations/TextBlock.test.js.map +1 -1
  298. package/lib/esm/test/assets/IncrementalSchemaLocater/configs/old.config.js.map +1 -1
  299. package/lib/esm/test/assets/IncrementalSchemaLocater/configs/simple.config.js.map +1 -1
  300. package/lib/esm/test/categories/Category.test.js.map +1 -1
  301. package/lib/esm/test/codespec/CodeSpec.test.js.map +1 -1
  302. package/lib/esm/test/ecdb/CTE.test.js +88 -88
  303. package/lib/esm/test/ecdb/CTE.test.js.map +1 -1
  304. package/lib/esm/test/ecdb/ConcurrentQuery.test.js +19 -19
  305. package/lib/esm/test/ecdb/ConcurrentQuery.test.js.map +1 -1
  306. package/lib/esm/test/ecdb/ConcurrentQueryLoad.test.js +15 -15
  307. package/lib/esm/test/ecdb/ConcurrentQueryLoad.test.js.map +1 -1
  308. package/lib/esm/test/ecdb/ECDb.test.js +72 -72
  309. package/lib/esm/test/ecdb/ECDb.test.js.map +1 -1
  310. package/lib/esm/test/ecdb/ECDbTestHelper.js.map +1 -1
  311. package/lib/esm/test/ecdb/ECSchemaXmlContext.test.js.map +1 -1
  312. package/lib/esm/test/ecdb/ECSqlAst.test.js +65 -65
  313. package/lib/esm/test/ecdb/ECSqlAst.test.js.map +1 -1
  314. package/lib/esm/test/ecdb/ECSqlQuery.test.js +4 -4
  315. package/lib/esm/test/ecdb/ECSqlQuery.test.js.map +1 -1
  316. package/lib/esm/test/ecdb/ECSqlStatement.test.js +332 -332
  317. package/lib/esm/test/ecdb/ECSqlStatement.test.js.map +1 -1
  318. package/lib/esm/test/ecdb/ECSqlSyncReader.test.js +4 -4
  319. package/lib/esm/test/ecdb/ECSqlSyncReader.test.js.map +1 -1
  320. package/lib/esm/test/ecdb/QueryReaders.test.js +31 -31
  321. package/lib/esm/test/ecdb/QueryReaders.test.js.map +1 -1
  322. package/lib/esm/test/ecdb/SqliteStatement.test.js.map +1 -1
  323. package/lib/esm/test/ecsql/dataset/ECSqlDatasets.js.map +1 -1
  324. package/lib/esm/test/ecsql/src/ECSqlTestGenerator.js +21 -21
  325. package/lib/esm/test/ecsql/src/ECSqlTestGenerator.js.map +1 -1
  326. package/lib/esm/test/ecsql/src/ECSqlTestParser.js.map +1 -1
  327. package/lib/esm/test/ecsql/src/ECSqlTestRunner.test.js.map +1 -1
  328. package/lib/esm/test/element/DeleteDefinitionElements.test.js.map +1 -1
  329. package/lib/esm/test/element/ElementAspect.test.js +22 -22
  330. package/lib/esm/test/element/ElementAspect.test.js.map +1 -1
  331. package/lib/esm/test/element/ElementDependencyGraph.test.js.map +1 -1
  332. package/lib/esm/test/element/ElementRoundTrip.test.js +139 -139
  333. package/lib/esm/test/element/ElementRoundTrip.test.js.map +1 -1
  334. package/lib/esm/test/element/ExcludedElements.test.js.map +1 -1
  335. package/lib/esm/test/element/ExternalSource.test.js.map +1 -1
  336. package/lib/esm/test/element/NullStructArray.test.js +13 -13
  337. package/lib/esm/test/element/NullStructArray.test.js.map +1 -1
  338. package/lib/esm/test/element/ProjectInformationRecord.test.js.map +1 -1
  339. package/lib/esm/test/element/SheetInformationAspect.test.js.map +1 -1
  340. package/lib/esm/test/element/UrlLink.test.js.map +1 -1
  341. package/lib/esm/test/example-code/EditTxn.test.js.map +1 -1
  342. package/lib/esm/test/font/FontFile.test.js.map +1 -1
  343. package/lib/esm/test/font/IModelDbFonts.test.js.map +1 -1
  344. package/lib/esm/test/hubaccess/ApplyChangeset.test.js +32 -32
  345. package/lib/esm/test/hubaccess/ApplyChangeset.test.js.map +1 -1
  346. package/lib/esm/test/hubaccess/BriefcaseManager.test.js.map +1 -1
  347. package/lib/esm/test/hubaccess/CheckpointManager.test.js.map +1 -1
  348. package/lib/esm/test/hubaccess/CodeSwap.test.js.map +1 -1
  349. package/lib/esm/test/hubaccess/Rebase.test.js +56 -56
  350. package/lib/esm/test/hubaccess/Rebase.test.js.map +1 -1
  351. package/lib/esm/test/hubaccess/SemanticRebase.test.js +345 -345
  352. package/lib/esm/test/hubaccess/SemanticRebase.test.js.map +1 -1
  353. package/lib/esm/test/imageData.js.map +1 -1
  354. package/lib/esm/test/imodel/Code.test.js.map +1 -1
  355. package/lib/esm/test/imodel/ElementTreeWalker.test.js.map +1 -1
  356. package/lib/esm/test/imodel/GetTextureImage.test.js.map +1 -1
  357. package/lib/esm/test/imodel/IModelECSql.test.d.ts +2 -0
  358. package/lib/esm/test/imodel/IModelECSql.test.d.ts.map +1 -0
  359. package/lib/esm/test/imodel/IModelECSql.test.js +367 -0
  360. package/lib/esm/test/imodel/IModelECSql.test.js.map +1 -0
  361. package/lib/esm/test/imodel/IModelElements.test.d.ts +2 -0
  362. package/lib/esm/test/imodel/IModelElements.test.d.ts.map +1 -0
  363. package/lib/esm/test/imodel/IModelElements.test.js +969 -0
  364. package/lib/esm/test/imodel/IModelElements.test.js.map +1 -0
  365. package/lib/esm/test/imodel/IModelGeolocation.test.d.ts +2 -0
  366. package/lib/esm/test/imodel/IModelGeolocation.test.d.ts.map +1 -0
  367. package/lib/esm/test/imodel/IModelGeolocation.test.js +539 -0
  368. package/lib/esm/test/imodel/IModelGeolocation.test.js.map +1 -0
  369. package/lib/esm/test/imodel/IModelLifecycle.test.d.ts +2 -0
  370. package/lib/esm/test/imodel/IModelLifecycle.test.d.ts.map +1 -0
  371. package/lib/esm/test/imodel/IModelLifecycle.test.js +498 -0
  372. package/lib/esm/test/imodel/IModelLifecycle.test.js.map +1 -0
  373. package/lib/esm/test/imodel/IModelMetadata.test.d.ts +2 -0
  374. package/lib/esm/test/imodel/IModelMetadata.test.d.ts.map +1 -0
  375. package/lib/esm/test/imodel/IModelMetadata.test.js +274 -0
  376. package/lib/esm/test/imodel/IModelMetadata.test.js.map +1 -0
  377. package/lib/esm/test/imodel/IModelModels.test.d.ts +2 -0
  378. package/lib/esm/test/imodel/IModelModels.test.d.ts.map +1 -0
  379. package/lib/esm/test/imodel/IModelModels.test.js +357 -0
  380. package/lib/esm/test/imodel/IModelModels.test.js.map +1 -0
  381. package/lib/esm/test/imodel/IModelRelationships.test.d.ts +2 -0
  382. package/lib/esm/test/imodel/IModelRelationships.test.d.ts.map +1 -0
  383. package/lib/esm/test/imodel/IModelRelationships.test.js +407 -0
  384. package/lib/esm/test/imodel/IModelRelationships.test.js.map +1 -0
  385. package/lib/esm/test/imodel/IModelTestFixtures.d.ts +53 -0
  386. package/lib/esm/test/imodel/IModelTestFixtures.d.ts.map +1 -0
  387. package/lib/esm/test/imodel/IModelTestFixtures.js +107 -0
  388. package/lib/esm/test/imodel/IModelTestFixtures.js.map +1 -0
  389. package/lib/esm/test/imodel/IModelViews.test.d.ts +2 -0
  390. package/lib/esm/test/imodel/IModelViews.test.d.ts.map +1 -0
  391. package/lib/esm/test/imodel/IModelViews.test.js +199 -0
  392. package/lib/esm/test/imodel/IModelViews.test.js.map +1 -0
  393. package/lib/esm/test/imodel/ProjectExtents.test.js.map +1 -1
  394. package/lib/esm/test/imodel/SchemaXmlImport.test.js +21 -21
  395. package/lib/esm/test/imodel/SchemaXmlImport.test.js.map +1 -1
  396. package/lib/esm/test/incrementalSchemaLocater/ECSqlQueries.test.js.map +1 -1
  397. package/lib/esm/test/incrementalSchemaLocater/IncrementalLoading.test.js.map +1 -1
  398. package/lib/esm/test/incrementalSchemaLocater/TestContext.js.map +1 -1
  399. package/lib/esm/test/index.js.map +1 -1
  400. package/lib/esm/test/internal/ECSqlInstanceReshaper.test.js +32 -32
  401. package/lib/esm/test/internal/ECSqlInstanceReshaper.test.js.map +1 -1
  402. package/lib/esm/test/misc/DevTools.test.js.map +1 -1
  403. package/lib/esm/test/misc/EntitySubClasses.test.js.map +1 -1
  404. package/lib/esm/test/misc/PromiseMemoizer.test.js.map +1 -1
  405. package/lib/esm/test/native/DgnDbWorker.test.js.map +1 -1
  406. package/lib/esm/test/rpc/response.test.js.map +1 -1
  407. package/lib/esm/test/schema/ClassRegistry.test.js +99 -99
  408. package/lib/esm/test/schema/ClassRegistry.test.js.map +1 -1
  409. package/lib/esm/test/schema/FunctionalDomain.test.js.map +1 -1
  410. package/lib/esm/test/schema/GenericDomain.test.js.map +1 -1
  411. package/lib/esm/test/schema/IModelSchemaContext.test.js +9 -9
  412. package/lib/esm/test/schema/IModelSchemaContext.test.js.map +1 -1
  413. package/lib/esm/test/schema/SchemaImportCallbacks.test.js +19 -19
  414. package/lib/esm/test/schema/SchemaImportCallbacks.test.js.map +1 -1
  415. package/lib/esm/test/schema/SchemaViewFragmentLoading.test.js +21 -21
  416. package/lib/esm/test/schema/SchemaViewFragmentLoading.test.js.map +1 -1
  417. package/lib/esm/test/schema/SchemaViewHidden.test.js +109 -109
  418. package/lib/esm/test/schema/SchemaViewHidden.test.js.map +1 -1
  419. package/lib/esm/test/schema/SchemaViewKoQ.test.js +13 -13
  420. package/lib/esm/test/schema/SchemaViewKoQ.test.js.map +1 -1
  421. package/lib/esm/test/schema/SchemaViewLifecycle.test.js +15 -15
  422. package/lib/esm/test/schema/SchemaViewLifecycle.test.js.map +1 -1
  423. package/lib/esm/test/schema/SchemaViewValidation.test.js +8 -8
  424. package/lib/esm/test/schema/SchemaViewValidation.test.js.map +1 -1
  425. package/lib/esm/test/sheetindex/SheetIndex.test.js.map +1 -1
  426. package/lib/esm/test/standalone/ChangeElementParentModel.test.js.map +1 -1
  427. package/lib/esm/test/standalone/ChangeMerge.test.js.map +1 -1
  428. package/lib/esm/test/standalone/ChangesetReader.test.js +313 -313
  429. package/lib/esm/test/standalone/ChangesetReader.test.js.map +1 -1
  430. package/lib/esm/test/standalone/CloudSqlite.test.js.map +1 -1
  431. package/lib/esm/test/standalone/CustomViewState3dCreator.test.js.map +1 -1
  432. package/lib/esm/test/standalone/DeleteElements.test.js.map +1 -1
  433. package/lib/esm/test/standalone/DisplayStyle.test.js.map +1 -1
  434. package/lib/esm/test/standalone/Drawing.test.js.map +1 -1
  435. package/lib/esm/test/standalone/EditTxn.test.js.map +1 -1
  436. package/lib/esm/test/standalone/ElementGraphics.test.js.map +1 -1
  437. package/lib/esm/test/standalone/ElementMesh.test.js.map +1 -1
  438. package/lib/esm/test/standalone/ExportGraphics.test.js +14 -14
  439. package/lib/esm/test/standalone/ExportGraphics.test.js.map +1 -1
  440. package/lib/esm/test/standalone/GeometryChangeEvents.test.js.map +1 -1
  441. package/lib/esm/test/standalone/GeometryStream.test.js.map +1 -1
  442. package/lib/esm/test/standalone/HubMock.test.js.map +1 -1
  443. package/lib/esm/test/standalone/IModelLimits.test.js.map +1 -1
  444. package/lib/esm/test/standalone/IModelWrite.test.js +27 -27
  445. package/lib/esm/test/standalone/IModelWrite.test.js.map +1 -1
  446. package/lib/esm/test/standalone/ITwinWorkspace.test.js.map +1 -1
  447. package/lib/esm/test/standalone/InlineGeometryPartReferences.test.js.map +1 -1
  448. package/lib/esm/test/standalone/IntegrityCheck.test.js.map +1 -1
  449. package/lib/esm/test/standalone/MergeConflict.test.js.map +1 -1
  450. package/lib/esm/test/standalone/NativeAppStorage.test.js.map +1 -1
  451. package/lib/esm/test/standalone/RenderMaterialElement.test.js.map +1 -1
  452. package/lib/esm/test/standalone/RenderTimeline.test.js.map +1 -1
  453. package/lib/esm/test/standalone/SQLiteDb.test.js.map +1 -1
  454. package/lib/esm/test/standalone/SQliteChangesetReaderAndChangesetECAdaptor.test.js +135 -135
  455. package/lib/esm/test/standalone/SQliteChangesetReaderAndChangesetECAdaptor.test.js.map +1 -1
  456. package/lib/esm/test/standalone/SchemaUtils.test.js.map +1 -1
  457. package/lib/esm/test/standalone/SectionDrawing.test.js.map +1 -1
  458. package/lib/esm/test/standalone/ServerBasedLocks.test.js.map +1 -1
  459. package/lib/esm/test/standalone/Setting.test.js.map +1 -1
  460. package/lib/esm/test/standalone/Settings.test.js.map +1 -1
  461. package/lib/esm/test/standalone/SettingsSchemas.test.js.map +1 -1
  462. package/lib/esm/test/standalone/SnapshotDb.test.js.map +1 -1
  463. package/lib/esm/test/standalone/StandaloneDb.test.js +20 -20
  464. package/lib/esm/test/standalone/StandaloneDb.test.js.map +1 -1
  465. package/lib/esm/test/standalone/Texture.test.js.map +1 -1
  466. package/lib/esm/test/standalone/TileCache.test.js.map +1 -1
  467. package/lib/esm/test/standalone/TileTree.test.js.map +1 -1
  468. package/lib/esm/test/standalone/TxnManager.test.js.map +1 -1
  469. package/lib/esm/test/standalone/ViewDefinition.test.js.map +1 -1
  470. package/lib/esm/test/standalone/ViewStoreDb.test.js.map +1 -1
  471. package/lib/esm/test/standalone/Workspace.test.js.map +1 -1
  472. package/lib/esm/test/standalone/iModelDb.test.js.map +1 -1
  473. package/lib/esm/test/workspace/SettingsDb.test.js.map +1 -1
  474. package/lib/esm/workspace/Settings.js.map +1 -1
  475. package/lib/esm/workspace/SettingsDb.js.map +1 -1
  476. package/lib/esm/workspace/SettingsEditor.js.map +1 -1
  477. package/lib/esm/workspace/SettingsSchemas.js.map +1 -1
  478. package/lib/esm/workspace/Workspace.js.map +1 -1
  479. package/lib/esm/workspace/WorkspaceEditor.js.map +1 -1
  480. package/package.json +14 -14
  481. package/lib/esm/test/imodel/IModel.test.d.ts +0 -2
  482. package/lib/esm/test/imodel/IModel.test.d.ts.map +0 -1
  483. package/lib/esm/test/imodel/IModel.test.js +0 -3338
  484. package/lib/esm/test/imodel/IModel.test.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"ECSqlQueries.test.js","sourceRoot":"","sources":["../../../../src/test/incrementalSchemaLocater/ECSqlQueries.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { AnyPropertyProps, AnySchemaItemProps, ClassProps, RelationshipClassProps, Schema, SchemaItemType, SchemaKey } from \"@itwin/ecschema-metadata\";\r\nimport { expect, use } from \"chai\";\r\nimport { TestContext } from \"./TestContext\";\r\nimport { IModelIncrementalSchemaLocater } from \"../../IModelIncrementalSchemaLocater\";\r\nimport * as deepEqualInAnyOrder from \"deep-equal-in-any-order\";\r\n\r\nuse(deepEqualInAnyOrder);\r\n\r\nfunction findItem<T extends AnySchemaItemProps>(name: string, rowData: T[]) {\r\n const item = rowData.find((i: AnySchemaItemProps) => i.name === name);\r\n if (!item)\r\n throw new Error(`Could not find schema item '${name}'`);\r\n return item;\r\n}\r\n\r\nfunction findProperty<T extends AnyPropertyProps>(name: string, rowData: T[]) {\r\n return rowData.find((i: AnyPropertyProps) => i.name === name);\r\n}\r\n\r\nfunction isECClass(item: AnySchemaItemProps): item is ClassProps {\r\n return item.schemaItemType === SchemaItemType.EntityClass || item.schemaItemType === SchemaItemType.Mixin || item.schemaItemType === SchemaItemType.RelationshipClass ||\r\n item.schemaItemType === SchemaItemType.StructClass || item.schemaItemType === SchemaItemType.CustomAttributeClass;\r\n}\r\n\r\nfunction isRelationshipClass(item: AnySchemaItemProps): item is RelationshipClassProps {\r\n return \"source\" in item && \"target\" in item;\r\n}\r\n\r\n/**\r\n * A test locater that exposes the protected methods of IModelIncrementalSchemaLocater for granular testing.\r\n */\r\nabstract class TestSchemaLocater extends IModelIncrementalSchemaLocater {\r\n public abstract override getSchemaJson: IModelIncrementalSchemaLocater[\"getSchemaJson\"];\r\n public abstract override getConstants: IModelIncrementalSchemaLocater[\"getConstants\"];\r\n public abstract override getCustomAttributeClasses: IModelIncrementalSchemaLocater[\"getCustomAttributeClasses\"];\r\n public abstract override getEntities: IModelIncrementalSchemaLocater[\"getEntities\"];\r\n public abstract override getEnumerations: IModelIncrementalSchemaLocater[\"getEnumerations\"];\r\n public abstract override getFormats: IModelIncrementalSchemaLocater[\"getFormats\"];\r\n public abstract override getInvertedUnits: IModelIncrementalSchemaLocater[\"getInvertedUnits\"];\r\n public abstract override getKindOfQuantities: IModelIncrementalSchemaLocater[\"getKindOfQuantities\"];\r\n public abstract override getMixins: IModelIncrementalSchemaLocater[\"getMixins\"];\r\n public abstract override getPhenomenon: IModelIncrementalSchemaLocater[\"getPhenomenon\"];\r\n public abstract override getPropertyCategories: IModelIncrementalSchemaLocater[\"getPropertyCategories\"];\r\n public abstract override getRelationships: IModelIncrementalSchemaLocater[\"getRelationships\"];\r\n public abstract override getStructs: IModelIncrementalSchemaLocater[\"getStructs\"];\r\n public abstract override getUnits: IModelIncrementalSchemaLocater[\"getUnits\"];\r\n public abstract override getUnitSystems: IModelIncrementalSchemaLocater[\"getUnitSystems\"];\r\n}\r\n\r\ndescribe(\"ECSql query tests\", function () {\r\n\r\n function validateItem(name: string, itemPropObjects: AnySchemaItemProps[], schema: Schema) {\r\n const actualJson = findItem(name, itemPropObjects);\r\n const expectedItem = schema.getItemSync(name);\r\n const expectedJson = expectedItem!.toJSON();\r\n\r\n // The following code exists because some data coming from the database will not match the\r\n // data from the context due to default values. This is OK as long as the conditions are\r\n // correct. For instance, schemaItem name will not exist in serialized JSON, but does exist\r\n // coming from the DB. RelationshipConstraint's AbstractConstraint is set when only one\r\n // constraint class exists coming from the database, but a serialized Relationship will not\r\n // contain the abstract constraint. The one constraint is 'assumed' to be the abstract constraint.\r\n\r\n expect(actualJson.name).to.equal(expectedItem?.name);\r\n delete (actualJson as any).name;\r\n\r\n if (isECClass(actualJson)) {\r\n if (expectedJson.schemaItemType === \"Mixin\") {\r\n expect(actualJson.modifier).to.be.oneOf([undefined, 'Abstract']);\r\n delete (actualJson as any).modifier;\r\n } else if ((expectedJson as ClassProps).modifier === undefined) {\r\n expect(actualJson.modifier).to.be.oneOf([undefined, 'None']);\r\n delete (actualJson as any).modifier;\r\n }\r\n }\r\n if (isRelationshipClass(actualJson)) {\r\n // abstract can be set via database, but not via context for 1 constraint class\r\n // so verify constraint and conditions are correct and delete property\r\n const expectedRelationship = expectedJson as any as RelationshipClassProps;\r\n if (actualJson.source.abstractConstraint !== expectedRelationship.source.abstractConstraint) {\r\n expect(actualJson.source.abstractConstraint).to.equal(expectedRelationship.source.constraintClasses[0]);\r\n expect(actualJson.source.constraintClasses.length).to.equal(1);\r\n delete (actualJson.source as any).abstractConstraint;\r\n }\r\n if (actualJson.target.abstractConstraint !== expectedRelationship.target.abstractConstraint) {\r\n expect(actualJson.target.abstractConstraint).to.equal(expectedRelationship.target.constraintClasses[0]);\r\n expect(actualJson.target.constraintClasses.length).to.equal(1);\r\n delete (actualJson.target as any).abstractConstraint;\r\n }\r\n }\r\n\r\n if (actualJson.schemaItemType === SchemaItemType.Format) {\r\n if (undefined !== (actualJson as any).includeZero && undefined === (expectedJson as any).includeZero) {\r\n expect((actualJson as any).includeZero).to.equal(true);\r\n delete (actualJson as any).includeZero;\r\n }\r\n if ((actualJson as any).composite && undefined !== (actualJson as any).composite.includeZero && undefined === (expectedJson as any).composite.includeZero) {\r\n expect((actualJson as any).composite.includeZero).to.equal(true);\r\n delete (actualJson as any).composite.includeZero;\r\n }\r\n if ((actualJson as any).composite && undefined !== (actualJson as any).composite.spacer && undefined === (expectedJson as any).composite.spacer) {\r\n expect((actualJson as any).composite.spacer).to.equal(\" \");\r\n delete (actualJson as any).composite.spacer;\r\n }\r\n if (undefined !== (actualJson as any).decimalSeparator && undefined === (expectedJson as any).decimalSeparator) {\r\n expect((actualJson as any).decimalSeparator).to.equal(\".\");\r\n delete (actualJson as any).decimalSeparator;\r\n }\r\n if (undefined !== (actualJson as any).roundFactor && undefined === (expectedJson as any).roundFactor) {\r\n expect((actualJson as any).roundFactor).to.equal(0);\r\n delete (actualJson as any).roundFactor;\r\n }\r\n if (undefined !== (actualJson as any).showSignOption && undefined === (expectedJson as any).showSignOption) {\r\n expect((actualJson as any).showSignOption).to.equal(\"OnlyNegative\");\r\n delete (actualJson as any).showSignOption;\r\n }\r\n if (undefined !== (actualJson as any).thousandSeparator && undefined === (expectedJson as any).thousandSeparator) {\r\n expect((actualJson as any).thousandSeparator).to.equal(\",\");\r\n delete (actualJson as any).thousandSeparator;\r\n }\r\n if (undefined !== (actualJson as any).uomSeparator && undefined === (expectedJson as any).uomSeparator) {\r\n expect((actualJson as any).uomSeparator).to.equal(\" \");\r\n delete (actualJson as any).uomSeparator;\r\n }\r\n if (undefined !== (actualJson as any).spacer && undefined === (expectedJson as any).spacer) {\r\n expect((actualJson as any).spacer).to.equal(\" \");\r\n delete (actualJson as any).spacer;\r\n }\r\n if (undefined !== (actualJson as any).formatTraits) {\r\n (actualJson as any).formatTraits = (actualJson as any).formatTraits.map((trait: string) => {\r\n return trait.charAt(0).toUpperCase() + trait.slice(1);\r\n });\r\n }\r\n }\r\n\r\n expect(actualJson).to.deep.equalInAnyOrder(expectedJson);\r\n }\r\n\r\n async function createTestContext() {\r\n const testEnv = await TestContext.create();\r\n return testEnv as TestContext<TestSchemaLocater>;\r\n }\r\n\r\n it(\"Schema query, props parsed successfully\", async function () {\r\n const testSchemaKey = new SchemaKey(\"SchemaTest\", 1, 0, 0);\r\n await using env = await createTestContext();\r\n\r\n const expectedSchema = await env.importAssetSchema(testSchemaKey);\r\n const actualSchemaProps = await env.schemaLocater.getSchemaJson(testSchemaKey, env.schemaContext);\r\n expect(actualSchemaProps).to.not.be.undefined;\r\n\r\n const actualSchema = await Schema.fromJson(actualSchemaProps!, env.schemaContext);\r\n expect(actualSchema.toJSON()).to.deep.equal(expectedSchema?.toJSON());\r\n });\r\n\r\n it(\"Property query, props parsed successfully\", async function () {\r\n const testKey = new SchemaKey(\"PropertyTest\", 1, 0, 0);\r\n await using env = await createTestContext();\r\n\r\n const schema = await env.importAssetSchema(testKey);\r\n const classPropsObjects = await env.schemaLocater.getEntities(testKey.name, env.schemaContext);\r\n const entityOneProps = findItem(\"EntityOne\", classPropsObjects);\r\n const entityTwoProps = findItem(\"EntityTwo\", classPropsObjects);\r\n const expectedEntityOne = await schema.getEntityClass(\"EntityOne\");\r\n const expectedEntityTwo = await schema.getEntityClass(\"EntityTwo\");\r\n\r\n const validateProperty = (propertyName: string, actualItem = entityOneProps, expectedItem = expectedEntityOne) => {\r\n const actualProperty = findProperty(propertyName, actualItem.properties!);\r\n const expectedProperty = expectedItem?.getPropertySync(propertyName);\r\n // if maxOccurs is the maximum int value in the context Schema,\r\n // the property from the DB will not have a value\r\n if ((expectedProperty as any).maxOccurs === 2147483647) {\r\n expect((actualProperty as any).maxOccurs).to.be.undefined;\r\n // set so comparison will pass\r\n (actualProperty as any).maxOccurs = 2147483647;\r\n }\r\n\r\n expect(actualProperty).to.deep.equal(expectedProperty?.toJSON());\r\n };\r\n\r\n // All but one testable property is in EntityOne\r\n for (const property of await expectedEntityOne!.getProperties(true)) {\r\n validateProperty(property.name);\r\n }\r\n // Backward direction Navigation property is in EntityTwo\r\n validateProperty(\"EntityTwoParent\", entityTwoProps, expectedEntityTwo);\r\n });\r\n\r\n it(\"Entity query, props parsed successfully\", async function () {\r\n const testKey = new SchemaKey(\"EntityTest\", 1, 0, 0);\r\n await using env = await createTestContext();\r\n\r\n const schema = await env.importAssetSchema(testKey);\r\n const classPropsObjects = await env.schemaLocater.getEntities(testKey.name, env.schemaContext);\r\n expect(classPropsObjects.length).to.be.greaterThan(0);\r\n\r\n validateItem(\"EntityModifierNone\", classPropsObjects, schema);\r\n validateItem(\"EntityModifierAbstract\", classPropsObjects, schema);\r\n validateItem(\"EntityModifierSealed\", classPropsObjects, schema);\r\n });\r\n\r\n it(\"Struct query, props parsed successfully\", async function () {\r\n const testKey = new SchemaKey(\"StructTest\", 1, 0, 0);\r\n await using env = await createTestContext();\r\n\r\n const schema = await env.importAssetSchema(testKey);\r\n const classPropsObjects = await env.schemaLocater.getStructs(testKey.name, env.schemaContext);\r\n expect(classPropsObjects.length).to.be.greaterThan(0);\r\n\r\n validateItem(\"StructModifierNone\", classPropsObjects, schema);\r\n validateItem(\"StructModifierAbstract\", classPropsObjects, schema);\r\n validateItem(\"StructModifierSealed\", classPropsObjects, schema);\r\n });\r\n\r\n it(\"Mixin query, props parsed successfully\", async function () {\r\n const testKey = new SchemaKey(\"MixinTest\", 1, 0, 0);\r\n await using env = await createTestContext();\r\n\r\n const schema = await env.importAssetSchema(testKey);\r\n const classPropsObjects = await env.schemaLocater.getMixins(testKey.name, env.schemaContext);\r\n expect(classPropsObjects.length).to.be.greaterThan(0);\r\n\r\n validateItem(\"IBaseMixin\", classPropsObjects, schema);\r\n validateItem(\"ITestMixin\", classPropsObjects, schema);\r\n });\r\n\r\n it(\"Relationship query, props parsed successfully\", async function () {\r\n const testKey = new SchemaKey(\"RelationshipTest\", 1, 0, 0);\r\n await using env = await createTestContext();\r\n\r\n const schema = await env.importAssetSchema(testKey);\r\n const classPropsObjects = await env.schemaLocater.getRelationships(testKey.name, env.schemaContext);\r\n expect(classPropsObjects.length).to.be.greaterThan(0);\r\n\r\n validateItem(\"OwnerOwnsVehicles\", classPropsObjects, schema);\r\n validateItem(\"OwnerOwnsCars\", classPropsObjects, schema);\r\n validateItem(\"OwnerOwnsAmericanCars\", classPropsObjects, schema);\r\n validateItem(\"PhysicalModelBreaksDownCarElement\", classPropsObjects, schema);\r\n });\r\n\r\n it(\"CustomAttributeClass query, props parsed successfully\", async function () {\r\n const testKey = new SchemaKey(\"CustomAttributeClassTest\", 1, 0, 0);\r\n await using env = await createTestContext();\r\n\r\n const schema = await env.importAssetSchema(testKey);\r\n const classPropsObjects = await env.schemaLocater.getCustomAttributeClasses(testKey.name, env.schemaContext);\r\n expect(classPropsObjects.length).to.be.greaterThan(0);\r\n\r\n validateItem(\"CustomAttributeModifierNone\", classPropsObjects, schema);\r\n validateItem(\"CustomAttributeModifierSealed\", classPropsObjects, schema);\r\n validateItem(\"CustomAttributeModifierAbstract\", classPropsObjects, schema);\r\n });\r\n\r\n it(\"KindOfQuantity query, props parsed successfully\", async function () {\r\n const testKey = new SchemaKey(\"KindOfQuantityTest\", 1, 0, 0);\r\n await using env = await createTestContext();\r\n\r\n const schema = await env.importAssetSchema(testKey);\r\n const itemPropsObjects = await env.schemaLocater.getKindOfQuantities(testKey.name, env.schemaContext);\r\n expect(itemPropsObjects.length).to.be.greaterThan(0);\r\n\r\n validateItem(\"ACCELERATION\", itemPropsObjects, schema);\r\n validateItem(\"ANGLE\", itemPropsObjects, schema);\r\n });\r\n\r\n it(\"PropertyCategory query, props parsed successfully\", async function () {\r\n const testKey = new SchemaKey(\"PropertyCategoryTest\", 1, 0, 0);\r\n await using env = await createTestContext();\r\n\r\n const schema = await env.importAssetSchema(testKey);\r\n const itemPropsObjects = await env.schemaLocater.getPropertyCategories(testKey.name, env.schemaContext);\r\n expect(itemPropsObjects.length).to.be.greaterThan(0);\r\n\r\n validateItem(\"PropertyCategory1\", itemPropsObjects, schema);\r\n validateItem(\"PropertyCategory2\", itemPropsObjects, schema);\r\n });\r\n\r\n it(\"Enumeration query, props parsed successfully\", async function () {\r\n const testKey = new SchemaKey(\"EnumerationTest\", 1, 0, 0);\r\n await using env = await createTestContext();\r\n\r\n const schema = await env.importAssetSchema(testKey);\r\n const itemPropsObjects = await env.schemaLocater.getEnumerations(testKey.name, env.schemaContext);\r\n expect(itemPropsObjects.length).to.be.greaterThan(0);\r\n\r\n validateItem(\"IntEnumeration\", itemPropsObjects, schema);\r\n validateItem(\"StringEnumeration\", itemPropsObjects, schema);\r\n });\r\n\r\n it(\"Unit query, props parsed successfully\", async function () {\r\n const testKey = new SchemaKey(\"UnitTest\", 1, 0, 0);\r\n await using env = await createTestContext();\r\n\r\n const schema = await env.importAssetSchema(testKey);\r\n const itemPropsObjects = await env.schemaLocater.getUnits(testKey.name, env.schemaContext);\r\n expect(itemPropsObjects.length).to.be.greaterThan(0);\r\n\r\n validateItem(\"LITRE\", itemPropsObjects, schema);\r\n validateItem(\"GALLON\", itemPropsObjects, schema);\r\n validateItem(\"ACRE\", itemPropsObjects, schema);\r\n validateItem(\"FAHRENHEIT\", itemPropsObjects, schema);\r\n });\r\n\r\n it(\"InvertedUnit query, props parsed successfully\", async function () {\r\n const testKey = new SchemaKey(\"InvertedUnitTest\", 1, 0, 0);\r\n await using env = await createTestContext();\r\n\r\n const schema = await env.importAssetSchema(testKey);\r\n const itemPropsObjects = await env.schemaLocater.getInvertedUnits(testKey.name, env.schemaContext);\r\n expect(itemPropsObjects.length).to.be.greaterThan(0);\r\n\r\n validateItem(\"FT_HORIZONTAL_PER_FT_VERTICAL\", itemPropsObjects, schema);\r\n });\r\n\r\n it(\"UnitSystem query, props parsed successfully\", async function () {\r\n // There's a UnitSystem in there.\r\n const testKey = new SchemaKey(\"InvertedUnitTest\", 1, 0, 0);\r\n await using env = await createTestContext();\r\n\r\n const schema = await env.importAssetSchema(testKey);\r\n const itemPropsObjects = await env.schemaLocater.getUnitSystems(testKey.name, env.schemaContext);\r\n expect(itemPropsObjects.length).to.be.greaterThan(0);\r\n\r\n validateItem(\"USCUSTOM\", itemPropsObjects, schema);\r\n });\r\n\r\n it(\"Constant query, props parsed successfully\", async function () {\r\n // There's a UnitSystem in there.\r\n const testKey = new SchemaKey(\"ConstantTest\", 1, 0, 0);\r\n await using env = await createTestContext();\r\n\r\n const schema = await env.importAssetSchema(testKey);\r\n const itemPropsObjects = await env.schemaLocater.getConstants(testKey.name, env.schemaContext);\r\n expect(itemPropsObjects.length).to.be.greaterThan(0);\r\n\r\n validateItem(\"KILO\", itemPropsObjects, schema);\r\n validateItem(\"HALF_PI\", itemPropsObjects, schema);\r\n });\r\n\r\n it(\"Phenomenon query, props parsed successfully\", async function () {\r\n // There's a Phenomenon in there.\r\n const testKey = new SchemaKey(\"ConstantTest\", 1, 0, 0);\r\n await using env = await createTestContext();\r\n\r\n const schema = await env.importAssetSchema(testKey);\r\n const itemPropsObjects = await env.schemaLocater.getPhenomenon(testKey.name, env.schemaContext);\r\n expect(itemPropsObjects.length).to.be.greaterThan(0);\r\n\r\n validateItem(\"NUMBER\", itemPropsObjects, schema);\r\n validateItem(\"LENGTH_RATIO\", itemPropsObjects, schema);\r\n });\r\n\r\n it(\"Format Schema parses successfully\", async function () {\r\n // Using installed Formats schema\r\n const testKey = new SchemaKey(\"Formats\", 1, 0, 0);\r\n await using env = await createTestContext();\r\n\r\n const schema = await env.importAssetSchema(testKey);\r\n const itemPropsObjects = await env.schemaLocater.getFormats(testKey.name, env.schemaContext);\r\n expect(itemPropsObjects.length).to.be.greaterThan(0);\r\n\r\n for (const props of itemPropsObjects) {\r\n validateItem(props.name!, itemPropsObjects, schema);\r\n }\r\n });\r\n\r\n it(\"Comprehensive Format parses successfully\", async function () {\r\n const testKey = new SchemaKey(\"FormatTest\", 1, 0, 0);\r\n await using env = await createTestContext();\r\n\r\n const schema = await env.importAssetSchema(testKey);\r\n const itemPropsObjects = await env.schemaLocater.getFormats(testKey.name, env.schemaContext);\r\n expect(itemPropsObjects.length).to.be.greaterThan(0);\r\n\r\n for (const props of itemPropsObjects) {\r\n validateItem(props.name!, itemPropsObjects, schema);\r\n }\r\n });\r\n\r\n it(\"CustomAttribute instances parse successfully\", async function () {\r\n const testKey = new SchemaKey(\"CustomAttributeInstanceTest\", 1, 0, 0);\r\n await using env = await createTestContext();\r\n\r\n const schema = await env.importAssetSchema(testKey);\r\n const itemPropsObjects = await env.schemaLocater.getStructs(testKey.name, env.schemaContext);\r\n expect(itemPropsObjects.length).to.be.greaterThan(0);\r\n\r\n for (const props of itemPropsObjects) {\r\n validateItem(props.name!, itemPropsObjects, schema);\r\n }\r\n });\r\n});\r\n"]}
1
+ {"version":3,"file":"ECSqlQueries.test.js","sourceRoot":"","sources":["../../../../src/test/incrementalSchemaLocater/ECSqlQueries.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { AnyPropertyProps, AnySchemaItemProps, ClassProps, RelationshipClassProps, Schema, SchemaItemType, SchemaKey } from \"@itwin/ecschema-metadata\";\nimport { expect, use } from \"chai\";\nimport { TestContext } from \"./TestContext\";\nimport { IModelIncrementalSchemaLocater } from \"../../IModelIncrementalSchemaLocater\";\nimport * as deepEqualInAnyOrder from \"deep-equal-in-any-order\";\n\nuse(deepEqualInAnyOrder);\n\nfunction findItem<T extends AnySchemaItemProps>(name: string, rowData: T[]) {\n const item = rowData.find((i: AnySchemaItemProps) => i.name === name);\n if (!item)\n throw new Error(`Could not find schema item '${name}'`);\n return item;\n}\n\nfunction findProperty<T extends AnyPropertyProps>(name: string, rowData: T[]) {\n return rowData.find((i: AnyPropertyProps) => i.name === name);\n}\n\nfunction isECClass(item: AnySchemaItemProps): item is ClassProps {\n return item.schemaItemType === SchemaItemType.EntityClass || item.schemaItemType === SchemaItemType.Mixin || item.schemaItemType === SchemaItemType.RelationshipClass ||\n item.schemaItemType === SchemaItemType.StructClass || item.schemaItemType === SchemaItemType.CustomAttributeClass;\n}\n\nfunction isRelationshipClass(item: AnySchemaItemProps): item is RelationshipClassProps {\n return \"source\" in item && \"target\" in item;\n}\n\n/**\n * A test locater that exposes the protected methods of IModelIncrementalSchemaLocater for granular testing.\n */\nabstract class TestSchemaLocater extends IModelIncrementalSchemaLocater {\n public abstract override getSchemaJson: IModelIncrementalSchemaLocater[\"getSchemaJson\"];\n public abstract override getConstants: IModelIncrementalSchemaLocater[\"getConstants\"];\n public abstract override getCustomAttributeClasses: IModelIncrementalSchemaLocater[\"getCustomAttributeClasses\"];\n public abstract override getEntities: IModelIncrementalSchemaLocater[\"getEntities\"];\n public abstract override getEnumerations: IModelIncrementalSchemaLocater[\"getEnumerations\"];\n public abstract override getFormats: IModelIncrementalSchemaLocater[\"getFormats\"];\n public abstract override getInvertedUnits: IModelIncrementalSchemaLocater[\"getInvertedUnits\"];\n public abstract override getKindOfQuantities: IModelIncrementalSchemaLocater[\"getKindOfQuantities\"];\n public abstract override getMixins: IModelIncrementalSchemaLocater[\"getMixins\"];\n public abstract override getPhenomenon: IModelIncrementalSchemaLocater[\"getPhenomenon\"];\n public abstract override getPropertyCategories: IModelIncrementalSchemaLocater[\"getPropertyCategories\"];\n public abstract override getRelationships: IModelIncrementalSchemaLocater[\"getRelationships\"];\n public abstract override getStructs: IModelIncrementalSchemaLocater[\"getStructs\"];\n public abstract override getUnits: IModelIncrementalSchemaLocater[\"getUnits\"];\n public abstract override getUnitSystems: IModelIncrementalSchemaLocater[\"getUnitSystems\"];\n}\n\ndescribe(\"ECSql query tests\", function () {\n\n function validateItem(name: string, itemPropObjects: AnySchemaItemProps[], schema: Schema) {\n const actualJson = findItem(name, itemPropObjects);\n const expectedItem = schema.getItemSync(name);\n const expectedJson = expectedItem!.toJSON();\n\n // The following code exists because some data coming from the database will not match the\n // data from the context due to default values. This is OK as long as the conditions are\n // correct. For instance, schemaItem name will not exist in serialized JSON, but does exist\n // coming from the DB. RelationshipConstraint's AbstractConstraint is set when only one\n // constraint class exists coming from the database, but a serialized Relationship will not\n // contain the abstract constraint. The one constraint is 'assumed' to be the abstract constraint.\n\n expect(actualJson.name).to.equal(expectedItem?.name);\n delete (actualJson as any).name;\n\n if (isECClass(actualJson)) {\n if (expectedJson.schemaItemType === \"Mixin\") {\n expect(actualJson.modifier).to.be.oneOf([undefined, 'Abstract']);\n delete (actualJson as any).modifier;\n } else if ((expectedJson as ClassProps).modifier === undefined) {\n expect(actualJson.modifier).to.be.oneOf([undefined, 'None']);\n delete (actualJson as any).modifier;\n }\n }\n if (isRelationshipClass(actualJson)) {\n // abstract can be set via database, but not via context for 1 constraint class\n // so verify constraint and conditions are correct and delete property\n const expectedRelationship = expectedJson as any as RelationshipClassProps;\n if (actualJson.source.abstractConstraint !== expectedRelationship.source.abstractConstraint) {\n expect(actualJson.source.abstractConstraint).to.equal(expectedRelationship.source.constraintClasses[0]);\n expect(actualJson.source.constraintClasses.length).to.equal(1);\n delete (actualJson.source as any).abstractConstraint;\n }\n if (actualJson.target.abstractConstraint !== expectedRelationship.target.abstractConstraint) {\n expect(actualJson.target.abstractConstraint).to.equal(expectedRelationship.target.constraintClasses[0]);\n expect(actualJson.target.constraintClasses.length).to.equal(1);\n delete (actualJson.target as any).abstractConstraint;\n }\n }\n\n if (actualJson.schemaItemType === SchemaItemType.Format) {\n if (undefined !== (actualJson as any).includeZero && undefined === (expectedJson as any).includeZero) {\n expect((actualJson as any).includeZero).to.equal(true);\n delete (actualJson as any).includeZero;\n }\n if ((actualJson as any).composite && undefined !== (actualJson as any).composite.includeZero && undefined === (expectedJson as any).composite.includeZero) {\n expect((actualJson as any).composite.includeZero).to.equal(true);\n delete (actualJson as any).composite.includeZero;\n }\n if ((actualJson as any).composite && undefined !== (actualJson as any).composite.spacer && undefined === (expectedJson as any).composite.spacer) {\n expect((actualJson as any).composite.spacer).to.equal(\" \");\n delete (actualJson as any).composite.spacer;\n }\n if (undefined !== (actualJson as any).decimalSeparator && undefined === (expectedJson as any).decimalSeparator) {\n expect((actualJson as any).decimalSeparator).to.equal(\".\");\n delete (actualJson as any).decimalSeparator;\n }\n if (undefined !== (actualJson as any).roundFactor && undefined === (expectedJson as any).roundFactor) {\n expect((actualJson as any).roundFactor).to.equal(0);\n delete (actualJson as any).roundFactor;\n }\n if (undefined !== (actualJson as any).showSignOption && undefined === (expectedJson as any).showSignOption) {\n expect((actualJson as any).showSignOption).to.equal(\"OnlyNegative\");\n delete (actualJson as any).showSignOption;\n }\n if (undefined !== (actualJson as any).thousandSeparator && undefined === (expectedJson as any).thousandSeparator) {\n expect((actualJson as any).thousandSeparator).to.equal(\",\");\n delete (actualJson as any).thousandSeparator;\n }\n if (undefined !== (actualJson as any).uomSeparator && undefined === (expectedJson as any).uomSeparator) {\n expect((actualJson as any).uomSeparator).to.equal(\" \");\n delete (actualJson as any).uomSeparator;\n }\n if (undefined !== (actualJson as any).spacer && undefined === (expectedJson as any).spacer) {\n expect((actualJson as any).spacer).to.equal(\" \");\n delete (actualJson as any).spacer;\n }\n if (undefined !== (actualJson as any).formatTraits) {\n (actualJson as any).formatTraits = (actualJson as any).formatTraits.map((trait: string) => {\n return trait.charAt(0).toUpperCase() + trait.slice(1);\n });\n }\n }\n\n expect(actualJson).to.deep.equalInAnyOrder(expectedJson);\n }\n\n async function createTestContext() {\n const testEnv = await TestContext.create();\n return testEnv as TestContext<TestSchemaLocater>;\n }\n\n it(\"Schema query, props parsed successfully\", async function () {\n const testSchemaKey = new SchemaKey(\"SchemaTest\", 1, 0, 0);\n await using env = await createTestContext();\n\n const expectedSchema = await env.importAssetSchema(testSchemaKey);\n const actualSchemaProps = await env.schemaLocater.getSchemaJson(testSchemaKey, env.schemaContext);\n expect(actualSchemaProps).to.not.be.undefined;\n\n const actualSchema = await Schema.fromJson(actualSchemaProps!, env.schemaContext);\n expect(actualSchema.toJSON()).to.deep.equal(expectedSchema?.toJSON());\n });\n\n it(\"Property query, props parsed successfully\", async function () {\n const testKey = new SchemaKey(\"PropertyTest\", 1, 0, 0);\n await using env = await createTestContext();\n\n const schema = await env.importAssetSchema(testKey);\n const classPropsObjects = await env.schemaLocater.getEntities(testKey.name, env.schemaContext);\n const entityOneProps = findItem(\"EntityOne\", classPropsObjects);\n const entityTwoProps = findItem(\"EntityTwo\", classPropsObjects);\n const expectedEntityOne = await schema.getEntityClass(\"EntityOne\");\n const expectedEntityTwo = await schema.getEntityClass(\"EntityTwo\");\n\n const validateProperty = (propertyName: string, actualItem = entityOneProps, expectedItem = expectedEntityOne) => {\n const actualProperty = findProperty(propertyName, actualItem.properties!);\n const expectedProperty = expectedItem?.getPropertySync(propertyName);\n // if maxOccurs is the maximum int value in the context Schema,\n // the property from the DB will not have a value\n if ((expectedProperty as any).maxOccurs === 2147483647) {\n expect((actualProperty as any).maxOccurs).to.be.undefined;\n // set so comparison will pass\n (actualProperty as any).maxOccurs = 2147483647;\n }\n\n expect(actualProperty).to.deep.equal(expectedProperty?.toJSON());\n };\n\n // All but one testable property is in EntityOne\n for (const property of await expectedEntityOne!.getProperties(true)) {\n validateProperty(property.name);\n }\n // Backward direction Navigation property is in EntityTwo\n validateProperty(\"EntityTwoParent\", entityTwoProps, expectedEntityTwo);\n });\n\n it(\"Entity query, props parsed successfully\", async function () {\n const testKey = new SchemaKey(\"EntityTest\", 1, 0, 0);\n await using env = await createTestContext();\n\n const schema = await env.importAssetSchema(testKey);\n const classPropsObjects = await env.schemaLocater.getEntities(testKey.name, env.schemaContext);\n expect(classPropsObjects.length).to.be.greaterThan(0);\n\n validateItem(\"EntityModifierNone\", classPropsObjects, schema);\n validateItem(\"EntityModifierAbstract\", classPropsObjects, schema);\n validateItem(\"EntityModifierSealed\", classPropsObjects, schema);\n });\n\n it(\"Struct query, props parsed successfully\", async function () {\n const testKey = new SchemaKey(\"StructTest\", 1, 0, 0);\n await using env = await createTestContext();\n\n const schema = await env.importAssetSchema(testKey);\n const classPropsObjects = await env.schemaLocater.getStructs(testKey.name, env.schemaContext);\n expect(classPropsObjects.length).to.be.greaterThan(0);\n\n validateItem(\"StructModifierNone\", classPropsObjects, schema);\n validateItem(\"StructModifierAbstract\", classPropsObjects, schema);\n validateItem(\"StructModifierSealed\", classPropsObjects, schema);\n });\n\n it(\"Mixin query, props parsed successfully\", async function () {\n const testKey = new SchemaKey(\"MixinTest\", 1, 0, 0);\n await using env = await createTestContext();\n\n const schema = await env.importAssetSchema(testKey);\n const classPropsObjects = await env.schemaLocater.getMixins(testKey.name, env.schemaContext);\n expect(classPropsObjects.length).to.be.greaterThan(0);\n\n validateItem(\"IBaseMixin\", classPropsObjects, schema);\n validateItem(\"ITestMixin\", classPropsObjects, schema);\n });\n\n it(\"Relationship query, props parsed successfully\", async function () {\n const testKey = new SchemaKey(\"RelationshipTest\", 1, 0, 0);\n await using env = await createTestContext();\n\n const schema = await env.importAssetSchema(testKey);\n const classPropsObjects = await env.schemaLocater.getRelationships(testKey.name, env.schemaContext);\n expect(classPropsObjects.length).to.be.greaterThan(0);\n\n validateItem(\"OwnerOwnsVehicles\", classPropsObjects, schema);\n validateItem(\"OwnerOwnsCars\", classPropsObjects, schema);\n validateItem(\"OwnerOwnsAmericanCars\", classPropsObjects, schema);\n validateItem(\"PhysicalModelBreaksDownCarElement\", classPropsObjects, schema);\n });\n\n it(\"CustomAttributeClass query, props parsed successfully\", async function () {\n const testKey = new SchemaKey(\"CustomAttributeClassTest\", 1, 0, 0);\n await using env = await createTestContext();\n\n const schema = await env.importAssetSchema(testKey);\n const classPropsObjects = await env.schemaLocater.getCustomAttributeClasses(testKey.name, env.schemaContext);\n expect(classPropsObjects.length).to.be.greaterThan(0);\n\n validateItem(\"CustomAttributeModifierNone\", classPropsObjects, schema);\n validateItem(\"CustomAttributeModifierSealed\", classPropsObjects, schema);\n validateItem(\"CustomAttributeModifierAbstract\", classPropsObjects, schema);\n });\n\n it(\"KindOfQuantity query, props parsed successfully\", async function () {\n const testKey = new SchemaKey(\"KindOfQuantityTest\", 1, 0, 0);\n await using env = await createTestContext();\n\n const schema = await env.importAssetSchema(testKey);\n const itemPropsObjects = await env.schemaLocater.getKindOfQuantities(testKey.name, env.schemaContext);\n expect(itemPropsObjects.length).to.be.greaterThan(0);\n\n validateItem(\"ACCELERATION\", itemPropsObjects, schema);\n validateItem(\"ANGLE\", itemPropsObjects, schema);\n });\n\n it(\"PropertyCategory query, props parsed successfully\", async function () {\n const testKey = new SchemaKey(\"PropertyCategoryTest\", 1, 0, 0);\n await using env = await createTestContext();\n\n const schema = await env.importAssetSchema(testKey);\n const itemPropsObjects = await env.schemaLocater.getPropertyCategories(testKey.name, env.schemaContext);\n expect(itemPropsObjects.length).to.be.greaterThan(0);\n\n validateItem(\"PropertyCategory1\", itemPropsObjects, schema);\n validateItem(\"PropertyCategory2\", itemPropsObjects, schema);\n });\n\n it(\"Enumeration query, props parsed successfully\", async function () {\n const testKey = new SchemaKey(\"EnumerationTest\", 1, 0, 0);\n await using env = await createTestContext();\n\n const schema = await env.importAssetSchema(testKey);\n const itemPropsObjects = await env.schemaLocater.getEnumerations(testKey.name, env.schemaContext);\n expect(itemPropsObjects.length).to.be.greaterThan(0);\n\n validateItem(\"IntEnumeration\", itemPropsObjects, schema);\n validateItem(\"StringEnumeration\", itemPropsObjects, schema);\n });\n\n it(\"Unit query, props parsed successfully\", async function () {\n const testKey = new SchemaKey(\"UnitTest\", 1, 0, 0);\n await using env = await createTestContext();\n\n const schema = await env.importAssetSchema(testKey);\n const itemPropsObjects = await env.schemaLocater.getUnits(testKey.name, env.schemaContext);\n expect(itemPropsObjects.length).to.be.greaterThan(0);\n\n validateItem(\"LITRE\", itemPropsObjects, schema);\n validateItem(\"GALLON\", itemPropsObjects, schema);\n validateItem(\"ACRE\", itemPropsObjects, schema);\n validateItem(\"FAHRENHEIT\", itemPropsObjects, schema);\n });\n\n it(\"InvertedUnit query, props parsed successfully\", async function () {\n const testKey = new SchemaKey(\"InvertedUnitTest\", 1, 0, 0);\n await using env = await createTestContext();\n\n const schema = await env.importAssetSchema(testKey);\n const itemPropsObjects = await env.schemaLocater.getInvertedUnits(testKey.name, env.schemaContext);\n expect(itemPropsObjects.length).to.be.greaterThan(0);\n\n validateItem(\"FT_HORIZONTAL_PER_FT_VERTICAL\", itemPropsObjects, schema);\n });\n\n it(\"UnitSystem query, props parsed successfully\", async function () {\n // There's a UnitSystem in there.\n const testKey = new SchemaKey(\"InvertedUnitTest\", 1, 0, 0);\n await using env = await createTestContext();\n\n const schema = await env.importAssetSchema(testKey);\n const itemPropsObjects = await env.schemaLocater.getUnitSystems(testKey.name, env.schemaContext);\n expect(itemPropsObjects.length).to.be.greaterThan(0);\n\n validateItem(\"USCUSTOM\", itemPropsObjects, schema);\n });\n\n it(\"Constant query, props parsed successfully\", async function () {\n // There's a UnitSystem in there.\n const testKey = new SchemaKey(\"ConstantTest\", 1, 0, 0);\n await using env = await createTestContext();\n\n const schema = await env.importAssetSchema(testKey);\n const itemPropsObjects = await env.schemaLocater.getConstants(testKey.name, env.schemaContext);\n expect(itemPropsObjects.length).to.be.greaterThan(0);\n\n validateItem(\"KILO\", itemPropsObjects, schema);\n validateItem(\"HALF_PI\", itemPropsObjects, schema);\n });\n\n it(\"Phenomenon query, props parsed successfully\", async function () {\n // There's a Phenomenon in there.\n const testKey = new SchemaKey(\"ConstantTest\", 1, 0, 0);\n await using env = await createTestContext();\n\n const schema = await env.importAssetSchema(testKey);\n const itemPropsObjects = await env.schemaLocater.getPhenomenon(testKey.name, env.schemaContext);\n expect(itemPropsObjects.length).to.be.greaterThan(0);\n\n validateItem(\"NUMBER\", itemPropsObjects, schema);\n validateItem(\"LENGTH_RATIO\", itemPropsObjects, schema);\n });\n\n it(\"Format Schema parses successfully\", async function () {\n // Using installed Formats schema\n const testKey = new SchemaKey(\"Formats\", 1, 0, 0);\n await using env = await createTestContext();\n\n const schema = await env.importAssetSchema(testKey);\n const itemPropsObjects = await env.schemaLocater.getFormats(testKey.name, env.schemaContext);\n expect(itemPropsObjects.length).to.be.greaterThan(0);\n\n for (const props of itemPropsObjects) {\n validateItem(props.name!, itemPropsObjects, schema);\n }\n });\n\n it(\"Comprehensive Format parses successfully\", async function () {\n const testKey = new SchemaKey(\"FormatTest\", 1, 0, 0);\n await using env = await createTestContext();\n\n const schema = await env.importAssetSchema(testKey);\n const itemPropsObjects = await env.schemaLocater.getFormats(testKey.name, env.schemaContext);\n expect(itemPropsObjects.length).to.be.greaterThan(0);\n\n for (const props of itemPropsObjects) {\n validateItem(props.name!, itemPropsObjects, schema);\n }\n });\n\n it(\"CustomAttribute instances parse successfully\", async function () {\n const testKey = new SchemaKey(\"CustomAttributeInstanceTest\", 1, 0, 0);\n await using env = await createTestContext();\n\n const schema = await env.importAssetSchema(testKey);\n const itemPropsObjects = await env.schemaLocater.getStructs(testKey.name, env.schemaContext);\n expect(itemPropsObjects.length).to.be.greaterThan(0);\n\n for (const props of itemPropsObjects) {\n validateItem(props.name!, itemPropsObjects, schema);\n }\n });\n});\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"IncrementalLoading.test.js","sourceRoot":"","sources":["../../../../src/test/incrementalSchemaLocater/IncrementalLoading.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { ECClass, Schema, SchemaInfo, SchemaItem, SchemaItemKey,\r\n SchemaItemType, SchemaKey, SchemaMatchType, WithSchemaKey }\r\n from \"@itwin/ecschema-metadata\";\r\nimport { expect } from \"chai\";\r\nimport { IModelIncrementalSchemaLocater } from \"../../IModelIncrementalSchemaLocater\";\r\nimport { TestContext } from \"./TestContext\";\r\n\r\nimport oldConfiguration from \"../assets/IncrementalSchemaLocater/configs/old.config\";\r\nimport simpleConfiguration from \"../assets/IncrementalSchemaLocater/configs/simple.config\";\r\n\r\nimport * as chai from \"chai\";\r\nimport * as chaiAsPromised from \"chai-as-promised\";\r\n\r\nchai.use(chaiAsPromised);\r\n\r\nfunction parseSchemaItemKey(itemKey: string): SchemaItemKey {\r\n const [schemaName, itemName] = SchemaItem.parseFullName(itemKey);\r\n const schemaKey = SchemaKey.parseString(`${schemaName}.0.0.0`);\r\n return new SchemaItemKey(itemName, schemaKey);\r\n}\r\n\r\ndescribe(\"Incremental Schema Loading\", function () {\r\n describe (\"Simple iModel Incremental Loading Tests\", () => {\r\n const testSchemaConfiguration = simpleConfiguration.schemas[0];\r\n const testSchemaKey = new SchemaKey(testSchemaConfiguration.name, 1, 0, 0);\r\n\r\n it(\"should get schema info\", async () => {\r\n await using env = await TestContext.create();\r\n await env.importAssetSchema(testSchemaKey);\r\n\r\n const schemaInfo = await env.schemaContext.getSchemaInfo(testSchemaKey, SchemaMatchType.Exact) as SchemaInfo;\r\n expect(schemaInfo).to.be.not.undefined;\r\n expect(schemaInfo).to.have.nested.property(\"schemaKey.name\", testSchemaKey.name);\r\n\r\n expect(schemaInfo).to.have.property(\"references\").to.have.a.lengthOf(testSchemaConfiguration.references.length);\r\n expect(schemaInfo).to.have.property(\"references\").to.satisfy((refs: WithSchemaKey[]) => {\r\n for (const ref of refs) {\r\n expect(testSchemaConfiguration.references, `Could not find referenced schema: ${ref.schemaKey.name}`).to.include(ref.schemaKey.name);\r\n }\r\n return true;\r\n });\r\n });\r\n\r\n it(\"should get schema with item stubs\", async () => {\r\n await using env = await TestContext.create();\r\n await env.importAssetSchema(testSchemaKey);\r\n\r\n const schema = await env.schemaContext.getSchema(testSchemaKey) as Schema;\r\n expect(schema).to.be.not.undefined;\r\n expect(schema).to.have.property(\"name\", testSchemaKey.name);\r\n expect(schema).to.have.property(\"description\", testSchemaConfiguration.description);\r\n expect(schema).to.have.property(\"label\", testSchemaConfiguration.label);\r\n\r\n expect(schema).to.have.property(\"references\").to.have.a.lengthOf(testSchemaConfiguration.references.length);\r\n for (const item of schema.getItems()) {\r\n expect(item).to.have.property(\"name\");\r\n expect(item).to.have.property(\"schemaItemType\").to.satisfy((type: string) => SchemaItemType[type as keyof typeof SchemaItemType] !== undefined);\r\n }\r\n\r\n expect(schema).to.be.not.undefined;\r\n expect(schema).to.have.property(\"name\", testSchemaKey.name);\r\n\r\n const items = [...schema.getItems()];\r\n expect(items).to.have.a.lengthOf(testSchemaConfiguration.itemCount);\r\n\r\n for (const checkStub of testSchemaConfiguration.checkStubs) {\r\n const item = await schema.lookupItem(checkStub.item);\r\n expect(item).to.be.not.undefined;\r\n const props = item!.toJSON();\r\n for (const [propertyName, propertyValue] of Object.entries(checkStub.properties)) {\r\n expect(props).to.have.property(propertyName).deep.equalInAnyOrder(propertyValue);\r\n }\r\n }\r\n });\r\n\r\n it(\"should get schema with class stubs with hierarchy\", async () => {\r\n await using env = await TestContext.create();\r\n await env.importAssetSchema(testSchemaKey);\r\n\r\n const schema = await env.schemaContext.getSchema(testSchemaKey) as Schema;\r\n\r\n expect(schema).to.be.not.undefined;\r\n expect(schema).to.have.property(\"name\", testSchemaKey.name);\r\n\r\n const derivedClassKey = parseSchemaItemKey(testSchemaConfiguration.checkHierachy.derivedClass);\r\n const derivedClass = await env.schemaContext.getSchemaItem(derivedClassKey) as ECClass;\r\n expect(derivedClass, `${derivedClassKey.fullName} was not found`).to.be.not.undefined;\r\n\r\n const baseClassKey = parseSchemaItemKey(testSchemaConfiguration.checkHierachy.baseClass);\r\n const baseClass = await env.schemaContext.getSchemaItem(baseClassKey) as ECClass;\r\n expect(baseClass, `${baseClassKey.fullName} was not found`).to.be.not.undefined;\r\n\r\n const isDerivedFrom = await derivedClass.is(baseClass);\r\n expect(isDerivedFrom, `${derivedClass.name} is not derived from ${baseClass.name}`).to.be.true;\r\n });\r\n\r\n it(\"should get schema full schema stack\", async () => {\r\n await using env = await TestContext.create();\r\n await env.importAssetSchema(testSchemaKey);\r\n\r\n const schema = await env.schemaContext.getSchema(testSchemaKey) as Schema;\r\n expect(schema).to.be.not.undefined;\r\n expect(schema).to.have.property(\"name\", testSchemaKey.name);\r\n\r\n expect(schema).to.have.property(\"references\").to.have.a.lengthOf(testSchemaConfiguration.references.length);\r\n for (const item of schema.getItems()) {\r\n expect(item).to.have.property(\"name\");\r\n expect(item).to.have.property(\"schemaItemType\").to.satisfy((type: string) => SchemaItemType[type as keyof typeof SchemaItemType] !== undefined);\r\n }\r\n\r\n expect(schema).to.be.not.undefined;\r\n expect(schema).to.have.property(\"name\", testSchemaKey.name);\r\n\r\n // Wait till schemas are fully loaded to be comparable.\r\n // TODO: remove this check when issue #1763 is fixed.\r\n if (schema.loadingController)\r\n await schema.loadingController.wait();\r\n\r\n const items = [...schema.getItems()];\r\n expect(items).to.have.a.lengthOf(testSchemaConfiguration.itemCount);\r\n\r\n for (const checkItem of testSchemaConfiguration.checkFullLoad) {\r\n const item = await schema.lookupItem(checkItem.item);\r\n expect(item).to.be.not.undefined;\r\n\r\n const itemProps = item!.toJSON();\r\n for (const [propertyName, propertyValue] of Object.entries(checkItem.properties)) {\r\n expect(itemProps).to.have.property(propertyName).deep.equalInAnyOrder(propertyValue);\r\n }\r\n }\r\n });\r\n });\r\n\r\n describe(\"Old Schema profile in iModel Tests\", () => {\r\n it(\"should succeed with incremental loading fallback.\", async () => {\r\n await using env = await TestContext.create({\r\n bimFile: oldConfiguration.bimFile,\r\n });\r\n\r\n const resolveSchemaKey = async (schemaName: string): Promise<SchemaKey> => {\r\n const schemaFullName = (await env.getSchemaNames()).find((name) => name.startsWith(schemaName));\r\n if (schemaFullName === undefined) {\r\n throw new Error(`Test schema '${schemaName}' not found`);\r\n }\r\n return SchemaKey.parseString(schemaFullName);\r\n }\r\n\r\n const testSchemaConfiguration = oldConfiguration.schemas[0];\r\n const testSchemaKey = await resolveSchemaKey(testSchemaConfiguration.name);\r\n\r\n const schema = await env.schemaContext.getSchema(testSchemaKey) as Schema;\r\n expect(schema).to.be.not.undefined;\r\n expect(schema).to.have.property(\"name\", testSchemaKey.name);\r\n\r\n expect(schema).to.have.property(\"references\").to.have.a.lengthOf(testSchemaConfiguration.references.length);\r\n for (const item of schema.getItems()) {\r\n expect(item).to.have.property(\"name\");\r\n expect(item).to.have.property(\"schemaItemType\").to.satisfy((type: string) => SchemaItemType[type as keyof typeof SchemaItemType] !== undefined);\r\n }\r\n\r\n expect(schema).to.be.not.undefined;\r\n expect(schema).to.have.property(\"name\", testSchemaKey.name);\r\n\r\n const items = [...schema.getItems()];\r\n expect(items).to.have.a.lengthOf(testSchemaConfiguration.itemCount);\r\n\r\n for (const checkItem of testSchemaConfiguration.checkFullLoad) {\r\n const item = await schema.lookupItem(checkItem.item);\r\n expect(item).to.be.not.undefined;\r\n\r\n const itemProps = item!.toJSON();\r\n for (const [propertyName, propertyValue] of Object.entries(checkItem.properties)) {\r\n expect(itemProps).to.have.property(propertyName).deep.equalInAnyOrder(propertyValue);\r\n }\r\n }\r\n });\r\n });\r\n\r\n describe(\"Test Incremental Loading setup\", () => {\r\n it(\"schema context should not have an instance of incremental schema locater if loading is disabled\", async () => {\r\n await using env = await TestContext.create({ incrementalSchemaLoading: \"disabled\" });\r\n const locaters = env.iModel.schemaContext.locaters;\r\n const incrementalLocater = locaters.find((locater) => locater instanceof IModelIncrementalSchemaLocater);\r\n expect(incrementalLocater).to.be.undefined;\r\n });\r\n\r\n it(\"schema context should have an instance of incremental schema locater if loading is enabled\", async () => {\r\n await using env = await TestContext.create({ incrementalSchemaLoading: \"enabled\" });\r\n const locaters = env.iModel.schemaContext.locaters;\r\n const incrementalLocater = locaters.find((locater) => locater instanceof IModelIncrementalSchemaLocater);\r\n expect(incrementalLocater).to.be.not.undefined;\r\n });\r\n\r\n it(\"schema context should not have an instance of incremental schema locater if loading is not specified\", async () => {\r\n await using env = await TestContext.create({ incrementalSchemaLoading: undefined });\r\n const locaters = env.iModel.schemaContext.locaters;\r\n const incrementalLocater = locaters.find((locater) => locater instanceof IModelIncrementalSchemaLocater);\r\n expect(incrementalLocater).to.be.undefined;\r\n });\r\n });\r\n});\r\n"]}
1
+ {"version":3,"file":"IncrementalLoading.test.js","sourceRoot":"","sources":["../../../../src/test/incrementalSchemaLocater/IncrementalLoading.test.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,EAA+B,UAAU,EAAE,aAAa,EAC7D,cAAc,EAAE,SAAS,EAAE,eAAe,EAAiB,MACtD,0BAA0B,CAAC;AAClC,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAC9B,OAAO,EAAE,8BAA8B,EAAE,MAAM,sCAAsC,CAAC;AACtF,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,OAAO,gBAAgB,MAAM,uDAAuD,CAAC;AACrF,OAAO,mBAAmB,MAAM,0DAA0D,CAAC;AAE3F,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,KAAK,cAAc,MAAM,kBAAkB,CAAC;AAEnD,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;AAEzB,SAAS,kBAAkB,CAAC,OAAe;IACzC,MAAM,CAAC,UAAU,EAAE,QAAQ,CAAC,GAAG,UAAU,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IACjE,MAAM,SAAS,GAAG,SAAS,CAAC,WAAW,CAAC,GAAG,UAAU,QAAQ,CAAC,CAAC;IAC/D,OAAO,IAAI,aAAa,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;AAChD,CAAC;AAED,QAAQ,CAAC,4BAA4B,EAAE;IACrC,QAAQ,CAAE,yCAAyC,EAAE,GAAG,EAAE;QACxD,MAAM,uBAAuB,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAC/D,MAAM,aAAa,GAAG,IAAI,SAAS,CAAC,uBAAuB,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAE3E,EAAE,CAAC,wBAAwB,EAAE,KAAK,IAAI,EAAE;;;gBACtC,MAAY,GAAG,kCAAG,MAAM,WAAW,CAAC,MAAM,EAAE,OAAA,CAAC;gBAC7C,MAAM,GAAG,CAAC,iBAAiB,CAAC,aAAa,CAAC,CAAC;gBAE3C,MAAM,UAAU,GAAG,MAAM,GAAG,CAAC,aAAa,CAAC,aAAa,CAAC,aAAa,EAAE,eAAe,CAAC,KAAK,CAAe,CAAC;gBAC7G,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC;gBACvC,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,gBAAgB,EAAE,aAAa,CAAC,IAAI,CAAC,CAAC;gBAEjF,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,uBAAuB,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;gBAChH,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,IAAqB,EAAE,EAAE;oBACrF,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;wBACvB,MAAM,CAAC,uBAAuB,CAAC,UAAU,EAAE,qCAAqC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;oBACvI,CAAC;oBACD,OAAO,IAAI,CAAC;gBACd,CAAC,CAAC,CAAC;;;;;;;;;;;SACJ,CAAC,CAAC;QAEH,EAAE,CAAC,mCAAmC,EAAE,KAAK,IAAI,EAAE;;;gBACjD,MAAY,GAAG,kCAAG,MAAM,WAAW,CAAC,MAAM,EAAE,OAAA,CAAC;gBAC7C,MAAM,GAAG,CAAC,iBAAiB,CAAC,aAAa,CAAC,CAAC;gBAE3C,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,aAAa,CAAC,SAAS,CAAC,aAAa,CAAW,CAAC;gBAC1E,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC;gBACnC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC,IAAI,CAAC,CAAC;gBAC5D,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE,uBAAuB,CAAC,WAAW,CAAC,CAAC;gBACpF,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,uBAAuB,CAAC,KAAK,CAAC,CAAC;gBAExE,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,uBAAuB,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;gBAC5G,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAC;oBACrC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;oBACtC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,IAAY,EAAE,EAAE,CAAC,cAAc,CAAC,IAAmC,CAAC,KAAK,SAAS,CAAC,CAAC;gBAClJ,CAAC;gBAED,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC;gBACnC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC,IAAI,CAAC,CAAC;gBAE5D,MAAM,KAAK,GAAG,CAAC,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;gBACrC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,uBAAuB,CAAC,SAAS,CAAC,CAAC;gBAEpE,KAAK,MAAM,SAAS,IAAI,uBAAuB,CAAC,UAAU,EAAE,CAAC;oBAC3D,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;oBACrD,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC;oBACjC,MAAM,KAAK,GAAG,IAAK,CAAC,MAAM,EAAE,CAAC;oBAC7B,KAAK,MAAM,CAAC,YAAY,EAAE,aAAa,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,CAAC;wBACjF,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC;oBACnF,CAAC;gBACH,CAAC;;;;;;;;;;;SACF,CAAC,CAAC;QAEH,EAAE,CAAC,mDAAmD,EAAE,KAAK,IAAI,EAAE;;;gBACjE,MAAY,GAAG,kCAAG,MAAM,WAAW,CAAC,MAAM,EAAE,OAAA,CAAC;gBAC7C,MAAM,GAAG,CAAC,iBAAiB,CAAC,aAAa,CAAC,CAAC;gBAE3C,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,aAAa,CAAC,SAAS,CAAC,aAAa,CAAW,CAAC;gBAE1E,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC;gBACnC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC,IAAI,CAAC,CAAC;gBAE5D,MAAM,eAAe,GAAG,kBAAkB,CAAC,uBAAuB,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;gBAC/F,MAAM,YAAY,GAAG,MAAM,GAAG,CAAC,aAAa,CAAC,aAAa,CAAC,eAAe,CAAY,CAAC;gBACvF,MAAM,CAAC,YAAY,EAAE,GAAG,eAAe,CAAC,QAAQ,gBAAgB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC;gBAEtF,MAAM,YAAY,GAAG,kBAAkB,CAAC,uBAAuB,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;gBACzF,MAAM,SAAS,GAAG,MAAM,GAAG,CAAC,aAAa,CAAC,aAAa,CAAC,YAAY,CAAY,CAAC;gBACjF,MAAM,CAAC,SAAS,EAAE,GAAG,YAAY,CAAC,QAAQ,gBAAgB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC;gBAEhF,MAAM,aAAa,GAAG,MAAM,YAAY,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC;gBACvD,MAAM,CAAC,aAAa,EAAE,GAAG,YAAY,CAAC,IAAI,wBAAwB,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;;;;;;;;;;;SAChG,CAAC,CAAC;QAEH,EAAE,CAAC,qCAAqC,EAAE,KAAK,IAAI,EAAE;;;gBACnD,MAAY,GAAG,kCAAG,MAAM,WAAW,CAAC,MAAM,EAAE,OAAA,CAAC;gBAC7C,MAAM,GAAG,CAAC,iBAAiB,CAAC,aAAa,CAAC,CAAC;gBAE3C,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,aAAa,CAAC,SAAS,CAAC,aAAa,CAAW,CAAC;gBAC1E,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC;gBACnC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC,IAAI,CAAC,CAAC;gBAE5D,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,uBAAuB,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;gBAC5G,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAC;oBACrC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;oBACtC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,IAAY,EAAE,EAAE,CAAC,cAAc,CAAC,IAAmC,CAAC,KAAK,SAAS,CAAC,CAAC;gBAClJ,CAAC;gBAED,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC;gBACnC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC,IAAI,CAAC,CAAC;gBAE5D,uDAAuD;gBACvD,qDAAqD;gBACrD,IAAI,MAAM,CAAC,iBAAiB;oBAC1B,MAAM,MAAM,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC;gBAExC,MAAM,KAAK,GAAG,CAAC,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;gBACrC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,uBAAuB,CAAC,SAAS,CAAC,CAAC;gBAEpE,KAAK,MAAM,SAAS,IAAI,uBAAuB,CAAC,aAAa,EAAE,CAAC;oBAC9D,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;oBACrD,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC;oBAEjC,MAAM,SAAS,GAAG,IAAK,CAAC,MAAM,EAAE,CAAC;oBACjC,KAAK,MAAM,CAAC,YAAY,EAAE,aAAa,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,CAAC;wBACjF,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC;oBACvF,CAAC;gBACH,CAAC;;;;;;;;;;;SACF,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,oCAAoC,EAAE,GAAG,EAAE;QAClD,EAAE,CAAC,mDAAmD,EAAE,KAAK,IAAI,EAAE;;;gBACjE,MAAY,GAAG,kCAAG,MAAM,WAAW,CAAC,MAAM,CAAC;oBACzC,OAAO,EAAE,gBAAgB,CAAC,OAAO;iBAClC,CAAC,OAAA,CAAC;gBAEH,MAAM,gBAAgB,GAAG,KAAK,EAAE,UAAkB,EAAsB,EAAE;oBACxE,MAAM,cAAc,GAAG,CAAC,MAAM,GAAG,CAAC,cAAc,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC;oBAChG,IAAI,cAAc,KAAK,SAAS,EAAE,CAAC;wBACjC,MAAM,IAAI,KAAK,CAAC,gBAAgB,UAAU,aAAa,CAAC,CAAC;oBAC3D,CAAC;oBACD,OAAO,SAAS,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;gBAC/C,CAAC,CAAA;gBAED,MAAM,uBAAuB,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;gBAC5D,MAAM,aAAa,GAAG,MAAM,gBAAgB,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC;gBAE3E,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,aAAa,CAAC,SAAS,CAAC,aAAa,CAAW,CAAC;gBAC1E,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC;gBACnC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC,IAAI,CAAC,CAAC;gBAE5D,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,uBAAuB,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;gBAC5G,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAC;oBACrC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;oBACtC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,IAAY,EAAE,EAAE,CAAC,cAAc,CAAC,IAAmC,CAAC,KAAK,SAAS,CAAC,CAAC;gBAClJ,CAAC;gBAED,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC;gBACnC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC,IAAI,CAAC,CAAC;gBAE5D,MAAM,KAAK,GAAG,CAAC,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;gBACrC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,uBAAuB,CAAC,SAAS,CAAC,CAAC;gBAEpE,KAAK,MAAM,SAAS,IAAI,uBAAuB,CAAC,aAAa,EAAE,CAAC;oBAC9D,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;oBACrD,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC;oBAEjC,MAAM,SAAS,GAAG,IAAK,CAAC,MAAM,EAAE,CAAC;oBACjC,KAAK,MAAM,CAAC,YAAY,EAAE,aAAa,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,CAAC;wBACjF,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC;oBACvF,CAAC;gBACH,CAAC;;;;;;;;;;;SACF,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,gCAAgC,EAAE,GAAG,EAAE;QAC9C,EAAE,CAAC,iGAAiG,EAAE,KAAK,IAAI,EAAE;;;gBAC/G,MAAY,GAAG,kCAAG,MAAM,WAAW,CAAC,MAAM,CAAC,EAAE,wBAAwB,EAAE,UAAU,EAAE,CAAC,OAAA,CAAC;gBACrF,MAAM,QAAQ,GAAG,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC;gBACnD,MAAM,kBAAkB,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,YAAY,8BAA8B,CAAC,CAAC;gBACzG,MAAM,CAAC,kBAAkB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC;;;;;;;;;;;SAC5C,CAAC,CAAC;QAEH,EAAE,CAAC,4FAA4F,EAAE,KAAK,IAAI,EAAE;;;gBAC1G,MAAY,GAAG,kCAAG,MAAM,WAAW,CAAC,MAAM,CAAC,EAAE,wBAAwB,EAAE,SAAS,EAAE,CAAC,OAAA,CAAC;gBACpF,MAAM,QAAQ,GAAG,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC;gBACnD,MAAM,kBAAkB,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,YAAY,8BAA8B,CAAC,CAAC;gBACzG,MAAM,CAAC,kBAAkB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC;;;;;;;;;;;SAChD,CAAC,CAAC;QAEH,EAAE,CAAC,sGAAsG,EAAE,KAAK,IAAI,EAAE;;;gBACpH,MAAY,GAAG,kCAAG,MAAM,WAAW,CAAC,MAAM,CAAC,EAAE,wBAAwB,EAAE,SAAS,EAAE,CAAC,OAAA,CAAC;gBACpF,MAAM,QAAQ,GAAG,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC;gBACnD,MAAM,kBAAkB,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,YAAY,8BAA8B,CAAC,CAAC;gBACzG,MAAM,CAAC,kBAAkB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC;;;;;;;;;;;SAC5C,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import { ECClass, Schema, SchemaInfo, SchemaItem, SchemaItemKey,\n SchemaItemType, SchemaKey, SchemaMatchType, WithSchemaKey }\n from \"@itwin/ecschema-metadata\";\nimport { expect } from \"chai\";\nimport { IModelIncrementalSchemaLocater } from \"../../IModelIncrementalSchemaLocater\";\nimport { TestContext } from \"./TestContext\";\n\nimport oldConfiguration from \"../assets/IncrementalSchemaLocater/configs/old.config\";\nimport simpleConfiguration from \"../assets/IncrementalSchemaLocater/configs/simple.config\";\n\nimport * as chai from \"chai\";\nimport * as chaiAsPromised from \"chai-as-promised\";\n\nchai.use(chaiAsPromised);\n\nfunction parseSchemaItemKey(itemKey: string): SchemaItemKey {\n const [schemaName, itemName] = SchemaItem.parseFullName(itemKey);\n const schemaKey = SchemaKey.parseString(`${schemaName}.0.0.0`);\n return new SchemaItemKey(itemName, schemaKey);\n}\n\ndescribe(\"Incremental Schema Loading\", function () {\n describe (\"Simple iModel Incremental Loading Tests\", () => {\n const testSchemaConfiguration = simpleConfiguration.schemas[0];\n const testSchemaKey = new SchemaKey(testSchemaConfiguration.name, 1, 0, 0);\n\n it(\"should get schema info\", async () => {\n await using env = await TestContext.create();\n await env.importAssetSchema(testSchemaKey);\n\n const schemaInfo = await env.schemaContext.getSchemaInfo(testSchemaKey, SchemaMatchType.Exact) as SchemaInfo;\n expect(schemaInfo).to.be.not.undefined;\n expect(schemaInfo).to.have.nested.property(\"schemaKey.name\", testSchemaKey.name);\n\n expect(schemaInfo).to.have.property(\"references\").to.have.a.lengthOf(testSchemaConfiguration.references.length);\n expect(schemaInfo).to.have.property(\"references\").to.satisfy((refs: WithSchemaKey[]) => {\n for (const ref of refs) {\n expect(testSchemaConfiguration.references, `Could not find referenced schema: ${ref.schemaKey.name}`).to.include(ref.schemaKey.name);\n }\n return true;\n });\n });\n\n it(\"should get schema with item stubs\", async () => {\n await using env = await TestContext.create();\n await env.importAssetSchema(testSchemaKey);\n\n const schema = await env.schemaContext.getSchema(testSchemaKey) as Schema;\n expect(schema).to.be.not.undefined;\n expect(schema).to.have.property(\"name\", testSchemaKey.name);\n expect(schema).to.have.property(\"description\", testSchemaConfiguration.description);\n expect(schema).to.have.property(\"label\", testSchemaConfiguration.label);\n\n expect(schema).to.have.property(\"references\").to.have.a.lengthOf(testSchemaConfiguration.references.length);\n for (const item of schema.getItems()) {\n expect(item).to.have.property(\"name\");\n expect(item).to.have.property(\"schemaItemType\").to.satisfy((type: string) => SchemaItemType[type as keyof typeof SchemaItemType] !== undefined);\n }\n\n expect(schema).to.be.not.undefined;\n expect(schema).to.have.property(\"name\", testSchemaKey.name);\n\n const items = [...schema.getItems()];\n expect(items).to.have.a.lengthOf(testSchemaConfiguration.itemCount);\n\n for (const checkStub of testSchemaConfiguration.checkStubs) {\n const item = await schema.lookupItem(checkStub.item);\n expect(item).to.be.not.undefined;\n const props = item!.toJSON();\n for (const [propertyName, propertyValue] of Object.entries(checkStub.properties)) {\n expect(props).to.have.property(propertyName).deep.equalInAnyOrder(propertyValue);\n }\n }\n });\n\n it(\"should get schema with class stubs with hierarchy\", async () => {\n await using env = await TestContext.create();\n await env.importAssetSchema(testSchemaKey);\n\n const schema = await env.schemaContext.getSchema(testSchemaKey) as Schema;\n\n expect(schema).to.be.not.undefined;\n expect(schema).to.have.property(\"name\", testSchemaKey.name);\n\n const derivedClassKey = parseSchemaItemKey(testSchemaConfiguration.checkHierachy.derivedClass);\n const derivedClass = await env.schemaContext.getSchemaItem(derivedClassKey) as ECClass;\n expect(derivedClass, `${derivedClassKey.fullName} was not found`).to.be.not.undefined;\n\n const baseClassKey = parseSchemaItemKey(testSchemaConfiguration.checkHierachy.baseClass);\n const baseClass = await env.schemaContext.getSchemaItem(baseClassKey) as ECClass;\n expect(baseClass, `${baseClassKey.fullName} was not found`).to.be.not.undefined;\n\n const isDerivedFrom = await derivedClass.is(baseClass);\n expect(isDerivedFrom, `${derivedClass.name} is not derived from ${baseClass.name}`).to.be.true;\n });\n\n it(\"should get schema full schema stack\", async () => {\n await using env = await TestContext.create();\n await env.importAssetSchema(testSchemaKey);\n\n const schema = await env.schemaContext.getSchema(testSchemaKey) as Schema;\n expect(schema).to.be.not.undefined;\n expect(schema).to.have.property(\"name\", testSchemaKey.name);\n\n expect(schema).to.have.property(\"references\").to.have.a.lengthOf(testSchemaConfiguration.references.length);\n for (const item of schema.getItems()) {\n expect(item).to.have.property(\"name\");\n expect(item).to.have.property(\"schemaItemType\").to.satisfy((type: string) => SchemaItemType[type as keyof typeof SchemaItemType] !== undefined);\n }\n\n expect(schema).to.be.not.undefined;\n expect(schema).to.have.property(\"name\", testSchemaKey.name);\n\n // Wait till schemas are fully loaded to be comparable.\n // TODO: remove this check when issue #1763 is fixed.\n if (schema.loadingController)\n await schema.loadingController.wait();\n\n const items = [...schema.getItems()];\n expect(items).to.have.a.lengthOf(testSchemaConfiguration.itemCount);\n\n for (const checkItem of testSchemaConfiguration.checkFullLoad) {\n const item = await schema.lookupItem(checkItem.item);\n expect(item).to.be.not.undefined;\n\n const itemProps = item!.toJSON();\n for (const [propertyName, propertyValue] of Object.entries(checkItem.properties)) {\n expect(itemProps).to.have.property(propertyName).deep.equalInAnyOrder(propertyValue);\n }\n }\n });\n });\n\n describe(\"Old Schema profile in iModel Tests\", () => {\n it(\"should succeed with incremental loading fallback.\", async () => {\n await using env = await TestContext.create({\n bimFile: oldConfiguration.bimFile,\n });\n\n const resolveSchemaKey = async (schemaName: string): Promise<SchemaKey> => {\n const schemaFullName = (await env.getSchemaNames()).find((name) => name.startsWith(schemaName));\n if (schemaFullName === undefined) {\n throw new Error(`Test schema '${schemaName}' not found`);\n }\n return SchemaKey.parseString(schemaFullName);\n }\n\n const testSchemaConfiguration = oldConfiguration.schemas[0];\n const testSchemaKey = await resolveSchemaKey(testSchemaConfiguration.name);\n\n const schema = await env.schemaContext.getSchema(testSchemaKey) as Schema;\n expect(schema).to.be.not.undefined;\n expect(schema).to.have.property(\"name\", testSchemaKey.name);\n\n expect(schema).to.have.property(\"references\").to.have.a.lengthOf(testSchemaConfiguration.references.length);\n for (const item of schema.getItems()) {\n expect(item).to.have.property(\"name\");\n expect(item).to.have.property(\"schemaItemType\").to.satisfy((type: string) => SchemaItemType[type as keyof typeof SchemaItemType] !== undefined);\n }\n\n expect(schema).to.be.not.undefined;\n expect(schema).to.have.property(\"name\", testSchemaKey.name);\n\n const items = [...schema.getItems()];\n expect(items).to.have.a.lengthOf(testSchemaConfiguration.itemCount);\n\n for (const checkItem of testSchemaConfiguration.checkFullLoad) {\n const item = await schema.lookupItem(checkItem.item);\n expect(item).to.be.not.undefined;\n\n const itemProps = item!.toJSON();\n for (const [propertyName, propertyValue] of Object.entries(checkItem.properties)) {\n expect(itemProps).to.have.property(propertyName).deep.equalInAnyOrder(propertyValue);\n }\n }\n });\n });\n\n describe(\"Test Incremental Loading setup\", () => {\n it(\"schema context should not have an instance of incremental schema locater if loading is disabled\", async () => {\n await using env = await TestContext.create({ incrementalSchemaLoading: \"disabled\" });\n const locaters = env.iModel.schemaContext.locaters;\n const incrementalLocater = locaters.find((locater) => locater instanceof IModelIncrementalSchemaLocater);\n expect(incrementalLocater).to.be.undefined;\n });\n\n it(\"schema context should have an instance of incremental schema locater if loading is enabled\", async () => {\n await using env = await TestContext.create({ incrementalSchemaLoading: \"enabled\" });\n const locaters = env.iModel.schemaContext.locaters;\n const incrementalLocater = locaters.find((locater) => locater instanceof IModelIncrementalSchemaLocater);\n expect(incrementalLocater).to.be.not.undefined;\n });\n\n it(\"schema context should not have an instance of incremental schema locater if loading is not specified\", async () => {\n await using env = await TestContext.create({ incrementalSchemaLoading: undefined });\n const locaters = env.iModel.schemaContext.locaters;\n const incrementalLocater = locaters.find((locater) => locater instanceof IModelIncrementalSchemaLocater);\n expect(incrementalLocater).to.be.undefined;\n });\n });\n});\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"TestContext.js","sourceRoot":"","sources":["../../../../src/test/incrementalSchemaLocater/TestContext.ts"],"names":[],"mappings":"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","sourcesContent":["import { Schema, SchemaContext, SchemaGraphUtil, SchemaJsonLocater, SchemaKey, SchemaMatchType } from \"@itwin/ecschema-metadata\";\r\nimport { IModelIncrementalSchemaLocater } from \"../../IModelIncrementalSchemaLocater\";\r\nimport { BriefcaseDb, IModelDb, StandaloneDb } from \"../../IModelDb\";\r\nimport { IModelHost } from \"../../IModelHost\";\r\nimport { KnownTestLocations } from \"../KnownTestLocations\";\r\nimport { OpenMode } from \"@itwin/core-bentley\";\r\nimport { IModelJsFs } from \"../../IModelJsFs\";\r\nimport { ProfileOptions } from \"@itwin/core-common\";\r\nimport { SchemaXmlFileLocater } from \"@itwin/ecschema-locaters\";\r\nimport { DOMParser, XMLSerializer } from \"@xmldom/xmldom\";\r\nimport * as path from \"path\";\r\nimport { TestUtils } from \"../TestUtils\";\r\n\r\ninterface Options {\r\n readonly bimFile?: string;\r\n readonly incrementalSchemaLoading?: \"enabled\" | \"disabled\" | undefined;\r\n}\r\n\r\ntype SchemaLocaterType<TOptions> = TOptions extends { incrementalSchemaLoading: \"disabled\" } ? never : IModelIncrementalSchemaLocater;\r\n\r\nexport class TestContext<TLocater = never> implements AsyncDisposable {\r\n private readonly _iModel: IModelDb;\r\n private readonly _schemaLocater: TLocater;\r\n private readonly _assetContext: SchemaContext;\r\n\r\n private constructor(iModel: IModelDb) {\r\n this._iModel = iModel;\r\n this._schemaLocater = this._iModel.schemaContext.locaters.find((locater) => {\r\n return locater instanceof IModelIncrementalSchemaLocater;\r\n }) as TLocater;\r\n\r\n // Ideally we should not need a seperate context here to locate and locate the bisschemas from the\r\n // parent imodel context, but due to a bug in the incremental schema logic, we have to do this for now.\r\n // TODO: remove this when issue #1763 is fixed.\r\n this._assetContext = new SchemaContext();\r\n this._assetContext.addLocater(new SchemaJsonLocater((schemaName) => {\r\n return iModel.getSchemaProps(schemaName);\r\n }))\r\n const xmlAssetSchemaLocater = new SchemaXmlFileLocater();\r\n xmlAssetSchemaLocater.addSchemaSearchPath(path.join(KnownTestLocations.assetsDir, \"IncrementalSchemaLocater\"));\r\n this._assetContext.addLocater(xmlAssetSchemaLocater);\r\n\r\n iModel.schemaContext.addLocater(this._assetContext);\r\n }\r\n\r\n public get iModel(): IModelDb {\r\n return this._iModel;\r\n }\r\n\r\n public get schemaLocater(): TLocater {\r\n return this._schemaLocater;\r\n }\r\n\r\n public get schemaContext(): SchemaContext {\r\n return this._iModel.schemaContext;\r\n }\r\n\r\n public static async create<TOptions extends Options>(options?: TOptions): Promise<TestContext<SchemaLocaterType<TOptions>>> {\r\n if (!IModelHost.isValid) {\r\n await TestUtils.startBackend();\r\n }\r\n\r\n const iModel = options?.bimFile ?\r\n await this.loadIModelFile(options.bimFile) :\r\n await this.createIModel();\r\n\r\n const configuration = IModelHost.configuration;\r\n if (configuration) {\r\n const previousSetting = configuration.incrementalSchemaLoading;\r\n configuration.incrementalSchemaLoading = options ? options.incrementalSchemaLoading : \"enabled\";\r\n iModel.onBeforeClose.addOnce(() => {\r\n configuration.incrementalSchemaLoading = previousSetting;\r\n });\r\n }\r\n\r\n return new TestContext(iModel);\r\n }\r\n\r\n private static async loadIModelFile(bimFile: string): Promise<IModelDb> {\r\n const pathToBriefCase = path.join(KnownTestLocations.assetsDir, bimFile);\r\n return BriefcaseDb.open({\r\n fileName: pathToBriefCase,\r\n readonly: true,\r\n key: \"test-iModel\",\r\n });\r\n }\r\n\r\n private static async createIModel(): Promise<IModelDb> {\r\n const testBimPath = path.join(KnownTestLocations.assetsDir, \"IncrementalSchemaLocater\", \"test-bim.bim\");\r\n\r\n if (IModelJsFs.existsSync(testBimPath)) {\r\n ~\r\n IModelJsFs.removeSync(testBimPath);\r\n }\r\n\r\n const localBim = StandaloneDb.createEmpty(testBimPath, {\r\n enableTransactions: true,\r\n rootSubject: {\r\n name: \"IncrementalSchemaTestingDb\"\r\n },\r\n });\r\n\r\n localBim.close();\r\n\r\n const nativeDb = IModelDb.openDgnDb({ path: testBimPath }, OpenMode.ReadWrite, { profile: ProfileOptions.Upgrade });\r\n nativeDb.saveChanges();\r\n nativeDb.closeFile();\r\n\r\n return StandaloneDb.openFile(testBimPath, OpenMode.ReadWrite);\r\n }\r\n\r\n public async getSchemaNames(): Promise<string[]> {\r\n const result = new Array<string>();\r\n const sqlQuery = \"SELECT Name, VersionMajor, VersionWrite, VersionMinor FROM meta.ECSchemaDef ORDER BY Name\";\r\n const reader = this._iModel.createQueryReader(sqlQuery);\r\n while (await reader.step()) {\r\n const name = reader.current[0];\r\n const versionMajor = reader.current[1];\r\n const versionWrite = reader.current[2];\r\n const versionMinor = reader.current[3];\r\n\r\n result.push(`${name}.${versionMajor}.${versionWrite}.${versionMinor}`);\r\n }\r\n return result;\r\n }\r\n\r\n public async importAssetSchema(schemaKey: SchemaKey): Promise<Schema> {\r\n // If schema is already in the iModel, return it.\r\n if (undefined !== this.iModel.querySchemaVersion(schemaKey.name))\r\n return await this.schemaContext.getSchema(schemaKey) as Schema;\r\n\r\n // Locate the schema from the assets using the schema contexts asset locaters.\r\n const testSchema = await this._assetContext.getSchema(schemaKey, SchemaMatchType.Exact);\r\n if (undefined === testSchema)\r\n throw new Error(`The schema '${schemaKey.name}' could not be found in the assets folder.`);\r\n\r\n const schemaXml = await getOrderedSchemaStrings(testSchema);\r\n await this._iModel.importSchemaStrings(schemaXml);\r\n\r\n if (this.iModel.isBriefcaseDb() && !this.iModel.isReadonly) {\r\n await this.iModel.pushChanges({ description: \"import test schema\" });\r\n }\r\n\r\n const schema = await this.schemaContext.getSchema(schemaKey);\r\n if (undefined === schema)\r\n throw new Error(`The schema '${schemaKey.name}' could not be found after import.`);\r\n\r\n if (schema.loadingController && !schema.loadingController.isComplete) {\r\n await schema.loadingController.wait();\r\n }\r\n\r\n return schema;\r\n }\r\n\r\n public async [Symbol.asyncDispose](): Promise<void> {\r\n return this._iModel.close();\r\n }\r\n}\r\n\r\nasync function getOrderedSchemaStrings(insertSchema: Schema): Promise<string[]> {\r\n const schemas = SchemaGraphUtil.buildDependencyOrderedSchemaList(insertSchema);\r\n const schemaStrings = await Promise.all(schemas.map(async (schema) => getSchemaString(schema)));\r\n return schemaStrings;\r\n}\r\n\r\nasync function getSchemaString(schema: Schema): Promise<string> {\r\n // Serialize schema to the document object\r\n const xmlDocument = new DOMParser().parseFromString(`<?xml version=\"1.0\" encoding=\"UTF-8\"?>`, \"application/xml\");\r\n await schema.toXml(xmlDocument);\r\n\r\n const serializer = new XMLSerializer();\r\n const xml = serializer.serializeToString(xmlDocument);\r\n\r\n return xml;\r\n}\r\n\r\n"]}
1
+ {"version":3,"file":"TestContext.js","sourceRoot":"","sources":["../../../../src/test/incrementalSchemaLocater/TestContext.ts"],"names":[],"mappings":"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","sourcesContent":["import { Schema, SchemaContext, SchemaGraphUtil, SchemaJsonLocater, SchemaKey, SchemaMatchType } from \"@itwin/ecschema-metadata\";\nimport { IModelIncrementalSchemaLocater } from \"../../IModelIncrementalSchemaLocater\";\nimport { BriefcaseDb, IModelDb, StandaloneDb } from \"../../IModelDb\";\nimport { IModelHost } from \"../../IModelHost\";\nimport { KnownTestLocations } from \"../KnownTestLocations\";\nimport { OpenMode } from \"@itwin/core-bentley\";\nimport { IModelJsFs } from \"../../IModelJsFs\";\nimport { ProfileOptions } from \"@itwin/core-common\";\nimport { SchemaXmlFileLocater } from \"@itwin/ecschema-locaters\";\nimport { DOMParser, XMLSerializer } from \"@xmldom/xmldom\";\nimport * as path from \"path\";\nimport { TestUtils } from \"../TestUtils\";\n\ninterface Options {\n readonly bimFile?: string;\n readonly incrementalSchemaLoading?: \"enabled\" | \"disabled\" | undefined;\n}\n\ntype SchemaLocaterType<TOptions> = TOptions extends { incrementalSchemaLoading: \"disabled\" } ? never : IModelIncrementalSchemaLocater;\n\nexport class TestContext<TLocater = never> implements AsyncDisposable {\n private readonly _iModel: IModelDb;\n private readonly _schemaLocater: TLocater;\n private readonly _assetContext: SchemaContext;\n\n private constructor(iModel: IModelDb) {\n this._iModel = iModel;\n this._schemaLocater = this._iModel.schemaContext.locaters.find((locater) => {\n return locater instanceof IModelIncrementalSchemaLocater;\n }) as TLocater;\n\n // Ideally we should not need a seperate context here to locate and locate the bisschemas from the\n // parent imodel context, but due to a bug in the incremental schema logic, we have to do this for now.\n // TODO: remove this when issue #1763 is fixed.\n this._assetContext = new SchemaContext();\n this._assetContext.addLocater(new SchemaJsonLocater((schemaName) => {\n return iModel.getSchemaProps(schemaName);\n }))\n const xmlAssetSchemaLocater = new SchemaXmlFileLocater();\n xmlAssetSchemaLocater.addSchemaSearchPath(path.join(KnownTestLocations.assetsDir, \"IncrementalSchemaLocater\"));\n this._assetContext.addLocater(xmlAssetSchemaLocater);\n\n iModel.schemaContext.addLocater(this._assetContext);\n }\n\n public get iModel(): IModelDb {\n return this._iModel;\n }\n\n public get schemaLocater(): TLocater {\n return this._schemaLocater;\n }\n\n public get schemaContext(): SchemaContext {\n return this._iModel.schemaContext;\n }\n\n public static async create<TOptions extends Options>(options?: TOptions): Promise<TestContext<SchemaLocaterType<TOptions>>> {\n if (!IModelHost.isValid) {\n await TestUtils.startBackend();\n }\n\n const iModel = options?.bimFile ?\n await this.loadIModelFile(options.bimFile) :\n await this.createIModel();\n\n const configuration = IModelHost.configuration;\n if (configuration) {\n const previousSetting = configuration.incrementalSchemaLoading;\n configuration.incrementalSchemaLoading = options ? options.incrementalSchemaLoading : \"enabled\";\n iModel.onBeforeClose.addOnce(() => {\n configuration.incrementalSchemaLoading = previousSetting;\n });\n }\n\n return new TestContext(iModel);\n }\n\n private static async loadIModelFile(bimFile: string): Promise<IModelDb> {\n const pathToBriefCase = path.join(KnownTestLocations.assetsDir, bimFile);\n return BriefcaseDb.open({\n fileName: pathToBriefCase,\n readonly: true,\n key: \"test-iModel\",\n });\n }\n\n private static async createIModel(): Promise<IModelDb> {\n const testBimPath = path.join(KnownTestLocations.assetsDir, \"IncrementalSchemaLocater\", \"test-bim.bim\");\n\n if (IModelJsFs.existsSync(testBimPath)) {\n ~\n IModelJsFs.removeSync(testBimPath);\n }\n\n const localBim = StandaloneDb.createEmpty(testBimPath, {\n enableTransactions: true,\n rootSubject: {\n name: \"IncrementalSchemaTestingDb\"\n },\n });\n\n localBim.close();\n\n const nativeDb = IModelDb.openDgnDb({ path: testBimPath }, OpenMode.ReadWrite, { profile: ProfileOptions.Upgrade });\n nativeDb.saveChanges();\n nativeDb.closeFile();\n\n return StandaloneDb.openFile(testBimPath, OpenMode.ReadWrite);\n }\n\n public async getSchemaNames(): Promise<string[]> {\n const result = new Array<string>();\n const sqlQuery = \"SELECT Name, VersionMajor, VersionWrite, VersionMinor FROM meta.ECSchemaDef ORDER BY Name\";\n const reader = this._iModel.createQueryReader(sqlQuery);\n while (await reader.step()) {\n const name = reader.current[0];\n const versionMajor = reader.current[1];\n const versionWrite = reader.current[2];\n const versionMinor = reader.current[3];\n\n result.push(`${name}.${versionMajor}.${versionWrite}.${versionMinor}`);\n }\n return result;\n }\n\n public async importAssetSchema(schemaKey: SchemaKey): Promise<Schema> {\n // If schema is already in the iModel, return it.\n if (undefined !== this.iModel.querySchemaVersion(schemaKey.name))\n return await this.schemaContext.getSchema(schemaKey) as Schema;\n\n // Locate the schema from the assets using the schema contexts asset locaters.\n const testSchema = await this._assetContext.getSchema(schemaKey, SchemaMatchType.Exact);\n if (undefined === testSchema)\n throw new Error(`The schema '${schemaKey.name}' could not be found in the assets folder.`);\n\n const schemaXml = await getOrderedSchemaStrings(testSchema);\n await this._iModel.importSchemaStrings(schemaXml);\n\n if (this.iModel.isBriefcaseDb() && !this.iModel.isReadonly) {\n await this.iModel.pushChanges({ description: \"import test schema\" });\n }\n\n const schema = await this.schemaContext.getSchema(schemaKey);\n if (undefined === schema)\n throw new Error(`The schema '${schemaKey.name}' could not be found after import.`);\n\n if (schema.loadingController && !schema.loadingController.isComplete) {\n await schema.loadingController.wait();\n }\n\n return schema;\n }\n\n public async [Symbol.asyncDispose](): Promise<void> {\n return this._iModel.close();\n }\n}\n\nasync function getOrderedSchemaStrings(insertSchema: Schema): Promise<string[]> {\n const schemas = SchemaGraphUtil.buildDependencyOrderedSchemaList(insertSchema);\n const schemaStrings = await Promise.all(schemas.map(async (schema) => getSchemaString(schema)));\n return schemaStrings;\n}\n\nasync function getSchemaString(schema: Schema): Promise<string> {\n // Serialize schema to the document object\n const xmlDocument = new DOMParser().parseFromString(`<?xml version=\"1.0\" encoding=\"UTF-8\"?>`, \"application/xml\");\n await schema.toXml(xmlDocument);\n\n const serializer = new XMLSerializer();\n const xml = serializer.serializeToString(xmlDocument);\n\n return xml;\n}\n\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/test/index.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,wBAAwB,CAAC;AACvC,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\nexport * from \"./AdvancedEqual\";\r\nexport * from \"./IModelTestUtils\";\r\nexport * from \"./KnownTestLocations\";\r\nexport * from \"./RevisionUtility\";\r\nexport * from \"./TestChangeSetUtility\";\r\nexport * from \"./TestEditTxn\";\r\nexport * from \"./imageData\";\r\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/test/index.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,wBAAwB,CAAC;AACvC,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\nexport * from \"./AdvancedEqual\";\nexport * from \"./IModelTestUtils\";\nexport * from \"./KnownTestLocations\";\nexport * from \"./RevisionUtility\";\nexport * from \"./TestChangeSetUtility\";\nexport * from \"./TestEditTxn\";\nexport * from \"./imageData\";\n"]}
@@ -25,38 +25,38 @@ describe("ECSqlInstanceReshaper", () => {
25
25
  let aspectId;
26
26
  let relationshipId;
27
27
  before(async () => {
28
- const schema = `<?xml version="1.0" encoding="UTF-8"?>
29
- <ECSchema schemaName="${schemaName}" alias="${schemaAlias}" version="01.00.00" xmlns="http://www.bentley.com/schemas/Bentley.ECXML.3.2">
30
- <ECSchemaReference name="BisCore" version="01.00.04" alias="bis"/>
31
- <ECStructClass typeName="PointStruct" modifier="None">
32
- <ECProperty propertyName="Label" typeName="string"/>
33
- <ECProperty propertyName="P3d" typeName="point3d"/>
34
- </ECStructClass>
35
- <ECEntityClass typeName="ReshaperElement" modifier="None">
36
- <BaseClass>bis:DefinitionElement</BaseClass>
37
- </ECEntityClass>
38
- <ECEntityClass typeName="ReshaperAspect" modifier="None">
39
- <BaseClass>bis:ElementUniqueAspect</BaseClass>
40
- <ECProperty propertyName="P2d" typeName="point2d"/>
41
- <ECProperty propertyName="P3d" typeName="point3d"/>
42
- <ECStructProperty propertyName="St" typeName="PointStruct"/>
43
- <ECArrayProperty propertyName="ArrayI" typeName="int" minOccurs="0" maxOccurs="unbounded"/>
44
- <ECArrayProperty propertyName="ArrayP3d" typeName="point3d" minOccurs="0" maxOccurs="unbounded"/>
45
- <ECStructArrayProperty propertyName="ArraySt" typeName="PointStruct" minOccurs="0" maxOccurs="unbounded"/>
46
- </ECEntityClass>
47
- <ECRelationshipClass typeName="ReshaperRelatesToElement" strength="referencing" modifier="Sealed">
48
- <BaseClass>bis:ElementRefersToElements</BaseClass>
49
- <Source multiplicity="(0..*)" roleLabel="refers to" polymorphic="true">
50
- <Class class="ReshaperElement"/>
51
- </Source>
52
- <Target multiplicity="(0..*)" roleLabel="is referenced by" polymorphic="true">
53
- <Class class="ReshaperElement"/>
54
- </Target>
55
- <ECProperty propertyName="Label" typeName="string"/>
56
- </ECRelationshipClass>
57
- <ECEnumeration typeName="ReshaperNotAClass" backingTypeName="int" isStrict="true">
58
- <ECEnumerator name="Value0" value="0"/>
59
- </ECEnumeration>
28
+ const schema = `<?xml version="1.0" encoding="UTF-8"?>
29
+ <ECSchema schemaName="${schemaName}" alias="${schemaAlias}" version="01.00.00" xmlns="http://www.bentley.com/schemas/Bentley.ECXML.3.2">
30
+ <ECSchemaReference name="BisCore" version="01.00.04" alias="bis"/>
31
+ <ECStructClass typeName="PointStruct" modifier="None">
32
+ <ECProperty propertyName="Label" typeName="string"/>
33
+ <ECProperty propertyName="P3d" typeName="point3d"/>
34
+ </ECStructClass>
35
+ <ECEntityClass typeName="ReshaperElement" modifier="None">
36
+ <BaseClass>bis:DefinitionElement</BaseClass>
37
+ </ECEntityClass>
38
+ <ECEntityClass typeName="ReshaperAspect" modifier="None">
39
+ <BaseClass>bis:ElementUniqueAspect</BaseClass>
40
+ <ECProperty propertyName="P2d" typeName="point2d"/>
41
+ <ECProperty propertyName="P3d" typeName="point3d"/>
42
+ <ECStructProperty propertyName="St" typeName="PointStruct"/>
43
+ <ECArrayProperty propertyName="ArrayI" typeName="int" minOccurs="0" maxOccurs="unbounded"/>
44
+ <ECArrayProperty propertyName="ArrayP3d" typeName="point3d" minOccurs="0" maxOccurs="unbounded"/>
45
+ <ECStructArrayProperty propertyName="ArraySt" typeName="PointStruct" minOccurs="0" maxOccurs="unbounded"/>
46
+ </ECEntityClass>
47
+ <ECRelationshipClass typeName="ReshaperRelatesToElement" strength="referencing" modifier="Sealed">
48
+ <BaseClass>bis:ElementRefersToElements</BaseClass>
49
+ <Source multiplicity="(0..*)" roleLabel="refers to" polymorphic="true">
50
+ <Class class="ReshaperElement"/>
51
+ </Source>
52
+ <Target multiplicity="(0..*)" roleLabel="is referenced by" polymorphic="true">
53
+ <Class class="ReshaperElement"/>
54
+ </Target>
55
+ <ECProperty propertyName="Label" typeName="string"/>
56
+ </ECRelationshipClass>
57
+ <ECEnumeration typeName="ReshaperNotAClass" backingTypeName="int" isStrict="true">
58
+ <ECEnumerator name="Value0" value="0"/>
59
+ </ECEnumeration>
60
60
  </ECSchema>`;
61
61
  const testFileName = IModelTestUtils.prepareOutputFile(subDirName, "ECSqlInstanceReshaper.bim");
62
62
  const schemaPath = IModelTestUtils.prepareOutputFile(subDirName, `${schemaName}.01.00.00.xml`);
@@ -1 +1 @@
1
- {"version":3,"file":"ECSqlInstanceReshaper.test.js","sourceRoot":"","sources":["../../../../src/test/internal/ECSqlInstanceReshaper.test.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\nimport { assert, expect } from \"chai\";\r\nimport { Id64, Id64String } from \"@itwin/core-bentley\";\r\nimport { Code, IModel, QueryBinder, QueryRowFormat } from \"@itwin/core-common\";\r\nimport { withEditTxn } from \"../../EditTxn\";\r\nimport { getRuntimeClass, reshapeInstanceRow, reshapePropertyValue } from \"../../internal/ECSqlInstanceReshaper\";\r\nimport { IModelJsFs, SnapshotDb } from \"../../core-backend\";\r\nimport { IModelTestUtils } from \"../IModelTestUtils\";\r\n\r\n/* eslint-disable @typescript-eslint/naming-convention */\r\n\r\n// Direct unit tests for the ECSqlInstanceReshaper helper, which reshapes rows/values queried with the\r\n// non-deprecated QueryRowFormat.UseECSqlPropertyNames row format back into the legacy shape historically\r\n// produced by the deprecated QueryRowFormat.UseJsPropertyNames row format. These call the helper's exported\r\n// functions directly against real ECSQL rows, rather than only exercising them indirectly through\r\n// ElementAspect/Relationship/annotation field call sites (which are covered elsewhere).\r\ndescribe(\"ECSqlInstanceReshaper\", () => {\r\n const schemaName = \"ReshaperTest\";\r\n const schemaAlias = \"rst\";\r\n const subDirName = \"ECSqlInstanceReshaper\";\r\n\r\n let iModel: SnapshotDb;\r\n let element1Id: Id64String;\r\n let element2Id: Id64String;\r\n let aspectId: Id64String;\r\n let relationshipId: Id64String;\r\n\r\n before(async () => {\r\n const schema = `<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n <ECSchema schemaName=\"${schemaName}\" alias=\"${schemaAlias}\" version=\"01.00.00\" xmlns=\"http://www.bentley.com/schemas/Bentley.ECXML.3.2\">\r\n <ECSchemaReference name=\"BisCore\" version=\"01.00.04\" alias=\"bis\"/>\r\n <ECStructClass typeName=\"PointStruct\" modifier=\"None\">\r\n <ECProperty propertyName=\"Label\" typeName=\"string\"/>\r\n <ECProperty propertyName=\"P3d\" typeName=\"point3d\"/>\r\n </ECStructClass>\r\n <ECEntityClass typeName=\"ReshaperElement\" modifier=\"None\">\r\n <BaseClass>bis:DefinitionElement</BaseClass>\r\n </ECEntityClass>\r\n <ECEntityClass typeName=\"ReshaperAspect\" modifier=\"None\">\r\n <BaseClass>bis:ElementUniqueAspect</BaseClass>\r\n <ECProperty propertyName=\"P2d\" typeName=\"point2d\"/>\r\n <ECProperty propertyName=\"P3d\" typeName=\"point3d\"/>\r\n <ECStructProperty propertyName=\"St\" typeName=\"PointStruct\"/>\r\n <ECArrayProperty propertyName=\"ArrayI\" typeName=\"int\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\r\n <ECArrayProperty propertyName=\"ArrayP3d\" typeName=\"point3d\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\r\n <ECStructArrayProperty propertyName=\"ArraySt\" typeName=\"PointStruct\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\r\n </ECEntityClass>\r\n <ECRelationshipClass typeName=\"ReshaperRelatesToElement\" strength=\"referencing\" modifier=\"Sealed\">\r\n <BaseClass>bis:ElementRefersToElements</BaseClass>\r\n <Source multiplicity=\"(0..*)\" roleLabel=\"refers to\" polymorphic=\"true\">\r\n <Class class=\"ReshaperElement\"/>\r\n </Source>\r\n <Target multiplicity=\"(0..*)\" roleLabel=\"is referenced by\" polymorphic=\"true\">\r\n <Class class=\"ReshaperElement\"/>\r\n </Target>\r\n <ECProperty propertyName=\"Label\" typeName=\"string\"/>\r\n </ECRelationshipClass>\r\n <ECEnumeration typeName=\"ReshaperNotAClass\" backingTypeName=\"int\" isStrict=\"true\">\r\n <ECEnumerator name=\"Value0\" value=\"0\"/>\r\n </ECEnumeration>\r\n </ECSchema>`;\r\n\r\n const testFileName = IModelTestUtils.prepareOutputFile(subDirName, \"ECSqlInstanceReshaper.bim\");\r\n const schemaPath = IModelTestUtils.prepareOutputFile(subDirName, `${schemaName}.01.00.00.xml`);\r\n IModelJsFs.writeFileSync(schemaPath, schema);\r\n\r\n iModel = SnapshotDb.createEmpty(testFileName, { rootSubject: { name: \"ECSqlInstanceReshaperTest\" } });\r\n await iModel.importSchemas([schemaPath]);\r\n\r\n withEditTxn(iModel, (txn) => {\r\n element1Id = txn.insertElement({\r\n classFullName: `${schemaName}:ReshaperElement`,\r\n model: IModel.dictionaryId,\r\n code: Code.createEmpty(),\r\n });\r\n element2Id = txn.insertElement({\r\n classFullName: `${schemaName}:ReshaperElement`,\r\n model: IModel.dictionaryId,\r\n code: Code.createEmpty(),\r\n });\r\n assert.isTrue(Id64.isValidId64(element1Id));\r\n assert.isTrue(Id64.isValidId64(element2Id));\r\n\r\n aspectId = txn.insertAspect({\r\n classFullName: `${schemaName}:ReshaperAspect`,\r\n element: { id: element1Id },\r\n p2d: { x: 100, y: 200 },\r\n p3d: { x: 1, y: 2, z: 3 },\r\n st: { label: \"struct-label\", p3d: { x: 4, y: 5, z: 6 } },\r\n arrayI: [10, 20, 30],\r\n arrayP3d: [{ x: 13, y: 14, z: 15 }, { x: 16, y: 17, z: 18 }],\r\n arraySt: [{ label: \"arr-0\", p3d: { x: 7, y: 8, z: 9 } }, { label: \"arr-1\", p3d: { x: 10, y: 11, z: 12 } }],\r\n } as any);\r\n assert.isTrue(Id64.isValidId64(aspectId));\r\n\r\n relationshipId = txn.insertRelationship({\r\n classFullName: `${schemaName}:ReshaperRelatesToElement`,\r\n sourceId: element1Id,\r\n targetId: element2Id,\r\n label: \"rel-label\",\r\n } as any);\r\n assert.isTrue(Id64.isValidId64(relationshipId));\r\n });\r\n });\r\n\r\n after(() => {\r\n iModel.close();\r\n });\r\n\r\n it(\"getRuntimeClass resolves a runtime class by full class name and throws for unknown classes\", () => {\r\n const ecClass = getRuntimeClass(iModel, `${schemaName}:ReshaperAspect`);\r\n assert.equal(ecClass.name, \"ReshaperAspect\");\r\n assert.equal(ecClass.schema.name, schemaName);\r\n\r\n assert.throws(() => getRuntimeClass(iModel, `${schemaName}:DoesNotExist`), /Class not found/);\r\n });\r\n\r\n it(\"getRuntimeClass throws when the resolved schema item exists but isn't a class\", () => {\r\n assert.throws(() => getRuntimeClass(iModel, `${schemaName}:ReshaperNotAClass`), /Class not found/);\r\n });\r\n\r\n it(\"reshapeInstanceRow reshapes an ElementAspect row: system properties, points, struct, primitive array, point array, and struct array\", () => {\r\n const ecClass = getRuntimeClass(iModel, `${schemaName}:ReshaperAspect`);\r\n const row = iModel.withQueryReader(`SELECT * FROM ${schemaAlias}.ReshaperAspect WHERE ECInstanceId=:aspectId`, (reader) => {\r\n assert.isTrue(reader.step());\r\n return reader.current.toRow();\r\n }, new QueryBinder().bindId(\"aspectId\", aspectId), { rowFormat: QueryRowFormat.UseECSqlPropertyNames });\r\n\r\n const reshaped = reshapeInstanceRow(row, ecClass, iModel);\r\n\r\n // system properties: ECInstanceId -> id, ECClassId -> className (dot-separated)\r\n assert.equal(reshaped.id, aspectId);\r\n assert.equal(reshaped.className, `${schemaName}.ReshaperAspect`);\r\n\r\n // inherited navigation property from ElementUniqueAspect\r\n assert.deepEqual(reshaped.element, { id: element1Id, relClassName: \"BisCore.ElementOwnsUniqueAspect\" });\r\n\r\n // point2d property: first letter lowercased, X/Y -> x/y\r\n assert.deepEqual(reshaped.p2d, { x: 100, y: 200 });\r\n\r\n // point3d property: first letter lowercased, X/Y/Z -> x/y/z\r\n assert.deepEqual(reshaped.p3d, { x: 1, y: 2, z: 3 });\r\n\r\n // struct property: first letter lowercased, and its members recursively reshaped (including nested point)\r\n assert.deepEqual(reshaped.st, { label: \"struct-label\", p3d: { x: 4, y: 5, z: 6 } });\r\n\r\n // primitive (non-point) array: values pass through unchanged, only the key is lowercased\r\n assert.deepEqual(reshaped.arrayI, [10, 20, 30]);\r\n\r\n // point3d array: each scalar element reshaped like a standalone point, not just key-renamed\r\n assert.deepEqual(reshaped.arrayP3d, [{ x: 13, y: 14, z: 15 }, { x: 16, y: 17, z: 18 }]);\r\n\r\n // struct array: each element recursively reshaped like a standalone struct\r\n assert.deepEqual(reshaped.arraySt, [\r\n { label: \"arr-0\", p3d: { x: 7, y: 8, z: 9 } },\r\n { label: \"arr-1\", p3d: { x: 10, y: 11, z: 12 } },\r\n ]);\r\n });\r\n\r\n it(\"reshapeInstanceRow reshapes a Relationship row: source/target system properties and a primitive property\", () => {\r\n const ecClass = getRuntimeClass(iModel, `${schemaName}:ReshaperRelatesToElement`);\r\n const row = iModel.withQueryReader(`SELECT * FROM ${schemaAlias}.ReshaperRelatesToElement WHERE ECInstanceId=:relationshipId`, (reader) => {\r\n assert.isTrue(reader.step());\r\n return reader.current.toRow();\r\n }, new QueryBinder().bindId(\"relationshipId\", relationshipId), { rowFormat: QueryRowFormat.UseECSqlPropertyNames });\r\n\r\n const reshaped = reshapeInstanceRow(row, ecClass, iModel);\r\n\r\n assert.equal(reshaped.id, relationshipId);\r\n assert.equal(reshaped.className, `${schemaName}.ReshaperRelatesToElement`);\r\n assert.equal(reshaped.sourceId, element1Id);\r\n assert.equal(reshaped.sourceClassName, `${schemaName}.ReshaperElement`);\r\n assert.equal(reshaped.targetId, element2Id);\r\n assert.equal(reshaped.targetClassName, `${schemaName}.ReshaperElement`);\r\n assert.equal(reshaped.label, \"rel-label\");\r\n });\r\n\r\n it(\"reshapeInstanceRow omits null/undefined members instead of propagating them\", () => {\r\n const ecClass = getRuntimeClass(iModel, `${schemaName}:ReshaperAspect`);\r\n const row = { ECInstanceId: aspectId, P3d: null, St: undefined, ArrayI: [10, 20, 30] };\r\n\r\n const reshaped = reshapeInstanceRow(row, ecClass, iModel);\r\n\r\n assert.equal(reshaped.id, aspectId);\r\n assert.isUndefined(reshaped.p3d);\r\n assert.isUndefined(reshaped.st);\r\n assert.deepEqual(reshaped.arrayI, [10, 20, 30]);\r\n });\r\n\r\n it(\"reshapePropertyValue reshapes a single Point2d, Point3d, and struct property value in isolation\", () => {\r\n const ecClass = getRuntimeClass(iModel, `${schemaName}:ReshaperAspect`);\r\n const p2dProp = ecClass.getPropertySync(\"P2d\")!;\r\n const p3dProp = ecClass.getPropertySync(\"P3d\")!;\r\n const stProp = ecClass.getPropertySync(\"St\")!;\r\n assert.exists(p2dProp);\r\n assert.exists(p3dProp);\r\n assert.exists(stProp);\r\n\r\n assert.deepEqual(reshapePropertyValue({ X: 100, Y: 200 }, p2dProp, iModel), { x: 100, y: 200 });\r\n assert.deepEqual(reshapePropertyValue({ X: 1, Y: 2, Z: 3 }, p3dProp, iModel), { x: 1, y: 2, z: 3 });\r\n assert.deepEqual(\r\n reshapePropertyValue({ Label: \"hello\", P3d: { X: 1, Y: 2, Z: 3 } }, stProp, iModel),\r\n { label: \"hello\", p3d: { x: 1, y: 2, z: 3 } },\r\n );\r\n });\r\n\r\n it(\"reshapePropertyValue reshapes an array of Point3d scalars, not just a key rename\", () => {\r\n const ecClass = getRuntimeClass(iModel, `${schemaName}:ReshaperAspect`);\r\n const arrayP3dProp = ecClass.getPropertySync(\"ArrayP3d\")!;\r\n assert.exists(arrayP3dProp);\r\n assert.isTrue(arrayP3dProp.isArray());\r\n\r\n const reshaped = reshapePropertyValue([{ X: 13, Y: 14, Z: 15 }, { X: 16, Y: 17, Z: 18 }], arrayP3dProp, iModel);\r\n assert.deepEqual(reshaped, [{ x: 13, y: 14, z: 15 }, { x: 16, y: 17, z: 18 }]);\r\n });\r\n\r\n it(\"reshapePropertyValue reshapes a navigation property value into {id, relClassName}\", () => {\r\n const ecClass = getRuntimeClass(iModel, `${schemaName}:ReshaperAspect`);\r\n const elementProp = ecClass.getPropertySync(\"Element\")!;\r\n assert.exists(elementProp);\r\n assert.isTrue(elementProp.isNavigation());\r\n\r\n const row = iModel.withQueryReader(`SELECT Element FROM ${schemaAlias}.ReshaperAspect WHERE ECInstanceId=:aspectId`, (reader) => {\r\n assert.isTrue(reader.step());\r\n return reader.current.toRow();\r\n }, new QueryBinder().bindId(\"aspectId\", aspectId), { rowFormat: QueryRowFormat.UseECSqlPropertyNames });\r\n\r\n const reshaped = reshapePropertyValue(row.Element, elementProp, iModel);\r\n expect(reshaped).to.deep.equal({ id: element1Id, relClassName: \"BisCore.ElementOwnsUniqueAspect\" });\r\n });\r\n\r\n it(\"reshapePropertyValue falls back to the raw classId instead of throwing when a navigation property's relationship class can't be resolved\", () => {\r\n const ecClass = getRuntimeClass(iModel, `${schemaName}:ReshaperAspect`);\r\n const elementProp = ecClass.getPropertySync(\"Element\")!;\r\n assert.exists(elementProp);\r\n\r\n const unresolvableClassId = \"0xdeadbeef\";\r\n const reshaped = reshapePropertyValue({ Id: element1Id, RelECClassId: unresolvableClassId }, elementProp, iModel);\r\n assert.deepEqual(reshaped, { id: element1Id, relClassName: unresolvableClassId });\r\n });\r\n\r\n it(\"reshapePropertyValue omits relClassName entirely when a navigation property's relationship class Id is unset\", () => {\r\n const ecClass = getRuntimeClass(iModel, `${schemaName}:ReshaperAspect`);\r\n const elementProp = ecClass.getPropertySync(\"Element\")!;\r\n assert.exists(elementProp);\r\n\r\n const reshaped = reshapePropertyValue({ Id: element1Id, RelECClassId: undefined }, elementProp, iModel);\r\n assert.deepEqual(reshaped, { id: element1Id });\r\n assert.isFalse(\"relClassName\" in reshaped);\r\n });\r\n\r\n it(\"reshapeInstanceRow falls back to the raw classId instead of throwing when a system ECClassId column can't be resolved\", () => {\r\n const ecClass = getRuntimeClass(iModel, `${schemaName}:ReshaperAspect`);\r\n const unresolvableClassId = \"0xdeadbeef\";\r\n const reshaped = reshapeInstanceRow({ ECInstanceId: aspectId, ECClassId: unresolvableClassId }, ecClass, iModel);\r\n assert.equal(reshaped.id, aspectId);\r\n assert.equal(reshaped.className, unresolvableClassId);\r\n });\r\n\r\n it(\"reshapePropertyValue preserves a null/undefined struct-array element as an empty object, matching the native row adaptor\", () => {\r\n const ecClass = getRuntimeClass(iModel, `${schemaName}:ReshaperAspect`);\r\n const arrayStProp = ecClass.getPropertySync(\"ArraySt\")!;\r\n assert.exists(arrayStProp);\r\n\r\n // A null struct-array element is rendered by the native row adaptor as an empty object placeholder\r\n // (unlike primitive arrays, where null elements are dropped entirely), preserving the array's length\r\n // and the positions of surrounding elements. The underlying query reader already normalizes a null\r\n // struct-array element to `{}` before it reaches the reshaper, but the reshaper is also exercised\r\n // directly here against raw `null`/`undefined` inputs to keep it robust regardless of caller.\r\n const reshaped = reshapePropertyValue(\r\n [{ Label: \"arr-0\", P3d: { X: 1, Y: 2, Z: 3 } }, null, undefined, { Label: \"arr-3\", P3d: { X: 4, Y: 5, Z: 6 } }],\r\n arrayStProp,\r\n iModel,\r\n );\r\n assert.deepEqual(reshaped, [\r\n { label: \"arr-0\", p3d: { x: 1, y: 2, z: 3 } },\r\n {},\r\n {},\r\n { label: \"arr-3\", p3d: { x: 4, y: 5, z: 6 } },\r\n ]);\r\n });\r\n\r\n it(\"reshapePropertyValue drops null/undefined elements from a primitive array, matching the native row adaptor\", () => {\r\n const ecClass = getRuntimeClass(iModel, `${schemaName}:ReshaperAspect`);\r\n const arrayIProp = ecClass.getPropertySync(\"ArrayI\")!;\r\n assert.exists(arrayIProp);\r\n\r\n const reshaped = reshapePropertyValue([10, null, undefined, 30], arrayIProp, iModel);\r\n assert.deepEqual(reshaped, [10, 30]);\r\n });\r\n\r\n it(\"reshapeInstanceRow reshapes a row containing null array elements without throwing, matching the native row adaptor\", () => {\r\n const ecClass = getRuntimeClass(iModel, `${schemaName}:ReshaperAspect`);\r\n let probeAspectId: string;\r\n withEditTxn(iModel, (txn) => {\r\n probeAspectId = txn.insertAspect({\r\n classFullName: `${schemaName}:ReshaperAspect`,\r\n element: { id: element1Id },\r\n arrayI: [10, null, 30],\r\n arraySt: [{ label: \"a\" }, null, { label: \"c\" }],\r\n } as any);\r\n });\r\n const row = iModel.withQueryReader(`SELECT * FROM ${schemaAlias}.ReshaperAspect WHERE ECInstanceId=:id`, (reader) => {\r\n assert.isTrue(reader.step());\r\n return reader.current.toRow();\r\n }, new QueryBinder().bindId(\"id\", probeAspectId!), { rowFormat: QueryRowFormat.UseECSqlPropertyNames });\r\n\r\n const reshaped = reshapeInstanceRow(row, ecClass, iModel);\r\n assert.deepEqual(reshaped.arrayI, [10, 30]);\r\n assert.deepEqual(reshaped.arraySt, [{ label: \"a\" }, {}, { label: \"c\" }]);\r\n });\r\n\r\n it(\"reshapeInstanceRow omits a null struct member from a real queried row, matching the native row adaptor\", () => {\r\n const ecClass = getRuntimeClass(iModel, `${schemaName}:ReshaperAspect`);\r\n let probeAspectId: string;\r\n withEditTxn(iModel, (txn) => {\r\n probeAspectId = txn.insertAspect({\r\n classFullName: `${schemaName}:ReshaperAspect`,\r\n element: { id: element1Id },\r\n st: { label: null, p3d: { x: 1, y: 2, z: 3 } },\r\n } as any);\r\n });\r\n const row = iModel.withQueryReader(`SELECT * FROM ${schemaAlias}.ReshaperAspect WHERE ECInstanceId=:id`, (reader) => {\r\n assert.isTrue(reader.step());\r\n return reader.current.toRow();\r\n }, new QueryBinder().bindId(\"id\", probeAspectId!), { rowFormat: QueryRowFormat.UseECSqlPropertyNames });\r\n\r\n const reshaped = reshapeInstanceRow(row, ecClass, iModel);\r\n assert.isFalse(\"label\" in reshaped.st);\r\n assert.deepEqual(reshaped.st.p3d, { x: 1, y: 2, z: 3 });\r\n });\r\n\r\n it(\"reshapeInstanceRow passes through an aliased/computed column with only its key lowercased\", () => {\r\n const ecClass = getRuntimeClass(iModel, `${schemaName}:ReshaperAspect`);\r\n const row = iModel.withQueryReader(`SELECT *, 1+1 AS Foo FROM ${schemaAlias}.ReshaperAspect WHERE ECInstanceId=:aspectId`, (reader) => {\r\n assert.isTrue(reader.step());\r\n return reader.current.toRow();\r\n }, new QueryBinder().bindId(\"aspectId\", aspectId), { rowFormat: QueryRowFormat.UseECSqlPropertyNames });\r\n\r\n const reshaped = reshapeInstanceRow(row, ecClass, iModel);\r\n assert.equal(reshaped.foo, 2);\r\n });\r\n});\r\n"]}
1
+ {"version":3,"file":"ECSqlInstanceReshaper.test.js","sourceRoot":"","sources":["../../../../src/test/internal/ECSqlInstanceReshaper.test.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\nimport { assert, expect } from \"chai\";\nimport { Id64, Id64String } from \"@itwin/core-bentley\";\nimport { Code, IModel, QueryBinder, QueryRowFormat } from \"@itwin/core-common\";\nimport { withEditTxn } from \"../../EditTxn\";\nimport { getRuntimeClass, reshapeInstanceRow, reshapePropertyValue } from \"../../internal/ECSqlInstanceReshaper\";\nimport { IModelJsFs, SnapshotDb } from \"../../core-backend\";\nimport { IModelTestUtils } from \"../IModelTestUtils\";\n\n/* eslint-disable @typescript-eslint/naming-convention */\n\n// Direct unit tests for the ECSqlInstanceReshaper helper, which reshapes rows/values queried with the\n// non-deprecated QueryRowFormat.UseECSqlPropertyNames row format back into the legacy shape historically\n// produced by the deprecated QueryRowFormat.UseJsPropertyNames row format. These call the helper's exported\n// functions directly against real ECSQL rows, rather than only exercising them indirectly through\n// ElementAspect/Relationship/annotation field call sites (which are covered elsewhere).\ndescribe(\"ECSqlInstanceReshaper\", () => {\n const schemaName = \"ReshaperTest\";\n const schemaAlias = \"rst\";\n const subDirName = \"ECSqlInstanceReshaper\";\n\n let iModel: SnapshotDb;\n let element1Id: Id64String;\n let element2Id: Id64String;\n let aspectId: Id64String;\n let relationshipId: Id64String;\n\n before(async () => {\n const schema = `<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n <ECSchema schemaName=\"${schemaName}\" alias=\"${schemaAlias}\" version=\"01.00.00\" xmlns=\"http://www.bentley.com/schemas/Bentley.ECXML.3.2\">\n <ECSchemaReference name=\"BisCore\" version=\"01.00.04\" alias=\"bis\"/>\n <ECStructClass typeName=\"PointStruct\" modifier=\"None\">\n <ECProperty propertyName=\"Label\" typeName=\"string\"/>\n <ECProperty propertyName=\"P3d\" typeName=\"point3d\"/>\n </ECStructClass>\n <ECEntityClass typeName=\"ReshaperElement\" modifier=\"None\">\n <BaseClass>bis:DefinitionElement</BaseClass>\n </ECEntityClass>\n <ECEntityClass typeName=\"ReshaperAspect\" modifier=\"None\">\n <BaseClass>bis:ElementUniqueAspect</BaseClass>\n <ECProperty propertyName=\"P2d\" typeName=\"point2d\"/>\n <ECProperty propertyName=\"P3d\" typeName=\"point3d\"/>\n <ECStructProperty propertyName=\"St\" typeName=\"PointStruct\"/>\n <ECArrayProperty propertyName=\"ArrayI\" typeName=\"int\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n <ECArrayProperty propertyName=\"ArrayP3d\" typeName=\"point3d\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n <ECStructArrayProperty propertyName=\"ArraySt\" typeName=\"PointStruct\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n </ECEntityClass>\n <ECRelationshipClass typeName=\"ReshaperRelatesToElement\" strength=\"referencing\" modifier=\"Sealed\">\n <BaseClass>bis:ElementRefersToElements</BaseClass>\n <Source multiplicity=\"(0..*)\" roleLabel=\"refers to\" polymorphic=\"true\">\n <Class class=\"ReshaperElement\"/>\n </Source>\n <Target multiplicity=\"(0..*)\" roleLabel=\"is referenced by\" polymorphic=\"true\">\n <Class class=\"ReshaperElement\"/>\n </Target>\n <ECProperty propertyName=\"Label\" typeName=\"string\"/>\n </ECRelationshipClass>\n <ECEnumeration typeName=\"ReshaperNotAClass\" backingTypeName=\"int\" isStrict=\"true\">\n <ECEnumerator name=\"Value0\" value=\"0\"/>\n </ECEnumeration>\n </ECSchema>`;\n\n const testFileName = IModelTestUtils.prepareOutputFile(subDirName, \"ECSqlInstanceReshaper.bim\");\n const schemaPath = IModelTestUtils.prepareOutputFile(subDirName, `${schemaName}.01.00.00.xml`);\n IModelJsFs.writeFileSync(schemaPath, schema);\n\n iModel = SnapshotDb.createEmpty(testFileName, { rootSubject: { name: \"ECSqlInstanceReshaperTest\" } });\n await iModel.importSchemas([schemaPath]);\n\n withEditTxn(iModel, (txn) => {\n element1Id = txn.insertElement({\n classFullName: `${schemaName}:ReshaperElement`,\n model: IModel.dictionaryId,\n code: Code.createEmpty(),\n });\n element2Id = txn.insertElement({\n classFullName: `${schemaName}:ReshaperElement`,\n model: IModel.dictionaryId,\n code: Code.createEmpty(),\n });\n assert.isTrue(Id64.isValidId64(element1Id));\n assert.isTrue(Id64.isValidId64(element2Id));\n\n aspectId = txn.insertAspect({\n classFullName: `${schemaName}:ReshaperAspect`,\n element: { id: element1Id },\n p2d: { x: 100, y: 200 },\n p3d: { x: 1, y: 2, z: 3 },\n st: { label: \"struct-label\", p3d: { x: 4, y: 5, z: 6 } },\n arrayI: [10, 20, 30],\n arrayP3d: [{ x: 13, y: 14, z: 15 }, { x: 16, y: 17, z: 18 }],\n arraySt: [{ label: \"arr-0\", p3d: { x: 7, y: 8, z: 9 } }, { label: \"arr-1\", p3d: { x: 10, y: 11, z: 12 } }],\n } as any);\n assert.isTrue(Id64.isValidId64(aspectId));\n\n relationshipId = txn.insertRelationship({\n classFullName: `${schemaName}:ReshaperRelatesToElement`,\n sourceId: element1Id,\n targetId: element2Id,\n label: \"rel-label\",\n } as any);\n assert.isTrue(Id64.isValidId64(relationshipId));\n });\n });\n\n after(() => {\n iModel.close();\n });\n\n it(\"getRuntimeClass resolves a runtime class by full class name and throws for unknown classes\", () => {\n const ecClass = getRuntimeClass(iModel, `${schemaName}:ReshaperAspect`);\n assert.equal(ecClass.name, \"ReshaperAspect\");\n assert.equal(ecClass.schema.name, schemaName);\n\n assert.throws(() => getRuntimeClass(iModel, `${schemaName}:DoesNotExist`), /Class not found/);\n });\n\n it(\"getRuntimeClass throws when the resolved schema item exists but isn't a class\", () => {\n assert.throws(() => getRuntimeClass(iModel, `${schemaName}:ReshaperNotAClass`), /Class not found/);\n });\n\n it(\"reshapeInstanceRow reshapes an ElementAspect row: system properties, points, struct, primitive array, point array, and struct array\", () => {\n const ecClass = getRuntimeClass(iModel, `${schemaName}:ReshaperAspect`);\n const row = iModel.withQueryReader(`SELECT * FROM ${schemaAlias}.ReshaperAspect WHERE ECInstanceId=:aspectId`, (reader) => {\n assert.isTrue(reader.step());\n return reader.current.toRow();\n }, new QueryBinder().bindId(\"aspectId\", aspectId), { rowFormat: QueryRowFormat.UseECSqlPropertyNames });\n\n const reshaped = reshapeInstanceRow(row, ecClass, iModel);\n\n // system properties: ECInstanceId -> id, ECClassId -> className (dot-separated)\n assert.equal(reshaped.id, aspectId);\n assert.equal(reshaped.className, `${schemaName}.ReshaperAspect`);\n\n // inherited navigation property from ElementUniqueAspect\n assert.deepEqual(reshaped.element, { id: element1Id, relClassName: \"BisCore.ElementOwnsUniqueAspect\" });\n\n // point2d property: first letter lowercased, X/Y -> x/y\n assert.deepEqual(reshaped.p2d, { x: 100, y: 200 });\n\n // point3d property: first letter lowercased, X/Y/Z -> x/y/z\n assert.deepEqual(reshaped.p3d, { x: 1, y: 2, z: 3 });\n\n // struct property: first letter lowercased, and its members recursively reshaped (including nested point)\n assert.deepEqual(reshaped.st, { label: \"struct-label\", p3d: { x: 4, y: 5, z: 6 } });\n\n // primitive (non-point) array: values pass through unchanged, only the key is lowercased\n assert.deepEqual(reshaped.arrayI, [10, 20, 30]);\n\n // point3d array: each scalar element reshaped like a standalone point, not just key-renamed\n assert.deepEqual(reshaped.arrayP3d, [{ x: 13, y: 14, z: 15 }, { x: 16, y: 17, z: 18 }]);\n\n // struct array: each element recursively reshaped like a standalone struct\n assert.deepEqual(reshaped.arraySt, [\n { label: \"arr-0\", p3d: { x: 7, y: 8, z: 9 } },\n { label: \"arr-1\", p3d: { x: 10, y: 11, z: 12 } },\n ]);\n });\n\n it(\"reshapeInstanceRow reshapes a Relationship row: source/target system properties and a primitive property\", () => {\n const ecClass = getRuntimeClass(iModel, `${schemaName}:ReshaperRelatesToElement`);\n const row = iModel.withQueryReader(`SELECT * FROM ${schemaAlias}.ReshaperRelatesToElement WHERE ECInstanceId=:relationshipId`, (reader) => {\n assert.isTrue(reader.step());\n return reader.current.toRow();\n }, new QueryBinder().bindId(\"relationshipId\", relationshipId), { rowFormat: QueryRowFormat.UseECSqlPropertyNames });\n\n const reshaped = reshapeInstanceRow(row, ecClass, iModel);\n\n assert.equal(reshaped.id, relationshipId);\n assert.equal(reshaped.className, `${schemaName}.ReshaperRelatesToElement`);\n assert.equal(reshaped.sourceId, element1Id);\n assert.equal(reshaped.sourceClassName, `${schemaName}.ReshaperElement`);\n assert.equal(reshaped.targetId, element2Id);\n assert.equal(reshaped.targetClassName, `${schemaName}.ReshaperElement`);\n assert.equal(reshaped.label, \"rel-label\");\n });\n\n it(\"reshapeInstanceRow omits null/undefined members instead of propagating them\", () => {\n const ecClass = getRuntimeClass(iModel, `${schemaName}:ReshaperAspect`);\n const row = { ECInstanceId: aspectId, P3d: null, St: undefined, ArrayI: [10, 20, 30] };\n\n const reshaped = reshapeInstanceRow(row, ecClass, iModel);\n\n assert.equal(reshaped.id, aspectId);\n assert.isUndefined(reshaped.p3d);\n assert.isUndefined(reshaped.st);\n assert.deepEqual(reshaped.arrayI, [10, 20, 30]);\n });\n\n it(\"reshapePropertyValue reshapes a single Point2d, Point3d, and struct property value in isolation\", () => {\n const ecClass = getRuntimeClass(iModel, `${schemaName}:ReshaperAspect`);\n const p2dProp = ecClass.getPropertySync(\"P2d\")!;\n const p3dProp = ecClass.getPropertySync(\"P3d\")!;\n const stProp = ecClass.getPropertySync(\"St\")!;\n assert.exists(p2dProp);\n assert.exists(p3dProp);\n assert.exists(stProp);\n\n assert.deepEqual(reshapePropertyValue({ X: 100, Y: 200 }, p2dProp, iModel), { x: 100, y: 200 });\n assert.deepEqual(reshapePropertyValue({ X: 1, Y: 2, Z: 3 }, p3dProp, iModel), { x: 1, y: 2, z: 3 });\n assert.deepEqual(\n reshapePropertyValue({ Label: \"hello\", P3d: { X: 1, Y: 2, Z: 3 } }, stProp, iModel),\n { label: \"hello\", p3d: { x: 1, y: 2, z: 3 } },\n );\n });\n\n it(\"reshapePropertyValue reshapes an array of Point3d scalars, not just a key rename\", () => {\n const ecClass = getRuntimeClass(iModel, `${schemaName}:ReshaperAspect`);\n const arrayP3dProp = ecClass.getPropertySync(\"ArrayP3d\")!;\n assert.exists(arrayP3dProp);\n assert.isTrue(arrayP3dProp.isArray());\n\n const reshaped = reshapePropertyValue([{ X: 13, Y: 14, Z: 15 }, { X: 16, Y: 17, Z: 18 }], arrayP3dProp, iModel);\n assert.deepEqual(reshaped, [{ x: 13, y: 14, z: 15 }, { x: 16, y: 17, z: 18 }]);\n });\n\n it(\"reshapePropertyValue reshapes a navigation property value into {id, relClassName}\", () => {\n const ecClass = getRuntimeClass(iModel, `${schemaName}:ReshaperAspect`);\n const elementProp = ecClass.getPropertySync(\"Element\")!;\n assert.exists(elementProp);\n assert.isTrue(elementProp.isNavigation());\n\n const row = iModel.withQueryReader(`SELECT Element FROM ${schemaAlias}.ReshaperAspect WHERE ECInstanceId=:aspectId`, (reader) => {\n assert.isTrue(reader.step());\n return reader.current.toRow();\n }, new QueryBinder().bindId(\"aspectId\", aspectId), { rowFormat: QueryRowFormat.UseECSqlPropertyNames });\n\n const reshaped = reshapePropertyValue(row.Element, elementProp, iModel);\n expect(reshaped).to.deep.equal({ id: element1Id, relClassName: \"BisCore.ElementOwnsUniqueAspect\" });\n });\n\n it(\"reshapePropertyValue falls back to the raw classId instead of throwing when a navigation property's relationship class can't be resolved\", () => {\n const ecClass = getRuntimeClass(iModel, `${schemaName}:ReshaperAspect`);\n const elementProp = ecClass.getPropertySync(\"Element\")!;\n assert.exists(elementProp);\n\n const unresolvableClassId = \"0xdeadbeef\";\n const reshaped = reshapePropertyValue({ Id: element1Id, RelECClassId: unresolvableClassId }, elementProp, iModel);\n assert.deepEqual(reshaped, { id: element1Id, relClassName: unresolvableClassId });\n });\n\n it(\"reshapePropertyValue omits relClassName entirely when a navigation property's relationship class Id is unset\", () => {\n const ecClass = getRuntimeClass(iModel, `${schemaName}:ReshaperAspect`);\n const elementProp = ecClass.getPropertySync(\"Element\")!;\n assert.exists(elementProp);\n\n const reshaped = reshapePropertyValue({ Id: element1Id, RelECClassId: undefined }, elementProp, iModel);\n assert.deepEqual(reshaped, { id: element1Id });\n assert.isFalse(\"relClassName\" in reshaped);\n });\n\n it(\"reshapeInstanceRow falls back to the raw classId instead of throwing when a system ECClassId column can't be resolved\", () => {\n const ecClass = getRuntimeClass(iModel, `${schemaName}:ReshaperAspect`);\n const unresolvableClassId = \"0xdeadbeef\";\n const reshaped = reshapeInstanceRow({ ECInstanceId: aspectId, ECClassId: unresolvableClassId }, ecClass, iModel);\n assert.equal(reshaped.id, aspectId);\n assert.equal(reshaped.className, unresolvableClassId);\n });\n\n it(\"reshapePropertyValue preserves a null/undefined struct-array element as an empty object, matching the native row adaptor\", () => {\n const ecClass = getRuntimeClass(iModel, `${schemaName}:ReshaperAspect`);\n const arrayStProp = ecClass.getPropertySync(\"ArraySt\")!;\n assert.exists(arrayStProp);\n\n // A null struct-array element is rendered by the native row adaptor as an empty object placeholder\n // (unlike primitive arrays, where null elements are dropped entirely), preserving the array's length\n // and the positions of surrounding elements. The underlying query reader already normalizes a null\n // struct-array element to `{}` before it reaches the reshaper, but the reshaper is also exercised\n // directly here against raw `null`/`undefined` inputs to keep it robust regardless of caller.\n const reshaped = reshapePropertyValue(\n [{ Label: \"arr-0\", P3d: { X: 1, Y: 2, Z: 3 } }, null, undefined, { Label: \"arr-3\", P3d: { X: 4, Y: 5, Z: 6 } }],\n arrayStProp,\n iModel,\n );\n assert.deepEqual(reshaped, [\n { label: \"arr-0\", p3d: { x: 1, y: 2, z: 3 } },\n {},\n {},\n { label: \"arr-3\", p3d: { x: 4, y: 5, z: 6 } },\n ]);\n });\n\n it(\"reshapePropertyValue drops null/undefined elements from a primitive array, matching the native row adaptor\", () => {\n const ecClass = getRuntimeClass(iModel, `${schemaName}:ReshaperAspect`);\n const arrayIProp = ecClass.getPropertySync(\"ArrayI\")!;\n assert.exists(arrayIProp);\n\n const reshaped = reshapePropertyValue([10, null, undefined, 30], arrayIProp, iModel);\n assert.deepEqual(reshaped, [10, 30]);\n });\n\n it(\"reshapeInstanceRow reshapes a row containing null array elements without throwing, matching the native row adaptor\", () => {\n const ecClass = getRuntimeClass(iModel, `${schemaName}:ReshaperAspect`);\n let probeAspectId: string;\n withEditTxn(iModel, (txn) => {\n probeAspectId = txn.insertAspect({\n classFullName: `${schemaName}:ReshaperAspect`,\n element: { id: element1Id },\n arrayI: [10, null, 30],\n arraySt: [{ label: \"a\" }, null, { label: \"c\" }],\n } as any);\n });\n const row = iModel.withQueryReader(`SELECT * FROM ${schemaAlias}.ReshaperAspect WHERE ECInstanceId=:id`, (reader) => {\n assert.isTrue(reader.step());\n return reader.current.toRow();\n }, new QueryBinder().bindId(\"id\", probeAspectId!), { rowFormat: QueryRowFormat.UseECSqlPropertyNames });\n\n const reshaped = reshapeInstanceRow(row, ecClass, iModel);\n assert.deepEqual(reshaped.arrayI, [10, 30]);\n assert.deepEqual(reshaped.arraySt, [{ label: \"a\" }, {}, { label: \"c\" }]);\n });\n\n it(\"reshapeInstanceRow omits a null struct member from a real queried row, matching the native row adaptor\", () => {\n const ecClass = getRuntimeClass(iModel, `${schemaName}:ReshaperAspect`);\n let probeAspectId: string;\n withEditTxn(iModel, (txn) => {\n probeAspectId = txn.insertAspect({\n classFullName: `${schemaName}:ReshaperAspect`,\n element: { id: element1Id },\n st: { label: null, p3d: { x: 1, y: 2, z: 3 } },\n } as any);\n });\n const row = iModel.withQueryReader(`SELECT * FROM ${schemaAlias}.ReshaperAspect WHERE ECInstanceId=:id`, (reader) => {\n assert.isTrue(reader.step());\n return reader.current.toRow();\n }, new QueryBinder().bindId(\"id\", probeAspectId!), { rowFormat: QueryRowFormat.UseECSqlPropertyNames });\n\n const reshaped = reshapeInstanceRow(row, ecClass, iModel);\n assert.isFalse(\"label\" in reshaped.st);\n assert.deepEqual(reshaped.st.p3d, { x: 1, y: 2, z: 3 });\n });\n\n it(\"reshapeInstanceRow passes through an aliased/computed column with only its key lowercased\", () => {\n const ecClass = getRuntimeClass(iModel, `${schemaName}:ReshaperAspect`);\n const row = iModel.withQueryReader(`SELECT *, 1+1 AS Foo FROM ${schemaAlias}.ReshaperAspect WHERE ECInstanceId=:aspectId`, (reader) => {\n assert.isTrue(reader.step());\n return reader.current.toRow();\n }, new QueryBinder().bindId(\"aspectId\", aspectId), { rowFormat: QueryRowFormat.UseECSqlPropertyNames });\n\n const reshaped = reshapeInstanceRow(row, ecClass, iModel);\n assert.equal(reshaped.foo, 2);\n });\n});\n"]}