@itwin/core-backend 5.13.0-dev.12 → 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 (454) 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.js.map +1 -1
  358. package/lib/esm/test/imodel/IModelElements.test.js.map +1 -1
  359. package/lib/esm/test/imodel/IModelGeolocation.test.js.map +1 -1
  360. package/lib/esm/test/imodel/IModelLifecycle.test.js.map +1 -1
  361. package/lib/esm/test/imodel/IModelMetadata.test.js.map +1 -1
  362. package/lib/esm/test/imodel/IModelModels.test.js.map +1 -1
  363. package/lib/esm/test/imodel/IModelRelationships.test.js +44 -44
  364. package/lib/esm/test/imodel/IModelRelationships.test.js.map +1 -1
  365. package/lib/esm/test/imodel/IModelTestFixtures.js.map +1 -1
  366. package/lib/esm/test/imodel/IModelViews.test.js.map +1 -1
  367. package/lib/esm/test/imodel/ProjectExtents.test.js.map +1 -1
  368. package/lib/esm/test/imodel/SchemaXmlImport.test.js +21 -21
  369. package/lib/esm/test/imodel/SchemaXmlImport.test.js.map +1 -1
  370. package/lib/esm/test/incrementalSchemaLocater/ECSqlQueries.test.js.map +1 -1
  371. package/lib/esm/test/incrementalSchemaLocater/IncrementalLoading.test.js.map +1 -1
  372. package/lib/esm/test/incrementalSchemaLocater/TestContext.js.map +1 -1
  373. package/lib/esm/test/index.js.map +1 -1
  374. package/lib/esm/test/internal/ECSqlInstanceReshaper.test.js +32 -32
  375. package/lib/esm/test/internal/ECSqlInstanceReshaper.test.js.map +1 -1
  376. package/lib/esm/test/misc/DevTools.test.js.map +1 -1
  377. package/lib/esm/test/misc/EntitySubClasses.test.js.map +1 -1
  378. package/lib/esm/test/misc/PromiseMemoizer.test.js.map +1 -1
  379. package/lib/esm/test/native/DgnDbWorker.test.js.map +1 -1
  380. package/lib/esm/test/rpc/response.test.js.map +1 -1
  381. package/lib/esm/test/schema/ClassRegistry.test.js +99 -99
  382. package/lib/esm/test/schema/ClassRegistry.test.js.map +1 -1
  383. package/lib/esm/test/schema/FunctionalDomain.test.js.map +1 -1
  384. package/lib/esm/test/schema/GenericDomain.test.js.map +1 -1
  385. package/lib/esm/test/schema/IModelSchemaContext.test.js +9 -9
  386. package/lib/esm/test/schema/IModelSchemaContext.test.js.map +1 -1
  387. package/lib/esm/test/schema/SchemaImportCallbacks.test.js +19 -19
  388. package/lib/esm/test/schema/SchemaImportCallbacks.test.js.map +1 -1
  389. package/lib/esm/test/schema/SchemaViewFragmentLoading.test.js +21 -21
  390. package/lib/esm/test/schema/SchemaViewFragmentLoading.test.js.map +1 -1
  391. package/lib/esm/test/schema/SchemaViewHidden.test.js +109 -109
  392. package/lib/esm/test/schema/SchemaViewHidden.test.js.map +1 -1
  393. package/lib/esm/test/schema/SchemaViewKoQ.test.js +13 -13
  394. package/lib/esm/test/schema/SchemaViewKoQ.test.js.map +1 -1
  395. package/lib/esm/test/schema/SchemaViewLifecycle.test.js +15 -15
  396. package/lib/esm/test/schema/SchemaViewLifecycle.test.js.map +1 -1
  397. package/lib/esm/test/schema/SchemaViewValidation.test.js +8 -8
  398. package/lib/esm/test/schema/SchemaViewValidation.test.js.map +1 -1
  399. package/lib/esm/test/sheetindex/SheetIndex.test.js.map +1 -1
  400. package/lib/esm/test/standalone/ChangeElementParentModel.test.js.map +1 -1
  401. package/lib/esm/test/standalone/ChangeMerge.test.js.map +1 -1
  402. package/lib/esm/test/standalone/ChangesetReader.test.js +313 -313
  403. package/lib/esm/test/standalone/ChangesetReader.test.js.map +1 -1
  404. package/lib/esm/test/standalone/CloudSqlite.test.js.map +1 -1
  405. package/lib/esm/test/standalone/CustomViewState3dCreator.test.js.map +1 -1
  406. package/lib/esm/test/standalone/DeleteElements.test.js.map +1 -1
  407. package/lib/esm/test/standalone/DisplayStyle.test.js.map +1 -1
  408. package/lib/esm/test/standalone/Drawing.test.js.map +1 -1
  409. package/lib/esm/test/standalone/EditTxn.test.js.map +1 -1
  410. package/lib/esm/test/standalone/ElementGraphics.test.js.map +1 -1
  411. package/lib/esm/test/standalone/ElementMesh.test.js.map +1 -1
  412. package/lib/esm/test/standalone/ExportGraphics.test.js +14 -14
  413. package/lib/esm/test/standalone/ExportGraphics.test.js.map +1 -1
  414. package/lib/esm/test/standalone/GeometryChangeEvents.test.js.map +1 -1
  415. package/lib/esm/test/standalone/GeometryStream.test.js.map +1 -1
  416. package/lib/esm/test/standalone/HubMock.test.js.map +1 -1
  417. package/lib/esm/test/standalone/IModelLimits.test.js.map +1 -1
  418. package/lib/esm/test/standalone/IModelWrite.test.js +27 -27
  419. package/lib/esm/test/standalone/IModelWrite.test.js.map +1 -1
  420. package/lib/esm/test/standalone/ITwinWorkspace.test.js.map +1 -1
  421. package/lib/esm/test/standalone/InlineGeometryPartReferences.test.js.map +1 -1
  422. package/lib/esm/test/standalone/IntegrityCheck.test.js.map +1 -1
  423. package/lib/esm/test/standalone/MergeConflict.test.js.map +1 -1
  424. package/lib/esm/test/standalone/NativeAppStorage.test.js.map +1 -1
  425. package/lib/esm/test/standalone/RenderMaterialElement.test.js.map +1 -1
  426. package/lib/esm/test/standalone/RenderTimeline.test.js.map +1 -1
  427. package/lib/esm/test/standalone/SQLiteDb.test.js.map +1 -1
  428. package/lib/esm/test/standalone/SQliteChangesetReaderAndChangesetECAdaptor.test.js +135 -135
  429. package/lib/esm/test/standalone/SQliteChangesetReaderAndChangesetECAdaptor.test.js.map +1 -1
  430. package/lib/esm/test/standalone/SchemaUtils.test.js.map +1 -1
  431. package/lib/esm/test/standalone/SectionDrawing.test.js.map +1 -1
  432. package/lib/esm/test/standalone/ServerBasedLocks.test.js.map +1 -1
  433. package/lib/esm/test/standalone/Setting.test.js.map +1 -1
  434. package/lib/esm/test/standalone/Settings.test.js.map +1 -1
  435. package/lib/esm/test/standalone/SettingsSchemas.test.js.map +1 -1
  436. package/lib/esm/test/standalone/SnapshotDb.test.js.map +1 -1
  437. package/lib/esm/test/standalone/StandaloneDb.test.js +20 -20
  438. package/lib/esm/test/standalone/StandaloneDb.test.js.map +1 -1
  439. package/lib/esm/test/standalone/Texture.test.js.map +1 -1
  440. package/lib/esm/test/standalone/TileCache.test.js.map +1 -1
  441. package/lib/esm/test/standalone/TileTree.test.js.map +1 -1
  442. package/lib/esm/test/standalone/TxnManager.test.js.map +1 -1
  443. package/lib/esm/test/standalone/ViewDefinition.test.js.map +1 -1
  444. package/lib/esm/test/standalone/ViewStoreDb.test.js.map +1 -1
  445. package/lib/esm/test/standalone/Workspace.test.js.map +1 -1
  446. package/lib/esm/test/standalone/iModelDb.test.js.map +1 -1
  447. package/lib/esm/test/workspace/SettingsDb.test.js.map +1 -1
  448. package/lib/esm/workspace/Settings.js.map +1 -1
  449. package/lib/esm/workspace/SettingsDb.js.map +1 -1
  450. package/lib/esm/workspace/SettingsEditor.js.map +1 -1
  451. package/lib/esm/workspace/SettingsSchemas.js.map +1 -1
  452. package/lib/esm/workspace/Workspace.js.map +1 -1
  453. package/lib/esm/workspace/WorkspaceEditor.js.map +1 -1
  454. package/package.json +13 -13
@@ -1 +1 @@
1
- {"version":3,"file":"IModelMetadata.test.js","sourceRoot":"","sources":["../../../../src/test/imodel/IModelMetadata.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 } from \"@itwin/core-bentley\";\r\nimport { BisCodeSpec, Code, CodeScopeSpec, CodeSpec, FontMap, FontType, IModel } from \"@itwin/core-common\";\r\nimport { CustomAttributeClass, EntityClass, PrimitiveArrayProperty, PrimitiveOrEnumPropertyBase, PropertyType, propertyTypeToString, SchemaItemType } from \"@itwin/ecschema-metadata\";\r\nimport { EditTxn, withEditTxn } from \"../../EditTxn\";\r\nimport { BisCoreSchema, Category, ClassRegistry, Element, SnapshotDb } from \"../../core-backend\";\r\nimport { IModelTestUtils } from \"../IModelTestUtils\";\r\nimport { TestUtils } from \"../TestUtils\";\r\nimport { closeIfOpen, createIModelFromSeed, createMutableIModelTracker, importTestBim, openReadonlySeedCopy } from \"./IModelTestFixtures\";\r\n\r\n\r\ndescribe(\"iModel metadata and schemas\", () => {\r\n let testBimReadonly: SnapshotDb;\r\n let compatibilityReadonly: SnapshotDb;\r\n const { trackMutableIModel, closeTrackedIModels } = createMutableIModelTracker();\r\n\r\n before(async () => {\r\n await TestUtils.startBackend();\r\n IModelTestUtils.registerTestBimSchema();\r\n\r\n testBimReadonly = await openReadonlySeedCopy(\"metadata-test.bim\", \"test.bim\", { importTestBim: true });\r\n compatibilityReadonly = await openReadonlySeedCopy(\"metadata-CompatibilityTestSeed.bim\", \"CompatibilityTestSeed.bim\");\r\n });\r\n\r\n after(() => {\r\n closeIfOpen(testBimReadonly, compatibilityReadonly);\r\n closeTrackedIModels();\r\n });\r\n\r\n afterEach(() => {\r\n closeTrackedIModels();\r\n });\r\n\r\n function checkElementMetaData(entityClass: EntityClass) {\r\n assert.isNotNull(entityClass);\r\n assert.equal(entityClass.fullName, Element.classFullName.replace(\":\", \".\"));\r\n assert.isUndefined(entityClass.baseClass);\r\n\r\n let foundClassHasHandler = false;\r\n let foundClassHasCurrentTimeStampProperty = false;\r\n if (entityClass.customAttributes !== undefined) {\r\n if (entityClass.customAttributes.has(\"BisCore.ClassHasHandler\"))\r\n foundClassHasHandler = true;\r\n if (entityClass.customAttributes.has(\"CoreCustomAttributes.ClassHasCurrentTimeStampProperty\"))\r\n foundClassHasCurrentTimeStampProperty = true;\r\n }\r\n assert.isTrue(foundClassHasHandler);\r\n assert.isTrue(foundClassHasCurrentTimeStampProperty);\r\n const federationGuid = entityClass.getPropertySync(\"federationGuid\", false);\r\n if (federationGuid !== undefined) {\r\n assert.isTrue(federationGuid.isPrimitive());\r\n assert.equal(federationGuid.propertyType, PropertyType.Binary);\r\n assert.equal((federationGuid as PrimitiveOrEnumPropertyBase).extendedTypeName, \"BeGuid\");\r\n }\r\n }\r\n\r\n function checkClassHasHandlerMetaData(classToCheck: CustomAttributeClass) {\r\n assert.isDefined(classToCheck);\r\n\r\n const propertiesArray = Array.from(classToCheck.getPropertiesSync(true));\r\n assert.equal(propertiesArray.length, 1);\r\n\r\n const restrictionProperty = propertiesArray[0];\r\n assert.isDefined(restrictionProperty);\r\n assert.equal(restrictionProperty.name, \"Restrictions\");\r\n assert.equal(propertyTypeToString(restrictionProperty.propertyType), \"PrimitiveArrayProperty\");\r\n assert.equal((restrictionProperty as PrimitiveArrayProperty).minOccurs, 0);\r\n }\r\n\r\n it(\"should use schema to look up classes by name\", () => {\r\n const elementClass = ClassRegistry.findRegisteredClass(Element.classFullName);\r\n const categoryClass = ClassRegistry.findRegisteredClass(Category.classFullName);\r\n assert.isDefined(elementClass);\r\n assert.isDefined(categoryClass);\r\n assert.equal(elementClass!.schema, BisCoreSchema);\r\n assert.equal(categoryClass!.schema, BisCoreSchema);\r\n assert.equal(elementClass!.className, \"Element\");\r\n assert.equal(categoryClass!.className, \"Category\");\r\n });\r\n\r\n it(\"Fonts\", async () => {\r\n const imodel1 = trackMutableIModel(await importTestBim(createIModelFromSeed(\"metadata-fonts.bim\", \"test.bim\")));\r\n const dbFonts = imodel1.fonts;\r\n expect(Array.from(dbFonts.queryMappedFamilies({ includeNonEmbedded: true })).length).to.equal(4);\r\n expect(dbFonts.findDescriptor(1)).to.deep.equal({ name: \"Arial\", type: FontType.TrueType });\r\n expect(dbFonts.findId({ name: \"Arial\" })).to.equal(1);\r\n expect(dbFonts.findId({ name: \"arial\" })).to.equal(1);\r\n\r\n expect(dbFonts.findDescriptor(2)).to.deep.equal({ name: \"Font0\", type: FontType.Rsc });\r\n expect(dbFonts.findId({ name: \"Font0\" })).to.equal(2);\r\n expect(dbFonts.findId({ name: \"fOnt0\" })).to.equal(2);\r\n\r\n expect(dbFonts.findDescriptor(3)).to.deep.equal({ name: \"ShxFont0\", type: FontType.Shx });\r\n expect(dbFonts.findId({ name: \"ShxFont0\" })).to.equal(3);\r\n expect(dbFonts.findId({ name: \"shxfont0\" })).to.equal(3);\r\n\r\n expect(dbFonts.findDescriptor(4)).to.deep.equal({ name: \"Calibri\", type: FontType.TrueType });\r\n expect(dbFonts.findId({ name: \"Calibri\" })).to.equal(4);\r\n expect(dbFonts.findId({ name: \"cAlIbRi\" })).to.equal(4);\r\n\r\n expect(dbFonts.findId({ name: \"notfound\" })).to.be.undefined;\r\n\r\n const fonts1 = imodel1.fontMap; // eslint-disable-line @typescript-eslint/no-deprecated\r\n assert.equal(fonts1.fonts.size, 4, \"font map size should be 4\");\r\n assert.equal(FontType.TrueType, fonts1.getFont(1)!.type, \"get font 1 type is TrueType\");\r\n assert.equal(\"Arial\", fonts1.getFont(1)!.name, \"get Font 1 name\");\r\n assert.equal(1, fonts1.getFont(\"Arial\")!.id, \"get Font 1, by name\");\r\n assert.equal(1, fonts1.getFont(\"arial\")!.id, \"get Font 1, by name case insensitive\");\r\n\r\n assert.equal(FontType.Rsc, fonts1.getFont(2)!.type, \"get font 2 type is Rsc\");\r\n assert.equal(\"Font0\", fonts1.getFont(2)!.name, \"get Font 2 name\");\r\n assert.equal(2, fonts1.getFont(\"Font0\")!.id, \"get Font 2, by name\");\r\n assert.equal(2, fonts1.getFont(\"fOnt0\")!.id, \"get Font 2, by name case insensitive\");\r\n\r\n assert.equal(FontType.Shx, fonts1.getFont(3)!.type, \"get font 1 type is Shx\");\r\n assert.equal(\"ShxFont0\", fonts1.getFont(3)!.name, \"get Font 3 name\");\r\n assert.equal(3, fonts1.getFont(\"ShxFont0\")!.id, \"get Font 3, by name\");\r\n assert.equal(3, fonts1.getFont(\"shxfont0\")!.id, \"get Font 3, by name case insensitive\");\r\n\r\n assert.equal(FontType.TrueType, fonts1.getFont(4)!.type, \"get font 4 type is TrueType\");\r\n assert.equal(\"Calibri\", fonts1.getFont(4)!.name, \"get Font 4 name\");\r\n assert.equal(4, fonts1.getFont(\"Calibri\")!.id, \"get Font 4, by name\");\r\n assert.equal(4, fonts1.getFont(\"cAlIbRi\")!.id, \"get Font 4, by name case insensitive\");\r\n\r\n assert.isUndefined(fonts1.getFont(\"notfound\"), \"attempt lookup of a font that should not be found\");\r\n\r\n assert.deepEqual(new FontMap(fonts1.toJSON()), fonts1, \"toJSON on FontMap\"); // eslint-disable-line @typescript-eslint/no-deprecated\r\n });\r\n\r\n it(\"should get metadata for a relationship\", async () => {\r\n const imodelPath = IModelTestUtils.prepareOutputFile(\"IModel\", \"metadata-relationshipMetadata.bim\");\r\n const imodel = trackMutableIModel(SnapshotDb.createEmpty(imodelPath, { rootSubject: { name: \"relationshipMetadata\" } }));\r\n\r\n await withEditTxn(imodel, async (txn) => {\r\n const partitionId = txn.insertElement({\r\n classFullName: \"BisCore:PhysicalPartition\",\r\n model: IModel.repositoryModelId,\r\n parent: {\r\n relClassName: \"BisCore:SubjectOwnsPartitionElements\",\r\n id: IModel.rootSubjectId,\r\n },\r\n code: new Code({\r\n spec: imodel.codeSpecs.getByName(BisCodeSpec.informationPartitionElement).id,\r\n scope: IModel.rootSubjectId,\r\n value: \"physical model\",\r\n }),\r\n });\r\n\r\n for await (const row of imodel.createQueryReader(`SELECT * FROM bis.Element LIMIT ${1}`)) {\r\n const relId = txn.insertRelationship({\r\n classFullName: \"BisCore:ElementHasLinks\",\r\n sourceId: partitionId,\r\n targetId: row.ECInstanceId,\r\n });\r\n const relationship = imodel.relationships.getInstance(\"BisCore:ElementHasLinks\", relId);\r\n // eslint-disable-next-line @typescript-eslint/no-deprecated\r\n const metadata = await relationship.getMetaData();\r\n assert.isDefined(metadata, \"metadata should be defined\");\r\n }\r\n });\r\n });\r\n\r\n it(\"should get metadata for class\", () => {\r\n const imodel1 = testBimReadonly;\r\n const metaData = imodel1.schemaContext.getSchemaItemSync(Element.classFullName, EntityClass);\r\n assert.exists(metaData);\r\n if (metaData !== undefined)\r\n checkElementMetaData(metaData);\r\n });\r\n\r\n it(\"should iterate through metadata for a relationship\", async () => {\r\n const imodelPath = IModelTestUtils.prepareOutputFile(\"IModel\", \"metadata-relationshipMetadata-iterate.bim\");\r\n const imodel = trackMutableIModel(SnapshotDb.createEmpty(imodelPath, { rootSubject: { name: \"relationshipMetadata\" } }));\r\n\r\n await withEditTxn(imodel, async (txn) => {\r\n const partitionId = txn.insertElement({\r\n classFullName: \"BisCore:PhysicalPartition\",\r\n model: IModel.repositoryModelId,\r\n parent: {\r\n relClassName: \"BisCore:SubjectOwnsPartitionElements\",\r\n id: IModel.rootSubjectId,\r\n },\r\n code: new Code({\r\n spec: imodel.codeSpecs.getByName(BisCodeSpec.informationPartitionElement).id,\r\n scope: IModel.rootSubjectId,\r\n value: \"physical model\",\r\n }),\r\n });\r\n\r\n for await (const row of imodel.createQueryReader(`SELECT * FROM bis.Element LIMIT ${1}`)) {\r\n const relId = txn.insertRelationship({\r\n classFullName: \"BisCore:ElementHasLinks\",\r\n sourceId: partitionId,\r\n targetId: row.ECInstanceId,\r\n });\r\n const relationship = imodel.relationships.getInstance(\"BisCore:ElementHasLinks\", relId);\r\n // eslint-disable-next-line @typescript-eslint/no-deprecated\r\n relationship.forEach((propName, propMeta) => {\r\n assert.isDefined(propName, \"Property name should be defined\");\r\n assert.isDefined(propMeta, \"Property metadata should be defined\");\r\n });\r\n }\r\n });\r\n });\r\n\r\n it(\"should get metadata for CA class just as well (and we'll see a array-typed property)\", () => {\r\n const imodel1 = testBimReadonly;\r\n const metaData = imodel1.schemaContext.getSchemaItemSync(\"BisCore.ClassHasHandler\", CustomAttributeClass);\r\n assert.exists(metaData);\r\n if (metaData !== undefined) {\r\n assert.equal(metaData.schemaItemType, SchemaItemType.CustomAttributeClass);\r\n checkClassHasHandlerMetaData(metaData);\r\n }\r\n });\r\n\r\n it(\"validate BisCodeSpecs\", async () => {\r\n const imodel2 = compatibilityReadonly;\r\n assert.equal(imodel2.codeSpecs.getByName(BisCodeSpec.nullCodeSpec).scopeType, CodeScopeSpec.Type.Repository);\r\n assert.equal(imodel2.codeSpecs.getByName(BisCodeSpec.subCategory).scopeType, CodeScopeSpec.Type.ParentElement);\r\n assert.equal(imodel2.codeSpecs.getByName(BisCodeSpec.viewDefinition).scopeType, CodeScopeSpec.Type.Model);\r\n assert.equal(imodel2.codeSpecs.getByName(BisCodeSpec.subject).scopeReq, CodeScopeSpec.ScopeRequirement.ElementId);\r\n });\r\n\r\n it(\"should create and insert CodeSpecs\", () => {\r\n const testImodel = trackMutableIModel(createIModelFromSeed(\"metadata-create-CodeSpecs.bim\", \"CompatibilityTestSeed.bim\"));\r\n const txn = new EditTxn(testImodel, \"create and insert CodeSpecs\");\r\n txn.start();\r\n const codeSpec = CodeSpec.create(testImodel, \"CodeSpec1\", CodeScopeSpec.Type.Model);\r\n const codeSpecId = testImodel.codeSpecs.insert(txn, codeSpec); // throws in case of error\r\n assert.deepEqual(codeSpecId, codeSpec.id);\r\n assert.equal(codeSpec.scopeType, CodeScopeSpec.Type.Model);\r\n assert.equal(codeSpec.scopeReq, CodeScopeSpec.ScopeRequirement.ElementId);\r\n\r\n // Should not be able to insert a duplicate.\r\n const codeSpecDup = CodeSpec.create(testImodel, \"CodeSpec1\", CodeScopeSpec.Type.Model);\r\n assert.throws(() => testImodel.codeSpecs.insert(txn, codeSpecDup), \"CodeSpec already exists\");\r\n\r\n // We should be able to insert another CodeSpec with a different name.\r\n const codeSpec2 = CodeSpec.create(testImodel, \"CodeSpec2\", CodeScopeSpec.Type.Model, CodeScopeSpec.ScopeRequirement.FederationGuid);\r\n const codeSpec2Id = testImodel.codeSpecs.insert(txn, codeSpec2); // throws in case of error\r\n assert.deepEqual(codeSpec2Id, codeSpec2.id);\r\n assert.notDeepEqual(codeSpec2Id, codeSpecId);\r\n\r\n // make sure CodeScopeSpec.Type.Repository works\r\n const codeSpec3 = CodeSpec.create(testImodel, \"CodeSpec3\", CodeScopeSpec.Type.Repository, CodeScopeSpec.ScopeRequirement.FederationGuid);\r\n const codeSpec3Id = testImodel.codeSpecs.insert(txn, codeSpec3); // throws in case of error\r\n assert.notDeepEqual(codeSpec2Id, codeSpec3Id);\r\n\r\n const codeSpec4 = testImodel.codeSpecs.getById(codeSpec3Id);\r\n codeSpec4.name = \"CodeSpec4\";\r\n const codeSpec4Id = testImodel.codeSpecs.insert(txn, codeSpec4); // throws in case of error\r\n assert.notDeepEqual(codeSpec3Id, codeSpec4Id);\r\n assert.equal(codeSpec4.scopeType, CodeScopeSpec.Type.Repository);\r\n assert.equal(codeSpec4.scopeReq, CodeScopeSpec.ScopeRequirement.FederationGuid);\r\n const copyOfCodeSpec4 = testImodel.codeSpecs.getById(codeSpec4Id);\r\n assert.deepEqual(codeSpec4, copyOfCodeSpec4);\r\n\r\n assert.isTrue(testImodel.codeSpecs.hasName(\"CodeSpec1\"));\r\n assert.isTrue(testImodel.codeSpecs.hasName(\"CodeSpec2\"));\r\n assert.isTrue(testImodel.codeSpecs.hasName(\"CodeSpec3\"));\r\n assert.isTrue(testImodel.codeSpecs.hasName(\"CodeSpec4\"));\r\n assert.isFalse(testImodel.codeSpecs.hasName(\"CodeSpec5\"));\r\n\r\n assert.isTrue(testImodel.codeSpecs.hasId(codeSpec.id));\r\n assert.isTrue(testImodel.codeSpecs.hasId(codeSpec2.id));\r\n assert.isTrue(testImodel.codeSpecs.hasId(codeSpec3.id));\r\n assert.isTrue(testImodel.codeSpecs.hasId(codeSpec4.id));\r\n assert.isFalse(testImodel.codeSpecs.hasId(Id64.invalid));\r\n txn.end();\r\n });\r\n\r\n it(\"validate CodeSpec properties\", async () => {\r\n const iModelFileName: string = IModelTestUtils.prepareOutputFile(\"IModel\", \"metadata-ReadWriteCodeSpec.bim\");\r\n const codeSpecName = \"CodeSpec1\";\r\n\r\n // Write new CodeSpec to iModel\r\n if (true) {\r\n const iModelDb = trackMutableIModel(IModelTestUtils.createSnapshotFromSeed(iModelFileName, IModelTestUtils.resolveAssetFile(\"CompatibilityTestSeed.bim\")));\r\n const codeSpec = CodeSpec.create(iModelDb, codeSpecName, CodeScopeSpec.Type.Model, CodeScopeSpec.ScopeRequirement.FederationGuid);\r\n const codeSpecId = withEditTxn(iModelDb, (txn) => iModelDb.codeSpecs.insert(txn, codeSpec));\r\n assert.isTrue(Id64.isValidId64(codeSpec.id));\r\n assert.equal(codeSpec.id, codeSpecId);\r\n assert.equal(codeSpec.name, codeSpecName);\r\n assert.equal(codeSpec.scopeType, CodeScopeSpec.Type.Model);\r\n assert.equal(codeSpec.scopeReq, CodeScopeSpec.ScopeRequirement.FederationGuid);\r\n iModelDb.close();\r\n }\r\n\r\n // Reopen iModel (ensure CodeSpec cache is cleared) and reconfirm CodeSpec properties\r\n if (true) {\r\n const iModelDb = trackMutableIModel(SnapshotDb.openFile(iModelFileName));\r\n const codeSpec = iModelDb.codeSpecs.getByName(codeSpecName);\r\n assert.isTrue(Id64.isValidId64(codeSpec.id));\r\n assert.equal(codeSpec.name, codeSpecName);\r\n assert.equal(codeSpec.scopeType, CodeScopeSpec.Type.Model);\r\n assert.equal(codeSpec.scopeReq, CodeScopeSpec.ScopeRequirement.FederationGuid);\r\n iModelDb.close();\r\n }\r\n });\r\n\r\n it(\"should import schemas\", async () => {\r\n const imodel1 = trackMutableIModel(await importTestBim(createIModelFromSeed(\"metadata-import-schemas.bim\", \"test.bim\")));\r\n const metaData = await imodel1.schemaContext.getSchemaItem(\"TestBim:TestDocument\", EntityClass);\r\n assert.isDefined(metaData);\r\n if (metaData !== undefined) {\r\n const property = await metaData.getProperty(\"testDocumentProperty\");\r\n assert.isDefined(property);\r\n if (property !== undefined)\r\n assert.isDefined(property.propertyType, propertyTypeToString(PropertyType.Integer));\r\n }\r\n });\r\n});\r\n"]}
1
+ {"version":3,"file":"IModelMetadata.test.js","sourceRoot":"","sources":["../../../../src/test/imodel/IModelMetadata.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 } from \"@itwin/core-bentley\";\nimport { BisCodeSpec, Code, CodeScopeSpec, CodeSpec, FontMap, FontType, IModel } from \"@itwin/core-common\";\nimport { CustomAttributeClass, EntityClass, PrimitiveArrayProperty, PrimitiveOrEnumPropertyBase, PropertyType, propertyTypeToString, SchemaItemType } from \"@itwin/ecschema-metadata\";\nimport { EditTxn, withEditTxn } from \"../../EditTxn\";\nimport { BisCoreSchema, Category, ClassRegistry, Element, SnapshotDb } from \"../../core-backend\";\nimport { IModelTestUtils } from \"../IModelTestUtils\";\nimport { TestUtils } from \"../TestUtils\";\nimport { closeIfOpen, createIModelFromSeed, createMutableIModelTracker, importTestBim, openReadonlySeedCopy } from \"./IModelTestFixtures\";\n\n\ndescribe(\"iModel metadata and schemas\", () => {\n let testBimReadonly: SnapshotDb;\n let compatibilityReadonly: SnapshotDb;\n const { trackMutableIModel, closeTrackedIModels } = createMutableIModelTracker();\n\n before(async () => {\n await TestUtils.startBackend();\n IModelTestUtils.registerTestBimSchema();\n\n testBimReadonly = await openReadonlySeedCopy(\"metadata-test.bim\", \"test.bim\", { importTestBim: true });\n compatibilityReadonly = await openReadonlySeedCopy(\"metadata-CompatibilityTestSeed.bim\", \"CompatibilityTestSeed.bim\");\n });\n\n after(() => {\n closeIfOpen(testBimReadonly, compatibilityReadonly);\n closeTrackedIModels();\n });\n\n afterEach(() => {\n closeTrackedIModels();\n });\n\n function checkElementMetaData(entityClass: EntityClass) {\n assert.isNotNull(entityClass);\n assert.equal(entityClass.fullName, Element.classFullName.replace(\":\", \".\"));\n assert.isUndefined(entityClass.baseClass);\n\n let foundClassHasHandler = false;\n let foundClassHasCurrentTimeStampProperty = false;\n if (entityClass.customAttributes !== undefined) {\n if (entityClass.customAttributes.has(\"BisCore.ClassHasHandler\"))\n foundClassHasHandler = true;\n if (entityClass.customAttributes.has(\"CoreCustomAttributes.ClassHasCurrentTimeStampProperty\"))\n foundClassHasCurrentTimeStampProperty = true;\n }\n assert.isTrue(foundClassHasHandler);\n assert.isTrue(foundClassHasCurrentTimeStampProperty);\n const federationGuid = entityClass.getPropertySync(\"federationGuid\", false);\n if (federationGuid !== undefined) {\n assert.isTrue(federationGuid.isPrimitive());\n assert.equal(federationGuid.propertyType, PropertyType.Binary);\n assert.equal((federationGuid as PrimitiveOrEnumPropertyBase).extendedTypeName, \"BeGuid\");\n }\n }\n\n function checkClassHasHandlerMetaData(classToCheck: CustomAttributeClass) {\n assert.isDefined(classToCheck);\n\n const propertiesArray = Array.from(classToCheck.getPropertiesSync(true));\n assert.equal(propertiesArray.length, 1);\n\n const restrictionProperty = propertiesArray[0];\n assert.isDefined(restrictionProperty);\n assert.equal(restrictionProperty.name, \"Restrictions\");\n assert.equal(propertyTypeToString(restrictionProperty.propertyType), \"PrimitiveArrayProperty\");\n assert.equal((restrictionProperty as PrimitiveArrayProperty).minOccurs, 0);\n }\n\n it(\"should use schema to look up classes by name\", () => {\n const elementClass = ClassRegistry.findRegisteredClass(Element.classFullName);\n const categoryClass = ClassRegistry.findRegisteredClass(Category.classFullName);\n assert.isDefined(elementClass);\n assert.isDefined(categoryClass);\n assert.equal(elementClass!.schema, BisCoreSchema);\n assert.equal(categoryClass!.schema, BisCoreSchema);\n assert.equal(elementClass!.className, \"Element\");\n assert.equal(categoryClass!.className, \"Category\");\n });\n\n it(\"Fonts\", async () => {\n const imodel1 = trackMutableIModel(await importTestBim(createIModelFromSeed(\"metadata-fonts.bim\", \"test.bim\")));\n const dbFonts = imodel1.fonts;\n expect(Array.from(dbFonts.queryMappedFamilies({ includeNonEmbedded: true })).length).to.equal(4);\n expect(dbFonts.findDescriptor(1)).to.deep.equal({ name: \"Arial\", type: FontType.TrueType });\n expect(dbFonts.findId({ name: \"Arial\" })).to.equal(1);\n expect(dbFonts.findId({ name: \"arial\" })).to.equal(1);\n\n expect(dbFonts.findDescriptor(2)).to.deep.equal({ name: \"Font0\", type: FontType.Rsc });\n expect(dbFonts.findId({ name: \"Font0\" })).to.equal(2);\n expect(dbFonts.findId({ name: \"fOnt0\" })).to.equal(2);\n\n expect(dbFonts.findDescriptor(3)).to.deep.equal({ name: \"ShxFont0\", type: FontType.Shx });\n expect(dbFonts.findId({ name: \"ShxFont0\" })).to.equal(3);\n expect(dbFonts.findId({ name: \"shxfont0\" })).to.equal(3);\n\n expect(dbFonts.findDescriptor(4)).to.deep.equal({ name: \"Calibri\", type: FontType.TrueType });\n expect(dbFonts.findId({ name: \"Calibri\" })).to.equal(4);\n expect(dbFonts.findId({ name: \"cAlIbRi\" })).to.equal(4);\n\n expect(dbFonts.findId({ name: \"notfound\" })).to.be.undefined;\n\n const fonts1 = imodel1.fontMap; // eslint-disable-line @typescript-eslint/no-deprecated\n assert.equal(fonts1.fonts.size, 4, \"font map size should be 4\");\n assert.equal(FontType.TrueType, fonts1.getFont(1)!.type, \"get font 1 type is TrueType\");\n assert.equal(\"Arial\", fonts1.getFont(1)!.name, \"get Font 1 name\");\n assert.equal(1, fonts1.getFont(\"Arial\")!.id, \"get Font 1, by name\");\n assert.equal(1, fonts1.getFont(\"arial\")!.id, \"get Font 1, by name case insensitive\");\n\n assert.equal(FontType.Rsc, fonts1.getFont(2)!.type, \"get font 2 type is Rsc\");\n assert.equal(\"Font0\", fonts1.getFont(2)!.name, \"get Font 2 name\");\n assert.equal(2, fonts1.getFont(\"Font0\")!.id, \"get Font 2, by name\");\n assert.equal(2, fonts1.getFont(\"fOnt0\")!.id, \"get Font 2, by name case insensitive\");\n\n assert.equal(FontType.Shx, fonts1.getFont(3)!.type, \"get font 1 type is Shx\");\n assert.equal(\"ShxFont0\", fonts1.getFont(3)!.name, \"get Font 3 name\");\n assert.equal(3, fonts1.getFont(\"ShxFont0\")!.id, \"get Font 3, by name\");\n assert.equal(3, fonts1.getFont(\"shxfont0\")!.id, \"get Font 3, by name case insensitive\");\n\n assert.equal(FontType.TrueType, fonts1.getFont(4)!.type, \"get font 4 type is TrueType\");\n assert.equal(\"Calibri\", fonts1.getFont(4)!.name, \"get Font 4 name\");\n assert.equal(4, fonts1.getFont(\"Calibri\")!.id, \"get Font 4, by name\");\n assert.equal(4, fonts1.getFont(\"cAlIbRi\")!.id, \"get Font 4, by name case insensitive\");\n\n assert.isUndefined(fonts1.getFont(\"notfound\"), \"attempt lookup of a font that should not be found\");\n\n assert.deepEqual(new FontMap(fonts1.toJSON()), fonts1, \"toJSON on FontMap\"); // eslint-disable-line @typescript-eslint/no-deprecated\n });\n\n it(\"should get metadata for a relationship\", async () => {\n const imodelPath = IModelTestUtils.prepareOutputFile(\"IModel\", \"metadata-relationshipMetadata.bim\");\n const imodel = trackMutableIModel(SnapshotDb.createEmpty(imodelPath, { rootSubject: { name: \"relationshipMetadata\" } }));\n\n await withEditTxn(imodel, async (txn) => {\n const partitionId = txn.insertElement({\n classFullName: \"BisCore:PhysicalPartition\",\n model: IModel.repositoryModelId,\n parent: {\n relClassName: \"BisCore:SubjectOwnsPartitionElements\",\n id: IModel.rootSubjectId,\n },\n code: new Code({\n spec: imodel.codeSpecs.getByName(BisCodeSpec.informationPartitionElement).id,\n scope: IModel.rootSubjectId,\n value: \"physical model\",\n }),\n });\n\n for await (const row of imodel.createQueryReader(`SELECT * FROM bis.Element LIMIT ${1}`)) {\n const relId = txn.insertRelationship({\n classFullName: \"BisCore:ElementHasLinks\",\n sourceId: partitionId,\n targetId: row.ECInstanceId,\n });\n const relationship = imodel.relationships.getInstance(\"BisCore:ElementHasLinks\", relId);\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n const metadata = await relationship.getMetaData();\n assert.isDefined(metadata, \"metadata should be defined\");\n }\n });\n });\n\n it(\"should get metadata for class\", () => {\n const imodel1 = testBimReadonly;\n const metaData = imodel1.schemaContext.getSchemaItemSync(Element.classFullName, EntityClass);\n assert.exists(metaData);\n if (metaData !== undefined)\n checkElementMetaData(metaData);\n });\n\n it(\"should iterate through metadata for a relationship\", async () => {\n const imodelPath = IModelTestUtils.prepareOutputFile(\"IModel\", \"metadata-relationshipMetadata-iterate.bim\");\n const imodel = trackMutableIModel(SnapshotDb.createEmpty(imodelPath, { rootSubject: { name: \"relationshipMetadata\" } }));\n\n await withEditTxn(imodel, async (txn) => {\n const partitionId = txn.insertElement({\n classFullName: \"BisCore:PhysicalPartition\",\n model: IModel.repositoryModelId,\n parent: {\n relClassName: \"BisCore:SubjectOwnsPartitionElements\",\n id: IModel.rootSubjectId,\n },\n code: new Code({\n spec: imodel.codeSpecs.getByName(BisCodeSpec.informationPartitionElement).id,\n scope: IModel.rootSubjectId,\n value: \"physical model\",\n }),\n });\n\n for await (const row of imodel.createQueryReader(`SELECT * FROM bis.Element LIMIT ${1}`)) {\n const relId = txn.insertRelationship({\n classFullName: \"BisCore:ElementHasLinks\",\n sourceId: partitionId,\n targetId: row.ECInstanceId,\n });\n const relationship = imodel.relationships.getInstance(\"BisCore:ElementHasLinks\", relId);\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n relationship.forEach((propName, propMeta) => {\n assert.isDefined(propName, \"Property name should be defined\");\n assert.isDefined(propMeta, \"Property metadata should be defined\");\n });\n }\n });\n });\n\n it(\"should get metadata for CA class just as well (and we'll see a array-typed property)\", () => {\n const imodel1 = testBimReadonly;\n const metaData = imodel1.schemaContext.getSchemaItemSync(\"BisCore.ClassHasHandler\", CustomAttributeClass);\n assert.exists(metaData);\n if (metaData !== undefined) {\n assert.equal(metaData.schemaItemType, SchemaItemType.CustomAttributeClass);\n checkClassHasHandlerMetaData(metaData);\n }\n });\n\n it(\"validate BisCodeSpecs\", async () => {\n const imodel2 = compatibilityReadonly;\n assert.equal(imodel2.codeSpecs.getByName(BisCodeSpec.nullCodeSpec).scopeType, CodeScopeSpec.Type.Repository);\n assert.equal(imodel2.codeSpecs.getByName(BisCodeSpec.subCategory).scopeType, CodeScopeSpec.Type.ParentElement);\n assert.equal(imodel2.codeSpecs.getByName(BisCodeSpec.viewDefinition).scopeType, CodeScopeSpec.Type.Model);\n assert.equal(imodel2.codeSpecs.getByName(BisCodeSpec.subject).scopeReq, CodeScopeSpec.ScopeRequirement.ElementId);\n });\n\n it(\"should create and insert CodeSpecs\", () => {\n const testImodel = trackMutableIModel(createIModelFromSeed(\"metadata-create-CodeSpecs.bim\", \"CompatibilityTestSeed.bim\"));\n const txn = new EditTxn(testImodel, \"create and insert CodeSpecs\");\n txn.start();\n const codeSpec = CodeSpec.create(testImodel, \"CodeSpec1\", CodeScopeSpec.Type.Model);\n const codeSpecId = testImodel.codeSpecs.insert(txn, codeSpec); // throws in case of error\n assert.deepEqual(codeSpecId, codeSpec.id);\n assert.equal(codeSpec.scopeType, CodeScopeSpec.Type.Model);\n assert.equal(codeSpec.scopeReq, CodeScopeSpec.ScopeRequirement.ElementId);\n\n // Should not be able to insert a duplicate.\n const codeSpecDup = CodeSpec.create(testImodel, \"CodeSpec1\", CodeScopeSpec.Type.Model);\n assert.throws(() => testImodel.codeSpecs.insert(txn, codeSpecDup), \"CodeSpec already exists\");\n\n // We should be able to insert another CodeSpec with a different name.\n const codeSpec2 = CodeSpec.create(testImodel, \"CodeSpec2\", CodeScopeSpec.Type.Model, CodeScopeSpec.ScopeRequirement.FederationGuid);\n const codeSpec2Id = testImodel.codeSpecs.insert(txn, codeSpec2); // throws in case of error\n assert.deepEqual(codeSpec2Id, codeSpec2.id);\n assert.notDeepEqual(codeSpec2Id, codeSpecId);\n\n // make sure CodeScopeSpec.Type.Repository works\n const codeSpec3 = CodeSpec.create(testImodel, \"CodeSpec3\", CodeScopeSpec.Type.Repository, CodeScopeSpec.ScopeRequirement.FederationGuid);\n const codeSpec3Id = testImodel.codeSpecs.insert(txn, codeSpec3); // throws in case of error\n assert.notDeepEqual(codeSpec2Id, codeSpec3Id);\n\n const codeSpec4 = testImodel.codeSpecs.getById(codeSpec3Id);\n codeSpec4.name = \"CodeSpec4\";\n const codeSpec4Id = testImodel.codeSpecs.insert(txn, codeSpec4); // throws in case of error\n assert.notDeepEqual(codeSpec3Id, codeSpec4Id);\n assert.equal(codeSpec4.scopeType, CodeScopeSpec.Type.Repository);\n assert.equal(codeSpec4.scopeReq, CodeScopeSpec.ScopeRequirement.FederationGuid);\n const copyOfCodeSpec4 = testImodel.codeSpecs.getById(codeSpec4Id);\n assert.deepEqual(codeSpec4, copyOfCodeSpec4);\n\n assert.isTrue(testImodel.codeSpecs.hasName(\"CodeSpec1\"));\n assert.isTrue(testImodel.codeSpecs.hasName(\"CodeSpec2\"));\n assert.isTrue(testImodel.codeSpecs.hasName(\"CodeSpec3\"));\n assert.isTrue(testImodel.codeSpecs.hasName(\"CodeSpec4\"));\n assert.isFalse(testImodel.codeSpecs.hasName(\"CodeSpec5\"));\n\n assert.isTrue(testImodel.codeSpecs.hasId(codeSpec.id));\n assert.isTrue(testImodel.codeSpecs.hasId(codeSpec2.id));\n assert.isTrue(testImodel.codeSpecs.hasId(codeSpec3.id));\n assert.isTrue(testImodel.codeSpecs.hasId(codeSpec4.id));\n assert.isFalse(testImodel.codeSpecs.hasId(Id64.invalid));\n txn.end();\n });\n\n it(\"validate CodeSpec properties\", async () => {\n const iModelFileName: string = IModelTestUtils.prepareOutputFile(\"IModel\", \"metadata-ReadWriteCodeSpec.bim\");\n const codeSpecName = \"CodeSpec1\";\n\n // Write new CodeSpec to iModel\n if (true) {\n const iModelDb = trackMutableIModel(IModelTestUtils.createSnapshotFromSeed(iModelFileName, IModelTestUtils.resolveAssetFile(\"CompatibilityTestSeed.bim\")));\n const codeSpec = CodeSpec.create(iModelDb, codeSpecName, CodeScopeSpec.Type.Model, CodeScopeSpec.ScopeRequirement.FederationGuid);\n const codeSpecId = withEditTxn(iModelDb, (txn) => iModelDb.codeSpecs.insert(txn, codeSpec));\n assert.isTrue(Id64.isValidId64(codeSpec.id));\n assert.equal(codeSpec.id, codeSpecId);\n assert.equal(codeSpec.name, codeSpecName);\n assert.equal(codeSpec.scopeType, CodeScopeSpec.Type.Model);\n assert.equal(codeSpec.scopeReq, CodeScopeSpec.ScopeRequirement.FederationGuid);\n iModelDb.close();\n }\n\n // Reopen iModel (ensure CodeSpec cache is cleared) and reconfirm CodeSpec properties\n if (true) {\n const iModelDb = trackMutableIModel(SnapshotDb.openFile(iModelFileName));\n const codeSpec = iModelDb.codeSpecs.getByName(codeSpecName);\n assert.isTrue(Id64.isValidId64(codeSpec.id));\n assert.equal(codeSpec.name, codeSpecName);\n assert.equal(codeSpec.scopeType, CodeScopeSpec.Type.Model);\n assert.equal(codeSpec.scopeReq, CodeScopeSpec.ScopeRequirement.FederationGuid);\n iModelDb.close();\n }\n });\n\n it(\"should import schemas\", async () => {\n const imodel1 = trackMutableIModel(await importTestBim(createIModelFromSeed(\"metadata-import-schemas.bim\", \"test.bim\")));\n const metaData = await imodel1.schemaContext.getSchemaItem(\"TestBim:TestDocument\", EntityClass);\n assert.isDefined(metaData);\n if (metaData !== undefined) {\n const property = await metaData.getProperty(\"testDocumentProperty\");\n assert.isDefined(property);\n if (property !== undefined)\n assert.isDefined(property.propertyType, propertyTypeToString(PropertyType.Integer));\n }\n });\n});\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"IModelModels.test.js","sourceRoot":"","sources":["../../../../src/test/imodel/IModelModels.test.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;;+FAG+F;AAC/F,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AACtC,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnE,OAAO,EAAoB,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AACxG,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EACL,SAAS,EAAE,QAAQ,EAAE,aAAa,EAAE,mBAAmB,EAAE,eAAe,EAAE,gCAAgC,EAC1G,eAAe,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,cAAc,EAA2B,kBAAkB,EACpH,yBAAyB,EAAE,aAAa,EAAE,KAAK,EAAE,aAAa,EAAE,iBAAiB,EAAE,UAAU,EAAE,eAAe,EAAE,WAAW,GAC5H,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,uBAAuB,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAClE,OAAO,EAAE,WAAW,EAAE,oBAAoB,EAAE,0BAA0B,EAAE,iBAAiB,EAAE,cAAc,EAAE,aAAa,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAGnM,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;IAC7B,IAAI,eAA2B,CAAC;IAChC,IAAI,qBAAiC,CAAC;IACtC,MAAM,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,GAAG,0BAA0B,EAAE,CAAC;IAEjF,MAAM,CAAC,KAAK,IAAI,EAAE;QAChB,MAAM,SAAS,CAAC,YAAY,EAAE,CAAC;QAC/B,eAAe,CAAC,qBAAqB,EAAE,CAAC;QAExC,eAAe,GAAG,MAAM,oBAAoB,CAAC,iBAAiB,EAAE,UAAU,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;QACrG,qBAAqB,GAAG,MAAM,oBAAoB,CAAC,kCAAkC,EAAE,2BAA2B,CAAC,CAAC;IACtH,CAAC,CAAC,CAAC;IAEH,KAAK,CAAC,GAAG,EAAE;QACT,WAAW,CAAC,eAAe,EAAE,qBAAqB,CAAC,CAAC;QACpD,mBAAmB,EAAE,CAAC;IACxB,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QACb,mBAAmB,EAAE,CAAC;IACxB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yDAAyD,EAAE,GAAG,EAAE;QACjE,MAAM,OAAO,GAAG,eAAe,CAAC;QAChC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAC9B,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QAC/C,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACtB,MAAM,SAAS,GAAG,MAAM,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC;QACtD,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,yCAAyC,CAAC,CAAC;QACpE,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;QACxD,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,GAAG,EAAE,oBAAoB,CAAC,CAAC;QAClE,oBAAoB,CAAC,MAAM,CAAC,CAAC;QAC7B,IAAI,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;QAC9D,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACrB,oBAAoB,CAAC,KAAK,CAAC,CAAC;QAC5B,MAAM,KAAK,GAAG,IAAI,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;QACpE,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QAC1C,oFAAoF;QACpF,MAAM,SAAS,GAAG,aAAa,CAAC,QAAQ,CAAC,aAAa,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;QAC/E,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACrB,MAAM,CAAC,MAAM,CAAC,KAAK,YAAY,SAAS,CAAC,CAAC;QAC1C,oBAAoB,CAAC,KAAK,CAAC,CAAC;QAC5B,MAAM,YAAY,GAAsB,KAAuB,CAAC,YAAY,EAAE,CAAC;QAE/E,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACxD,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACxD,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC1D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+CAA+C,EAAE,KAAK,IAAI,EAAE;QAC7D,MAAM,OAAO,GAAG,eAAe,CAAC;QAChC,gCAAgC;QAChC,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,KAAK,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC;QAC9D,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC;QAEjC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACjC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACxC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC;QAE1C,oCAAoC;QACpC,MAAM,EAAE,GAAG,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC7C,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;QACxC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAChC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAChC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAEhC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QAEtD,4BAA4B;QAC5B,MAAM,KAAK,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QACpD,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;QAEhC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,uDAAuD;QACxG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,4BAA4B;QACrE,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC;IACrD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uCAAuC,EAAE,KAAK,IAAI,EAAE;;;YACrD,MAAM,OAAO,GAAG,eAAe,CAAC;YAChC,MAAM,EAAE,kCAAG,IAAI,uBAAuB,EAAE,QAAA,CAAC;YACzC,IAAI,KAAK,GAAG,MAAM,cAAc,CAAC,OAAO,CAAC,KAAK,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAC,CAAC;YAChF,iBAAiB,CAAC,YAAY,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;YAEjD,KAAK,GAAG,MAAM,cAAc,CAAC,OAAO,CAAC,KAAK,CAAC,oBAAoB,CAAC,aAAa,CAAC,CAAC,CAAC;YAChF,iBAAiB,CAAC,YAAY,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;YAEjD,KAAK,GAAG,MAAM,cAAc,CAAC,OAAO,CAAC,KAAK,CAAC,kBAAkB,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC;YAClF,iBAAiB,CAAC,YAAY,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;YAEjD,KAAK,GAAG,MAAM,cAAc,CAAC,OAAO,CAAC,KAAK,CAAC,kBAAkB,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC,CAAC;YACvF,iBAAiB,CAAC,YAAY,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;YAEjD,KAAK,GAAG,MAAM,cAAc,CAAC,OAAO,CAAC,KAAK,CAAC,kBAAkB,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC;YACpF,iBAAiB,CAAC,YAAY,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;YAEjD,KAAK,GAAG,MAAM,cAAc,CAAC,OAAO,CAAC,KAAK,CAAC,kBAAkB,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC;YACtF,iBAAiB,CAAC,YAAY,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;;;;;;;;;KAClD,CAAC,CAAC;IAEH,EAAE,CAAC,2BAA2B,EAAE,GAAG,EAAE;QACnC,MAAM,OAAO,GAAG,eAAe,CAAC;QAChC,MAAM,WAAW,GAAG,4BAA4B,QAAQ,CAAC,aAAa,EAAE,CAAC;QACzE,4DAA4D;QAC5D,OAAO,CAAC,qBAAqB,CAAC,WAAW,EAAE,CAAC,iBAAiC,EAAQ,EAAE;YACrF,IAAI,aAAa,GAAG,CAAC,CAAC;YACtB,OAAO,QAAQ,CAAC,aAAa,KAAK,iBAAiB,CAAC,IAAI,EAAE,EAAE,CAAC;gBAC3D,aAAa,EAAE,CAAC;gBAChB,MAAM,UAAU,GAAG,iBAAiB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;gBACzD,MAAM,QAAQ,GAAY,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;gBAClE,MAAM,CAAC,MAAM,CAAC,QAAQ,YAAY,QAAQ,EAAE,gCAAgC,CAAC,CAAC;gBAE9E,kCAAkC;gBAClC,MAAM,oBAAoB,GAAI,QAAqB,CAAC,sBAAsB,EAAE,CAAC;gBAC7E,MAAM,kBAAkB,GAAY,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,oBAAoB,CAAC,CAAC;gBACtF,MAAM,CAAC,MAAM,CAAC,kBAAkB,YAAY,WAAW,EAAE,sDAAsD,CAAC,CAAC;gBACjH,IAAI,kBAAkB,YAAY,WAAW,EAAE,CAAC;oBAC9C,MAAM,CAAC,MAAM,CAAC,kBAAkB,CAAC,MAAO,CAAC,EAAE,KAAK,UAAU,EAAE,kDAAkD,CAAC,CAAC;oBAChH,MAAM,CAAC,MAAM,CAAC,kBAAkB,CAAC,kBAAkB,EAAE,KAAK,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,uDAAuD,CAAC,CAAC;oBACxI,MAAM,CAAC,MAAM,CAAC,kBAAkB,CAAC,oBAAoB,EAAE,yCAAyC,CAAC,CAAC;gBACpG,CAAC;gBAED,wBAAwB;gBACxB,MAAM,cAAc,GAAG,4BAA4B,WAAW,CAAC,aAAa,4BAA4B,CAAC;gBACzG,4DAA4D;gBAC5D,OAAO,CAAC,qBAAqB,CAAC,cAAc,EAAE,CAAC,oBAAoC,EAAQ,EAAE;oBAC3F,IAAI,gBAAgB,GAAG,CAAC,CAAC;oBACzB,oBAAoB,CAAC,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;oBACpD,OAAO,QAAQ,CAAC,aAAa,KAAK,oBAAoB,CAAC,IAAI,EAAE,EAAE,CAAC;wBAC9D,gBAAgB,EAAE,CAAC;wBACnB,MAAM,aAAa,GAAG,oBAAoB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;wBAC/D,MAAM,WAAW,GAAY,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;wBACxE,MAAM,CAAC,MAAM,CAAC,WAAW,YAAY,WAAW,CAAC,CAAC;wBAClD,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,MAAO,CAAC,EAAE,KAAK,UAAU,CAAC,CAAC;oBACvD,CAAC;oBACD,MAAM,CAAC,SAAS,CAAC,gBAAgB,EAAE,CAAC,EAAE,iDAAiD,CAAC,CAAC;gBAC3F,CAAC,CAAC,CAAC;YACL,CAAC;YACD,MAAM,CAAC,SAAS,CAAC,aAAa,EAAE,CAAC,EAAE,wCAAwC,CAAC,CAAC;QAC/E,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4BAA4B,EAAE,GAAG,EAAE;QACpC,MAAM,OAAO,GAAG,qBAAqB,CAAC;QACtC,MAAM,GAAG,GAAG,4BAA4B,cAAc,CAAC,aAAa,EAAE,CAAC;QACvE,4DAA4D;QAC5D,OAAO,CAAC,qBAAqB,CAAC,GAAG,EAAE,CAAC,SAAyB,EAAQ,EAAE;YACrE,IAAI,kBAAkB,GAAG,CAAC,CAAC;YAC3B,IAAI,OAAO,GAAY,KAAK,CAAC;YAC7B,IAAI,OAAO,GAAY,KAAK,CAAC;YAC7B,OAAO,QAAQ,CAAC,aAAa,KAAK,SAAS,CAAC,IAAI,EAAE,EAAE,CAAC;gBACnD,kBAAkB,EAAE,CAAC;gBACrB,MAAM,gBAAgB,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;gBACvD,MAAM,cAAc,GAAG,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAqB,EAAE,EAAE,EAAE,gBAAgB,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC;gBACrH,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;gBAC9B,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,SAAS,KAAK,gBAAgB,EAAE,sCAAsC,CAAC,CAAC;gBACrG,MAAM,CAAC,MAAM,CAAC,cAAc,YAAY,cAAc,EAAE,+BAA+B,CAAC,CAAC;gBACzF,MAAM,CAAC,MAAM,CAAC,cAAc,YAAY,kBAAkB,EAAE,mCAAmC,CAAC,CAAC;gBACjG,IAAI,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC;oBAChD,OAAO,GAAG,IAAI,CAAC;oBACf,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC;oBACzD,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC;oBACzD,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,KAAK,GAAG,CAAC,CAAC;oBAC9D,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC;oBAC3D,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC;oBAC3D,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC;oBAC5D,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC;oBAC5D,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;gBACxC,CAAC;qBAAM,IAAI,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC;oBACvD,OAAO,GAAG,IAAI,CAAC;oBACf,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC;oBACzD,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC;oBACzD,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,KAAK,GAAG,CAAC,CAAC;oBAC9D,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC;oBAC3D,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC;oBAC3D,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC;oBAC5D,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC;oBAC5D,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;gBACxC,CAAC;YACH,CAAC;YACD,MAAM,CAAC,SAAS,CAAC,kBAAkB,EAAE,CAAC,EAAE,6CAA6C,CAAC,CAAC;YACvF,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,qCAAqC,CAAC,CAAC;YAC9D,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,qCAAqC,CAAC,CAAC;QAChE,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;QAC3C,MAAM,OAAO,GAAG,qBAAqB,CAAC;QACtC,MAAM,GAAG,GAAG,4BAA4B,KAAK,CAAC,aAAa,sCAAsC,CAAC;QAClG,4DAA4D;QAC5D,OAAO,CAAC,qBAAqB,CAAC,GAAG,EAAE,CAAC,SAAyB,EAAQ,EAAE;YACrE,SAAS,CAAC,MAAM,CAAC,eAAe,EAAE,MAAM,CAAC,iBAAiB,CAAC,CAAC;YAC5D,IAAI,SAAS,GAAG,CAAC,CAAC;YAClB,OAAO,QAAQ,CAAC,aAAa,KAAK,SAAS,CAAC,IAAI,EAAE,EAAE,CAAC;gBACnD,SAAS,EAAE,CAAC;gBACZ,MAAM,OAAO,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;gBAC9C,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;gBAC/C,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,oBAAoB,CAAC,CAAC;gBAC3C,MAAM,CAAC,MAAM,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC;gBAEtC,yCAAyC;gBACzC,MAAM,cAAc,GAAG,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;gBAC5D,MAAM,CAAC,MAAM,CAAC,cAAc,EAAE,8BAA8B,CAAC,CAAC;gBAE9D,IAAI,KAAK,CAAC,SAAS,KAAK,WAAW,EAAE,CAAC;oBACpC,sDAAsD;oBACtD,MAAM,CAAC,MAAM,CAAC,cAAc,YAAY,aAAa,CAAC,CAAC;oBACvD,SAAS;gBACX,CAAC;qBAAM,IAAI,KAAK,CAAC,SAAS,KAAK,iBAAiB,EAAE,CAAC;oBACjD,MAAM,CAAC,MAAM,CAAC,cAAc,YAAY,mBAAmB,CAAC,CAAC;oBAC7D,SAAS;gBACX,CAAC;qBAAM,IAAI,KAAK,CAAC,SAAS,KAAK,eAAe,EAAE,CAAC;oBAC/C,MAAM,CAAC,MAAM,CAAC,cAAc,YAAY,iBAAiB,CAAC,CAAC;oBAC3D,SAAS;gBACX,CAAC;qBAAM,IAAI,KAAK,CAAC,SAAS,KAAK,YAAY,EAAE,CAAC;oBAC5C,MAAM,CAAC,MAAM,CAAC,cAAc,YAAY,yBAAyB,CAAC,CAAC;oBACnE,SAAS;gBACX,CAAC;qBAAM,IAAI,KAAK,CAAC,SAAS,KAAK,mBAAmB,EAAE,CAAC;oBACnD,MAAM,CAAC,MAAM,CAAC,cAAc,YAAY,iBAAiB,CAAC,CAAC;oBAC3D,SAAS;gBACX,CAAC;qBAAM,IAAI,KAAK,CAAC,SAAS,KAAK,iBAAiB,EAAE,CAAC;oBACjD,MAAM,CAAC,MAAM,CAAC,cAAc,YAAY,mBAAmB,CAAC,CAAC;oBAC7D,SAAS;gBACX,CAAC;qBAAM,CAAC;oBACN,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,6BAA6B,CAAC,CAAC;gBACtD,CAAC;YACH,CAAC;YACD,MAAM,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC,EAAE,oCAAoC,CAAC,CAAC;QACvE,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4BAA4B,EAAE,KAAK,IAAI,EAAE;QAC1C,MAAM,OAAO,GAAG,kBAAkB,CAAC,MAAM,aAAa,CAAC,oBAAoB,CAAC,4BAA4B,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC;QACxH,MAAM,eAAe,GAAG,OAAO,CAAC,cAAc,CAAC;QAC/C,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,eAAe,CAAC,GAAG,EAAE,eAAe,CAAC,IAAI,CAAC,CAAC;QAC7E,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;QACvB,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;QACvB,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC;QACxB,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC;QAC1B,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;QACxB,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC;QAC1B,MAAM,WAAW,CAAC,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,oBAAoB,CAAC,UAAU,CAAC,CAAC,CAAC;QAEhF,MAAM,YAAY,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,cAAc,EAAE,CAAC;QACzD,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,cAAc,CAAC,gBAAgB,CAAC,EAAE,mDAAmD,CAAC,CAAC;QAClH,MAAM,cAAc,GAAG,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC;QACrE,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,aAAa,CAAC,cAAc,CAAC,EAAE,kDAAkD,CAAC,CAAC;IAC9G,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0BAA0B,EAAE,GAAG,EAAE;QAElC,MAAM,UAAU,GAAG,kBAAkB,CAAC,oBAAoB,CAAC,uCAAuC,EAAE,2BAA2B,CAAC,CAAC,CAAC;QAClI,MAAM,GAAG,GAAG,IAAI,OAAO,CAAC,UAAU,EAAE,gBAAgB,CAAC,CAAC;QACtD,GAAG,CAAC,KAAK,EAAE,CAAC;QAEZ,MAAM,CAAC,gBAAgB,EAAE,UAAU,CAAC,GAAG,eAAe,CAAC,wCAAwC,CAAC,GAAG,EAAE,IAAI,CAAC,WAAW,EAAE,EAAE,IAAI,CAAC,CAAC;QAE/H,MAAM,eAAe,GAAG,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;QAE/D,gDAAgD;QAChD,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC,aAAa,EAAE,aAAa,CAAC,aAAa,CAAC,CAAC;QACzE,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;QACzC,MAAM,CAAC,SAAS,CAAC,eAAe,CAAC,cAAc,CAAC,EAAE,EAAE,gBAAgB,CAAC,CAAC;QAEtE,mBAAmB;QACnB,eAAe,CAAC,SAAS,GAAG,KAAK,CAAC;QAClC,GAAG,CAAC,WAAW,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC,CAAC;QAC1C,qDAAqD;QACrD,MAAM,gBAAgB,GAAG,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;QAChE,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;QAE3C,mBAAmB;QACnB,GAAG,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;QAE5B,kCAAkC;QAClC,IAAI,CAAC;YACH,GAAG,CAAC,WAAW,CAAC;gBACd,aAAa,EAAE,eAAe,CAAC,aAAa;gBAC5C,cAAc,EAAE,EAAE,EAAE,EAAE,eAAe,EAAE;aACxC,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,MAAM,CAAC,MAAM,CAAC,KAAK,YAAY,WAAW,IAAI,KAAK,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC;QAClF,CAAC;QAED,GAAG,CAAC,GAAG,EAAE,CAAC;IAEZ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8BAA8B,EAAE,GAAG,EAAE;QACtC,MAAM,cAAc,GAAW,eAAe,CAAC,iBAAiB,CAAC,QAAQ,EAAE,oBAAoB,CAAC,CAAC;QACjG,MAAM,QAAQ,GAAG,UAAU,CAAC,WAAW,CAAC,cAAc,EAAE,EAAE,WAAW,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,EAAE,gBAAgB,EAAE,IAAI,EAAE,CAAC,CAAC;QAC7H,MAAM,GAAG,GAAG,IAAI,OAAO,CAAC,QAAQ,EAAE,iBAAiB,CAAC,CAAC;QACrD,GAAG,CAAC,KAAK,EAAE,CAAC;QACZ,MAAM,qBAAqB,GAAG,mBAAmB,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,YAAY,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;QACvG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAsB,qBAAqB,CAAC,CAAC,CAAC;QACxF,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAkB,qBAAqB,CAAC,CAAC,CAAC;QAChF,MAAM,WAAW,GAAG,eAAe,CAAC,MAAM,CAAC,GAAG,EAAE,qBAAqB,EAAE,WAAW,EAAE,IAAI,qBAAqB,EAAE,CAAC,CAAC;QACjH,MAAM,WAAW,GAAG,eAAe,CAAC,MAAM,CAAC,GAAG,EAAE,qBAAqB,EAAE,WAAW,EAAE,IAAI,qBAAqB,EAAE,CAAC,CAAC;QACjH,MAAM,WAAW,GAAG,eAAe,CAAC,MAAM,CAAC,GAAG,EAAE,qBAAqB,EAAE,WAAW,EAAE,IAAI,qBAAqB,EAAE,CAAC,CAAC;QACjH,MAAM,iBAAiB,GAAG,eAAe,CAAC,MAAM,CAAC,QAAQ,EAAE,qBAAqB,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAClH,gCAAgC,CAAC,MAAM,CAAC,GAAG,EAAE,iBAAiB,EAAE,WAAW,CAAC,CAAC;QAC7E,gCAAgC,CAAC,MAAM,CAAC,GAAG,EAAE,iBAAiB,EAAE,WAAW,CAAC,CAAC;QAC7E,gCAAgC,CAAC,MAAM,CAAC,GAAG,EAAE,iBAAiB,EAAE,WAAW,CAAC,CAAC;QAC7E,4DAA4D;QAC5D,MAAM,UAAU,GAAG,QAAQ,CAAC,qBAAqB,CAAC,wBAAwB,gCAAgC,CAAC,aAAa,EAAE,EAAE,CAAC,SAAyB,EAAU,EAAE;YAChK,OAAO,SAAS,CAAC,IAAI,EAAE,KAAK,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9F,CAAC,CAAC,CAAC;QACH,MAAM,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;QAC5B,GAAG,CAAC,GAAG,EAAE,CAAC;QACV,QAAQ,CAAC,KAAK,EAAE,CAAC;IACnB,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,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\nimport { assert, expect } from \"chai\";\r\nimport { DbResult, Id64, IModelStatus } from \"@itwin/core-bentley\";\r\nimport { AxisAlignedBox3d, Code, IModel, IModelError, SubCategoryAppearance } from \"@itwin/core-common\";\r\nimport { Range3d, Transform } from \"@itwin/core-geometry\";\r\nimport { EditTxn, withEditTxn } from \"../../EditTxn\";\r\nimport {\r\n _nativeDb, Category, ClassRegistry, DefinitionContainer, DefinitionGroup, DefinitionGroupGroupsDefinitions,\r\n DefinitionModel, DefinitionPartition, DocumentPartition, DrawingGraphic, ECSqlStatement, Element, GeometricElement2d,\r\n GroupInformationPartition, LinkPartition, Model, PhysicalModel, PhysicalPartition, SnapshotDb, SpatialCategory, SubCategory,\r\n} from \"../../core-backend\";\r\nimport { IModelTestUtils } from \"../IModelTestUtils\";\r\nimport { DisableNativeAssertions, TestUtils } from \"../TestUtils\";\r\nimport { closeIfOpen, createIModelFromSeed, createMutableIModelTracker, expectIModelError, getIModelError, importTestBim, openReadonlySeedCopy, roundtripThroughJson } from \"./IModelTestFixtures\";\r\n\r\n\r\ndescribe(\"iModel models\", () => {\r\n let testBimReadonly: SnapshotDb;\r\n let compatibilityReadonly: SnapshotDb;\r\n const { trackMutableIModel, closeTrackedIModels } = createMutableIModelTracker();\r\n\r\n before(async () => {\r\n await TestUtils.startBackend();\r\n IModelTestUtils.registerTestBimSchema();\r\n\r\n testBimReadonly = await openReadonlySeedCopy(\"models-test.bim\", \"test.bim\", { importTestBim: true });\r\n compatibilityReadonly = await openReadonlySeedCopy(\"models-CompatibilityTestSeed.bim\", \"CompatibilityTestSeed.bim\");\r\n });\r\n\r\n after(() => {\r\n closeIfOpen(testBimReadonly, compatibilityReadonly);\r\n closeTrackedIModels();\r\n });\r\n\r\n afterEach(() => {\r\n closeTrackedIModels();\r\n });\r\n\r\n it(\"should load a known model by Id from an existing iModel\", () => {\r\n const imodel1 = testBimReadonly;\r\n assert.exists(imodel1.models);\r\n const model2 = imodel1.models.getModel(\"0x1c\");\r\n assert.exists(model2);\r\n const formatter = model2.getJsonProperty(\"formatter\");\r\n assert.exists(formatter, \"formatter should exist as json property\");\r\n assert.equal(formatter.fmtFlags.angMode, 1, \"fmtFlags\");\r\n assert.equal(formatter.mastUnit.label, \"m\", \"mastUnit is meters\");\r\n roundtripThroughJson(model2);\r\n let model = imodel1.models.getModel(IModel.repositoryModelId);\r\n assert.exists(model);\r\n roundtripThroughJson(model);\r\n const code1 = new Code({ spec: \"0x1d\", scope: \"0x1d\", value: \"A\" });\r\n model = imodel1.models.getSubModel(code1);\r\n // By this point, we expect the submodel's class to be in the class registry *cache*\r\n const geomModel = ClassRegistry.getClass(PhysicalModel.classFullName, imodel1);\r\n assert.exists(model);\r\n assert.isTrue(model instanceof geomModel);\r\n roundtripThroughJson(model);\r\n const modelExtents: AxisAlignedBox3d = (model as PhysicalModel).queryExtents();\r\n\r\n assert.isBelow(modelExtents.low.x, modelExtents.high.x);\r\n assert.isBelow(modelExtents.low.y, modelExtents.high.y);\r\n assert.isBelow(modelExtents.low.z, modelExtents.high.z);\r\n });\r\n\r\n it(\"should find a tile tree for a geometric model\", async () => {\r\n const imodel1 = testBimReadonly;\r\n // Note: this is an empty model.\r\n const tree = await imodel1.tiles.requestTileTreeProps(\"0x1c\");\r\n expect(tree).not.to.be.undefined;\r\n\r\n expect(tree.id).to.equal(\"0x1c\");\r\n expect(tree.maxTilesToSkip).to.equal(1);\r\n expect(tree.rootTile).not.to.be.undefined;\r\n\r\n // Empty model => identity transform\r\n const tf = Transform.fromJSON(tree.location);\r\n expect(tf.matrix.isIdentity).to.be.true;\r\n expect(tf.origin.x).to.equal(0);\r\n expect(tf.origin.y).to.equal(0);\r\n expect(tf.origin.z).to.equal(0);\r\n\r\n expect(tree.rootTile.contentId).to.equal(\"0/0/0/0/1\");\r\n\r\n // Empty model => null range\r\n const range = Range3d.fromJSON(tree.rootTile.range);\r\n expect(range.isNull).to.be.true;\r\n\r\n expect(tree.rootTile.maximumSize).to.equal(0.0); // empty model => undisplayable root tile => size = 0.0\r\n expect(tree.rootTile.isLeaf).to.be.true; // empty model => empty tile\r\n expect(tree.rootTile.contentRange).to.be.undefined;\r\n });\r\n\r\n it(\"should throw on invalid tile requests\", async () => {\r\n const imodel1 = testBimReadonly;\r\n using _r = new DisableNativeAssertions();\r\n let error = await getIModelError(imodel1.tiles.requestTileTreeProps(\"0x12345\"));\r\n expectIModelError(IModelStatus.InvalidId, error);\r\n\r\n error = await getIModelError(imodel1.tiles.requestTileTreeProps(\"NotAValidId\"));\r\n expectIModelError(IModelStatus.InvalidId, error);\r\n\r\n error = await getIModelError(imodel1.tiles.requestTileContent(\"0x1c\", \"0/0/0/0\"));\r\n expectIModelError(IModelStatus.InvalidId, error);\r\n\r\n error = await getIModelError(imodel1.tiles.requestTileContent(\"0x12345\", \"0/0/0/0/1\"));\r\n expectIModelError(IModelStatus.InvalidId, error);\r\n\r\n error = await getIModelError(imodel1.tiles.requestTileContent(\"0x1c\", \"V/W/X/Y/Z\"));\r\n expectIModelError(IModelStatus.InvalidId, error);\r\n\r\n error = await getIModelError(imodel1.tiles.requestTileContent(\"0x1c\", \"NotAValidId\"));\r\n expectIModelError(IModelStatus.InvalidId, error);\r\n });\r\n\r\n it(\"should be some categories\", () => {\r\n const imodel1 = testBimReadonly;\r\n const categorySql = `SELECT ECInstanceId FROM ${Category.classFullName}`;\r\n // eslint-disable-next-line @typescript-eslint/no-deprecated\r\n imodel1.withPreparedStatement(categorySql, (categoryStatement: ECSqlStatement): void => {\r\n let numCategories = 0;\r\n while (DbResult.BE_SQLITE_ROW === categoryStatement.step()) {\r\n numCategories++;\r\n const categoryId = categoryStatement.getValue(0).getId();\r\n const category: Element = imodel1.elements.getElement(categoryId);\r\n assert.isTrue(category instanceof Category, \"Should be instance of Category\");\r\n\r\n // verify the default subcategory.\r\n const defaultSubCategoryId = (category as Category).myDefaultSubCategoryId();\r\n const defaultSubCategory: Element = imodel1.elements.getElement(defaultSubCategoryId);\r\n assert.isTrue(defaultSubCategory instanceof SubCategory, \"defaultSubCategory should be instance of SubCategory\");\r\n if (defaultSubCategory instanceof SubCategory) {\r\n assert.isTrue(defaultSubCategory.parent!.id === categoryId, \"defaultSubCategory id should be prescribed value\");\r\n assert.isTrue(defaultSubCategory.getSubCategoryName() === category.code.value, \"DefaultSubcategory name should match that of Category\");\r\n assert.isTrue(defaultSubCategory.isDefaultSubCategory, \"isDefaultSubCategory should return true\");\r\n }\r\n\r\n // get the subcategories\r\n const subCategorySql = `SELECT ECInstanceId FROM ${SubCategory.classFullName} WHERE Parent.Id=:parentId`;\r\n // eslint-disable-next-line @typescript-eslint/no-deprecated\r\n imodel1.withPreparedStatement(subCategorySql, (subCategoryStatement: ECSqlStatement): void => {\r\n let numSubCategories = 0;\r\n subCategoryStatement.bindId(\"parentId\", categoryId);\r\n while (DbResult.BE_SQLITE_ROW === subCategoryStatement.step()) {\r\n numSubCategories++;\r\n const subCategoryId = subCategoryStatement.getValue(0).getId();\r\n const subCategory: Element = imodel1.elements.getElement(subCategoryId);\r\n assert.isTrue(subCategory instanceof SubCategory);\r\n assert.isTrue(subCategory.parent!.id === categoryId);\r\n }\r\n assert.isAtLeast(numSubCategories, 1, \"Expected query to find at least one SubCategory\");\r\n });\r\n }\r\n assert.isAtLeast(numCategories, 1, \"Expected query to find some categories\");\r\n });\r\n });\r\n\r\n it(\"should be some 2d elements\", () => {\r\n const imodel2 = compatibilityReadonly;\r\n const sql = `SELECT ECInstanceId FROM ${DrawingGraphic.classFullName}`;\r\n // eslint-disable-next-line @typescript-eslint/no-deprecated\r\n imodel2.withPreparedStatement(sql, (statement: ECSqlStatement): void => {\r\n let numDrawingGraphics = 0;\r\n let found25: boolean = false;\r\n let found26: boolean = false;\r\n while (DbResult.BE_SQLITE_ROW === statement.step()) {\r\n numDrawingGraphics++;\r\n const drawingGraphicId = statement.getValue(0).getId();\r\n const drawingGraphic = imodel2.elements.getElement<GeometricElement2d>({ id: drawingGraphicId, wantGeometry: true });\r\n assert.exists(drawingGraphic);\r\n assert.isTrue(drawingGraphic.className === \"DrawingGraphic\", \"Should be instance of DrawingGraphic\");\r\n assert.isTrue(drawingGraphic instanceof DrawingGraphic, \"Is instance of DrawingGraphic\");\r\n assert.isTrue(drawingGraphic instanceof GeometricElement2d, \"Is instance of GeometricElement2d\");\r\n if (Id64.getLocalId(drawingGraphic.id) === 0x25) {\r\n found25 = true;\r\n assert.isTrue(drawingGraphic.placement.origin.x === 0.0);\r\n assert.isTrue(drawingGraphic.placement.origin.y === 0.0);\r\n assert.isTrue(drawingGraphic.placement.angle.radians === 0.0);\r\n assert.isTrue(drawingGraphic.placement.bbox.low.x === 0.0);\r\n assert.isTrue(drawingGraphic.placement.bbox.low.y === 0.0);\r\n assert.isTrue(drawingGraphic.placement.bbox.high.x === 1.0);\r\n assert.isTrue(drawingGraphic.placement.bbox.high.y === 1.0);\r\n assert.isDefined(drawingGraphic.geom);\r\n } else if (Id64.getLocalId(drawingGraphic.id) === 0x26) {\r\n found26 = true;\r\n assert.isTrue(drawingGraphic.placement.origin.x === 1.0);\r\n assert.isTrue(drawingGraphic.placement.origin.y === 1.0);\r\n assert.isTrue(drawingGraphic.placement.angle.radians === 0.0);\r\n assert.isTrue(drawingGraphic.placement.bbox.low.x === 0.0);\r\n assert.isTrue(drawingGraphic.placement.bbox.low.y === 0.0);\r\n assert.isTrue(drawingGraphic.placement.bbox.high.x === 2.0);\r\n assert.isTrue(drawingGraphic.placement.bbox.high.y === 2.0);\r\n assert.isDefined(drawingGraphic.geom);\r\n }\r\n }\r\n assert.isAtLeast(numDrawingGraphics, 1, \"Expected query to find some DrawingGraphics\");\r\n assert.isTrue(found25, \"Expected to find a specific element\");\r\n assert.isTrue(found26, \"Expected to find a specific element\");\r\n });\r\n });\r\n\r\n it(\"should be children of RootSubject\", () => {\r\n const imodel2 = compatibilityReadonly;\r\n const sql = `SELECT ECInstanceId FROM ${Model.classFullName} WHERE ParentModel.Id=:parentModelId`;\r\n // eslint-disable-next-line @typescript-eslint/no-deprecated\r\n imodel2.withPreparedStatement(sql, (statement: ECSqlStatement): void => {\r\n statement.bindId(\"parentModelId\", IModel.repositoryModelId);\r\n let numModels = 0;\r\n while (DbResult.BE_SQLITE_ROW === statement.step()) {\r\n numModels++;\r\n const modelId = statement.getValue(0).getId();\r\n const model = imodel2.models.getModel(modelId);\r\n assert.exists(model, \"Model should exist\");\r\n assert.isTrue(model instanceof Model);\r\n\r\n // should be an element with the same Id.\r\n const modeledElement = imodel2.elements.getElement(modelId);\r\n assert.exists(modeledElement, \"Modeled Element should exist\");\r\n\r\n if (model.className === \"LinkModel\") {\r\n // expect LinkModel to be accompanied by LinkPartition\r\n assert.isTrue(modeledElement instanceof LinkPartition);\r\n continue;\r\n } else if (model.className === \"DictionaryModel\") {\r\n assert.isTrue(modeledElement instanceof DefinitionPartition);\r\n continue;\r\n } else if (model.className === \"PhysicalModel\") {\r\n assert.isTrue(modeledElement instanceof PhysicalPartition);\r\n continue;\r\n } else if (model.className === \"GroupModel\") {\r\n assert.isTrue(modeledElement instanceof GroupInformationPartition);\r\n continue;\r\n } else if (model.className === \"DocumentListModel\") {\r\n assert.isTrue(modeledElement instanceof DocumentPartition);\r\n continue;\r\n } else if (model.className === \"DefinitionModel\") {\r\n assert.isTrue(modeledElement instanceof DefinitionPartition);\r\n continue;\r\n } else {\r\n assert.isTrue(false, \"Expected a known model type\");\r\n }\r\n }\r\n assert.isAtLeast(numModels, 1, \"Expected query to find some Models\");\r\n });\r\n });\r\n\r\n it(\"update the project extents\", async () => {\r\n const imodel1 = trackMutableIModel(await importTestBim(createIModelFromSeed(\"models-project-extents.bim\", \"test.bim\")));\r\n const originalExtents = imodel1.projectExtents;\r\n const newExtents = Range3d.create(originalExtents.low, originalExtents.high);\r\n newExtents.low.x -= 50;\r\n newExtents.low.y -= 25;\r\n newExtents.low.z -= 189;\r\n newExtents.high.x += 1087;\r\n newExtents.high.y += 19;\r\n newExtents.high.z += .001;\r\n await withEditTxn(imodel1, async (txn) => txn.updateProjectExtents(newExtents));\r\n\r\n const updatedProps = imodel1[_nativeDb].getIModelProps();\r\n assert.isTrue(updatedProps.hasOwnProperty(\"projectExtents\"), \"Returned property JSON object has project extents\");\r\n const updatedExtents = Range3d.fromJSON(updatedProps.projectExtents);\r\n assert.isTrue(newExtents.isAlmostEqual(updatedExtents), \"Project extents successfully updated in database\");\r\n });\r\n\r\n it(\"should do CRUD on models\", () => {\r\n\r\n const testImodel = trackMutableIModel(createIModelFromSeed(\"models-CRUD-CompatibilityTestSeed.bim\", \"CompatibilityTestSeed.bim\"));\r\n const txn = new EditTxn(testImodel, \"CRUD on models\");\r\n txn.start();\r\n\r\n const [modeledElementId, newModelId] = IModelTestUtils.createAndInsertPhysicalPartitionAndModel(txn, Code.createEmpty(), true);\r\n\r\n const newModelPersist = testImodel.models.getModel(newModelId);\r\n\r\n // Check that it has the properties that we set.\r\n assert.equal(newModelPersist.classFullName, PhysicalModel.classFullName);\r\n assert.isTrue(newModelPersist.isPrivate);\r\n assert.deepEqual(newModelPersist.modeledElement.id, modeledElementId);\r\n\r\n // Update the model\r\n newModelPersist.isPrivate = false;\r\n txn.updateModel(newModelPersist.toJSON());\r\n // ... and check that it updated the model in the db\r\n const newModelPersist2 = testImodel.models.getModel(newModelId);\r\n assert.isFalse(newModelPersist2.isPrivate);\r\n\r\n // Delete the model\r\n txn.deleteModel(newModelId);\r\n\r\n // Test insertModel error handling\r\n try {\r\n txn.insertModel({\r\n classFullName: DefinitionModel.classFullName,\r\n modeledElement: { id: \"0x10000000bad\" },\r\n });\r\n } catch (error: any) {\r\n assert.isTrue(error instanceof IModelError || error.iTwinErrorId !== undefined);\r\n }\r\n\r\n txn.end();\r\n\r\n });\r\n\r\n it(\"should insert DefinitionSets\", () => {\r\n const iModelFileName: string = IModelTestUtils.prepareOutputFile(\"IModel\", \"DefinitionSets.bim\");\r\n const iModelDb = SnapshotDb.createEmpty(iModelFileName, { rootSubject: { name: \"DefinitionSets\" }, createClassViews: true });\r\n const txn = new EditTxn(iModelDb, \"definition sets\");\r\n txn.start();\r\n const definitionContainerId = DefinitionContainer.insert(txn, IModel.dictionaryId, Code.createEmpty());\r\n assert.exists(iModelDb.elements.getElement<DefinitionContainer>(definitionContainerId));\r\n assert.exists(iModelDb.models.getModel<DefinitionModel>(definitionContainerId));\r\n const categoryId1 = SpatialCategory.insert(txn, definitionContainerId, \"Category1\", new SubCategoryAppearance());\r\n const categoryId2 = SpatialCategory.insert(txn, definitionContainerId, \"Category2\", new SubCategoryAppearance());\r\n const categoryId3 = SpatialCategory.insert(txn, definitionContainerId, \"Category3\", new SubCategoryAppearance());\r\n const definitionGroupId = DefinitionGroup.create(iModelDb, definitionContainerId, Code.createEmpty()).insert(txn);\r\n DefinitionGroupGroupsDefinitions.insert(txn, definitionGroupId, categoryId1);\r\n DefinitionGroupGroupsDefinitions.insert(txn, definitionGroupId, categoryId2);\r\n DefinitionGroupGroupsDefinitions.insert(txn, definitionGroupId, categoryId3);\r\n // eslint-disable-next-line @typescript-eslint/no-deprecated\r\n const numMembers = iModelDb.withPreparedStatement(`SELECT COUNT(*) FROM ${DefinitionGroupGroupsDefinitions.classFullName}`, (statement: ECSqlStatement): number => {\r\n return statement.step() === DbResult.BE_SQLITE_ROW ? statement.getValue(0).getInteger() : 0;\r\n });\r\n assert.equal(numMembers, 3);\r\n txn.end();\r\n iModelDb.close();\r\n });\r\n});\r\n"]}
1
+ {"version":3,"file":"IModelModels.test.js","sourceRoot":"","sources":["../../../../src/test/imodel/IModelModels.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 { DbResult, Id64, IModelStatus } from \"@itwin/core-bentley\";\nimport { AxisAlignedBox3d, Code, IModel, IModelError, SubCategoryAppearance } from \"@itwin/core-common\";\nimport { Range3d, Transform } from \"@itwin/core-geometry\";\nimport { EditTxn, withEditTxn } from \"../../EditTxn\";\nimport {\n _nativeDb, Category, ClassRegistry, DefinitionContainer, DefinitionGroup, DefinitionGroupGroupsDefinitions,\n DefinitionModel, DefinitionPartition, DocumentPartition, DrawingGraphic, ECSqlStatement, Element, GeometricElement2d,\n GroupInformationPartition, LinkPartition, Model, PhysicalModel, PhysicalPartition, SnapshotDb, SpatialCategory, SubCategory,\n} from \"../../core-backend\";\nimport { IModelTestUtils } from \"../IModelTestUtils\";\nimport { DisableNativeAssertions, TestUtils } from \"../TestUtils\";\nimport { closeIfOpen, createIModelFromSeed, createMutableIModelTracker, expectIModelError, getIModelError, importTestBim, openReadonlySeedCopy, roundtripThroughJson } from \"./IModelTestFixtures\";\n\n\ndescribe(\"iModel models\", () => {\n let testBimReadonly: SnapshotDb;\n let compatibilityReadonly: SnapshotDb;\n const { trackMutableIModel, closeTrackedIModels } = createMutableIModelTracker();\n\n before(async () => {\n await TestUtils.startBackend();\n IModelTestUtils.registerTestBimSchema();\n\n testBimReadonly = await openReadonlySeedCopy(\"models-test.bim\", \"test.bim\", { importTestBim: true });\n compatibilityReadonly = await openReadonlySeedCopy(\"models-CompatibilityTestSeed.bim\", \"CompatibilityTestSeed.bim\");\n });\n\n after(() => {\n closeIfOpen(testBimReadonly, compatibilityReadonly);\n closeTrackedIModels();\n });\n\n afterEach(() => {\n closeTrackedIModels();\n });\n\n it(\"should load a known model by Id from an existing iModel\", () => {\n const imodel1 = testBimReadonly;\n assert.exists(imodel1.models);\n const model2 = imodel1.models.getModel(\"0x1c\");\n assert.exists(model2);\n const formatter = model2.getJsonProperty(\"formatter\");\n assert.exists(formatter, \"formatter should exist as json property\");\n assert.equal(formatter.fmtFlags.angMode, 1, \"fmtFlags\");\n assert.equal(formatter.mastUnit.label, \"m\", \"mastUnit is meters\");\n roundtripThroughJson(model2);\n let model = imodel1.models.getModel(IModel.repositoryModelId);\n assert.exists(model);\n roundtripThroughJson(model);\n const code1 = new Code({ spec: \"0x1d\", scope: \"0x1d\", value: \"A\" });\n model = imodel1.models.getSubModel(code1);\n // By this point, we expect the submodel's class to be in the class registry *cache*\n const geomModel = ClassRegistry.getClass(PhysicalModel.classFullName, imodel1);\n assert.exists(model);\n assert.isTrue(model instanceof geomModel);\n roundtripThroughJson(model);\n const modelExtents: AxisAlignedBox3d = (model as PhysicalModel).queryExtents();\n\n assert.isBelow(modelExtents.low.x, modelExtents.high.x);\n assert.isBelow(modelExtents.low.y, modelExtents.high.y);\n assert.isBelow(modelExtents.low.z, modelExtents.high.z);\n });\n\n it(\"should find a tile tree for a geometric model\", async () => {\n const imodel1 = testBimReadonly;\n // Note: this is an empty model.\n const tree = await imodel1.tiles.requestTileTreeProps(\"0x1c\");\n expect(tree).not.to.be.undefined;\n\n expect(tree.id).to.equal(\"0x1c\");\n expect(tree.maxTilesToSkip).to.equal(1);\n expect(tree.rootTile).not.to.be.undefined;\n\n // Empty model => identity transform\n const tf = Transform.fromJSON(tree.location);\n expect(tf.matrix.isIdentity).to.be.true;\n expect(tf.origin.x).to.equal(0);\n expect(tf.origin.y).to.equal(0);\n expect(tf.origin.z).to.equal(0);\n\n expect(tree.rootTile.contentId).to.equal(\"0/0/0/0/1\");\n\n // Empty model => null range\n const range = Range3d.fromJSON(tree.rootTile.range);\n expect(range.isNull).to.be.true;\n\n expect(tree.rootTile.maximumSize).to.equal(0.0); // empty model => undisplayable root tile => size = 0.0\n expect(tree.rootTile.isLeaf).to.be.true; // empty model => empty tile\n expect(tree.rootTile.contentRange).to.be.undefined;\n });\n\n it(\"should throw on invalid tile requests\", async () => {\n const imodel1 = testBimReadonly;\n using _r = new DisableNativeAssertions();\n let error = await getIModelError(imodel1.tiles.requestTileTreeProps(\"0x12345\"));\n expectIModelError(IModelStatus.InvalidId, error);\n\n error = await getIModelError(imodel1.tiles.requestTileTreeProps(\"NotAValidId\"));\n expectIModelError(IModelStatus.InvalidId, error);\n\n error = await getIModelError(imodel1.tiles.requestTileContent(\"0x1c\", \"0/0/0/0\"));\n expectIModelError(IModelStatus.InvalidId, error);\n\n error = await getIModelError(imodel1.tiles.requestTileContent(\"0x12345\", \"0/0/0/0/1\"));\n expectIModelError(IModelStatus.InvalidId, error);\n\n error = await getIModelError(imodel1.tiles.requestTileContent(\"0x1c\", \"V/W/X/Y/Z\"));\n expectIModelError(IModelStatus.InvalidId, error);\n\n error = await getIModelError(imodel1.tiles.requestTileContent(\"0x1c\", \"NotAValidId\"));\n expectIModelError(IModelStatus.InvalidId, error);\n });\n\n it(\"should be some categories\", () => {\n const imodel1 = testBimReadonly;\n const categorySql = `SELECT ECInstanceId FROM ${Category.classFullName}`;\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n imodel1.withPreparedStatement(categorySql, (categoryStatement: ECSqlStatement): void => {\n let numCategories = 0;\n while (DbResult.BE_SQLITE_ROW === categoryStatement.step()) {\n numCategories++;\n const categoryId = categoryStatement.getValue(0).getId();\n const category: Element = imodel1.elements.getElement(categoryId);\n assert.isTrue(category instanceof Category, \"Should be instance of Category\");\n\n // verify the default subcategory.\n const defaultSubCategoryId = (category as Category).myDefaultSubCategoryId();\n const defaultSubCategory: Element = imodel1.elements.getElement(defaultSubCategoryId);\n assert.isTrue(defaultSubCategory instanceof SubCategory, \"defaultSubCategory should be instance of SubCategory\");\n if (defaultSubCategory instanceof SubCategory) {\n assert.isTrue(defaultSubCategory.parent!.id === categoryId, \"defaultSubCategory id should be prescribed value\");\n assert.isTrue(defaultSubCategory.getSubCategoryName() === category.code.value, \"DefaultSubcategory name should match that of Category\");\n assert.isTrue(defaultSubCategory.isDefaultSubCategory, \"isDefaultSubCategory should return true\");\n }\n\n // get the subcategories\n const subCategorySql = `SELECT ECInstanceId FROM ${SubCategory.classFullName} WHERE Parent.Id=:parentId`;\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n imodel1.withPreparedStatement(subCategorySql, (subCategoryStatement: ECSqlStatement): void => {\n let numSubCategories = 0;\n subCategoryStatement.bindId(\"parentId\", categoryId);\n while (DbResult.BE_SQLITE_ROW === subCategoryStatement.step()) {\n numSubCategories++;\n const subCategoryId = subCategoryStatement.getValue(0).getId();\n const subCategory: Element = imodel1.elements.getElement(subCategoryId);\n assert.isTrue(subCategory instanceof SubCategory);\n assert.isTrue(subCategory.parent!.id === categoryId);\n }\n assert.isAtLeast(numSubCategories, 1, \"Expected query to find at least one SubCategory\");\n });\n }\n assert.isAtLeast(numCategories, 1, \"Expected query to find some categories\");\n });\n });\n\n it(\"should be some 2d elements\", () => {\n const imodel2 = compatibilityReadonly;\n const sql = `SELECT ECInstanceId FROM ${DrawingGraphic.classFullName}`;\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n imodel2.withPreparedStatement(sql, (statement: ECSqlStatement): void => {\n let numDrawingGraphics = 0;\n let found25: boolean = false;\n let found26: boolean = false;\n while (DbResult.BE_SQLITE_ROW === statement.step()) {\n numDrawingGraphics++;\n const drawingGraphicId = statement.getValue(0).getId();\n const drawingGraphic = imodel2.elements.getElement<GeometricElement2d>({ id: drawingGraphicId, wantGeometry: true });\n assert.exists(drawingGraphic);\n assert.isTrue(drawingGraphic.className === \"DrawingGraphic\", \"Should be instance of DrawingGraphic\");\n assert.isTrue(drawingGraphic instanceof DrawingGraphic, \"Is instance of DrawingGraphic\");\n assert.isTrue(drawingGraphic instanceof GeometricElement2d, \"Is instance of GeometricElement2d\");\n if (Id64.getLocalId(drawingGraphic.id) === 0x25) {\n found25 = true;\n assert.isTrue(drawingGraphic.placement.origin.x === 0.0);\n assert.isTrue(drawingGraphic.placement.origin.y === 0.0);\n assert.isTrue(drawingGraphic.placement.angle.radians === 0.0);\n assert.isTrue(drawingGraphic.placement.bbox.low.x === 0.0);\n assert.isTrue(drawingGraphic.placement.bbox.low.y === 0.0);\n assert.isTrue(drawingGraphic.placement.bbox.high.x === 1.0);\n assert.isTrue(drawingGraphic.placement.bbox.high.y === 1.0);\n assert.isDefined(drawingGraphic.geom);\n } else if (Id64.getLocalId(drawingGraphic.id) === 0x26) {\n found26 = true;\n assert.isTrue(drawingGraphic.placement.origin.x === 1.0);\n assert.isTrue(drawingGraphic.placement.origin.y === 1.0);\n assert.isTrue(drawingGraphic.placement.angle.radians === 0.0);\n assert.isTrue(drawingGraphic.placement.bbox.low.x === 0.0);\n assert.isTrue(drawingGraphic.placement.bbox.low.y === 0.0);\n assert.isTrue(drawingGraphic.placement.bbox.high.x === 2.0);\n assert.isTrue(drawingGraphic.placement.bbox.high.y === 2.0);\n assert.isDefined(drawingGraphic.geom);\n }\n }\n assert.isAtLeast(numDrawingGraphics, 1, \"Expected query to find some DrawingGraphics\");\n assert.isTrue(found25, \"Expected to find a specific element\");\n assert.isTrue(found26, \"Expected to find a specific element\");\n });\n });\n\n it(\"should be children of RootSubject\", () => {\n const imodel2 = compatibilityReadonly;\n const sql = `SELECT ECInstanceId FROM ${Model.classFullName} WHERE ParentModel.Id=:parentModelId`;\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n imodel2.withPreparedStatement(sql, (statement: ECSqlStatement): void => {\n statement.bindId(\"parentModelId\", IModel.repositoryModelId);\n let numModels = 0;\n while (DbResult.BE_SQLITE_ROW === statement.step()) {\n numModels++;\n const modelId = statement.getValue(0).getId();\n const model = imodel2.models.getModel(modelId);\n assert.exists(model, \"Model should exist\");\n assert.isTrue(model instanceof Model);\n\n // should be an element with the same Id.\n const modeledElement = imodel2.elements.getElement(modelId);\n assert.exists(modeledElement, \"Modeled Element should exist\");\n\n if (model.className === \"LinkModel\") {\n // expect LinkModel to be accompanied by LinkPartition\n assert.isTrue(modeledElement instanceof LinkPartition);\n continue;\n } else if (model.className === \"DictionaryModel\") {\n assert.isTrue(modeledElement instanceof DefinitionPartition);\n continue;\n } else if (model.className === \"PhysicalModel\") {\n assert.isTrue(modeledElement instanceof PhysicalPartition);\n continue;\n } else if (model.className === \"GroupModel\") {\n assert.isTrue(modeledElement instanceof GroupInformationPartition);\n continue;\n } else if (model.className === \"DocumentListModel\") {\n assert.isTrue(modeledElement instanceof DocumentPartition);\n continue;\n } else if (model.className === \"DefinitionModel\") {\n assert.isTrue(modeledElement instanceof DefinitionPartition);\n continue;\n } else {\n assert.isTrue(false, \"Expected a known model type\");\n }\n }\n assert.isAtLeast(numModels, 1, \"Expected query to find some Models\");\n });\n });\n\n it(\"update the project extents\", async () => {\n const imodel1 = trackMutableIModel(await importTestBim(createIModelFromSeed(\"models-project-extents.bim\", \"test.bim\")));\n const originalExtents = imodel1.projectExtents;\n const newExtents = Range3d.create(originalExtents.low, originalExtents.high);\n newExtents.low.x -= 50;\n newExtents.low.y -= 25;\n newExtents.low.z -= 189;\n newExtents.high.x += 1087;\n newExtents.high.y += 19;\n newExtents.high.z += .001;\n await withEditTxn(imodel1, async (txn) => txn.updateProjectExtents(newExtents));\n\n const updatedProps = imodel1[_nativeDb].getIModelProps();\n assert.isTrue(updatedProps.hasOwnProperty(\"projectExtents\"), \"Returned property JSON object has project extents\");\n const updatedExtents = Range3d.fromJSON(updatedProps.projectExtents);\n assert.isTrue(newExtents.isAlmostEqual(updatedExtents), \"Project extents successfully updated in database\");\n });\n\n it(\"should do CRUD on models\", () => {\n\n const testImodel = trackMutableIModel(createIModelFromSeed(\"models-CRUD-CompatibilityTestSeed.bim\", \"CompatibilityTestSeed.bim\"));\n const txn = new EditTxn(testImodel, \"CRUD on models\");\n txn.start();\n\n const [modeledElementId, newModelId] = IModelTestUtils.createAndInsertPhysicalPartitionAndModel(txn, Code.createEmpty(), true);\n\n const newModelPersist = testImodel.models.getModel(newModelId);\n\n // Check that it has the properties that we set.\n assert.equal(newModelPersist.classFullName, PhysicalModel.classFullName);\n assert.isTrue(newModelPersist.isPrivate);\n assert.deepEqual(newModelPersist.modeledElement.id, modeledElementId);\n\n // Update the model\n newModelPersist.isPrivate = false;\n txn.updateModel(newModelPersist.toJSON());\n // ... and check that it updated the model in the db\n const newModelPersist2 = testImodel.models.getModel(newModelId);\n assert.isFalse(newModelPersist2.isPrivate);\n\n // Delete the model\n txn.deleteModel(newModelId);\n\n // Test insertModel error handling\n try {\n txn.insertModel({\n classFullName: DefinitionModel.classFullName,\n modeledElement: { id: \"0x10000000bad\" },\n });\n } catch (error: any) {\n assert.isTrue(error instanceof IModelError || error.iTwinErrorId !== undefined);\n }\n\n txn.end();\n\n });\n\n it(\"should insert DefinitionSets\", () => {\n const iModelFileName: string = IModelTestUtils.prepareOutputFile(\"IModel\", \"DefinitionSets.bim\");\n const iModelDb = SnapshotDb.createEmpty(iModelFileName, { rootSubject: { name: \"DefinitionSets\" }, createClassViews: true });\n const txn = new EditTxn(iModelDb, \"definition sets\");\n txn.start();\n const definitionContainerId = DefinitionContainer.insert(txn, IModel.dictionaryId, Code.createEmpty());\n assert.exists(iModelDb.elements.getElement<DefinitionContainer>(definitionContainerId));\n assert.exists(iModelDb.models.getModel<DefinitionModel>(definitionContainerId));\n const categoryId1 = SpatialCategory.insert(txn, definitionContainerId, \"Category1\", new SubCategoryAppearance());\n const categoryId2 = SpatialCategory.insert(txn, definitionContainerId, \"Category2\", new SubCategoryAppearance());\n const categoryId3 = SpatialCategory.insert(txn, definitionContainerId, \"Category3\", new SubCategoryAppearance());\n const definitionGroupId = DefinitionGroup.create(iModelDb, definitionContainerId, Code.createEmpty()).insert(txn);\n DefinitionGroupGroupsDefinitions.insert(txn, definitionGroupId, categoryId1);\n DefinitionGroupGroupsDefinitions.insert(txn, definitionGroupId, categoryId2);\n DefinitionGroupGroupsDefinitions.insert(txn, definitionGroupId, categoryId3);\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n const numMembers = iModelDb.withPreparedStatement(`SELECT COUNT(*) FROM ${DefinitionGroupGroupsDefinitions.classFullName}`, (statement: ECSqlStatement): number => {\n return statement.step() === DbResult.BE_SQLITE_ROW ? statement.getValue(0).getInteger() : 0;\n });\n assert.equal(numMembers, 3);\n txn.end();\n iModelDb.close();\n });\n});\n"]}
@@ -165,50 +165,50 @@ describe("iModel relationships", () => {
165
165
  IModelJsFs.unlinkSync(imodelPath);
166
166
  const testImodel = SnapshotDb.createEmpty(imodelPath, { rootSubject: { name: "invalidRelationshipClass" } });
167
167
  await testImodel.importSchemaStrings([
168
- `<?xml version="1.0" encoding="UTF-8"?>
169
- <ECSchema schemaName="TestRelationSchema" alias="trs" version="01.00" xmlns="http://www.bentley.com/schemas/Bentley.ECXML.3.1">
170
- <ECSchemaReference name="BisCore" version="01.00" alias="bis"/>
171
- <ECEntityClass typeName="TestElement">
172
- <BaseClass>bis:PhysicalElement</BaseClass>
173
- <ECProperty propertyName="Name" typeName="string" />
174
- </ECEntityClass>
175
-
176
- <ECEntityClass typeName="ChildA" >
177
- <BaseClass>TestElement</BaseClass>
178
- <ECNavigationProperty propertyName="NavPropChildB" relationshipName="ADrivesB" direction="Forward" readOnly="True">
179
- </ECNavigationProperty>
180
- </ECEntityClass>
181
-
182
- <ECEntityClass typeName="ChildB" >
183
- <BaseClass>TestElement</BaseClass>
184
- </ECEntityClass>
185
-
186
- <ECRelationshipClass typeName="ADrivesB" strengthDirection="Backward" strength="referencing" modifier="Sealed">
187
- <Source multiplicity="(0..*)" polymorphic="true" roleLabel="drives">
188
- <Class class="ChildA"/>
189
- </Source>
190
- <Target multiplicity="(0..1)" polymorphic="true" roleLabel="is driven by">
191
- <Class class="ChildB"/>
192
- </Target>
193
- </ECRelationshipClass>
194
-
195
- <ECEntityClass typeName="ChildC">
196
- <BaseClass>TestElement</BaseClass>
197
- </ECEntityClass>
198
-
199
- <ECEntityClass typeName="ChildD">
200
- <BaseClass>TestElement</BaseClass>
201
- </ECEntityClass>
202
-
203
- <ECRelationshipClass typeName="CIsRelatedToD" strength="referencing" modifier="Sealed">
204
- <BaseClass>bis:ElementRefersToElements</BaseClass>
205
- <Source multiplicity="(0..*)" roleLabel="IsRelatedTo" polymorphic="true">
206
- <Class class="ChildC"/>
207
- </Source>
208
- <Target multiplicity="(0..*)" roleLabel="IsRelatedTo (Reversed)" polymorphic="true">
209
- <Class class="ChildD"/>
210
- </Target>
211
- </ECRelationshipClass>
168
+ `<?xml version="1.0" encoding="UTF-8"?>
169
+ <ECSchema schemaName="TestRelationSchema" alias="trs" version="01.00" xmlns="http://www.bentley.com/schemas/Bentley.ECXML.3.1">
170
+ <ECSchemaReference name="BisCore" version="01.00" alias="bis"/>
171
+ <ECEntityClass typeName="TestElement">
172
+ <BaseClass>bis:PhysicalElement</BaseClass>
173
+ <ECProperty propertyName="Name" typeName="string" />
174
+ </ECEntityClass>
175
+
176
+ <ECEntityClass typeName="ChildA" >
177
+ <BaseClass>TestElement</BaseClass>
178
+ <ECNavigationProperty propertyName="NavPropChildB" relationshipName="ADrivesB" direction="Forward" readOnly="True">
179
+ </ECNavigationProperty>
180
+ </ECEntityClass>
181
+
182
+ <ECEntityClass typeName="ChildB" >
183
+ <BaseClass>TestElement</BaseClass>
184
+ </ECEntityClass>
185
+
186
+ <ECRelationshipClass typeName="ADrivesB" strengthDirection="Backward" strength="referencing" modifier="Sealed">
187
+ <Source multiplicity="(0..*)" polymorphic="true" roleLabel="drives">
188
+ <Class class="ChildA"/>
189
+ </Source>
190
+ <Target multiplicity="(0..1)" polymorphic="true" roleLabel="is driven by">
191
+ <Class class="ChildB"/>
192
+ </Target>
193
+ </ECRelationshipClass>
194
+
195
+ <ECEntityClass typeName="ChildC">
196
+ <BaseClass>TestElement</BaseClass>
197
+ </ECEntityClass>
198
+
199
+ <ECEntityClass typeName="ChildD">
200
+ <BaseClass>TestElement</BaseClass>
201
+ </ECEntityClass>
202
+
203
+ <ECRelationshipClass typeName="CIsRelatedToD" strength="referencing" modifier="Sealed">
204
+ <BaseClass>bis:ElementRefersToElements</BaseClass>
205
+ <Source multiplicity="(0..*)" roleLabel="IsRelatedTo" polymorphic="true">
206
+ <Class class="ChildC"/>
207
+ </Source>
208
+ <Target multiplicity="(0..*)" roleLabel="IsRelatedTo (Reversed)" polymorphic="true">
209
+ <Class class="ChildD"/>
210
+ </Target>
211
+ </ECRelationshipClass>
212
212
  </ECSchema>`
213
213
  ]);
214
214
  // Enable ECSQL write validation and verify it's set