@itwin/core-backend 5.3.0-dev.9 → 5.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (490) hide show
  1. package/CHANGELOG.md +60 -1
  2. package/lib/cjs/BackendHubAccess.js.map +1 -1
  3. package/lib/cjs/BackendLoggerCategory.js.map +1 -1
  4. package/lib/cjs/BisCoreSchema.js.map +1 -1
  5. package/lib/cjs/BlobContainerService.js.map +1 -1
  6. package/lib/cjs/BriefcaseManager.d.ts.map +1 -1
  7. package/lib/cjs/BriefcaseManager.js +14 -0
  8. package/lib/cjs/BriefcaseManager.js.map +1 -1
  9. package/lib/cjs/CatalogDb.js.map +1 -1
  10. package/lib/cjs/Category.js.map +1 -1
  11. package/lib/cjs/ChangeSummaryManager.js +2 -2
  12. package/lib/cjs/ChangeSummaryManager.js.map +1 -1
  13. package/lib/cjs/ChangedElementsDb.js.map +1 -1
  14. package/lib/cjs/ChangesetECAdaptor.js +248 -248
  15. package/lib/cjs/ChangesetECAdaptor.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.d.ts +2 -0
  21. package/lib/cjs/CloudSqlite.d.ts.map +1 -1
  22. package/lib/cjs/CloudSqlite.js.map +1 -1
  23. package/lib/cjs/CodeService.js.map +1 -1
  24. package/lib/cjs/CodeSpecs.js.map +1 -1
  25. package/lib/cjs/ConcurrentQuery.js.map +1 -1
  26. package/lib/cjs/CustomViewState3dCreator.js.map +1 -1
  27. package/lib/cjs/DevTools.js.map +1 -1
  28. package/lib/cjs/DisplayStyle.d.ts +2 -2
  29. package/lib/cjs/DisplayStyle.d.ts.map +1 -1
  30. package/lib/cjs/DisplayStyle.js +4 -4
  31. package/lib/cjs/DisplayStyle.js.map +1 -1
  32. package/lib/cjs/ECDb.js +1 -1
  33. package/lib/cjs/ECDb.js.map +1 -1
  34. package/lib/cjs/ECSchemaXmlContext.js.map +1 -1
  35. package/lib/cjs/ECSqlStatement.js.map +1 -1
  36. package/lib/cjs/Element.d.ts +31 -3
  37. package/lib/cjs/Element.d.ts.map +1 -1
  38. package/lib/cjs/Element.js +55 -3
  39. package/lib/cjs/Element.js.map +1 -1
  40. package/lib/cjs/ElementAspect.d.ts +24 -1
  41. package/lib/cjs/ElementAspect.d.ts.map +1 -1
  42. package/lib/cjs/ElementAspect.js +102 -1
  43. package/lib/cjs/ElementAspect.js.map +1 -1
  44. package/lib/cjs/ElementGraphics.js.map +1 -1
  45. package/lib/cjs/ElementTreeWalker.js.map +1 -1
  46. package/lib/cjs/Entity.js.map +1 -1
  47. package/lib/cjs/EntityReferences.js.map +1 -1
  48. package/lib/cjs/ExportGraphics.js.map +1 -1
  49. package/lib/cjs/ExternalSource.js.map +1 -1
  50. package/lib/cjs/FontFile.js.map +1 -1
  51. package/lib/cjs/GeoCoordConfig.js.map +1 -1
  52. package/lib/cjs/GeographicCRSServices.js.map +1 -1
  53. package/lib/cjs/GeometrySummary.js +47 -47
  54. package/lib/cjs/GeometrySummary.js.map +1 -1
  55. package/lib/cjs/IModelDb.d.ts +28 -4
  56. package/lib/cjs/IModelDb.d.ts.map +1 -1
  57. package/lib/cjs/IModelDb.js +76 -14
  58. package/lib/cjs/IModelDb.js.map +1 -1
  59. package/lib/cjs/IModelDbFonts.js.map +1 -1
  60. package/lib/cjs/IModelElementCloneContext.d.ts +1 -1
  61. package/lib/cjs/IModelElementCloneContext.d.ts.map +1 -1
  62. package/lib/cjs/IModelElementCloneContext.js +2 -2
  63. package/lib/cjs/IModelElementCloneContext.js.map +1 -1
  64. package/lib/cjs/IModelHost.js.map +1 -1
  65. package/lib/cjs/IModelIncrementalSchemaLocater.js.map +1 -1
  66. package/lib/cjs/IModelJsFs.js.map +1 -1
  67. package/lib/cjs/ImageSourceConversion.js.map +1 -1
  68. package/lib/cjs/IpcHost.js.map +1 -1
  69. package/lib/cjs/LineStyle.js.map +1 -1
  70. package/lib/cjs/LocalHub.js +1 -1
  71. package/lib/cjs/LocalHub.js.map +1 -1
  72. package/lib/cjs/LocalhostIpcHost.js.map +1 -1
  73. package/lib/cjs/LockControl.js.map +1 -1
  74. package/lib/cjs/Material.d.ts +1 -1
  75. package/lib/cjs/Material.d.ts.map +1 -1
  76. package/lib/cjs/Material.js +2 -2
  77. package/lib/cjs/Material.js.map +1 -1
  78. package/lib/cjs/Model.js.map +1 -1
  79. package/lib/cjs/NativeAppStorage.js.map +1 -1
  80. package/lib/cjs/NativeHost.js.map +1 -1
  81. package/lib/cjs/NavigationRelationship.d.ts +15 -0
  82. package/lib/cjs/NavigationRelationship.d.ts.map +1 -1
  83. package/lib/cjs/NavigationRelationship.js +22 -1
  84. package/lib/cjs/NavigationRelationship.js.map +1 -1
  85. package/lib/cjs/PromiseMemoizer.js.map +1 -1
  86. package/lib/cjs/PropertyStore.js.map +1 -1
  87. package/lib/cjs/Relationship.d.ts +5 -0
  88. package/lib/cjs/Relationship.d.ts.map +1 -1
  89. package/lib/cjs/Relationship.js +7 -0
  90. package/lib/cjs/Relationship.js.map +1 -1
  91. package/lib/cjs/RpcBackend.js.map +1 -1
  92. package/lib/cjs/SQLiteDb.js.map +1 -1
  93. package/lib/cjs/Schema.js.map +1 -1
  94. package/lib/cjs/SchemaSync.js.map +1 -1
  95. package/lib/cjs/SchemaUtils.js.map +1 -1
  96. package/lib/cjs/SheetIndex.js.map +1 -1
  97. package/lib/cjs/SqliteChangesetReader.js.map +1 -1
  98. package/lib/cjs/SqliteStatement.js.map +1 -1
  99. package/lib/cjs/StashManager.js.map +1 -1
  100. package/lib/cjs/Texture.js.map +1 -1
  101. package/lib/cjs/TileStorage.js.map +1 -1
  102. package/lib/cjs/TxnManager.d.ts +25 -0
  103. package/lib/cjs/TxnManager.d.ts.map +1 -1
  104. package/lib/cjs/TxnManager.js +61 -4
  105. package/lib/cjs/TxnManager.js.map +1 -1
  106. package/lib/cjs/ViewDefinition.d.ts +1 -1
  107. package/lib/cjs/ViewDefinition.d.ts.map +1 -1
  108. package/lib/cjs/ViewDefinition.js +2 -2
  109. package/lib/cjs/ViewDefinition.js.map +1 -1
  110. package/lib/cjs/ViewStateHydrator.js.map +1 -1
  111. package/lib/cjs/ViewStore.js.map +1 -1
  112. package/lib/cjs/annotations/ElementDrivesTextAnnotation.d.ts +15 -1
  113. package/lib/cjs/annotations/ElementDrivesTextAnnotation.d.ts.map +1 -1
  114. package/lib/cjs/annotations/ElementDrivesTextAnnotation.js +36 -23
  115. package/lib/cjs/annotations/ElementDrivesTextAnnotation.js.map +1 -1
  116. package/lib/cjs/annotations/FrameGeometry.js.map +1 -1
  117. package/lib/cjs/annotations/LeaderGeometry.d.ts +13 -1
  118. package/lib/cjs/annotations/LeaderGeometry.d.ts.map +1 -1
  119. package/lib/cjs/annotations/LeaderGeometry.js +88 -10
  120. package/lib/cjs/annotations/LeaderGeometry.js.map +1 -1
  121. package/lib/cjs/annotations/TextAnnotationElement.d.ts +6 -5
  122. package/lib/cjs/annotations/TextAnnotationElement.d.ts.map +1 -1
  123. package/lib/cjs/annotations/TextAnnotationElement.js +33 -14
  124. package/lib/cjs/annotations/TextAnnotationElement.js.map +1 -1
  125. package/lib/cjs/annotations/TextAnnotationGeometry.js.map +1 -1
  126. package/lib/cjs/annotations/TextBlockGeometry.js.map +1 -1
  127. package/lib/cjs/annotations/TextBlockLayout.d.ts.map +1 -1
  128. package/lib/cjs/annotations/TextBlockLayout.js +2 -1
  129. package/lib/cjs/annotations/TextBlockLayout.js.map +1 -1
  130. package/lib/cjs/assets/IModelChange.02.00.00.ecschema.xml +90 -90
  131. package/lib/cjs/assets/Settings/Schemas/Base.Schema.json +32 -32
  132. package/lib/cjs/assets/Settings/Schemas/Gcs.schema.json +27 -27
  133. package/lib/cjs/assets/Settings/Schemas/Workspace.Schema.json +94 -94
  134. package/lib/cjs/assets/Settings/backend.setting.json5 +21 -21
  135. package/lib/cjs/core-backend.js.map +1 -1
  136. package/lib/cjs/domains/FunctionalElements.js.map +1 -1
  137. package/lib/cjs/domains/FunctionalSchema.js.map +1 -1
  138. package/lib/cjs/domains/GenericElements.js.map +1 -1
  139. package/lib/cjs/domains/GenericSchema.js.map +1 -1
  140. package/lib/cjs/internal/ChangesetConflictArgs.js.map +1 -1
  141. package/lib/cjs/internal/ChannelAdmin.js.map +1 -1
  142. package/lib/cjs/internal/ElementLRUCache.js.map +1 -1
  143. package/lib/cjs/internal/FontFileImpl.js.map +1 -1
  144. package/lib/cjs/internal/HubMock.js.map +1 -1
  145. package/lib/cjs/internal/IModelDbFontsImpl.js.map +1 -1
  146. package/lib/cjs/internal/NativePlatform.js.map +1 -1
  147. package/lib/cjs/internal/NoLocks.js.map +1 -1
  148. package/lib/cjs/internal/ServerBasedLocks.js.map +1 -1
  149. package/lib/cjs/internal/Symbols.js.map +1 -1
  150. package/lib/cjs/internal/annotations/fields.d.ts +3 -2
  151. package/lib/cjs/internal/annotations/fields.d.ts.map +1 -1
  152. package/lib/cjs/internal/annotations/fields.js +12 -5
  153. package/lib/cjs/internal/annotations/fields.js.map +1 -1
  154. package/lib/cjs/internal/cross-package.js.map +1 -1
  155. package/lib/cjs/internal/workspace/SettingsImpl.js.map +1 -1
  156. package/lib/cjs/internal/workspace/SettingsSchemasImpl.js.map +1 -1
  157. package/lib/cjs/internal/workspace/WorkspaceImpl.js.map +1 -1
  158. package/lib/cjs/internal/workspace/WorkspaceSqliteDb.js.map +1 -1
  159. package/lib/cjs/rpc/multipart.js.map +1 -1
  160. package/lib/cjs/rpc/tracing.js.map +1 -1
  161. package/lib/cjs/rpc/web/logging.js.map +1 -1
  162. package/lib/cjs/rpc/web/request.js.map +1 -1
  163. package/lib/cjs/rpc/web/response.js.map +1 -1
  164. package/lib/cjs/rpc-impl/DevToolsRpcImpl.js.map +1 -1
  165. package/lib/cjs/rpc-impl/IModelReadRpcImpl.js.map +1 -1
  166. package/lib/cjs/rpc-impl/IModelTileRpcImpl.js.map +1 -1
  167. package/lib/cjs/rpc-impl/RpcBriefcaseUtility.js.map +1 -1
  168. package/lib/cjs/rpc-impl/SnapshotIModelRpcImpl.js.map +1 -1
  169. package/lib/cjs/workspace/Settings.js.map +1 -1
  170. package/lib/cjs/workspace/SettingsSchemas.js.map +1 -1
  171. package/lib/cjs/workspace/Workspace.js.map +1 -1
  172. package/lib/cjs/workspace/WorkspaceEditor.js.map +1 -1
  173. package/lib/esm/BackendHubAccess.js.map +1 -1
  174. package/lib/esm/BackendLoggerCategory.js.map +1 -1
  175. package/lib/esm/BisCoreSchema.js.map +1 -1
  176. package/lib/esm/BlobContainerService.js.map +1 -1
  177. package/lib/esm/BriefcaseManager.d.ts.map +1 -1
  178. package/lib/esm/BriefcaseManager.js +14 -0
  179. package/lib/esm/BriefcaseManager.js.map +1 -1
  180. package/lib/esm/CatalogDb.js.map +1 -1
  181. package/lib/esm/Category.js.map +1 -1
  182. package/lib/esm/ChangeSummaryManager.js +2 -2
  183. package/lib/esm/ChangeSummaryManager.js.map +1 -1
  184. package/lib/esm/ChangedElementsDb.js.map +1 -1
  185. package/lib/esm/ChangesetECAdaptor.js +248 -248
  186. package/lib/esm/ChangesetECAdaptor.js.map +1 -1
  187. package/lib/esm/ChannelControl.js.map +1 -1
  188. package/lib/esm/CheckpointManager.js.map +1 -1
  189. package/lib/esm/ClassRegistry.js +5 -5
  190. package/lib/esm/ClassRegistry.js.map +1 -1
  191. package/lib/esm/CloudSqlite.d.ts +2 -0
  192. package/lib/esm/CloudSqlite.d.ts.map +1 -1
  193. package/lib/esm/CloudSqlite.js.map +1 -1
  194. package/lib/esm/CodeService.js.map +1 -1
  195. package/lib/esm/CodeSpecs.js.map +1 -1
  196. package/lib/esm/ConcurrentQuery.js.map +1 -1
  197. package/lib/esm/CustomViewState3dCreator.js.map +1 -1
  198. package/lib/esm/DevTools.js.map +1 -1
  199. package/lib/esm/DisplayStyle.d.ts +2 -2
  200. package/lib/esm/DisplayStyle.d.ts.map +1 -1
  201. package/lib/esm/DisplayStyle.js +4 -4
  202. package/lib/esm/DisplayStyle.js.map +1 -1
  203. package/lib/esm/ECDb.js +1 -1
  204. package/lib/esm/ECDb.js.map +1 -1
  205. package/lib/esm/ECSchemaXmlContext.js.map +1 -1
  206. package/lib/esm/ECSqlStatement.js.map +1 -1
  207. package/lib/esm/Element.d.ts +31 -3
  208. package/lib/esm/Element.d.ts.map +1 -1
  209. package/lib/esm/Element.js +55 -4
  210. package/lib/esm/Element.js.map +1 -1
  211. package/lib/esm/ElementAspect.d.ts +24 -1
  212. package/lib/esm/ElementAspect.d.ts.map +1 -1
  213. package/lib/esm/ElementAspect.js +101 -1
  214. package/lib/esm/ElementAspect.js.map +1 -1
  215. package/lib/esm/ElementGraphics.js.map +1 -1
  216. package/lib/esm/ElementTreeWalker.js.map +1 -1
  217. package/lib/esm/Entity.js.map +1 -1
  218. package/lib/esm/EntityReferences.js.map +1 -1
  219. package/lib/esm/ExportGraphics.js.map +1 -1
  220. package/lib/esm/ExternalSource.js.map +1 -1
  221. package/lib/esm/FontFile.js.map +1 -1
  222. package/lib/esm/GeoCoordConfig.js.map +1 -1
  223. package/lib/esm/GeographicCRSServices.js.map +1 -1
  224. package/lib/esm/GeometrySummary.js +47 -47
  225. package/lib/esm/GeometrySummary.js.map +1 -1
  226. package/lib/esm/IModelDb.d.ts +28 -4
  227. package/lib/esm/IModelDb.d.ts.map +1 -1
  228. package/lib/esm/IModelDb.js +76 -14
  229. package/lib/esm/IModelDb.js.map +1 -1
  230. package/lib/esm/IModelDbFonts.js.map +1 -1
  231. package/lib/esm/IModelElementCloneContext.d.ts +1 -1
  232. package/lib/esm/IModelElementCloneContext.d.ts.map +1 -1
  233. package/lib/esm/IModelElementCloneContext.js +2 -2
  234. package/lib/esm/IModelElementCloneContext.js.map +1 -1
  235. package/lib/esm/IModelHost.js.map +1 -1
  236. package/lib/esm/IModelIncrementalSchemaLocater.js.map +1 -1
  237. package/lib/esm/IModelJsFs.js.map +1 -1
  238. package/lib/esm/ImageSourceConversion.js.map +1 -1
  239. package/lib/esm/IpcHost.js.map +1 -1
  240. package/lib/esm/LineStyle.js.map +1 -1
  241. package/lib/esm/LocalHub.js +1 -1
  242. package/lib/esm/LocalHub.js.map +1 -1
  243. package/lib/esm/LocalhostIpcHost.js.map +1 -1
  244. package/lib/esm/LockControl.js.map +1 -1
  245. package/lib/esm/Material.d.ts +1 -1
  246. package/lib/esm/Material.d.ts.map +1 -1
  247. package/lib/esm/Material.js +2 -2
  248. package/lib/esm/Material.js.map +1 -1
  249. package/lib/esm/Model.js.map +1 -1
  250. package/lib/esm/NativeAppStorage.js.map +1 -1
  251. package/lib/esm/NativeHost.js.map +1 -1
  252. package/lib/esm/NavigationRelationship.d.ts +15 -0
  253. package/lib/esm/NavigationRelationship.d.ts.map +1 -1
  254. package/lib/esm/NavigationRelationship.js +19 -0
  255. package/lib/esm/NavigationRelationship.js.map +1 -1
  256. package/lib/esm/PromiseMemoizer.js.map +1 -1
  257. package/lib/esm/PropertyStore.js.map +1 -1
  258. package/lib/esm/Relationship.d.ts +5 -0
  259. package/lib/esm/Relationship.d.ts.map +1 -1
  260. package/lib/esm/Relationship.js +7 -0
  261. package/lib/esm/Relationship.js.map +1 -1
  262. package/lib/esm/RpcBackend.js.map +1 -1
  263. package/lib/esm/SQLiteDb.js.map +1 -1
  264. package/lib/esm/Schema.js.map +1 -1
  265. package/lib/esm/SchemaSync.js.map +1 -1
  266. package/lib/esm/SchemaUtils.js.map +1 -1
  267. package/lib/esm/SheetIndex.js.map +1 -1
  268. package/lib/esm/SqliteChangesetReader.js.map +1 -1
  269. package/lib/esm/SqliteStatement.js.map +1 -1
  270. package/lib/esm/StashManager.js.map +1 -1
  271. package/lib/esm/Texture.js.map +1 -1
  272. package/lib/esm/TileStorage.js.map +1 -1
  273. package/lib/esm/TxnManager.d.ts +25 -0
  274. package/lib/esm/TxnManager.d.ts.map +1 -1
  275. package/lib/esm/TxnManager.js +61 -4
  276. package/lib/esm/TxnManager.js.map +1 -1
  277. package/lib/esm/ViewDefinition.d.ts +1 -1
  278. package/lib/esm/ViewDefinition.d.ts.map +1 -1
  279. package/lib/esm/ViewDefinition.js +2 -2
  280. package/lib/esm/ViewDefinition.js.map +1 -1
  281. package/lib/esm/ViewStateHydrator.js.map +1 -1
  282. package/lib/esm/ViewStore.js.map +1 -1
  283. package/lib/esm/annotations/ElementDrivesTextAnnotation.d.ts +15 -1
  284. package/lib/esm/annotations/ElementDrivesTextAnnotation.d.ts.map +1 -1
  285. package/lib/esm/annotations/ElementDrivesTextAnnotation.js +37 -24
  286. package/lib/esm/annotations/ElementDrivesTextAnnotation.js.map +1 -1
  287. package/lib/esm/annotations/FrameGeometry.js.map +1 -1
  288. package/lib/esm/annotations/LeaderGeometry.d.ts +13 -1
  289. package/lib/esm/annotations/LeaderGeometry.d.ts.map +1 -1
  290. package/lib/esm/annotations/LeaderGeometry.js +89 -12
  291. package/lib/esm/annotations/LeaderGeometry.js.map +1 -1
  292. package/lib/esm/annotations/TextAnnotationElement.d.ts +6 -5
  293. package/lib/esm/annotations/TextAnnotationElement.d.ts.map +1 -1
  294. package/lib/esm/annotations/TextAnnotationElement.js +33 -14
  295. package/lib/esm/annotations/TextAnnotationElement.js.map +1 -1
  296. package/lib/esm/annotations/TextAnnotationGeometry.js.map +1 -1
  297. package/lib/esm/annotations/TextBlockGeometry.js.map +1 -1
  298. package/lib/esm/annotations/TextBlockLayout.d.ts.map +1 -1
  299. package/lib/esm/annotations/TextBlockLayout.js +2 -1
  300. package/lib/esm/annotations/TextBlockLayout.js.map +1 -1
  301. package/lib/esm/core-backend.js.map +1 -1
  302. package/lib/esm/domains/FunctionalElements.js.map +1 -1
  303. package/lib/esm/domains/FunctionalSchema.js.map +1 -1
  304. package/lib/esm/domains/GenericElements.js.map +1 -1
  305. package/lib/esm/domains/GenericSchema.js.map +1 -1
  306. package/lib/esm/internal/ChangesetConflictArgs.js.map +1 -1
  307. package/lib/esm/internal/ChannelAdmin.js.map +1 -1
  308. package/lib/esm/internal/ElementLRUCache.js.map +1 -1
  309. package/lib/esm/internal/FontFileImpl.js.map +1 -1
  310. package/lib/esm/internal/HubMock.js.map +1 -1
  311. package/lib/esm/internal/IModelDbFontsImpl.js.map +1 -1
  312. package/lib/esm/internal/NativePlatform.js.map +1 -1
  313. package/lib/esm/internal/NoLocks.js.map +1 -1
  314. package/lib/esm/internal/ServerBasedLocks.js.map +1 -1
  315. package/lib/esm/internal/Symbols.js.map +1 -1
  316. package/lib/esm/internal/annotations/fields.d.ts +3 -2
  317. package/lib/esm/internal/annotations/fields.d.ts.map +1 -1
  318. package/lib/esm/internal/annotations/fields.js +11 -5
  319. package/lib/esm/internal/annotations/fields.js.map +1 -1
  320. package/lib/esm/internal/cross-package.js.map +1 -1
  321. package/lib/esm/internal/workspace/SettingsImpl.js.map +1 -1
  322. package/lib/esm/internal/workspace/SettingsSchemasImpl.js.map +1 -1
  323. package/lib/esm/internal/workspace/WorkspaceImpl.js.map +1 -1
  324. package/lib/esm/internal/workspace/WorkspaceSqliteDb.js.map +1 -1
  325. package/lib/esm/rpc/multipart.js.map +1 -1
  326. package/lib/esm/rpc/tracing.js.map +1 -1
  327. package/lib/esm/rpc/web/logging.js.map +1 -1
  328. package/lib/esm/rpc/web/request.js.map +1 -1
  329. package/lib/esm/rpc/web/response.js.map +1 -1
  330. package/lib/esm/rpc-impl/DevToolsRpcImpl.js.map +1 -1
  331. package/lib/esm/rpc-impl/IModelReadRpcImpl.js.map +1 -1
  332. package/lib/esm/rpc-impl/IModelTileRpcImpl.js.map +1 -1
  333. package/lib/esm/rpc-impl/RpcBriefcaseUtility.js.map +1 -1
  334. package/lib/esm/rpc-impl/SnapshotIModelRpcImpl.js.map +1 -1
  335. package/lib/esm/test/AdvancedEqual.js.map +1 -1
  336. package/lib/esm/test/AnnotationTestUtils.js.map +1 -1
  337. package/lib/esm/test/AttachDb.test.js +11 -11
  338. package/lib/esm/test/AttachDb.test.js.map +1 -1
  339. package/lib/esm/test/ElementDrivesElement.test.d.ts +93 -0
  340. package/lib/esm/test/ElementDrivesElement.test.d.ts.map +1 -0
  341. package/lib/esm/test/ElementDrivesElement.test.js +862 -0
  342. package/lib/esm/test/ElementDrivesElement.test.js.map +1 -0
  343. package/lib/esm/test/ElementLRUCache.test.js +13 -0
  344. package/lib/esm/test/ElementLRUCache.test.js.map +1 -1
  345. package/lib/esm/test/GeometryTestUtil.js.map +1 -1
  346. package/lib/esm/test/IModelHost.test.js.map +1 -1
  347. package/lib/esm/test/IModelTestUtils.js.map +1 -1
  348. package/lib/esm/test/ImageSourceConversion.test.js.map +1 -1
  349. package/lib/esm/test/IpcHost.test.js.map +1 -1
  350. package/lib/esm/test/KnownTestLocations.js.map +1 -1
  351. package/lib/esm/test/PrintElementTree.js.map +1 -1
  352. package/lib/esm/test/PropertyDb.test.js.map +1 -1
  353. package/lib/esm/test/RevisionUtility.js.map +1 -1
  354. package/lib/esm/test/SchemaUtils.test.js +25 -25
  355. package/lib/esm/test/SchemaUtils.test.js.map +1 -1
  356. package/lib/esm/test/SequentialLogMatcher.js.map +1 -1
  357. package/lib/esm/test/TestChangeSetUtility.js.map +1 -1
  358. package/lib/esm/test/TestUtils.js.map +1 -1
  359. package/lib/esm/test/annotations/Fields.test.js +81 -37
  360. package/lib/esm/test/annotations/Fields.test.js.map +1 -1
  361. package/lib/esm/test/annotations/FrameGeometry.test.js.map +1 -1
  362. package/lib/esm/test/annotations/LeaderGeometry.test.js +47 -2
  363. package/lib/esm/test/annotations/LeaderGeometry.test.js.map +1 -1
  364. package/lib/esm/test/annotations/TextAnnotation.test.js +120 -31
  365. package/lib/esm/test/annotations/TextAnnotation.test.js.map +1 -1
  366. package/lib/esm/test/annotations/TextBlock.test.js.map +1 -1
  367. package/lib/esm/test/assets/IncrementalSchemaLocater/configs/old.config.js.map +1 -1
  368. package/lib/esm/test/assets/IncrementalSchemaLocater/configs/simple.config.js.map +1 -1
  369. package/lib/esm/test/categories/Category.test.js.map +1 -1
  370. package/lib/esm/test/codespec/CodeSpec.test.js.map +1 -1
  371. package/lib/esm/test/ecdb/CTE.test.js +88 -88
  372. package/lib/esm/test/ecdb/CTE.test.js.map +1 -1
  373. package/lib/esm/test/ecdb/ConcurrentQuery.test.js +17 -17
  374. package/lib/esm/test/ecdb/ConcurrentQuery.test.js.map +1 -1
  375. package/lib/esm/test/ecdb/ConcurrentQueryLoad.test.js +15 -15
  376. package/lib/esm/test/ecdb/ConcurrentQueryLoad.test.js.map +1 -1
  377. package/lib/esm/test/ecdb/ECDb.test.js +72 -72
  378. package/lib/esm/test/ecdb/ECDb.test.js.map +1 -1
  379. package/lib/esm/test/ecdb/ECDbTestHelper.js.map +1 -1
  380. package/lib/esm/test/ecdb/ECSchemaXmlContext.test.js.map +1 -1
  381. package/lib/esm/test/ecdb/ECSqlAst.test.js +65 -65
  382. package/lib/esm/test/ecdb/ECSqlAst.test.js.map +1 -1
  383. package/lib/esm/test/ecdb/ECSqlQuery.test.js.map +1 -1
  384. package/lib/esm/test/ecdb/ECSqlReader.test.js +16 -16
  385. package/lib/esm/test/ecdb/ECSqlReader.test.js.map +1 -1
  386. package/lib/esm/test/ecdb/ECSqlStatement.test.js +359 -328
  387. package/lib/esm/test/ecdb/ECSqlStatement.test.js.map +1 -1
  388. package/lib/esm/test/ecdb/SqliteStatement.test.js.map +1 -1
  389. package/lib/esm/test/ecsql/dataset/ECSqlDatasets.js.map +1 -1
  390. package/lib/esm/test/ecsql/src/ECSqlTestGenerator.js +21 -21
  391. package/lib/esm/test/ecsql/src/ECSqlTestGenerator.js.map +1 -1
  392. package/lib/esm/test/ecsql/src/ECSqlTestParser.js.map +1 -1
  393. package/lib/esm/test/ecsql/src/ECSqlTestRunner.test.js.map +1 -1
  394. package/lib/esm/test/element/DeleteDefinitionElements.test.js.map +1 -1
  395. package/lib/esm/test/element/ElementAspect.test.js +22 -22
  396. package/lib/esm/test/element/ElementAspect.test.js.map +1 -1
  397. package/lib/esm/test/element/ElementDependencyGraph.test.js.map +1 -1
  398. package/lib/esm/test/element/ElementRoundTrip.test.js +139 -139
  399. package/lib/esm/test/element/ElementRoundTrip.test.js.map +1 -1
  400. package/lib/esm/test/element/ExcludedElements.test.js.map +1 -1
  401. package/lib/esm/test/element/ExternalSource.test.js.map +1 -1
  402. package/lib/esm/test/element/NullStructArray.test.js +13 -13
  403. package/lib/esm/test/element/NullStructArray.test.js.map +1 -1
  404. package/lib/esm/test/element/ProjectInformationRecord.test.d.ts +2 -0
  405. package/lib/esm/test/element/ProjectInformationRecord.test.d.ts.map +1 -0
  406. package/lib/esm/test/element/ProjectInformationRecord.test.js +80 -0
  407. package/lib/esm/test/element/ProjectInformationRecord.test.js.map +1 -0
  408. package/lib/esm/test/element/SheetInformationAspect.test.d.ts +2 -0
  409. package/lib/esm/test/element/SheetInformationAspect.test.d.ts.map +1 -0
  410. package/lib/esm/test/element/SheetInformationAspect.test.js +182 -0
  411. package/lib/esm/test/element/SheetInformationAspect.test.js.map +1 -0
  412. package/lib/esm/test/element/UrlLink.test.js.map +1 -1
  413. package/lib/esm/test/font/FontFile.test.js.map +1 -1
  414. package/lib/esm/test/font/IModelDbFonts.test.js.map +1 -1
  415. package/lib/esm/test/hubaccess/ApplyChangeset.test.js +32 -32
  416. package/lib/esm/test/hubaccess/ApplyChangeset.test.js.map +1 -1
  417. package/lib/esm/test/hubaccess/BriefcaseManager.test.js.map +1 -1
  418. package/lib/esm/test/hubaccess/CheckpointManager.test.js.map +1 -1
  419. package/lib/esm/test/hubaccess/Rebase.test.js +387 -36
  420. package/lib/esm/test/hubaccess/Rebase.test.js.map +1 -1
  421. package/lib/esm/test/imageData.js.map +1 -1
  422. package/lib/esm/test/imodel/ElementTreeWalker.test.js.map +1 -1
  423. package/lib/esm/test/imodel/GetTextureImage.test.js.map +1 -1
  424. package/lib/esm/test/imodel/IModel.test.js +219 -46
  425. package/lib/esm/test/imodel/IModel.test.js.map +1 -1
  426. package/lib/esm/test/imodel/ProjectExtents.test.js.map +1 -1
  427. package/lib/esm/test/imodel/SchemaXmlImport.test.js.map +1 -1
  428. package/lib/esm/test/incrementalSchemaLocater/ECSqlQueries.test.js.map +1 -1
  429. package/lib/esm/test/incrementalSchemaLocater/IncrementalLoading.test.js.map +1 -1
  430. package/lib/esm/test/incrementalSchemaLocater/utils/IModelSchemaLocater.js.map +1 -1
  431. package/lib/esm/test/incrementalSchemaLocater/utils/IncrementalTestHelper.js.map +1 -1
  432. package/lib/esm/test/incrementalSchemaLocater/utils/TestSqlSchemaLocater.js.map +1 -1
  433. package/lib/esm/test/index.js.map +1 -1
  434. package/lib/esm/test/misc/DevTools.test.js.map +1 -1
  435. package/lib/esm/test/misc/EntitySubClasses.test.js.map +1 -1
  436. package/lib/esm/test/misc/GeoServices.test.js.map +1 -1
  437. package/lib/esm/test/misc/PromiseMemoizer.test.js.map +1 -1
  438. package/lib/esm/test/native/DgnDbWorker.test.js.map +1 -1
  439. package/lib/esm/test/rpc/response.test.js.map +1 -1
  440. package/lib/esm/test/schema/ClassRegistry.test.js +99 -99
  441. package/lib/esm/test/schema/ClassRegistry.test.js.map +1 -1
  442. package/lib/esm/test/schema/FunctionalDomain.test.js.map +1 -1
  443. package/lib/esm/test/schema/GenericDomain.test.js.map +1 -1
  444. package/lib/esm/test/schema/IModelSchemaContext.test.js.map +1 -1
  445. package/lib/esm/test/sheetindex/SheetIndex.test.js.map +1 -1
  446. package/lib/esm/test/standalone/ChangeMerge.test.js.map +1 -1
  447. package/lib/esm/test/standalone/ChangesetReader.test.js +187 -184
  448. package/lib/esm/test/standalone/ChangesetReader.test.js.map +1 -1
  449. package/lib/esm/test/standalone/CustomViewState3dCreator.test.js.map +1 -1
  450. package/lib/esm/test/standalone/DisplayStyle.test.js +6 -6
  451. package/lib/esm/test/standalone/DisplayStyle.test.js.map +1 -1
  452. package/lib/esm/test/standalone/Drawing.test.js.map +1 -1
  453. package/lib/esm/test/standalone/ElementGraphics.test.js +75 -6
  454. package/lib/esm/test/standalone/ElementGraphics.test.js.map +1 -1
  455. package/lib/esm/test/standalone/ElementMesh.test.js.map +1 -1
  456. package/lib/esm/test/standalone/ExportGraphics.test.js +14 -14
  457. package/lib/esm/test/standalone/ExportGraphics.test.js.map +1 -1
  458. package/lib/esm/test/standalone/GeometryChangeEvents.test.js.map +1 -1
  459. package/lib/esm/test/standalone/GeometryStream.test.js.map +1 -1
  460. package/lib/esm/test/standalone/HubMock.test.js.map +1 -1
  461. package/lib/esm/test/standalone/IModelLimits.test.js.map +1 -1
  462. package/lib/esm/test/standalone/IModelWrite.test.js +27 -27
  463. package/lib/esm/test/standalone/IModelWrite.test.js.map +1 -1
  464. package/lib/esm/test/standalone/InlineGeometryPartReferences.test.js.map +1 -1
  465. package/lib/esm/test/standalone/MergeConflict.test.js.map +1 -1
  466. package/lib/esm/test/standalone/NativeAppStorage.test.js.map +1 -1
  467. package/lib/esm/test/standalone/RenderMaterialElement.test.js +4 -4
  468. package/lib/esm/test/standalone/RenderMaterialElement.test.js.map +1 -1
  469. package/lib/esm/test/standalone/RenderTimeline.test.js.map +1 -1
  470. package/lib/esm/test/standalone/SQLiteDb.test.js.map +1 -1
  471. package/lib/esm/test/standalone/SchemaUtils.test.js.map +1 -1
  472. package/lib/esm/test/standalone/SectionDrawing.test.js.map +1 -1
  473. package/lib/esm/test/standalone/ServerBasedLocks.test.js.map +1 -1
  474. package/lib/esm/test/standalone/Setting.test.js.map +1 -1
  475. package/lib/esm/test/standalone/Settings.test.js.map +1 -1
  476. package/lib/esm/test/standalone/SettingsSchemas.test.js.map +1 -1
  477. package/lib/esm/test/standalone/SnapshotDb.test.js.map +1 -1
  478. package/lib/esm/test/standalone/Texture.test.js.map +1 -1
  479. package/lib/esm/test/standalone/TileCache.test.js.map +1 -1
  480. package/lib/esm/test/standalone/TileTree.test.js.map +1 -1
  481. package/lib/esm/test/standalone/TxnManager.test.js +33 -5
  482. package/lib/esm/test/standalone/TxnManager.test.js.map +1 -1
  483. package/lib/esm/test/standalone/ViewDefinition.test.js.map +1 -1
  484. package/lib/esm/test/standalone/ViewStoreDb.test.js.map +1 -1
  485. package/lib/esm/test/standalone/Workspace.test.js.map +1 -1
  486. package/lib/esm/workspace/Settings.js.map +1 -1
  487. package/lib/esm/workspace/SettingsSchemas.js.map +1 -1
  488. package/lib/esm/workspace/Workspace.js.map +1 -1
  489. package/lib/esm/workspace/WorkspaceEditor.js.map +1 -1
  490. package/package.json +14 -14
@@ -20,19 +20,19 @@ function initElemProps(_iModelName, modId, catId, autoHandledProp) {
20
20
  return elementProps;
21
21
  }
22
22
  describe("Insert Null elements in Struct Array, and ensure they are returned while querying rows", () => {
23
- const testSchema = `<?xml version="1.0" encoding="UTF-8"?>
24
- <ECSchema schemaName="Test" alias="test" version="01.00.00" xmlns="http://www.bentley.com/schemas/Bentley.ECXML.3.1">
25
- <ECSchemaReference name="BisCore" version="01.00.04" alias="bis"/>
26
- <ECStructClass typeName="Location" modifier="Sealed">
27
- <ECProperty propertyName="City" typeName="string"/>
28
- <ECProperty propertyName="Zip" typeName="int"/>
29
- </ECStructClass>
30
- <ECEntityClass typeName="Foo" modifier="Sealed">
31
- <BaseClass>bis:PhysicalElement</BaseClass>
32
- <ECArrayProperty propertyName="I_Array" typeName="int"/>
33
- <ECArrayProperty propertyName="Dt_Array" typeName="dateTime"/>
34
- <ECStructArrayProperty propertyName="Addresses" typeName="Location"/>
35
- </ECEntityClass>
23
+ const testSchema = `<?xml version="1.0" encoding="UTF-8"?>
24
+ <ECSchema schemaName="Test" alias="test" version="01.00.00" xmlns="http://www.bentley.com/schemas/Bentley.ECXML.3.1">
25
+ <ECSchemaReference name="BisCore" version="01.00.04" alias="bis"/>
26
+ <ECStructClass typeName="Location" modifier="Sealed">
27
+ <ECProperty propertyName="City" typeName="string"/>
28
+ <ECProperty propertyName="Zip" typeName="int"/>
29
+ </ECStructClass>
30
+ <ECEntityClass typeName="Foo" modifier="Sealed">
31
+ <BaseClass>bis:PhysicalElement</BaseClass>
32
+ <ECArrayProperty propertyName="I_Array" typeName="int"/>
33
+ <ECArrayProperty propertyName="Dt_Array" typeName="dateTime"/>
34
+ <ECStructArrayProperty propertyName="Addresses" typeName="Location"/>
35
+ </ECEntityClass>
36
36
  </ECSchema>`;
37
37
  const schemaFileName = "NullStructElementTest.01.00.00.xml";
38
38
  const iModelFileName = "NullStructElementTest.bim";
@@ -1 +1 @@
1
- {"version":3,"file":"NullStructArray.test.js","sourceRoot":"","sources":["../../../../src/test/element/NullStructArray.test.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\nimport { assert, expect } from \"chai\";\nimport { Id64, Id64String } from \"@itwin/core-bentley\";\nimport {\n BriefcaseIdValue, Code, ColorDef, GeometricElementProps, IModel,\n SubCategoryAppearance,\n} from \"@itwin/core-common\";\nimport { _nativeDb, IModelDb, IModelJsFs, SnapshotDb, SpatialCategory } from \"../../core-backend\";\nimport { IModelTestUtils } from \"../IModelTestUtils\";\n\ninterface TestElement extends GeometricElementProps {\n addresses: [null, {city: \"Pune\", zip: 28}];\n}\n\nfunction initElemProps( _iModelName: IModelDb, modId: Id64String, catId: Id64String, autoHandledProp: any): GeometricElementProps {\n // Create props\n const elementProps: GeometricElementProps = {\n classFullName: \"Test:Foo\",\n model: modId,\n category: catId,\n code: Code.createEmpty(),\n };\n if (autoHandledProp)\n Object.assign(elementProps, autoHandledProp);\n return elementProps;\n}\n\ndescribe(\"Insert Null elements in Struct Array, and ensure they are returned while querying rows\", () => {\n const testSchema = `<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n <ECSchema schemaName=\"Test\" alias=\"test\" version=\"01.00.00\" xmlns=\"http://www.bentley.com/schemas/Bentley.ECXML.3.1\">\n <ECSchemaReference name=\"BisCore\" version=\"01.00.04\" alias=\"bis\"/>\n <ECStructClass typeName=\"Location\" modifier=\"Sealed\">\n <ECProperty propertyName=\"City\" typeName=\"string\"/>\n <ECProperty propertyName=\"Zip\" typeName=\"int\"/>\n </ECStructClass>\n <ECEntityClass typeName=\"Foo\" modifier=\"Sealed\">\n <BaseClass>bis:PhysicalElement</BaseClass>\n <ECArrayProperty propertyName=\"I_Array\" typeName=\"int\"/>\n <ECArrayProperty propertyName=\"Dt_Array\" typeName=\"dateTime\"/>\n <ECStructArrayProperty propertyName=\"Addresses\" typeName=\"Location\"/>\n </ECEntityClass>\n </ECSchema>`;\n\n const schemaFileName = \"NullStructElementTest.01.00.00.xml\";\n const iModelFileName = \"NullStructElementTest.bim\";\n const categoryName = \"NullStructElement\";\n const subDirName = \"NullStructElement\";\n const iModelPath = IModelTestUtils.prepareOutputFile(subDirName, iModelFileName);\n\n before(async () => {\n // write schema to disk as we do not have api to import xml directly\n const testSchemaPath = IModelTestUtils.prepareOutputFile(subDirName, schemaFileName);\n IModelJsFs.writeFileSync(testSchemaPath, testSchema);\n\n const imodel = SnapshotDb.createEmpty(iModelPath, { rootSubject: { name: \"InsertNullStructArrayTest\" } });\n await imodel.importSchemas([testSchemaPath]);\n imodel[_nativeDb].resetBriefcaseId(BriefcaseIdValue.Unassigned);\n IModelTestUtils.createAndInsertPhysicalPartitionAndModel(imodel, Code.createEmpty(), true);\n\n let spatialCategoryId = SpatialCategory.queryCategoryIdByName(imodel, IModel.dictionaryId, categoryName);\n if (undefined === spatialCategoryId)\n spatialCategoryId = SpatialCategory.insert(imodel, IModel.dictionaryId, categoryName,\n new SubCategoryAppearance({ color: ColorDef.create(\"rgb(255,0,0)\").toJSON() }));\n\n imodel.saveChanges();\n imodel.close();\n });\n\n it(\"Test for struct array to contain null structs\", async () => {\n const testFileName = IModelTestUtils.prepareOutputFile(subDirName, \"roundtrip_correct_data.bim\");\n const imodel = IModelTestUtils.createSnapshotFromSeed(testFileName, iModelPath);\n const spatialCategoryId = SpatialCategory.queryCategoryIdByName(imodel, IModel.dictionaryId, categoryName);\n const [, newModelId] = IModelTestUtils.createAndInsertPhysicalPartitionAndModel(imodel, Code.createEmpty(), true);\n\n // create element with auto handled properties\n const expectedValue = initElemProps( imodel, newModelId, spatialCategoryId!, {\n addresses: [null, {city: \"Pune\", zip: 28}],\n }) as TestElement;\n\n // insert a element\n const geomElement = imodel.elements.createElement(expectedValue);\n const id = imodel.elements.insertElement(geomElement.toJSON());\n assert.isTrue(Id64.isValidId64(id), \"insert worked\");\n imodel.saveChanges();\n\n // verify inserted element properties\n const actualValue = imodel.elements.getElementProps<TestElement>(id);\n expect(actualValue.addresses.length).to.equal(2);\n expect(actualValue.addresses[0]).to.be.empty;\n\n imodel.close();\n });\n\n});\n"]}
1
+ {"version":3,"file":"NullStructArray.test.js","sourceRoot":"","sources":["../../../../src/test/element/NullStructArray.test.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\nimport { assert, expect } from \"chai\";\r\nimport { Id64, Id64String } from \"@itwin/core-bentley\";\r\nimport {\r\n BriefcaseIdValue, Code, ColorDef, GeometricElementProps, IModel,\r\n SubCategoryAppearance,\r\n} from \"@itwin/core-common\";\r\nimport { _nativeDb, IModelDb, IModelJsFs, SnapshotDb, SpatialCategory } from \"../../core-backend\";\r\nimport { IModelTestUtils } from \"../IModelTestUtils\";\r\n\r\ninterface TestElement extends GeometricElementProps {\r\n addresses: [null, {city: \"Pune\", zip: 28}];\r\n}\r\n\r\nfunction initElemProps( _iModelName: IModelDb, modId: Id64String, catId: Id64String, autoHandledProp: any): GeometricElementProps {\r\n // Create props\r\n const elementProps: GeometricElementProps = {\r\n classFullName: \"Test:Foo\",\r\n model: modId,\r\n category: catId,\r\n code: Code.createEmpty(),\r\n };\r\n if (autoHandledProp)\r\n Object.assign(elementProps, autoHandledProp);\r\n return elementProps;\r\n}\r\n\r\ndescribe(\"Insert Null elements in Struct Array, and ensure they are returned while querying rows\", () => {\r\n const testSchema = `<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n <ECSchema schemaName=\"Test\" alias=\"test\" version=\"01.00.00\" xmlns=\"http://www.bentley.com/schemas/Bentley.ECXML.3.1\">\r\n <ECSchemaReference name=\"BisCore\" version=\"01.00.04\" alias=\"bis\"/>\r\n <ECStructClass typeName=\"Location\" modifier=\"Sealed\">\r\n <ECProperty propertyName=\"City\" typeName=\"string\"/>\r\n <ECProperty propertyName=\"Zip\" typeName=\"int\"/>\r\n </ECStructClass>\r\n <ECEntityClass typeName=\"Foo\" modifier=\"Sealed\">\r\n <BaseClass>bis:PhysicalElement</BaseClass>\r\n <ECArrayProperty propertyName=\"I_Array\" typeName=\"int\"/>\r\n <ECArrayProperty propertyName=\"Dt_Array\" typeName=\"dateTime\"/>\r\n <ECStructArrayProperty propertyName=\"Addresses\" typeName=\"Location\"/>\r\n </ECEntityClass>\r\n </ECSchema>`;\r\n\r\n const schemaFileName = \"NullStructElementTest.01.00.00.xml\";\r\n const iModelFileName = \"NullStructElementTest.bim\";\r\n const categoryName = \"NullStructElement\";\r\n const subDirName = \"NullStructElement\";\r\n const iModelPath = IModelTestUtils.prepareOutputFile(subDirName, iModelFileName);\r\n\r\n before(async () => {\r\n // write schema to disk as we do not have api to import xml directly\r\n const testSchemaPath = IModelTestUtils.prepareOutputFile(subDirName, schemaFileName);\r\n IModelJsFs.writeFileSync(testSchemaPath, testSchema);\r\n\r\n const imodel = SnapshotDb.createEmpty(iModelPath, { rootSubject: { name: \"InsertNullStructArrayTest\" } });\r\n await imodel.importSchemas([testSchemaPath]);\r\n imodel[_nativeDb].resetBriefcaseId(BriefcaseIdValue.Unassigned);\r\n IModelTestUtils.createAndInsertPhysicalPartitionAndModel(imodel, Code.createEmpty(), true);\r\n\r\n let spatialCategoryId = SpatialCategory.queryCategoryIdByName(imodel, IModel.dictionaryId, categoryName);\r\n if (undefined === spatialCategoryId)\r\n spatialCategoryId = SpatialCategory.insert(imodel, IModel.dictionaryId, categoryName,\r\n new SubCategoryAppearance({ color: ColorDef.create(\"rgb(255,0,0)\").toJSON() }));\r\n\r\n imodel.saveChanges();\r\n imodel.close();\r\n });\r\n\r\n it(\"Test for struct array to contain null structs\", async () => {\r\n const testFileName = IModelTestUtils.prepareOutputFile(subDirName, \"roundtrip_correct_data.bim\");\r\n const imodel = IModelTestUtils.createSnapshotFromSeed(testFileName, iModelPath);\r\n const spatialCategoryId = SpatialCategory.queryCategoryIdByName(imodel, IModel.dictionaryId, categoryName);\r\n const [, newModelId] = IModelTestUtils.createAndInsertPhysicalPartitionAndModel(imodel, Code.createEmpty(), true);\r\n\r\n // create element with auto handled properties\r\n const expectedValue = initElemProps( imodel, newModelId, spatialCategoryId!, {\r\n addresses: [null, {city: \"Pune\", zip: 28}],\r\n }) as TestElement;\r\n\r\n // insert a element\r\n const geomElement = imodel.elements.createElement(expectedValue);\r\n const id = imodel.elements.insertElement(geomElement.toJSON());\r\n assert.isTrue(Id64.isValidId64(id), \"insert worked\");\r\n imodel.saveChanges();\r\n\r\n // verify inserted element properties\r\n const actualValue = imodel.elements.getElementProps<TestElement>(id);\r\n expect(actualValue.addresses.length).to.equal(2);\r\n expect(actualValue.addresses[0]).to.be.empty;\r\n\r\n imodel.close();\r\n });\r\n\r\n});\r\n"]}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=ProjectInformationRecord.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProjectInformationRecord.test.d.ts","sourceRoot":"","sources":["../../../../src/test/element/ProjectInformationRecord.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,80 @@
1
+ /*---------------------------------------------------------------------------------------------
2
+ * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
3
+ * See LICENSE.md in the project root for license terms and full copyright notice.
4
+ *--------------------------------------------------------------------------------------------*/
5
+ import { expect } from "chai";
6
+ import { IModelTestUtils } from "../IModelTestUtils";
7
+ import { SnapshotDb } from "../../IModelDb";
8
+ import { IModel } from "@itwin/core-common";
9
+ import { ProjectInformationRecord } from "../../Element";
10
+ import { SubjectOwnsProjectInformationRecord } from "../../NavigationRelationship";
11
+ import { DbResult } from "@itwin/core-bentley";
12
+ describe("ProjectInformationRecord", () => {
13
+ describe("with BisCore < 00.01.25", () => {
14
+ let db;
15
+ before(() => {
16
+ const seedFileName = IModelTestUtils.resolveAssetFile("mirukuru.ibim");
17
+ const testFileName = IModelTestUtils.prepareOutputFile("ProjectInformationRecord", "OldBisCore.bim");
18
+ db = IModelTestUtils.createSnapshotFromSeed(testFileName, seedFileName);
19
+ });
20
+ after(() => db.close());
21
+ it("throws", () => {
22
+ const projectProps = {
23
+ projectNumber: "num",
24
+ projectName: "name",
25
+ location: "place",
26
+ };
27
+ expect(() => ProjectInformationRecord.create({
28
+ iModel: db,
29
+ parentSubjectId: IModel.rootSubjectId,
30
+ ...projectProps,
31
+ })).to.throw("ProjectInformationRecord requires BisCore v01.00.25 or newer");
32
+ });
33
+ });
34
+ describe("with BisCore >= 00.01.25", () => {
35
+ let db;
36
+ before(async () => {
37
+ db = SnapshotDb.createEmpty(IModelTestUtils.prepareOutputFile("ProjectInformationRecord", "NewBisCore.bim"), { rootSubject: { name: "ProjectInformationRecord" } });
38
+ });
39
+ after(() => db.close());
40
+ it("inserts element and creates relationship", () => {
41
+ function countRelationships() {
42
+ // eslint-disable-next-line @typescript-eslint/no-deprecated
43
+ return db.withPreparedStatement(`SELECT COUNT(*) FROM ${SubjectOwnsProjectInformationRecord.classFullName}`, (stmt) => {
44
+ expect(stmt.step()).to.equal(DbResult.BE_SQLITE_ROW);
45
+ return stmt.getValue(0).getInteger();
46
+ });
47
+ }
48
+ expect(countRelationships()).to.equal(0);
49
+ const projectProps = {
50
+ projectNumber: "num",
51
+ projectName: "name",
52
+ location: "place",
53
+ };
54
+ let record = ProjectInformationRecord.create({
55
+ iModel: db,
56
+ parentSubjectId: IModel.rootSubjectId,
57
+ ...projectProps,
58
+ });
59
+ const recordId = record.insert();
60
+ record = db.elements.getElement(recordId);
61
+ expect(record).instanceof(ProjectInformationRecord);
62
+ expect(record.projectInformation).to.deep.equal(projectProps);
63
+ expect(countRelationships()).to.equal(1);
64
+ });
65
+ it("throws if parent is not a Subject", () => {
66
+ const projectProps = {
67
+ projectNumber: "num",
68
+ projectName: "name",
69
+ location: "place",
70
+ };
71
+ const record = ProjectInformationRecord.create({
72
+ iModel: db,
73
+ parentSubjectId: IModel.dictionaryId,
74
+ ...projectProps,
75
+ });
76
+ expect(() => record.insert()).to.throw("ProjectInformationRecord must be a child of a Subject");
77
+ });
78
+ });
79
+ });
80
+ //# sourceMappingURL=ProjectInformationRecord.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProjectInformationRecord.test.js","sourceRoot":"","sources":["../../../../src/test/element/ProjectInformationRecord.test.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAE/F,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAC9B,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,MAAM,EAAsB,MAAM,oBAAoB,CAAC;AAChE,OAAO,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC;AACzD,OAAO,EAAE,mCAAmC,EAAE,MAAM,8BAA8B,CAAC;AACnF,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAE/C,QAAQ,CAAC,0BAA0B,EAAE,GAAG,EAAE;IACxC,QAAQ,CAAC,yBAAyB,EAAE,GAAG,EAAE;QACvC,IAAI,EAAc,CAAC;QAEnB,MAAM,CAAC,GAAG,EAAE;YACV,MAAM,YAAY,GAAG,eAAe,CAAC,gBAAgB,CAAC,eAAe,CAAC,CAAC;YACvE,MAAM,YAAY,GAAG,eAAe,CAAC,iBAAiB,CAAC,0BAA0B,EAAE,gBAAgB,CAAC,CAAC;YACrG,EAAE,GAAG,eAAe,CAAC,sBAAsB,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;QAC1E,CAAC,CAAC,CAAC;QAEH,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;QAExB,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE;YAChB,MAAM,YAAY,GAAuB;gBACvC,aAAa,EAAE,KAAK;gBACpB,WAAW,EAAE,MAAM;gBACnB,QAAQ,EAAE,OAAO;aAClB,CAAC;YAEF,MAAM,CAAC,GAAG,EAAE,CAAC,wBAAwB,CAAC,MAAM,CAAC;gBAC3C,MAAM,EAAE,EAAE;gBACV,eAAe,EAAE,MAAM,CAAC,aAAa;gBACrC,GAAG,YAAY;aAChB,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,8DAA8D,CAAC,CAAC;QAC/E,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,0BAA0B,EAAE,GAAG,EAAE;QACxC,IAAI,EAAc,CAAC;QAEnB,MAAM,CAAC,KAAK,IAAI,EAAE;YAChB,EAAE,GAAG,UAAU,CAAC,WAAW,CACzB,eAAe,CAAC,iBAAiB,CAAC,0BAA0B,EAAE,gBAAgB,CAAC,EAC/E,EAAE,WAAW,EAAE,EAAE,IAAI,EAAE,0BAA0B,EAAE,EAAE,CACtD,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;QAExB,EAAE,CAAC,0CAA0C,EAAE,GAAG,EAAE;YAClD,SAAS,kBAAkB;gBACzB,4DAA4D;gBAC5D,OAAO,EAAE,CAAC,qBAAqB,CAAC,wBAAwB,mCAAmC,CAAC,aAAa,EAAE,EAAE,CAAC,IAAI,EAAE,EAAE;oBACpH,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;oBACrD,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC;gBACvC,CAAC,CAAC,CAAC;YACL,CAAC;YAED,MAAM,CAAC,kBAAkB,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAEzC,MAAM,YAAY,GAAuB;gBACvC,aAAa,EAAE,KAAK;gBACpB,WAAW,EAAE,MAAM;gBACnB,QAAQ,EAAE,OAAO;aAClB,CAAC;YAEF,IAAI,MAAM,GAAG,wBAAwB,CAAC,MAAM,CAAC;gBAC3C,MAAM,EAAE,EAAE;gBACV,eAAe,EAAE,MAAM,CAAC,aAAa;gBACrC,GAAG,YAAY;aAChB,CAAC,CAAC;YAEH,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC;YAEjC,MAAM,GAAG,EAAE,CAAC,QAAQ,CAAC,UAAU,CAA2B,QAAQ,CAAC,CAAC;YACpE,MAAM,CAAC,MAAM,CAAC,CAAC,UAAU,CAAC,wBAAwB,CAAC,CAAC;YACpD,MAAM,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;YAE9D,MAAM,CAAC,kBAAkB,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC3C,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;YAC3C,MAAM,YAAY,GAAuB;gBACvC,aAAa,EAAE,KAAK;gBACpB,WAAW,EAAE,MAAM;gBACnB,QAAQ,EAAE,OAAO;aAClB,CAAC;YAEF,MAAM,MAAM,GAAG,wBAAwB,CAAC,MAAM,CAAC;gBAC7C,MAAM,EAAE,EAAE;gBACV,eAAe,EAAE,MAAM,CAAC,YAAY;gBACpC,GAAG,YAAY;aAChB,CAAC,CAAC;YAEH,MAAM,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,uDAAuD,CAAC,CAAC;QAClG,CAAC,CAAC,CAAC;IACL,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\n\r\nimport { expect } from \"chai\";\r\nimport { IModelTestUtils } from \"../IModelTestUtils\";\r\nimport { SnapshotDb } from \"../../IModelDb\";\r\nimport { IModel, ProjectInformation } from \"@itwin/core-common\";\r\nimport { ProjectInformationRecord } from \"../../Element\";\r\nimport { SubjectOwnsProjectInformationRecord } from \"../../NavigationRelationship\";\r\nimport { DbResult } from \"@itwin/core-bentley\";\r\n\r\ndescribe(\"ProjectInformationRecord\", () => {\r\n describe(\"with BisCore < 00.01.25\", () => {\r\n let db: SnapshotDb;\r\n\r\n before(() => {\r\n const seedFileName = IModelTestUtils.resolveAssetFile(\"mirukuru.ibim\");\r\n const testFileName = IModelTestUtils.prepareOutputFile(\"ProjectInformationRecord\", \"OldBisCore.bim\");\r\n db = IModelTestUtils.createSnapshotFromSeed(testFileName, seedFileName);\r\n });\r\n\r\n after(() => db.close());\r\n\r\n it(\"throws\", () => {\r\n const projectProps: ProjectInformation = {\r\n projectNumber: \"num\",\r\n projectName: \"name\",\r\n location: \"place\",\r\n };\r\n\r\n expect(() => ProjectInformationRecord.create({\r\n iModel: db,\r\n parentSubjectId: IModel.rootSubjectId,\r\n ...projectProps,\r\n })).to.throw(\"ProjectInformationRecord requires BisCore v01.00.25 or newer\");\r\n });\r\n });\r\n\r\n describe(\"with BisCore >= 00.01.25\", () => {\r\n let db: SnapshotDb;\r\n\r\n before(async () => {\r\n db = SnapshotDb.createEmpty(\r\n IModelTestUtils.prepareOutputFile(\"ProjectInformationRecord\", \"NewBisCore.bim\"),\r\n { rootSubject: { name: \"ProjectInformationRecord\" } }\r\n );\r\n });\r\n\r\n after(() => db.close());\r\n\r\n it(\"inserts element and creates relationship\", () => {\r\n function countRelationships(): number {\r\n // eslint-disable-next-line @typescript-eslint/no-deprecated\r\n return db.withPreparedStatement(`SELECT COUNT(*) FROM ${SubjectOwnsProjectInformationRecord.classFullName}`, (stmt) => {\r\n expect(stmt.step()).to.equal(DbResult.BE_SQLITE_ROW);\r\n return stmt.getValue(0).getInteger();\r\n });\r\n }\r\n\r\n expect(countRelationships()).to.equal(0);\r\n\r\n const projectProps: ProjectInformation = {\r\n projectNumber: \"num\",\r\n projectName: \"name\",\r\n location: \"place\",\r\n };\r\n\r\n let record = ProjectInformationRecord.create({\r\n iModel: db,\r\n parentSubjectId: IModel.rootSubjectId,\r\n ...projectProps,\r\n });\r\n\r\n const recordId = record.insert();\r\n\r\n record = db.elements.getElement<ProjectInformationRecord>(recordId);\r\n expect(record).instanceof(ProjectInformationRecord);\r\n expect(record.projectInformation).to.deep.equal(projectProps);\r\n\r\n expect(countRelationships()).to.equal(1);\r\n })\r\n\r\n it(\"throws if parent is not a Subject\", () => {\r\n const projectProps: ProjectInformation = {\r\n projectNumber: \"num\",\r\n projectName: \"name\",\r\n location: \"place\",\r\n };\r\n\r\n const record = ProjectInformationRecord.create({\r\n iModel: db,\r\n parentSubjectId: IModel.dictionaryId,\r\n ...projectProps,\r\n });\r\n\r\n expect(() => record.insert()).to.throw(\"ProjectInformationRecord must be a child of a Subject\");\r\n });\r\n });\r\n});\r\n"]}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=SheetInformationAspect.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SheetInformationAspect.test.d.ts","sourceRoot":"","sources":["../../../../src/test/element/SheetInformationAspect.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,182 @@
1
+ /*---------------------------------------------------------------------------------------------
2
+ * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
3
+ * See LICENSE.md in the project root for license terms and full copyright notice.
4
+ *--------------------------------------------------------------------------------------------*/
5
+ import { expect } from "chai";
6
+ import { SnapshotDb } from "../../IModelDb";
7
+ import { IModelTestUtils } from "../IModelTestUtils";
8
+ import { DbResult, Guid } from "@itwin/core-bentley";
9
+ import { DocumentPartition, Sheet } from "../../Element";
10
+ import { DocumentListModel, SheetModel } from "../../Model";
11
+ import { IModel } from "@itwin/core-common";
12
+ import { SheetInformationAspect } from "../../ElementAspect";
13
+ import { SheetOwnsSheetInformationAspect } from "../../NavigationRelationship";
14
+ async function getOrCreateDocumentList(iModel) {
15
+ const documentListName = "SheetList";
16
+ let documentListModelId;
17
+ // Attempt to find an existing document partition and document list model
18
+ const ids = iModel.queryEntityIds({ from: DocumentPartition.classFullName, where: `CodeValue = '${documentListName}'` });
19
+ if (ids.size === 1) {
20
+ documentListModelId = ids.values().next().value;
21
+ }
22
+ // If they do not exist, create the document partition and document list model
23
+ if (documentListModelId === undefined) {
24
+ const subjectId = iModel.elements.getRootSubject().id;
25
+ await iModel.locks.acquireLocks({
26
+ shared: subjectId,
27
+ });
28
+ documentListModelId = DocumentListModel.insert(iModel, subjectId, documentListName);
29
+ }
30
+ return documentListModelId;
31
+ }
32
+ ;
33
+ async function insertSheet(iModel) {
34
+ const sheetName = Guid.createValue();
35
+ const createSheetProps = {
36
+ height: 42,
37
+ width: 42,
38
+ scale: 42,
39
+ };
40
+ // Get or make documentListModelId
41
+ const modelId = await getOrCreateDocumentList(iModel);
42
+ // Acquire locks and create sheet
43
+ await iModel.locks.acquireLocks({ shared: modelId });
44
+ const sheetElementProps = {
45
+ ...createSheetProps,
46
+ classFullName: Sheet.classFullName,
47
+ code: Sheet.createCode(iModel, modelId, sheetName),
48
+ model: modelId,
49
+ };
50
+ const sheetElementId = iModel.elements.insertElement(sheetElementProps);
51
+ const sheetModelProps = {
52
+ classFullName: SheetModel.classFullName,
53
+ modeledElement: { id: sheetElementId, relClassName: "BisCore:ModelModelsElement" },
54
+ };
55
+ const sheetModelId = iModel.models.insertModel(sheetModelProps);
56
+ return sheetModelId;
57
+ }
58
+ ;
59
+ describe("SheetInformationAspect", () => {
60
+ describe("with BisCore < 00.01.25", () => {
61
+ let db;
62
+ let sheetId;
63
+ before(async () => {
64
+ const seedFileName = IModelTestUtils.resolveAssetFile("mirukuru.ibim");
65
+ const testFileName = IModelTestUtils.prepareOutputFile("SheetInformationAspect", "OldBisCore.bim");
66
+ db = IModelTestUtils.createSnapshotFromSeed(testFileName, seedFileName);
67
+ sheetId = await insertSheet(db);
68
+ });
69
+ after(() => db.close());
70
+ describe("getSheetInformation", () => {
71
+ it("returns undefined", () => {
72
+ expect(SheetInformationAspect.getSheetInformation(sheetId, db)).to.be.undefined;
73
+ });
74
+ });
75
+ describe("setSheetInformation", () => {
76
+ it("throws", () => {
77
+ expect(() => SheetInformationAspect.setSheetInformation({ designedBy: "me" }, sheetId, db)).to.throw("SheetInformationAspect requires BisCore v01.00.25 or newer");
78
+ });
79
+ });
80
+ });
81
+ describe("with BisCore >= 00.01.25", () => {
82
+ let db;
83
+ const designedDate = new Date("2011-10-05T14:48:00.000Z");
84
+ expect(designedDate.toISOString()).to.equal("2011-10-05T14:48:00.000Z");
85
+ before(async () => {
86
+ db = SnapshotDb.createEmpty(IModelTestUtils.prepareOutputFile("SheetInformationAspect", "NewBisCore.bim"), { rootSubject: { name: "SheetInformationAspect" } });
87
+ });
88
+ after(() => db.close());
89
+ function getSheetInfo(elemId) {
90
+ return SheetInformationAspect.getSheetInformation(elemId, db);
91
+ }
92
+ function setSheetInfo(elemId, info) {
93
+ SheetInformationAspect.setSheetInformation(info, elemId, db);
94
+ }
95
+ describe("getSheetInformation", () => {
96
+ it("returns undefined if no aspect exists", async () => {
97
+ const sheetId = await insertSheet(db);
98
+ expect(getSheetInfo(sheetId)).to.be.undefined;
99
+ });
100
+ it("returns undefined if element is not a valid Sheet", () => {
101
+ expect(getSheetInfo(IModel.rootSubjectId)).to.be.undefined;
102
+ });
103
+ it("returns information if aspect exists", async () => {
104
+ const sheetId = await insertSheet(db);
105
+ const info = { designedBy: "me", checkedBy: "you", designedDate, drawnBy: "Bob Ross" };
106
+ setSheetInfo(sheetId, info);
107
+ expect(getSheetInfo(sheetId)).to.deep.equal(info);
108
+ });
109
+ });
110
+ describe("setSheetInformation", () => {
111
+ it("inserts aspect if it doesn't already exist", async () => {
112
+ const sheetId = await insertSheet(db);
113
+ expect(getSheetInfo(sheetId)).to.be.undefined;
114
+ const info = { designedBy: "me", checkedBy: "you", designedDate, drawnBy: "Bob Ross" };
115
+ setSheetInfo(sheetId, info);
116
+ expect(getSheetInfo(sheetId)).to.deep.equal(info);
117
+ });
118
+ it("omits undefined fields", async () => {
119
+ const info = { designedBy: "me" };
120
+ const sheetId = await insertSheet(db);
121
+ setSheetInfo(sheetId, info);
122
+ expect(getSheetInfo(sheetId)).to.deep.equal({ designedBy: "me", checkedBy: undefined, designedDate: undefined, drawnBy: undefined });
123
+ });
124
+ it("includes fields set to empty strings", async () => {
125
+ const info = { designedBy: "", checkedBy: "", designedDate, drawnBy: "" };
126
+ const sheetId = await insertSheet(db);
127
+ setSheetInfo(sheetId, info);
128
+ expect(getSheetInfo(sheetId)).to.deep.equal(info);
129
+ });
130
+ it("updates existing aspect", async () => {
131
+ const sheetId = await insertSheet(db);
132
+ const initialInfo = { designedBy: "me", checkedBy: "you", designedDate, drawnBy: "Bob Ross" };
133
+ setSheetInfo(sheetId, initialInfo);
134
+ expect(getSheetInfo(sheetId)).to.deep.equal(initialInfo);
135
+ const updatedInfo = { designedBy: "you", checkedBy: "me", designedDate, drawnBy: "Pablo Picasso" };
136
+ setSheetInfo(sheetId, updatedInfo);
137
+ expect(getSheetInfo(sheetId)).to.deep.equal(updatedInfo);
138
+ });
139
+ it("selectively updates existing aspect", async () => {
140
+ const sheetId = await insertSheet(db);
141
+ const initialInfo = { designedBy: "me", checkedBy: "you", designedDate, drawnBy: "Bob Ross" };
142
+ setSheetInfo(sheetId, initialInfo);
143
+ expect(getSheetInfo(sheetId)).to.deep.equal(initialInfo);
144
+ const updatedInfo = { designedBy: "my buddy Gary" };
145
+ setSheetInfo(sheetId, updatedInfo);
146
+ expect(getSheetInfo(sheetId)).to.deep.equal({ designedDate, designedBy: "my buddy Gary", checkedBy: "you", drawnBy: "Bob Ross" });
147
+ });
148
+ it("deletes existing aspect if information is undefined", async () => {
149
+ const sheetId = await insertSheet(db);
150
+ const info = { designedBy: "me", checkedBy: "you", designedDate, drawnBy: "Bob Ross" };
151
+ setSheetInfo(sheetId, info);
152
+ expect(getSheetInfo(sheetId)).to.deep.equal(info);
153
+ setSheetInfo(sheetId, undefined);
154
+ expect(getSheetInfo(sheetId)).to.be.undefined;
155
+ });
156
+ it("is a no-op if information is undefined and no aspect exists", async () => {
157
+ const sheetId = await insertSheet(db);
158
+ expect(getSheetInfo(sheetId)).to.be.undefined;
159
+ setSheetInfo(sheetId, undefined);
160
+ expect(getSheetInfo(sheetId)).to.be.undefined;
161
+ });
162
+ it("throws if element is not a Sheet", () => {
163
+ const info = { designedBy: "me", checkedBy: "you", designedDate, drawnBy: "Bob Ross" };
164
+ expect(() => setSheetInfo(IModel.rootSubjectId, info)).to.throw("SheetInformationAspect can only be applied to a Sheet element");
165
+ });
166
+ it("creates SheetOwnsSheetInformationAspect relationships", async () => {
167
+ const sheetId = await insertSheet(db);
168
+ function countRelationships() {
169
+ // eslint-disable-next-line @typescript-eslint/no-deprecated
170
+ return db.withPreparedStatement(`SELECT COUNT(*) FROM ${SheetOwnsSheetInformationAspect.classFullName} WHERE SourceECInstanceId=${sheetId}`, (stmt) => {
171
+ expect(stmt.step()).to.equal(DbResult.BE_SQLITE_ROW);
172
+ return stmt.getValue(0).getInteger();
173
+ });
174
+ }
175
+ expect(countRelationships()).to.equal(0);
176
+ setSheetInfo(sheetId, { designedBy: "me", checkedBy: "you", designedDate, drawnBy: "Bob Ross" });
177
+ expect(countRelationships()).to.equal(1);
178
+ });
179
+ });
180
+ });
181
+ });
182
+ //# sourceMappingURL=SheetInformationAspect.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SheetInformationAspect.test.js","sourceRoot":"","sources":["../../../../src/test/element/SheetInformationAspect.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\n\r\nimport { expect } from \"chai\";\r\nimport { IModelDb, SnapshotDb } from \"../../IModelDb\";\r\nimport { IModelTestUtils } from \"../IModelTestUtils\";\r\nimport { DbResult, Guid, Id64String } from \"@itwin/core-bentley\";\r\nimport { DocumentPartition, Sheet } from \"../../Element\";\r\nimport { DocumentListModel, SheetModel } from \"../../Model\";\r\nimport { GeometricModel2dProps, IModel, RelatedElement, SheetInformation, SheetProps } from \"@itwin/core-common\";\r\nimport { SheetInformationAspect } from \"../../ElementAspect\";\r\nimport { SheetOwnsSheetInformationAspect } from \"../../NavigationRelationship\";\r\n\r\nasync function getOrCreateDocumentList(iModel: IModelDb): Promise<Id64String> {\r\n const documentListName = \"SheetList\";\r\n let documentListModelId: string | undefined;\r\n\r\n // Attempt to find an existing document partition and document list model\r\n const ids = iModel.queryEntityIds({ from: DocumentPartition.classFullName, where: `CodeValue = '${documentListName}'`});\r\n if (ids.size === 1) {\r\n documentListModelId = ids.values().next().value;\r\n }\r\n\r\n // If they do not exist, create the document partition and document list model\r\n if (documentListModelId === undefined) {\r\n const subjectId = iModel.elements.getRootSubject().id;\r\n await iModel.locks.acquireLocks({\r\n shared: subjectId,\r\n });\r\n documentListModelId = DocumentListModel.insert(iModel, subjectId, documentListName);\r\n }\r\n\r\n return documentListModelId;\r\n};\r\n\r\nasync function insertSheet(iModel: IModelDb): Promise<Id64String> {\r\n const sheetName = Guid.createValue();\r\n\r\n const createSheetProps = {\r\n height: 42,\r\n width: 42,\r\n scale: 42,\r\n };\r\n // Get or make documentListModelId\r\n const modelId = await getOrCreateDocumentList(iModel);\r\n\r\n // Acquire locks and create sheet\r\n await iModel.locks.acquireLocks({ shared: modelId });\r\n const sheetElementProps: SheetProps = {\r\n ...createSheetProps,\r\n classFullName: Sheet.classFullName,\r\n code: Sheet.createCode(iModel, modelId, sheetName),\r\n model: modelId,\r\n };\r\n const sheetElementId = iModel.elements.insertElement(sheetElementProps);\r\n\r\n const sheetModelProps: GeometricModel2dProps = {\r\n classFullName: SheetModel.classFullName,\r\n modeledElement: { id: sheetElementId, relClassName: \"BisCore:ModelModelsElement\" } as RelatedElement,\r\n };\r\n const sheetModelId = iModel.models.insertModel(sheetModelProps);\r\n\r\n return sheetModelId;\r\n};\r\n\r\ndescribe(\"SheetInformationAspect\", () => {\r\n describe(\"with BisCore < 00.01.25\", () => {\r\n let db: SnapshotDb;\r\n let sheetId: Id64String;\r\n\r\n before(async () => {\r\n const seedFileName = IModelTestUtils.resolveAssetFile(\"mirukuru.ibim\");\r\n const testFileName = IModelTestUtils.prepareOutputFile(\"SheetInformationAspect\", \"OldBisCore.bim\");\r\n db = IModelTestUtils.createSnapshotFromSeed(testFileName, seedFileName);\r\n sheetId = await insertSheet(db);\r\n });\r\n\r\n after(() => db.close());\r\n\r\n describe(\"getSheetInformation\", () => {\r\n it(\"returns undefined\", () => {\r\n expect(SheetInformationAspect.getSheetInformation(sheetId, db)).to.be.undefined;\r\n });\r\n });\r\n\r\n describe(\"setSheetInformation\", () => {\r\n it(\"throws\", () => {\r\n expect(\r\n () => SheetInformationAspect.setSheetInformation({ designedBy: \"me\" }, sheetId, db)\r\n ).to.throw(\"SheetInformationAspect requires BisCore v01.00.25 or newer\");\r\n });\r\n });\r\n });\r\n\r\n describe(\"with BisCore >= 00.01.25\", () => {\r\n let db: SnapshotDb;\r\n const designedDate = new Date(\"2011-10-05T14:48:00.000Z\");\r\n expect(designedDate.toISOString()).to.equal(\"2011-10-05T14:48:00.000Z\");\r\n\r\n before(async () => {\r\n db = SnapshotDb.createEmpty(\r\n IModelTestUtils.prepareOutputFile(\"SheetInformationAspect\", \"NewBisCore.bim\"),\r\n { rootSubject: { name: \"SheetInformationAspect\" } }\r\n );\r\n });\r\n\r\n after(() => db.close());\r\n\r\n function getSheetInfo(elemId: string): SheetInformation | undefined {\r\n return SheetInformationAspect.getSheetInformation(elemId, db);\r\n }\r\n\r\n function setSheetInfo(elemId: string, info: SheetInformation | undefined): void {\r\n SheetInformationAspect.setSheetInformation(info, elemId, db);\r\n }\r\n\r\n describe(\"getSheetInformation\", () => {\r\n it(\"returns undefined if no aspect exists\", async () => {\r\n const sheetId = await insertSheet(db);\r\n expect(getSheetInfo(sheetId)).to.be.undefined;\r\n });\r\n\r\n it(\"returns undefined if element is not a valid Sheet\", () => {\r\n expect(getSheetInfo(IModel.rootSubjectId)).to.be.undefined;\r\n });\r\n\r\n it(\"returns information if aspect exists\", async () => {\r\n const sheetId = await insertSheet(db);\r\n const info = { designedBy: \"me\", checkedBy: \"you\", designedDate, drawnBy: \"Bob Ross\" };\r\n setSheetInfo(sheetId, info);\r\n expect(getSheetInfo(sheetId)).to.deep.equal(info);\r\n });\r\n });\r\n\r\n describe(\"setSheetInformation\", () => {\r\n it(\"inserts aspect if it doesn't already exist\", async () => {\r\n const sheetId = await insertSheet(db);\r\n expect(getSheetInfo(sheetId)).to.be.undefined;\r\n\r\n const info = { designedBy: \"me\", checkedBy: \"you\", designedDate, drawnBy: \"Bob Ross\" };\r\n setSheetInfo(sheetId, info);\r\n expect(getSheetInfo(sheetId)).to.deep.equal(info);\r\n });\r\n\r\n it(\"omits undefined fields\", async () => {\r\n const info = { designedBy: \"me\" };\r\n const sheetId = await insertSheet(db);\r\n setSheetInfo(sheetId, info);\r\n expect(getSheetInfo(sheetId)).to.deep.equal({ designedBy: \"me\", checkedBy: undefined, designedDate: undefined, drawnBy: undefined });\r\n });\r\n\r\n it(\"includes fields set to empty strings\", async () => {\r\n const info = { designedBy: \"\", checkedBy: \"\", designedDate, drawnBy: \"\" };\r\n const sheetId = await insertSheet(db);\r\n setSheetInfo(sheetId, info);\r\n expect(getSheetInfo(sheetId)).to.deep.equal(info);\r\n });\r\n\r\n it(\"updates existing aspect\", async () => {\r\n const sheetId = await insertSheet(db);\r\n const initialInfo = { designedBy: \"me\", checkedBy: \"you\", designedDate, drawnBy: \"Bob Ross\" };\r\n setSheetInfo(sheetId, initialInfo);\r\n expect(getSheetInfo(sheetId)).to.deep.equal(initialInfo);\r\n\r\n const updatedInfo = { designedBy: \"you\", checkedBy: \"me\", designedDate, drawnBy: \"Pablo Picasso\" };\r\n setSheetInfo(sheetId, updatedInfo);\r\n expect(getSheetInfo(sheetId)).to.deep.equal(updatedInfo);\r\n });\r\n\r\n it(\"selectively updates existing aspect\", async () => {\r\n const sheetId = await insertSheet(db);\r\n const initialInfo = { designedBy: \"me\", checkedBy: \"you\", designedDate, drawnBy: \"Bob Ross\" };\r\n setSheetInfo(sheetId, initialInfo);\r\n expect(getSheetInfo(sheetId)).to.deep.equal(initialInfo);\r\n\r\n const updatedInfo = { designedBy: \"my buddy Gary\" };\r\n setSheetInfo(sheetId, updatedInfo);\r\n expect(getSheetInfo(sheetId)).to.deep.equal({ designedDate, designedBy: \"my buddy Gary\", checkedBy: \"you\", drawnBy: \"Bob Ross\" });\r\n });\r\n\r\n it(\"deletes existing aspect if information is undefined\", async () => {\r\n const sheetId = await insertSheet(db);\r\n const info = { designedBy: \"me\", checkedBy: \"you\", designedDate, drawnBy: \"Bob Ross\" };\r\n setSheetInfo(sheetId, info);\r\n expect(getSheetInfo(sheetId)).to.deep.equal(info);\r\n setSheetInfo(sheetId, undefined);\r\n expect(getSheetInfo(sheetId)).to.be.undefined;\r\n });\r\n\r\n it(\"is a no-op if information is undefined and no aspect exists\", async () => {\r\n const sheetId = await insertSheet(db);\r\n expect(getSheetInfo(sheetId)).to.be.undefined;\r\n setSheetInfo(sheetId, undefined);\r\n expect(getSheetInfo(sheetId)).to.be.undefined;\r\n });\r\n\r\n it(\"throws if element is not a Sheet\", () => {\r\n const info = { designedBy: \"me\", checkedBy: \"you\", designedDate, drawnBy: \"Bob Ross\" };\r\n expect(() => setSheetInfo(IModel.rootSubjectId, info)).to.throw(\"SheetInformationAspect can only be applied to a Sheet element\");\r\n });\r\n\r\n it(\"creates SheetOwnsSheetInformationAspect relationships\", async () => {\r\n const sheetId = await insertSheet(db);\r\n\r\n function countRelationships(): number {\r\n // eslint-disable-next-line @typescript-eslint/no-deprecated\r\n return db.withPreparedStatement(`SELECT COUNT(*) FROM ${SheetOwnsSheetInformationAspect.classFullName} WHERE SourceECInstanceId=${sheetId}`, (stmt) => {\r\n expect(stmt.step()).to.equal(DbResult.BE_SQLITE_ROW);\r\n return stmt.getValue(0).getInteger();\r\n });\r\n }\r\n\r\n expect(countRelationships()).to.equal(0);\r\n setSheetInfo(sheetId, { designedBy: \"me\", checkedBy: \"you\", designedDate, drawnBy: \"Bob Ross\" });\r\n expect(countRelationships()).to.equal(1);\r\n });\r\n })\r\n });\r\n});\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"UrlLink.test.js","sourceRoot":"","sources":["../../../../src/test/element/UrlLink.test.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAC9B,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAErD,OAAO,EAAE,MAAM,EAAuB,MAAM,oBAAoB,CAAC;AACjE,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAE5C,MAAM,YAAY,GAAG,iBAAiB,CAAC;AACvC,MAAM,UAAU,GAAG,aAAa,CAAC;AACjC,MAAM,UAAU,GAAG,eAAe,CAAC,iBAAiB,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;AAE/E,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;IAC7B,EAAE,CAAC,gCAAgC,EAAE,GAAG,EAAE;QACxC,MAAM,MAAM,GAAG,UAAU,CAAC,WAAW,CAAC,UAAU,EAAE,EAAE,WAAW,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,EAAE,CAAC,CAAC;QAC5F,MAAM,SAAS,GAAwB;YACrC,WAAW,EAAE,gCAAgC;YAC7C,GAAG,EAAE,oBAAoB;YACzB,cAAc,EAAE,IAAI,CAAC,WAAW,EAAE;YAClC,aAAa,EAAE,cAAc,CAAC,aAAa;YAC3C,IAAI,EAAE,cAAc,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,iBAAiB,EAAE,aAAa,CAAC;YAChF,KAAK,EAAE,MAAM,CAAC,iBAAiB;SAChC,CAAC;QAEF,MAAM,WAAW,GAAG,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;QAC7D,MAAM,EAAE,GAAG,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC;QAC/D,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,EAAE,eAAe,CAAC,CAAC;QACrD,MAAM,CAAC,WAAW,EAAE,CAAC;QAErB,qCAAqC;QACrC,MAAM,WAAW,GAAG,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAiB,EAAE,CAAC,CAAC;QACnE,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE,SAAS,CAAC,GAAG,EAAE,yCAAyC,CAAC,CAAC;QACxF,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,WAAW,EAAE,SAAS,CAAC,WAAW,EAAE,iDAAiD,CAAC,CAAC;QAChH,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,cAAc,EAAE,SAAS,CAAC,cAAc,EAAE,2CAA2C,CAAC,CAAC;IAClH,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\nimport { assert } from \"chai\";\nimport { Guid, Id64 } from \"@itwin/core-bentley\";\nimport { IModelTestUtils } from \"../IModelTestUtils\";\n\nimport { IModel, RepositoryLinkProps } from \"@itwin/core-common\";\nimport { RepositoryLink } from \"../../Element\";\nimport { SnapshotDb } from \"../../IModelDb\";\n\nconst testFileName = \"UrlLinkTest.bim\";\nconst subDirName = \"UrlLinkTrip\";\nconst iModelPath = IModelTestUtils.prepareOutputFile(subDirName, testFileName);\n\ndescribe(\"UrlLink tests\", () => {\n it(\"Link should construct properly\", () => {\n const imodel = SnapshotDb.createEmpty(iModelPath, { rootSubject: { name: \"UrlLinkTest\" } });\n const linkProps: RepositoryLinkProps = {\n description: \"This is a test repository link\",\n url: \"http://itwinjs.org\",\n repositoryGuid: Guid.createValue(),\n classFullName: RepositoryLink.classFullName,\n code: RepositoryLink.createCode(imodel, IModel.repositoryModelId, \"MyTestValue\"),\n model: IModel.repositoryModelId,\n };\n\n const linkElement = imodel.elements.createElement(linkProps);\n const id = imodel.elements.insertElement(linkElement.toJSON());\n assert.isTrue(Id64.isValidId64(id), \"insert worked\");\n imodel.saveChanges();\n\n // verify inserted element properties\n const actualValue = imodel.elements.getElement<RepositoryLink>(id);\n assert.equal(actualValue.url, linkProps.url, \"Repository link url not set as expected\");\n assert.equal(actualValue.description, linkProps.description, \"Repository link description not set as expected\");\n assert.equal(actualValue.repositoryGuid, linkProps.repositoryGuid, \"Repository link guid not set as expected.\");\n });\n});\n"]}
1
+ {"version":3,"file":"UrlLink.test.js","sourceRoot":"","sources":["../../../../src/test/element/UrlLink.test.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAC9B,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAErD,OAAO,EAAE,MAAM,EAAuB,MAAM,oBAAoB,CAAC;AACjE,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAE5C,MAAM,YAAY,GAAG,iBAAiB,CAAC;AACvC,MAAM,UAAU,GAAG,aAAa,CAAC;AACjC,MAAM,UAAU,GAAG,eAAe,CAAC,iBAAiB,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;AAE/E,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;IAC7B,EAAE,CAAC,gCAAgC,EAAE,GAAG,EAAE;QACxC,MAAM,MAAM,GAAG,UAAU,CAAC,WAAW,CAAC,UAAU,EAAE,EAAE,WAAW,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,EAAE,CAAC,CAAC;QAC5F,MAAM,SAAS,GAAwB;YACrC,WAAW,EAAE,gCAAgC;YAC7C,GAAG,EAAE,oBAAoB;YACzB,cAAc,EAAE,IAAI,CAAC,WAAW,EAAE;YAClC,aAAa,EAAE,cAAc,CAAC,aAAa;YAC3C,IAAI,EAAE,cAAc,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,iBAAiB,EAAE,aAAa,CAAC;YAChF,KAAK,EAAE,MAAM,CAAC,iBAAiB;SAChC,CAAC;QAEF,MAAM,WAAW,GAAG,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;QAC7D,MAAM,EAAE,GAAG,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC;QAC/D,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,EAAE,eAAe,CAAC,CAAC;QACrD,MAAM,CAAC,WAAW,EAAE,CAAC;QAErB,qCAAqC;QACrC,MAAM,WAAW,GAAG,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAiB,EAAE,CAAC,CAAC;QACnE,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE,SAAS,CAAC,GAAG,EAAE,yCAAyC,CAAC,CAAC;QACxF,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,WAAW,EAAE,SAAS,CAAC,WAAW,EAAE,iDAAiD,CAAC,CAAC;QAChH,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,cAAc,EAAE,SAAS,CAAC,cAAc,EAAE,2CAA2C,CAAC,CAAC;IAClH,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 } from \"chai\";\r\nimport { Guid, Id64 } from \"@itwin/core-bentley\";\r\nimport { IModelTestUtils } from \"../IModelTestUtils\";\r\n\r\nimport { IModel, RepositoryLinkProps } from \"@itwin/core-common\";\r\nimport { RepositoryLink } from \"../../Element\";\r\nimport { SnapshotDb } from \"../../IModelDb\";\r\n\r\nconst testFileName = \"UrlLinkTest.bim\";\r\nconst subDirName = \"UrlLinkTrip\";\r\nconst iModelPath = IModelTestUtils.prepareOutputFile(subDirName, testFileName);\r\n\r\ndescribe(\"UrlLink tests\", () => {\r\n it(\"Link should construct properly\", () => {\r\n const imodel = SnapshotDb.createEmpty(iModelPath, { rootSubject: { name: \"UrlLinkTest\" } });\r\n const linkProps: RepositoryLinkProps = {\r\n description: \"This is a test repository link\",\r\n url: \"http://itwinjs.org\",\r\n repositoryGuid: Guid.createValue(),\r\n classFullName: RepositoryLink.classFullName,\r\n code: RepositoryLink.createCode(imodel, IModel.repositoryModelId, \"MyTestValue\"),\r\n model: IModel.repositoryModelId,\r\n };\r\n\r\n const linkElement = imodel.elements.createElement(linkProps);\r\n const id = imodel.elements.insertElement(linkElement.toJSON());\r\n assert.isTrue(Id64.isValidId64(id), \"insert worked\");\r\n imodel.saveChanges();\r\n\r\n // verify inserted element properties\r\n const actualValue = imodel.elements.getElement<RepositoryLink>(id);\r\n assert.equal(actualValue.url, linkProps.url, \"Repository link url not set as expected\");\r\n assert.equal(actualValue.description, linkProps.description, \"Repository link description not set as expected\");\r\n assert.equal(actualValue.repositoryGuid, linkProps.repositoryGuid, \"Repository link guid not set as expected.\");\r\n });\r\n});\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"FontFile.test.js","sourceRoot":"","sources":["../../../../src/test/font/FontFile.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 * as fs from \"fs\";\nimport { expect } from \"chai\";\nimport { FontFace, FontType } from \"@itwin/core-common\";\nimport { IModelTestUtils } from \"../IModelTestUtils\";\nimport { FontFile } from \"../../FontFile\";\nimport { IModelJsNative } from \"@bentley/imodeljs-native\";\nimport { CadFontFile } from \"../../internal/FontFileImpl\";\nimport { _key } from \"../../internal/Symbols\";\n\nfunction expectFaces(file: FontFile, expected: FontFace[]): void {\n const actual = Array.from(file.faces);\n expect(actual).to.deep.equal(expected);\n}\n\ndescribe(\"FontFile\", () => {\n describe(\"createFromShxBlob\", () => {\n it(\"creates a valid font\", () => {\n const fileName = IModelTestUtils.resolveFontFile(\"Cdm.shx\");\n const blob = fs.readFileSync(fileName);\n\n const file = FontFile.createFromShxFontBlob({ familyName: \"Cdm\", blob });\n expect(file.type).to.equal(FontType.Shx);\n expect(file.isEmbeddable).to.be.true;\n expectFaces(file, [{ familyName: \"Cdm\", isBold: false, isItalic: false }])\n });\n\n it(\"throws on non-font data\", () => {\n const fileName = IModelTestUtils.resolveAssetFile(\"brepdata1.json\");\n expect(fs.existsSync(fileName)).to.be.true;\n\n const blob = fs.readFileSync(fileName);\n expect(blob.length).greaterThan(5);\n\n expect(() => FontFile.createFromShxFontBlob({ familyName: \"brepdata1\", blob })).to.throw(\"Failed to read font file\");\n });\n });\n\n describe(\"createFromRscBlob\", () => {\n it(\"creates a valid font\", () => {\n const blob = fs.readFileSync(IModelTestUtils.resolveFontFile(\"ENGINEERING.bin\"));\n const file = FontFile.createFromRscFontBlob({ familyName: \"ENGINEERING\", blob });\n expect(file.type).to.equal(FontType.Rsc);\n expect(file.isEmbeddable).to.be.true;\n expectFaces(file, [{ familyName: \"ENGINEERING\", isBold: false, isItalic: false }]);\n });\n\n it(\"throws on non-font data\", () => {\n const blob = new Uint8Array();\n expect(() => FontFile.createFromRscFontBlob({ familyName: \"not-a-font\", blob })).to.throw(\"Failed to read font file\");\n });\n });\n \n describe(\"TrueType fonts\", () => {\n describe(\"createFromTrueTypeFileName\", () => {\n it(\"throws on non-existent file\", () => {\n let fileName = IModelTestUtils.resolveFontFile(\"Karla-Regular.ttf\");\n expect(fs.existsSync(fileName)).to.be.true;\n fileName = `${fileName }no-existe`;\n expect(fs.existsSync(fileName)).to.be.false;\n expect(() => FontFile.createFromTrueTypeFileName(fileName)).to.throw(\"Failed to read font file\");\n });\n\n it(\"throws on non-font data\", () => {\n const fileName = IModelTestUtils.resolveAssetFile(\"brepdata1.json\");\n expect(fs.existsSync(fileName)).to.be.true;\n expect(() => FontFile.createFromTrueTypeFileName(fileName)).to.throw(\"Failed to read font file\");\n });\n\n it(\"reads faces\", () => {\n function expectTTFaces(expected: Array<[name: string, isBold?: boolean, isItalic?: boolean]>, fontName: string): void {\n const fileName = IModelTestUtils.resolveFontFile(fontName);\n const fontFile = FontFile.createFromTrueTypeFileName(fileName);\n expect(fontFile.type).to.equal(FontType.TrueType);\n\n const expectedFaces = expected.map((x) => { return { familyName: x[0], isBold: !!x[1], isItalic: !!x[2] } });\n expect(fontFile.faces.length).to.equal(expectedFaces.length);\n expect(fontFile.faces).to.deep.equal(expectedFaces);\n }\n\n expectTTFaces([ [\"Karla\"] ], \"Karla-MultipleEmbeddingRights.ttf\");\n expectTTFaces([ [\"Karla\"] ], \"Karla-Regular.ttf\");\n expectTTFaces([ [\"Karla-Preview-And-Print\"] ], \"Karla-Preview-And-Print.ttf\");\n expectTTFaces([ [\"Karla-Restricted\"] ], \"Karla-Restricted.ttf\");\n\n expectTTFaces([ [\"DejaVu Sans\"] ], \"DejaVuSans.ttf\");\n expectTTFaces([ [\"DejaVu Sans\", true] ], \"DejaVuSans-Bold.ttf\");\n expectTTFaces([ [\"DejaVu Sans Mono\"] ], \"DejaVuSansMono.ttf\");\n expectTTFaces([ [\"DejaVu Sans Mono\", true] ], \"DejaVuSansMono-Bold.ttf\");\n expectTTFaces([ [\"DejaVu Sans Mono\", false, true] ], \"DejaVuSansMono-Oblique.ttf\");\n expectTTFaces([ [\"DejaVu Sans Mono\", true, true] ], \"DejaVuSansMono-BoldOblique.ttf\");\n expectTTFaces([ [\"DejaVu Serif\"] ], \"DejaVuSerif.ttf\");\n expectTTFaces([ [\"DejaVu Serif\", true] ], \"DejaVuSerif-Bold.ttf\");\n\n expectTTFaces([\n [\"Sitka Small\"], [\"Sitka Text\"], [\"Sitka Subheading\"], [\"Sitka Heading\"], [\"Sitka Display\"], [\"Sitka Banner\"],\n ], \"Sitka.ttc\");\n });\n });\n \n describe(\"isEmbeddable\", () => {\n function expectEmbeddable(expected: boolean, fontName: string): void {\n const fileName = IModelTestUtils.resolveFontFile(fontName);\n const fontFile = FontFile.createFromTrueTypeFileName(fileName);\n expect(fontFile.isEmbeddable).to.equal(expected);\n }\n\n it(\"prohibits embedding of restricted and preview-and-print faces\", () => {\n expectEmbeddable(false, \"Karla-Restricted.ttf\");\n expectEmbeddable(false, \"Karla-Preview-And-Print.ttf\");\n\n expectEmbeddable(true, \"Karla-Regular.ttf\");\n\n expectEmbeddable(true, \"DejaVuSansMono.ttf\");\n expectEmbeddable(true, \"Sitka-Banner.ttf\");\n });\n\n it(\"uses the least restrictive embedding rights if multiple bits are set\", () => {\n expectEmbeddable(true, \"Karla-MultipleEmbeddingRights.ttf\");\n });\n });\n });\n})\n\ndescribe(\"FontFileImpl\", () => {\n it(\"produces canonical keys from faces\", () => {\n function expectKey(faces: IModelJsNative.FontFaceProps[], expected: string): void {\n const file = new CadFontFile(new Uint8Array(), FontType.Shx, faces);\n expect(file[_key]).to.equal(expected);\n }\n\n expectKey([{\n familyName: \"Arial\", faceName: \"regular\", subId: 1, type: FontType.Shx,\n }], `[{\"familyName\":\"Arial\",\"faceName\":\"regular\",\"type\":3,\"subId\":1}]`);\n\n expectKey([{\n subId: 1, faceName: \"regular\", type: FontType.Shx, familyName: \"Arial\",\n }], `[{\"familyName\":\"Arial\",\"faceName\":\"regular\",\"type\":3,\"subId\":1}]`);\n\n expectKey([{\n familyName: \"Arial\", faceName: \"regular\", subId: 2, type: FontType.Shx,\n }, {\n subId: 1, faceName: \"regular\", type: FontType.Shx, familyName: \"Arial\",\n }], `[{\"familyName\":\"Arial\",\"faceName\":\"regular\",\"type\":3,\"subId\":1},{\"familyName\":\"Arial\",\"faceName\":\"regular\",\"type\":3,\"subId\":2}]`);\n\n expectKey([{\n familyName: \"Arial\", faceName: \"regular\", subId: 2, type: FontType.Shx,\n }, {\n subId: 1, faceName: \"bolditalic\", type: FontType.Shx, familyName: \"Arial\",\n }, {\n familyName: \"Arial\", faceName: \"bold\", subId: 3, type: FontType.Shx,\n }], `[{\"familyName\":\"Arial\",\"faceName\":\"bold\",\"type\":3,\"subId\":3},{\"familyName\":\"Arial\",\"faceName\":\"bolditalic\",\"type\":3,\"subId\":1},{\"familyName\":\"Arial\",\"faceName\":\"regular\",\"type\":3,\"subId\":2}]`);\n\n expectKey([{\n familyName: \"Consolas\", faceName: \"regular\", subId: 1, type: FontType.Shx,\n }, {\n faceName: \"italic\", subId: 2, type: FontType.Shx, familyName: \"Comic Sans\",\n }, {\n familyName: \"Arial\", faceName: \"regular\", subId: 0, type: FontType.Shx,\n }], `[{\"familyName\":\"Arial\",\"faceName\":\"regular\",\"type\":3,\"subId\":0},{\"familyName\":\"Comic Sans\",\"faceName\":\"italic\",\"type\":3,\"subId\":2},{\"familyName\":\"Consolas\",\"faceName\":\"regular\",\"type\":3,\"subId\":1}]`);\n });\n});\n"]}
1
+ {"version":3,"file":"FontFile.test.js","sourceRoot":"","sources":["../../../../src/test/font/FontFile.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 * as fs from \"fs\";\r\nimport { expect } from \"chai\";\r\nimport { FontFace, FontType } from \"@itwin/core-common\";\r\nimport { IModelTestUtils } from \"../IModelTestUtils\";\r\nimport { FontFile } from \"../../FontFile\";\r\nimport { IModelJsNative } from \"@bentley/imodeljs-native\";\r\nimport { CadFontFile } from \"../../internal/FontFileImpl\";\r\nimport { _key } from \"../../internal/Symbols\";\r\n\r\nfunction expectFaces(file: FontFile, expected: FontFace[]): void {\r\n const actual = Array.from(file.faces);\r\n expect(actual).to.deep.equal(expected);\r\n}\r\n\r\ndescribe(\"FontFile\", () => {\r\n describe(\"createFromShxBlob\", () => {\r\n it(\"creates a valid font\", () => {\r\n const fileName = IModelTestUtils.resolveFontFile(\"Cdm.shx\");\r\n const blob = fs.readFileSync(fileName);\r\n\r\n const file = FontFile.createFromShxFontBlob({ familyName: \"Cdm\", blob });\r\n expect(file.type).to.equal(FontType.Shx);\r\n expect(file.isEmbeddable).to.be.true;\r\n expectFaces(file, [{ familyName: \"Cdm\", isBold: false, isItalic: false }])\r\n });\r\n\r\n it(\"throws on non-font data\", () => {\r\n const fileName = IModelTestUtils.resolveAssetFile(\"brepdata1.json\");\r\n expect(fs.existsSync(fileName)).to.be.true;\r\n\r\n const blob = fs.readFileSync(fileName);\r\n expect(blob.length).greaterThan(5);\r\n\r\n expect(() => FontFile.createFromShxFontBlob({ familyName: \"brepdata1\", blob })).to.throw(\"Failed to read font file\");\r\n });\r\n });\r\n\r\n describe(\"createFromRscBlob\", () => {\r\n it(\"creates a valid font\", () => {\r\n const blob = fs.readFileSync(IModelTestUtils.resolveFontFile(\"ENGINEERING.bin\"));\r\n const file = FontFile.createFromRscFontBlob({ familyName: \"ENGINEERING\", blob });\r\n expect(file.type).to.equal(FontType.Rsc);\r\n expect(file.isEmbeddable).to.be.true;\r\n expectFaces(file, [{ familyName: \"ENGINEERING\", isBold: false, isItalic: false }]);\r\n });\r\n\r\n it(\"throws on non-font data\", () => {\r\n const blob = new Uint8Array();\r\n expect(() => FontFile.createFromRscFontBlob({ familyName: \"not-a-font\", blob })).to.throw(\"Failed to read font file\");\r\n });\r\n });\r\n \r\n describe(\"TrueType fonts\", () => {\r\n describe(\"createFromTrueTypeFileName\", () => {\r\n it(\"throws on non-existent file\", () => {\r\n let fileName = IModelTestUtils.resolveFontFile(\"Karla-Regular.ttf\");\r\n expect(fs.existsSync(fileName)).to.be.true;\r\n fileName = `${fileName }no-existe`;\r\n expect(fs.existsSync(fileName)).to.be.false;\r\n expect(() => FontFile.createFromTrueTypeFileName(fileName)).to.throw(\"Failed to read font file\");\r\n });\r\n\r\n it(\"throws on non-font data\", () => {\r\n const fileName = IModelTestUtils.resolveAssetFile(\"brepdata1.json\");\r\n expect(fs.existsSync(fileName)).to.be.true;\r\n expect(() => FontFile.createFromTrueTypeFileName(fileName)).to.throw(\"Failed to read font file\");\r\n });\r\n\r\n it(\"reads faces\", () => {\r\n function expectTTFaces(expected: Array<[name: string, isBold?: boolean, isItalic?: boolean]>, fontName: string): void {\r\n const fileName = IModelTestUtils.resolveFontFile(fontName);\r\n const fontFile = FontFile.createFromTrueTypeFileName(fileName);\r\n expect(fontFile.type).to.equal(FontType.TrueType);\r\n\r\n const expectedFaces = expected.map((x) => { return { familyName: x[0], isBold: !!x[1], isItalic: !!x[2] } });\r\n expect(fontFile.faces.length).to.equal(expectedFaces.length);\r\n expect(fontFile.faces).to.deep.equal(expectedFaces);\r\n }\r\n\r\n expectTTFaces([ [\"Karla\"] ], \"Karla-MultipleEmbeddingRights.ttf\");\r\n expectTTFaces([ [\"Karla\"] ], \"Karla-Regular.ttf\");\r\n expectTTFaces([ [\"Karla-Preview-And-Print\"] ], \"Karla-Preview-And-Print.ttf\");\r\n expectTTFaces([ [\"Karla-Restricted\"] ], \"Karla-Restricted.ttf\");\r\n\r\n expectTTFaces([ [\"DejaVu Sans\"] ], \"DejaVuSans.ttf\");\r\n expectTTFaces([ [\"DejaVu Sans\", true] ], \"DejaVuSans-Bold.ttf\");\r\n expectTTFaces([ [\"DejaVu Sans Mono\"] ], \"DejaVuSansMono.ttf\");\r\n expectTTFaces([ [\"DejaVu Sans Mono\", true] ], \"DejaVuSansMono-Bold.ttf\");\r\n expectTTFaces([ [\"DejaVu Sans Mono\", false, true] ], \"DejaVuSansMono-Oblique.ttf\");\r\n expectTTFaces([ [\"DejaVu Sans Mono\", true, true] ], \"DejaVuSansMono-BoldOblique.ttf\");\r\n expectTTFaces([ [\"DejaVu Serif\"] ], \"DejaVuSerif.ttf\");\r\n expectTTFaces([ [\"DejaVu Serif\", true] ], \"DejaVuSerif-Bold.ttf\");\r\n\r\n expectTTFaces([\r\n [\"Sitka Small\"], [\"Sitka Text\"], [\"Sitka Subheading\"], [\"Sitka Heading\"], [\"Sitka Display\"], [\"Sitka Banner\"],\r\n ], \"Sitka.ttc\");\r\n });\r\n });\r\n \r\n describe(\"isEmbeddable\", () => {\r\n function expectEmbeddable(expected: boolean, fontName: string): void {\r\n const fileName = IModelTestUtils.resolveFontFile(fontName);\r\n const fontFile = FontFile.createFromTrueTypeFileName(fileName);\r\n expect(fontFile.isEmbeddable).to.equal(expected);\r\n }\r\n\r\n it(\"prohibits embedding of restricted and preview-and-print faces\", () => {\r\n expectEmbeddable(false, \"Karla-Restricted.ttf\");\r\n expectEmbeddable(false, \"Karla-Preview-And-Print.ttf\");\r\n\r\n expectEmbeddable(true, \"Karla-Regular.ttf\");\r\n\r\n expectEmbeddable(true, \"DejaVuSansMono.ttf\");\r\n expectEmbeddable(true, \"Sitka-Banner.ttf\");\r\n });\r\n\r\n it(\"uses the least restrictive embedding rights if multiple bits are set\", () => {\r\n expectEmbeddable(true, \"Karla-MultipleEmbeddingRights.ttf\");\r\n });\r\n });\r\n });\r\n})\r\n\r\ndescribe(\"FontFileImpl\", () => {\r\n it(\"produces canonical keys from faces\", () => {\r\n function expectKey(faces: IModelJsNative.FontFaceProps[], expected: string): void {\r\n const file = new CadFontFile(new Uint8Array(), FontType.Shx, faces);\r\n expect(file[_key]).to.equal(expected);\r\n }\r\n\r\n expectKey([{\r\n familyName: \"Arial\", faceName: \"regular\", subId: 1, type: FontType.Shx,\r\n }], `[{\"familyName\":\"Arial\",\"faceName\":\"regular\",\"type\":3,\"subId\":1}]`);\r\n\r\n expectKey([{\r\n subId: 1, faceName: \"regular\", type: FontType.Shx, familyName: \"Arial\",\r\n }], `[{\"familyName\":\"Arial\",\"faceName\":\"regular\",\"type\":3,\"subId\":1}]`);\r\n\r\n expectKey([{\r\n familyName: \"Arial\", faceName: \"regular\", subId: 2, type: FontType.Shx,\r\n }, {\r\n subId: 1, faceName: \"regular\", type: FontType.Shx, familyName: \"Arial\",\r\n }], `[{\"familyName\":\"Arial\",\"faceName\":\"regular\",\"type\":3,\"subId\":1},{\"familyName\":\"Arial\",\"faceName\":\"regular\",\"type\":3,\"subId\":2}]`);\r\n\r\n expectKey([{\r\n familyName: \"Arial\", faceName: \"regular\", subId: 2, type: FontType.Shx,\r\n }, {\r\n subId: 1, faceName: \"bolditalic\", type: FontType.Shx, familyName: \"Arial\",\r\n }, {\r\n familyName: \"Arial\", faceName: \"bold\", subId: 3, type: FontType.Shx,\r\n }], `[{\"familyName\":\"Arial\",\"faceName\":\"bold\",\"type\":3,\"subId\":3},{\"familyName\":\"Arial\",\"faceName\":\"bolditalic\",\"type\":3,\"subId\":1},{\"familyName\":\"Arial\",\"faceName\":\"regular\",\"type\":3,\"subId\":2}]`);\r\n\r\n expectKey([{\r\n familyName: \"Consolas\", faceName: \"regular\", subId: 1, type: FontType.Shx,\r\n }, {\r\n faceName: \"italic\", subId: 2, type: FontType.Shx, familyName: \"Comic Sans\",\r\n }, {\r\n familyName: \"Arial\", faceName: \"regular\", subId: 0, type: FontType.Shx,\r\n }], `[{\"familyName\":\"Arial\",\"faceName\":\"regular\",\"type\":3,\"subId\":0},{\"familyName\":\"Comic Sans\",\"faceName\":\"italic\",\"type\":3,\"subId\":2},{\"familyName\":\"Consolas\",\"faceName\":\"regular\",\"type\":3,\"subId\":1}]`);\r\n });\r\n});\r\n"]}