@itwin/core-backend 5.10.0-dev.6 → 5.10.0-dev.8

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 (439) hide show
  1. package/CHANGELOG.md +8 -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 +9 -3
  7. package/lib/cjs/BriefcaseManager.d.ts.map +1 -1
  8. package/lib/cjs/BriefcaseManager.js +19 -3
  9. package/lib/cjs/BriefcaseManager.js.map +1 -1
  10. package/lib/cjs/CatalogDb.js.map +1 -1
  11. package/lib/cjs/Category.js.map +1 -1
  12. package/lib/cjs/ChangeSummaryManager.js +2 -2
  13. package/lib/cjs/ChangeSummaryManager.js.map +1 -1
  14. package/lib/cjs/ChangedElementsDb.js.map +1 -1
  15. package/lib/cjs/ChangesetECAdaptor.js +248 -248
  16. package/lib/cjs/ChangesetECAdaptor.js.map +1 -1
  17. package/lib/cjs/ChangesetReader.js.map +1 -1
  18. package/lib/cjs/ChangesetReaderTypes.js.map +1 -1
  19. package/lib/cjs/ChannelControl.js.map +1 -1
  20. package/lib/cjs/CheckpointManager.js.map +1 -1
  21. package/lib/cjs/ClassRegistry.js +5 -5
  22. package/lib/cjs/ClassRegistry.js.map +1 -1
  23. package/lib/cjs/CloudSqlite.js.map +1 -1
  24. package/lib/cjs/CodeService.js.map +1 -1
  25. package/lib/cjs/CodeSpecs.js.map +1 -1
  26. package/lib/cjs/ConcurrentQuery.js.map +1 -1
  27. package/lib/cjs/CustomViewState3dCreator.js.map +1 -1
  28. package/lib/cjs/DevTools.js.map +1 -1
  29. package/lib/cjs/DisplayStyle.js.map +1 -1
  30. package/lib/cjs/ECDb.js.map +1 -1
  31. package/lib/cjs/ECSchemaXmlContext.js.map +1 -1
  32. package/lib/cjs/ECSqlRowExecutor.js.map +1 -1
  33. package/lib/cjs/ECSqlStatement.js.map +1 -1
  34. package/lib/cjs/ECSqlSyncReader.js.map +1 -1
  35. package/lib/cjs/EditTxn.js.map +1 -1
  36. package/lib/cjs/Element.js.map +1 -1
  37. package/lib/cjs/ElementAspect.js.map +1 -1
  38. package/lib/cjs/ElementGraphics.js.map +1 -1
  39. package/lib/cjs/ElementTreeWalker.js.map +1 -1
  40. package/lib/cjs/Entity.js.map +1 -1
  41. package/lib/cjs/EntityReferences.js.map +1 -1
  42. package/lib/cjs/ExportGraphics.js.map +1 -1
  43. package/lib/cjs/ExternalSource.js.map +1 -1
  44. package/lib/cjs/FontFile.js.map +1 -1
  45. package/lib/cjs/GeoCoordConfig.js.map +1 -1
  46. package/lib/cjs/GeographicCRSServices.js.map +1 -1
  47. package/lib/cjs/GeometrySummary.js +47 -47
  48. package/lib/cjs/GeometrySummary.js.map +1 -1
  49. package/lib/cjs/IModelDb.js +8 -8
  50. package/lib/cjs/IModelDb.js.map +1 -1
  51. package/lib/cjs/IModelDbFonts.js.map +1 -1
  52. package/lib/cjs/IModelElementCloneContext.js.map +1 -1
  53. package/lib/cjs/IModelHost.js.map +1 -1
  54. package/lib/cjs/IModelIncrementalSchemaLocater.js.map +1 -1
  55. package/lib/cjs/IModelJsFs.js.map +1 -1
  56. package/lib/cjs/ImageSourceConversion.js.map +1 -1
  57. package/lib/cjs/IpcHost.js.map +1 -1
  58. package/lib/cjs/LineStyle.js.map +1 -1
  59. package/lib/cjs/LocalHub.js +1 -1
  60. package/lib/cjs/LocalHub.js.map +1 -1
  61. package/lib/cjs/LocalhostIpcHost.js.map +1 -1
  62. package/lib/cjs/LockControl.js.map +1 -1
  63. package/lib/cjs/Material.js.map +1 -1
  64. package/lib/cjs/Model.js.map +1 -1
  65. package/lib/cjs/NativeAppStorage.js.map +1 -1
  66. package/lib/cjs/NativeHost.js.map +1 -1
  67. package/lib/cjs/NavigationRelationship.js.map +1 -1
  68. package/lib/cjs/PartialChangeUnifier.js +7 -7
  69. package/lib/cjs/PartialChangeUnifier.js.map +1 -1
  70. package/lib/cjs/PromiseMemoizer.js.map +1 -1
  71. package/lib/cjs/PropertyStore.js.map +1 -1
  72. package/lib/cjs/Relationship.js.map +1 -1
  73. package/lib/cjs/RpcBackend.js.map +1 -1
  74. package/lib/cjs/SQLiteDb.js.map +1 -1
  75. package/lib/cjs/Schema.js.map +1 -1
  76. package/lib/cjs/SchemaSync.js.map +1 -1
  77. package/lib/cjs/SchemaUtils.js.map +1 -1
  78. package/lib/cjs/SheetIndex.js.map +1 -1
  79. package/lib/cjs/SqliteChangesetReader.js.map +1 -1
  80. package/lib/cjs/SqliteStatement.js.map +1 -1
  81. package/lib/cjs/StashManager.js.map +1 -1
  82. package/lib/cjs/Texture.js.map +1 -1
  83. package/lib/cjs/TileStorage.js.map +1 -1
  84. package/lib/cjs/TxnManager.d.ts.map +1 -1
  85. package/lib/cjs/TxnManager.js.map +1 -1
  86. package/lib/cjs/ViewDefinition.js.map +1 -1
  87. package/lib/cjs/ViewStateHydrator.js.map +1 -1
  88. package/lib/cjs/ViewStore.js.map +1 -1
  89. package/lib/cjs/annotations/ElementDrivesTextAnnotation.js.map +1 -1
  90. package/lib/cjs/annotations/FrameGeometry.js.map +1 -1
  91. package/lib/cjs/annotations/LeaderGeometry.js.map +1 -1
  92. package/lib/cjs/annotations/TextAnnotationElement.js.map +1 -1
  93. package/lib/cjs/annotations/TextAnnotationGeometry.js.map +1 -1
  94. package/lib/cjs/annotations/TextBlockGeometry.js.map +1 -1
  95. package/lib/cjs/annotations/TextBlockLayout.js.map +1 -1
  96. package/lib/cjs/assets/IModelChange.02.00.00.ecschema.xml +90 -90
  97. package/lib/cjs/assets/Settings/Schemas/Base.Schema.json +32 -32
  98. package/lib/cjs/assets/Settings/Schemas/Gcs.schema.json +27 -27
  99. package/lib/cjs/assets/Settings/Schemas/Workspace.Schema.json +94 -94
  100. package/lib/cjs/assets/Settings/backend.setting.json5 +21 -21
  101. package/lib/cjs/core-backend.js.map +1 -1
  102. package/lib/cjs/domains/FunctionalElements.js.map +1 -1
  103. package/lib/cjs/domains/FunctionalSchema.js.map +1 -1
  104. package/lib/cjs/domains/GenericElements.js.map +1 -1
  105. package/lib/cjs/domains/GenericSchema.js.map +1 -1
  106. package/lib/cjs/internal/ChangesetConflictArgs.js.map +1 -1
  107. package/lib/cjs/internal/ChannelAdmin.js.map +1 -1
  108. package/lib/cjs/internal/ElementLRUCache.js.map +1 -1
  109. package/lib/cjs/internal/FontFileImpl.js.map +1 -1
  110. package/lib/cjs/internal/HubMock.js.map +1 -1
  111. package/lib/cjs/internal/IModelDbFontsImpl.js.map +1 -1
  112. package/lib/cjs/internal/IntegrityCheck.js.map +1 -1
  113. package/lib/cjs/internal/NativePlatform.js.map +1 -1
  114. package/lib/cjs/internal/NoLocks.js.map +1 -1
  115. package/lib/cjs/internal/OnlineStatus.js.map +1 -1
  116. package/lib/cjs/internal/ServerBasedLocks.js +33 -33
  117. package/lib/cjs/internal/ServerBasedLocks.js.map +1 -1
  118. package/lib/cjs/internal/Symbols.js.map +1 -1
  119. package/lib/cjs/internal/annotations/fields.js.map +1 -1
  120. package/lib/cjs/internal/cross-package.d.ts +1 -1
  121. package/lib/cjs/internal/cross-package.d.ts.map +1 -1
  122. package/lib/cjs/internal/cross-package.js +2 -1
  123. package/lib/cjs/internal/cross-package.js.map +1 -1
  124. package/lib/cjs/internal/workspace/SettingsEditorImpl.js.map +1 -1
  125. package/lib/cjs/internal/workspace/SettingsImpl.js.map +1 -1
  126. package/lib/cjs/internal/workspace/SettingsSchemasImpl.js.map +1 -1
  127. package/lib/cjs/internal/workspace/WorkspaceImpl.js.map +1 -1
  128. package/lib/cjs/internal/workspace/WorkspaceSqliteDb.js.map +1 -1
  129. package/lib/cjs/rpc/multipart.js.map +1 -1
  130. package/lib/cjs/rpc/tracing.js.map +1 -1
  131. package/lib/cjs/rpc/web/logging.js.map +1 -1
  132. package/lib/cjs/rpc/web/request.js.map +1 -1
  133. package/lib/cjs/rpc/web/response.js.map +1 -1
  134. package/lib/cjs/rpc-impl/DevToolsRpcImpl.js.map +1 -1
  135. package/lib/cjs/rpc-impl/IModelReadRpcImpl.js.map +1 -1
  136. package/lib/cjs/rpc-impl/IModelTileRpcImpl.js.map +1 -1
  137. package/lib/cjs/rpc-impl/RpcBriefcaseUtility.js.map +1 -1
  138. package/lib/cjs/rpc-impl/SnapshotIModelRpcImpl.js.map +1 -1
  139. package/lib/cjs/workspace/Settings.js.map +1 -1
  140. package/lib/cjs/workspace/SettingsDb.js.map +1 -1
  141. package/lib/cjs/workspace/SettingsEditor.js.map +1 -1
  142. package/lib/cjs/workspace/SettingsSchemas.js.map +1 -1
  143. package/lib/cjs/workspace/Workspace.js.map +1 -1
  144. package/lib/cjs/workspace/WorkspaceEditor.js.map +1 -1
  145. package/lib/esm/BackendHubAccess.js.map +1 -1
  146. package/lib/esm/BackendLoggerCategory.js.map +1 -1
  147. package/lib/esm/BisCoreSchema.js.map +1 -1
  148. package/lib/esm/BlobContainerService.js.map +1 -1
  149. package/lib/esm/BriefcaseManager.d.ts +9 -3
  150. package/lib/esm/BriefcaseManager.d.ts.map +1 -1
  151. package/lib/esm/BriefcaseManager.js +19 -3
  152. package/lib/esm/BriefcaseManager.js.map +1 -1
  153. package/lib/esm/CatalogDb.js.map +1 -1
  154. package/lib/esm/Category.js.map +1 -1
  155. package/lib/esm/ChangeSummaryManager.js +2 -2
  156. package/lib/esm/ChangeSummaryManager.js.map +1 -1
  157. package/lib/esm/ChangedElementsDb.js.map +1 -1
  158. package/lib/esm/ChangesetECAdaptor.js +248 -248
  159. package/lib/esm/ChangesetECAdaptor.js.map +1 -1
  160. package/lib/esm/ChangesetReader.js.map +1 -1
  161. package/lib/esm/ChangesetReaderTypes.js.map +1 -1
  162. package/lib/esm/ChannelControl.js.map +1 -1
  163. package/lib/esm/CheckpointManager.js.map +1 -1
  164. package/lib/esm/ClassRegistry.js +5 -5
  165. package/lib/esm/ClassRegistry.js.map +1 -1
  166. package/lib/esm/CloudSqlite.js.map +1 -1
  167. package/lib/esm/CodeService.js.map +1 -1
  168. package/lib/esm/CodeSpecs.js.map +1 -1
  169. package/lib/esm/ConcurrentQuery.js.map +1 -1
  170. package/lib/esm/CustomViewState3dCreator.js.map +1 -1
  171. package/lib/esm/DevTools.js.map +1 -1
  172. package/lib/esm/DisplayStyle.js.map +1 -1
  173. package/lib/esm/ECDb.js.map +1 -1
  174. package/lib/esm/ECSchemaXmlContext.js.map +1 -1
  175. package/lib/esm/ECSqlRowExecutor.js.map +1 -1
  176. package/lib/esm/ECSqlStatement.js.map +1 -1
  177. package/lib/esm/ECSqlSyncReader.js.map +1 -1
  178. package/lib/esm/EditTxn.js.map +1 -1
  179. package/lib/esm/Element.js.map +1 -1
  180. package/lib/esm/ElementAspect.js.map +1 -1
  181. package/lib/esm/ElementGraphics.js.map +1 -1
  182. package/lib/esm/ElementTreeWalker.js.map +1 -1
  183. package/lib/esm/Entity.js.map +1 -1
  184. package/lib/esm/EntityReferences.js.map +1 -1
  185. package/lib/esm/ExportGraphics.js.map +1 -1
  186. package/lib/esm/ExternalSource.js.map +1 -1
  187. package/lib/esm/FontFile.js.map +1 -1
  188. package/lib/esm/GeoCoordConfig.js.map +1 -1
  189. package/lib/esm/GeographicCRSServices.js.map +1 -1
  190. package/lib/esm/GeometrySummary.js +47 -47
  191. package/lib/esm/GeometrySummary.js.map +1 -1
  192. package/lib/esm/IModelDb.js +8 -8
  193. package/lib/esm/IModelDb.js.map +1 -1
  194. package/lib/esm/IModelDbFonts.js.map +1 -1
  195. package/lib/esm/IModelElementCloneContext.js.map +1 -1
  196. package/lib/esm/IModelHost.js.map +1 -1
  197. package/lib/esm/IModelIncrementalSchemaLocater.js.map +1 -1
  198. package/lib/esm/IModelJsFs.js.map +1 -1
  199. package/lib/esm/ImageSourceConversion.js.map +1 -1
  200. package/lib/esm/IpcHost.js.map +1 -1
  201. package/lib/esm/LineStyle.js.map +1 -1
  202. package/lib/esm/LocalHub.js +1 -1
  203. package/lib/esm/LocalHub.js.map +1 -1
  204. package/lib/esm/LocalhostIpcHost.js.map +1 -1
  205. package/lib/esm/LockControl.js.map +1 -1
  206. package/lib/esm/Material.js.map +1 -1
  207. package/lib/esm/Model.js.map +1 -1
  208. package/lib/esm/NativeAppStorage.js.map +1 -1
  209. package/lib/esm/NativeHost.js.map +1 -1
  210. package/lib/esm/NavigationRelationship.js.map +1 -1
  211. package/lib/esm/PartialChangeUnifier.js +7 -7
  212. package/lib/esm/PartialChangeUnifier.js.map +1 -1
  213. package/lib/esm/PromiseMemoizer.js.map +1 -1
  214. package/lib/esm/PropertyStore.js.map +1 -1
  215. package/lib/esm/Relationship.js.map +1 -1
  216. package/lib/esm/RpcBackend.js.map +1 -1
  217. package/lib/esm/SQLiteDb.js.map +1 -1
  218. package/lib/esm/Schema.js.map +1 -1
  219. package/lib/esm/SchemaSync.js.map +1 -1
  220. package/lib/esm/SchemaUtils.js.map +1 -1
  221. package/lib/esm/SheetIndex.js.map +1 -1
  222. package/lib/esm/SqliteChangesetReader.js.map +1 -1
  223. package/lib/esm/SqliteStatement.js.map +1 -1
  224. package/lib/esm/StashManager.js.map +1 -1
  225. package/lib/esm/Texture.js.map +1 -1
  226. package/lib/esm/TileStorage.js.map +1 -1
  227. package/lib/esm/TxnManager.d.ts.map +1 -1
  228. package/lib/esm/TxnManager.js.map +1 -1
  229. package/lib/esm/ViewDefinition.js.map +1 -1
  230. package/lib/esm/ViewStateHydrator.js.map +1 -1
  231. package/lib/esm/ViewStore.js.map +1 -1
  232. package/lib/esm/annotations/ElementDrivesTextAnnotation.js.map +1 -1
  233. package/lib/esm/annotations/FrameGeometry.js.map +1 -1
  234. package/lib/esm/annotations/LeaderGeometry.js.map +1 -1
  235. package/lib/esm/annotations/TextAnnotationElement.js.map +1 -1
  236. package/lib/esm/annotations/TextAnnotationGeometry.js.map +1 -1
  237. package/lib/esm/annotations/TextBlockGeometry.js.map +1 -1
  238. package/lib/esm/annotations/TextBlockLayout.js.map +1 -1
  239. package/lib/esm/core-backend.js.map +1 -1
  240. package/lib/esm/domains/FunctionalElements.js.map +1 -1
  241. package/lib/esm/domains/FunctionalSchema.js.map +1 -1
  242. package/lib/esm/domains/GenericElements.js.map +1 -1
  243. package/lib/esm/domains/GenericSchema.js.map +1 -1
  244. package/lib/esm/internal/ChangesetConflictArgs.js.map +1 -1
  245. package/lib/esm/internal/ChannelAdmin.js.map +1 -1
  246. package/lib/esm/internal/ElementLRUCache.js.map +1 -1
  247. package/lib/esm/internal/FontFileImpl.js.map +1 -1
  248. package/lib/esm/internal/HubMock.js.map +1 -1
  249. package/lib/esm/internal/IModelDbFontsImpl.js.map +1 -1
  250. package/lib/esm/internal/IntegrityCheck.js.map +1 -1
  251. package/lib/esm/internal/NativePlatform.js.map +1 -1
  252. package/lib/esm/internal/NoLocks.js.map +1 -1
  253. package/lib/esm/internal/OnlineStatus.js.map +1 -1
  254. package/lib/esm/internal/ServerBasedLocks.js +33 -33
  255. package/lib/esm/internal/ServerBasedLocks.js.map +1 -1
  256. package/lib/esm/internal/Symbols.js.map +1 -1
  257. package/lib/esm/internal/annotations/fields.js.map +1 -1
  258. package/lib/esm/internal/cross-package.d.ts +1 -1
  259. package/lib/esm/internal/cross-package.d.ts.map +1 -1
  260. package/lib/esm/internal/cross-package.js +1 -1
  261. package/lib/esm/internal/cross-package.js.map +1 -1
  262. package/lib/esm/internal/workspace/SettingsEditorImpl.js.map +1 -1
  263. package/lib/esm/internal/workspace/SettingsImpl.js.map +1 -1
  264. package/lib/esm/internal/workspace/SettingsSchemasImpl.js.map +1 -1
  265. package/lib/esm/internal/workspace/WorkspaceImpl.js.map +1 -1
  266. package/lib/esm/internal/workspace/WorkspaceSqliteDb.js.map +1 -1
  267. package/lib/esm/rpc/multipart.js.map +1 -1
  268. package/lib/esm/rpc/tracing.js.map +1 -1
  269. package/lib/esm/rpc/web/logging.js.map +1 -1
  270. package/lib/esm/rpc/web/request.js.map +1 -1
  271. package/lib/esm/rpc/web/response.js.map +1 -1
  272. package/lib/esm/rpc-impl/DevToolsRpcImpl.js.map +1 -1
  273. package/lib/esm/rpc-impl/IModelReadRpcImpl.js.map +1 -1
  274. package/lib/esm/rpc-impl/IModelTileRpcImpl.js.map +1 -1
  275. package/lib/esm/rpc-impl/RpcBriefcaseUtility.js.map +1 -1
  276. package/lib/esm/rpc-impl/SnapshotIModelRpcImpl.js.map +1 -1
  277. package/lib/esm/test/AdvancedEqual.js.map +1 -1
  278. package/lib/esm/test/AnnotationTestUtils.js.map +1 -1
  279. package/lib/esm/test/AttachDb.test.js +11 -11
  280. package/lib/esm/test/AttachDb.test.js.map +1 -1
  281. package/lib/esm/test/ElementDrivesElement.test.js +23 -23
  282. package/lib/esm/test/ElementDrivesElement.test.js.map +1 -1
  283. package/lib/esm/test/ElementLRUCache.test.js.map +1 -1
  284. package/lib/esm/test/GeometryTestUtil.js.map +1 -1
  285. package/lib/esm/test/IModelHost.test.js.map +1 -1
  286. package/lib/esm/test/IModelTestUtils.js.map +1 -1
  287. package/lib/esm/test/ImageSourceConversion.test.js.map +1 -1
  288. package/lib/esm/test/IpcHost.test.js.map +1 -1
  289. package/lib/esm/test/KnownTestLocations.js.map +1 -1
  290. package/lib/esm/test/PrintElementTree.js.map +1 -1
  291. package/lib/esm/test/PropertyDb.test.js.map +1 -1
  292. package/lib/esm/test/RevisionUtility.js.map +1 -1
  293. package/lib/esm/test/SchemaUtils.test.js +25 -25
  294. package/lib/esm/test/SchemaUtils.test.js.map +1 -1
  295. package/lib/esm/test/SequentialLogMatcher.js.map +1 -1
  296. package/lib/esm/test/SquashSchemaAndDataChanges.test.js +129 -129
  297. package/lib/esm/test/SquashSchemaAndDataChanges.test.js.map +1 -1
  298. package/lib/esm/test/TestChangeSetUtility.js.map +1 -1
  299. package/lib/esm/test/TestEditTxn.js.map +1 -1
  300. package/lib/esm/test/TestUtils.js.map +1 -1
  301. package/lib/esm/test/annotations/Fields.test.js +53 -53
  302. package/lib/esm/test/annotations/Fields.test.js.map +1 -1
  303. package/lib/esm/test/annotations/FrameGeometry.test.js.map +1 -1
  304. package/lib/esm/test/annotations/LeaderGeometry.test.js.map +1 -1
  305. package/lib/esm/test/annotations/TextAnnotation.test.js.map +1 -1
  306. package/lib/esm/test/annotations/TextBlock.test.js.map +1 -1
  307. package/lib/esm/test/assets/IncrementalSchemaLocater/configs/old.config.js.map +1 -1
  308. package/lib/esm/test/assets/IncrementalSchemaLocater/configs/simple.config.js.map +1 -1
  309. package/lib/esm/test/categories/Category.test.js.map +1 -1
  310. package/lib/esm/test/codespec/CodeSpec.test.js.map +1 -1
  311. package/lib/esm/test/ecdb/CTE.test.js +88 -88
  312. package/lib/esm/test/ecdb/CTE.test.js.map +1 -1
  313. package/lib/esm/test/ecdb/ConcurrentQuery.test.js +19 -19
  314. package/lib/esm/test/ecdb/ConcurrentQuery.test.js.map +1 -1
  315. package/lib/esm/test/ecdb/ConcurrentQueryLoad.test.js +15 -15
  316. package/lib/esm/test/ecdb/ConcurrentQueryLoad.test.js.map +1 -1
  317. package/lib/esm/test/ecdb/ECDb.test.js +72 -72
  318. package/lib/esm/test/ecdb/ECDb.test.js.map +1 -1
  319. package/lib/esm/test/ecdb/ECDbTestHelper.js.map +1 -1
  320. package/lib/esm/test/ecdb/ECSchemaXmlContext.test.js.map +1 -1
  321. package/lib/esm/test/ecdb/ECSqlAst.test.js +65 -65
  322. package/lib/esm/test/ecdb/ECSqlAst.test.js.map +1 -1
  323. package/lib/esm/test/ecdb/ECSqlQuery.test.js +4 -4
  324. package/lib/esm/test/ecdb/ECSqlQuery.test.js.map +1 -1
  325. package/lib/esm/test/ecdb/ECSqlStatement.test.js +332 -332
  326. package/lib/esm/test/ecdb/ECSqlStatement.test.js.map +1 -1
  327. package/lib/esm/test/ecdb/ECSqlSyncReader.test.js.map +1 -1
  328. package/lib/esm/test/ecdb/QueryReaders.test.js +31 -31
  329. package/lib/esm/test/ecdb/QueryReaders.test.js.map +1 -1
  330. package/lib/esm/test/ecdb/SqliteStatement.test.js.map +1 -1
  331. package/lib/esm/test/ecsql/dataset/ECSqlDatasets.js.map +1 -1
  332. package/lib/esm/test/ecsql/src/ECSqlTestGenerator.js +21 -21
  333. package/lib/esm/test/ecsql/src/ECSqlTestGenerator.js.map +1 -1
  334. package/lib/esm/test/ecsql/src/ECSqlTestParser.js.map +1 -1
  335. package/lib/esm/test/ecsql/src/ECSqlTestRunner.test.js.map +1 -1
  336. package/lib/esm/test/element/DeleteDefinitionElements.test.js.map +1 -1
  337. package/lib/esm/test/element/ElementAspect.test.js +22 -22
  338. package/lib/esm/test/element/ElementAspect.test.js.map +1 -1
  339. package/lib/esm/test/element/ElementDependencyGraph.test.js.map +1 -1
  340. package/lib/esm/test/element/ElementRoundTrip.test.js +139 -139
  341. package/lib/esm/test/element/ElementRoundTrip.test.js.map +1 -1
  342. package/lib/esm/test/element/ExcludedElements.test.js.map +1 -1
  343. package/lib/esm/test/element/ExternalSource.test.js.map +1 -1
  344. package/lib/esm/test/element/NullStructArray.test.js +13 -13
  345. package/lib/esm/test/element/NullStructArray.test.js.map +1 -1
  346. package/lib/esm/test/element/ProjectInformationRecord.test.js.map +1 -1
  347. package/lib/esm/test/element/SheetInformationAspect.test.js.map +1 -1
  348. package/lib/esm/test/element/UrlLink.test.js.map +1 -1
  349. package/lib/esm/test/font/FontFile.test.js.map +1 -1
  350. package/lib/esm/test/font/IModelDbFonts.test.js.map +1 -1
  351. package/lib/esm/test/hubaccess/ApplyChangeset.test.js +32 -32
  352. package/lib/esm/test/hubaccess/ApplyChangeset.test.js.map +1 -1
  353. package/lib/esm/test/hubaccess/BriefcaseManager.test.js.map +1 -1
  354. package/lib/esm/test/hubaccess/CheckpointManager.test.js.map +1 -1
  355. package/lib/esm/test/hubaccess/Rebase.test.js +56 -56
  356. package/lib/esm/test/hubaccess/Rebase.test.js.map +1 -1
  357. package/lib/esm/test/hubaccess/SemanticRebase.test.js +391 -359
  358. package/lib/esm/test/hubaccess/SemanticRebase.test.js.map +1 -1
  359. package/lib/esm/test/imageData.js.map +1 -1
  360. package/lib/esm/test/imodel/Code.test.js.map +1 -1
  361. package/lib/esm/test/imodel/ElementTreeWalker.test.js.map +1 -1
  362. package/lib/esm/test/imodel/GetTextureImage.test.js.map +1 -1
  363. package/lib/esm/test/imodel/IModel.test.js +44 -44
  364. package/lib/esm/test/imodel/IModel.test.js.map +1 -1
  365. package/lib/esm/test/imodel/ProjectExtents.test.js.map +1 -1
  366. package/lib/esm/test/imodel/SchemaXmlImport.test.js +21 -21
  367. package/lib/esm/test/imodel/SchemaXmlImport.test.js.map +1 -1
  368. package/lib/esm/test/incrementalSchemaLocater/ECSqlQueries.test.js.map +1 -1
  369. package/lib/esm/test/incrementalSchemaLocater/IncrementalLoading.test.js.map +1 -1
  370. package/lib/esm/test/incrementalSchemaLocater/TestContext.js.map +1 -1
  371. package/lib/esm/test/index.js.map +1 -1
  372. package/lib/esm/test/misc/DevTools.test.js.map +1 -1
  373. package/lib/esm/test/misc/EntitySubClasses.test.js.map +1 -1
  374. package/lib/esm/test/misc/GeoServices.test.js.map +1 -1
  375. package/lib/esm/test/misc/PromiseMemoizer.test.js.map +1 -1
  376. package/lib/esm/test/native/DgnDbWorker.test.js.map +1 -1
  377. package/lib/esm/test/rpc/response.test.js.map +1 -1
  378. package/lib/esm/test/schema/ClassRegistry.test.js +99 -99
  379. package/lib/esm/test/schema/ClassRegistry.test.js.map +1 -1
  380. package/lib/esm/test/schema/FunctionalDomain.test.js.map +1 -1
  381. package/lib/esm/test/schema/GenericDomain.test.js.map +1 -1
  382. package/lib/esm/test/schema/IModelSchemaContext.test.js +9 -9
  383. package/lib/esm/test/schema/IModelSchemaContext.test.js.map +1 -1
  384. package/lib/esm/test/schema/SchemaImportCallbacks.test.js +19 -19
  385. package/lib/esm/test/schema/SchemaImportCallbacks.test.js.map +1 -1
  386. package/lib/esm/test/sheetindex/SheetIndex.test.js.map +1 -1
  387. package/lib/esm/test/standalone/ChangeMerge.test.js.map +1 -1
  388. package/lib/esm/test/standalone/ChangesetReader.test.js +246 -246
  389. package/lib/esm/test/standalone/ChangesetReader.test.js.map +1 -1
  390. package/lib/esm/test/standalone/CustomViewState3dCreator.test.js.map +1 -1
  391. package/lib/esm/test/standalone/DeleteElements.test.js.map +1 -1
  392. package/lib/esm/test/standalone/DisplayStyle.test.js.map +1 -1
  393. package/lib/esm/test/standalone/Drawing.test.js.map +1 -1
  394. package/lib/esm/test/standalone/EditTxn.test.js.map +1 -1
  395. package/lib/esm/test/standalone/ElementGraphics.test.js.map +1 -1
  396. package/lib/esm/test/standalone/ElementMesh.test.js.map +1 -1
  397. package/lib/esm/test/standalone/ExportGraphics.test.js +14 -14
  398. package/lib/esm/test/standalone/ExportGraphics.test.js.map +1 -1
  399. package/lib/esm/test/standalone/GeometryChangeEvents.test.js.map +1 -1
  400. package/lib/esm/test/standalone/GeometryStream.test.js.map +1 -1
  401. package/lib/esm/test/standalone/HubMock.test.js.map +1 -1
  402. package/lib/esm/test/standalone/IModelLimits.test.js.map +1 -1
  403. package/lib/esm/test/standalone/IModelWrite.test.js +27 -27
  404. package/lib/esm/test/standalone/IModelWrite.test.js.map +1 -1
  405. package/lib/esm/test/standalone/ITwinWorkspace.test.js.map +1 -1
  406. package/lib/esm/test/standalone/InlineGeometryPartReferences.test.js.map +1 -1
  407. package/lib/esm/test/standalone/IntegrityCheck.test.js.map +1 -1
  408. package/lib/esm/test/standalone/MergeConflict.test.js.map +1 -1
  409. package/lib/esm/test/standalone/NativeAppStorage.test.js.map +1 -1
  410. package/lib/esm/test/standalone/RenderMaterialElement.test.js.map +1 -1
  411. package/lib/esm/test/standalone/RenderTimeline.test.js.map +1 -1
  412. package/lib/esm/test/standalone/SQLiteDb.test.js.map +1 -1
  413. package/lib/esm/test/standalone/SQliteChangesetReaderAndChangesetECAdaptor.test.js +135 -135
  414. package/lib/esm/test/standalone/SQliteChangesetReaderAndChangesetECAdaptor.test.js.map +1 -1
  415. package/lib/esm/test/standalone/SchemaUtils.test.js.map +1 -1
  416. package/lib/esm/test/standalone/SectionDrawing.test.js.map +1 -1
  417. package/lib/esm/test/standalone/ServerBasedLocks.test.js.map +1 -1
  418. package/lib/esm/test/standalone/Setting.test.js.map +1 -1
  419. package/lib/esm/test/standalone/Settings.test.js.map +1 -1
  420. package/lib/esm/test/standalone/SettingsSchemas.test.js.map +1 -1
  421. package/lib/esm/test/standalone/SnapshotDb.test.js.map +1 -1
  422. package/lib/esm/test/standalone/StandaloneDb.test.js +20 -20
  423. package/lib/esm/test/standalone/StandaloneDb.test.js.map +1 -1
  424. package/lib/esm/test/standalone/Texture.test.js.map +1 -1
  425. package/lib/esm/test/standalone/TileCache.test.js.map +1 -1
  426. package/lib/esm/test/standalone/TileTree.test.js.map +1 -1
  427. package/lib/esm/test/standalone/TxnManager.test.js.map +1 -1
  428. package/lib/esm/test/standalone/ViewDefinition.test.js.map +1 -1
  429. package/lib/esm/test/standalone/ViewStoreDb.test.js.map +1 -1
  430. package/lib/esm/test/standalone/Workspace.test.js.map +1 -1
  431. package/lib/esm/test/standalone/iModelDb.test.js.map +1 -1
  432. package/lib/esm/test/workspace/SettingsDb.test.js.map +1 -1
  433. package/lib/esm/workspace/Settings.js.map +1 -1
  434. package/lib/esm/workspace/SettingsDb.js.map +1 -1
  435. package/lib/esm/workspace/SettingsEditor.js.map +1 -1
  436. package/lib/esm/workspace/SettingsSchemas.js.map +1 -1
  437. package/lib/esm/workspace/Workspace.js.map +1 -1
  438. package/lib/esm/workspace/WorkspaceEditor.js.map +1 -1
  439. package/package.json +14 -14
@@ -1 +1 @@
1
- {"version":3,"file":"ChangesetReader.test.js","sourceRoot":"","sources":["../../../../src/test/standalone/ChangesetReader.test.ts"],"names":[],"mappings":"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,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;YAC9C,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;YAChD,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;YACzD,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC;YAClD,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;YACjD,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE;YAClD,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE;YAC/C,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;YAC9C,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE;YAC/C,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;YACvD,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;YACjD,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;YACnD,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG;YAClD,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;YACjD,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;YAChD,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE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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 { DbResult, Id64, Id64String } from \"@itwin/core-bentley\";\r\nimport { Code, ColorDef, GeometryStreamProps, IModel, SubCategoryAppearance } from \"@itwin/core-common\";\r\nimport { Arc3d, IModelJson, Point3d } from \"@itwin/core-geometry\";\r\nimport { assert, expect } from \"chai\";\r\nimport { DrawingCategory } from \"../../Category\";\r\nimport { _nativeDb, BriefcaseDb, ChannelControl } from \"../../core-backend\";\r\nimport { HubMock } from \"../../internal/HubMock\";\r\nimport { ChangesetReader } from \"../../ChangesetReader\";\r\nimport * as path from \"node:path\";\r\nimport * as fs from \"fs\";\r\nimport { HubWrappers, IModelTestUtils } from \"../IModelTestUtils\";\r\nimport { KnownTestLocations } from \"../KnownTestLocations\";\r\nimport { ChangeUnifierCache, PartialChangeUnifier } from \"../../PartialChangeUnifier\";\r\nimport { ChangeInstance, PropertyFilter, RowFormatOptions } from \"../../ChangesetReaderTypes\";\r\nimport { EditTxn } from \"../../EditTxn\";\r\n\r\n/* eslint-disable @typescript-eslint/naming-convention */ // disabling it because the property names are not in camelcase, and we want to test them as-is\r\n\r\n/** Open a txn, drive the unifier, log and return all merged instances. */\r\nfunction readTxn(\r\n db: BriefcaseDb,\r\n txnId: string,\r\n propFilter?: PropertyFilter,\r\n rowOptions?: RowFormatOptions,\r\n invert?: boolean,\r\n useInMemoryUnifierCache?: boolean,\r\n): ChangeInstance[] {\r\n using reader = ChangesetReader.openTxn({ db, txnId, propFilter, rowOptions, invert });\r\n const inMemCache = useInMemoryUnifierCache ?? true;\r\n using pcu = new PartialChangeUnifier(inMemCache ? ChangeUnifierCache.createInMemoryCache() : ChangeUnifierCache.createSqliteBackedCache());\r\n while (reader.step())\r\n pcu.appendFrom(reader);\r\n const instances = Array.from(pcu.instances);\r\n return instances;\r\n}\r\n\r\nfunction startTestTxn(iModel: BriefcaseDb, description = \"changeset reader\"): EditTxn {\r\n const txn = new EditTxn(iModel, description);\r\n txn.start();\r\n return txn;\r\n}\r\n\r\nasync function importSchemaStrings(txn: EditTxn, schemas: string[]): Promise<void> {\r\n if (txn.isActive)\r\n txn.saveChanges();\r\n await txn.iModel.importSchemaStrings(schemas);\r\n}\r\n\r\ndescribe(\"ChangesetReader insert-full\", () => {\r\n let rwIModel: BriefcaseDb;\r\n let fullElementId: Id64String;\r\n let drawingModelId: Id64String;\r\n let drawingCategoryId: Id64String;\r\n let txnId: string;\r\n let txn: EditTxn;\r\n\r\n before(async () => {\r\n HubMock.startup(\"ECChangesetInsertFull\", KnownTestLocations.outputDir);\r\n const adminToken = \"super manager token\";\r\n const iTwinId = HubMock.iTwinId;\r\n const rwIModelId = await HubMock.createNewIModel({ iTwinId, iModelName: \"insertFull\", description: \"insertFull\", accessToken: adminToken });\r\n rwIModel = await HubWrappers.downloadAndOpenBriefcase({ iTwinId, iModelId: rwIModelId, accessToken: adminToken });\r\n txn = startTestTxn(rwIModel, \"ChangesetReader insert-full setup\");\r\n // Txn 1: import schema + drawing model setup, then push\r\n const schema = `<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n <ECSchema schemaName=\"TestDomain\" alias=\"ts\" version=\"01.00\" xmlns=\"http://www.bentley.com/schemas/Bentley.ECXML.3.1\">\r\n <ECSchemaReference name=\"BisCore\" version=\"01.00\" alias=\"bis\"/>\r\n <!-- Rich struct: scalar fields + nested point2d/3d sub-properties -->\r\n <ECStructClass typeName=\"RichPoint\" modifier=\"Sealed\">\r\n <ECProperty propertyName=\"X\" typeName=\"double\"/>\r\n <ECProperty propertyName=\"Y\" typeName=\"double\"/>\r\n <ECProperty propertyName=\"Z\" typeName=\"double\"/>\r\n <ECProperty propertyName=\"Label\" typeName=\"string\"/>\r\n <ECProperty propertyName=\"Pt2d\" typeName=\"point2d\"/>\r\n <ECProperty propertyName=\"Pt3d\" typeName=\"point3d\"/>\r\n </ECStructClass>\r\n <!-- Relationship used by the RelatedElem navigation property -->\r\n <ECRelationshipClass typeName=\"Test2dUsesElement\" strength=\"referencing\" modifier=\"None\">\r\n <Source multiplicity=\"(0..*)\" roleLabel=\"uses\" polymorphic=\"true\"><Class class=\"Test2dElement\"/></Source>\r\n <Target multiplicity=\"(0..1)\" roleLabel=\"is used by\" polymorphic=\"true\"><Class class=\"bis:Element\"/></Target>\r\n </ECRelationshipClass>\r\n <ECEntityClass typeName=\"Test2dElement\">\r\n <BaseClass>bis:GraphicalElement2d</BaseClass>\r\n <!-- Primitives -->\r\n <ECProperty propertyName=\"StrProp\" typeName=\"string\"/>\r\n <ECProperty propertyName=\"IntProp\" typeName=\"int\"/>\r\n <ECProperty propertyName=\"LongProp\" typeName=\"long\"/>\r\n <ECProperty propertyName=\"DblProp\" typeName=\"double\"/>\r\n <ECProperty propertyName=\"BoolProp\" typeName=\"boolean\"/>\r\n <ECProperty propertyName=\"DtProp\" typeName=\"dateTime\"/>\r\n <ECProperty propertyName=\"BinProp\" typeName=\"binary\"/>\r\n <!-- Geometric primitives -->\r\n <ECProperty propertyName=\"Pt2dProp\" typeName=\"point2d\"/>\r\n <ECProperty propertyName=\"Pt3dProp\" typeName=\"point3d\"/>\r\n <!-- Struct, arrays -->\r\n <ECStructProperty propertyName=\"StructProp\" typeName=\"RichPoint\"/>\r\n <ECArrayProperty propertyName=\"IntArrProp\" typeName=\"int\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\r\n <ECArrayProperty propertyName=\"StrArrProp\" typeName=\"string\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\r\n <ECStructArrayProperty propertyName=\"StructArrProp\" typeName=\"RichPoint\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\r\n <!-- Navigation property -->\r\n <ECNavigationProperty propertyName=\"RelatedElem\" relationshipName=\"Test2dUsesElement\" direction=\"forward\"/>\r\n </ECEntityClass>\r\n </ECSchema>`;\r\n await importSchemaStrings(txn, [schema]);\r\n rwIModel.channels.addAllowedChannel(ChannelControl.sharedChannelName);\r\n\r\n await rwIModel.locks.acquireLocks({ shared: IModel.dictionaryId });\r\n const codeProps = Code.createEmpty();\r\n codeProps.value = \"DrillDownDrawing\";\r\n [, drawingModelId] = IModelTestUtils.createAndInsertDrawingPartitionAndModel(txn, codeProps, true);\r\n\r\n const foundCat = DrawingCategory.queryCategoryIdByName(rwIModel, IModel.dictionaryId, \"DrillDownCategory\");\r\n drawingCategoryId = foundCat ?? DrawingCategory.insert(txn, IModel.dictionaryId, \"DrillDownCategory\",\r\n new SubCategoryAppearance({ color: ColorDef.fromString(\"rgb(255,0,0)\").toJSON() }));\r\n\r\n txn.saveChanges(\"setup\");\r\n\r\n // Wait so that LastMod on bis_Model gets a distinct timestamp before the insert txn\r\n await new Promise((resolve) => setTimeout(resolve, 300));\r\n // Txn 2: insert FULL element every EC primitive type populated\r\n await rwIModel.locks.acquireLocks({ shared: drawingModelId });\r\n const geom: GeometryStreamProps = [\r\n Arc3d.createXY(Point3d.create(0, 0), 5),\r\n Arc3d.createXY(Point3d.create(5, 5), 2),\r\n Arc3d.createXY(Point3d.create(-5, -5), 20),\r\n ].map((a) => IModelJson.Writer.toIModelJson(a));\r\n\r\n fullElementId = txn.insertElement({\r\n classFullName: \"TestDomain:Test2dElement\",\r\n model: drawingModelId,\r\n category: drawingCategoryId,\r\n code: Code.createEmpty(),\r\n geom,\r\n StrProp: \"hello\",\r\n IntProp: 42,\r\n LongProp: 9_007_199_254_740_991, // Number.MAX_SAFE_INTEGER\r\n DblProp: 3.14159265358979,\r\n BoolProp: true,\r\n DtProp: \"2024-01-15T12:00:00.000\",\r\n BinProp: new Uint8Array([1, 2, 3, 4]),\r\n Pt2dProp: { x: 1.5, y: 2.5 },\r\n Pt3dProp: { x: 3.0, y: 4.0, z: 5.0 },\r\n StructProp: {\r\n X: 1.0, Y: 2.0, Z: 3.0, Label: \"origin\",\r\n Pt2d: { x: 0.5, y: 0.5 },\r\n Pt3d: { x: 1.0, y: 2.0, z: 3.0 },\r\n },\r\n IntArrProp: [10, 20, 30],\r\n StrArrProp: [\"alpha\", \"beta\", \"gamma\"],\r\n StructArrProp: [\r\n { X: 0.0, Y: 1.0, Z: 2.0, Label: \"a\", Pt2d: { x: 0.0, y: 0.0 }, Pt3d: { x: 0.0, y: 0.0, z: 0.0 } },\r\n { X: 3.0, Y: 4.0, Z: 5.0, Label: \"b\", Pt2d: { x: 1.0, y: 1.0 }, Pt3d: { x: 1.0, y: 1.0, z: 1.0 } },\r\n ],\r\n RelatedElem: { id: drawingCategoryId, relClassName: \"TestDomain:Test2dUsesElement\" },\r\n } as any);\r\n txn.saveChanges(\"insert full element\");\r\n txnId = rwIModel.txns.getLastSavedTxnProps()!.id;\r\n });\r\n\r\n after(() => {\r\n txn.end();\r\n rwIModel?.close();\r\n HubMock.shutdown();\r\n });\r\n\r\n it(\"txn1 insert-full | All_Properties | default rowOptions\", () => {\r\n const instances = readTxn(rwIModel, txnId);\r\n assert.equal(instances.length, 3);\r\n\r\n // --- instances[0]: DrawingModel Updated New ---\r\n const modelNew = instances.find((i) => i.ECInstanceId === drawingModelId && i.$meta.stage === \"New\");\r\n expect(modelNew).to.exist;\r\n assert.equal(modelNew!.ECInstanceId, drawingModelId);\r\n assert.equal(\"BisCore:DrawingModel\", rwIModel.getClassNameFromId(modelNew!.ECClassId));\r\n assert.isString(modelNew!.LastMod);\r\n assert.isString(modelNew!.GeometryGuid);\r\n // Object.keys\r\n assert.deepEqual(Object.keys(modelNew!).sort(), [\"ECInstanceId\", \"ECClassId\", \"LastMod\", \"GeometryGuid\", \"$meta\"].sort());\r\n // $meta keys\r\n assert.deepEqual(Object.keys(modelNew!.$meta).sort(), [\"op\", \"tables\", \"changeIndexes\", \"stage\", \"instanceKey\", \"propFilter\", \"changeFetchedPropNames\", \"rowOptions\", \"isIndirectChange\"].sort());\r\n assert.equal(modelNew!.$meta.op, \"Updated\");\r\n assert.equal(modelNew!.$meta.stage, \"New\");\r\n assert.deepEqual([...modelNew!.$meta.tables].sort(), [\"bis_Model\"].sort());\r\n assert.deepEqual([...modelNew!.$meta.changeIndexes].sort(), [3].sort());\r\n assert.isString(modelNew!.$meta.instanceKey);\r\n assert.equal(modelNew!.$meta.instanceKey.split(`-`).length, 2);\r\n assert.equal(modelNew!.$meta.propFilter, PropertyFilter.All);\r\n assert.deepEqual([...modelNew!.$meta.changeFetchedPropNames].sort(), [\"ECInstanceId\", \"LastMod\", \"GeometryGuid\"].sort());\r\n assert.deepEqual(modelNew!.$meta.rowOptions, {});\r\n assert.equal(modelNew!.$meta.isIndirectChange, true);\r\n\r\n // --- instances[1]: DrawingModel Updated Old ---\r\n const modelOld = instances.find((i) => i.ECInstanceId === drawingModelId && i.$meta.stage === \"Old\");\r\n expect(modelOld).to.exist;\r\n assert.equal(modelOld!.ECInstanceId, drawingModelId);\r\n assert.equal(\"BisCore:DrawingModel\", rwIModel.getClassNameFromId(modelOld!.ECClassId));\r\n // Object.keys\r\n assert.deepEqual(Object.keys(modelOld!).sort(), [\"ECInstanceId\", \"ECClassId\", \"$meta\"].sort());\r\n // $meta keys\r\n assert.deepEqual(Object.keys(modelOld!.$meta).sort(), [\"op\", \"tables\", \"changeIndexes\", \"stage\", \"instanceKey\", \"propFilter\", \"changeFetchedPropNames\", \"rowOptions\", \"isIndirectChange\"].sort());\r\n assert.equal(modelOld!.$meta.op, \"Updated\");\r\n assert.equal(modelOld!.$meta.stage, \"Old\");\r\n assert.deepEqual([...modelOld!.$meta.tables].sort(), [\"bis_Model\"].sort());\r\n assert.equal(modelOld!.$meta.propFilter, PropertyFilter.All);\r\n assert.deepEqual([...modelOld!.$meta.changeFetchedPropNames].sort(), [\"ECInstanceId\", \"LastMod\", \"GeometryGuid\"].sort());\r\n assert.deepEqual(modelOld!.$meta.rowOptions, {});\r\n assert.equal(modelOld!.$meta.isIndirectChange, true);\r\n\r\n // --- instances[2]: Test2dElement Inserted New ---\r\n const elem = instances.find((i) => i.ECInstanceId === fullElementId && i.$meta.stage === \"New\");\r\n expect(elem).to.exist;\r\n assert.equal(elem!.ECInstanceId, fullElementId);\r\n assert.equal(\"TestDomain:Test2dElement\", rwIModel.getClassNameFromId(elem!.ECClassId));\r\n assert.equal(elem!.Model.Id, drawingModelId);\r\n assert.equal(rwIModel.getClassNameFromId(elem!.Model.RelECClassId), \"BisCore:ModelContainsElements\");\r\n assert.isString(elem!.LastMod);\r\n assert.equal(elem!.CodeSpec.Id, \"0x1\");\r\n assert.equal(rwIModel.getClassNameFromId(elem!.CodeSpec.RelECClassId), \"BisCore:CodeSpecSpecifiesCode\");\r\n\r\n assert.equal(elem!.CodeScope.Id, \"0x1\");\r\n assert.equal(rwIModel.getClassNameFromId(elem!.CodeScope.RelECClassId), \"BisCore:ElementScopesCode\");\r\n assert.isString(elem!.FederationGuid);\r\n\r\n assert.equal(elem!.Category.Id, drawingCategoryId);\r\n assert.equal(rwIModel.getClassNameFromId(elem!.Category.RelECClassId), \"BisCore:GeometricElement2dIsInCategory\");\r\n assert.deepEqual(elem!.Origin, { X: 0, Y: 0 });\r\n assert.equal(elem!.Rotation, 0);\r\n assert.deepEqual(elem!.BBoxLow, { X: -25, Y: -25 });\r\n assert.deepEqual(elem!.BBoxHigh, { X: 15, Y: 15 });\r\n assert.include(String(elem!.GeometryStream), \"\\\"bytes\\\"\");\r\n assert.include(String(elem!.BinProp), \"\\\"bytes\\\"\");\r\n assert.equal(elem!.StrProp, \"hello\");\r\n assert.equal(elem!.IntProp, 42);\r\n assert.equal(elem!.LongProp, 9007199254740991);\r\n assert.closeTo(elem!.DblProp as number, 3.14159265358979, 1e-10);\r\n assert.equal(elem!.BoolProp, true);\r\n assert.equal(elem!.DtProp, \"2024-01-15T12:00:00.000\");\r\n assert.deepEqual(elem!.Pt2dProp, { X: 1.5, Y: 2.5 });\r\n assert.deepEqual(elem!.Pt3dProp, { X: 3, Y: 4, Z: 5 });\r\n assert.deepEqual(elem!.StructProp, { X: 1, Y: 2, Z: 3, Label: \"origin\", Pt2d: { X: 0.5, Y: 0.5 }, Pt3d: { X: 1, Y: 2, Z: 3 } });\r\n assert.deepEqual(elem!.IntArrProp, [10, 20, 30]);\r\n assert.deepEqual(elem!.StrArrProp, [\"alpha\", \"beta\", \"gamma\"]);\r\n assert.deepEqual(elem!.StructArrProp, [\r\n { X: 0, Y: 1, Z: 2, Label: \"a\", Pt2d: { X: 0, Y: 0 }, Pt3d: { X: 0, Y: 0, Z: 0 } },\r\n { X: 3, Y: 4, Z: 5, Label: \"b\", Pt2d: { X: 1, Y: 1 }, Pt3d: { X: 1, Y: 1, Z: 1 } },\r\n ]);\r\n assert.equal(elem!.RelatedElem.Id, drawingCategoryId);\r\n assert.equal(rwIModel.getClassNameFromId(elem!.RelatedElem.RelECClassId), \"TestDomain:Test2dUsesElement\");\r\n // Object.keys\r\n assert.deepEqual(Object.keys(elem!).sort(), [\r\n \"ECInstanceId\", \"ECClassId\", \"Model\", \"LastMod\", \"CodeSpec\", \"CodeScope\", \"FederationGuid\", \"$meta\",\r\n \"Category\", \"Origin\", \"Rotation\", \"BBoxLow\", \"BBoxHigh\", \"GeometryStream\",\r\n \"StrProp\", \"IntProp\", \"LongProp\", \"DblProp\", \"BoolProp\", \"DtProp\",\r\n \"Pt2dProp\", \"Pt3dProp\", \"StructProp\", \"IntArrProp\", \"StrArrProp\", \"StructArrProp\", \"RelatedElem\", \"BinProp\"\r\n ].sort());\r\n // $meta keys\r\n assert.deepEqual(Object.keys(elem!.$meta).sort(), [\"op\", \"tables\", \"changeIndexes\", \"stage\", \"instanceKey\", \"propFilter\", \"changeFetchedPropNames\", \"rowOptions\", \"isIndirectChange\"].sort());\r\n assert.equal(elem!.$meta.op, \"Inserted\");\r\n assert.equal(elem!.$meta.stage, \"New\");\r\n assert.deepEqual([...elem!.$meta.tables].sort(), [\"bis_Element\", \"bis_GeometricElement2d\"].sort());\r\n assert.deepEqual([...elem!.$meta.changeIndexes].sort(), [1, 2].sort());\r\n assert.isString(elem!.$meta.instanceKey);\r\n assert.equal(elem!.$meta.instanceKey.split(`-`).length, 2);\r\n assert.equal(elem!.$meta.propFilter, PropertyFilter.All);\r\n assert.deepEqual([...elem!.$meta.changeFetchedPropNames].sort(), [\r\n 'BBoxHigh', 'BBoxLow', 'BinProp', 'BoolProp', 'Category.Id', 'CodeScope.Id',\r\n 'CodeSpec.Id', 'CodeValue', 'DblProp', 'DtProp', 'ECClassId', 'ECInstanceId',\r\n 'FederationGuid', 'GeometryStream', 'IntArrProp', 'IntProp', 'JsonProperties',\r\n 'LastMod', 'LongProp', 'Model.Id', 'Origin', 'Parent', 'Pt2dProp', 'Pt3dProp',\r\n 'RelatedElem', 'Rotation', 'StrArrProp', 'StrProp', 'StructArrProp', 'StructProp.Label',\r\n 'StructProp.Pt2d', 'StructProp.Pt3d', 'StructProp.X', 'StructProp.Y', 'StructProp.Z',\r\n 'TypeDefinition', 'UserLabel'\r\n ].sort());\r\n assert.deepEqual(elem!.$meta.rowOptions, {});\r\n assert.equal(elem!.$meta.isIndirectChange, false);\r\n });\r\n\r\n it(\"txn1 insert-full | All_Properties | default rowOptions | invert\", () => {\r\n const instances = readTxn(rwIModel, txnId, undefined, undefined, true);\r\n assert.equal(instances.length, 3);\r\n\r\n // --- instances[0]: DrawingModel Updated New ---\r\n const modelNew = instances.find((i) => i.ECInstanceId === drawingModelId && i.$meta.stage === \"New\");\r\n expect(modelNew).to.exist;\r\n assert.equal(modelNew!.ECInstanceId, drawingModelId);\r\n assert.equal(\"BisCore:DrawingModel\", rwIModel.getClassNameFromId(modelNew!.ECClassId));\r\n assert.isUndefined(modelNew!.LastMod);\r\n assert.isUndefined(modelNew!.GeometryGuid);\r\n // Object.keys\r\n assert.deepEqual(Object.keys(modelNew!).sort(), [\"ECInstanceId\", \"ECClassId\", \"$meta\"].sort());\r\n // $meta keys\r\n assert.deepEqual(Object.keys(modelNew!.$meta).sort(), [\"op\", \"tables\", \"changeIndexes\", \"stage\", \"instanceKey\", \"propFilter\", \"changeFetchedPropNames\", \"rowOptions\", \"isIndirectChange\"].sort());\r\n assert.equal(modelNew!.$meta.op, \"Updated\");\r\n assert.equal(modelNew!.$meta.stage, \"New\");\r\n assert.deepEqual([...modelNew!.$meta.tables].sort(), [\"bis_Model\"].sort());\r\n assert.deepEqual([...modelNew!.$meta.changeIndexes].sort(), [3].sort());\r\n assert.isString(modelNew!.$meta.instanceKey);\r\n assert.equal(modelNew!.$meta.instanceKey.split(`-`).length, 2);\r\n assert.equal(modelNew!.$meta.propFilter, PropertyFilter.All);\r\n assert.deepEqual([...modelNew!.$meta.changeFetchedPropNames].sort(), [\"ECInstanceId\", \"LastMod\", \"GeometryGuid\"].sort());\r\n assert.deepEqual(modelNew!.$meta.rowOptions, {});\r\n assert.equal(modelNew!.$meta.isIndirectChange, true);\r\n\r\n // --- instances[1]: DrawingModel Updated Old ---\r\n const modelOld = instances.find((i) => i.ECInstanceId === drawingModelId && i.$meta.stage === \"Old\");\r\n expect(modelOld).to.exist;\r\n assert.equal(modelOld!.ECInstanceId, drawingModelId);\r\n assert.equal(\"BisCore:DrawingModel\", rwIModel.getClassNameFromId(modelOld!.ECClassId));\r\n assert.isString(modelOld!.LastMod);\r\n assert.isString(modelOld!.GeometryGuid);\r\n // Object.keys\r\n assert.deepEqual(Object.keys(modelOld!).sort(), [\"ECInstanceId\", \"ECClassId\", \"$meta\", \"LastMod\", \"GeometryGuid\"].sort());\r\n // $meta keys\r\n assert.deepEqual(Object.keys(modelOld!.$meta).sort(), [\"op\", \"tables\", \"changeIndexes\", \"stage\", \"instanceKey\", \"propFilter\", \"changeFetchedPropNames\", \"rowOptions\", \"isIndirectChange\"].sort());\r\n assert.equal(modelOld!.$meta.op, \"Updated\");\r\n assert.equal(modelOld!.$meta.stage, \"Old\");\r\n assert.deepEqual([...modelOld!.$meta.tables].sort(), [\"bis_Model\"].sort());\r\n assert.equal(modelOld!.$meta.propFilter, PropertyFilter.All);\r\n assert.deepEqual([...modelOld!.$meta.changeFetchedPropNames].sort(), [\"ECInstanceId\", \"LastMod\", \"GeometryGuid\"].sort());\r\n assert.deepEqual(modelOld!.$meta.rowOptions, {});\r\n assert.equal(modelOld!.$meta.isIndirectChange, true);\r\n\r\n // --- instances[2]: Test2dElement Inserted New ---\r\n const elem = instances.find((i) => i.ECInstanceId === fullElementId && i.$meta.stage === \"Old\");\r\n expect(elem).to.exist;\r\n assert.equal(elem!.ECInstanceId, fullElementId);\r\n assert.equal(\"TestDomain:Test2dElement\", rwIModel.getClassNameFromId(elem!.ECClassId));\r\n assert.equal(elem!.Model.Id, drawingModelId);\r\n assert.equal(rwIModel.getClassNameFromId(elem!.Model.RelECClassId), \"BisCore:ModelContainsElements\");\r\n assert.isString(elem!.LastMod);\r\n assert.equal(elem!.CodeSpec.Id, \"0x1\");\r\n assert.equal(rwIModel.getClassNameFromId(elem!.CodeSpec.RelECClassId), \"BisCore:CodeSpecSpecifiesCode\");\r\n\r\n assert.equal(elem!.CodeScope.Id, \"0x1\");\r\n assert.equal(rwIModel.getClassNameFromId(elem!.CodeScope.RelECClassId), \"BisCore:ElementScopesCode\");\r\n assert.isString(elem!.FederationGuid);\r\n\r\n assert.equal(elem!.Category.Id, drawingCategoryId);\r\n assert.equal(rwIModel.getClassNameFromId(elem!.Category.RelECClassId), \"BisCore:GeometricElement2dIsInCategory\");\r\n assert.deepEqual(elem!.Origin, { X: 0, Y: 0 });\r\n assert.equal(elem!.Rotation, 0);\r\n assert.deepEqual(elem!.BBoxLow, { X: -25, Y: -25 });\r\n assert.deepEqual(elem!.BBoxHigh, { X: 15, Y: 15 });\r\n assert.include(String(elem!.GeometryStream), \"\\\"bytes\\\"\");\r\n assert.include(String(elem!.BinProp), \"\\\"bytes\\\"\");\r\n assert.equal(elem!.StrProp, \"hello\");\r\n assert.equal(elem!.IntProp, 42);\r\n assert.equal(elem!.LongProp, 9007199254740991);\r\n assert.closeTo(elem!.DblProp as number, 3.14159265358979, 1e-10);\r\n assert.equal(elem!.BoolProp, true);\r\n assert.equal(elem!.DtProp, \"2024-01-15T12:00:00.000\");\r\n assert.deepEqual(elem!.Pt2dProp, { X: 1.5, Y: 2.5 });\r\n assert.deepEqual(elem!.Pt3dProp, { X: 3, Y: 4, Z: 5 });\r\n assert.deepEqual(elem!.StructProp, { X: 1, Y: 2, Z: 3, Label: \"origin\", Pt2d: { X: 0.5, Y: 0.5 }, Pt3d: { X: 1, Y: 2, Z: 3 } });\r\n assert.deepEqual(elem!.IntArrProp, [10, 20, 30]);\r\n assert.deepEqual(elem!.StrArrProp, [\"alpha\", \"beta\", \"gamma\"]);\r\n assert.deepEqual(elem!.StructArrProp, [\r\n { X: 0, Y: 1, Z: 2, Label: \"a\", Pt2d: { X: 0, Y: 0 }, Pt3d: { X: 0, Y: 0, Z: 0 } },\r\n { X: 3, Y: 4, Z: 5, Label: \"b\", Pt2d: { X: 1, Y: 1 }, Pt3d: { X: 1, Y: 1, Z: 1 } },\r\n ]);\r\n assert.equal(elem!.RelatedElem.Id, drawingCategoryId);\r\n assert.equal(rwIModel.getClassNameFromId(elem!.RelatedElem.RelECClassId), \"TestDomain:Test2dUsesElement\");\r\n // Object.keys\r\n assert.deepEqual(Object.keys(elem!).sort(), [\r\n \"ECInstanceId\", \"ECClassId\", \"Model\", \"LastMod\", \"CodeSpec\", \"CodeScope\", \"FederationGuid\", \"$meta\",\r\n \"Category\", \"Origin\", \"Rotation\", \"BBoxLow\", \"BBoxHigh\", \"GeometryStream\",\r\n \"StrProp\", \"IntProp\", \"LongProp\", \"DblProp\", \"BoolProp\", \"DtProp\",\r\n \"Pt2dProp\", \"Pt3dProp\", \"StructProp\", \"IntArrProp\", \"StrArrProp\", \"StructArrProp\", \"RelatedElem\", \"BinProp\"\r\n ].sort());\r\n // $meta keys\r\n assert.deepEqual(Object.keys(elem!.$meta).sort(), [\"op\", \"tables\", \"changeIndexes\", \"stage\", \"instanceKey\", \"propFilter\", \"changeFetchedPropNames\", \"rowOptions\", \"isIndirectChange\"].sort());\r\n assert.equal(elem!.$meta.op, \"Deleted\");\r\n assert.equal(elem!.$meta.stage, \"Old\");\r\n assert.deepEqual([...elem!.$meta.tables].sort(), [\"bis_Element\", \"bis_GeometricElement2d\"].sort());\r\n assert.deepEqual([...elem!.$meta.changeIndexes].sort(), [1, 2].sort());\r\n assert.isString(elem!.$meta.instanceKey);\r\n assert.equal(elem!.$meta.instanceKey.split(`-`).length, 2);\r\n assert.equal(elem!.$meta.propFilter, PropertyFilter.All);\r\n assert.deepEqual([...elem!.$meta.changeFetchedPropNames].sort(), [\r\n 'BBoxHigh', 'BBoxLow', 'BinProp', 'BoolProp', 'Category.Id', 'CodeScope.Id',\r\n 'CodeSpec.Id', 'CodeValue', 'DblProp', 'DtProp', 'ECClassId', 'ECInstanceId',\r\n 'FederationGuid', 'GeometryStream', 'IntArrProp', 'IntProp', 'JsonProperties',\r\n 'LastMod', 'LongProp', 'Model.Id', 'Origin', 'Parent', 'Pt2dProp', 'Pt3dProp',\r\n 'RelatedElem', 'Rotation', 'StrArrProp', 'StrProp', 'StructArrProp', 'StructProp.Label',\r\n 'StructProp.Pt2d', 'StructProp.Pt3d', 'StructProp.X', 'StructProp.Y', 'StructProp.Z',\r\n 'TypeDefinition', 'UserLabel'\r\n ].sort());\r\n assert.deepEqual(elem!.$meta.rowOptions, {});\r\n assert.equal(elem!.$meta.isIndirectChange, false);\r\n });\r\n\r\n it(\"txn1 insert-full | Bis_Element_Properties\", () => {\r\n const instances = readTxn(rwIModel, txnId, PropertyFilter.BisCoreElement, { classIdsToClassNames: true });\r\n assert.equal(instances.length, 3);\r\n\r\n // --- instances[0]: DrawingModel Updated New ---\r\n const modelNew = instances.find((i) => i.ECInstanceId === drawingModelId && i.$meta.stage === \"New\");\r\n expect(modelNew).to.exist;\r\n assert.equal(modelNew!.ECInstanceId, drawingModelId);\r\n assert.equal(modelNew!.ECClassId, \"BisCore.DrawingModel\");\r\n assert.isString(modelNew!.LastMod);\r\n assert.isString(modelNew!.GeometryGuid);\r\n assert.deepEqual(Object.keys(modelNew!).sort(), [\"ECInstanceId\", \"ECClassId\", \"LastMod\", \"GeometryGuid\", \"$meta\"].sort());\r\n assert.deepEqual(Object.keys(modelNew!.$meta).sort(), [\"op\", \"tables\", \"changeIndexes\", \"stage\", \"instanceKey\", \"propFilter\", \"changeFetchedPropNames\", \"rowOptions\", \"isIndirectChange\"].sort());\r\n assert.equal(modelNew!.$meta.op, \"Updated\");\r\n assert.equal(modelNew!.$meta.stage, \"New\");\r\n assert.equal(modelNew!.$meta.propFilter, PropertyFilter.BisCoreElement);\r\n assert.deepEqual([...modelNew!.$meta.changeFetchedPropNames].sort(), [\"ECInstanceId\", \"LastMod\", \"GeometryGuid\"].sort());\r\n assert.deepEqual(modelNew!.$meta.rowOptions, { classIdsToClassNames: true });\r\n assert.equal(modelNew!.$meta.isIndirectChange, true);\r\n\r\n // --- instances[1]: DrawingModel Updated Old ---\r\n const modelOld = instances.find((i) => i.ECInstanceId === drawingModelId && i.$meta.stage === \"Old\");\r\n expect(modelOld).to.exist;\r\n assert.equal(modelOld!.ECInstanceId, drawingModelId);\r\n assert.equal(modelOld!.ECClassId, \"BisCore.DrawingModel\");\r\n assert.deepEqual(Object.keys(modelOld!).sort(), [\"ECInstanceId\", \"ECClassId\", \"$meta\"].sort());\r\n assert.deepEqual(Object.keys(modelOld!.$meta).sort(), [\"op\", \"tables\", \"changeIndexes\", \"stage\", \"instanceKey\", \"propFilter\", \"changeFetchedPropNames\", \"rowOptions\", \"isIndirectChange\"].sort());\r\n assert.equal(modelOld!.$meta.op, \"Updated\");\r\n assert.equal(modelOld!.$meta.stage, \"Old\");\r\n assert.equal(modelOld!.$meta.propFilter, PropertyFilter.BisCoreElement);\r\n assert.deepEqual([...modelOld!.$meta.changeFetchedPropNames].sort(), [\"ECInstanceId\", \"LastMod\", \"GeometryGuid\"].sort());\r\n assert.deepEqual(modelOld!.$meta.rowOptions, { classIdsToClassNames: true });\r\n assert.equal(modelOld!.$meta.isIndirectChange, true);\r\n\r\n // --- instances[2]: Test2dElement Inserted New (Bis_Element_Properties: no custom props) ---\r\n const elem = instances.find((i) => i.ECInstanceId === fullElementId && i.$meta.stage === \"New\");\r\n expect(elem).to.exist;\r\n assert.equal(elem!.ECInstanceId, fullElementId);\r\n assert.equal(elem!.ECClassId, \"TestDomain.Test2dElement\");\r\n // No custom domain props\r\n assert.isUndefined(elem!.StrProp);\r\n assert.isUndefined(elem!.IntProp);\r\n assert.isUndefined(elem!.LongProp);\r\n assert.isUndefined(elem!.DblProp);\r\n assert.isUndefined(elem!.BoolProp);\r\n assert.isUndefined(elem!.DtProp);\r\n assert.isUndefined(elem!.Pt2dProp);\r\n assert.isUndefined(elem!.Pt3dProp);\r\n assert.isUndefined(elem!.StructProp);\r\n assert.isUndefined(elem!.IntArrProp);\r\n assert.isUndefined(elem!.StrArrProp);\r\n assert.isUndefined(elem!.StructArrProp);\r\n assert.isUndefined(elem!.RelatedElem);\r\n expect(elem!.Model).to.exist;\r\n expect(elem!.CodeScope).to.exist;\r\n expect(elem!.CodeSpec).to.exist;\r\n expect(elem!.FederationGuid).to.exist;\r\n expect(elem!.LastMod).to.exist;\r\n assert.deepEqual(Object.keys(elem!).sort(), [\"ECInstanceId\", \"ECClassId\", \"$meta\", \"CodeScope\", \"CodeSpec\", \"FederationGuid\", \"LastMod\", \"Model\"].sort());\r\n assert.deepEqual(Object.keys(elem!.$meta).sort(), [\"op\", \"tables\", \"changeIndexes\", \"stage\", \"instanceKey\", \"propFilter\", \"changeFetchedPropNames\", \"rowOptions\", \"isIndirectChange\"].sort());\r\n assert.equal(elem!.$meta.op, \"Inserted\");\r\n assert.equal(elem!.$meta.stage, \"New\");\r\n assert.deepEqual([...elem!.$meta.tables].sort(), [\"bis_Element\", \"bis_GeometricElement2d\"].sort());\r\n assert.deepEqual([...elem!.$meta.changeIndexes].sort(), [1, 2].sort());\r\n assert.isString(elem!.$meta.instanceKey);\r\n assert.equal(elem!.$meta.instanceKey.split(`-`).length, 2);\r\n assert.equal(elem!.$meta.propFilter, PropertyFilter.BisCoreElement);\r\n assert.deepEqual([...elem!.$meta.changeFetchedPropNames].sort(), [\"ECInstanceId\", \"ECClassId\", \"CodeScope.Id\", \"CodeSpec.Id\",\r\n \"CodeValue\", \"FederationGuid\", \"JsonProperties\", \"LastMod\", \"Model.Id\", \"Parent\", \"UserLabel\"].sort());\r\n assert.deepEqual(elem!.$meta.rowOptions, { classIdsToClassNames: true });\r\n assert.equal(elem!.$meta.isIndirectChange, false);\r\n });\r\n\r\n it(\"txn1 insert-full | Instance_Key\", () => {\r\n const instances = readTxn(rwIModel, txnId, PropertyFilter.InstanceKey);\r\n assert.equal(instances.length, 3);\r\n\r\n // --- instances[0]: DrawingModel Updated New ---\r\n const modelNew = instances.find((i) => i.ECInstanceId === drawingModelId && i.$meta.stage === \"New\");\r\n expect(modelNew).to.exist;\r\n assert.equal(modelNew!.ECInstanceId, drawingModelId);\r\n assert.equal(\"BisCore:DrawingModel\", rwIModel.getClassNameFromId(modelNew!.ECClassId));\r\n assert.deepEqual(Object.keys(modelNew!).sort(), [\"ECInstanceId\", \"ECClassId\", \"$meta\"].sort());\r\n assert.deepEqual(Object.keys(modelNew!.$meta).sort(), [\"op\", \"tables\", \"changeIndexes\", \"stage\", \"instanceKey\", \"propFilter\", \"changeFetchedPropNames\", \"rowOptions\", \"isIndirectChange\"].sort());\r\n assert.equal(modelNew!.$meta.op, \"Updated\");\r\n assert.equal(modelNew!.$meta.stage, \"New\");\r\n assert.deepEqual([...modelNew!.$meta.tables].sort(), [\"bis_Model\"].sort());\r\n assert.deepEqual([...modelNew!.$meta.changeIndexes].sort(), [3].sort());\r\n assert.isString(modelNew!.$meta.instanceKey);\r\n assert.equal(modelNew!.$meta.instanceKey.split(`-`).length, 2);\r\n assert.equal(modelNew!.$meta.propFilter, PropertyFilter.InstanceKey);\r\n assert.deepEqual([...modelNew!.$meta.changeFetchedPropNames].sort(), [\"ECInstanceId\"].sort());\r\n assert.deepEqual(modelNew!.$meta.rowOptions, {});\r\n assert.equal(modelNew!.$meta.isIndirectChange, true);\r\n\r\n // --- instances[1]: DrawingModel Updated Old ---\r\n const modelOld = instances.find((i) => i.ECInstanceId === drawingModelId && i.$meta.stage === \"Old\");\r\n expect(modelOld).to.exist;\r\n assert.equal(modelOld!.ECInstanceId, drawingModelId);\r\n assert.equal(\"BisCore:DrawingModel\", rwIModel.getClassNameFromId(modelOld!.ECClassId));\r\n assert.deepEqual(Object.keys(modelOld!).sort(), [\"ECInstanceId\", \"ECClassId\", \"$meta\"].sort());\r\n assert.deepEqual(Object.keys(modelOld!.$meta).sort(), [\"op\", \"tables\", \"changeIndexes\", \"stage\", \"instanceKey\", \"propFilter\", \"changeFetchedPropNames\", \"rowOptions\", \"isIndirectChange\"].sort());\r\n assert.equal(modelOld!.$meta.op, \"Updated\");\r\n assert.equal(modelOld!.$meta.stage, \"Old\");\r\n assert.equal(modelOld!.$meta.propFilter, PropertyFilter.InstanceKey);\r\n assert.deepEqual([...modelOld!.$meta.changeFetchedPropNames].sort(), [\"ECInstanceId\"].sort());\r\n assert.deepEqual(modelOld!.$meta.rowOptions, {});\r\n assert.equal(modelOld!.$meta.isIndirectChange, true);\r\n\r\n // --- instances[2]: Test2dElement Inserted New (only ECInstanceId + ECClassId) ---\r\n const elem = instances.find((i) => i.ECInstanceId === fullElementId && i.$meta.stage === \"New\");\r\n expect(elem).to.exist;\r\n assert.equal(elem!.ECInstanceId, fullElementId);\r\n assert.equal(\"TestDomain:Test2dElement\", rwIModel.getClassNameFromId(elem!.ECClassId));\r\n assert.isUndefined(elem!.StrProp);\r\n assert.isUndefined(elem!.Model);\r\n assert.isUndefined(elem!.Category);\r\n assert.isUndefined(elem!.LastMod);\r\n assert.deepEqual(Object.keys(elem!).sort(), [\"ECInstanceId\", \"ECClassId\", \"$meta\"].sort());\r\n assert.deepEqual(Object.keys(elem!.$meta).sort(), [\"op\", \"tables\", \"changeIndexes\", \"stage\", \"instanceKey\", \"propFilter\", \"changeFetchedPropNames\", \"rowOptions\", \"isIndirectChange\"].sort());\r\n assert.equal(elem!.$meta.op, \"Inserted\");\r\n assert.equal(elem!.$meta.stage, \"New\");\r\n assert.deepEqual([...elem!.$meta.tables].sort(), [\"bis_Element\", \"bis_GeometricElement2d\"].sort());\r\n assert.deepEqual([...elem!.$meta.changeIndexes].sort(), [1, 2].sort());\r\n assert.isString(elem!.$meta.instanceKey);\r\n assert.equal(elem!.$meta.instanceKey.split(`-`).length, 2);\r\n assert.equal(elem!.$meta.propFilter, PropertyFilter.InstanceKey);\r\n assert.deepEqual([...elem!.$meta.changeFetchedPropNames].sort(), [\"ECInstanceId\", \"ECClassId\"].sort());\r\n assert.deepEqual(elem!.$meta.rowOptions, {});\r\n assert.equal(elem!.$meta.isIndirectChange, false);\r\n });\r\n\r\n it(\"txn1 | rowOptions: classIdsToClassNames\", () => {\r\n const instances = readTxn(rwIModel, txnId, undefined, { classIdsToClassNames: true });\r\n assert.equal(instances.length, 3);\r\n\r\n // --- instances[0]: DrawingModel Updated New (ECClassId is now class name) ---\r\n const modelNew = instances.find((i) => i.ECInstanceId === drawingModelId && i.$meta.stage === \"New\");\r\n expect(modelNew).to.exist;\r\n assert.equal(modelNew!.ECInstanceId, drawingModelId);\r\n assert.equal(modelNew!.ECClassId, \"BisCore.DrawingModel\");\r\n assert.isString(modelNew!.LastMod);\r\n assert.isString(modelNew!.GeometryGuid);\r\n assert.deepEqual(Object.keys(modelNew!).sort(), [\"ECInstanceId\", \"ECClassId\", \"LastMod\", \"GeometryGuid\", \"$meta\"].sort());\r\n assert.deepEqual(Object.keys(modelNew!.$meta).sort(), [\"op\", \"tables\", \"changeIndexes\", \"stage\", \"instanceKey\", \"propFilter\", \"changeFetchedPropNames\", \"rowOptions\", \"isIndirectChange\"].sort());\r\n assert.equal(modelNew!.$meta.op, \"Updated\");\r\n assert.equal(modelNew!.$meta.stage, \"New\");\r\n assert.equal(modelNew!.$meta.propFilter, PropertyFilter.All);\r\n assert.deepEqual([...modelNew!.$meta.changeFetchedPropNames].sort(), [\"ECInstanceId\", \"LastMod\", \"GeometryGuid\"].sort());\r\n assert.deepEqual(modelNew!.$meta.rowOptions, { classIdsToClassNames: true });\r\n assert.equal(modelNew!.$meta.isIndirectChange, true);\r\n\r\n // --- instances[1]: DrawingModel Updated Old ---\r\n const modelOld = instances.find((i) => i.ECInstanceId === drawingModelId && i.$meta.stage === \"Old\");\r\n expect(modelOld).to.exist;\r\n assert.equal(modelOld!.ECInstanceId, drawingModelId);\r\n assert.equal(modelOld!.ECClassId, \"BisCore.DrawingModel\");\r\n assert.deepEqual(Object.keys(modelOld!).sort(), [\"ECInstanceId\", \"ECClassId\", \"$meta\"].sort());\r\n assert.deepEqual(Object.keys(modelOld!.$meta).sort(), [\"op\", \"tables\", \"changeIndexes\", \"stage\", \"instanceKey\", \"propFilter\", \"changeFetchedPropNames\", \"rowOptions\", \"isIndirectChange\"].sort());\r\n assert.equal(modelOld!.$meta.op, \"Updated\");\r\n assert.equal(modelOld!.$meta.stage, \"Old\");\r\n assert.equal(modelOld!.$meta.propFilter, PropertyFilter.All);\r\n assert.deepEqual([...modelOld!.$meta.changeFetchedPropNames].sort(), [\"ECInstanceId\", \"LastMod\", \"GeometryGuid\"].sort());\r\n assert.deepEqual(modelOld!.$meta.rowOptions, { classIdsToClassNames: true });\r\n assert.equal(modelOld!.$meta.isIndirectChange, true);\r\n\r\n\r\n // --- instances[2]: Test2dElement Inserted New (ECClassId + all RelECClassId = class names) ---\r\n const elem = instances.find((i) => i.ECInstanceId === fullElementId && i.$meta.stage === \"New\");\r\n expect(elem).to.exist;\r\n assert.equal(elem!.ECInstanceId, fullElementId);\r\n assert.equal(\"TestDomain.Test2dElement\", elem!.ECClassId);\r\n assert.deepEqual(elem!.Model, { Id: drawingModelId, RelECClassId: \"BisCore.ModelContainsElements\" });\r\n assert.isString(elem!.LastMod);\r\n assert.deepEqual(elem!.CodeSpec, { Id: \"0x1\", RelECClassId: \"BisCore.CodeSpecSpecifiesCode\" });\r\n assert.deepEqual(elem!.CodeScope, { Id: \"0x1\", RelECClassId: \"BisCore.ElementScopesCode\" });\r\n assert.isString(elem!.FederationGuid);\r\n assert.deepEqual(elem!.Category, { Id: drawingCategoryId, RelECClassId: \"BisCore.GeometricElement2dIsInCategory\" });\r\n assert.deepEqual(elem!.Origin, { X: 0, Y: 0 });\r\n assert.equal(elem!.Rotation, 0);\r\n assert.deepEqual(elem!.BBoxLow, { X: -25, Y: -25 });\r\n assert.deepEqual(elem!.BBoxHigh, { X: 15, Y: 15 });\r\n assert.include(String(elem!.GeometryStream), \"\\\"bytes\\\"\");\r\n assert.include(String(elem!.BinProp), \"\\\"bytes\\\"\");\r\n assert.equal(elem!.StrProp, \"hello\");\r\n assert.equal(elem!.IntProp, 42);\r\n assert.equal(elem!.LongProp, 9007199254740991);\r\n assert.closeTo(elem!.DblProp as number, 3.14159265358979, 1e-10);\r\n assert.equal(elem!.BoolProp, true);\r\n assert.equal(elem!.DtProp, \"2024-01-15T12:00:00.000\");\r\n assert.deepEqual(elem!.Pt2dProp, { X: 1.5, Y: 2.5 });\r\n assert.deepEqual(elem!.Pt3dProp, { X: 3, Y: 4, Z: 5 });\r\n assert.deepEqual(elem!.StructProp, { X: 1, Y: 2, Z: 3, Label: \"origin\", Pt2d: { X: 0.5, Y: 0.5 }, Pt3d: { X: 1, Y: 2, Z: 3 } });\r\n assert.deepEqual(elem!.IntArrProp, [10, 20, 30]);\r\n assert.deepEqual(elem!.StrArrProp, [\"alpha\", \"beta\", \"gamma\"]);\r\n assert.equal(elem!.StructArrProp.length, 2);\r\n assert.deepEqual(elem!.RelatedElem, { Id: drawingCategoryId, RelECClassId: \"TestDomain.Test2dUsesElement\" });\r\n assert.deepEqual(Object.keys(elem!).sort(), [\r\n \"ECInstanceId\", \"ECClassId\", \"Model\", \"LastMod\", \"CodeSpec\", \"CodeScope\", \"FederationGuid\", \"$meta\",\r\n \"Category\", \"Origin\", \"Rotation\", \"BBoxLow\", \"BBoxHigh\", \"GeometryStream\",\r\n \"StrProp\", \"IntProp\", \"LongProp\", \"DblProp\", \"BoolProp\", \"DtProp\",\r\n \"Pt2dProp\", \"Pt3dProp\", \"StructProp\", \"IntArrProp\", \"StrArrProp\", \"StructArrProp\", \"RelatedElem\", \"BinProp\"\r\n ].sort());\r\n assert.deepEqual(Object.keys(elem!.$meta).sort(), [\"op\", \"tables\", \"changeIndexes\", \"stage\", \"instanceKey\", \"propFilter\", \"changeFetchedPropNames\", \"rowOptions\", \"isIndirectChange\"].sort());\r\n assert.equal(elem!.$meta.op, \"Inserted\");\r\n assert.equal(elem!.$meta.stage, \"New\");\r\n assert.equal(elem!.$meta.propFilter, PropertyFilter.All);\r\n assert.deepEqual(elem!.$meta.rowOptions, { classIdsToClassNames: true });\r\n assert.deepEqual([...elem!.$meta.changeFetchedPropNames].sort(),\r\n [\"ECInstanceId\", \"ECClassId\", \"Model.Id\", \"LastMod\", \"CodeSpec.Id\", \"CodeScope.Id\",\r\n \"CodeValue\", \"UserLabel\", \"Parent\", \"FederationGuid\", \"JsonProperties\", \"Category.Id\",\r\n \"Origin\", \"Rotation\", \"BBoxLow\", \"BBoxHigh\", \"GeometryStream\", \"TypeDefinition\", \"StrProp\",\r\n \"IntProp\", \"LongProp\", \"DblProp\", \"BoolProp\", \"DtProp\", \"BinProp\", \"Pt2dProp\", \"Pt3dProp\",\r\n \"StructProp.X\", \"StructProp.Y\", \"StructProp.Z\", \"StructProp.Label\", \"StructProp.Pt2d\",\r\n \"StructProp.Pt3d\", \"IntArrProp\", \"StrArrProp\", \"StructArrProp\", \"RelatedElem\"].sort());\r\n assert.equal(elem!.$meta.isIndirectChange, false);\r\n });\r\n\r\n it(\"txn1 | rowOptions: useJsName\", () => {\r\n const instances = readTxn(rwIModel, txnId, undefined, { useJsName: true });\r\n assert.equal(instances.length, 3);\r\n\r\n // --- instances[0]: DrawingModel Updated New (all keys camelCase) ---\r\n const modelNew = instances.find((i) => i.id === drawingModelId && i.$meta.stage === \"New\");\r\n expect(modelNew).to.exist;\r\n assert.equal(modelNew!.id, drawingModelId);\r\n assert.equal(modelNew!.className, \"BisCore.DrawingModel\");\r\n assert.isString(modelNew!.lastMod);\r\n assert.isString(modelNew!.geometryGuid);\r\n assert.isUndefined(modelNew!.ECInstanceId);\r\n assert.isUndefined(modelNew!.ECClassId);\r\n assert.deepEqual(Object.keys(modelNew!).sort(), [\"id\", \"className\", \"lastMod\", \"geometryGuid\", \"$meta\"].sort());\r\n assert.deepEqual(Object.keys(modelNew!.$meta).sort(), [\"op\", \"tables\", \"changeIndexes\", \"stage\", \"instanceKey\", \"propFilter\", \"changeFetchedPropNames\", \"rowOptions\", \"isIndirectChange\"].sort());\r\n assert.equal(modelNew!.$meta.op, \"Updated\");\r\n assert.equal(modelNew!.$meta.stage, \"New\");\r\n assert.equal(modelNew!.$meta.propFilter, PropertyFilter.All);\r\n assert.deepEqual([...modelNew!.$meta.changeFetchedPropNames].sort(), [\"ECInstanceId\", \"LastMod\", \"GeometryGuid\"].sort());\r\n assert.deepEqual(modelNew!.$meta.rowOptions, { useJsName: true });\r\n assert.equal(modelNew!.$meta.isIndirectChange, true);\r\n\r\n // --- instances[1]: DrawingModel Updated Old ---\r\n const modelOld = instances.find((i) => i.id === drawingModelId && i.$meta.stage === \"Old\");\r\n expect(modelOld).to.exist;\r\n assert.equal(modelOld!.id, drawingModelId);\r\n assert.equal(modelOld!.className, \"BisCore.DrawingModel\");\r\n assert.isUndefined(modelOld!.ECInstanceId);\r\n assert.deepEqual(Object.keys(modelOld!).sort(), [\"id\", \"className\", \"$meta\"].sort());\r\n assert.deepEqual(Object.keys(modelOld!.$meta).sort(), [\"op\", \"tables\", \"changeIndexes\", \"stage\", \"instanceKey\", \"propFilter\", \"changeFetchedPropNames\", \"rowOptions\", \"isIndirectChange\"].sort());\r\n assert.equal(modelOld!.$meta.op, \"Updated\");\r\n assert.equal(modelOld!.$meta.stage, \"Old\");\r\n assert.equal(modelOld!.$meta.propFilter, PropertyFilter.All);\r\n assert.deepEqual([...modelOld!.$meta.changeFetchedPropNames].sort(), [\"ECInstanceId\", \"LastMod\", \"GeometryGuid\"].sort());\r\n assert.deepEqual(modelOld!.$meta.rowOptions, { useJsName: true });\r\n assert.equal(modelOld!.$meta.isIndirectChange, true);\r\n\r\n // --- instances[2]: Test2dElement Inserted New (camelCase keys + class names for nav) ---\r\n const elem = instances.find((i) => i.id === fullElementId && i.$meta.stage === \"New\");\r\n expect(elem).to.exist;\r\n assert.equal(elem!.id, fullElementId);\r\n assert.equal(elem!.className, \"TestDomain.Test2dElement\");\r\n assert.isUndefined(elem!.ECInstanceId);\r\n assert.isUndefined(elem!.ECClassId);\r\n assert.isUndefined(elem!.StrProp);\r\n assert.deepEqual(elem!.model, { id: drawingModelId, relClassName: \"BisCore.ModelContainsElements\" });\r\n assert.isString(elem!.lastMod);\r\n assert.deepEqual(elem!.codeSpec, { id: \"0x1\", relClassName: \"BisCore.CodeSpecSpecifiesCode\" });\r\n assert.deepEqual(elem!.codeScope, { id: \"0x1\", relClassName: \"BisCore.ElementScopesCode\" });\r\n assert.isString(elem!.federationGuid);\r\n assert.deepEqual(elem!.category, { id: drawingCategoryId, relClassName: \"BisCore.GeometricElement2dIsInCategory\" });\r\n assert.deepEqual(elem!.origin, { x: 0, y: 0 });\r\n assert.equal(elem!.rotation, 0);\r\n assert.deepEqual(elem!.bBoxLow, { x: -25, y: -25 });\r\n assert.deepEqual(elem!.bBoxHigh, { x: 15, y: 15 });\r\n assert.include(String(elem!.geometryStream), \"\\\"bytes\\\"\");\r\n assert.include(String(elem!.binProp), \"\\\"bytes\\\"\");\r\n assert.equal(elem!.strProp, \"hello\");\r\n assert.equal(elem!.intProp, 42);\r\n assert.equal(elem!.longProp, 9007199254740991);\r\n assert.closeTo(elem!.dblProp as number, 3.14159265358979, 1e-10);\r\n assert.equal(elem!.boolProp, true);\r\n assert.equal(elem!.dtProp, \"2024-01-15T12:00:00.000\");\r\n assert.deepEqual(elem!.pt2dProp, { x: 1.5, y: 2.5 });\r\n assert.deepEqual(elem!.pt3dProp, { x: 3, y: 4, z: 5 });\r\n assert.deepEqual(elem!.structProp, { x: 1, y: 2, z: 3, label: \"origin\", pt2d: { x: 0.5, y: 0.5 }, pt3d: { x: 1, y: 2, z: 3 } });\r\n assert.deepEqual(elem!.intArrProp, [10, 20, 30]);\r\n assert.deepEqual(elem!.strArrProp, [\"alpha\", \"beta\", \"gamma\"]);\r\n assert.equal(elem!.structArrProp.length, 2);\r\n assert.deepEqual(elem!.structArrProp[0], { x: 0, y: 1, z: 2, label: \"a\", pt2d: { x: 0, y: 0 }, pt3d: { x: 0, y: 0, z: 0 } });\r\n assert.deepEqual(elem!.relatedElem, { id: drawingCategoryId, relClassName: \"TestDomain.Test2dUsesElement\" });\r\n assert.deepEqual(Object.keys(elem!).sort(), [\r\n \"id\", \"className\", \"model\", \"lastMod\", \"codeSpec\", \"codeScope\", \"federationGuid\", \"$meta\",\r\n \"category\", \"origin\", \"rotation\", \"bBoxLow\", \"bBoxHigh\", \"geometryStream\",\r\n \"strProp\", \"intProp\", \"longProp\", \"dblProp\", \"boolProp\", \"dtProp\",\r\n \"pt2dProp\", \"pt3dProp\", \"structProp\", \"intArrProp\", \"strArrProp\", \"structArrProp\", \"relatedElem\", \"binProp\"\r\n ].sort());\r\n assert.deepEqual(Object.keys(elem!.$meta).sort(), [\"op\", \"tables\", \"changeIndexes\", \"stage\", \"instanceKey\", \"propFilter\", \"changeFetchedPropNames\", \"rowOptions\", \"isIndirectChange\"].sort());\r\n assert.equal(elem!.$meta.op, \"Inserted\");\r\n assert.equal(elem!.$meta.stage, \"New\");\r\n assert.equal(elem!.$meta.propFilter, PropertyFilter.All);\r\n assert.deepEqual([...elem!.$meta.changeFetchedPropNames].sort(), [\r\n 'BBoxHigh', 'BBoxLow', 'BinProp', 'BoolProp', 'Category.Id', 'CodeScope.Id',\r\n 'CodeSpec.Id', 'CodeValue', 'DblProp', 'DtProp', 'ECClassId',\r\n 'ECInstanceId', 'FederationGuid', 'GeometryStream', 'IntArrProp', 'IntProp',\r\n 'JsonProperties', 'LastMod', 'LongProp', 'Model.Id', 'Origin', 'Parent', 'Pt2dProp',\r\n 'Pt3dProp', 'RelatedElem', 'Rotation', 'StrArrProp', 'StrProp', 'StructArrProp', 'StructProp.Label',\r\n 'StructProp.Pt2d', 'StructProp.Pt3d', 'StructProp.X', 'StructProp.Y',\r\n 'StructProp.Z', 'TypeDefinition', 'UserLabel'\r\n ].sort());\r\n assert.deepEqual(elem!.$meta.rowOptions, { useJsName: true });\r\n assert.equal(elem!.$meta.isIndirectChange, false);\r\n });\r\n\r\n it(\"txn1 | rowOptions: abbreviateBlobs\", () => {\r\n const instances = readTxn(rwIModel, txnId, undefined, { abbreviateBlobs: true });\r\n assert.equal(instances.length, 3);\r\n\r\n // --- instances[0]: DrawingModel Updated New ---\r\n const modelNew = instances.find((i) => i.ECInstanceId === drawingModelId && i.$meta.stage === \"New\");\r\n expect(modelNew).to.exist;\r\n assert.equal(modelNew!.ECInstanceId, drawingModelId);\r\n assert.equal(\"BisCore:DrawingModel\", rwIModel.getClassNameFromId(modelNew!.ECClassId)); // still raw hex\r\n assert.isString(modelNew!.LastMod);\r\n assert.isString(modelNew!.GeometryGuid);\r\n assert.deepEqual(Object.keys(modelNew!).sort(), [\"ECInstanceId\", \"ECClassId\", \"LastMod\", \"GeometryGuid\", \"$meta\"].sort());\r\n assert.deepEqual(Object.keys(modelNew!.$meta).sort(), [\"op\", \"tables\", \"changeIndexes\", \"stage\", \"instanceKey\", \"propFilter\", \"changeFetchedPropNames\", \"rowOptions\", \"isIndirectChange\"].sort());\r\n assert.equal(modelNew!.$meta.op, \"Updated\");\r\n assert.equal(modelNew!.$meta.stage, \"New\");\r\n assert.equal(modelNew!.$meta.propFilter, PropertyFilter.All);\r\n assert.deepEqual([...modelNew!.$meta.changeFetchedPropNames].sort(), [\"ECInstanceId\", \"LastMod\", \"GeometryGuid\"].sort());\r\n assert.deepEqual(modelNew!.$meta.rowOptions, { abbreviateBlobs: true });\r\n assert.equal(modelNew!.$meta.isIndirectChange, true);\r\n\r\n // --- instances[1]: DrawingModel Updated Old ---\r\n const modelOld = instances.find((i) => i.ECInstanceId === drawingModelId && i.$meta.stage === \"Old\");\r\n expect(modelOld).to.exist;\r\n assert.equal(modelOld!.ECInstanceId, drawingModelId);\r\n assert.equal(\"BisCore:DrawingModel\", rwIModel.getClassNameFromId(modelOld!.ECClassId));\r\n assert.deepEqual(Object.keys(modelOld!).sort(), [\"ECInstanceId\", \"ECClassId\", \"$meta\"].sort());\r\n assert.deepEqual(Object.keys(modelOld!.$meta).sort(), [\"op\", \"tables\", \"changeIndexes\", \"stage\", \"instanceKey\", \"propFilter\", \"changeFetchedPropNames\", \"rowOptions\", \"isIndirectChange\"].sort());\r\n assert.equal(modelOld!.$meta.op, \"Updated\");\r\n assert.equal(modelOld!.$meta.stage, \"Old\");\r\n assert.equal(modelOld!.$meta.propFilter, PropertyFilter.All);\r\n assert.deepEqual([...modelOld!.$meta.changeFetchedPropNames].sort(), [\"ECInstanceId\", \"LastMod\", \"GeometryGuid\"].sort());\r\n assert.deepEqual(modelOld!.$meta.rowOptions, { abbreviateBlobs: true });\r\n assert.equal(modelOld!.$meta.isIndirectChange, true);\r\n\r\n // --- instances[2]: Test2dElement Inserted New ---\r\n const elem = instances.find((i) => i.ECInstanceId === fullElementId && i.$meta.stage === \"New\");\r\n expect(elem).to.exist;\r\n assert.equal(elem!.ECInstanceId, fullElementId);\r\n assert.equal(\"TestDomain:Test2dElement\", rwIModel.getClassNameFromId(elem!.ECClassId)); // still raw hex (no classIdsToClassNames)\r\n assert.equal(elem!.Model.Id, drawingModelId);\r\n assert.equal(rwIModel.getClassNameFromId(elem!.Model.RelECClassId), \"BisCore:ModelContainsElements\");\r\n assert.isString(elem!.LastMod);\r\n assert.equal(elem!.CodeSpec.Id, \"0x1\");\r\n assert.equal(rwIModel.getClassNameFromId(elem!.CodeSpec.RelECClassId), \"BisCore:CodeSpecSpecifiesCode\");\r\n\r\n assert.equal(elem!.CodeScope.Id, \"0x1\");\r\n assert.equal(rwIModel.getClassNameFromId(elem!.CodeScope.RelECClassId), \"BisCore:ElementScopesCode\");\r\n assert.isString(elem!.FederationGuid);\r\n assert.equal(elem!.Category.Id, drawingCategoryId);\r\n assert.equal(rwIModel.getClassNameFromId(elem!.Category.RelECClassId), \"BisCore:GeometricElement2dIsInCategory\");\r\n assert.deepEqual(elem!.Origin, { X: 0, Y: 0 });\r\n assert.equal(elem!.Rotation, 0);\r\n assert.deepEqual(elem!.BBoxLow, { X: -25, Y: -25 });\r\n assert.deepEqual(elem!.BBoxHigh, { X: 15, Y: 15 });\r\n // GeometryStream is a blob — abbreviated to {\"bytes\": N}\r\n assert.include(String(elem!.GeometryStream), \"\\\"bytes\\\"\");\r\n assert.include(String(elem!.BinProp), \"\\\"bytes\\\"\");\r\n assert.equal(elem!.StrProp, \"hello\");\r\n assert.equal(elem!.IntProp, 42);\r\n assert.equal(elem!.LongProp, 9007199254740991);\r\n assert.closeTo(elem!.DblProp as number, 3.14159265358979, 1e-10);\r\n assert.equal(elem!.BoolProp, true);\r\n assert.equal(elem!.DtProp, \"2024-01-15T12:00:00.000\");\r\n assert.deepEqual(elem!.Pt2dProp, { X: 1.5, Y: 2.5 });\r\n assert.deepEqual(elem!.Pt3dProp, { X: 3, Y: 4, Z: 5 });\r\n assert.deepEqual(elem!.StructProp, { X: 1, Y: 2, Z: 3, Label: \"origin\", Pt2d: { X: 0.5, Y: 0.5 }, Pt3d: { X: 1, Y: 2, Z: 3 } });\r\n assert.deepEqual(elem!.IntArrProp, [10, 20, 30]);\r\n assert.deepEqual(elem!.StrArrProp, [\"alpha\", \"beta\", \"gamma\"]);\r\n assert.equal(elem!.StructArrProp.length, 2);\r\n assert.equal(elem!.RelatedElem.Id, drawingCategoryId);\r\n assert.equal(rwIModel.getClassNameFromId(elem!.RelatedElem.RelECClassId), \"TestDomain:Test2dUsesElement\");\r\n assert.deepEqual(Object.keys(elem!).sort(), [\r\n \"ECInstanceId\", \"ECClassId\", \"Model\", \"LastMod\", \"CodeSpec\", \"CodeScope\", \"FederationGuid\", \"$meta\",\r\n \"Category\", \"Origin\", \"Rotation\", \"BBoxLow\", \"BBoxHigh\", \"GeometryStream\",\r\n \"StrProp\", \"IntProp\", \"LongProp\", \"DblProp\", \"BoolProp\", \"DtProp\",\r\n \"Pt2dProp\", \"Pt3dProp\", \"StructProp\", \"IntArrProp\", \"StrArrProp\", \"StructArrProp\", \"RelatedElem\", \"BinProp\"\r\n ].sort());\r\n assert.deepEqual(Object.keys(elem!.$meta).sort(), [\"op\", \"tables\", \"changeIndexes\", \"stage\", \"instanceKey\", \"propFilter\", \"changeFetchedPropNames\", \"rowOptions\", \"isIndirectChange\"].sort());\r\n assert.equal(elem!.$meta.op, \"Inserted\");\r\n assert.equal(elem!.$meta.stage, \"New\");\r\n assert.equal(elem!.$meta.propFilter, PropertyFilter.All);\r\n assert.deepEqual(elem!.$meta.rowOptions, { abbreviateBlobs: true });\r\n assert.equal(elem!.$meta.isIndirectChange, false);\r\n });\r\n\r\n it(\"txn1 | rowOptions: abbreviateBlobs: false\", () => {\r\n const instances = readTxn(rwIModel, txnId, undefined, { abbreviateBlobs: false }, undefined, false);\r\n assert.equal(instances.length, 3);\r\n\r\n // --- instances[0]: DrawingModel Updated New ---\r\n const modelNew = instances.find((i) => i.ECInstanceId === drawingModelId && i.$meta.stage === \"New\");\r\n expect(modelNew).to.exist;\r\n assert.equal(modelNew!.ECInstanceId, drawingModelId);\r\n assert.equal(\"BisCore:DrawingModel\", rwIModel.getClassNameFromId(modelNew!.ECClassId)); // still raw hex\r\n assert.isString(modelNew!.LastMod);\r\n assert.isString(modelNew!.GeometryGuid);\r\n assert.deepEqual(Object.keys(modelNew!).sort(), [\"ECInstanceId\", \"ECClassId\", \"LastMod\", \"GeometryGuid\", \"$meta\"].sort());\r\n assert.deepEqual(Object.keys(modelNew!.$meta).sort(), [\"op\", \"tables\", \"changeIndexes\", \"stage\", \"instanceKey\", \"propFilter\", \"changeFetchedPropNames\", \"rowOptions\", \"isIndirectChange\"].sort());\r\n assert.equal(modelNew!.$meta.op, \"Updated\");\r\n assert.equal(modelNew!.$meta.stage, \"New\");\r\n assert.equal(modelNew!.$meta.propFilter, PropertyFilter.All);\r\n assert.deepEqual([...modelNew!.$meta.changeFetchedPropNames].sort(), [\"ECInstanceId\", \"LastMod\", \"GeometryGuid\"].sort());\r\n assert.deepEqual(modelNew!.$meta.rowOptions, { abbreviateBlobs: false });\r\n assert.equal(modelNew!.$meta.isIndirectChange, true);\r\n\r\n // --- instances[1]: DrawingModel Updated Old ---\r\n const modelOld = instances.find((i) => i.ECInstanceId === drawingModelId && i.$meta.stage === \"Old\");\r\n expect(modelOld).to.exist;\r\n assert.equal(modelOld!.ECInstanceId, drawingModelId);\r\n assert.equal(\"BisCore:DrawingModel\", rwIModel.getClassNameFromId(modelOld!.ECClassId));\r\n assert.deepEqual(Object.keys(modelOld!).sort(), [\"ECInstanceId\", \"ECClassId\", \"$meta\"].sort());\r\n assert.deepEqual(Object.keys(modelOld!.$meta).sort(), [\"op\", \"tables\", \"changeIndexes\", \"stage\", \"instanceKey\", \"propFilter\", \"changeFetchedPropNames\", \"rowOptions\", \"isIndirectChange\"].sort());\r\n assert.equal(modelOld!.$meta.op, \"Updated\");\r\n assert.equal(modelOld!.$meta.stage, \"Old\");\r\n assert.equal(modelOld!.$meta.propFilter, PropertyFilter.All);\r\n assert.deepEqual([...modelOld!.$meta.changeFetchedPropNames].sort(), [\"ECInstanceId\", \"LastMod\", \"GeometryGuid\"].sort());\r\n assert.deepEqual(modelOld!.$meta.rowOptions, { abbreviateBlobs: false });\r\n assert.equal(modelOld!.$meta.isIndirectChange, true);\r\n\r\n // --- instances[2]: Test2dElement Inserted New ---\r\n const elem = instances.find((i) => i.ECInstanceId === fullElementId && i.$meta.stage === \"New\");\r\n expect(elem).to.exist;\r\n assert.equal(elem!.ECInstanceId, fullElementId);\r\n assert.equal(\"TestDomain:Test2dElement\", rwIModel.getClassNameFromId(elem!.ECClassId)); // still raw hex (no classIdsToClassNames)\r\n assert.equal(elem!.Model.Id, drawingModelId);\r\n assert.equal(rwIModel.getClassNameFromId(elem!.Model.RelECClassId), \"BisCore:ModelContainsElements\");\r\n assert.isString(elem!.LastMod);\r\n assert.equal(elem!.CodeSpec.Id, \"0x1\");\r\n assert.equal(rwIModel.getClassNameFromId(elem!.CodeSpec.RelECClassId), \"BisCore:CodeSpecSpecifiesCode\");\r\n\r\n assert.equal(elem!.CodeScope.Id, \"0x1\");\r\n assert.equal(rwIModel.getClassNameFromId(elem!.CodeScope.RelECClassId), \"BisCore:ElementScopesCode\");\r\n assert.isString(elem!.FederationGuid);\r\n assert.equal(elem!.Category.Id, drawingCategoryId);\r\n assert.equal(rwIModel.getClassNameFromId(elem!.Category.RelECClassId), \"BisCore:GeometricElement2dIsInCategory\");\r\n assert.deepEqual(elem!.Origin, { X: 0, Y: 0 });\r\n assert.equal(elem!.Rotation, 0);\r\n assert.deepEqual(elem!.BBoxLow, { X: -25, Y: -25 });\r\n assert.deepEqual(elem!.BBoxHigh, { X: 15, Y: 15 });\r\n // GeometryStream is a blob — abbreviated to {\"bytes\": N}\r\n assert.deepEqual(elem!.GeometryStream, new Uint8Array([\r\n 1, 0, 0, 0, 8, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,\r\n 7, 0, 0, 0, 112, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0,\r\n 16, 0, 88, 0, 8, 0, 32, 0, 56, 0, 0, 0, 80, 0, 7, 0,\r\n 16, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,\r\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\r\n 0, 0, 0, 0, 0, 0, 20, 64, 0, 0, 0, 0, 0, 0, 0, 0,\r\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\r\n 0, 0, 0, 0, 0, 0, 20, 64, 0, 0, 0, 0, 0, 0, 0, 0,\r\n 24, 45, 68, 84, 251, 33, 25, 64, 7, 0, 0, 0, 112, 0, 0, 0,\r\n 24, 0, 0, 0, 0, 0, 0, 0, 16, 0, 88, 0, 8, 0, 32, 0,\r\n 56, 0, 0, 0, 80, 0, 7, 0, 16, 0, 0, 0, 0, 0, 0, 1,\r\n 0, 0, 0, 0, 0, 0, 20, 64, 0, 0, 0, 0, 0, 0, 20, 64,\r\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,\r\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\r\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,\r\n 0, 0, 0, 0, 0, 0, 0, 0, 24, 45, 68, 84, 251, 33, 25, 64,\r\n 7, 0, 0, 0, 112, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0,\r\n 16, 0, 88, 0, 8, 0, 32, 0, 56, 0, 0, 0, 80, 0, 7, 0,\r\n 16, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 20, 192,\r\n 0, 0, 0, 0, 0, 0, 20, 192, 0, 0, 0, 0, 0, 0, 0, 0,\r\n 0, 0, 0, 0, 0, 0, 52, 64, 0, 0, 0, 0, 0, 0, 0, 0,\r\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\r\n 0, 0, 0, 0, 0, 0, 52, 64, 0, 0, 0, 0, 0, 0, 0, 0,\r\n 24, 45, 68, 84, 251, 33, 25, 64\r\n ]));\r\n assert.deepEqual(elem!.BinProp, new Uint8Array([1, 2, 3, 4]));\r\n assert.equal(elem!.StrProp, \"hello\");\r\n assert.equal(elem!.IntProp, 42);\r\n assert.equal(elem!.LongProp, 9007199254740991);\r\n assert.closeTo(elem!.DblProp as number, 3.14159265358979, 1e-10);\r\n assert.equal(elem!.BoolProp, true);\r\n assert.equal(elem!.DtProp, \"2024-01-15T12:00:00.000\");\r\n assert.deepEqual(elem!.Pt2dProp, { X: 1.5, Y: 2.5 });\r\n assert.deepEqual(elem!.Pt3dProp, { X: 3, Y: 4, Z: 5 });\r\n assert.deepEqual(elem!.StructProp, { X: 1, Y: 2, Z: 3, Label: \"origin\", Pt2d: { X: 0.5, Y: 0.5 }, Pt3d: { X: 1, Y: 2, Z: 3 } });\r\n assert.deepEqual(elem!.IntArrProp, [10, 20, 30]);\r\n assert.deepEqual(elem!.StrArrProp, [\"alpha\", \"beta\", \"gamma\"]);\r\n assert.equal(elem!.StructArrProp.length, 2);\r\n assert.equal(elem!.RelatedElem.Id, drawingCategoryId);\r\n assert.equal(rwIModel.getClassNameFromId(elem!.RelatedElem.RelECClassId), \"TestDomain:Test2dUsesElement\");\r\n assert.deepEqual(Object.keys(elem!).sort(), [\r\n \"ECInstanceId\", \"ECClassId\", \"Model\", \"LastMod\", \"CodeSpec\", \"CodeScope\", \"FederationGuid\", \"$meta\",\r\n \"Category\", \"Origin\", \"Rotation\", \"BBoxLow\", \"BBoxHigh\", \"GeometryStream\",\r\n \"StrProp\", \"IntProp\", \"LongProp\", \"DblProp\", \"BoolProp\", \"DtProp\",\r\n \"Pt2dProp\", \"Pt3dProp\", \"StructProp\", \"IntArrProp\", \"StrArrProp\", \"StructArrProp\", \"RelatedElem\", \"BinProp\"\r\n ].sort());\r\n assert.deepEqual(Object.keys(elem!.$meta).sort(), [\"op\", \"tables\", \"changeIndexes\", \"stage\", \"instanceKey\", \"propFilter\", \"changeFetchedPropNames\", \"rowOptions\", \"isIndirectChange\"].sort());\r\n assert.equal(elem!.$meta.op, \"Inserted\");\r\n assert.equal(elem!.$meta.stage, \"New\");\r\n assert.equal(elem!.$meta.propFilter, PropertyFilter.All);\r\n assert.deepEqual(elem!.$meta.rowOptions, { abbreviateBlobs: false });\r\n assert.equal(elem!.$meta.isIndirectChange, false);\r\n });\r\n\r\n it(\"txn1 | rowOptions: classIdsToClassNames + useJsName\", () => {\r\n const instances = readTxn(rwIModel, txnId, undefined, { classIdsToClassNames: true, useJsName: true }, undefined, false);\r\n assert.equal(instances.length, 3);\r\n\r\n // --- instances[0]: DrawingModel Updated New ---\r\n const modelNew = instances.find((i) => i.id === drawingModelId && i.$meta.stage === \"New\");\r\n expect(modelNew).to.exist;\r\n assert.equal(modelNew!.id, drawingModelId);\r\n assert.equal(modelNew!.className, \"BisCore.DrawingModel\");\r\n assert.isString(modelNew!.lastMod);\r\n assert.isString(modelNew!.geometryGuid);\r\n assert.isUndefined(modelNew!.ECInstanceId);\r\n assert.deepEqual(Object.keys(modelNew!).sort(), [\"id\", \"className\", \"lastMod\", \"geometryGuid\", \"$meta\"].sort());\r\n assert.deepEqual(Object.keys(modelNew!.$meta).sort(), [\"op\", \"tables\", \"changeIndexes\", \"stage\", \"instanceKey\", \"propFilter\", \"changeFetchedPropNames\", \"rowOptions\", \"isIndirectChange\"].sort());\r\n assert.equal(modelNew!.$meta.op, \"Updated\");\r\n assert.equal(modelNew!.$meta.stage, \"New\");\r\n assert.equal(modelNew!.$meta.propFilter, PropertyFilter.All);\r\n assert.deepEqual([...modelNew!.$meta.changeFetchedPropNames].sort(), [\"ECInstanceId\", \"LastMod\", \"GeometryGuid\"].sort());\r\n assert.deepEqual(modelNew!.$meta.rowOptions, { classIdsToClassNames: true, useJsName: true });\r\n assert.equal(modelNew!.$meta.isIndirectChange, true);\r\n\r\n // --- instances[1]: DrawingModel Updated Old ---\r\n const modelOld = instances.find((i) => i.id === drawingModelId && i.$meta.stage === \"Old\");\r\n expect(modelOld).to.exist;\r\n assert.equal(modelOld!.id, drawingModelId);\r\n assert.equal(modelOld!.className, \"BisCore.DrawingModel\");\r\n assert.isUndefined(modelOld!.ECInstanceId);\r\n assert.deepEqual(Object.keys(modelOld!).sort(), [\"id\", \"className\", \"$meta\"].sort());\r\n assert.deepEqual(Object.keys(modelOld!.$meta).sort(), [\"op\", \"tables\", \"changeIndexes\", \"stage\", \"instanceKey\", \"propFilter\", \"changeFetchedPropNames\", \"rowOptions\", \"isIndirectChange\"].sort());\r\n assert.equal(modelOld!.$meta.op, \"Updated\");\r\n assert.equal(modelOld!.$meta.stage, \"Old\");\r\n assert.equal(modelOld!.$meta.propFilter, PropertyFilter.All);\r\n assert.deepEqual([...modelOld!.$meta.changeFetchedPropNames].sort(), [\"ECInstanceId\", \"LastMod\", \"GeometryGuid\"].sort());\r\n assert.deepEqual(modelOld!.$meta.rowOptions, { classIdsToClassNames: true, useJsName: true });\r\n assert.equal(modelOld!.$meta.isIndirectChange, true);\r\n\r\n // --- instances[2]: Test2dElement Inserted New (camelCase + class names) ---\r\n const elem = instances.find((i) => i.id === fullElementId && i.$meta.stage === \"New\");\r\n expect(elem).to.exist;\r\n assert.equal(elem!.id, fullElementId);\r\n assert.equal(elem!.className, \"TestDomain.Test2dElement\");\r\n assert.isUndefined(elem!.ECInstanceId);\r\n assert.isUndefined(elem!.ECClassId);\r\n assert.isUndefined(elem!.StrProp);\r\n assert.deepEqual(elem!.model, { id: drawingModelId, relClassName: \"BisCore.ModelContainsElements\" });\r\n assert.isString(elem!.lastMod);\r\n assert.deepEqual(elem!.codeSpec, { id: \"0x1\", relClassName: \"BisCore.CodeSpecSpecifiesCode\" });\r\n assert.deepEqual(elem!.codeScope, { id: \"0x1\", relClassName: \"BisCore.ElementScopesCode\" });\r\n assert.isString(elem!.federationGuid);\r\n assert.deepEqual(elem!.category, { id: drawingCategoryId, relClassName: \"BisCore.GeometricElement2dIsInCategory\" });\r\n assert.deepEqual(elem!.origin, { x: 0, y: 0 });\r\n assert.equal(elem!.rotation, 0);\r\n assert.deepEqual(elem!.bBoxLow, { x: -25, y: -25 });\r\n assert.deepEqual(elem!.bBoxHigh, { x: 15, y: 15 });\r\n assert.include(String(elem!.geometryStream), \"\\\"bytes\\\"\");\r\n assert.include(String(elem!.binProp), \"\\\"bytes\\\"\");\r\n assert.equal(elem!.strProp, \"hello\");\r\n assert.equal(elem!.intProp, 42);\r\n assert.equal(elem!.longProp, 9007199254740991);\r\n assert.closeTo(elem!.dblProp as number, 3.14159265358979, 1e-10);\r\n assert.equal(elem!.boolProp, true);\r\n assert.equal(elem!.dtProp, \"2024-01-15T12:00:00.000\");\r\n assert.deepEqual(elem!.pt2dProp, { x: 1.5, y: 2.5 });\r\n assert.deepEqual(elem!.pt3dProp, { x: 3, y: 4, z: 5 });\r\n assert.deepEqual(elem!.structProp, { x: 1, y: 2, z: 3, label: \"origin\", pt2d: { x: 0.5, y: 0.5 }, pt3d: { x: 1, y: 2, z: 3 } });\r\n assert.deepEqual(elem!.intArrProp, [10, 20, 30]);\r\n assert.deepEqual(elem!.strArrProp, [\"alpha\", \"beta\", \"gamma\"]);\r\n assert.equal(elem!.structArrProp.length, 2);\r\n assert.deepEqual(elem!.relatedElem, { id: drawingCategoryId, relClassName: \"TestDomain.Test2dUsesElement\" });\r\n assert.deepEqual(Object.keys(elem!).sort(), [\r\n \"id\", \"className\", \"model\", \"lastMod\", \"codeSpec\", \"codeScope\", \"federationGuid\", \"$meta\",\r\n \"category\", \"origin\", \"rotation\", \"bBoxLow\", \"bBoxHigh\", \"geometryStream\",\r\n \"strProp\", \"intProp\", \"longProp\", \"dblProp\", \"boolProp\", \"dtProp\",\r\n \"pt2dProp\", \"pt3dProp\", \"structProp\", \"intArrProp\", \"strArrProp\", \"structArrProp\", \"relatedElem\", \"binProp\"\r\n ].sort());\r\n assert.deepEqual(Object.keys(elem!.$meta).sort(), [\"op\", \"tables\", \"changeIndexes\", \"stage\", \"instanceKey\", \"propFilter\", \"changeFetchedPropNames\", \"rowOptions\", \"isIndirectChange\"].sort());\r\n assert.equal(elem!.$meta.op, \"Inserted\");\r\n assert.equal(elem!.$meta.stage, \"New\");\r\n assert.equal(elem!.$meta.propFilter, PropertyFilter.All);\r\n assert.deepEqual([...elem!.$meta.changeFetchedPropNames].sort(), [\r\n 'BBoxHigh', 'BBoxLow', 'BinProp', 'BoolProp', 'Category.Id',\r\n 'CodeScope.Id', 'CodeSpec.Id',\r\n 'CodeValue', 'DblProp', 'DtProp',\r\n 'ECClassId', 'ECInstanceId', 'FederationGuid',\r\n 'GeometryStream', 'IntArrProp', 'IntProp',\r\n 'JsonProperties', 'LastMod', 'LongProp',\r\n 'Model.Id', 'Origin', 'Parent', 'Pt2dProp', 'Pt3dProp', 'RelatedElem', 'Rotation', 'StrArrProp',\r\n 'StrProp', 'StructArrProp', 'StructProp.Label', 'StructProp.Pt2d', 'StructProp.Pt3d',\r\n 'StructProp.X', 'StructProp.Y', 'StructProp.Z', 'TypeDefinition', 'UserLabel'\r\n ].sort());\r\n assert.deepEqual(elem!.$meta.rowOptions, { classIdsToClassNames: true, useJsName: true });\r\n assert.equal(elem!.$meta.isIndirectChange, false);\r\n });\r\n\r\n it(\"txn1 insert-full | All_Properties | inMemoryCache vs sqliteBackedCache\", () => {\r\n const inMemoryInstances = readTxn(rwIModel, txnId);\r\n const sqliteBackedInstances = readTxn(rwIModel, txnId, undefined, undefined, undefined, false);\r\n assert.equal(inMemoryInstances.length, 3);\r\n assert.equal(sqliteBackedInstances.length, 3);\r\n\r\n // --- instances[0]: DrawingModel Updated New ---\r\n const inMemoryModelNew = inMemoryInstances.find((i) => i.ECInstanceId === drawingModelId && i.$meta.stage === \"New\");\r\n const sqliteBackedModelNew = sqliteBackedInstances.find((i) => i.ECInstanceId === drawingModelId && i.$meta.stage === \"New\");\r\n expect(inMemoryModelNew).to.exist;\r\n expect(sqliteBackedModelNew).to.exist;\r\n assert.equal(inMemoryModelNew!.ECInstanceId, sqliteBackedModelNew!.ECInstanceId);\r\n assert.equal(sqliteBackedModelNew!.ECClassId, inMemoryModelNew!.ECClassId);\r\n assert.equal(inMemoryModelNew!.LastMod, sqliteBackedModelNew!.LastMod);\r\n assert.equal(inMemoryModelNew!.GeometryGuid, sqliteBackedModelNew!.GeometryGuid);\r\n // Object.keys\r\n assert.deepEqual(Object.keys(inMemoryModelNew!).sort(), Object.keys(sqliteBackedModelNew!).sort());\r\n // $meta keys\r\n assert.deepEqual(Object.keys(inMemoryModelNew!.$meta).sort(), Object.keys(sqliteBackedModelNew!.$meta).sort());\r\n assert.equal(inMemoryModelNew!.$meta.op, sqliteBackedModelNew!.$meta.op);\r\n assert.equal(inMemoryModelNew!.$meta.stage, sqliteBackedModelNew!.$meta.stage);\r\n assert.deepEqual([...inMemoryModelNew!.$meta.tables].sort(), [...sqliteBackedModelNew!.$meta.tables].sort());\r\n assert.deepEqual([...inMemoryModelNew!.$meta.changeIndexes].sort(), [...sqliteBackedModelNew!.$meta.changeIndexes].sort());\r\n assert.isString(inMemoryModelNew!.$meta.instanceKey);\r\n assert.equal(inMemoryModelNew!.$meta.instanceKey.split(`-`).length, 2);\r\n assert.equal(inMemoryModelNew!.$meta.propFilter, sqliteBackedModelNew!.$meta.propFilter);\r\n assert.deepEqual([...inMemoryModelNew!.$meta.changeFetchedPropNames].sort(), [...sqliteBackedModelNew!.$meta.changeFetchedPropNames].sort());\r\n assert.deepEqual(inMemoryModelNew!.$meta.rowOptions, sqliteBackedModelNew!.$meta.rowOptions);\r\n assert.equal(inMemoryModelNew!.$meta.isIndirectChange, sqliteBackedModelNew!.$meta.isIndirectChange);\r\n\r\n // --- instances[1]: DrawingModel Updated Old ---\r\n const inMemoryModelOld = inMemoryInstances.find((i) => i.ECInstanceId === drawingModelId && i.$meta.stage === \"Old\");\r\n const sqliteBackedModelOld = sqliteBackedInstances.find((i) => i.ECInstanceId === drawingModelId && i.$meta.stage === \"Old\");\r\n expect(inMemoryModelOld).to.exist;\r\n expect(sqliteBackedModelOld).to.exist;\r\n assert.equal(inMemoryModelOld!.ECInstanceId, sqliteBackedModelOld!.ECInstanceId);\r\n assert.equal(sqliteBackedModelOld!.ECClassId, inMemoryModelOld!.ECClassId);\r\n // Object.keys\r\n assert.deepEqual(Object.keys(inMemoryModelOld!).sort(), Object.keys(sqliteBackedModelOld!).sort());\r\n // $meta keys\r\n assert.deepEqual(Object.keys(inMemoryModelOld!.$meta).sort(), Object.keys(sqliteBackedModelOld!.$meta).sort());\r\n assert.equal(inMemoryModelOld!.$meta.op, sqliteBackedModelOld!.$meta.op);\r\n assert.equal(inMemoryModelOld!.$meta.stage, sqliteBackedModelOld!.$meta.stage);\r\n assert.deepEqual([...inMemoryModelOld!.$meta.tables].sort(), [...sqliteBackedModelOld!.$meta.tables].sort());\r\n assert.equal(inMemoryModelOld!.$meta.propFilter, sqliteBackedModelOld!.$meta.propFilter);\r\n assert.deepEqual([...inMemoryModelOld!.$meta.changeFetchedPropNames].sort(), [...sqliteBackedModelOld!.$meta.changeFetchedPropNames].sort());\r\n assert.deepEqual(inMemoryModelOld!.$meta.rowOptions, sqliteBackedModelOld!.$meta.rowOptions);\r\n assert.equal(inMemoryModelOld!.$meta.isIndirectChange, sqliteBackedModelOld!.$meta.isIndirectChange);\r\n\r\n // --- instances[2]: Test2dElement Inserted New ---\r\n const inMemoryElem = inMemoryInstances.find((i) => i.ECInstanceId === fullElementId && i.$meta.stage === \"New\");\r\n const sqliteBackedElem = sqliteBackedInstances.find((i) => i.ECInstanceId === fullElementId && i.$meta.stage === \"New\");\r\n expect(inMemoryElem).to.exist;\r\n expect(sqliteBackedElem).to.exist;\r\n assert.equal(inMemoryElem!.ECInstanceId, sqliteBackedElem!.ECInstanceId);\r\n assert.equal(sqliteBackedElem!.ECClassId, inMemoryElem!.ECClassId);\r\n assert.equal(inMemoryElem!.Model.Id, sqliteBackedElem!.Model.Id);\r\n assert.equal(inMemoryElem!.Model.RelECClassId, sqliteBackedElem!.Model.RelECClassId);\r\n assert.equal(inMemoryElem!.LastMod, sqliteBackedElem!.LastMod);\r\n assert.equal(inMemoryElem!.CodeSpec.Id, sqliteBackedElem!.CodeSpec.Id);\r\n assert.equal(inMemoryElem!.CodeSpec.RelECClassId, sqliteBackedElem!.CodeSpec.RelECClassId);\r\n\r\n assert.equal(inMemoryElem!.CodeScope.Id, sqliteBackedElem!.CodeScope.Id);\r\n assert.equal(inMemoryElem!.CodeScope.RelECClassId, sqliteBackedElem!.CodeScope.RelECClassId);\r\n assert.equal(inMemoryElem!.FederationGuid, sqliteBackedElem!.FederationGuid);\r\n\r\n assert.equal(inMemoryElem!.Category.Id, sqliteBackedElem!.Category.Id);\r\n assert.equal(inMemoryElem!.Category.RelECClassId, sqliteBackedElem!.Category.RelECClassId);\r\n assert.deepEqual(inMemoryElem!.Origin, sqliteBackedElem!.Origin);\r\n assert.equal(inMemoryElem!.Rotation, sqliteBackedElem!.Rotation);\r\n assert.deepEqual(inMemoryElem!.BBoxLow, sqliteBackedElem!.BBoxLow);\r\n assert.deepEqual(inMemoryElem!.BBoxHigh, sqliteBackedElem!.BBoxHigh);\r\n assert.equal(inMemoryElem!.GeometryStream, sqliteBackedElem!.GeometryStream);\r\n assert.equal(inMemoryElem!.BinProp, sqliteBackedElem!.BinProp);\r\n assert.equal(inMemoryElem!.StrProp, sqliteBackedElem!.StrProp);\r\n assert.equal(inMemoryElem!.IntProp, sqliteBackedElem!.IntProp);\r\n assert.equal(inMemoryElem!.LongProp, sqliteBackedElem!.LongProp);\r\n assert.closeTo(inMemoryElem!.DblProp as number, sqliteBackedElem!.DblProp as number, 1e-10);\r\n assert.equal(inMemoryElem!.BoolProp, sqliteBackedElem!.BoolProp);\r\n assert.equal(inMemoryElem!.DtProp, sqliteBackedElem!.DtProp);\r\n assert.deepEqual(inMemoryElem!.Pt2dProp, sqliteBackedElem!.Pt2dProp);\r\n assert.deepEqual(inMemoryElem!.Pt3dProp, sqliteBackedElem!.Pt3dProp);\r\n assert.deepEqual(inMemoryElem!.StructProp, sqliteBackedElem!.StructProp);\r\n assert.deepEqual(inMemoryElem!.IntArrProp, sqliteBackedElem!.IntArrProp);\r\n assert.deepEqual(inMemoryElem!.StrArrProp, sqliteBackedElem!.StrArrProp);\r\n assert.deepEqual(inMemoryElem!.StructArrProp, sqliteBackedElem!.StructArrProp);\r\n assert.equal(inMemoryElem!.RelatedElem.Id, sqliteBackedElem!.RelatedElem.Id);\r\n assert.equal(inMemoryElem!.RelatedElem.RelECClassId, sqliteBackedElem!.RelatedElem.RelECClassId);\r\n // Object.keys\r\n assert.deepEqual(Object.keys(inMemoryElem!).sort(), Object.keys(sqliteBackedElem!).sort());\r\n // $meta keys\r\n assert.deepEqual(Object.keys(inMemoryElem!.$meta).sort(), Object.keys(sqliteBackedElem!.$meta).sort());\r\n assert.equal(inMemoryElem!.$meta.op, sqliteBackedElem!.$meta.op);\r\n assert.equal(inMemoryElem!.$meta.stage, sqliteBackedElem!.$meta.stage);\r\n assert.deepEqual([...inMemoryElem!.$meta.tables].sort(), [...sqliteBackedElem!.$meta.tables].sort());\r\n assert.deepEqual([...inMemoryElem!.$meta.changeIndexes].sort(), [...sqliteBackedElem!.$meta.changeIndexes].sort());\r\n assert.equal(inMemoryElem!.$meta.instanceKey, sqliteBackedElem!.$meta.instanceKey);\r\n assert.deepEqual([...inMemoryElem!.$meta.changeFetchedPropNames].sort(), [...sqliteBackedElem!.$meta.changeFetchedPropNames].sort());\r\n assert.deepEqual(inMemoryElem!.$meta.rowOptions, sqliteBackedElem!.$meta.rowOptions);\r\n assert.equal(inMemoryElem!.$meta.isIndirectChange, sqliteBackedElem!.$meta.isIndirectChange);\r\n });\r\n it(\"should throw error if tried to fetch changeset metadata values before stepping\", () => {\r\n using reader = ChangesetReader.openTxn({ db: rwIModel, txnId });\r\n expect(() => reader.isECTable).to.throw();\r\n expect(() => reader.isIndirectChange).to.throw();\r\n expect(() => reader.tableName).to.throw();\r\n expect(() => reader.op).to.throw();\r\n assert.isUndefined(reader.inserted);\r\n assert.isUndefined(reader.deleted);\r\n reader.close();\r\n });\r\n it(\"should throw error if tried to fetch changeset metadata values after stepping past the end\", () => {\r\n using reader = ChangesetReader.openTxn({ db: rwIModel, txnId });\r\n while (reader.step()) { }\r\n assert.equal(reader.step(), false);\r\n expect(() => reader.isECTable).to.throw();\r\n expect(() => reader.isIndirectChange).to.throw();\r\n expect(() => reader.tableName).to.throw();\r\n expect(() => reader.op).to.throw();\r\n assert.isUndefined(reader.inserted);\r\n assert.isUndefined(reader.deleted);\r\n reader.close();\r\n });\r\n\r\n it(\"Checking non unified values\", () => {\r\n using reader = ChangesetReader.openTxn({ db: rwIModel, txnId });\r\n\r\n assert.isTrue(reader.step());\r\n assert.isTrue(reader.isECTable);\r\n assert.isFalse(reader.isIndirectChange);\r\n assert.equal(reader.tableName, \"bis_Element\");\r\n assert.equal(reader.op, \"Inserted\");\r\n assert.isDefined(reader.inserted);\r\n assert.isUndefined(reader.deleted);\r\n\r\n assert.isTrue(reader.step());\r\n assert.isTrue(reader.isECTable);\r\n assert.isFalse(reader.isIndirectChange);\r\n assert.equal(reader.tableName, \"bis_GeometricElement2d\");\r\n assert.equal(reader.op, \"Inserted\");\r\n assert.isDefined(reader.inserted);\r\n assert.isUndefined(reader.deleted);\r\n\r\n assert.isTrue(reader.step());\r\n assert.isTrue(reader.isECTable);\r\n assert.isTrue(reader.isIndirectChange);\r\n assert.equal(reader.tableName, \"bis_Model\");\r\n assert.equal(reader.op, \"Updated\");\r\n assert.isDefined(reader.inserted);\r\n assert.isDefined(reader.deleted);\r\n\r\n assert.isFalse(reader.step());\r\n });\r\n});\r\n\r\ndescribe(\"ChangesetReader insert-partial\", () => {\r\n let rwIModel: BriefcaseDb;\r\n let partialElementId: Id64String;\r\n let drawingModelId: Id64String;\r\n let drawingCategoryId: Id64String;\r\n let txnId: string;\r\n let txn: EditTxn;\r\n\r\n before(async () => {\r\n HubMock.startup(\"ECChangesetInsertPartial\", KnownTestLocations.outputDir);\r\n const adminToken = \"super manager token\";\r\n const iTwinId = HubMock.iTwinId;\r\n const rwIModelId = await HubMock.createNewIModel({ iTwinId, iModelName: \"insertPartial\", description: \"insertPartial\", accessToken: adminToken });\r\n rwIModel = await HubWrappers.downloadAndOpenBriefcase({ iTwinId, iModelId: rwIModelId, accessToken: adminToken });\r\n txn = startTestTxn(rwIModel, \"ChangesetReader insert-partial\");\r\n // Txn 1: import schema + drawing model setup, then push\r\n const schema = `<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n <ECSchema schemaName=\"TestDomain\" alias=\"ts\" version=\"01.00\" xmlns=\"http://www.bentley.com/schemas/Bentley.ECXML.3.1\">\r\n <ECSchemaReference name=\"BisCore\" version=\"01.00\" alias=\"bis\"/>\r\n <!-- Rich struct: scalar fields + nested point2d/3d sub-properties -->\r\n <ECStructClass typeName=\"RichPoint\" modifier=\"Sealed\">\r\n <ECProperty propertyName=\"X\" typeName=\"double\"/>\r\n <ECProperty propertyName=\"Y\" typeName=\"double\"/>\r\n <ECProperty propertyName=\"Z\" typeName=\"double\"/>\r\n <ECProperty propertyName=\"Label\" typeName=\"string\"/>\r\n <ECProperty propertyName=\"Pt2d\" typeName=\"point2d\"/>\r\n <ECProperty propertyName=\"Pt3d\" typeName=\"point3d\"/>\r\n </ECStructClass>\r\n <!-- Relationship used by the RelatedElem navigation property -->\r\n <ECRelationshipClass typeName=\"Test2dUsesElement\" strength=\"referencing\" modifier=\"None\">\r\n <Source multiplicity=\"(0..*)\" roleLabel=\"uses\" polymorphic=\"true\"><Class class=\"Test2dElement\"/></Source>\r\n <Target multiplicity=\"(0..1)\" roleLabel=\"is used by\" polymorphic=\"true\"><Class class=\"bis:Element\"/></Target>\r\n </ECRelationshipClass>\r\n <ECEntityClass typeName=\"Test2dElement\">\r\n <BaseClass>bis:GraphicalElement2d</BaseClass>\r\n <!-- Primitives -->\r\n <ECProperty propertyName=\"StrProp\" typeName=\"string\"/>\r\n <ECProperty propertyName=\"IntProp\" typeName=\"int\"/>\r\n <ECProperty propertyName=\"LongProp\" typeName=\"long\"/>\r\n <ECProperty propertyName=\"DblProp\" typeName=\"double\"/>\r\n <ECProperty propertyName=\"BoolProp\" typeName=\"boolean\"/>\r\n <ECProperty propertyName=\"DtProp\" typeName=\"dateTime\"/>\r\n <ECProperty propertyName=\"BinProp\" typeName=\"binary\"/>\r\n <!-- Geometric primitives -->\r\n <ECProperty propertyName=\"Pt2dProp\" typeName=\"point2d\"/>\r\n <ECProperty propertyName=\"Pt3dProp\" typeName=\"point3d\"/>\r\n <!-- Struct, arrays -->\r\n <ECStructProperty propertyName=\"StructProp\" typeName=\"RichPoint\"/>\r\n <ECArrayProperty propertyName=\"IntArrProp\" typeName=\"int\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\r\n <ECArrayProperty propertyName=\"StrArrProp\" typeName=\"string\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\r\n <ECStructArrayProperty propertyName=\"StructArrProp\" typeName=\"RichPoint\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\r\n <!-- Navigation property -->\r\n <ECNavigationProperty propertyName=\"RelatedElem\" relationshipName=\"Test2dUsesElement\" direction=\"forward\"/>\r\n </ECEntityClass>\r\n </ECSchema>`;\r\n await importSchemaStrings(txn, [schema]);\r\n rwIModel.channels.addAllowedChannel(ChannelControl.sharedChannelName);\r\n\r\n await rwIModel.locks.acquireLocks({ shared: IModel.dictionaryId });\r\n const codeProps = Code.createEmpty();\r\n codeProps.value = \"DrillDownDrawing\";\r\n [, drawingModelId] = IModelTestUtils.createAndInsertDrawingPartitionAndModel(txn, codeProps, true);\r\n\r\n const foundCat = DrawingCategory.queryCategoryIdByName(rwIModel, IModel.dictionaryId, \"DrillDownCategory\");\r\n drawingCategoryId = foundCat ?? DrawingCategory.insert(txn, IModel.dictionaryId, \"DrillDownCategory\",\r\n new SubCategoryAppearance({ color: ColorDef.fromString(\"rgb(255,0,0)\").toJSON() }));\r\n\r\n txn.saveChanges(\"setup\");\r\n\r\n // Wait so that LastMod on bis_Model gets a distinct timestamp before the insert txn\r\n await new Promise((resolve) => setTimeout(resolve, 300));\r\n // Txn 2: insert PARTIAL element only mandatory props\r\n await rwIModel.locks.acquireLocks({ shared: drawingModelId });\r\n partialElementId = txn.insertElement({\r\n classFullName: \"TestDomain:Test2dElement\",\r\n model: drawingModelId,\r\n category: drawingCategoryId,\r\n code: Code.createEmpty(),\r\n // StrProp, IntProp, LongProp, DblProp, BoolProp, DtProp, BinProp intentionally absent\r\n } as any);\r\n txn.saveChanges(\"insert partial element\");\r\n txnId = rwIModel.txns.getLastSavedTxnProps()!.id;\r\n });\r\n\r\n after(() => {\r\n txn.end();\r\n rwIModel?.close();\r\n HubMock.shutdown();\r\n });\r\n\r\n it(\"txn2 insert-partial | All_Properties | default rowOptions\", () => {\r\n const instances = readTxn(rwIModel, txnId);\r\n assert.equal(instances.length, 3);\r\n\r\n // --- instances[0]: DrawingModel Updated New ---\r\n const modelNew = instances.find((i) => i.ECInstanceId === drawingModelId && i.$meta.stage === \"New\");\r\n expect(modelNew).to.exist;\r\n assert.equal(modelNew!.ECInstanceId, drawingModelId);\r\n assert.equal(\"BisCore:DrawingModel\", rwIModel.getClassNameFromId(modelNew!.ECClassId));\r\n assert.isString(modelNew!.LastMod);\r\n assert.isString(modelNew!.GeometryGuid);\r\n assert.deepEqual(Object.keys(modelNew!).sort(), [\"ECInstanceId\", \"ECClassId\", \"LastMod\", \"GeometryGuid\", \"$meta\"].sort());\r\n assert.deepEqual(Object.keys(modelNew!.$meta).sort(), [\"op\", \"tables\", \"changeIndexes\", \"stage\", \"instanceKey\", \"propFilter\", \"changeFetchedPropNames\", \"rowOptions\", \"isIndirectChange\"].sort());\r\n assert.equal(modelNew!.$meta.op, \"Updated\");\r\n assert.equal(modelNew!.$meta.stage, \"New\");\r\n assert.equal(modelNew!.$meta.propFilter, PropertyFilter.All);\r\n assert.deepEqual([...modelNew!.$meta.changeFetchedPropNames].sort(), [\"ECInstanceId\", \"LastMod\", \"GeometryGuid\"].sort());\r\n assert.deepEqual(modelNew!.$meta.rowOptions, {});\r\n assert.equal(modelNew!.$meta.isIndirectChange, true);\r\n\r\n // --- instances[1]: DrawingModel Updated Old ---\r\n const modelOld = instances.find((i) => i.ECInstanceId === drawingModelId && i.$meta.stage === \"Old\");\r\n expect(modelOld).to.exist;\r\n assert.equal(modelOld!.ECInstanceId, drawingModelId);\r\n assert.equal(\"BisCore:DrawingModel\", rwIModel.getClassNameFromId(modelOld!.ECClassId));\r\n // Model Old has LastMod and GeometryGuid when previous txn's model New values survive\r\n assert.deepEqual(Object.keys(modelOld!).sort(), [\"ECInstanceId\", \"ECClassId\", \"$meta\"].sort());\r\n assert.deepEqual(Object.keys(modelOld!.$meta).sort(), [\"op\", \"tables\", \"changeIndexes\", \"stage\", \"instanceKey\", \"propFilter\", \"changeFetchedPropNames\", \"rowOptions\", \"isIndirectChange\"].sort());\r\n assert.equal(modelOld!.$meta.op, \"Updated\");\r\n assert.equal(modelOld!.$meta.stage, \"Old\");\r\n assert.equal(modelOld!.$meta.propFilter, PropertyFilter.All);\r\n assert.deepEqual([...modelOld!.$meta.changeFetchedPropNames].sort(), [\"ECInstanceId\", \"LastMod\", \"GeometryGuid\"].sort());\r\n assert.deepEqual(modelOld!.$meta.rowOptions, {});\r\n assert.equal(modelOld!.$meta.isIndirectChange, true);\r\n\r\n // --- instances[2]: Test2dElement (partial) Inserted New ---\r\n const elem = instances.find((i) => i.ECInstanceId === partialElementId && i.$meta.stage === \"New\");\r\n expect(elem).to.exist;\r\n assert.equal(elem!.ECInstanceId, partialElementId);\r\n assert.equal(\"TestDomain:Test2dElement\", rwIModel.getClassNameFromId(elem!.ECClassId));\r\n assert.equal(elem!.Model.Id, drawingModelId);\r\n assert.equal(rwIModel.getClassNameFromId(elem!.Model.RelECClassId), \"BisCore:ModelContainsElements\");\r\n assert.isString(elem!.LastMod);\r\n assert.equal(elem!.CodeSpec.Id, \"0x1\");\r\n assert.equal(rwIModel.getClassNameFromId(elem!.CodeSpec.RelECClassId), \"BisCore:CodeSpecSpecifiesCode\");\r\n\r\n assert.equal(elem!.CodeScope.Id, \"0x1\");\r\n assert.equal(rwIModel.getClassNameFromId(elem!.CodeScope.RelECClassId), \"BisCore:ElementScopesCode\");\r\n assert.isString(elem!.FederationGuid);\r\n assert.equal(elem!.Category.Id, drawingCategoryId);\r\n assert.equal(rwIModel.getClassNameFromId(elem!.Category.RelECClassId), \"BisCore:GeometricElement2dIsInCategory\");\r\n // No custom props on the partial element\r\n assert.isUndefined(elem!.StrProp);\r\n assert.isUndefined(elem!.IntProp);\r\n assert.isUndefined(elem!.LongProp);\r\n assert.isUndefined(elem!.DblProp);\r\n assert.isUndefined(elem!.BoolProp);\r\n assert.isUndefined(elem!.DtProp);\r\n assert.isUndefined(elem!.Pt2dProp);\r\n assert.isUndefined(elem!.Pt3dProp);\r\n assert.isUndefined(elem!.StructProp);\r\n assert.isUndefined(elem!.IntArrProp);\r\n assert.isUndefined(elem!.StrArrProp);\r\n assert.isUndefined(elem!.StructArrProp);\r\n assert.isUndefined(elem!.RelatedElem);\r\n assert.isUndefined(elem!.BinProp);\r\n // Object.keys — partial insert: only BIS columns present (no 2d geometry columns either)\r\n assert.deepEqual(Object.keys(elem!).sort(), [\r\n \"ECInstanceId\", \"ECClassId\", \"Model\", \"LastMod\", \"CodeSpec\", \"CodeScope\", \"FederationGuid\", \"$meta\",\r\n \"Category\",\r\n ].sort());\r\n // $meta keys\r\n assert.deepEqual(Object.keys(elem!.$meta).sort(), [\"op\", \"tables\", \"changeIndexes\", \"stage\", \"instanceKey\", \"propFilter\", \"changeFetchedPropNames\", \"rowOptions\", \"isIndirectChange\"].sort());\r\n assert.equal(elem!.$meta.op, \"Inserted\");\r\n assert.equal(elem!.$meta.stage, \"New\");\r\n assert.deepEqual([...elem!.$meta.tables].sort(), [\"bis_Element\", \"bis_GeometricElement2d\"].sort());\r\n assert.deepEqual([...elem!.$meta.changeIndexes].sort(), [1, 2].sort());\r\n assert.isString(elem!.$meta.instanceKey);\r\n assert.equal(elem!.$meta.instanceKey.split(`-`).length, 2);\r\n assert.equal(elem!.$meta.propFilter, PropertyFilter.All);\r\n assert.deepEqual([...elem!.$meta.changeFetchedPropNames].sort(), [\r\n 'ECInstanceId', 'ECClassId', 'Model.Id', 'LastMod', 'CodeSpec.Id',\r\n 'CodeScope.Id', 'CodeValue', 'UserLabel', 'Parent', 'FederationGuid',\r\n 'JsonProperties', 'Category.Id', 'Origin', 'Rotation', 'BBoxLow', 'BBoxHigh',\r\n 'GeometryStream', 'TypeDefinition', 'StrProp', 'IntProp', 'LongProp',\r\n 'DblProp', 'BoolProp', 'DtProp', 'BinProp', 'Pt2dProp', 'Pt3dProp',\r\n 'StructProp.X', 'StructProp.Y', 'StructProp.Z', 'StructProp.Label',\r\n 'StructProp.Pt2d', 'StructProp.Pt3d', 'IntArrProp', 'StrArrProp',\r\n 'StructArrProp', 'RelatedElem'\r\n ].sort());\r\n assert.deepEqual(elem!.$meta.rowOptions, {});\r\n assert.isUndefined(elem!.BinProp);\r\n assert.equal(elem!.$meta.isIndirectChange, false);\r\n\r\n });\r\n\r\n it(\"txn2 insert-partial | All_Properties | default rowOptions | invert\", () => {\r\n const instances = readTxn(rwIModel, txnId, undefined, undefined, true);\r\n assert.equal(instances.length, 3);\r\n\r\n // --- instances[0]: DrawingModel Updated New ---\r\n const modelNew = instances.find((i) => i.ECInstanceId === drawingModelId && i.$meta.stage === \"New\");\r\n expect(modelNew).to.exist;\r\n assert.equal(modelNew!.ECInstanceId, drawingModelId);\r\n assert.equal(\"BisCore:DrawingModel\", rwIModel.getClassNameFromId(modelNew!.ECClassId));\r\n assert.isUndefined(modelNew!.LastMod);\r\n assert.isUndefined(modelNew!.GeometryGuid);\r\n assert.deepEqual(Object.keys(modelNew!).sort(), [\"ECInstanceId\", \"ECClassId\", \"$meta\"].sort());\r\n assert.deepEqual(Object.keys(modelNew!.$meta).sort(), [\"op\", \"tables\", \"changeIndexes\", \"stage\", \"instanceKey\", \"propFilter\", \"changeFetchedPropNames\", \"rowOptions\", \"isIndirectChange\"].sort());\r\n assert.equal(modelNew!.$meta.op, \"Updated\");\r\n assert.equal(modelNew!.$meta.stage, \"New\");\r\n assert.equal(modelNew!.$meta.propFilter, PropertyFilter.All);\r\n assert.deepEqual([...modelNew!.$meta.changeFetchedPropNames].sort(), [\"ECInstanceId\", \"LastMod\", \"GeometryGuid\"].sort());\r\n assert.deepEqual(modelNew!.$meta.rowOptions, {});\r\n assert.equal(modelNew!.$meta.isIndirectChange, true);\r\n\r\n // --- instances[1]: DrawingModel Updated Old ---\r\n const modelOld = instances.find((i) => i.ECInstanceId === drawingModelId && i.$meta.stage === \"Old\");\r\n expect(modelOld).to.exist;\r\n assert.equal(modelOld!.ECInstanceId, drawingModelId);\r\n assert.equal(\"BisCore:DrawingModel\", rwIModel.getClassNameFromId(modelOld!.ECClassId));\r\n assert.isString(modelOld!.LastMod);\r\n assert.isString(modelOld!.GeometryGuid);\r\n // Model Old has LastMod and GeometryGuid when previous txn's model New values survive\r\n assert.deepEqual(Object.keys(modelOld!).sort(), [\"ECInstanceId\", \"ECClassId\", \"$meta\", \"LastMod\", \"GeometryGuid\"].sort());\r\n assert.deepEqual(Object.keys(modelOld!.$meta).sort(), [\"op\", \"tables\", \"changeIndexes\", \"stage\", \"instanceKey\", \"propFilter\", \"changeFetchedPropNames\", \"rowOptions\", \"isIndirectChange\"].sort());\r\n assert.equal(modelOld!.$meta.op, \"Updated\");\r\n assert.equal(modelOld!.$meta.stage, \"Old\");\r\n assert.equal(modelOld!.$meta.propFilter, PropertyFilter.All);\r\n assert.deepEqual([...modelOld!.$meta.changeFetchedPropNames].sort(), [\"ECInstanceId\", \"LastMod\", \"GeometryGuid\"].sort());\r\n assert.deepEqual(modelOld!.$meta.rowOptions, {});\r\n assert.equal(modelOld!.$meta.isIndirectChange, true);\r\n\r\n const elem = instances.find((i) => i.ECInstanceId === partialElementId && i.$meta.stage === \"Old\");\r\n expect(elem).to.exist;\r\n assert.equal(elem!.ECInstanceId, partialElementId);\r\n assert.equal(\"TestDomain:Test2dElement\", rwIModel.getClassNameFromId(elem!.ECClassId));\r\n assert.equal(elem!.Model.Id, drawingModelId);\r\n assert.equal(rwIModel.getClassNameFromId(elem!.Model.RelECClassId), \"BisCore:ModelContainsElements\");\r\n assert.isString(elem!.LastMod);\r\n assert.equal(elem!.CodeSpec.Id, \"0x1\");\r\n assert.equal(rwIModel.getClassNameFromId(elem!.CodeSpec.RelECClassId), \"BisCore:CodeSpecSpecifiesCode\");\r\n\r\n assert.equal(elem!.CodeScope.Id, \"0x1\");\r\n assert.equal(rwIModel.getClassNameFromId(elem!.CodeScope.RelECClassId), \"BisCore:ElementScopesCode\");\r\n assert.isString(elem!.FederationGuid);\r\n assert.equal(elem!.Category.Id, drawingCategoryId);\r\n assert.equal(rwIModel.getClassNameFromId(elem!.Category.RelECClassId), \"BisCore:GeometricElement2dIsInCategory\");\r\n // No custom props on the partial element\r\n assert.isUndefined(elem!.StrProp);\r\n assert.isUndefined(elem!.IntProp);\r\n assert.isUndefined(elem!.LongProp);\r\n assert.isUndefined(elem!.DblProp);\r\n assert.isUndefined(elem!.BoolProp);\r\n assert.isUndefined(elem!.DtProp);\r\n assert.isUndefined(elem!.Pt2dProp);\r\n assert.isUndefined(elem!.Pt3dProp);\r\n assert.isUndefined(elem!.StructProp);\r\n assert.isUndefined(elem!.IntArrProp);\r\n assert.isUndefined(elem!.StrArrProp);\r\n assert.isUndefined(elem!.StructArrProp);\r\n assert.isUndefined(elem!.RelatedElem);\r\n assert.isUndefined(elem!.BinProp);\r\n // Object.keys — partial insert: only BIS columns present (no 2d geometry columns either)\r\n assert.deepEqual(Object.keys(elem!).sort(), [\r\n \"ECInstanceId\", \"ECClassId\", \"Model\", \"LastMod\", \"CodeSpec\", \"CodeScope\", \"FederationGuid\", \"$meta\",\r\n \"Category\",\r\n ].sort());\r\n // $meta keys\r\n assert.deepEqual(Object.keys(elem!.$meta).sort(), [\"op\", \"tables\", \"changeIndexes\", \"stage\", \"instanceKey\", \"propFilter\", \"changeFetchedPropNames\", \"rowOptions\", \"isIndirectChange\"].sort());\r\n assert.equal(elem!.$meta.op, \"Deleted\");\r\n assert.equal(elem!.$meta.stage, \"Old\");\r\n assert.deepEqual([...elem!.$meta.tables].sort(), [\"bis_Element\", \"bis_GeometricElement2d\"].sort());\r\n assert.deepEqual([...elem!.$meta.changeIndexes].sort(), [1, 2].sort());\r\n assert.isString(elem!.$meta.instanceKey);\r\n assert.equal(elem!.$meta.instanceKey.split(`-`).length, 2);\r\n assert.equal(elem!.$meta.propFilter, PropertyFilter.All);\r\n assert.deepEqual([...elem!.$meta.changeFetchedPropNames].sort(), [\r\n 'ECInstanceId', 'ECClassId', 'Model.Id', 'LastMod', 'CodeSpec.Id',\r\n 'CodeScope.Id', 'CodeValue', 'UserLabel', 'Parent', 'FederationGuid',\r\n 'JsonProperties', 'Category.Id', 'Origin', 'Rotation', 'BBoxLow', 'BBoxHigh',\r\n 'GeometryStream', 'TypeDefinition', 'StrProp', 'IntProp', 'LongProp',\r\n 'DblProp', 'BoolProp', 'DtProp', 'BinProp', 'Pt2dProp', 'Pt3dProp',\r\n 'StructProp.X', 'StructProp.Y', 'StructProp.Z', 'StructProp.Label',\r\n 'StructProp.Pt2d', 'StructProp.Pt3d', 'IntArrProp', 'StrArrProp',\r\n 'StructArrProp', 'RelatedElem'\r\n ].sort());\r\n assert.deepEqual(elem!.$meta.rowOptions, {});\r\n assert.isUndefined(elem!.BinProp);\r\n assert.equal(elem!.$meta.isIndirectChange, false);\r\n\r\n });\r\n\r\n it(\"txn2 insert-partial | Bis_Element_Properties\", () => {\r\n const instances = readTxn(rwIModel, txnId, PropertyFilter.BisCoreElement, { classIdsToClassNames: true });\r\n assert.equal(instances.length, 3);\r\n\r\n // --- instances[0]: DrawingModel Updated New ---\r\n const modelNew = instances.find((i) => i.ECInstanceId === drawingModelId && i.$meta.stage === \"New\");\r\n expect(modelNew).to.exist;\r\n assert.equal(modelNew!.ECInstanceId, drawingModelId);\r\n assert.equal(modelNew!.ECClassId, \"BisCore.DrawingModel\");\r\n assert.isString(modelNew!.LastMod);\r\n assert.isString(modelNew!.GeometryGuid);\r\n assert.deepEqual(Object.keys(modelNew!).sort(), [\"ECInstanceId\", \"ECClassId\", \"LastMod\", \"GeometryGuid\", \"$meta\"].sort());\r\n assert.deepEqual(Object.keys(modelNew!.$meta).sort(), [\"op\", \"tables\", \"changeIndexes\", \"stage\", \"instanceKey\", \"propFilter\", \"changeFetchedPropNames\", \"rowOptions\", \"isIndirectChange\"].sort());\r\n assert.equal(modelNew!.$meta.op, \"Updated\");\r\n assert.equal(modelNew!.$meta.stage, \"New\");\r\n assert.equal(modelNew!.$meta.propFilter, PropertyFilter.BisCoreElement);\r\n assert.deepEqual([...modelNew!.$meta.changeFetchedPropNames].sort(), [\"ECInstanceId\", \"LastMod\", \"GeometryGuid\"].sort());\r\n assert.deepEqual(modelNew!.$meta.rowOptions, { classIdsToClassNames: true });\r\n assert.equal(modelNew!.$meta.isIndirectChange, true);\r\n\r\n // --- instances[1]: DrawingModel Updated Old ---\r\n const modelOld = instances.find((i) => i.ECInstanceId === drawingModelId && i.$meta.stage === \"Old\");\r\n expect(modelOld).to.exist;\r\n assert.equal(modelOld!.ECInstanceId, drawingModelId);\r\n assert.equal(\"BisCore.DrawingModel\", modelOld!.ECClassId);\r\n assert.deepEqual(Object.keys(modelOld!).sort(), [\"ECInstanceId\", \"ECClassId\", \"$meta\"].sort());\r\n assert.deepEqual(Object.keys(modelOld!.$meta).sort(), [\"op\", \"tables\", \"changeIndexes\", \"stage\", \"instanceKey\", \"propFilter\", \"changeFetchedPropNames\", \"rowOptions\", \"isIndirectChange\"].sort());\r\n assert.equal(modelOld!.$meta.op, \"Updated\");\r\n assert.equal(modelOld!.$meta.stage, \"Old\");\r\n assert.equal(modelOld!.$meta.propFilter, PropertyFilter.BisCoreElement);\r\n assert.deepEqual([...modelOld!.$meta.changeFetchedPropNames].sort(), [\"ECInstanceId\", \"LastMod\", \"GeometryGuid\"].sort());\r\n assert.deepEqual(modelOld!.$meta.rowOptions, { classIdsToClassNames: true });\r\n assert.equal(modelOld!.$meta.isIndirectChange, true);\r\n\r\n // --- instances[2]: Test2dElement (partial) Inserted New ---\r\n const elem = instances.find((i) => i.ECInstanceId === partialElementId && i.$meta.stage === \"New\");\r\n expect(elem).to.exist;\r\n assert.equal(elem!.ECInstanceId, partialElementId);\r\n assert.equal(elem!.ECClassId, \"TestDomain.Test2dElement\");\r\n assert.isUndefined(elem!.StrProp);\r\n assert.isUndefined(elem!.IntProp);\r\n expect(elem!.Model).to.exist;\r\n expect(elem!.LastMod).to.exist;\r\n expect(elem!.CodeSpec).to.exist;\r\n expect(elem!.CodeScope).to.exist;\r\n expect(elem!.FederationGuid).to.exist;\r\n assert.deepEqual(Object.keys(elem!).sort(), [\"ECInstanceId\", \"ECClassId\", \"Model\", \"LastMod\", \"CodeSpec\", \"CodeScope\", \"FederationGuid\", \"$meta\"].sort());\r\n assert.deepEqual(Object.keys(elem!.$meta).sort(), [\"op\", \"tables\", \"changeIndexes\", \"stage\", \"instanceKey\", \"propFilter\", \"changeFetchedPropNames\", \"rowOptions\", \"isIndirectChange\"].sort());\r\n assert.equal(elem!.$meta.op, \"Inserted\");\r\n assert.equal(elem!.$meta.stage, \"New\");\r\n assert.deepEqual([...elem!.$meta.tables].sort(), [\"bis_Element\", \"bis_GeometricElement2d\"].sort());\r\n assert.deepEqual([...elem!.$meta.changeIndexes].sort(), [1, 2].sort());\r\n assert.isString(elem!.$meta.instanceKey);\r\n assert.equal(elem!.$meta.instanceKey.split(`-`).length, 2);\r\n assert.equal(elem!.$meta.propFilter, PropertyFilter.BisCoreElement);\r\n assert.deepEqual([...elem!.$meta.changeFetchedPropNames].sort(), [\"ECInstanceId\", \"ECClassId\", \"CodeScope.Id\",\r\n \"CodeSpec.Id\", \"CodeValue\", \"FederationGuid\", \"JsonProperties\", \"LastMod\", \"Model.Id\", \"Parent\", \"UserLabel\"].sort());\r\n assert.deepEqual(elem!.$meta.rowOptions, { classIdsToClassNames: true });\r\n assert.equal(elem!.$meta.isIndirectChange, false);\r\n });\r\n\r\n it(\"txn2 insert-partial | Instance_Key\", () => {\r\n const instances = readTxn(rwIModel, txnId, PropertyFilter.InstanceKey);\r\n assert.equal(instances.length, 3);\r\n\r\n // --- instances[0]: DrawingModel Updated New ---\r\n const modelNew = instances.find((i) => i.ECInstanceId === drawingModelId && i.$meta.stage === \"New\");\r\n expect(modelNew).to.exist;\r\n assert.equal(modelNew!.ECInstanceId, drawingModelId);\r\n assert.equal(\"BisCore:DrawingModel\", rwIModel.getClassNameFromId(modelNew!.ECClassId));\r\n assert.deepEqual(Object.keys(modelNew!).sort(), [\"ECInstanceId\", \"ECClassId\", \"$meta\"].sort());\r\n assert.deepEqual(Object.keys(modelNew!.$meta).sort(), [\"op\", \"tables\", \"changeIndexes\", \"stage\", \"instanceKey\", \"propFilter\", \"changeFetchedPropNames\", \"rowOptions\", \"isIndirectChange\"].sort());\r\n assert.equal(modelNew!.$meta.op, \"Updated\");\r\n assert.equal(modelNew!.$meta.stage, \"New\");\r\n assert.equal(modelNew!.$meta.propFilter, PropertyFilter.InstanceKey);\r\n assert.deepEqual([...modelNew!.$meta.changeFetchedPropNames].sort(), [\"ECInstanceId\"].sort());\r\n assert.deepEqual(modelNew!.$meta.rowOptions, {});\r\n assert.equal(modelNew!.$meta.isIndirectChange, true);\r\n\r\n // --- instances[1]: DrawingModel Updated Old ---\r\n const modelOld = instances.find((i) => i.ECInstanceId === drawingModelId && i.$meta.stage === \"Old\");\r\n expect(modelOld).to.exist;\r\n assert.equal(modelOld!.ECInstanceId, drawingModelId);\r\n assert.equal(\"BisCore:DrawingModel\", rwIModel.getClassNameFromId(modelOld!.ECClassId));\r\n assert.deepEqual(Object.keys(modelOld!).sort(), [\"ECInstanceId\", \"ECClassId\", \"$meta\"].sort());\r\n assert.deepEqual(Object.keys(modelOld!.$meta).sort(), [\"op\", \"tables\", \"changeIndexes\", \"stage\", \"instanceKey\", \"propFilter\", \"changeFetchedPropNames\", \"rowOptions\", \"isIndirectChange\"].sort());\r\n assert.equal(modelOld!.$meta.op, \"Updated\");\r\n assert.equal(modelOld!.$meta.stage, \"Old\");\r\n assert.equal(modelOld!.$meta.propFilter, PropertyFilter.InstanceKey);\r\n assert.deepEqual([...modelOld!.$meta.changeFetchedPropNames].sort(), [\"ECInstanceId\"].sort());\r\n assert.deepEqual(modelOld!.$meta.rowOptions, {});\r\n assert.equal(modelOld!.$meta.isIndirectChange, true);\r\n\r\n // --- instances[2]: Test2dElement (partial) Inserted New ---\r\n const elem = instances.find((i) => i.ECInstanceId === partialElementId && i.$meta.stage === \"New\");\r\n expect(elem).to.exist;\r\n assert.equal(elem!.ECInstanceId, partialElementId);\r\n assert.equal(\"TestDomain:Test2dElement\", rwIModel.getClassNameFromId(elem!.ECClassId));\r\n assert.isUndefined(elem!.StrProp);\r\n assert.isUndefined(elem!.Model);\r\n assert.isUndefined(elem!.LastMod);\r\n assert.deepEqual(Object.keys(elem!).sort(), [\"ECInstanceId\", \"ECClassId\", \"$meta\"].sort());\r\n assert.deepEqual(Object.keys(elem!.$meta).sort(), [\"op\", \"tables\", \"changeIndexes\", \"stage\", \"instanceKey\", \"propFilter\", \"changeFetchedPropNames\", \"rowOptions\", \"isIndirectChange\"].sort());\r\n assert.equal(elem!.$meta.op, \"Inserted\");\r\n assert.equal(elem!.$meta.stage, \"New\");\r\n assert.deepEqual([...elem!.$meta.tables].sort(), [\"bis_Element\", \"bis_GeometricElement2d\"].sort());\r\n assert.deepEqual([...elem!.$meta.changeIndexes].sort(), [1, 2].sort());\r\n assert.isString(elem!.$meta.instanceKey);\r\n assert.equal(elem!.$meta.instanceKey.split(`-`).length, 2);\r\n assert.equal(elem!.$meta.propFilter, PropertyFilter.InstanceKey);\r\n assert.deepEqual([...elem!.$meta.changeFetchedPropNames].sort(), [\"ECInstanceId\", \"ECClassId\"].sort());\r\n assert.deepEqual(elem!.$meta.rowOptions, {});\r\n assert.equal(elem!.$meta.isIndirectChange, false);\r\n });\r\n\r\n it(\"txn2 insert-partial | rowOptions: classIdsToClassNames\", () => {\r\n const instances = readTxn(rwIModel, txnId, undefined, { classIdsToClassNames: true });\r\n assert.equal(instances.length, 3);\r\n\r\n const modelNew = instances.find((i) => i.ECInstanceId === drawingModelId && i.$meta.stage === \"New\");\r\n expect(modelNew).to.exist;\r\n assert.equal(modelNew!.ECClassId, \"BisCore.DrawingModel\");\r\n assert.deepEqual(modelNew!.$meta.rowOptions, { classIdsToClassNames: true });\r\n\r\n const modelOld = instances.find((i) => i.ECInstanceId === drawingModelId && i.$meta.stage === \"Old\");\r\n expect(modelOld).to.exist;\r\n assert.equal(modelOld!.ECClassId, \"BisCore.DrawingModel\");\r\n assert.deepEqual(modelOld!.$meta.rowOptions, { classIdsToClassNames: true });\r\n\r\n const elem = instances.find((i) => i.ECInstanceId === partialElementId && i.$meta.stage === \"New\");\r\n expect(elem).to.exist;\r\n assert.equal(elem!.ECClassId, \"TestDomain.Test2dElement\");\r\n assert.deepEqual(elem!.Model, { Id: drawingModelId, RelECClassId: \"BisCore.ModelContainsElements\" });\r\n assert.deepEqual(elem!.CodeSpec, { Id: \"0x1\", RelECClassId: \"BisCore.CodeSpecSpecifiesCode\" });\r\n assert.deepEqual(elem!.CodeScope, { Id: \"0x1\", RelECClassId: \"BisCore.ElementScopesCode\" });\r\n assert.deepEqual(elem!.Category, { Id: drawingCategoryId, RelECClassId: \"BisCore.GeometricElement2dIsInCategory\" });\r\n assert.isUndefined(elem!.StrProp);\r\n assert.deepEqual(Object.keys(elem!).sort(), [\r\n \"ECInstanceId\", \"ECClassId\", \"Model\", \"LastMod\", \"CodeSpec\", \"CodeScope\", \"FederationGuid\", \"$meta\", \"Category\",\r\n ].sort());\r\n assert.equal(elem!.$meta.op, \"Inserted\");\r\n assert.equal(elem!.$meta.propFilter, PropertyFilter.All);\r\n assert.deepEqual(elem!.$meta.rowOptions, { classIdsToClassNames: true });\r\n });\r\n\r\n it(\"txn2 insert-partial | rowOptions: useJsName\", () => {\r\n const instances = readTxn(rwIModel, txnId, undefined, { useJsName: true });\r\n assert.equal(instances.length, 3);\r\n\r\n const modelNew = instances.find((i) => i.id === drawingModelId && i.$meta.stage === \"New\");\r\n expect(modelNew).to.exist;\r\n assert.equal(modelNew!.className, \"BisCore.DrawingModel\");\r\n assert.isUndefined(modelNew!.ECInstanceId);\r\n assert.deepEqual(modelNew!.$meta.rowOptions, { useJsName: true });\r\n\r\n const modelOld = instances.find((i) => i.id === drawingModelId && i.$meta.stage === \"Old\");\r\n expect(modelOld).to.exist;\r\n assert.equal(modelOld!.className, \"BisCore.DrawingModel\");\r\n assert.deepEqual(modelOld!.$meta.rowOptions, { useJsName: true });\r\n\r\n const elem = instances.find((i) => i.id === partialElementId && i.$meta.stage === \"New\");\r\n expect(elem).to.exist;\r\n assert.equal(elem!.className, \"TestDomain.Test2dElement\");\r\n assert.isUndefined(elem!.ECInstanceId);\r\n assert.isUndefined(elem!.ECClassId);\r\n assert.deepEqual(elem!.model, { id: drawingModelId, relClassName: \"BisCore.ModelContainsElements\" });\r\n assert.deepEqual(elem!.codeSpec, { id: \"0x1\", relClassName: \"BisCore.CodeSpecSpecifiesCode\" });\r\n assert.deepEqual(elem!.codeScope, { id: \"0x1\", relClassName: \"BisCore.ElementScopesCode\" });\r\n assert.deepEqual(elem!.category, { id: drawingCategoryId, relClassName: \"BisCore.GeometricElement2dIsInCategory\" });\r\n assert.isUndefined(elem!.strProp);\r\n assert.deepEqual(Object.keys(elem!).sort(), [\r\n \"id\", \"className\", \"model\", \"lastMod\", \"codeSpec\", \"codeScope\", \"federationGuid\", \"$meta\", \"category\",\r\n ].sort());\r\n assert.equal(elem!.$meta.op, \"Inserted\");\r\n assert.equal(elem!.$meta.propFilter, PropertyFilter.All);\r\n assert.deepEqual(elem!.$meta.rowOptions, { useJsName: true });\r\n });\r\n\r\n it(\"txn2 insert-partial | rowOptions: abbreviateBlobs\", () => {\r\n const instances = readTxn(rwIModel, txnId, undefined, { abbreviateBlobs: true });\r\n assert.equal(instances.length, 3);\r\n\r\n const modelNew = instances.find((i) => i.ECInstanceId === drawingModelId && i.$meta.stage === \"New\");\r\n expect(modelNew).to.exist;\r\n assert.equal(\"BisCore:DrawingModel\", rwIModel.getClassNameFromId(modelNew!.ECClassId));\r\n assert.deepEqual(modelNew!.$meta.rowOptions, { abbreviateBlobs: true });\r\n\r\n const modelOld = instances.find((i) => i.ECInstanceId === drawingModelId && i.$meta.stage === \"Old\");\r\n expect(modelOld).to.exist;\r\n assert.equal(\"BisCore:DrawingModel\", rwIModel.getClassNameFromId(modelOld!.ECClassId));\r\n assert.deepEqual(modelOld!.$meta.rowOptions, { abbreviateBlobs: true });\r\n\r\n // Partial element has no blob props; ECClassId stays as raw hex\r\n const elem = instances.find((i) => i.ECInstanceId === partialElementId && i.$meta.stage === \"New\");\r\n expect(elem).to.exist;\r\n assert.equal(\"TestDomain:Test2dElement\", rwIModel.getClassNameFromId(elem!.ECClassId));\r\n assert.equal(elem!.Model.Id, drawingModelId);\r\n assert.equal(rwIModel.getClassNameFromId(elem!.Model.RelECClassId), \"BisCore:ModelContainsElements\");\r\n assert.isUndefined(elem!.StrProp);\r\n assert.deepEqual(Object.keys(elem!).sort(), [\r\n \"ECInstanceId\", \"ECClassId\", \"Model\", \"LastMod\", \"CodeSpec\", \"CodeScope\", \"FederationGuid\", \"$meta\", \"Category\",\r\n ].sort());\r\n assert.equal(elem!.$meta.op, \"Inserted\");\r\n assert.equal(elem!.$meta.propFilter, PropertyFilter.All);\r\n assert.deepEqual(elem!.$meta.rowOptions, { abbreviateBlobs: true });\r\n });\r\n\r\n it(\"txn2 insert-partial | rowOptions: classIdsToClassNames + useJsName\", () => {\r\n const instances = readTxn(rwIModel, txnId, undefined, { classIdsToClassNames: true, useJsName: true });\r\n assert.equal(instances.length, 3);\r\n\r\n const modelNew = instances.find((i) => i.id === drawingModelId && i.$meta.stage === \"New\");\r\n expect(modelNew).to.exist;\r\n assert.equal(modelNew!.className, \"BisCore.DrawingModel\");\r\n assert.isUndefined(modelNew!.ECInstanceId);\r\n assert.deepEqual(modelNew!.$meta.rowOptions, { classIdsToClassNames: true, useJsName: true });\r\n\r\n const modelOld = instances.find((i) => i.id === drawingModelId && i.$meta.stage === \"Old\");\r\n expect(modelOld).to.exist;\r\n assert.equal(modelOld!.className, \"BisCore.DrawingModel\");\r\n assert.deepEqual(modelOld!.$meta.rowOptions, { classIdsToClassNames: true, useJsName: true });\r\n\r\n const elem = instances.find((i) => i.id === partialElementId && i.$meta.stage === \"New\");\r\n expect(elem).to.exist;\r\n assert.equal(elem!.className, \"TestDomain.Test2dElement\");\r\n assert.isUndefined(elem!.ECInstanceId);\r\n assert.deepEqual(elem!.model, { id: drawingModelId, relClassName: \"BisCore.ModelContainsElements\" });\r\n assert.deepEqual(elem!.codeSpec, { id: \"0x1\", relClassName: \"BisCore.CodeSpecSpecifiesCode\" });\r\n assert.deepEqual(elem!.codeScope, { id: \"0x1\", relClassName: \"BisCore.ElementScopesCode\" });\r\n assert.deepEqual(elem!.category, { id: drawingCategoryId, relClassName: \"BisCore.GeometricElement2dIsInCategory\" });\r\n assert.isUndefined(elem!.strProp);\r\n assert.deepEqual(Object.keys(elem!).sort(), [\r\n \"id\", \"className\", \"model\", \"lastMod\", \"codeSpec\", \"codeScope\", \"federationGuid\", \"$meta\", \"category\",\r\n ].sort());\r\n assert.equal(elem!.$meta.op, \"Inserted\");\r\n assert.equal(elem!.$meta.propFilter, PropertyFilter.All);\r\n assert.deepEqual(elem!.$meta.rowOptions, { classIdsToClassNames: true, useJsName: true });\r\n });\r\n it(\"should throw error if tried to fetch changeset metadata values before stepping\", () => {\r\n using reader = ChangesetReader.openTxn({ db: rwIModel, txnId });\r\n expect(() => reader.isECTable).to.throw();\r\n expect(() => reader.isIndirectChange).to.throw();\r\n expect(() => reader.tableName).to.throw();\r\n expect(() => reader.op).to.throw();\r\n assert.isUndefined(reader.inserted);\r\n assert.isUndefined(reader.deleted);\r\n reader.close();\r\n });\r\n it(\"should throw error if tried to fetch changeset metadata values after stepping past the end\", () => {\r\n using reader = ChangesetReader.openTxn({ db: rwIModel, txnId });\r\n while (reader.step()) { }\r\n assert.equal(reader.step(), false);\r\n expect(() => reader.isECTable).to.throw();\r\n expect(() => reader.isIndirectChange).to.throw();\r\n expect(() => reader.tableName).to.throw();\r\n expect(() => reader.op).to.throw();\r\n assert.isUndefined(reader.inserted);\r\n assert.isUndefined(reader.deleted);\r\n reader.close();\r\n });\r\n\r\n});\r\n\r\n\r\ndescribe(\"ChangesetReader update-full\", () => {\r\n let rwIModel: BriefcaseDb;\r\n let fullElementId: Id64String;\r\n let partialElementId: Id64String;\r\n let drawingModelId: Id64String;\r\n let drawingCategoryId: Id64String;\r\n let txnId: string;\r\n let txn: EditTxn;\r\n\r\n before(async () => {\r\n HubMock.startup(\"ECChangesetUpdateFull\", KnownTestLocations.outputDir);\r\n const adminToken = \"super manager token\";\r\n const iTwinId = HubMock.iTwinId;\r\n const rwIModelId = await HubMock.createNewIModel({ iTwinId, iModelName: \"updateFull\", description: \"updateFull\", accessToken: adminToken });\r\n rwIModel = await HubWrappers.downloadAndOpenBriefcase({ iTwinId, iModelId: rwIModelId, accessToken: adminToken });\r\n txn = startTestTxn(rwIModel, \"ChangesetReader update-full setup\");\r\n // Txn 1: import schema + drawing model setup, then push\r\n const schema = `<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n <ECSchema schemaName=\"TestDomain\" alias=\"ts\" version=\"01.00\" xmlns=\"http://www.bentley.com/schemas/Bentley.ECXML.3.1\">\r\n <ECSchemaReference name=\"BisCore\" version=\"01.00\" alias=\"bis\"/>\r\n <!-- Rich struct: scalar fields + nested point2d/3d sub-properties -->\r\n <ECStructClass typeName=\"RichPoint\" modifier=\"Sealed\">\r\n <ECProperty propertyName=\"X\" typeName=\"double\"/>\r\n <ECProperty propertyName=\"Y\" typeName=\"double\"/>\r\n <ECProperty propertyName=\"Z\" typeName=\"double\"/>\r\n <ECProperty propertyName=\"Label\" typeName=\"string\"/>\r\n <ECProperty propertyName=\"Pt2d\" typeName=\"point2d\"/>\r\n <ECProperty propertyName=\"Pt3d\" typeName=\"point3d\"/>\r\n </ECStructClass>\r\n <!-- Relationship used by the RelatedElem navigation property -->\r\n <ECRelationshipClass typeName=\"Test2dUsesElement\" strength=\"referencing\" modifier=\"None\">\r\n <Source multiplicity=\"(0..*)\" roleLabel=\"uses\" polymorphic=\"true\"><Class class=\"Test2dElement\"/></Source>\r\n <Target multiplicity=\"(0..1)\" roleLabel=\"is used by\" polymorphic=\"true\"><Class class=\"bis:Element\"/></Target>\r\n </ECRelationshipClass>\r\n <ECEntityClass typeName=\"Test2dElement\">\r\n <BaseClass>bis:GraphicalElement2d</BaseClass>\r\n <!-- Primitives -->\r\n <ECProperty propertyName=\"StrProp\" typeName=\"string\"/>\r\n <ECProperty propertyName=\"IntProp\" typeName=\"int\"/>\r\n <ECProperty propertyName=\"LongProp\" typeName=\"long\"/>\r\n <ECProperty propertyName=\"DblProp\" typeName=\"double\"/>\r\n <ECProperty propertyName=\"BoolProp\" typeName=\"boolean\"/>\r\n <ECProperty propertyName=\"DtProp\" typeName=\"dateTime\"/>\r\n <ECProperty propertyName=\"BinProp\" typeName=\"binary\"/>\r\n <!-- Geometric primitives -->\r\n <ECProperty propertyName=\"Pt2dProp\" typeName=\"point2d\"/>\r\n <ECProperty propertyName=\"Pt3dProp\" typeName=\"point3d\"/>\r\n <!-- Struct, arrays -->\r\n <ECStructProperty propertyName=\"StructProp\" typeName=\"RichPoint\"/>\r\n <ECArrayProperty propertyName=\"IntArrProp\" typeName=\"int\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\r\n <ECArrayProperty propertyName=\"StrArrProp\" typeName=\"string\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\r\n <ECStructArrayProperty propertyName=\"StructArrProp\" typeName=\"RichPoint\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\r\n <!-- Navigation property -->\r\n <ECNavigationProperty propertyName=\"RelatedElem\" relationshipName=\"Test2dUsesElement\" direction=\"forward\"/>\r\n </ECEntityClass>\r\n </ECSchema>`;\r\n await importSchemaStrings(txn, [schema]);\r\n rwIModel.channels.addAllowedChannel(ChannelControl.sharedChannelName);\r\n\r\n await rwIModel.locks.acquireLocks({ shared: IModel.dictionaryId });\r\n const codeProps = Code.createEmpty();\r\n codeProps.value = \"DrillDownDrawing\";\r\n [, drawingModelId] = IModelTestUtils.createAndInsertDrawingPartitionAndModel(txn, codeProps, true);\r\n\r\n const foundCat = DrawingCategory.queryCategoryIdByName(rwIModel, IModel.dictionaryId, \"DrillDownCategory\");\r\n drawingCategoryId = foundCat ?? DrawingCategory.insert(txn, IModel.dictionaryId, \"DrillDownCategory\",\r\n new SubCategoryAppearance({ color: ColorDef.fromString(\"rgb(255,0,0)\").toJSON() }));\r\n\r\n txn.saveChanges(\"setup\");\r\n\r\n // Wait so that LastMod on bis_Model gets a distinct timestamp before the full insert txn\r\n await new Promise((resolve) => setTimeout(resolve, 300));\r\n // Txn 2: insert FULL element (needed as update target)\r\n await rwIModel.locks.acquireLocks({ shared: drawingModelId });\r\n const geom: GeometryStreamProps = [\r\n Arc3d.createXY(Point3d.create(0, 0), 5),\r\n Arc3d.createXY(Point3d.create(5, 5), 2),\r\n Arc3d.createXY(Point3d.create(-5, -5), 20),\r\n ].map((a) => IModelJson.Writer.toIModelJson(a));\r\n\r\n fullElementId = txn.insertElement({\r\n classFullName: \"TestDomain:Test2dElement\",\r\n model: drawingModelId,\r\n category: drawingCategoryId,\r\n code: Code.createEmpty(),\r\n geom,\r\n StrProp: \"hello\",\r\n IntProp: 42,\r\n LongProp: 9_007_199_254_740_991, // Number.MAX_SAFE_INTEGER\r\n DblProp: 3.14159265358979,\r\n BoolProp: true,\r\n DtProp: \"2024-01-15T12:00:00.000\",\r\n BinProp: new Uint8Array([1, 2, 3, 5]),\r\n Pt2dProp: { x: 1.5, y: 2.5 },\r\n Pt3dProp: { x: 3.0, y: 4.0, z: 5.0 },\r\n StructProp: {\r\n X: 1.0, Y: 2.0, Z: 3.0, Label: \"origin\",\r\n Pt2d: { x: 0.5, y: 0.5 },\r\n Pt3d: { x: 1.0, y: 2.0, z: 3.0 },\r\n },\r\n IntArrProp: [10, 20, 30],\r\n StrArrProp: [\"alpha\", \"beta\", \"gamma\"],\r\n StructArrProp: [\r\n { X: 0.0, Y: 1.0, Z: 2.0, Label: \"a\", Pt2d: { x: 0.0, y: 0.0 }, Pt3d: { x: 0.0, y: 0.0, z: 0.0 } },\r\n { X: 3.0, Y: 4.0, Z: 5.0, Label: \"b\", Pt2d: { x: 1.0, y: 1.0 }, Pt3d: { x: 1.0, y: 1.0, z: 1.0 } },\r\n ],\r\n RelatedElem: { id: drawingCategoryId, relClassName: \"TestDomain:Test2dUsesElement\" },\r\n } as any);\r\n txn.saveChanges(\"insert full element\");\r\n txnId = rwIModel.txns.getLastSavedTxnProps()!.id;\r\n\r\n // Wait so that LastMod on bis_Model gets a distinct timestamp before the partial insert txn\r\n await new Promise((resolve) => setTimeout(resolve, 300));\r\n // Txn 3: insert PARTIAL element (needed as RelatedElem target in the update)\r\n partialElementId = txn.insertElement({\r\n classFullName: \"TestDomain:Test2dElement\",\r\n model: drawingModelId,\r\n category: drawingCategoryId,\r\n code: Code.createEmpty(),\r\n // StrProp, IntProp, LongProp, DblProp, BoolProp, DtProp, BinProp intentionally absent\r\n } as any);\r\n txn.saveChanges(\"insert partial element\");\r\n txnId = rwIModel.txns.getLastSavedTxnProps()!.id;\r\n\r\n // Wait so that LastMod on bis_Model gets a distinct timestamp before the update txn\r\n await new Promise((resolve) => setTimeout(resolve, 300));\r\n // Txn 4: update FULL element this is the txn under test\r\n // Txn 3: update FULL element — change several property types\r\n await rwIModel.locks.acquireLocks({ exclusive: fullElementId });\r\n txn.updateElement({\r\n ...rwIModel.elements.getElementProps(fullElementId),\r\n StrProp: \"updated\",\r\n IntProp: 99,\r\n LongProp: 0,\r\n DblProp: 2.71828182845904,\r\n BoolProp: false,\r\n DtProp: \"2025-06-01T08:30:00.000\",\r\n BinProp: new Uint8Array([10, 20, 30, 40, 50]),\r\n Pt2dProp: { x: 9.0, y: 8.0 },\r\n Pt3dProp: { x: 7.0, y: 6.0, z: 5.0 },\r\n StructProp: {\r\n X: 9.0, Y: 8.0, Z: 7.0, Label: \"updated-origin\",\r\n Pt2d: { x: 9.5, y: 8.5 },\r\n Pt3d: { x: 9.0, y: 8.0, z: 7.0 },\r\n },\r\n IntArrProp: [100, 200],\r\n StrArrProp: [\"delta\", \"epsilon\"],\r\n StructArrProp: [\r\n { X: 5.0, Y: 6.0, Z: 7.0, Label: \"c\", Pt2d: { x: 5.0, y: 5.0 }, Pt3d: { x: 5.0, y: 5.0, z: 5.0 } },\r\n { X: 7.0, Y: 8.0, Z: 9.0, Label: \"d\", Pt2d: { x: 7.0, y: 7.0 }, Pt3d: { x: 7.0, y: 7.0, z: 7.0 } },\r\n { X: 9.0, Y: 10.0, Z: 11.0, Label: \"e\", Pt2d: { x: 9.0, y: 9.0 }, Pt3d: { x: 9.0, y: 9.0, z: 9.0 } },\r\n ],\r\n RelatedElem: { id: partialElementId, relClassName: \"TestDomain:Test2dUsesElement\" },\r\n });\r\n txn.saveChanges(\"update full element\");\r\n txnId = rwIModel.txns.getLastSavedTxnProps()!.id;\r\n });\r\n\r\n after(() => {\r\n txn.end();\r\n rwIModel?.close();\r\n HubMock.shutdown();\r\n });\r\n\r\n it(\"txn3 update-full | All_Properties | default rowOptions\", () => {\r\n const instances = readTxn(rwIModel, txnId, undefined, undefined, undefined, false);\r\n assert.equal(instances.length, 4);\r\n\r\n // --- instances[0]: DrawingModel Updated New ---\r\n const modelNew = instances.find((i) => i.ECInstanceId === drawingModelId && i.$meta.stage === \"New\");\r\n assert.equal(modelNew!.ECInstanceId, drawingModelId);\r\n assert.equal(\"BisCore:DrawingModel\", rwIModel.getClassNameFromId(modelNew!.ECClassId));\r\n assert.isString(modelNew!.LastMod);\r\n assert.isUndefined(modelNew!.GeometryGuid); // no GeometryGuid in update txn model row\r\n assert.deepEqual(Object.keys(modelNew!).sort(), [\"ECInstanceId\", \"ECClassId\", \"LastMod\", \"$meta\"].sort());\r\n assert.deepEqual(Object.keys(modelNew!.$meta).sort(), [\"op\", \"tables\", \"changeIndexes\", \"stage\", \"instanceKey\", \"propFilter\", \"changeFetchedPropNames\", \"rowOptions\", \"isIndirectChange\"].sort());\r\n assert.equal(modelNew!.$meta.op, \"Updated\");\r\n assert.equal(modelNew!.$meta.stage, \"New\");\r\n assert.equal(modelNew!.$meta.propFilter, PropertyFilter.All);\r\n assert.deepEqual([...modelNew!.$meta.changeFetchedPropNames].sort(), [\"ECInstanceId\", \"LastMod\"].sort());\r\n assert.deepEqual(modelNew!.$meta.rowOptions, {});\r\n assert.equal(modelNew!.$meta.isIndirectChange, true);\r\n\r\n // --- instances[1]: DrawingModel Updated Old ---\r\n const modelOld = instances.find((i) => i.ECInstanceId === drawingModelId && i.$meta.stage === \"Old\");\r\n assert.equal(modelOld!.ECInstanceId, drawingModelId);\r\n assert.equal(\"BisCore:DrawingModel\", rwIModel.getClassNameFromId(modelOld!.ECClassId));\r\n assert.isString(modelOld!.LastMod);\r\n assert.deepEqual(Object.keys(modelOld!).sort(), [\"ECInstanceId\", \"ECClassId\", \"LastMod\", \"$meta\"].sort());\r\n assert.deepEqual(Object.keys(modelOld!.$meta).sort(), [\"op\", \"tables\", \"changeIndexes\", \"stage\", \"instanceKey\", \"propFilter\", \"changeFetchedPropNames\", \"rowOptions\", \"isIndirectChange\"].sort());\r\n assert.equal(modelOld!.$meta.op, \"Updated\");\r\n assert.equal(modelOld!.$meta.stage, \"Old\");\r\n assert.equal(modelOld!.$meta.propFilter, PropertyFilter.All);\r\n assert.deepEqual([...modelOld!.$meta.changeFetchedPropNames].sort(), [\"ECInstanceId\", \"LastMod\"].sort());\r\n assert.deepEqual(modelOld!.$meta.rowOptions, {});\r\n assert.equal(modelOld!.$meta.isIndirectChange, true);\r\n\r\n // --- instances[2]: Test2dElement Updated New ---\r\n const elemNew = instances.find((i) => i.ECInstanceId === fullElementId && i.$meta.stage === \"New\");\r\n expect(elemNew).to.exist;\r\n assert.equal(elemNew!.ECInstanceId, fullElementId);\r\n assert.equal(elemNew!.ECClassId, \"0x176\");\r\n assert.equal(elemNew!.StrProp, \"updated\");\r\n assert.equal(elemNew!.IntProp, 99);\r\n assert.equal(elemNew!.LongProp, 0);\r\n assert.include(String(elemNew!.BinProp), \"\\\"bytes\\\"\");\r\n assert.closeTo(elemNew!.DblProp as number, 2.71828182845904, 1e-10);\r\n assert.equal(elemNew!.BoolProp, false);\r\n assert.equal(elemNew!.DtProp, \"2025-06-01T08:30:00.000\");\r\n assert.deepEqual(elemNew!.Pt2dProp, { X: 9, Y: 8 });\r\n assert.deepEqual(elemNew!.Pt3dProp, { X: 7, Y: 6, Z: 5 });\r\n assert.deepEqual(elemNew!.StructProp, { X: 9, Y: 8, Z: 7, Label: \"updated-origin\", Pt2d: { X: 9.5, Y: 8.5 }, Pt3d: { X: 9, Y: 8, Z: 7 } });\r\n assert.deepEqual(elemNew!.IntArrProp, [100, 200]);\r\n assert.deepEqual(elemNew!.StrArrProp, [\"delta\", \"epsilon\"]);\r\n assert.deepEqual(elemNew!.StructArrProp, [\r\n { X: 5, Y: 6, Z: 7, Label: \"c\", Pt2d: { X: 5, Y: 5 }, Pt3d: { X: 5, Y: 5, Z: 5 } },\r\n { X: 7, Y: 8, Z: 9, Label: \"d\", Pt2d: { X: 7, Y: 7 }, Pt3d: { X: 7, Y: 7, Z: 7 } },\r\n { X: 9, Y: 10, Z: 11, Label: \"e\", Pt2d: { X: 9, Y: 9 }, Pt3d: { X: 9, Y: 9, Z: 9 } },\r\n ]);\r\n assert.equal(elemNew!.RelatedElem.Id, partialElementId);\r\n assert.equal(rwIModel.getClassNameFromId(elemNew!.RelatedElem.RelECClassId), \"TestDomain:Test2dUsesElement\");\r\n assert.isString(elemNew!.LastMod);\r\n // Object.keys — update row: custom-prop columns first, then $meta and LastMod at the end\r\n assert.deepEqual(Object.keys(elemNew!).sort(), [\r\n \"ECInstanceId\", \"ECClassId\",\r\n \"StrProp\", \"IntProp\", \"LongProp\", \"DblProp\", \"BoolProp\", \"DtProp\",\r\n \"Pt2dProp\", \"Pt3dProp\", \"StructProp\", \"IntArrProp\", \"StrArrProp\", \"StructArrProp\", \"RelatedElem\",\r\n \"$meta\", \"LastMod\", \"BinProp\"\r\n ].sort());\r\n assert.deepEqual(Object.keys(elemNew!.$meta).sort(), [\"op\", \"tables\", \"changeIndexes\", \"stage\", \"instanceKey\", \"propFilter\", \"changeFetchedPropNames\", \"rowOptions\", \"isIndirectChange\"].sort());\r\n assert.equal(elemNew!.$meta.op, \"Updated\");\r\n assert.equal(elemNew!.$meta.stage, \"New\");\r\n assert.deepEqual([...elemNew!.$meta.tables].sort(), [\"bis_GeometricElement2d\", \"bis_Element\"].sort());\r\n assert.deepEqual([...elemNew!.$meta.changeIndexes].sort(), [1, 2].sort());\r\n assert.isString(elemNew!.$meta.instanceKey);\r\n assert.equal(elemNew!.$meta.instanceKey.split(`-`).length, 2);\r\n assert.equal(elemNew!.$meta.propFilter, PropertyFilter.All);\r\n assert.deepEqual([...elemNew!.$meta.changeFetchedPropNames].sort(), [\r\n \"BoolProp\", \"DblProp\", \"DtProp\", \"ECInstanceId\", \"IntArrProp\", \"IntProp\", \"LastMod\",\r\n \"LongProp\", \"Pt2dProp\", \"Pt3dProp.X\", \"Pt3dProp.Y\", \"RelatedElem.Id\", \"StrArrProp\",\r\n \"StrProp\", \"StructArrProp\", \"StructProp.Label\", \"StructProp.Pt2d\", \"StructProp.Pt3d\", \"StructProp.X\",\r\n \"StructProp.Y\", \"StructProp.Z\", \"BinProp\"\r\n ].sort());\r\n assert.deepEqual(elemNew!.$meta.rowOptions, {});\r\n assert.equal(elemNew!.$meta.isIndirectChange, false);\r\n\r\n // --- instances[3]: Test2dElement Updated Old ---\r\n const elemOld = instances.find((i) => i.ECInstanceId === fullElementId && i.$meta.stage === \"Old\");\r\n expect(elemOld).to.exist;\r\n assert.equal(elemOld!.ECInstanceId, fullElementId);\r\n assert.equal(elemOld!.ECClassId, \"0x176\");\r\n assert.equal(elemOld!.StrProp, \"hello\");\r\n assert.equal(elemOld!.IntProp, 42);\r\n assert.equal(elemOld!.LongProp, 9007199254740991);\r\n assert.closeTo(elemOld!.DblProp as number, 3.14159265358979, 1e-10);\r\n assert.equal(elemOld!.BoolProp, true);\r\n assert.include(String(elemOld!.BinProp), \"\\\"bytes\\\"\");\r\n assert.equal(elemOld!.DtProp, \"2024-01-15T12:00:00.000\");\r\n assert.deepEqual(elemOld!.Pt2dProp, { X: 1.5, Y: 2.5 });\r\n assert.deepEqual(elemOld!.Pt3dProp, { X: 3, Y: 4, Z: 5 });\r\n assert.deepEqual(elemOld!.StructProp, { X: 1, Y: 2, Z: 3, Label: \"origin\", Pt2d: { X: 0.5, Y: 0.5 }, Pt3d: { X: 1, Y: 2, Z: 3 } });\r\n assert.deepEqual(elemOld!.IntArrProp, [10, 20, 30]);\r\n assert.deepEqual(elemOld!.StrArrProp, [\"alpha\", \"beta\", \"gamma\"]);\r\n assert.deepEqual(elemOld!.StructArrProp, [\r\n { X: 0, Y: 1, Z: 2, Label: \"a\", Pt2d: { X: 0, Y: 0 }, Pt3d: { X: 0, Y: 0, Z: 0 } },\r\n { X: 3, Y: 4, Z: 5, Label: \"b\", Pt2d: { X: 1, Y: 1 }, Pt3d: { X: 1, Y: 1, Z: 1 } },\r\n ]);\r\n assert.equal(elemOld!.RelatedElem.Id, drawingCategoryId);\r\n assert.equal(rwIModel.getClassNameFromId(elemOld!.RelatedElem.RelECClassId), \"TestDomain:Test2dUsesElement\");\r\n assert.isString(elemOld!.LastMod);\r\n assert.deepEqual(Object.keys(elemOld!).sort(), [\r\n \"ECInstanceId\", \"ECClassId\",\r\n \"StrProp\", \"IntProp\", \"LongProp\", \"DblProp\", \"BoolProp\", \"DtProp\",\r\n \"Pt2dProp\", \"Pt3dProp\", \"StructProp\", \"IntArrProp\", \"StrArrProp\", \"StructArrProp\", \"RelatedElem\",\r\n \"$meta\", \"LastMod\", \"BinProp\"\r\n ].sort());\r\n assert.deepEqual(Object.keys(elemOld!.$meta).sort(), [\"op\", \"tables\", \"changeIndexes\", \"stage\", \"instanceKey\", \"propFilter\", \"changeFetchedPropNames\", \"rowOptions\", \"isIndirectChange\"].sort());\r\n assert.equal(elemOld!.$meta.op, \"Updated\");\r\n assert.equal(elemOld!.$meta.stage, \"Old\");\r\n assert.deepEqual([...elemOld!.$meta.tables].sort(), [\"bis_GeometricElement2d\", \"bis_Element\"].sort());\r\n assert.equal(elemOld!.$meta.propFilter, PropertyFilter.All);\r\n assert.deepEqual([...elemOld!.$meta.changeFetchedPropNames].sort(), [\r\n \"BoolProp\", \"DblProp\", \"DtProp\", \"ECInstanceId\", \"IntArrProp\", \"IntProp\", \"LastMod\",\r\n \"LongProp\", \"Pt2dProp\", \"Pt3dProp.X\", \"Pt3dProp.Y\", \"RelatedElem.Id\", \"StrArrProp\",\r\n \"StrProp\", \"StructArrProp\", \"StructProp.Label\", \"StructProp.Pt2d\", \"StructProp.Pt3d\", \"StructProp.X\",\r\n \"StructProp.Y\", \"StructProp.Z\", \"BinProp\"\r\n ].sort());\r\n assert.deepEqual(elemOld!.$meta.rowOptions, {});\r\n assert.equal(elemOld!.$meta.isIndirectChange, false);\r\n });\r\n\r\n it(\"txn3 update-full | Bis_Element_Properties\", () => {\r\n const instances = readTxn(rwIModel, txnId, PropertyFilter.BisCoreElement, { classIdsToClassNames: true }, undefined, false);\r\n assert.equal(instances.length, 4);\r\n\r\n // --- instances[0]: DrawingModel Updated New ---\r\n const modelNew = instances.find((i) => i.ECInstanceId === drawingModelId && i.$meta.stage === \"New\");\r\n expect(modelNew).to.exist;\r\n assert.equal(modelNew!.ECInstanceId, drawingModelId);\r\n assert.equal(modelNew!.ECClassId, \"BisCore.DrawingModel\");\r\n assert.isString(modelNew!.LastMod);\r\n assert.deepEqual(Object.keys(modelNew!).sort(), [\"ECInstanceId\", \"ECClassId\", \"LastMod\", \"$meta\"].sort());\r\n assert.deepEqual(Object.keys(modelNew!.$meta).sort(), [\"op\", \"tables\", \"changeIndexes\", \"stage\", \"instanceKey\", \"propFilter\", \"changeFetchedPropNames\", \"rowOptions\", \"isIndirectChange\"].sort());\r\n assert.equal(modelNew!.$meta.op, \"Updated\");\r\n assert.equal(modelNew!.$meta.stage, \"New\");\r\n assert.equal(modelNew!.$meta.propFilter, PropertyFilter.BisCoreElement);\r\n assert.deepEqual([...modelNew!.$meta.changeFetchedPropNames].sort(), [\"ECInstanceId\", \"LastMod\"].sort());\r\n assert.deepEqual(modelNew!.$meta.rowOptions, { classIdsToClassNames: true });\r\n assert.equal(modelNew!.$meta.isIndirectChange, true);\r\n\r\n // --- instances[1]: DrawingModel Updated Old ---\r\n const modelOld = instances.find((i) => i.ECInstanceId === drawingModelId && i.$meta.stage === \"Old\");\r\n expect(modelOld).to.exist;\r\n assert.equal(modelOld!.ECInstanceId, drawingModelId);\r\n assert.equal(modelOld!.ECClassId, \"BisCore.DrawingModel\");\r\n assert.isString(modelOld!.LastMod);\r\n assert.deepEqual(Object.keys(modelOld!).sort(), [\"ECInstanceId\", \"ECClassId\", \"LastMod\", \"$meta\"].sort());\r\n assert.deepEqual(Object.keys(modelOld!.$meta).sort(), [\"op\", \"tables\", \"changeIndexes\", \"stage\", \"instanceKey\", \"propFilter\", \"changeFetchedPropNames\", \"rowOptions\", \"isIndirectChange\"].sort());\r\n assert.equal(modelOld!.$meta.op, \"Updated\");\r\n assert.equal(modelOld!.$meta.stage, \"Old\");\r\n assert.equal(modelOld!.$meta.propFilter, PropertyFilter.BisCoreElement);\r\n assert.deepEqual([...modelOld!.$meta.changeFetchedPropNames].sort(), [\"ECInstanceId\", \"LastMod\"].sort());\r\n assert.deepEqual(modelOld!.$meta.rowOptions, { classIdsToClassNames: true });\r\n assert.equal(modelOld!.$meta.isIndirectChange, true);\r\n\r\n // --- instances[2]: Test2dElement Updated New (no custom props) ---\r\n const elemNew = instances.find((i) => i.ECInstanceId === fullElementId && i.$meta.stage === \"New\");\r\n expect(elemNew).to.exist;\r\n assert.equal(elemNew!.ECInstanceId, fullElementId);\r\n assert.equal(elemNew!.ECClassId, \"TestDomain.Test2dElement\");\r\n assert.isUndefined(elemNew!.StrProp);\r\n assert.isUndefined(elemNew!.IntProp);\r\n assert.isUndefined(elemNew!.Model);\r\n assert.isUndefined(elemNew!.Category);\r\n expect(elemNew!.LastMod).to.exist;\r\n assert.deepEqual(Object.keys(elemNew!).sort(), [\"ECInstanceId\", \"ECClassId\", \"$meta\", \"LastMod\"].sort());\r\n assert.deepEqual(Object.keys(elemNew!.$meta).sort(), [\"op\", \"tables\", \"changeIndexes\", \"stage\", \"instanceKey\", \"propFilter\", \"changeFetchedPropNames\", \"rowOptions\", \"isIndirectChange\"].sort());\r\n assert.equal(elemNew!.$meta.op, \"Updated\");\r\n assert.equal(elemNew!.$meta.stage, \"New\");\r\n assert.deepEqual([...elemNew!.$meta.tables].sort(), [\"bis_GeometricElement2d\", \"bis_Element\"].sort());\r\n assert.deepEqual([...elemNew!.$meta.changeIndexes].sort(), [1, 2].sort());\r\n assert.isString(elemNew!.$meta.instanceKey);\r\n assert.equal(elemNew!.$meta.instanceKey.split(`-`).length, 2);\r\n assert.equal(elemNew!.$meta.propFilter, PropertyFilter.BisCoreElement);\r\n\r\n assert.deepEqual([...elemNew!.$meta.changeFetchedPropNames].sort(), [\"ECInstanceId\", \"LastMod\"].sort());\r\n assert.deepEqual(elemNew!.$meta.rowOptions, { classIdsToClassNames: true });\r\n assert.equal(elemNew!.$meta.isIndirectChange, false);\r\n\r\n // --- instances[3]: Test2dElement Updated Old ---\r\n const elemOld = instances.find((i) => i.ECInstanceId === fullElementId && i.$meta.stage === \"Old\");\r\n expect(elemOld).to.exist;\r\n assert.equal(elemOld!.ECInstanceId, fullElementId);\r\n assert.equal(elemOld!.ECClassId, \"TestDomain.Test2dElement\");\r\n assert.isUndefined(elemOld!.StrProp);\r\n assert.isUndefined(elemOld!.IntProp);\r\n assert.isUndefined(elemOld!.Model);\r\n assert.deepEqual(Object.keys(elemOld!).sort(), [\"ECInstanceId\", \"ECClassId\", \"$meta\", \"LastMod\"].sort());\r\n assert.deepEqual(Object.keys(elemOld!.$meta).sort(), [\"op\", \"tables\", \"changeIndexes\", \"stage\", \"instanceKey\", \"propFilter\", \"changeFetchedPropNames\", \"rowOptions\", \"isIndirectChange\"].sort());\r\n assert.equal(elemOld!.$meta.op, \"Updated\");\r\n assert.equal(elemOld!.$meta.stage, \"Old\");\r\n assert.deepEqual([...elemOld!.$meta.tables].sort(), [\"bis_GeometricElement2d\", \"bis_Element\"].sort());\r\n assert.equal(elemOld!.$meta.propFilter, PropertyFilter.BisCoreElement);\r\n assert.deepEqual([...elemOld!.$meta.changeFetchedPropNames].sort(), [\"ECInstanceId\", \"LastMod\"].sort());\r\n assert.deepEqual(elemOld!.$meta.rowOptions, { classIdsToClassNames: true });\r\n assert.equal(elemOld!.$meta.isIndirectChange, false);\r\n });\r\n\r\n it(\"txn3 update-full | Instance_Key\", () => {\r\n const instances = readTxn(rwIModel, txnId, PropertyFilter.InstanceKey, undefined, undefined, false);\r\n assert.equal(instances.length, 4);\r\n\r\n // --- instances[0]: DrawingModel Updated New ---\r\n const modelNew = instances.find((i) => i.ECInstanceId === drawingModelId && i.$meta.stage === \"New\");\r\n expect(modelNew).to.exist;\r\n assert.equal(modelNew!.ECInstanceId, drawingModelId);\r\n assert.equal(\"BisCore:DrawingModel\", rwIModel.getClassNameFromId(modelNew!.ECClassId));\r\n assert.deepEqual(Object.keys(modelNew!).sort(), [\"ECInstanceId\", \"ECClassId\", \"$meta\"].sort());\r\n assert.deepEqual(Object.keys(modelNew!.$meta).sort(), [\"op\", \"tables\", \"changeIndexes\", \"stage\", \"instanceKey\", \"propFilter\", \"changeFetchedPropNames\", \"rowOptions\", \"isIndirectChange\"].sort());\r\n assert.equal(modelNew!.$meta.op, \"Updated\");\r\n assert.equal(modelNew!.$meta.stage, \"New\");\r\n assert.equal(modelNew!.$meta.propFilter, PropertyFilter.InstanceKey);\r\n assert.deepEqual([...modelNew!.$meta.changeFetchedPropNames].sort(), [\"ECInstanceId\"].sort());\r\n assert.deepEqual(modelNew!.$meta.rowOptions, {});\r\n assert.equal(modelNew!.$meta.isIndirectChange, true);\r\n\r\n // --- instances[1]: DrawingModel Updated Old ---\r\n const modelOld = instances.find((i) => i.ECInstanceId === drawingModelId && i.$meta.stage === \"Old\");\r\n expect(modelOld).to.exist;\r\n assert.equal(modelOld!.ECInstanceId, drawingModelId);\r\n assert.equal(\"BisCore:DrawingModel\", rwIModel.getClassNameFromId(modelOld!.ECClassId));\r\n assert.deepEqual(Object.keys(modelOld!).sort(), [\"ECInstanceId\", \"ECClassId\", \"$meta\"].sort());\r\n assert.deepEqual(Object.keys(modelOld!.$meta).sort(), [\"op\", \"tables\", \"changeIndexes\", \"stage\", \"instanceKey\", \"propFilter\", \"changeFetchedPropNames\", \"rowOptions\", \"isIndirectChange\"].sort());\r\n assert.equal(modelOld!.$meta.op, \"Updated\");\r\n assert.equal(modelOld!.$meta.stage, \"Old\");\r\n assert.equal(modelOld!.$meta.propFilter, PropertyFilter.InstanceKey);\r\n assert.deepEqual([...modelOld!.$meta.changeFetchedPropNames].sort(), [\"ECInstanceId\"].sort());\r\n assert.deepEqual(modelOld!.$meta.rowOptions, {});\r\n assert.equal(modelOld!.$meta.isIndirectChange, true);\r\n\r\n // --- instances[2]: Test2dElement Updated New ---\r\n const elemNew = instances.find((i) => i.ECInstanceId === fullElementId && i.$meta.stage === \"New\");\r\n expect(elemNew).to.exist;\r\n assert.equal(elemNew!.ECInstanceId, fullElementId);\r\n assert.equal(elemNew!.ECClassId, \"0x176\");\r\n assert.isUndefined(elemNew!.StrProp);\r\n assert.isUndefined(elemNew!.Model);\r\n assert.isUndefined(elemNew!.LastMod);\r\n assert.deepEqual(Object.keys(elemNew!).sort(), [\"ECInstanceId\", \"ECClassId\", \"$meta\"].sort());\r\n assert.deepEqual(Object.keys(elemNew!.$meta).sort(), [\"op\", \"tables\", \"changeIndexes\", \"stage\", \"instanceKey\", \"propFilter\", \"changeFetchedPropNames\", \"rowOptions\", \"isIndirectChange\"].sort());\r\n assert.equal(elemNew!.$meta.op, \"Updated\");\r\n assert.equal(elemNew!.$meta.stage, \"New\");\r\n assert.deepEqual([...elemNew!.$meta.tables].sort(), [\"bis_GeometricElement2d\", \"bis_Element\"].sort());\r\n assert.deepEqual([...elemNew!.$meta.changeIndexes].sort(), [1, 2].sort());\r\n assert.isString(elemNew!.$meta.instanceKey);\r\n assert.equal(elemNew!.$meta.instanceKey.split(`-`).length, 2);\r\n assert.equal(elemNew!.$meta.propFilter, PropertyFilter.InstanceKey);\r\n assert.deepEqual([...elemNew!.$meta.changeFetchedPropNames].sort(), [\"ECInstanceId\"].sort());\r\n assert.deepEqual(elemNew!.$meta.rowOptions, {});\r\n assert.equal(elemNew!.$meta.isIndirectChange, false);\r\n\r\n // --- instances[3]: Test2dElement Updated Old ---\r\n const elemOld = instances.find((i) => i.ECInstanceId === fullElementId && i.$meta.stage === \"Old\");\r\n expect(elemOld).to.exist;\r\n assert.equal(elemOld!.ECInstanceId, fullElementId);\r\n assert.equal(elemOld!.ECClassId, \"0x176\");\r\n assert.isUndefined(elemOld!.StrProp);\r\n assert.isUndefined(elemOld!.Model);\r\n assert.deepEqual(Object.keys(elemOld!).sort(), [\"ECInstanceId\", \"ECClassId\", \"$meta\"].sort());\r\n assert.deepEqual(Object.keys(elemOld!.$meta).sort(), [\"op\", \"tables\", \"changeIndexes\", \"stage\", \"instanceKey\", \"propFilter\", \"changeFetchedPropNames\", \"rowOptions\", \"isIndirectChange\"].sort());\r\n assert.equal(elemOld!.$meta.op, \"Updated\");\r\n assert.equal(elemOld!.$meta.stage, \"Old\");\r\n assert.deepEqual([...elemOld!.$meta.tables].sort(), [\"bis_GeometricElement2d\", \"bis_Element\"].sort());\r\n assert.equal(elemOld!.$meta.propFilter, PropertyFilter.InstanceKey);\r\n assert.deepEqual([...elemOld!.$meta.changeFetchedPropNames].sort(), [\"ECInstanceId\"].sort());\r\n assert.deepEqual(elemOld!.$meta.rowOptions, {});\r\n assert.equal(elemOld!.$meta.isIndirectChange, false);\r\n });\r\n\r\n it(\"txn3 update-full | rowOptions: useJsName\", () => {\r\n const instances = readTxn(rwIModel, txnId, undefined, { useJsName: true }, undefined, false);\r\n assert.equal(instances.length, 4);\r\n\r\n const modelNew = instances.find((i) => i.id === drawingModelId && i.$meta.stage === \"New\");\r\n expect(modelNew).to.exist;\r\n assert.equal(modelNew!.className, \"BisCore.DrawingModel\");\r\n assert.isUndefined(modelNew!.ECInstanceId);\r\n assert.deepEqual(modelNew!.$meta.rowOptions, { useJsName: true });\r\n\r\n const modelOld = instances.find((i) => i.id === drawingModelId && i.$meta.stage === \"Old\");\r\n expect(modelOld).to.exist;\r\n assert.equal(modelOld!.className, \"BisCore.DrawingModel\");\r\n assert.deepEqual(modelOld!.$meta.rowOptions, { useJsName: true });\r\n\r\n const elemNew = instances.find((i) => i.id === fullElementId && i.$meta.stage === \"New\");\r\n expect(elemNew).to.exist;\r\n assert.equal(elemNew!.className, \"TestDomain.Test2dElement\");\r\n assert.isUndefined(elemNew!.ECInstanceId);\r\n assert.equal(elemNew!.strProp, \"updated\");\r\n assert.equal(elemNew!.intProp, 99);\r\n assert.include(String(elemNew!.binProp), \"\\\"bytes\\\"\");\r\n assert.deepEqual(elemNew!.pt2dProp, { x: 9, y: 8 });\r\n assert.deepEqual(elemNew!.pt3dProp, { x: 7, y: 6, z: 5 });\r\n assert.deepEqual(elemNew!.relatedElem, { id: partialElementId, relClassName: \"TestDomain.Test2dUsesElement\" });\r\n assert.equal(elemNew!.$meta.op, \"Updated\");\r\n assert.equal(elemNew!.$meta.propFilter, PropertyFilter.All);\r\n assert.deepEqual(elemNew!.$meta.rowOptions, { useJsName: true });\r\n assert.deepEqual(Object.keys(elemNew!).sort(), [\"$meta\", \"binProp\", \"boolProp\", \"className\",\r\n \"dblProp\", \"dtProp\", \"id\", \"intArrProp\", \"intProp\", \"lastMod\", \"longProp\", \"pt2dProp\",\r\n \"pt3dProp\", \"relatedElem\", \"strArrProp\", \"strProp\", \"structArrProp\", \"structProp\"].sort());\r\n assert.deepEqual([...elemNew!.$meta.changeFetchedPropNames].sort(), [\"BinProp\", \"BoolProp\",\r\n \"DblProp\", \"DtProp\", \"ECInstanceId\", \"IntArrProp\", \"IntProp\", \"LastMod\",\r\n \"LongProp\", \"Pt2dProp\", \"Pt3dProp.X\", \"Pt3dProp.Y\", \"RelatedElem.Id\", \"StrArrProp\", \"StrProp\",\r\n \"StructArrProp\", \"StructProp.Label\", \"StructProp.Pt2d\", \"StructProp.Pt3d\", \"StructProp.X\",\r\n \"StructProp.Y\", \"StructProp.Z\"].sort());\r\n\r\n const elemOld = instances.find((i) => i.id === fullElementId && i.$meta.stage === \"Old\");\r\n expect(elemOld).to.exist;\r\n assert.equal(elemOld!.className, \"TestDomain.Test2dElement\");\r\n assert.isUndefined(elemOld!.ECInstanceId);\r\n assert.equal(elemOld!.strProp, \"hello\");\r\n assert.include(String(elemOld!.binProp), \"\\\"bytes\\\"\");\r\n assert.equal(elemOld!.intProp, 42);\r\n assert.deepEqual(elemOld!.relatedElem, { id: drawingCategoryId, relClassName: \"TestDomain.Test2dUsesElement\" });\r\n assert.deepEqual(elemOld!.$meta.rowOptions, { useJsName: true });\r\n assert.deepEqual(Object.keys(elemOld!).sort(), [\"$meta\", \"binProp\", \"boolProp\", \"className\",\r\n \"dblProp\", \"dtProp\", \"id\", \"intArrProp\", \"intProp\", \"lastMod\", \"longProp\", \"pt2dProp\",\r\n \"pt3dProp\", \"relatedElem\", \"strArrProp\", \"strProp\", \"structArrProp\", \"structProp\"].sort());\r\n assert.deepEqual([...elemOld!.$meta.changeFetchedPropNames].sort(), [\"BinProp\", \"BoolProp\",\r\n \"DblProp\", \"DtProp\", \"ECInstanceId\", \"IntArrProp\", \"IntProp\", \"LastMod\",\r\n \"LongProp\", \"Pt2dProp\", \"Pt3dProp.X\", \"Pt3dProp.Y\", \"RelatedElem.Id\", \"StrArrProp\", \"StrProp\",\r\n \"StructArrProp\", \"StructProp.Label\", \"StructProp.Pt2d\", \"StructProp.Pt3d\", \"StructProp.X\",\r\n \"StructProp.Y\", \"StructProp.Z\"].sort());\r\n });\r\n\r\n it(\"txn3 update-full | rowOptions: abbreviateBlobs\", () => {\r\n const instances = readTxn(rwIModel, txnId, undefined, { abbreviateBlobs: true }, undefined, false);\r\n assert.equal(instances.length, 4);\r\n\r\n const modelNew = instances.find((i) => i.ECInstanceId === drawingModelId && i.$meta.stage === \"New\");\r\n expect(modelNew).to.exist;\r\n assert.equal(\"BisCore:DrawingModel\", rwIModel.getClassNameFromId(modelNew!.ECClassId));\r\n assert.deepEqual(modelNew!.$meta.rowOptions, { abbreviateBlobs: true });\r\n\r\n const modelOld = instances.find((i) => i.ECInstanceId === drawingModelId && i.$meta.stage === \"Old\");\r\n expect(modelOld).to.exist;\r\n assert.equal(\"BisCore:DrawingModel\", rwIModel.getClassNameFromId(modelOld!.ECClassId));\r\n assert.deepEqual(modelOld!.$meta.rowOptions, { abbreviateBlobs: true });\r\n\r\n const elemNew = instances.find((i) => i.ECInstanceId === fullElementId && i.$meta.stage === \"New\");\r\n expect(elemNew).to.exist;\r\n assert.equal(\"TestDomain:Test2dElement\", rwIModel.getClassNameFromId(elemNew!.ECClassId));\r\n assert.equal(elemNew!.StrProp, \"updated\");\r\n // BinProp is a blob should be abbreviated to { bytes: N }\r\n assert.include(String(elemNew!.BinProp), \"bytes\");\r\n assert.equal(elemNew!.$meta.op, \"Updated\");\r\n assert.deepEqual(elemNew!.$meta.rowOptions, { abbreviateBlobs: true });\r\n assert.deepEqual(Object.keys(elemNew!).sort(), [\"$meta\", \"BinProp\", \"BoolProp\",\r\n \"DblProp\", \"DtProp\", \"IntArrProp\", \"IntProp\", \"LastMod\", \"LongProp\",\r\n \"Pt2dProp\", \"Pt3dProp\", \"RelatedElem\", \"StrArrProp\", \"StrProp\", \"StructArrProp\", \"StructProp\", \"ECClassId\", \"ECInstanceId\"].sort());\r\n assert.deepEqual([...elemNew!.$meta.changeFetchedPropNames].sort(), [\"BinProp\", \"BoolProp\",\r\n \"DblProp\", \"DtProp\", \"ECInstanceId\", \"IntArrProp\", \"IntProp\", \"LastMod\",\r\n \"LongProp\", \"Pt2dProp\", \"Pt3dProp.X\", \"Pt3dProp.Y\", \"RelatedElem.Id\", \"StrArrProp\", \"StrProp\",\r\n \"StructArrProp\", \"StructProp.Label\", \"StructProp.Pt2d\", \"StructProp.Pt3d\", \"StructProp.X\",\r\n \"StructProp.Y\", \"StructProp.Z\"].sort());\r\n\r\n const elemOld = instances.find((i) => i.ECInstanceId === fullElementId && i.$meta.stage === \"Old\");\r\n expect(elemOld).to.exist;\r\n assert.equal(elemOld!.ECClassId, \"0x176\");\r\n assert.equal(elemOld!.StrProp, \"hello\");\r\n assert.include(String(elemOld!.BinProp), \"bytes\");\r\n assert.deepEqual(elemOld!.$meta.rowOptions, { abbreviateBlobs: true });\r\n assert.deepEqual(Object.keys(elemOld!).sort(), [\"$meta\", \"BinProp\", \"BoolProp\",\r\n \"DblProp\", \"DtProp\", \"IntArrProp\", \"IntProp\", \"LastMod\", \"LongProp\",\r\n \"Pt2dProp\", \"Pt3dProp\", \"RelatedElem\", \"StrArrProp\", \"StrProp\", \"StructArrProp\", \"StructProp\", \"ECClassId\", \"ECInstanceId\"].sort());\r\n assert.deepEqual([...elemOld!.$meta.changeFetchedPropNames].sort(), [\"BinProp\", \"BoolProp\",\r\n \"DblProp\", \"DtProp\", \"ECInstanceId\", \"IntArrProp\", \"IntProp\", \"LastMod\",\r\n \"LongProp\", \"Pt2dProp\", \"Pt3dProp.X\", \"Pt3dProp.Y\", \"RelatedElem.Id\", \"StrArrProp\", \"StrProp\",\r\n \"StructArrProp\", \"StructProp.Label\", \"StructProp.Pt2d\", \"StructProp.Pt3d\", \"StructProp.X\",\r\n \"StructProp.Y\", \"StructProp.Z\"].sort());\r\n });\r\n\r\n it(\"txn3 update-full | rowOptions: classIdsToClassNames + useJsName\", () => {\r\n const instances = readTxn(rwIModel, txnId, undefined, { classIdsToClassNames: true, useJsName: true }, undefined, false);\r\n assert.equal(instances.length, 4);\r\n\r\n const modelNew = instances.find((i) => i.id === drawingModelId && i.$meta.stage === \"New\");\r\n expect(modelNew).to.exist;\r\n assert.equal(modelNew!.className, \"BisCore.DrawingModel\");\r\n assert.isUndefined(modelNew!.ECInstanceId);\r\n assert.deepEqual(modelNew!.$meta.rowOptions, { classIdsToClassNames: true, useJsName: true });\r\n\r\n const modelOld = instances.find((i) => i.id === drawingModelId && i.$meta.stage === \"Old\");\r\n expect(modelOld).to.exist;\r\n assert.equal(modelOld!.className, \"BisCore.DrawingModel\");\r\n assert.deepEqual(modelOld!.$meta.rowOptions, { classIdsToClassNames: true, useJsName: true });\r\n\r\n const elemNew = instances.find((i) => i.id === fullElementId && i.$meta.stage === \"New\");\r\n expect(elemNew).to.exist;\r\n assert.equal(elemNew!.className, \"TestDomain.Test2dElement\");\r\n assert.isUndefined(elemNew!.ECInstanceId);\r\n assert.equal(elemNew!.strProp, \"updated\");\r\n assert.equal(elemNew!.intProp, 99);\r\n assert.include(String(elemNew!.binProp), \"\\\"bytes\\\"\");\r\n assert.deepEqual(elemNew!.relatedElem, { id: partialElementId, relClassName: \"TestDomain.Test2dUsesElement\" });\r\n assert.equal(elemNew!.$meta.op, \"Updated\");\r\n assert.deepEqual(elemNew!.$meta.rowOptions, { classIdsToClassNames: true, useJsName: true });\r\n assert.deepEqual(Object.keys(elemNew!).sort(), [\"$meta\", \"binProp\", \"boolProp\", \"className\",\r\n \"dblProp\", \"dtProp\", \"id\", \"intArrProp\", \"intProp\", \"lastMod\", \"longProp\", \"pt2dProp\",\r\n \"pt3dProp\", \"relatedElem\", \"strArrProp\", \"strProp\", \"structArrProp\", \"structProp\"].sort());\r\n assert.deepEqual([...elemNew!.$meta.changeFetchedPropNames].sort(), [\"BinProp\", \"BoolProp\",\r\n \"DblProp\", \"DtProp\", \"ECInstanceId\", \"IntArrProp\", \"IntProp\", \"LastMod\",\r\n \"LongProp\", \"Pt2dProp\", \"Pt3dProp.X\", \"Pt3dProp.Y\", \"RelatedElem.Id\", \"StrArrProp\", \"StrProp\",\r\n \"StructArrProp\", \"StructProp.Label\", \"StructProp.Pt2d\", \"StructProp.Pt3d\", \"StructProp.X\",\r\n \"StructProp.Y\", \"StructProp.Z\"].sort());\r\n\r\n const elemOld = instances.find((i) => i.id === fullElementId && i.$meta.stage === \"Old\");\r\n expect(elemOld).to.exist;\r\n assert.equal(elemOld!.className, \"TestDomain.Test2dElement\");\r\n assert.isUndefined(elemOld!.ECInstanceId);\r\n assert.equal(elemOld!.strProp, \"hello\");\r\n assert.include(String(elemOld!.binProp), \"\\\"bytes\\\"\");\r\n assert.deepEqual(elemOld!.relatedElem, { id: drawingCategoryId, relClassName: \"TestDomain.Test2dUsesElement\" });\r\n assert.deepEqual(elemOld!.$meta.rowOptions, { classIdsToClassNames: true, useJsName: true });\r\n assert.deepEqual(Object.keys(elemOld!).sort(), [\"$meta\", \"binProp\", \"boolProp\", \"className\",\r\n \"dblProp\", \"dtProp\", \"id\", \"intArrProp\", \"intProp\", \"lastMod\", \"longProp\", \"pt2dProp\",\r\n \"pt3dProp\", \"relatedElem\", \"strArrProp\", \"strProp\", \"structArrProp\", \"structProp\"].sort());\r\n assert.deepEqual([...elemOld!.$meta.changeFetchedPropNames].sort(), [\"BinProp\", \"BoolProp\",\r\n \"DblProp\", \"DtProp\", \"ECInstanceId\", \"IntArrProp\", \"IntProp\", \"LastMod\",\r\n \"LongProp\", \"Pt2dProp\", \"Pt3dProp.X\", \"Pt3dProp.Y\", \"RelatedElem.Id\", \"StrArrProp\", \"StrProp\",\r\n \"StructArrProp\", \"StructProp.Label\", \"StructProp.Pt2d\", \"StructProp.Pt3d\", \"StructProp.X\",\r\n \"StructProp.Y\", \"StructProp.Z\"].sort());\r\n });\r\n\r\n it(\"txn3 update-full | rowOptions: classIdsToClassNames\", () => {\r\n\r\n const instances = readTxn(rwIModel, txnId, undefined, { classIdsToClassNames: true }, undefined, false);\r\n assert.equal(instances.length, 4);\r\n\r\n const modelNew = instances.find((i) => i.ECInstanceId === drawingModelId && i.$meta.stage === \"New\");\r\n expect(modelNew).to.exist;\r\n assert.equal(modelNew!.ECClassId, \"BisCore.DrawingModel\");\r\n assert.deepEqual(modelNew!.$meta.rowOptions, { classIdsToClassNames: true });\r\n\r\n const modelOld = instances.find((i) => i.ECInstanceId === drawingModelId && i.$meta.stage === \"Old\");\r\n expect(modelOld).to.exist;\r\n assert.equal(modelOld!.ECClassId, \"BisCore.DrawingModel\");\r\n assert.deepEqual(modelOld!.$meta.rowOptions, { classIdsToClassNames: true });\r\n\r\n const elemNew = instances.find((i) => i.ECInstanceId === fullElementId && i.$meta.stage === \"New\");\r\n expect(elemNew).to.exist;\r\n assert.equal(elemNew!.ECClassId, \"TestDomain.Test2dElement\");\r\n assert.equal(elemNew!.StrProp, \"updated\");\r\n assert.equal(elemNew!.IntProp, 99);\r\n assert.include(String(elemNew!.BinProp), \"\\\"bytes\\\"\");\r\n assert.deepEqual(elemNew!.RelatedElem, { Id: partialElementId, RelECClassId: \"TestDomain.Test2dUsesElement\" });\r\n assert.equal(elemNew!.$meta.op, \"Updated\");\r\n assert.equal(elemNew!.$meta.propFilter, PropertyFilter.All);\r\n assert.deepEqual(elemNew!.$meta.rowOptions, { classIdsToClassNames: true });\r\n\r\n assert.deepEqual(Object.keys(elemNew!).sort(), [\"$meta\", \"BinProp\", \"BoolProp\",\r\n \"DblProp\", \"DtProp\", \"IntArrProp\", \"IntProp\", \"LastMod\", \"LongProp\",\r\n \"Pt2dProp\", \"Pt3dProp\", \"RelatedElem\", \"StrArrProp\", \"StrProp\", \"StructArrProp\", \"StructProp\", \"ECClassId\", \"ECInstanceId\"].sort());\r\n assert.deepEqual([...elemNew!.$meta.changeFetchedPropNames].sort(), [\"BinProp\", \"BoolProp\",\r\n \"DblProp\", \"DtProp\", \"ECInstanceId\", \"IntArrProp\", \"IntProp\", \"LastMod\",\r\n \"LongProp\", \"Pt2dProp\", \"Pt3dProp.X\", \"Pt3dProp.Y\", \"RelatedElem.Id\", \"StrArrProp\", \"StrProp\",\r\n \"StructArrProp\", \"StructProp.Label\", \"StructProp.Pt2d\", \"StructProp.Pt3d\", \"StructProp.X\",\r\n \"StructProp.Y\", \"StructProp.Z\"].sort());\r\n\r\n const elemOld = instances.find((i) => i.ECInstanceId === fullElementId && i.$meta.stage === \"Old\");\r\n expect(elemOld).to.exist;\r\n assert.equal(elemOld!.ECClassId, \"TestDomain.Test2dElement\");\r\n assert.equal(elemOld!.StrProp, \"hello\");\r\n assert.equal(elemOld!.IntProp, 42);\r\n assert.include(String(elemOld!.BinProp), \"\\\"bytes\\\"\");\r\n assert.deepEqual(elemOld!.RelatedElem, { Id: drawingCategoryId, RelECClassId: \"TestDomain.Test2dUsesElement\" });\r\n assert.equal(elemOld!.$meta.op, \"Updated\");\r\n assert.deepEqual(elemOld!.$meta.rowOptions, { classIdsToClassNames: true });\r\n\r\n assert.deepEqual(Object.keys(elemOld!).sort(), [\"$meta\", \"BinProp\", \"BoolProp\",\r\n \"DblProp\", \"DtProp\", \"IntArrProp\", \"IntProp\", \"LastMod\", \"LongProp\",\r\n \"Pt2dProp\", \"Pt3dProp\", \"RelatedElem\", \"StrArrProp\", \"StrProp\", \"StructArrProp\", \"StructProp\", \"ECClassId\", \"ECInstanceId\"].sort());\r\n assert.deepEqual([...elemOld!.$meta.changeFetchedPropNames].sort(), [\"BinProp\", \"BoolProp\",\r\n \"DblProp\", \"DtProp\", \"ECInstanceId\", \"IntArrProp\", \"IntProp\", \"LastMod\",\r\n \"LongProp\", \"Pt2dProp\", \"Pt3dProp.X\", \"Pt3dProp.Y\", \"RelatedElem.Id\", \"StrArrProp\", \"StrProp\",\r\n \"StructArrProp\", \"StructProp.Label\", \"StructProp.Pt2d\", \"StructProp.Pt3d\", \"StructProp.X\",\r\n \"StructProp.Y\", \"StructProp.Z\"].sort());\r\n });\r\n it(\"should throw error if tried to fetch changeset metadata values before stepping\", () => {\r\n using reader = ChangesetReader.openTxn({ db: rwIModel, txnId });\r\n expect(() => reader.isECTable).to.throw();\r\n expect(() => reader.isIndirectChange).to.throw();\r\n expect(() => reader.tableName).to.throw();\r\n expect(() => reader.op).to.throw();\r\n assert.isUndefined(reader.inserted);\r\n assert.isUndefined(reader.deleted);\r\n reader.close();\r\n });\r\n it(\"should throw error if tried to fetch changeset metadata values after stepping past the end\", () => {\r\n using reader = ChangesetReader.openTxn({ db: rwIModel, txnId });\r\n while (reader.step()) { }\r\n assert.equal(reader.step(), false);\r\n assert.equal(reader.step(), false); // trying multiple steps past the end should still return false and not throw, but metadata access should throw\r\n assert.equal(reader.step(), false);\r\n expect(() => reader.isECTable).to.throw();\r\n expect(() => reader.isIndirectChange).to.throw();\r\n expect(() => reader.tableName).to.throw();\r\n expect(() => reader.op).to.throw();\r\n assert.isUndefined(reader.inserted);\r\n assert.isUndefined(reader.deleted);\r\n reader.close();\r\n });\r\n});\r\n\r\ndescribe(\"ChangesetReader delete-partial\", () => {\r\n let rwIModel: BriefcaseDb;\r\n let partialElementId: Id64String;\r\n let drawingModelId: Id64String;\r\n let drawingCategoryId: Id64String;\r\n let txnId: string;\r\n let txn: EditTxn;\r\n\r\n before(async () => {\r\n HubMock.startup(\"ECChangesetDeletePartial\", KnownTestLocations.outputDir);\r\n const adminToken = \"super manager token\";\r\n const iTwinId = HubMock.iTwinId;\r\n const rwIModelId = await HubMock.createNewIModel({ iTwinId, iModelName: \"deletePartial\", description: \"deletePartial\", accessToken: adminToken });\r\n rwIModel = await HubWrappers.downloadAndOpenBriefcase({ iTwinId, iModelId: rwIModelId, accessToken: adminToken });\r\n txn = startTestTxn(rwIModel, \"ChangesetReader delete-partial\");\r\n // Txn 1: import schema + drawing model setup, then push\r\n const schema = `<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n <ECSchema schemaName=\"TestDomain\" alias=\"ts\" version=\"01.00\" xmlns=\"http://www.bentley.com/schemas/Bentley.ECXML.3.1\">\r\n <ECSchemaReference name=\"BisCore\" version=\"01.00\" alias=\"bis\"/>\r\n <!-- Rich struct: scalar fields + nested point2d/3d sub-properties -->\r\n <ECStructClass typeName=\"RichPoint\" modifier=\"Sealed\">\r\n <ECProperty propertyName=\"X\" typeName=\"double\"/>\r\n <ECProperty propertyName=\"Y\" typeName=\"double\"/>\r\n <ECProperty propertyName=\"Z\" typeName=\"double\"/>\r\n <ECProperty propertyName=\"Label\" typeName=\"string\"/>\r\n <ECProperty propertyName=\"Pt2d\" typeName=\"point2d\"/>\r\n <ECProperty propertyName=\"Pt3d\" typeName=\"point3d\"/>\r\n </ECStructClass>\r\n <!-- Relationship used by the RelatedElem navigation property -->\r\n <ECRelationshipClass typeName=\"Test2dUsesElement\" strength=\"referencing\" modifier=\"None\">\r\n <Source multiplicity=\"(0..*)\" roleLabel=\"uses\" polymorphic=\"true\"><Class class=\"Test2dElement\"/></Source>\r\n <Target multiplicity=\"(0..1)\" roleLabel=\"is used by\" polymorphic=\"true\"><Class class=\"bis:Element\"/></Target>\r\n </ECRelationshipClass>\r\n <ECEntityClass typeName=\"Test2dElement\">\r\n <BaseClass>bis:GraphicalElement2d</BaseClass>\r\n <!-- Primitives -->\r\n <ECProperty propertyName=\"StrProp\" typeName=\"string\"/>\r\n <ECProperty propertyName=\"IntProp\" typeName=\"int\"/>\r\n <ECProperty propertyName=\"LongProp\" typeName=\"long\"/>\r\n <ECProperty propertyName=\"DblProp\" typeName=\"double\"/>\r\n <ECProperty propertyName=\"BoolProp\" typeName=\"boolean\"/>\r\n <ECProperty propertyName=\"DtProp\" typeName=\"dateTime\"/>\r\n <ECProperty propertyName=\"BinProp\" typeName=\"binary\"/>\r\n <!-- Geometric primitives -->\r\n <ECProperty propertyName=\"Pt2dProp\" typeName=\"point2d\"/>\r\n <ECProperty propertyName=\"Pt3dProp\" typeName=\"point3d\"/>\r\n <!-- Struct, arrays -->\r\n <ECStructProperty propertyName=\"StructProp\" typeName=\"RichPoint\"/>\r\n <ECArrayProperty propertyName=\"IntArrProp\" typeName=\"int\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\r\n <ECArrayProperty propertyName=\"StrArrProp\" typeName=\"string\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\r\n <ECStructArrayProperty propertyName=\"StructArrProp\" typeName=\"RichPoint\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\r\n <!-- Navigation property -->\r\n <ECNavigationProperty propertyName=\"RelatedElem\" relationshipName=\"Test2dUsesElement\" direction=\"forward\"/>\r\n </ECEntityClass>\r\n </ECSchema>`;\r\n await importSchemaStrings(txn, [schema]);\r\n rwIModel.channels.addAllowedChannel(ChannelControl.sharedChannelName);\r\n\r\n await rwIModel.locks.acquireLocks({ shared: IModel.dictionaryId });\r\n const codeProps = Code.createEmpty();\r\n codeProps.value = \"DrillDownDrawing\";\r\n [, drawingModelId] = IModelTestUtils.createAndInsertDrawingPartitionAndModel(txn, codeProps, true);\r\n\r\n const foundCat = DrawingCategory.queryCategoryIdByName(rwIModel, IModel.dictionaryId, \"DrillDownCategory\");\r\n drawingCategoryId = foundCat ?? DrawingCategory.insert(txn, IModel.dictionaryId, \"DrillDownCategory\",\r\n new SubCategoryAppearance({ color: ColorDef.fromString(\"rgb(255,0,0)\").toJSON() }));\r\n\r\n txn.saveChanges(\"setup\");\r\n // Wait so that LastMod on bis_Model gets a distinct timestamp before the insert txn\r\n await new Promise((resolve) => setTimeout(resolve, 300));\r\n // Txn 2: insert PARTIAL element\r\n partialElementId = txn.insertElement({\r\n classFullName: \"TestDomain:Test2dElement\",\r\n model: drawingModelId,\r\n category: drawingCategoryId,\r\n code: Code.createEmpty(),\r\n // StrProp, IntProp, LongProp, DblProp, BoolProp, DtProp, BinProp intentionally absent\r\n } as any);\r\n txn.saveChanges(\"insert partial element\");\r\n txnId = rwIModel.txns.getLastSavedTxnProps()!.id;\r\n // Wait so that LastMod on bis_Model gets a distinct timestamp before the delete txn\r\n await new Promise((resolve) => setTimeout(resolve, 300));\r\n await rwIModel.locks.acquireLocks({ exclusive: partialElementId });\r\n txn.deleteElement(partialElementId);\r\n txn.saveChanges(\"delete partial element\");\r\n txnId = rwIModel.txns.getLastSavedTxnProps()!.id;\r\n });\r\n\r\n after(() => {\r\n txn.end();\r\n rwIModel?.close();\r\n HubMock.shutdown();\r\n });\r\n\r\n it(\"txn4 delete-partial | All_Properties | default rowOptions\", () => {\r\n const instances = readTxn(rwIModel, txnId);\r\n assert.equal(instances.length, 3);\r\n\r\n // --- instances[0]: DrawingModel Updated New ---\r\n const modelNew = instances.find((i) => i.ECInstanceId === drawingModelId && i.$meta.stage === \"New\");\r\n expect(modelNew).to.exist;\r\n assert.equal(modelNew!.ECInstanceId, drawingModelId);\r\n assert.equal(\"BisCore:DrawingModel\", rwIModel.getClassNameFromId(modelNew!.ECClassId));\r\n assert.isString(modelNew!.LastMod);\r\n assert.isString(modelNew!.GeometryGuid);\r\n assert.deepEqual(Object.keys(modelNew!).sort(), [\"ECInstanceId\", \"ECClassId\", \"LastMod\", \"GeometryGuid\", \"$meta\"].sort());\r\n assert.deepEqual(Object.keys(modelNew!.$meta).sort(), [\"op\", \"tables\", \"changeIndexes\", \"stage\", \"instanceKey\", \"propFilter\", \"changeFetchedPropNames\", \"rowOptions\", \"isIndirectChange\"].sort());\r\n assert.equal(modelNew!.$meta.op, \"Updated\");\r\n assert.equal(modelNew!.$meta.stage, \"New\");\r\n assert.equal(modelNew!.$meta.propFilter, PropertyFilter.All);\r\n assert.deepEqual([...modelNew!.$meta.changeFetchedPropNames].sort(), [\"ECInstanceId\", \"LastMod\", \"GeometryGuid\"].sort());\r\n assert.deepEqual(modelNew!.$meta.rowOptions, {});\r\n assert.equal(modelNew!.$meta.isIndirectChange, true);\r\n\r\n // --- instances[1]: DrawingModel Updated Old ---\r\n const modelOld = instances.find((i) => i.ECInstanceId === drawingModelId && i.$meta.stage === \"Old\");\r\n expect(modelOld).to.exist;\r\n assert.equal(modelOld!.ECInstanceId, drawingModelId);\r\n assert.equal(\"BisCore:DrawingModel\", rwIModel.getClassNameFromId(modelOld!.ECClassId));\r\n assert.isString(modelOld!.LastMod);\r\n assert.isString(modelOld!.GeometryGuid);\r\n assert.deepEqual(Object.keys(modelOld!).sort(), [\"ECInstanceId\", \"ECClassId\", \"LastMod\", \"GeometryGuid\", \"$meta\"].sort());\r\n assert.deepEqual(Object.keys(modelOld!.$meta).sort(), [\"op\", \"tables\", \"changeIndexes\", \"stage\", \"instanceKey\", \"propFilter\", \"changeFetchedPropNames\", \"rowOptions\", \"isIndirectChange\"].sort());\r\n assert.equal(modelOld!.$meta.op, \"Updated\");\r\n assert.equal(modelOld!.$meta.stage, \"Old\");\r\n assert.equal(modelOld!.$meta.propFilter, PropertyFilter.All);\r\n assert.deepEqual([...modelOld!.$meta.changeFetchedPropNames].sort(), [\"ECInstanceId\", \"LastMod\", \"GeometryGuid\"].sort());\r\n assert.deepEqual(modelOld!.$meta.rowOptions, {});\r\n assert.equal(modelOld!.$meta.isIndirectChange, true);\r\n\r\n // --- instances[2]: Test2dElement (partial) Deleted Old ---\r\n const elem = instances.find((i) => i.ECInstanceId === partialElementId && i.$meta.stage === \"Old\");\r\n expect(elem).to.exist;\r\n assert.equal(elem!.ECInstanceId, partialElementId);\r\n assert.equal(\"TestDomain:Test2dElement\", rwIModel.getClassNameFromId(elem!.ECClassId));\r\n assert.equal(elem!.Model.Id, drawingModelId);\r\n assert.equal(rwIModel.getClassNameFromId(elem!.Model.RelECClassId), \"BisCore:ModelContainsElements\");\r\n assert.isString(elem!.LastMod);\r\n assert.equal(elem!.CodeSpec.Id, \"0x1\");\r\n assert.equal(rwIModel.getClassNameFromId(elem!.CodeSpec.RelECClassId), \"BisCore:CodeSpecSpecifiesCode\");\r\n\r\n assert.equal(elem!.CodeScope.Id, \"0x1\");\r\n assert.equal(rwIModel.getClassNameFromId(elem!.CodeScope.RelECClassId), \"BisCore:ElementScopesCode\");\r\n assert.isString(elem!.FederationGuid);\r\n assert.equal(elem!.Category.Id, drawingCategoryId);\r\n assert.equal(rwIModel.getClassNameFromId(elem!.Category.RelECClassId), \"BisCore:GeometricElement2dIsInCategory\");\r\n // Partial element had no custom props at time of delete\r\n assert.isUndefined(elem!.StrProp);\r\n assert.isUndefined(elem!.IntProp);\r\n assert.isUndefined(elem!.Pt2dProp);\r\n assert.isUndefined(elem!.StructProp);\r\n assert.isUndefined(elem!.IntArrProp);\r\n assert.deepEqual(Object.keys(elem!).sort(), [\r\n \"ECInstanceId\", \"ECClassId\", \"Model\", \"LastMod\", \"CodeSpec\", \"CodeScope\", \"FederationGuid\", \"$meta\",\r\n \"Category\",\r\n ].sort());\r\n assert.deepEqual(Object.keys(elem!.$meta).sort(), [\"op\", \"tables\", \"changeIndexes\", \"stage\", \"instanceKey\", \"propFilter\", \"changeFetchedPropNames\", \"rowOptions\", \"isIndirectChange\"].sort());\r\n assert.equal(elem!.$meta.op, \"Deleted\");\r\n assert.equal(elem!.$meta.stage, \"Old\");\r\n assert.deepEqual([...elem!.$meta.tables].sort(), [\"bis_Element\", \"bis_GeometricElement2d\"].sort());\r\n assert.deepEqual([...elem!.$meta.changeIndexes].sort(), [1, 2].sort());\r\n assert.isString(elem!.$meta.instanceKey);\r\n assert.equal(elem!.$meta.instanceKey.split(`-`).length, 2);\r\n assert.equal(elem!.$meta.propFilter, PropertyFilter.All);\r\n assert.deepEqual([...elem!.$meta.changeFetchedPropNames].sort(), [\"BBoxHigh\", \"BBoxLow\", \"BinProp\", \"BoolProp\",\r\n \"Category.Id\", \"CodeScope.Id\", \"CodeSpec.Id\", \"CodeValue\", \"DblProp\", \"DtProp\", \"ECClassId\", \"ECInstanceId\", \"FederationGuid\", \"GeometryStream\",\r\n \"IntArrProp\", \"IntProp\", \"JsonProperties\", \"LastMod\", \"LongProp\", \"Model.Id\", \"Origin\", \"Parent\", \"Pt2dProp\", \"Pt3dProp\", \"RelatedElem\", \"Rotation\", \"StrArrProp\", \"StrProp\",\r\n \"StructArrProp\", \"StructProp.Label\", \"StructProp.Pt2d\", \"StructProp.Pt3d\", \"StructProp.X\", \"StructProp.Y\", \"StructProp.Z\", \"TypeDefinition\", \"UserLabel\"\r\n ].sort());\r\n assert.deepEqual(elem!.$meta.rowOptions, {});\r\n assert.equal(elem!.$meta.isIndirectChange, false);\r\n });\r\n\r\n it(\"txn4 delete-partial | Bis_Element_Properties\", () => {\r\n const instances = readTxn(rwIModel, txnId, PropertyFilter.BisCoreElement, { classIdsToClassNames: true });\r\n assert.equal(instances.length, 3);\r\n\r\n // --- instances[0]: DrawingModel Updated New ---\r\n const modelNew = instances.find((i) => i.ECInstanceId === drawingModelId && i.$meta.stage === \"New\");\r\n expect(modelNew).to.exist;\r\n assert.equal(modelNew!.ECInstanceId, drawingModelId);\r\n assert.equal(modelNew!.ECClassId, \"BisCore.DrawingModel\");\r\n assert.isString(modelNew!.LastMod);\r\n assert.isString(modelNew!.GeometryGuid);\r\n assert.deepEqual(Object.keys(modelNew!).sort(), [\"ECInstanceId\", \"ECClassId\", \"LastMod\", \"GeometryGuid\", \"$meta\"].sort());\r\n assert.deepEqual(Object.keys(modelNew!.$meta).sort(), [\"op\", \"tables\", \"changeIndexes\", \"stage\", \"instanceKey\", \"propFilter\", \"changeFetchedPropNames\", \"rowOptions\", \"isIndirectChange\"].sort());\r\n assert.equal(modelNew!.$meta.op, \"Updated\");\r\n assert.equal(modelNew!.$meta.stage, \"New\");\r\n assert.equal(modelNew!.$meta.propFilter, PropertyFilter.BisCoreElement);\r\n assert.deepEqual([...modelNew!.$meta.changeFetchedPropNames].sort(), [\"ECInstanceId\", \"LastMod\", \"GeometryGuid\"].sort());\r\n assert.deepEqual(modelNew!.$meta.rowOptions, { classIdsToClassNames: true });\r\n assert.equal(modelNew!.$meta.isIndirectChange, true);\r\n\r\n // --- instances[1]: DrawingModel Updated Old ---\r\n const modelOld = instances.find((i) => i.ECInstanceId === drawingModelId && i.$meta.stage === \"Old\");\r\n expect(modelOld).to.exist;\r\n assert.equal(modelOld!.ECInstanceId, drawingModelId);\r\n assert.equal(modelOld!.ECClassId, \"BisCore.DrawingModel\");\r\n assert.isString(modelOld!.LastMod);\r\n assert.isString(modelOld!.GeometryGuid);\r\n assert.deepEqual(Object.keys(modelOld!).sort(), [\"ECInstanceId\", \"ECClassId\", \"LastMod\", \"GeometryGuid\", \"$meta\"].sort());\r\n assert.deepEqual(Object.keys(modelOld!.$meta).sort(), [\"op\", \"tables\", \"changeIndexes\", \"stage\", \"instanceKey\", \"propFilter\", \"changeFetchedPropNames\", \"rowOptions\", \"isIndirectChange\"].sort());\r\n assert.equal(modelOld!.$meta.op, \"Updated\");\r\n assert.equal(modelOld!.$meta.stage, \"Old\");\r\n assert.equal(modelOld!.$meta.propFilter, PropertyFilter.BisCoreElement);\r\n assert.deepEqual([...modelOld!.$meta.changeFetchedPropNames].sort(), [\"ECInstanceId\", \"LastMod\", \"GeometryGuid\"].sort());\r\n assert.deepEqual(modelOld!.$meta.rowOptions, { classIdsToClassNames: true });\r\n assert.equal(modelOld!.$meta.isIndirectChange, true);\r\n\r\n // --- instances[2]: Test2dElement (partial) Deleted Old ---\r\n const elem = instances.find((i) => i.ECInstanceId === partialElementId && i.$meta.stage === \"Old\");\r\n expect(elem).to.exist;\r\n assert.equal(elem!.ECInstanceId, partialElementId);\r\n assert.equal(elem!.ECClassId, \"TestDomain.Test2dElement\");\r\n assert.isUndefined(elem!.StrProp);\r\n assert.isUndefined(elem!.Category);\r\n expect(elem!.Model).to.exist;\r\n expect(elem!.LastMod).to.exist;\r\n expect(elem!.CodeSpec).to.exist;\r\n expect(elem!.CodeScope).to.exist;\r\n expect(elem!.FederationGuid).to.exist;\r\n assert.deepEqual(Object.keys(elem!).sort(), [\"ECInstanceId\", \"ECClassId\", \"$meta\", \"Model\", \"LastMod\", \"CodeSpec\", \"CodeScope\", \"FederationGuid\"].sort());\r\n assert.deepEqual(Object.keys(elem!.$meta).sort(), [\"op\", \"tables\", \"changeIndexes\", \"stage\", \"instanceKey\", \"propFilter\", \"changeFetchedPropNames\", \"rowOptions\", \"isIndirectChange\"].sort());\r\n assert.equal(elem!.$meta.op, \"Deleted\");\r\n assert.equal(elem!.$meta.stage, \"Old\");\r\n assert.deepEqual([...elem!.$meta.tables].sort(), [\"bis_Element\", \"bis_GeometricElement2d\"].sort());\r\n assert.deepEqual([...elem!.$meta.changeIndexes].sort(), [1, 2].sort());\r\n assert.isString(elem!.$meta.instanceKey);\r\n assert.equal(elem!.$meta.instanceKey.split(`-`).length, 2);\r\n assert.equal(elem!.$meta.propFilter, PropertyFilter.BisCoreElement);\r\n assert.deepEqual([...elem!.$meta.changeFetchedPropNames].sort(), [\"CodeScope.Id\", \"CodeSpec.Id\", \"CodeValue\", \"ECClassId\", \"ECInstanceId\",\r\n \"FederationGuid\", \"JsonProperties\", \"LastMod\", \"Model.Id\", \"Parent\", \"UserLabel\"].sort());\r\n assert.deepEqual(elem!.$meta.rowOptions, { classIdsToClassNames: true });\r\n assert.equal(elem!.$meta.isIndirectChange, false);\r\n });\r\n\r\n it(\"txn4 delete-partial | Instance_Key\", () => {\r\n const instances = readTxn(rwIModel, txnId, PropertyFilter.InstanceKey);\r\n assert.equal(instances.length, 3);\r\n\r\n // --- instances[0]: DrawingModel Updated New ---\r\n const modelNew = instances.find((i) => i.ECInstanceId === drawingModelId && i.$meta.stage === \"New\");\r\n expect(modelNew).to.exist;\r\n assert.equal(modelNew!.ECInstanceId, drawingModelId);\r\n assert.equal(\"BisCore:DrawingModel\", rwIModel.getClassNameFromId(modelNew!.ECClassId));\r\n assert.deepEqual(Object.keys(modelNew!).sort(), [\"ECInstanceId\", \"ECClassId\", \"$meta\"].sort());\r\n assert.deepEqual(Object.keys(modelNew!.$meta).sort(), [\"op\", \"tables\", \"changeIndexes\", \"stage\", \"instanceKey\", \"propFilter\", \"changeFetchedPropNames\", \"rowOptions\", \"isIndirectChange\"].sort());\r\n assert.equal(modelNew!.$meta.op, \"Updated\");\r\n assert.equal(modelNew!.$meta.stage, \"New\");\r\n assert.equal(modelNew!.$meta.propFilter, PropertyFilter.InstanceKey);\r\n assert.deepEqual([...modelNew!.$meta.changeFetchedPropNames].sort(), [\"ECInstanceId\"].sort());\r\n assert.deepEqual(modelNew!.$meta.rowOptions, {});\r\n assert.equal(modelNew!.$meta.isIndirectChange, true);\r\n\r\n // --- instances[1]: DrawingModel Updated Old ---\r\n const modelOld = instances.find((i) => i.ECInstanceId === drawingModelId && i.$meta.stage === \"Old\");\r\n expect(modelOld).to.exist;\r\n assert.equal(modelOld!.ECInstanceId, drawingModelId);\r\n assert.equal(\"BisCore:DrawingModel\", rwIModel.getClassNameFromId(modelOld!.ECClassId));\r\n assert.deepEqual(Object.keys(modelOld!).sort(), [\"ECInstanceId\", \"ECClassId\", \"$meta\"].sort());\r\n assert.deepEqual(Object.keys(modelOld!.$meta).sort(), [\"op\", \"tables\", \"changeIndexes\", \"stage\", \"instanceKey\", \"propFilter\", \"changeFetchedPropNames\", \"rowOptions\", \"isIndirectChange\"].sort());\r\n assert.equal(modelOld!.$meta.op, \"Updated\");\r\n assert.equal(modelOld!.$meta.stage, \"Old\");\r\n assert.equal(modelOld!.$meta.propFilter, PropertyFilter.InstanceKey);\r\n assert.deepEqual([...modelOld!.$meta.changeFetchedPropNames].sort(), [\"ECInstanceId\"].sort());\r\n assert.deepEqual(modelOld!.$meta.rowOptions, {});\r\n assert.equal(modelOld!.$meta.isIndirectChange, true);\r\n\r\n // --- instances[2]: Test2dElement (partial) Deleted Old ---\r\n const elem = instances.find((i) => i.ECInstanceId === partialElementId && i.$meta.stage === \"Old\");\r\n expect(elem).to.exist;\r\n assert.equal(elem!.ECInstanceId, partialElementId);\r\n assert.equal(\"TestDomain:Test2dElement\", rwIModel.getClassNameFromId(elem!.ECClassId));\r\n assert.isUndefined(elem!.StrProp);\r\n assert.isUndefined(elem!.Model);\r\n assert.isUndefined(elem!.LastMod);\r\n assert.deepEqual(Object.keys(elem!).sort(), [\"ECInstanceId\", \"ECClassId\", \"$meta\"].sort());\r\n assert.deepEqual(Object.keys(elem!.$meta).sort(), [\"op\", \"tables\", \"changeIndexes\", \"stage\", \"instanceKey\", \"propFilter\", \"changeFetchedPropNames\", \"rowOptions\", \"isIndirectChange\"].sort());\r\n assert.equal(elem!.$meta.op, \"Deleted\");\r\n assert.equal(elem!.$meta.stage, \"Old\");\r\n assert.deepEqual([...elem!.$meta.tables].sort(), [\"bis_Element\", \"bis_GeometricElement2d\"].sort());\r\n assert.deepEqual([...elem!.$meta.changeIndexes].sort(), [1, 2].sort());\r\n assert.isString(elem!.$meta.instanceKey);\r\n assert.equal(elem!.$meta.instanceKey.split(`-`).length, 2);\r\n assert.equal(elem!.$meta.propFilter, PropertyFilter.InstanceKey);\r\n assert.deepEqual([...elem!.$meta.changeFetchedPropNames].sort(), ['ECClassId', 'ECInstanceId'].sort());\r\n assert.deepEqual(elem!.$meta.rowOptions, {});\r\n assert.equal(elem!.$meta.isIndirectChange, false);\r\n });\r\n\r\n it(\"txn4 delete-partial | rowOptions: classIdsToClassNames\", () => {\r\n const instances = readTxn(rwIModel, txnId, undefined, { classIdsToClassNames: true });\r\n assert.equal(instances.length, 3);\r\n\r\n const modelNew = instances.find((i) => i.ECInstanceId === drawingModelId && i.$meta.stage === \"New\");\r\n expect(modelNew).to.exist;\r\n assert.equal(modelNew!.ECClassId, \"BisCore.DrawingModel\");\r\n assert.deepEqual(modelNew!.$meta.rowOptions, { classIdsToClassNames: true });\r\n\r\n const modelOld = instances.find((i) => i.ECInstanceId === drawingModelId && i.$meta.stage === \"Old\");\r\n expect(modelOld).to.exist;\r\n assert.equal(modelOld!.ECClassId, \"BisCore.DrawingModel\");\r\n assert.deepEqual(modelOld!.$meta.rowOptions, { classIdsToClassNames: true });\r\n\r\n const elem = instances.find((i) => i.ECInstanceId === partialElementId && i.$meta.stage === \"Old\");\r\n expect(elem).to.exist;\r\n assert.equal(elem!.ECClassId, \"TestDomain.Test2dElement\");\r\n assert.deepEqual(elem!.Model, { Id: drawingModelId, RelECClassId: \"BisCore.ModelContainsElements\" });\r\n assert.deepEqual(elem!.CodeSpec, { Id: \"0x1\", RelECClassId: \"BisCore.CodeSpecSpecifiesCode\" });\r\n assert.deepEqual(elem!.CodeScope, { Id: \"0x1\", RelECClassId: \"BisCore.ElementScopesCode\" });\r\n assert.deepEqual(elem!.Category, { Id: drawingCategoryId, RelECClassId: \"BisCore.GeometricElement2dIsInCategory\" });\r\n assert.isUndefined(elem!.StrProp);\r\n assert.deepEqual(Object.keys(elem!).sort(), [\r\n \"ECInstanceId\", \"ECClassId\", \"Model\", \"LastMod\", \"CodeSpec\", \"CodeScope\", \"FederationGuid\", \"$meta\", \"Category\",\r\n ].sort());\r\n assert.equal(elem!.$meta.op, \"Deleted\");\r\n assert.equal(elem!.$meta.stage, \"Old\");\r\n assert.equal(elem!.$meta.propFilter, PropertyFilter.All);\r\n assert.deepEqual(elem!.$meta.rowOptions, { classIdsToClassNames: true });\r\n });\r\n\r\n it(\"txn4 delete-partial | rowOptions: useJsName\", () => {\r\n const instances = readTxn(rwIModel, txnId, undefined, { useJsName: true });\r\n assert.equal(instances.length, 3);\r\n\r\n const modelNew = instances.find((i) => i.id === drawingModelId && i.$meta.stage === \"New\");\r\n expect(modelNew).to.exist;\r\n assert.equal(modelNew!.className, \"BisCore.DrawingModel\");\r\n assert.isUndefined(modelNew!.ECInstanceId);\r\n assert.deepEqual(modelNew!.$meta.rowOptions, { useJsName: true });\r\n\r\n const modelOld = instances.find((i) => i.id === drawingModelId && i.$meta.stage === \"Old\");\r\n expect(modelOld).to.exist;\r\n assert.equal(modelOld!.className, \"BisCore.DrawingModel\");\r\n assert.deepEqual(modelOld!.$meta.rowOptions, { useJsName: true });\r\n\r\n const elem = instances.find((i) => i.id === partialElementId && i.$meta.stage === \"Old\");\r\n expect(elem).to.exist;\r\n assert.equal(elem!.className, \"TestDomain.Test2dElement\");\r\n assert.isUndefined(elem!.ECInstanceId);\r\n assert.isUndefined(elem!.ECClassId);\r\n assert.deepEqual(elem!.model, { id: drawingModelId, relClassName: \"BisCore.ModelContainsElements\" });\r\n assert.deepEqual(elem!.codeSpec, { id: \"0x1\", relClassName: \"BisCore.CodeSpecSpecifiesCode\" });\r\n assert.deepEqual(elem!.codeScope, { id: \"0x1\", relClassName: \"BisCore.ElementScopesCode\" });\r\n assert.deepEqual(elem!.category, { id: drawingCategoryId, relClassName: \"BisCore.GeometricElement2dIsInCategory\" });\r\n assert.isUndefined(elem!.strProp);\r\n assert.deepEqual(Object.keys(elem!).sort(), [\r\n \"id\", \"className\", \"model\", \"lastMod\", \"codeSpec\", \"codeScope\", \"federationGuid\", \"$meta\", \"category\",\r\n ].sort());\r\n assert.equal(elem!.$meta.op, \"Deleted\");\r\n assert.equal(elem!.$meta.stage, \"Old\");\r\n assert.equal(elem!.$meta.propFilter, PropertyFilter.All);\r\n assert.deepEqual(elem!.$meta.rowOptions, { useJsName: true });\r\n });\r\n\r\n it(\"txn4 delete-partial | rowOptions: abbreviateBlobs\", () => {\r\n const instances = readTxn(rwIModel, txnId, undefined, { abbreviateBlobs: true });\r\n assert.equal(instances.length, 3);\r\n\r\n const modelNew = instances.find((i) => i.ECInstanceId === drawingModelId && i.$meta.stage === \"New\");\r\n expect(modelNew).to.exist;\r\n assert.equal(\"BisCore:DrawingModel\", rwIModel.getClassNameFromId(modelNew!.ECClassId));\r\n assert.deepEqual(modelNew!.$meta.rowOptions, { abbreviateBlobs: true });\r\n\r\n const modelOld = instances.find((i) => i.ECInstanceId === drawingModelId && i.$meta.stage === \"Old\");\r\n expect(modelOld).to.exist;\r\n assert.equal(\"BisCore:DrawingModel\", rwIModel.getClassNameFromId(modelOld!.ECClassId));\r\n assert.deepEqual(modelOld!.$meta.rowOptions, { abbreviateBlobs: true });\r\n\r\n // Partial element had no blobs; ECClassId still raw hex\r\n const elem = instances.find((i) => i.ECInstanceId === partialElementId && i.$meta.stage === \"Old\");\r\n expect(elem).to.exist;\r\n assert.equal(\"TestDomain:Test2dElement\", rwIModel.getClassNameFromId(elem!.ECClassId));\r\n assert.equal(elem!.Model.Id, drawingModelId);\r\n assert.equal(rwIModel.getClassNameFromId(elem!.Model.RelECClassId), \"BisCore:ModelContainsElements\");\r\n assert.isUndefined(elem!.StrProp);\r\n assert.deepEqual(Object.keys(elem!).sort(), [\r\n \"ECInstanceId\", \"ECClassId\", \"Model\", \"LastMod\", \"CodeSpec\", \"CodeScope\", \"FederationGuid\", \"$meta\", \"Category\",\r\n ].sort());\r\n assert.equal(elem!.$meta.op, \"Deleted\");\r\n assert.equal(elem!.$meta.stage, \"Old\");\r\n assert.equal(elem!.$meta.propFilter, PropertyFilter.All);\r\n assert.deepEqual(elem!.$meta.rowOptions, { abbreviateBlobs: true });\r\n });\r\n\r\n it(\"txn4 delete-partial | rowOptions: classIdsToClassNames + useJsName\", () => {\r\n const instances = readTxn(rwIModel, txnId, undefined, { classIdsToClassNames: true, useJsName: true });\r\n assert.equal(instances.length, 3);\r\n\r\n const modelNew = instances.find((i) => i.id === drawingModelId && i.$meta.stage === \"New\");\r\n expect(modelNew).to.exist;\r\n assert.equal(modelNew!.className, \"BisCore.DrawingModel\");\r\n assert.isUndefined(modelNew!.ECInstanceId);\r\n assert.deepEqual(modelNew!.$meta.rowOptions, { classIdsToClassNames: true, useJsName: true });\r\n\r\n const modelOld = instances.find((i) => i.id === drawingModelId && i.$meta.stage === \"Old\");\r\n expect(modelOld).to.exist;\r\n assert.equal(modelOld!.className, \"BisCore.DrawingModel\");\r\n assert.deepEqual(modelOld!.$meta.rowOptions, { classIdsToClassNames: true, useJsName: true });\r\n\r\n const elem = instances.find((i) => i.id === partialElementId && i.$meta.stage === \"Old\");\r\n expect(elem).to.exist;\r\n assert.equal(elem!.className, \"TestDomain.Test2dElement\");\r\n assert.isUndefined(elem!.ECInstanceId);\r\n assert.deepEqual(elem!.model, { id: drawingModelId, relClassName: \"BisCore.ModelContainsElements\" });\r\n assert.deepEqual(elem!.codeSpec, { id: \"0x1\", relClassName: \"BisCore.CodeSpecSpecifiesCode\" });\r\n assert.deepEqual(elem!.codeScope, { id: \"0x1\", relClassName: \"BisCore.ElementScopesCode\" });\r\n assert.deepEqual(elem!.category, { id: drawingCategoryId, relClassName: \"BisCore.GeometricElement2dIsInCategory\" });\r\n assert.isUndefined(elem!.strProp);\r\n assert.deepEqual(Object.keys(elem!).sort(), [\r\n \"id\", \"className\", \"model\", \"lastMod\", \"codeSpec\", \"codeScope\", \"federationGuid\", \"$meta\", \"category\",\r\n ].sort());\r\n assert.equal(elem!.$meta.op, \"Deleted\");\r\n assert.equal(elem!.$meta.stage, \"Old\");\r\n assert.equal(elem!.$meta.propFilter, PropertyFilter.All);\r\n assert.deepEqual(elem!.$meta.rowOptions, { classIdsToClassNames: true, useJsName: true });\r\n });\r\n it(\"should throw error if tried to fetch changeset metadata values before stepping\", () => {\r\n using reader = ChangesetReader.openTxn({ db: rwIModel, txnId });\r\n expect(() => reader.isECTable).to.throw();\r\n expect(() => reader.isIndirectChange).to.throw();\r\n expect(() => reader.tableName).to.throw();\r\n expect(() => reader.op).to.throw();\r\n assert.isUndefined(reader.inserted);\r\n assert.isUndefined(reader.deleted);\r\n reader.close();\r\n });\r\n it(\"should throw error if tried to fetch changeset metadata values after stepping past the end\", () => {\r\n using reader = ChangesetReader.openTxn({ db: rwIModel, txnId });\r\n while (reader.step()) { }\r\n assert.equal(reader.step(), false);\r\n assert.equal(reader.step(), false); // try stepping again after already stepping past the end\r\n assert.equal(reader.step(), false);\r\n expect(() => reader.isECTable).to.throw();\r\n expect(() => reader.isIndirectChange).to.throw();\r\n expect(() => reader.tableName).to.throw();\r\n expect(() => reader.op).to.throw();\r\n assert.isUndefined(reader.inserted);\r\n assert.isUndefined(reader.deleted);\r\n reader.close();\r\n });\r\n});\r\n\r\ndescribe(\"ChangesetReader filters\", () => {\r\n let rwIModel: BriefcaseDb;\r\n let fullElementId: Id64String;\r\n let drawingModelId: Id64String;\r\n let drawingCategoryId: Id64String;\r\n let txnId: string;\r\n let txn: EditTxn;\r\n\r\n before(async () => {\r\n HubMock.startup(\"ECChangesetInsertFull\", KnownTestLocations.outputDir);\r\n const adminToken = \"super manager token\";\r\n const iTwinId = HubMock.iTwinId;\r\n const rwIModelId = await HubMock.createNewIModel({ iTwinId, iModelName: \"insertFull\", description: \"insertFull\", accessToken: adminToken });\r\n rwIModel = await HubWrappers.downloadAndOpenBriefcase({ iTwinId, iModelId: rwIModelId, accessToken: adminToken });\r\n txn = startTestTxn(rwIModel, \"ChangesetReader filters\");\r\n // Txn 1: import schema + drawing model setup, then push\r\n const schema = `<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n <ECSchema schemaName=\"TestDomain\" alias=\"ts\" version=\"01.00\" xmlns=\"http://www.bentley.com/schemas/Bentley.ECXML.3.1\">\r\n <ECSchemaReference name=\"BisCore\" version=\"01.00\" alias=\"bis\"/>\r\n <!-- Rich struct: scalar fields + nested point2d/3d sub-properties -->\r\n <ECStructClass typeName=\"RichPoint\" modifier=\"Sealed\">\r\n <ECProperty propertyName=\"X\" typeName=\"double\"/>\r\n <ECProperty propertyName=\"Y\" typeName=\"double\"/>\r\n <ECProperty propertyName=\"Z\" typeName=\"double\"/>\r\n <ECProperty propertyName=\"Label\" typeName=\"string\"/>\r\n <ECProperty propertyName=\"Pt2d\" typeName=\"point2d\"/>\r\n <ECProperty propertyName=\"Pt3d\" typeName=\"point3d\"/>\r\n </ECStructClass>\r\n <!-- Relationship used by the RelatedElem navigation property -->\r\n <ECRelationshipClass typeName=\"Test2dUsesElement\" strength=\"referencing\" modifier=\"None\">\r\n <Source multiplicity=\"(0..*)\" roleLabel=\"uses\" polymorphic=\"true\"><Class class=\"Test2dElement\"/></Source>\r\n <Target multiplicity=\"(0..1)\" roleLabel=\"is used by\" polymorphic=\"true\"><Class class=\"bis:Element\"/></Target>\r\n </ECRelationshipClass>\r\n <ECEntityClass typeName=\"Test2dElement\">\r\n <BaseClass>bis:GraphicalElement2d</BaseClass>\r\n <!-- Primitives -->\r\n <ECProperty propertyName=\"StrProp\" typeName=\"string\"/>\r\n <ECProperty propertyName=\"IntProp\" typeName=\"int\"/>\r\n <ECProperty propertyName=\"LongProp\" typeName=\"long\"/>\r\n <ECProperty propertyName=\"DblProp\" typeName=\"double\"/>\r\n <ECProperty propertyName=\"BoolProp\" typeName=\"boolean\"/>\r\n <ECProperty propertyName=\"DtProp\" typeName=\"dateTime\"/>\r\n <ECProperty propertyName=\"BinProp\" typeName=\"binary\"/>\r\n <!-- Geometric primitives -->\r\n <ECProperty propertyName=\"Pt2dProp\" typeName=\"point2d\"/>\r\n <ECProperty propertyName=\"Pt3dProp\" typeName=\"point3d\"/>\r\n <!-- Struct, arrays -->\r\n <ECStructProperty propertyName=\"StructProp\" typeName=\"RichPoint\"/>\r\n <ECArrayProperty propertyName=\"IntArrProp\" typeName=\"int\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\r\n <ECArrayProperty propertyName=\"StrArrProp\" typeName=\"string\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\r\n <ECStructArrayProperty propertyName=\"StructArrProp\" typeName=\"RichPoint\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\r\n <!-- Navigation property -->\r\n <ECNavigationProperty propertyName=\"RelatedElem\" relationshipName=\"Test2dUsesElement\" direction=\"forward\"/>\r\n </ECEntityClass>\r\n </ECSchema>`;\r\n await importSchemaStrings(txn, [schema]);\r\n rwIModel.channels.addAllowedChannel(ChannelControl.sharedChannelName);\r\n\r\n await rwIModel.locks.acquireLocks({ shared: IModel.dictionaryId });\r\n const codeProps = Code.createEmpty();\r\n codeProps.value = \"DrillDownDrawing\";\r\n [, drawingModelId] = IModelTestUtils.createAndInsertDrawingPartitionAndModel(txn, codeProps, true);\r\n\r\n const foundCat = DrawingCategory.queryCategoryIdByName(rwIModel, IModel.dictionaryId, \"DrillDownCategory\");\r\n drawingCategoryId = foundCat ?? DrawingCategory.insert(txn, IModel.dictionaryId, \"DrillDownCategory\",\r\n new SubCategoryAppearance({ color: ColorDef.fromString(\"rgb(255,0,0)\").toJSON() }));\r\n\r\n txn.saveChanges(\"setup\");\r\n // Wait so that LastMod on bis_Model gets a distinct timestamp before the insert txn\r\n await new Promise((resolve) => setTimeout(resolve, 300));\r\n // Txn 2: insert FULL element every EC primitive type populated\r\n await rwIModel.locks.acquireLocks({ shared: drawingModelId });\r\n const geom: GeometryStreamProps = [\r\n Arc3d.createXY(Point3d.create(0, 0), 5),\r\n Arc3d.createXY(Point3d.create(5, 5), 2),\r\n Arc3d.createXY(Point3d.create(-5, -5), 20),\r\n ].map((a) => IModelJson.Writer.toIModelJson(a));\r\n\r\n fullElementId = txn.insertElement({\r\n classFullName: \"TestDomain:Test2dElement\",\r\n model: drawingModelId,\r\n category: drawingCategoryId,\r\n code: Code.createEmpty(),\r\n geom,\r\n StrProp: \"hello\",\r\n IntProp: 42,\r\n LongProp: 9_007_199_254_740_991, // Number.MAX_SAFE_INTEGER\r\n DblProp: 3.14159265358979,\r\n BoolProp: true,\r\n DtProp: \"2024-01-15T12:00:00.000\",\r\n BinProp: new Uint8Array([1, 2, 3, 4]),\r\n Pt2dProp: { x: 1.5, y: 2.5 },\r\n Pt3dProp: { x: 3.0, y: 4.0, z: 5.0 },\r\n StructProp: {\r\n X: 1.0, Y: 2.0, Z: 3.0, Label: \"origin\",\r\n Pt2d: { x: 0.5, y: 0.5 },\r\n Pt3d: { x: 1.0, y: 2.0, z: 3.0 },\r\n },\r\n IntArrProp: [10, 20, 30],\r\n StrArrProp: [\"alpha\", \"beta\", \"gamma\"],\r\n StructArrProp: [\r\n { X: 0.0, Y: 1.0, Z: 2.0, Label: \"a\", Pt2d: { x: 0.0, y: 0.0 }, Pt3d: { x: 0.0, y: 0.0, z: 0.0 } },\r\n { X: 3.0, Y: 4.0, Z: 5.0, Label: \"b\", Pt2d: { x: 1.0, y: 1.0 }, Pt3d: { x: 1.0, y: 1.0, z: 1.0 } },\r\n ],\r\n RelatedElem: { id: drawingCategoryId, relClassName: \"TestDomain:Test2dUsesElement\" },\r\n } as any);\r\n txn.saveChanges(\"insert full element\");\r\n txnId = rwIModel.txns.getLastSavedTxnProps()!.id;\r\n });\r\n\r\n after(() => {\r\n txn.end();\r\n rwIModel?.close();\r\n HubMock.shutdown();\r\n });\r\n\r\n it(\"txn1 insert-full | filter by table name\", () => {\r\n using reader = ChangesetReader.openTxn({ db: rwIModel, txnId });\r\n using pcu = new PartialChangeUnifier(ChangeUnifierCache.createInMemoryCache());\r\n reader.setTableNameFilters(new Set([\"bis_Model\"]));\r\n while (reader.step())\r\n pcu.appendFrom(reader);\r\n const instances = Array.from(pcu.instances);\r\n assert.equal(instances.length, 2);\r\n\r\n // --- instances[0]: DrawingModel Updated New ---\r\n const modelNew = instances.find((i) => i.ECInstanceId === drawingModelId && i.$meta.stage === \"New\");\r\n expect(modelNew).to.exist;\r\n assert.equal(modelNew!.ECInstanceId, drawingModelId);\r\n assert.equal(\"BisCore:DrawingModel\", rwIModel.getClassNameFromId(modelNew!.ECClassId));\r\n assert.isString(modelNew!.LastMod);\r\n assert.isString(modelNew!.GeometryGuid);\r\n // Object.keys\r\n assert.deepEqual(Object.keys(modelNew!).sort(), [\"ECInstanceId\", \"ECClassId\", \"LastMod\", \"GeometryGuid\", \"$meta\"].sort());\r\n // $meta keys\r\n assert.deepEqual(Object.keys(modelNew!.$meta).sort(), [\"op\", \"tables\", \"changeIndexes\", \"stage\", \"instanceKey\", \"propFilter\", \"changeFetchedPropNames\", \"rowOptions\", \"isIndirectChange\"].sort());\r\n assert.equal(modelNew!.$meta.op, \"Updated\");\r\n assert.equal(modelNew!.$meta.stage, \"New\");\r\n assert.deepEqual([...modelNew!.$meta.tables].sort(), [\"bis_Model\"].sort());\r\n assert.deepEqual([...modelNew!.$meta.changeIndexes].sort(), [1].sort());\r\n assert.isString(modelNew!.$meta.instanceKey);\r\n assert.equal(modelNew!.$meta.instanceKey.split(`-`).length, 2);\r\n assert.equal(modelNew!.$meta.propFilter, PropertyFilter.All);\r\n assert.deepEqual([...modelNew!.$meta.changeFetchedPropNames].sort(), [\"ECInstanceId\", \"LastMod\", \"GeometryGuid\"].sort());\r\n assert.deepEqual(modelNew!.$meta.rowOptions, {});\r\n assert.equal(modelNew!.$meta.isIndirectChange, true);\r\n\r\n // --- instances[1]: DrawingModel Updated Old ---\r\n const modelOld = instances.find((i) => i.ECInstanceId === drawingModelId && i.$meta.stage === \"Old\");\r\n expect(modelOld).to.exist;\r\n assert.equal(modelOld!.ECInstanceId, drawingModelId);\r\n assert.equal(\"BisCore:DrawingModel\", rwIModel.getClassNameFromId(modelOld!.ECClassId));\r\n // Object.keys\r\n assert.deepEqual(Object.keys(modelOld!).sort(), [\"ECInstanceId\", \"ECClassId\", \"$meta\"].sort());\r\n // $meta keys\r\n assert.deepEqual(Object.keys(modelOld!.$meta).sort(), [\"op\", \"tables\", \"changeIndexes\", \"stage\", \"instanceKey\", \"propFilter\", \"changeFetchedPropNames\", \"rowOptions\", \"isIndirectChange\"].sort());\r\n assert.equal(modelOld!.$meta.op, \"Updated\");\r\n assert.equal(modelOld!.$meta.stage, \"Old\");\r\n assert.deepEqual([...modelOld!.$meta.tables].sort(), [\"bis_Model\"].sort());\r\n assert.equal(modelOld!.$meta.propFilter, PropertyFilter.All);\r\n assert.deepEqual([...modelOld!.$meta.changeFetchedPropNames].sort(), [\"ECInstanceId\", \"LastMod\", \"GeometryGuid\"].sort());\r\n assert.deepEqual(modelOld!.$meta.rowOptions, {});\r\n assert.equal(modelOld!.$meta.isIndirectChange, true);\r\n });\r\n\r\n it(\"txn1 insert-full | filter by operation name\", () => {\r\n using reader = ChangesetReader.openTxn({ db: rwIModel, txnId });\r\n using pcu = new PartialChangeUnifier(ChangeUnifierCache.createInMemoryCache());\r\n reader.setOpCodeFilters(new Set([\"Inserted\"]));\r\n while (reader.step())\r\n pcu.appendFrom(reader);\r\n const instances = Array.from(pcu.instances);\r\n assert.equal(instances.length, 1);\r\n\r\n const elem = instances.find((i) => i.ECInstanceId === fullElementId && i.$meta.stage === \"New\");\r\n expect(elem).to.exist;\r\n assert.equal(elem!.ECInstanceId, fullElementId);\r\n assert.equal(\"TestDomain:Test2dElement\", rwIModel.getClassNameFromId(elem!.ECClassId));\r\n assert.equal(elem!.Model.Id, drawingModelId);\r\n assert.equal(rwIModel.getClassNameFromId(elem!.Model.RelECClassId), \"BisCore:ModelContainsElements\");\r\n assert.isString(elem!.LastMod);\r\n assert.equal(elem!.CodeSpec.Id, \"0x1\");\r\n assert.equal(rwIModel.getClassNameFromId(elem!.CodeSpec.RelECClassId), \"BisCore:CodeSpecSpecifiesCode\");\r\n\r\n assert.equal(elem!.CodeScope.Id, \"0x1\");\r\n assert.equal(rwIModel.getClassNameFromId(elem!.CodeScope.RelECClassId), \"BisCore:ElementScopesCode\");\r\n assert.isString(elem!.FederationGuid);\r\n\r\n assert.equal(elem!.Category.Id, drawingCategoryId);\r\n assert.equal(rwIModel.getClassNameFromId(elem!.Category.RelECClassId), \"BisCore:GeometricElement2dIsInCategory\");\r\n assert.deepEqual(elem!.Origin, { X: 0, Y: 0 });\r\n assert.equal(elem!.Rotation, 0);\r\n assert.deepEqual(elem!.BBoxLow, { X: -25, Y: -25 });\r\n assert.deepEqual(elem!.BBoxHigh, { X: 15, Y: 15 });\r\n assert.include(String(elem!.GeometryStream), \"\\\"bytes\\\"\");\r\n assert.include(String(elem!.BinProp), \"\\\"bytes\\\"\");\r\n assert.equal(elem!.StrProp, \"hello\");\r\n assert.equal(elem!.IntProp, 42);\r\n assert.equal(elem!.LongProp, 9007199254740991);\r\n assert.closeTo(elem!.DblProp as number, 3.14159265358979, 1e-10);\r\n assert.equal(elem!.BoolProp, true);\r\n assert.equal(elem!.DtProp, \"2024-01-15T12:00:00.000\");\r\n assert.deepEqual(elem!.Pt2dProp, { X: 1.5, Y: 2.5 });\r\n assert.deepEqual(elem!.Pt3dProp, { X: 3, Y: 4, Z: 5 });\r\n assert.deepEqual(elem!.StructProp, { X: 1, Y: 2, Z: 3, Label: \"origin\", Pt2d: { X: 0.5, Y: 0.5 }, Pt3d: { X: 1, Y: 2, Z: 3 } });\r\n assert.deepEqual(elem!.IntArrProp, [10, 20, 30]);\r\n assert.deepEqual(elem!.StrArrProp, [\"alpha\", \"beta\", \"gamma\"]);\r\n assert.deepEqual(elem!.StructArrProp, [\r\n { X: 0, Y: 1, Z: 2, Label: \"a\", Pt2d: { X: 0, Y: 0 }, Pt3d: { X: 0, Y: 0, Z: 0 } },\r\n { X: 3, Y: 4, Z: 5, Label: \"b\", Pt2d: { X: 1, Y: 1 }, Pt3d: { X: 1, Y: 1, Z: 1 } },\r\n ]);\r\n assert.equal(elem!.RelatedElem.Id, drawingCategoryId);\r\n assert.equal(rwIModel.getClassNameFromId(elem!.RelatedElem.RelECClassId), \"TestDomain:Test2dUsesElement\");\r\n // Object.keys\r\n assert.deepEqual(Object.keys(elem!).sort(), [\r\n \"ECInstanceId\", \"ECClassId\", \"Model\", \"LastMod\", \"CodeSpec\", \"CodeScope\", \"FederationGuid\", \"$meta\",\r\n \"Category\", \"Origin\", \"Rotation\", \"BBoxLow\", \"BBoxHigh\", \"GeometryStream\",\r\n \"StrProp\", \"IntProp\", \"LongProp\", \"DblProp\", \"BoolProp\", \"DtProp\",\r\n \"Pt2dProp\", \"Pt3dProp\", \"StructProp\", \"IntArrProp\", \"StrArrProp\", \"StructArrProp\", \"RelatedElem\", \"BinProp\"\r\n ].sort());\r\n // $meta keys\r\n assert.deepEqual(Object.keys(elem!.$meta).sort(), [\"op\", \"tables\", \"changeIndexes\", \"stage\", \"instanceKey\", \"propFilter\", \"changeFetchedPropNames\", \"rowOptions\", \"isIndirectChange\"].sort());\r\n assert.equal(elem!.$meta.op, \"Inserted\");\r\n assert.equal(elem!.$meta.stage, \"New\");\r\n assert.deepEqual([...elem!.$meta.tables].sort(), [\"bis_Element\", \"bis_GeometricElement2d\"].sort());\r\n assert.deepEqual([...elem!.$meta.changeIndexes].sort(), [1, 2].sort());\r\n assert.isString(elem!.$meta.instanceKey);\r\n assert.equal(elem!.$meta.instanceKey.split(`-`).length, 2);\r\n assert.equal(elem!.$meta.propFilter, PropertyFilter.All);\r\n assert.deepEqual([...elem!.$meta.changeFetchedPropNames].sort(), [\r\n 'BBoxHigh', 'BBoxLow', 'BinProp', 'BoolProp', 'Category.Id', 'CodeScope.Id',\r\n 'CodeSpec.Id', 'CodeValue', 'DblProp', 'DtProp', 'ECClassId', 'ECInstanceId',\r\n 'FederationGuid', 'GeometryStream', 'IntArrProp', 'IntProp', 'JsonProperties',\r\n 'LastMod', 'LongProp', 'Model.Id', 'Origin', 'Parent', 'Pt2dProp', 'Pt3dProp',\r\n 'RelatedElem', 'Rotation', 'StrArrProp', 'StrProp', 'StructArrProp', 'StructProp.Label',\r\n 'StructProp.Pt2d', 'StructProp.Pt3d', 'StructProp.X', 'StructProp.Y', 'StructProp.Z',\r\n 'TypeDefinition', 'UserLabel'\r\n ].sort());\r\n assert.deepEqual(elem!.$meta.rowOptions, {});\r\n assert.equal(elem!.$meta.isIndirectChange, false);\r\n });\r\n\r\n it(\"txn1 insert-full | filter by className\", () => {\r\n using reader = ChangesetReader.openTxn({ db: rwIModel, txnId });\r\n using pcu = new PartialChangeUnifier(ChangeUnifierCache.createSqliteBackedCache());\r\n reader.setClassNameFilters(new Set([\"BisCore:DrawingModel\"]));\r\n while (reader.step())\r\n pcu.appendFrom(reader);\r\n const instances = Array.from(pcu.instances);\r\n assert.equal(instances.length, 2);\r\n\r\n // --- instances[0]: DrawingModel Updated New ---\r\n const modelNew = instances.find((i) => i.ECInstanceId === drawingModelId && i.$meta.stage === \"New\");\r\n expect(modelNew).to.exist;\r\n assert.equal(modelNew!.ECInstanceId, drawingModelId);\r\n assert.equal(\"BisCore:DrawingModel\", rwIModel.getClassNameFromId(modelNew!.ECClassId));\r\n assert.isString(modelNew!.LastMod);\r\n assert.isString(modelNew!.GeometryGuid);\r\n // Object.keys\r\n assert.deepEqual(Object.keys(modelNew!).sort(), [\"ECInstanceId\", \"ECClassId\", \"LastMod\", \"GeometryGuid\", \"$meta\"].sort());\r\n // $meta keys\r\n assert.deepEqual(Object.keys(modelNew!.$meta).sort(), [\"op\", \"tables\", \"changeIndexes\", \"stage\", \"instanceKey\", \"propFilter\", \"changeFetchedPropNames\", \"rowOptions\", \"isIndirectChange\"].sort());\r\n assert.equal(modelNew!.$meta.op, \"Updated\");\r\n assert.equal(modelNew!.$meta.stage, \"New\");\r\n assert.deepEqual([...modelNew!.$meta.tables].sort(), [\"bis_Model\"].sort());\r\n assert.deepEqual([...modelNew!.$meta.changeIndexes].sort(), [1].sort());\r\n assert.isString(modelNew!.$meta.instanceKey);\r\n assert.equal(modelNew!.$meta.instanceKey.split(`-`).length, 2);\r\n assert.equal(modelNew!.$meta.propFilter, PropertyFilter.All);\r\n assert.deepEqual([...modelNew!.$meta.changeFetchedPropNames].sort(), [\"ECInstanceId\", \"LastMod\", \"GeometryGuid\"].sort());\r\n assert.deepEqual(modelNew!.$meta.rowOptions, {});\r\n assert.equal(modelNew!.$meta.isIndirectChange, true);\r\n\r\n // --- instances[1]: DrawingModel Updated Old ---\r\n const modelOld = instances.find((i) => i.ECInstanceId === drawingModelId && i.$meta.stage === \"Old\");\r\n expect(modelOld).to.exist;\r\n assert.equal(modelOld!.ECInstanceId, drawingModelId);\r\n assert.equal(\"BisCore:DrawingModel\", rwIModel.getClassNameFromId(modelOld!.ECClassId));\r\n // Object.keys\r\n assert.deepEqual(Object.keys(modelOld!).sort(), [\"ECInstanceId\", \"ECClassId\", \"$meta\"].sort());\r\n // $meta keys\r\n assert.deepEqual(Object.keys(modelOld!.$meta).sort(), [\"op\", \"tables\", \"changeIndexes\", \"stage\", \"instanceKey\", \"propFilter\", \"changeFetchedPropNames\", \"rowOptions\", \"isIndirectChange\"].sort());\r\n assert.equal(modelOld!.$meta.op, \"Updated\");\r\n assert.equal(modelOld!.$meta.stage, \"Old\");\r\n assert.deepEqual([...modelOld!.$meta.tables].sort(), [\"bis_Model\"].sort());\r\n assert.equal(modelOld!.$meta.propFilter, PropertyFilter.All);\r\n assert.deepEqual([...modelOld!.$meta.changeFetchedPropNames].sort(), [\"ECInstanceId\", \"LastMod\", \"GeometryGuid\"].sort());\r\n assert.deepEqual(modelOld!.$meta.rowOptions, {});\r\n assert.equal(modelOld!.$meta.isIndirectChange, true);\r\n });\r\n});\r\n\r\ndescribe(\"ChangesetReader — openFile + openGroup\", () => {\r\n let rwIModel: BriefcaseDb;\r\n let rwIModelId: string;\r\n let drawingModelId: Id64String;\r\n let drawingCategoryId: Id64String;\r\n let txn: EditTxn;\r\n\r\n before(async () => {\r\n HubMock.startup(\"ECChangesetOpenFileGroup\", KnownTestLocations.outputDir);\r\n const adminToken = \"super manager token\";\r\n const iTwinId = HubMock.iTwinId;\r\n rwIModelId = await HubMock.createNewIModel({ iTwinId, iModelName: \"openFileGroup\", description: \"openFileGroup\", accessToken: adminToken });\r\n rwIModel = await HubWrappers.downloadAndOpenBriefcase({ iTwinId, iModelId: rwIModelId, accessToken: adminToken });\r\n\r\n txn = startTestTxn(rwIModel, \"ChangesetReader setup\");\r\n\r\n // Push 1: import schema + drawing model setup\r\n const schema = `<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n <ECSchema schemaName=\"TestDomain\" alias=\"ts\" version=\"01.00\" xmlns=\"http://www.bentley.com/schemas/Bentley.ECXML.3.1\">\r\n <ECSchemaReference name=\"BisCore\" version=\"01.00\" alias=\"bis\"/>\r\n <ECEntityClass typeName=\"SimpleElement\">\r\n <BaseClass>bis:GraphicalElement2d</BaseClass>\r\n <!-- Simple binary -->\r\n <ECProperty propertyName=\"BinProp\" typeName=\"binary\"/>\r\n <!-- Point3d -->\r\n <ECProperty propertyName=\"Pt3dProp\" typeName=\"point3d\"/>\r\n <!-- Array of GUIDs stored as strings -->\r\n <ECArrayProperty propertyName=\"GuidArrProp\" typeName=\"string\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\r\n </ECEntityClass>\r\n </ECSchema>`;\r\n await importSchemaStrings(txn, [schema]);\r\n rwIModel.channels.addAllowedChannel(ChannelControl.sharedChannelName);\r\n\r\n await rwIModel.locks.acquireLocks({ shared: IModel.dictionaryId });\r\n const codeProps = Code.createEmpty();\r\n codeProps.value = \"OpenFileDrawing\";\r\n [, drawingModelId] = IModelTestUtils.createAndInsertDrawingPartitionAndModel(txn, codeProps, true);\r\n\r\n const foundCat = DrawingCategory.queryCategoryIdByName(rwIModel, IModel.dictionaryId, \"OpenFileCategory\");\r\n drawingCategoryId = foundCat ?? DrawingCategory.insert(txn, IModel.dictionaryId, \"OpenFileCategory\",\r\n new SubCategoryAppearance({ color: ColorDef.fromString(\"rgb(0,128,255)\").toJSON() }));\r\n\r\n txn.saveChanges(\"setup\");\r\n await rwIModel.pushChanges({ description: \"setup\", accessToken: adminToken });\r\n });\r\n\r\n after(() => {\r\n txn.end();\r\n rwIModel?.close();\r\n HubMock.shutdown();\r\n });\r\n\r\n it(\"openFile reads insert and update changesets independently; openGroup reads both as a stream\", async () => {\r\n const adminToken = \"super manager token\";\r\n const targetDir = path.join(KnownTestLocations.outputDir, rwIModelId, \"changesets\");\r\n\r\n // Wait so that LastMod on bis_Model gets a distinct timestamp before the insert txn\r\n await new Promise((resolve) => setTimeout(resolve, 300));\r\n // --- Push 2: insert element — only Y and Z set on Pt3dProp, X omitted (defaults to 0) ---\r\n await rwIModel.locks.acquireLocks({ shared: drawingModelId });\r\n const elementId: Id64String = txn.insertElement({\r\n classFullName: \"TestDomain:SimpleElement\",\r\n model: drawingModelId,\r\n category: drawingCategoryId,\r\n code: Code.createEmpty(),\r\n Pt3dProp: { y: 2.5, z: 3.7 },\r\n BinProp: new Uint8Array([1, 2, 3, 4]),\r\n GuidArrProp: [\r\n \"a1b2c3d4-e5f6-7890-abcd-ef1234567890\",\r\n \"bbbbbbbb-cccc-dddd-eeee-ffffffffffff\",\r\n ],\r\n } as any);\r\n txn.saveChanges(\"insert element\");\r\n await rwIModel.pushChanges({ description: \"insert element\", accessToken: adminToken });\r\n\r\n\r\n let changesets = await HubMock.downloadChangesets({ iModelId: rwIModelId, targetDir });\r\n expect(changesets.length).to.equal(2);\r\n const insertCs = changesets[1];\r\n // === openFile: insert changeset ===\r\n {\r\n using reader = ChangesetReader.openFile({ db: rwIModel, fileName: insertCs.pathname, rowOptions: { abbreviateBlobs: false } });\r\n using pcu = new PartialChangeUnifier(ChangeUnifierCache.createInMemoryCache());\r\n while (reader.step())\r\n pcu.appendFrom(reader);\r\n const instances = Array.from(pcu.instances);\r\n\r\n const elemNew = instances.find((i) => i.ECInstanceId === elementId && i.$meta.stage === \"New\");\r\n expect(elemNew).to.exist;\r\n assert.deepEqual(Object.keys(elemNew!.$meta).sort(), [\"op\", \"tables\", \"changeIndexes\", \"stage\", \"propFilter\", \"rowOptions\", \"changeFetchedPropNames\", \"instanceKey\", \"isIndirectChange\"].sort());\r\n assert.equal(elemNew!.$meta.op, \"Inserted\");\r\n assert.equal(elemNew!.$meta.stage, \"New\");\r\n assert.deepEqual(elemNew!.$meta.tables.sort(), [\"bis_Element\", \"bis_GeometricElement2d\"].sort());\r\n assert.deepEqual(elemNew!.$meta.propFilter, PropertyFilter.All);\r\n assert.deepEqual(elemNew!.$meta.changeIndexes.sort(), [1, 2].sort());\r\n assert.deepEqual(elemNew!.$meta.rowOptions, { abbreviateBlobs: false });\r\n assert.equal(elemNew!.$meta.isIndirectChange, false);\r\n\r\n expect(elemNew!.Category).to.exist;\r\n expect(elemNew!.CodeScope).to.exist;\r\n expect(elemNew!.CodeSpec).to.exist;\r\n expect(elemNew!.LastMod).to.exist;\r\n expect(elemNew!.Model).to.exist;\r\n expect(elemNew!.FederationGuid).to.exist;\r\n assert.isUndefined(elemNew!.Pt3dProp);\r\n assert.isNotNull(elemNew!.BinProp);\r\n assert.deepEqual(elemNew!.BinProp, new Uint8Array([1, 2, 3, 4]));\r\n assert.deepEqual(elemNew!.GuidArrProp, [\r\n \"a1b2c3d4-e5f6-7890-abcd-ef1234567890\",\r\n \"bbbbbbbb-cccc-dddd-eeee-ffffffffffff\",\r\n ]);\r\n assert.deepEqual(Object.keys(elemNew!).sort(), [\"ECInstanceId\", \"ECClassId\", \"Model\", \"CodeSpec\",\r\n \"CodeScope\", \"FederationGuid\", \"$meta\", \"Category\", \"LastMod\",\r\n \"BinProp\", \"GuidArrProp\"].sort())\r\n assert.deepEqual([...elemNew!.$meta.changeFetchedPropNames].sort(), ['BBoxHigh', 'BBoxLow', 'BinProp',\r\n 'Category.Id', 'CodeScope.Id', 'CodeSpec.Id', 'CodeValue',\r\n 'ECClassId', 'ECInstanceId', 'FederationGuid', 'GeometryStream', 'GuidArrProp',\r\n 'JsonProperties', 'LastMod', 'Model.Id', 'Origin', 'Parent', 'Pt3dProp', 'Rotation',\r\n 'TypeDefinition', 'UserLabel'].sort());\r\n }\r\n\r\n // Wait so that LastMod on bis_Model gets a distinct timestamp before the update txn\r\n await new Promise((resolve) => setTimeout(resolve, 300));\r\n // --- Push 3: update element — change all custom props ---\r\n await rwIModel.locks.acquireLocks({ exclusive: elementId });\r\n txn.updateElement({\r\n ...rwIModel.elements.getElementProps(elementId),\r\n Pt3dProp: { x: 1.0, y: 9.9, z: 7.7 },\r\n BinProp: new Uint8Array([0xaa, 0xbb, 0xcc, 0xdd]),\r\n GuidArrProp: [\r\n \"ffffffff-0000-1111-2222-333344445555\",\r\n ],\r\n });\r\n txn.saveChanges(\"update element\");\r\n await rwIModel.pushChanges({ description: \"update element\", accessToken: adminToken });\r\n\r\n // Download all changesets: [setup(0), insert(1), update(2)]\r\n changesets = await HubMock.downloadChangesets({ iModelId: rwIModelId, targetDir });\r\n expect(changesets.length).to.equal(3);\r\n const updateCs = changesets[2];\r\n\r\n // === openFile: update changeset ===\r\n {\r\n using reader = ChangesetReader.openFile({ db: rwIModel, fileName: updateCs.pathname, rowOptions: { abbreviateBlobs: false } });\r\n using pcu = new PartialChangeUnifier(ChangeUnifierCache.createInMemoryCache());\r\n while (reader.step())\r\n pcu.appendFrom(reader);\r\n const instances = Array.from(pcu.instances);\r\n\r\n const elemNew = instances.find((i) => i.ECInstanceId === elementId && i.$meta.stage === \"New\");\r\n const elemOld = instances.find((i) => i.ECInstanceId === elementId && i.$meta.stage === \"Old\");\r\n expect(elemNew).to.exist;\r\n expect(elemOld).to.exist;\r\n assert.equal(elemNew!.$meta.op, \"Updated\");\r\n assert.equal(elemNew!.$meta.stage, \"New\");\r\n assert.equal(elemNew!.$meta.propFilter, PropertyFilter.All);\r\n assert.deepEqual(Object.keys(elemNew!.$meta).sort(), [\"op\", \"tables\", \"changeIndexes\", \"stage\", \"propFilter\", \"rowOptions\", \"changeFetchedPropNames\", \"instanceKey\", \"isIndirectChange\"].sort());\r\n assert.equal(elemNew!.$meta.isIndirectChange, false);\r\n assert.deepEqual(Object.keys(elemNew!).sort(), [\"ECInstanceId\", \"ECClassId\", \"Origin\",\r\n \"Rotation\", \"BBoxLow\", \"BBoxHigh\", \"Pt3dProp\", \"BinProp\", \"GuidArrProp\", \"$meta\", \"LastMod\"].sort());\r\n assert.deepEqual(elemNew!.Pt3dProp, { X: 1, Y: 9.9, Z: 7.7 });\r\n assert.deepEqual(elemNew!.BinProp, new Uint8Array([0xaa, 0xbb, 0xcc, 0xdd]));\r\n assert.deepEqual(elemNew!.GuidArrProp, [\"ffffffff-0000-1111-2222-333344445555\"]);\r\n assert.deepEqual(elemNew!.Origin, { X: 0, Y: 0 });\r\n assert.deepEqual(elemNew!.BBoxLow, { X: 0, Y: 0 });\r\n assert.deepEqual(elemNew!.BBoxHigh, { X: 0, Y: 0 });\r\n assert.deepEqual(elemNew!.Rotation, 0);\r\n expect(elemNew!.LastMod).to.exist;\r\n assert.deepEqual([...elemNew!.$meta.changeFetchedPropNames].sort(), ['BBoxHigh', 'BBoxLow', 'BinProp', 'ECInstanceId', 'GuidArrProp', 'LastMod', 'Origin', 'Pt3dProp', 'Rotation'].sort());\r\n\r\n assert.equal(elemOld!.$meta.op, \"Updated\");\r\n assert.equal(elemOld!.$meta.stage, \"Old\");\r\n assert.deepEqual(Object.keys(elemOld!.$meta).sort(), [\"op\", \"tables\", \"changeIndexes\", \"stage\", \"propFilter\", \"rowOptions\", \"changeFetchedPropNames\", \"instanceKey\", \"isIndirectChange\"].sort());\r\n assert.deepEqual(Object.keys(elemOld!).sort(), [\"ECInstanceId\", \"ECClassId\", \"BinProp\", \"GuidArrProp\", \"$meta\",\r\n \"LastMod\"].sort());\r\n assert.deepEqual(elemOld!.BinProp, new Uint8Array([1, 2, 3, 4]));\r\n assert.deepEqual(elemOld!.GuidArrProp, [\r\n \"a1b2c3d4-e5f6-7890-abcd-ef1234567890\",\r\n \"bbbbbbbb-cccc-dddd-eeee-ffffffffffff\",\r\n ]);\r\n assert.equal(elemOld!.$meta.isIndirectChange, false);\r\n expect(elemOld!.LastMod).to.exist;\r\n assert.deepEqual([...elemOld!.$meta.changeFetchedPropNames].sort(), ['BBoxHigh', 'BBoxLow', 'BinProp', 'ECInstanceId', 'GuidArrProp', 'LastMod', 'Origin', 'Pt3dProp', 'Rotation'].sort());\r\n }\r\n\r\n // === openGroup: insert + update as a single stream ===\r\n // After merging, the elem New key is shared between insert-New and update-New;\r\n // the update-New wins on overlapping props, so the final New reflects the updated state.\r\n // elem Old only comes from the update changeset.\r\n {\r\n using reader = ChangesetReader.openGroup({ db: rwIModel, changesetFiles: [insertCs.pathname, updateCs.pathname], rowOptions: { abbreviateBlobs: false } });\r\n using pcu = new PartialChangeUnifier(ChangeUnifierCache.createInMemoryCache());\r\n while (reader.step())\r\n pcu.appendFrom(reader);\r\n const instances = Array.from(pcu.instances);\r\n\r\n const elemNew = instances.find((i) => i.ECInstanceId === elementId && i.$meta.stage === \"New\");\r\n const elemOld = instances.find((i) => i.ECInstanceId === elementId && i.$meta.stage === \"Old\");\r\n expect(elemNew).to.exist;\r\n expect(elemOld).to.not.exist;\r\n // New merges insert + update; final values are from the update\r\n assert.deepEqual(elemNew!.Pt3dProp, { X: 1, Y: 9.9, Z: 7.7 });\r\n assert.deepEqual(elemNew!.BinProp, new Uint8Array([0xaa, 0xbb, 0xcc, 0xdd]));\r\n assert.deepEqual(elemNew!.GuidArrProp, [\"ffffffff-0000-1111-2222-333344445555\"]);\r\n assert.deepEqual(elemNew!.Origin, { X: 0, Y: 0 });\r\n assert.deepEqual(elemNew!.BBoxLow, { X: 0, Y: 0 });\r\n assert.deepEqual(elemNew!.BBoxHigh, { X: 0, Y: 0 });\r\n assert.deepEqual(elemNew!.Rotation, 0);\r\n expect(elemNew!.LastMod).to.exist;\r\n expect(elemNew!.Category).to.exist;\r\n expect(elemNew!.CodeScope).to.exist;\r\n expect(elemNew!.CodeSpec).to.exist;\r\n expect(elemNew!.LastMod).to.exist;\r\n expect(elemNew!.Model).to.exist;\r\n expect(elemNew!.FederationGuid).to.exist;\r\n assert.deepEqual(Object.keys(elemNew!.$meta).sort(), [\"op\", \"tables\", \"changeIndexes\", \"stage\", \"propFilter\", \"rowOptions\", \"changeFetchedPropNames\", \"instanceKey\", \"isIndirectChange\"].sort());\r\n assert.equal(elemNew!.$meta.op, \"Inserted\");\r\n assert.equal(elemNew!.$meta.stage, \"New\");\r\n assert.deepEqual(elemNew!.$meta.tables.sort(), [\"bis_Element\", \"bis_GeometricElement2d\"].sort());\r\n assert.deepEqual(elemNew!.$meta.propFilter, PropertyFilter.All);\r\n assert.deepEqual(elemNew!.$meta.changeIndexes.sort(), [1, 2].sort());\r\n assert.deepEqual(elemNew!.$meta.rowOptions, { abbreviateBlobs: false });\r\n assert.deepEqual(Object.keys(elemNew!).sort(), [\"ECInstanceId\", \"ECClassId\", \"Model\", \"CodeSpec\",\r\n \"CodeScope\", \"FederationGuid\", \"$meta\", \"Category\", \"LastMod\",\r\n \"BinProp\", \"GuidArrProp\", \"Origin\", \"Rotation\", \"BBoxLow\", \"BBoxHigh\", \"Pt3dProp\"].sort());\r\n assert.deepEqual([...elemNew!.$meta.changeFetchedPropNames].sort(), ['BBoxHigh', 'BBoxLow',\r\n 'BinProp', 'Category.Id', 'CodeScope.Id', 'CodeSpec.Id',\r\n 'CodeValue', 'ECClassId', 'ECInstanceId', 'FederationGuid', 'GeometryStream',\r\n 'GuidArrProp', 'JsonProperties', 'LastMod', 'Model.Id', 'Origin', 'Parent', 'Pt3dProp',\r\n 'Rotation', 'TypeDefinition', 'UserLabel'].sort());\r\n assert.equal(elemNew!.$meta.isIndirectChange, false);\r\n }\r\n });\r\n});\r\n\r\ndescribe(\"ChangesetReader — openLocalChanges + openInmemoryChanges\", () => {\r\n let rwIModel: BriefcaseDb;\r\n let rwIModelId: string;\r\n let drawingModelId: Id64String;\r\n let drawingCategoryId: Id64String;\r\n let txn: EditTxn;\r\n\r\n before(async () => {\r\n HubMock.startup(\"ECChangesetOpenFileGroup\", KnownTestLocations.outputDir);\r\n const adminToken = \"super manager token\";\r\n const iTwinId = HubMock.iTwinId;\r\n rwIModelId = await HubMock.createNewIModel({ iTwinId, iModelName: \"openFileGroup\", description: \"openFileGroup\", accessToken: adminToken });\r\n rwIModel = await HubWrappers.downloadAndOpenBriefcase({ iTwinId, iModelId: rwIModelId, accessToken: adminToken });\r\n txn = startTestTxn(rwIModel, \"ChangesetReader setup\");\r\n // Push 1: import schema + drawing model setup\r\n const schema = `<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n <ECSchema schemaName=\"TestDomain\" alias=\"ts\" version=\"01.00\" xmlns=\"http://www.bentley.com/schemas/Bentley.ECXML.3.1\">\r\n <ECSchemaReference name=\"BisCore\" version=\"01.00\" alias=\"bis\"/>\r\n <ECEntityClass typeName=\"SimpleElement\">\r\n <BaseClass>bis:GraphicalElement2d</BaseClass>\r\n <!-- Simple binary -->\r\n <ECProperty propertyName=\"BinProp\" typeName=\"binary\"/>\r\n <!-- Point3d -->\r\n <ECProperty propertyName=\"Pt3dProp\" typeName=\"point3d\"/>\r\n <!-- Array of GUIDs stored as strings -->\r\n <ECArrayProperty propertyName=\"GuidArrProp\" typeName=\"string\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\r\n </ECEntityClass>\r\n </ECSchema>`;\r\n await importSchemaStrings(txn, [schema]);\r\n rwIModel.channels.addAllowedChannel(ChannelControl.sharedChannelName);\r\n\r\n await rwIModel.locks.acquireLocks({ shared: IModel.dictionaryId });\r\n const codeProps = Code.createEmpty();\r\n codeProps.value = \"OpenFileDrawing\";\r\n [, drawingModelId] = IModelTestUtils.createAndInsertDrawingPartitionAndModel(txn, codeProps, true);\r\n\r\n const foundCat = DrawingCategory.queryCategoryIdByName(rwIModel, IModel.dictionaryId, \"OpenFileCategory\");\r\n drawingCategoryId = foundCat ?? DrawingCategory.insert(txn, IModel.dictionaryId, \"OpenFileCategory\",\r\n new SubCategoryAppearance({ color: ColorDef.fromString(\"rgb(0,128,255)\").toJSON() }));\r\n\r\n txn.saveChanges(\"setup\");\r\n await rwIModel.pushChanges({ description: \"setup\", accessToken: adminToken });\r\n });\r\n\r\n after(() => {\r\n txn.end();\r\n rwIModel?.close();\r\n HubMock.shutdown();\r\n });\r\n\r\n it(\"opens local and in-memory changes\", async () => {\r\n // Wait so that LastMod on bis_Model gets a distinct timestamp before the insert txn\r\n await new Promise((resolve) => setTimeout(resolve, 300));\r\n await rwIModel.locks.acquireLocks({ shared: drawingModelId });\r\n const elementId: Id64String = txn.insertElement({\r\n classFullName: \"TestDomain:SimpleElement\",\r\n model: drawingModelId,\r\n category: drawingCategoryId,\r\n code: Code.createEmpty(),\r\n Pt3dProp: { y: 2.5, z: 3.7 },\r\n BinProp: new Uint8Array([1, 2, 3, 4]),\r\n GuidArrProp: [\r\n \"a1b2c3d4-e5f6-7890-abcd-ef1234567890\",\r\n \"bbbbbbbb-cccc-dddd-eeee-ffffffffffff\",\r\n ],\r\n } as any);\r\n txn.saveChanges(\"insert element\");\r\n\r\n\r\n // === openFile: insert changeset ===\r\n {\r\n using reader = ChangesetReader.openLocalChanges({ db: rwIModel, rowOptions: { abbreviateBlobs: false } });\r\n using pcu = new PartialChangeUnifier(ChangeUnifierCache.createSqliteBackedCache());\r\n while (reader.step())\r\n pcu.appendFrom(reader);\r\n const instances = Array.from(pcu.instances);\r\n\r\n const elemNew = instances.find((i) => i.ECInstanceId === elementId && i.$meta.stage === \"New\");\r\n expect(elemNew).to.exist;\r\n assert.deepEqual(Object.keys(elemNew!.$meta).sort(), [\"op\", \"tables\", \"changeIndexes\", \"stage\", \"propFilter\", \"rowOptions\", \"changeFetchedPropNames\", \"instanceKey\", \"isIndirectChange\"].sort());\r\n assert.equal(elemNew!.$meta.op, \"Inserted\");\r\n assert.equal(elemNew!.$meta.stage, \"New\");\r\n assert.deepEqual(elemNew!.$meta.tables.sort(), [\"bis_Element\", \"bis_GeometricElement2d\"].sort());\r\n assert.deepEqual(elemNew!.$meta.propFilter, PropertyFilter.All);\r\n assert.deepEqual(elemNew!.$meta.changeIndexes.sort(), [1, 2].sort());\r\n assert.deepEqual(elemNew!.$meta.rowOptions, { abbreviateBlobs: false });\r\n assert.equal(elemNew!.$meta.isIndirectChange, false);\r\n\r\n expect(elemNew!.Category).to.exist;\r\n expect(elemNew!.CodeScope).to.exist;\r\n expect(elemNew!.CodeSpec).to.exist;\r\n expect(elemNew!.LastMod).to.exist;\r\n expect(elemNew!.Model).to.exist;\r\n expect(elemNew!.FederationGuid).to.exist;\r\n assert.isUndefined(elemNew!.Pt3dProp);\r\n assert.isNotNull(elemNew!.BinProp);\r\n assert.deepEqual(elemNew!.BinProp, new Uint8Array([1, 2, 3, 4]));\r\n assert.deepEqual(elemNew!.GuidArrProp, [\r\n \"a1b2c3d4-e5f6-7890-abcd-ef1234567890\",\r\n \"bbbbbbbb-cccc-dddd-eeee-ffffffffffff\",\r\n ]);\r\n assert.deepEqual(Object.keys(elemNew!).sort(), [\"ECInstanceId\", \"ECClassId\", \"Model\", \"CodeSpec\",\r\n \"CodeScope\", \"FederationGuid\", \"$meta\", \"Category\", \"LastMod\",\r\n \"BinProp\", \"GuidArrProp\"].sort())\r\n assert.deepEqual([...elemNew!.$meta.changeFetchedPropNames].sort(), ['BBoxHigh', 'BBoxLow', 'BinProp',\r\n 'Category.Id', 'CodeScope.Id', 'CodeSpec.Id', 'CodeValue',\r\n 'ECClassId', 'ECInstanceId', 'FederationGuid', 'GeometryStream', 'GuidArrProp',\r\n 'JsonProperties', 'LastMod', 'Model.Id', 'Origin', 'Parent', 'Pt3dProp', 'Rotation',\r\n 'TypeDefinition', 'UserLabel'].sort());\r\n }\r\n // Wait so that LastMod on bis_Model gets a distinct timestamp before the update txn\r\n await new Promise((resolve) => setTimeout(resolve, 300));\r\n // --- Push 3: update element — change all custom props ---\r\n await rwIModel.locks.acquireLocks({ exclusive: elementId });\r\n txn.updateElement({\r\n ...rwIModel.elements.getElementProps(elementId),\r\n Pt3dProp: { x: 1.0, y: 9.9, z: 7.7 },\r\n BinProp: new Uint8Array([0xaa, 0xbb, 0xcc, 0xdd]),\r\n GuidArrProp: [\r\n \"ffffffff-0000-1111-2222-333344445555\",\r\n ],\r\n });\r\n\r\n // === openFile: update changeset ===\r\n {\r\n using reader = ChangesetReader.openInMemoryChanges({ db: rwIModel, rowOptions: { abbreviateBlobs: false } });\r\n using pcu = new PartialChangeUnifier(ChangeUnifierCache.createSqliteBackedCache());\r\n while (reader.step())\r\n pcu.appendFrom(reader);\r\n const instances = Array.from(pcu.instances);\r\n\r\n const elemNew = instances.find((i) => i.ECInstanceId === elementId && i.$meta.stage === \"New\");\r\n const elemOld = instances.find((i) => i.ECInstanceId === elementId && i.$meta.stage === \"Old\");\r\n expect(elemNew).to.exist;\r\n expect(elemOld).to.exist;\r\n assert.equal(elemNew!.$meta.op, \"Updated\");\r\n assert.equal(elemNew!.$meta.stage, \"New\");\r\n assert.equal(elemNew!.$meta.propFilter, PropertyFilter.All);\r\n assert.deepEqual(Object.keys(elemNew!.$meta).sort(), [\"op\", \"tables\", \"changeIndexes\", \"stage\", \"propFilter\", \"rowOptions\", \"changeFetchedPropNames\", \"instanceKey\", \"isIndirectChange\"].sort());\r\n assert.deepEqual(Object.keys(elemNew!).sort(), [\"ECInstanceId\", \"ECClassId\", \"Origin\",\r\n \"Rotation\", \"BBoxLow\", \"BBoxHigh\", \"Pt3dProp\", \"BinProp\", \"GuidArrProp\", \"$meta\", \"LastMod\"].sort());\r\n assert.deepEqual(elemNew!.Pt3dProp, { X: 1, Y: 9.9, Z: 7.7 });\r\n assert.deepEqual(elemNew!.BinProp, new Uint8Array([0xaa, 0xbb, 0xcc, 0xdd]));\r\n assert.deepEqual(elemNew!.GuidArrProp, [\"ffffffff-0000-1111-2222-333344445555\"]);\r\n assert.deepEqual(elemNew!.Origin, { X: 0, Y: 0 });\r\n assert.deepEqual(elemNew!.BBoxLow, { X: 0, Y: 0 });\r\n assert.deepEqual(elemNew!.BBoxHigh, { X: 0, Y: 0 });\r\n assert.deepEqual(elemNew!.Rotation, 0);\r\n expect(elemNew!.LastMod).to.exist;\r\n assert.deepEqual([...elemNew!.$meta.changeFetchedPropNames].sort(), ['BBoxHigh', 'BBoxLow', 'BinProp', 'ECInstanceId', 'GuidArrProp', 'LastMod', 'Origin', 'Pt3dProp', 'Rotation'].sort());\r\n assert.equal(elemNew!.$meta.isIndirectChange, false);\r\n\r\n assert.equal(elemOld!.$meta.op, \"Updated\");\r\n assert.equal(elemOld!.$meta.stage, \"Old\");\r\n assert.deepEqual(Object.keys(elemOld!.$meta).sort(), [\"op\", \"tables\", \"changeIndexes\", \"stage\", \"propFilter\", \"rowOptions\", \"changeFetchedPropNames\", \"instanceKey\", \"isIndirectChange\"].sort());\r\n assert.deepEqual(Object.keys(elemOld!).sort(), [\"ECInstanceId\", \"ECClassId\", \"BinProp\", \"GuidArrProp\", \"$meta\",\r\n \"LastMod\"].sort());\r\n assert.deepEqual(elemOld!.BinProp, new Uint8Array([1, 2, 3, 4]));\r\n assert.deepEqual(elemOld!.GuidArrProp, [\r\n \"a1b2c3d4-e5f6-7890-abcd-ef1234567890\",\r\n \"bbbbbbbb-cccc-dddd-eeee-ffffffffffff\",\r\n ]);\r\n expect(elemOld!.LastMod).to.exist;\r\n assert.equal(elemOld!.$meta.isIndirectChange, false);\r\n assert.deepEqual([...elemOld!.$meta.changeFetchedPropNames].sort(), ['BBoxHigh', 'BBoxLow', 'BinProp', 'ECInstanceId', 'GuidArrProp', 'LastMod', 'Origin', 'Pt3dProp', 'Rotation'].sort());\r\n }\r\n\r\n // === openGroup: insert + update as a single stream ===\r\n // After merging, the elem New key is shared between insert-New and update-New;\r\n // the update-New wins on overlapping props, so the final New reflects the updated state.\r\n // elem Old only comes from the update changeset.\r\n {\r\n using reader = ChangesetReader.openLocalChanges({ db: rwIModel, includeInMemoryChanges: true, rowOptions: { abbreviateBlobs: false } });\r\n using pcu = new PartialChangeUnifier(ChangeUnifierCache.createSqliteBackedCache());\r\n while (reader.step())\r\n pcu.appendFrom(reader);\r\n const instances = Array.from(pcu.instances);\r\n\r\n const elemNew = instances.find((i) => i.ECInstanceId === elementId && i.$meta.stage === \"New\");\r\n const elemOld = instances.find((i) => i.ECInstanceId === elementId && i.$meta.stage === \"Old\");\r\n expect(elemNew).to.exist;\r\n expect(elemOld).to.not.exist;\r\n // New merges insert + update; final values are from the update\r\n assert.deepEqual(elemNew!.Pt3dProp, { X: 1, Y: 9.9, Z: 7.7 });\r\n assert.deepEqual(elemNew!.BinProp, new Uint8Array([0xaa, 0xbb, 0xcc, 0xdd]));\r\n assert.deepEqual(elemNew!.GuidArrProp, [\"ffffffff-0000-1111-2222-333344445555\"]);\r\n assert.deepEqual(elemNew!.Origin, { X: 0, Y: 0 });\r\n assert.deepEqual(elemNew!.BBoxLow, { X: 0, Y: 0 });\r\n assert.deepEqual(elemNew!.BBoxHigh, { X: 0, Y: 0 });\r\n assert.deepEqual(elemNew!.Rotation, 0);\r\n expect(elemNew!.LastMod).to.exist;\r\n expect(elemNew!.Category).to.exist;\r\n expect(elemNew!.CodeScope).to.exist;\r\n expect(elemNew!.CodeSpec).to.exist;\r\n expect(elemNew!.LastMod).to.exist;\r\n expect(elemNew!.Model).to.exist;\r\n expect(elemNew!.FederationGuid).to.exist;\r\n assert.deepEqual(Object.keys(elemNew!.$meta).sort(), [\"op\", \"tables\", \"changeIndexes\", \"stage\", \"propFilter\", \"rowOptions\", \"changeFetchedPropNames\", \"instanceKey\", \"isIndirectChange\"].sort());\r\n assert.equal(elemNew!.$meta.op, \"Inserted\");\r\n assert.equal(elemNew!.$meta.stage, \"New\");\r\n assert.deepEqual(elemNew!.$meta.tables.sort(), [\"bis_Element\", \"bis_GeometricElement2d\"].sort());\r\n assert.deepEqual(elemNew!.$meta.propFilter, PropertyFilter.All);\r\n assert.deepEqual(elemNew!.$meta.changeIndexes.sort(), [1, 2].sort());\r\n assert.deepEqual(elemNew!.$meta.rowOptions, { abbreviateBlobs: false });\r\n assert.deepEqual(Object.keys(elemNew!).sort(), [\"ECInstanceId\", \"ECClassId\", \"Model\", \"CodeSpec\",\r\n \"CodeScope\", \"FederationGuid\", \"$meta\", \"Category\", \"LastMod\",\r\n \"BinProp\", \"GuidArrProp\", \"Origin\", \"Rotation\", \"BBoxLow\", \"BBoxHigh\", \"Pt3dProp\"].sort());\r\n assert.deepEqual([...elemNew!.$meta.changeFetchedPropNames].sort(), ['BBoxHigh', 'BBoxLow',\r\n 'BinProp', 'Category.Id', 'CodeScope.Id', 'CodeSpec.Id',\r\n 'CodeValue', 'ECClassId', 'ECInstanceId', 'FederationGuid', 'GeometryStream',\r\n 'GuidArrProp', 'JsonProperties', 'LastMod', 'Model.Id', 'Origin', 'Parent', 'Pt3dProp',\r\n 'Rotation', 'TypeDefinition', 'UserLabel'].sort());\r\n assert.equal(elemNew!.$meta.isIndirectChange, false);\r\n }\r\n });\r\n});\r\n\r\ndescribe(\"ChangesetReader: behaviour in case imodel is not in sync with changeset file being read\", async () => {\r\n let rwIModel: BriefcaseDb;\r\n let rwIModelId: string;\r\n let elementId: Id64String;\r\n let drawingModelId: Id64String;\r\n let categoryId1: Id64String;\r\n let categoryId2: Id64String;\r\n let txn: EditTxn;\r\n\r\n before(async () => {\r\n HubMock.startup(\"ChangesetReaderBugsTest\", KnownTestLocations.outputDir);\r\n const adminToken = \"super manager token\";\r\n const iTwinId = HubMock.iTwinId;\r\n rwIModelId = await HubMock.createNewIModel({ iTwinId, iModelName: \"bugTest\", description: \"BugTest\", accessToken: adminToken });\r\n assert.isNotEmpty(rwIModelId);\r\n rwIModel = await HubWrappers.downloadAndOpenBriefcase({ iTwinId, iModelId: rwIModelId, accessToken: adminToken });\r\n txn = startTestTxn(rwIModel, \"ChangesetReaderBugsTest setup\");\r\n // Push 1: import schema + set up drawing model and two categories\r\n const schema = `<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n <ECSchema schemaName=\"TestDomain\" alias=\"ts\" version=\"01.00\" xmlns=\"http://www.bentley.com/schemas/Bentley.ECXML.3.1\">\r\n <ECSchemaReference name=\"BisCore\" version=\"01.00\" alias=\"bis\"/>\r\n <ECEntityClass typeName=\"Test2dElement\">\r\n <BaseClass>bis:GraphicalElement2d</BaseClass>\r\n <ECProperty propertyName=\"s\" typeName=\"point2d\"/>\r\n </ECEntityClass>\r\n </ECSchema>`;\r\n await importSchemaStrings(txn, [schema]);\r\n rwIModel.channels.addAllowedChannel(ChannelControl.sharedChannelName);\r\n\r\n await rwIModel.locks.acquireLocks({ shared: IModel.dictionaryId });\r\n const codeProps = Code.createEmpty();\r\n codeProps.value = \"DrawingModel\";\r\n [, drawingModelId] = IModelTestUtils.createAndInsertDrawingPartitionAndModel(txn, codeProps, true);\r\n\r\n categoryId1 = DrawingCategory.queryCategoryIdByName(rwIModel, IModel.dictionaryId, \"Category1\")\r\n ?? DrawingCategory.insert(txn, IModel.dictionaryId, \"Category1\", new SubCategoryAppearance({ color: ColorDef.fromString(\"rgb(255,0,0)\").toJSON() }));\r\n\r\n categoryId2 = DrawingCategory.queryCategoryIdByName(rwIModel, IModel.dictionaryId, \"Category2\")\r\n ?? DrawingCategory.insert(txn, IModel.dictionaryId, \"Category2\", new SubCategoryAppearance({ color: ColorDef.fromString(\"rgb(0,0,255)\").toJSON() }));\r\n\r\n txn.saveChanges(\"setup\");\r\n await rwIModel.pushChanges({ description: \"setup\", accessToken: adminToken });\r\n });\r\n\r\n after(() => {\r\n txn.end();\r\n rwIModel?.close();\r\n HubMock.shutdown();\r\n });\r\n\r\n it(\"openFile() reads the middle changeset of an insert → update → delete lifecycle\", async () => {\r\n const adminToken = \"super manager token\";\r\n // Push 2 (insert): insert element with category1\r\n const geomArray: Arc3d[] = [\r\n Arc3d.createXY(Point3d.create(0, 0), 5),\r\n Arc3d.createXY(Point3d.create(5, 5), 2),\r\n Arc3d.createXY(Point3d.create(-5, -5), 20),\r\n ];\r\n const geometryStream: GeometryStreamProps = [];\r\n for (const geom of geomArray)\r\n geometryStream.push(IModelJson.Writer.toIModelJson(geom));\r\n\r\n // Wait so that LastMod on bis_Model gets a distinct timestamp before the insert txn\r\n await new Promise((resolve) => setTimeout(resolve, 300));\r\n await rwIModel.locks.acquireLocks({ shared: drawingModelId });\r\n elementId = txn.insertElement({\r\n classFullName: \"TestDomain:Test2dElement\",\r\n model: drawingModelId,\r\n category: categoryId1,\r\n code: Code.createEmpty(),\r\n geom: geometryStream,\r\n s: { x: 1.5, y: 2.5 },\r\n } as any);\r\n assert.isTrue(Id64.isValidId64(elementId));\r\n txn.saveChanges(\"insert element\");\r\n await rwIModel.pushChanges({ description: \"insert element\", accessToken: adminToken });\r\n\r\n // Wait so that LastMod on bis_Model gets a distinct timestamp before the update txn\r\n await new Promise((resolve) => setTimeout(resolve, 300));\r\n // Push 3 (update): change category to category2\r\n await rwIModel.locks.acquireLocks({ exclusive: elementId });\r\n txn.updateElement({\r\n ...rwIModel.elements.getElementProps(elementId),\r\n category: categoryId2,\r\n });\r\n txn.saveChanges(\"update element\");\r\n await rwIModel.pushChanges({ description: \"update element\", accessToken: adminToken });\r\n\r\n // Wait so that LastMod on bis_Model gets a distinct timestamp before the delete txn\r\n await new Promise((resolve) => setTimeout(resolve, 300));\r\n // Push 4 (delete): delete the element\r\n await rwIModel.locks.acquireLocks({ exclusive: elementId });\r\n txn.deleteElement(elementId);\r\n txn.saveChanges(\"delete element\");\r\n await rwIModel.pushChanges({ description: \"delete element\", accessToken: adminToken });\r\n // changesets: [setup, insert, update, delete] — 4 total; index 2 = update changeset\r\n const targetDir = path.join(KnownTestLocations.outputDir, rwIModelId, \"changesets\");\r\n const changesets = await HubMock.downloadChangesets({ iModelId: rwIModelId, targetDir });\r\n expect(changesets.length).to.equal(4);\r\n const middleChangeset = changesets[Math.floor(changesets.length / 2)]; // index 2 = update\r\n\r\n using reader = ChangesetReader.openFile({ db: rwIModel, fileName: middleChangeset.pathname, propFilter: PropertyFilter.InstanceKey, rowOptions: { classIdsToClassNames: true } });\r\n using pcu = new PartialChangeUnifier(ChangeUnifierCache.createInMemoryCache());\r\n while (reader.step())\r\n pcu.appendFrom(reader);\r\n\r\n const instances = Array.from(pcu.instances);\r\n\r\n const bisElementOld = instances.filter((i) => i.ECInstanceId === elementId && i.$meta.stage === \"Old\");\r\n const bisElementNew = instances.filter((i) => i.ECInstanceId === elementId && i.$meta.stage === \"New\");\r\n expect(bisElementOld).to.exist;\r\n expect(bisElementNew).to.exist;\r\n expect(bisElementOld).to.have.lengthOf(2);\r\n expect(bisElementNew).to.have.lengthOf(2);\r\n // Why this is happening?\r\n // We have deleted the instance from the db when the changeset is opened\r\n // So we are unable to fetch the correct classId for the instance\r\n // and it is defaulting to the base class of the deleted instance which is \"BisCore.Element\" and \"BisCore.GeometricElement2d\" instead of \"TestDomain.Test2dElement\"\r\n // If the instance had not been deleted, we would have been able to fetch the correct classId for the instance and it would have been \"TestDomain.Test2dElement\"\r\n // And we would have just two entries for the instance with classId \"TestDomain.Test2dElement\" , one wioth stage \"New\" and other with \"old\"\r\n expect(bisElementNew.map((i => i.ECClassId)).sort()).to.deep.equal([\"BisCore.GeometricElement2d\", \"BisCore.Element\"].sort());\r\n expect(bisElementOld.map((i => i.ECClassId)).sort()).to.deep.equal([\"BisCore.GeometricElement2d\", \"BisCore.Element\"].sort());\r\n });\r\n\r\n it(\"openTxn() reads the middle txn of an insert → update → update lifecycle\", async () => {\r\n // Push 2 (insert): insert element with category1\r\n const geomArray: Arc3d[] = [\r\n Arc3d.createXY(Point3d.create(0, 0), 5),\r\n Arc3d.createXY(Point3d.create(5, 5), 2),\r\n Arc3d.createXY(Point3d.create(-5, -5), 20),\r\n ];\r\n const geometryStream: GeometryStreamProps = [];\r\n for (const geom of geomArray)\r\n geometryStream.push(IModelJson.Writer.toIModelJson(geom));\r\n\r\n // Wait so that LastMod on bis_Model gets a distinct timestamp before the insert txn\r\n await new Promise((resolve) => setTimeout(resolve, 300));\r\n await rwIModel.locks.acquireLocks({ shared: drawingModelId });\r\n elementId = txn.insertElement({\r\n classFullName: \"TestDomain:Test2dElement\",\r\n model: drawingModelId,\r\n category: categoryId1,\r\n code: Code.createEmpty(),\r\n geom: geometryStream,\r\n s: { x: 1.5, y: 2.5 },\r\n } as any);\r\n assert.isTrue(Id64.isValidId64(elementId));\r\n txn.saveChanges(\"insert element\");\r\n // Wait so that LastMod on bis_Model gets a distinct timestamp before the update txn\r\n await new Promise((resolve) => setTimeout(resolve, 300));\r\n\r\n await rwIModel.locks.acquireLocks({ exclusive: elementId });\r\n txn.updateElement({\r\n ...rwIModel.elements.getElementProps(elementId),\r\n s: { x: 100.0, y: 2.5 },\r\n });\r\n txn.saveChanges(\"update element\");\r\n const txnId = rwIModel.txns.getLastSavedTxnProps()!.id;\r\n assert.isTrue(Id64.isValidId64(txnId));\r\n\r\n // Wait so that LastMod on bis_Model gets a distinct timestamp before the update txn\r\n await new Promise((resolve) => setTimeout(resolve, 300));\r\n\r\n await rwIModel.locks.acquireLocks({ exclusive: elementId });\r\n txn.updateElement({\r\n ...rwIModel.elements.getElementProps(elementId),\r\n s: { x: 100.0, y: 200.0 },\r\n });\r\n txn.saveChanges(\"update element\");\r\n\r\n using reader = ChangesetReader.openTxn({ db: rwIModel, txnId });\r\n using pcu = new PartialChangeUnifier(ChangeUnifierCache.createInMemoryCache());\r\n while (reader.step())\r\n pcu.appendFrom(reader);\r\n\r\n const instances = Array.from(pcu.instances);\r\n\r\n const elementOld = instances.find((i) => i.ECInstanceId === elementId && i.$meta.stage === \"Old\");\r\n const elementNew = instances.find((i) => i.ECInstanceId === elementId && i.$meta.stage === \"New\");\r\n expect(elementOld).to.exist;\r\n expect(elementNew).to.exist;\r\n // Here as we can see that we correctly captured old value of s.X which is 1.5 and new value of s.X which is 100.0\r\n // But the Y value, though same is a bit different, it is 200\r\n // Because in liveDB we have done another tyransaction after the one which we have opened\r\n // In that transaction we have updated the Y value to 200, so when we are fetching the changes for the opened transaction,\r\n // we are getting the latest value of Y which is 200 instead of 2.5\r\n assert.deepEqual(elementOld!.s, { X: 1.5, Y: 200 });\r\n assert.deepEqual(elementNew!.s, { X: 100, Y: 200 });\r\n // But we can find the exact stuff which actually changed and which we fetched from the changeset and not the live DB\r\n // using the changeFetchedPropNames, we can find that only s.X was changed in the changeset and s.Y was not changed in the changeset.\r\n expect(elementNew!.$meta.changeFetchedPropNames).to.include(\"s.X\");\r\n expect(elementNew!.$meta.changeFetchedPropNames).to.not.include(\"s.Y\");\r\n expect(elementOld!.$meta.changeFetchedPropNames).to.include(\"s.X\");\r\n expect(elementOld!.$meta.changeFetchedPropNames).to.not.include(\"s.Y\");\r\n });\r\n});\r\n\r\ndescribe(\"ChangesetReader: overflow table graceful recovery when ExclusiveRootClassId is NULL\", () => {\r\n let rwIModel: BriefcaseDb;\r\n let rwIModelId: string;\r\n let txn: EditTxn;\r\n let updateChangesetPathname: string;\r\n let id: string;\r\n\r\n before(async () => {\r\n HubMock.startup(\"ECChangesetOverflowNull\", KnownTestLocations.outputDir);\r\n const adminToken = \"super manager token\";\r\n const iTwinId = HubMock.iTwinId;\r\n const nProps = 36; // enough to spill into the overflow table\r\n\r\n rwIModelId = await HubMock.createNewIModel({ iTwinId, iModelName: \"overflowNull\", description: \"OverflowNull\", accessToken: adminToken });\r\n rwIModel = await HubWrappers.downloadAndOpenBriefcase({ iTwinId, iModelId: rwIModelId, accessToken: adminToken });\r\n txn = startTestTxn(rwIModel, \"overflow null test\");\r\n\r\n // Import schema with class that spans the overflow table (36 properties)\r\n const schema = `<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n <ECSchema schemaName=\"TestDomain\" alias=\"ts\" version=\"01.00\" xmlns=\"http://www.bentley.com/schemas/Bentley.ECXML.3.1\">\r\n <ECSchemaReference name=\"BisCore\" version=\"01.00\" alias=\"bis\"/>\r\n <ECEntityClass typeName=\"Test2dElement\">\r\n <BaseClass>bis:GraphicalElement2d</BaseClass>\r\n ${Array(nProps).fill(undefined).map((_, i) => `<ECProperty propertyName=\"p${i}\" typeName=\"string\"/>`).join(\"\\n\")}\r\n </ECEntityClass>\r\n </ECSchema>`;\r\n await importSchemaStrings(txn, [schema]);\r\n rwIModel.channels.addAllowedChannel(ChannelControl.sharedChannelName);\r\n\r\n await rwIModel.locks.acquireLocks({ shared: IModel.dictionaryId });\r\n const codeProps = Code.createEmpty();\r\n codeProps.value = \"DrawingModel\";\r\n const [, drawingModelId] = IModelTestUtils.createAndInsertDrawingPartitionAndModel(txn, codeProps, true);\r\n let drawingCategoryId = DrawingCategory.queryCategoryIdByName(rwIModel, IModel.dictionaryId, \"OverflowNullCat\");\r\n if (undefined === drawingCategoryId)\r\n drawingCategoryId = DrawingCategory.insert(txn, IModel.dictionaryId, \"OverflowNullCat\", new SubCategoryAppearance({ color: ColorDef.fromString(\"rgb(255,0,0)\").toJSON() }));\r\n\r\n const geom: GeometryStreamProps = [\r\n Arc3d.createXY(Point3d.create(0, 0), 5),\r\n Arc3d.createXY(Point3d.create(5, 5), 2),\r\n Arc3d.createXY(Point3d.create(-5, -5), 20),\r\n ].map((a) => IModelJson.Writer.toIModelJson(a));\r\n\r\n const props = Array(nProps).fill(undefined).map((_, i) => ({ [`p${i}`]: `test_${i}` })).reduce((acc, curr) => ({ ...acc, ...curr }), {});\r\n\r\n // Wait so that LastMod on bis_Model gets a distinct timestamp before the insert txn\r\n await new Promise((resolve) => setTimeout(resolve, 300));\r\n // Push 1: insert element\r\n await rwIModel.locks.acquireLocks({ shared: drawingModelId });\r\n id = txn.insertElement({\r\n classFullName: \"TestDomain:Test2dElement\",\r\n model: drawingModelId,\r\n category: drawingCategoryId,\r\n code: Code.createEmpty(),\r\n geom,\r\n ...props,\r\n } as any);\r\n assert.isTrue(Id64.isValidId64(id));\r\n txn.saveChanges();\r\n await rwIModel.pushChanges({ description: \"insert element\", accessToken: adminToken });\r\n\r\n // Push 2: update element — this is the changeset we will read against the broken iModel\r\n const updatedProps = Object.assign(\r\n rwIModel.elements.getElementProps(id),\r\n Array(nProps).fill(undefined).map((_, i) => ({ [`p${i}`]: `updated_${i}` })).reduce((acc, curr) => ({ ...acc, ...curr }), {}),\r\n );\r\n // Wait so that LastMod on bis_Model gets a distinct timestamp before the update txn\r\n await new Promise((resolve) => setTimeout(resolve, 300));\r\n await rwIModel.locks.acquireLocks({ exclusive: id });\r\n txn.updateElement(updatedProps);\r\n txn.saveChanges();\r\n await rwIModel.pushChanges({ description: \"update element\", accessToken: adminToken });\r\n\r\n // Wait so that LastMod on bis_Model gets a distinct timestamp before the delete txn\r\n await new Promise((resolve) => setTimeout(resolve, 300));\r\n // Push 3: delete element (so the iModel is out of sync when we re-read push 2)\r\n await rwIModel.locks.acquireLocks({ exclusive: id });\r\n txn.deleteElement(id);\r\n txn.saveChanges();\r\n await rwIModel.pushChanges({ description: \"delete element\", accessToken: adminToken });\r\n\r\n const targetDir = path.join(KnownTestLocations.outputDir, rwIModelId, \"changesets\");\r\n const changesets = await HubMock.downloadChangesets({ iModelId: rwIModelId, targetDir });\r\n // changesets: [insert, update, delete] — index 1 = update changeset\r\n updateChangesetPathname = changesets[1].pathname;\r\n });\r\n\r\n after(() => {\r\n txn.end();\r\n rwIModel?.close();\r\n HubMock.shutdown();\r\n });\r\n\r\n it(\"openFile() recovers gracefully when ExclusiveRootClassId is NULL for overflow table\", () => {\r\n /**\r\n * Simulate the broken state: clear ExclusiveRootClassId so the reader cannot\r\n * determine which derived class owns the overflow table rows.\r\n * The reader should fall back gracefully rather than crashing, and still\r\n * produce inserted/deleted instances for the overflow table rows.\r\n */\r\n expect(\r\n rwIModel[_nativeDb].executeSql(\"UPDATE ec_Table SET ExclusiveRootClassId=NULL WHERE Name='bis_GeometricElement2d_Overflow'\"),\r\n ).to.equal(DbResult.BE_SQLITE_OK);\r\n\r\n let assertedOnOverflowTable = false;\r\n\r\n using reader = ChangesetReader.openFile({ db: rwIModel, fileName: updateChangesetPathname });\r\n while (reader.step()) {\r\n if (reader.tableName !== \"bis_GeometricElement2d_Overflow\")\r\n continue;\r\n\r\n assert.equal(reader.op, \"Updated\");\r\n\r\n // inserted (New stage)\r\n expect(reader.inserted).to.exist;\r\n assert.deepEqual(reader.inserted!.$meta.tables, [\"bis_GeometricElement2d_Overflow\"]);\r\n assert.equal(reader.inserted!.$meta.op, \"Updated\");\r\n assert.equal(reader.inserted!.$meta.stage, \"New\");\r\n assert.equal(reader.inserted!.ECInstanceId, id);\r\n assert.equal(rwIModel.getClassNameFromId(reader.inserted!.ECClassId), \"BisCore:GeometricElement2d\");\r\n\r\n // deleted (Old stage)\r\n expect(reader.deleted).to.exist;\r\n assert.deepEqual(reader.deleted!.$meta.tables, [\"bis_GeometricElement2d_Overflow\"]);\r\n assert.equal(reader.deleted!.$meta.op, \"Updated\");\r\n assert.equal(reader.deleted!.$meta.stage, \"Old\");\r\n assert.equal(reader.deleted!.ECInstanceId, id);\r\n assert.equal(rwIModel.getClassNameFromId(reader.deleted!.ECClassId), \"BisCore:GeometricElement2d\");\r\n\r\n assertedOnOverflowTable = true;\r\n }\r\n\r\n assert.isTrue(assertedOnOverflowTable, \"Expected at least one row from the overflow table\");\r\n });\r\n});\r\n\r\ndescribe(\"ChangesetReader: instance reused with a different class (class change in Updated row)\", () => {\r\n it(\"openFile() correctly identifies ECClassId change from T1 to T2 in a buggy changeset\", async () => {\r\n /**\r\n * Same scenario as ChangesetReader.test.ts: \"Instance update to a different class (bug)\".\r\n * Verifies ChangesetReader behaviour when an instance ID is reused with a different class.\r\n *\r\n * Steps:\r\n * 1. Import schema with two classes (T1 and T2) that inherit from GraphicalElement2d.\r\n * - T1 has property 'p' of type string\r\n * - T2 has property 'p' of type long\r\n * 2. Insert a T1 element, push changeset #1.\r\n * 3. Delete the T1 element, reset the ID sequence to force ID reuse, insert T2 with same ID, push changeset #2.\r\n *\r\n * ChangesetReader should:\r\n * - Report op=Updated for bis_Element and bis_GeometricElement2d rows.\r\n * - inserted.ECClassId resolves to T2, deleted.ECClassId resolves to T1.\r\n * - Property p: inserted carries the T2 integer value (1111), deleted carries the T1 string value (\"wwww\").\r\n */\r\n HubMock.startup(\"ChangesetReaderClassChange\", KnownTestLocations.outputDir);\r\n const adminToken = \"super manager token\";\r\n const iTwinId = HubMock.iTwinId;\r\n\r\n const modelId = await HubMock.createNewIModel({ iTwinId, iModelName: \"classChange\", description: \"ClassChange\", accessToken: adminToken });\r\n assert.isNotEmpty(modelId);\r\n\r\n let b1 = await HubWrappers.downloadAndOpenBriefcase({ iTwinId, iModelId: modelId, accessToken: adminToken });\r\n let txn = startTestTxn(b1, \"class change test\");\r\n\r\n const schema = `<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n <ECSchema schemaName=\"TestDomain\" alias=\"ts\" version=\"01.00\" xmlns=\"http://www.bentley.com/schemas/Bentley.ECXML.3.1\">\r\n <ECSchemaReference name=\"BisCore\" version=\"01.00\" alias=\"bis\"/>\r\n <ECEntityClass typeName=\"T1\">\r\n <BaseClass>bis:GraphicalElement2d</BaseClass>\r\n <ECProperty propertyName=\"p\" typeName=\"string\"/>\r\n </ECEntityClass>\r\n <ECEntityClass typeName=\"T2\">\r\n <BaseClass>bis:GraphicalElement2d</BaseClass>\r\n <ECProperty propertyName=\"p\" typeName=\"long\"/>\r\n </ECEntityClass>\r\n </ECSchema>`;\r\n\r\n await importSchemaStrings(txn, [schema]);\r\n b1.channels.addAllowedChannel(ChannelControl.sharedChannelName);\r\n\r\n await b1.locks.acquireLocks({ shared: IModel.dictionaryId });\r\n const codeProps = Code.createEmpty();\r\n codeProps.value = \"DrawingModel\";\r\n const [, drawingModelId] = IModelTestUtils.createAndInsertDrawingPartitionAndModel(txn, codeProps, true);\r\n let drawingCategoryId = DrawingCategory.queryCategoryIdByName(b1, IModel.dictionaryId, \"MyDrawingCategory\");\r\n if (undefined === drawingCategoryId)\r\n drawingCategoryId = DrawingCategory.insert(txn, IModel.dictionaryId, \"MyDrawingCategory\", new SubCategoryAppearance({ color: ColorDef.fromString(\"rgb(255,0,0)\").toJSON() }));\r\n\r\n const geom: GeometryStreamProps = [\r\n Arc3d.createXY(Point3d.create(0, 0), 5),\r\n Arc3d.createXY(Point3d.create(5, 5), 2),\r\n Arc3d.createXY(Point3d.create(-5, -5), 20),\r\n ].map((a) => IModelJson.Writer.toIModelJson(a));\r\n\r\n // Wait so that LastMod on bis_Model gets a distinct timestamp before the insert txn\r\n await new Promise((resolve) => setTimeout(resolve, 300));\r\n // Push 1: insert T1 element\r\n await b1.locks.acquireLocks({ shared: drawingModelId });\r\n const elId = txn.insertElement({\r\n classFullName: \"TestDomain:T1\",\r\n model: drawingModelId,\r\n category: drawingCategoryId,\r\n code: Code.createEmpty(),\r\n geom,\r\n p: \"wwww\",\r\n } as any);\r\n assert.isTrue(Id64.isValidId64(elId));\r\n txn.saveChanges();\r\n await b1.pushChanges({ description: \"insert element\" });\r\n\r\n // Wait so that LastMod on bis_Model gets a distinct timestamp before the delete txn\r\n await new Promise((resolve) => setTimeout(resolve, 300));\r\n // Push 2: delete T1 element, reset ID sequence to force same ID, insert T2\r\n await b1.locks.acquireLocks({ shared: drawingModelId, exclusive: elId });\r\n await b1.locks.acquireLocks({ shared: IModel.dictionaryId });\r\n txn.deleteElement(elId);\r\n txn.saveChanges();\r\n\r\n // Force ID sequence so the next insert reuses elId\r\n const bid = BigInt(elId) - 1n;\r\n b1[_nativeDb].saveLocalValue(\"bis_elementidsequence\", bid.toString());\r\n txn.saveChanges();\r\n const fileName = b1[_nativeDb].getFilePath();\r\n txn.end();\r\n b1.close();\r\n\r\n b1 = await BriefcaseDb.open({ fileName });\r\n b1.channels.addAllowedChannel(ChannelControl.sharedChannelName);\r\n txn = startTestTxn(b1, \"class change test reopened\");\r\n\r\n // Wait so that LastMod on bis_Model gets a distinct timestamp before the INSERT txn\r\n await new Promise((resolve) => setTimeout(resolve, 300));\r\n const elId2 = txn.insertElement({\r\n classFullName: \"TestDomain:T2\",\r\n model: drawingModelId,\r\n category: drawingCategoryId,\r\n code: Code.createEmpty(),\r\n geom,\r\n p: 1111,\r\n } as any);\r\n expect(elId2).to.equal(elId);\r\n txn.saveChanges();\r\n await b1.pushChanges({ description: \"buggy changeset\" });\r\n\r\n const targetDir = path.join(KnownTestLocations.outputDir, modelId, \"changesets\");\r\n const changesets = await HubMock.downloadChangesets({ iModelId: modelId, targetDir });\r\n expect(changesets.length).to.equal(2);\r\n expect(changesets[0].description).to.equal(\"insert element\");\r\n expect(changesets[1].description).to.equal(\"buggy changeset\");\r\n\r\n // ChangesetReader reads ECClassId from the changeset data for each stage,\r\n // so it correctly sees T2 for the new (inserted) side and T1 for the old (deleted) side.\r\n let bisElementAsserted = false;\r\n let bisGeomElement2dAsserted = false;\r\n\r\n using reader = ChangesetReader.openFile({ db: b1, fileName: changesets[1].pathname });\r\n while (reader.step()) {\r\n if (reader.tableName === \"bis_Element\" && reader.op === \"Updated\") {\r\n bisElementAsserted = true;\r\n expect(reader.inserted).to.exist;\r\n expect(reader.deleted).to.exist;\r\n // ECInstanceId: PK was not changed in the update — only available on the Old side\r\n assert.equal(reader.deleted!.ECInstanceId, elId);\r\n // ECClassId correctly reflects the class change\r\n assert.equal(b1.getClassNameFromId(reader.inserted!.ECClassId), \"TestDomain:T2\");\r\n assert.equal(b1.getClassNameFromId(reader.deleted!.ECClassId), \"TestDomain:T1\");\r\n }\r\n if (reader.tableName === \"bis_GeometricElement2d\" && reader.op === \"Updated\") {\r\n bisGeomElement2dAsserted = true;\r\n expect(reader.inserted).to.exist;\r\n expect(reader.deleted).to.exist;\r\n // ECClassId correctly reflects the class change\r\n assert.equal(b1.getClassNameFromId(reader.inserted!.ECClassId), \"TestDomain:T2\");\r\n assert.equal(b1.getClassNameFromId(reader.deleted!.ECClassId), \"TestDomain:T1\");\r\n // Property 'p': T2 declares it as long (integer), T1 as string\r\n assert.equal(reader.inserted!.p, 1111);\r\n assert.equal(reader.deleted!.p, \"wwww\");\r\n }\r\n }\r\n\r\n assert.isTrue(bisElementAsserted, \"Expected an Updated row in bis_Element\");\r\n assert.isTrue(bisGeomElement2dAsserted, \"Expected an Updated row in bis_GeometricElement2d\");\r\n\r\n txn.end();\r\n b1.close();\r\n HubMock.shutdown();\r\n });\r\n});\r\n\r\ndescribe(\"ChangesetReader: overflow table insert and update and delete\", () => {\r\n let rwIModel: BriefcaseDb;\r\n let elementId: Id64String;\r\n let drawingModelId: Id64String;\r\n let drawingCategoryId: Id64String;\r\n let insertTxnId: string;\r\n let updateTxnId: string;\r\n let txn: EditTxn;\r\n\r\n const nProps = 36;\r\n const propName = (i: number) => `p${i}`;\r\n const insertVal = (i: number) => `insert-${i}`;\r\n const updateVal = (i: number) => `updated-${i}`;\r\n\r\n before(async () => {\r\n HubMock.startup(\"ECChangesetOverflowInsertUpdate\", KnownTestLocations.outputDir);\r\n const adminToken = \"super manager token\";\r\n const iTwinId = HubMock.iTwinId;\r\n const rwIModelId = await HubMock.createNewIModel({ iTwinId, iModelName: \"overflowInsertUpdate\", description: \"overflowInsertUpdate\", accessToken: adminToken });\r\n rwIModel = await HubWrappers.downloadAndOpenBriefcase({ iTwinId, iModelId: rwIModelId, accessToken: adminToken });\r\n txn = startTestTxn(rwIModel, \"ChangesetReader overflow insert/update\");\r\n\r\n // 36 string properties — enough to spill columns into bis_GeometricElement2d_Overflow\r\n const schema = `<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n <ECSchema schemaName=\"TestDomain\" alias=\"ts\" version=\"01.00\" xmlns=\"http://www.bentley.com/schemas/Bentley.ECXML.3.1\">\r\n <ECSchemaReference name=\"BisCore\" version=\"01.00\" alias=\"bis\"/>\r\n <ECEntityClass typeName=\"OverflowElement\">\r\n <BaseClass>bis:GraphicalElement2d</BaseClass>\r\n ${Array.from({ length: nProps }, (_, i) => `<ECProperty propertyName=\"${propName(i)}\" typeName=\"string\"/>`).join(\"\\n \")}\r\n </ECEntityClass>\r\n </ECSchema>`;\r\n await importSchemaStrings(txn, [schema]);\r\n rwIModel.channels.addAllowedChannel(ChannelControl.sharedChannelName);\r\n\r\n await rwIModel.locks.acquireLocks({ shared: IModel.dictionaryId });\r\n const codeProps = Code.createEmpty();\r\n codeProps.value = \"OverflowDrawing\";\r\n [, drawingModelId] = IModelTestUtils.createAndInsertDrawingPartitionAndModel(txn, codeProps, true);\r\n const foundCat = DrawingCategory.queryCategoryIdByName(rwIModel, IModel.dictionaryId, \"OverflowCat\");\r\n drawingCategoryId = foundCat ?? DrawingCategory.insert(txn, IModel.dictionaryId, \"OverflowCat\",\r\n new SubCategoryAppearance({ color: ColorDef.fromString(\"rgb(0,128,0)\").toJSON() }));\r\n txn.saveChanges(\"setup\");\r\n\r\n // Txn 2: insert element with every property populated\r\n await rwIModel.locks.acquireLocks({ shared: drawingModelId });\r\n const geom: GeometryStreamProps = [\r\n Arc3d.createXY(Point3d.create(0, 0), 5),\r\n ].map((a) => IModelJson.Writer.toIModelJson(a));\r\n const insertProps = Object.fromEntries(Array.from({ length: nProps }, (_, i) => [propName(i), insertVal(i)]));\r\n // Wait so that LastMod on bis_Model gets a distinct timestamp before the insert txn\r\n await new Promise((resolve) => setTimeout(resolve, 300));\r\n\r\n elementId = txn.insertElement({\r\n classFullName: \"TestDomain:OverflowElement\",\r\n model: drawingModelId,\r\n category: drawingCategoryId,\r\n code: Code.createEmpty(),\r\n geom,\r\n ...insertProps,\r\n } as any);\r\n txn.saveChanges(\"insert overflow element\");\r\n insertTxnId = rwIModel.txns.getLastSavedTxnProps()!.id;\r\n\r\n // Wait so that LastMod on bis_Model gets a distinct timestamp before the UPDATE txn\r\n await new Promise((resolve) => setTimeout(resolve, 300));\r\n // Txn 3: update only the overflow-table properties (p34, p35 — the last two)\r\n await rwIModel.locks.acquireLocks({ exclusive: elementId });\r\n txn.updateElement({\r\n ...rwIModel.elements.getElementProps(elementId),\r\n [propName(34)]: updateVal(34),\r\n [propName(35)]: updateVal(35),\r\n });\r\n txn.saveChanges(\"update overflow props\");\r\n updateTxnId = rwIModel.txns.getLastSavedTxnProps()!.id;\r\n });\r\n\r\n after(() => {\r\n txn.end();\r\n rwIModel?.close();\r\n HubMock.shutdown();\r\n });\r\n\r\n it(\"txn | bis_GeometricElement2d_Overflow rows merged; overflow props correct in New and Old\", async () => {\r\n // --- update txn ---\r\n const updateInstances = readTxn(rwIModel, updateTxnId, undefined, { classIdsToClassNames: true });\r\n assert.equal(updateInstances.length, 4);\r\n\r\n // DrawingModel Updated New (indirect side-effect)\r\n const updateModelNew = updateInstances.find((i) => i.ECClassId === \"BisCore.DrawingModel\" && i.$meta.stage === \"New\");\r\n expect(updateModelNew).to.exist;\r\n assert.equal(updateModelNew!.$meta.op, \"Updated\");\r\n assert.isString(updateModelNew!.LastMod);\r\n assert.deepEqual(Object.keys(updateModelNew!).sort(), [\"ECInstanceId\", \"ECClassId\", \"LastMod\", \"$meta\"].sort());\r\n assert.deepEqual([...updateModelNew!.$meta.tables], [\"bis_Model\"]);\r\n assert.deepEqual([...updateModelNew!.$meta.changeFetchedPropNames].sort(), [\"ECInstanceId\", \"LastMod\"].sort());\r\n assert.deepEqual(updateModelNew!.$meta.rowOptions, { classIdsToClassNames: true });\r\n assert.equal(updateModelNew!.$meta.isIndirectChange, true);\r\n\r\n // DrawingModel Updated Old\r\n const updateModelOld = updateInstances.find((i) => i.ECClassId === \"BisCore.DrawingModel\" && i.$meta.stage === \"Old\");\r\n expect(updateModelOld).to.exist;\r\n assert.equal(updateModelOld!.$meta.op, \"Updated\");\r\n assert.isString(updateModelOld!.LastMod);\r\n assert.deepEqual(Object.keys(updateModelOld!).sort(), [\"ECInstanceId\", \"ECClassId\", \"LastMod\", \"$meta\"].sort());\r\n assert.deepEqual([...updateModelOld!.$meta.tables], [\"bis_Model\"]);\r\n assert.deepEqual([...updateModelOld!.$meta.changeFetchedPropNames].sort(), [\"ECInstanceId\", \"LastMod\"].sort());\r\n assert.equal(updateModelOld!.$meta.isIndirectChange, true);\r\n\r\n // OverflowElement Updated New\r\n const elemNew = updateInstances.find((i) => i.ECInstanceId === elementId && i.$meta.stage === \"New\");\r\n expect(elemNew).to.exist;\r\n assert.equal(elemNew!.ECClassId, \"TestDomain.OverflowElement\");\r\n assert.equal(elemNew!.$meta.op, \"Updated\");\r\n assert.equal(elemNew!.$meta.isIndirectChange, false);\r\n assert.deepEqual(elemNew!.$meta.rowOptions, { classIdsToClassNames: true });\r\n // Only bis_Element (LastMod) and bis_GeometricElement2d_Overflow (p34, p35) were touched\r\n assert.deepEqual([...elemNew!.$meta.tables].sort(), [\"bis_Element\", \"bis_GeometricElement2d_Overflow\"].sort());\r\n assert.deepEqual([...elemNew!.$meta.changeIndexes].sort(), [1, 2].sort());\r\n // changeFetchedPropNames: only the props that changed\r\n assert.deepEqual([...elemNew!.$meta.changeFetchedPropNames].sort(), [\"ECInstanceId\", \"LastMod\", \"p34\", \"p35\"].sort());\r\n // New stage has updated values for the two overflow props\r\n assert.equal(elemNew![propName(34)], updateVal(34));\r\n assert.equal(elemNew![propName(35)], updateVal(35));\r\n // Other props (p0–p33) are not present — not part of the delta\r\n assert.isUndefined(elemNew![propName(0)]);\r\n assert.deepEqual(Object.keys(elemNew!).sort(), [\"ECInstanceId\", \"ECClassId\", \"LastMod\", \"p34\", \"p35\", \"$meta\"].sort());\r\n\r\n // OverflowElement Updated Old\r\n const elemOld = updateInstances.find((i) => i.ECInstanceId === elementId && i.$meta.stage === \"Old\");\r\n expect(elemOld).to.exist;\r\n assert.equal(elemOld!.ECClassId, \"TestDomain.OverflowElement\");\r\n assert.equal(elemOld!.$meta.op, \"Updated\");\r\n assert.equal(elemOld!.$meta.isIndirectChange, false);\r\n assert.deepEqual([...elemOld!.$meta.tables].sort(), [\"bis_Element\", \"bis_GeometricElement2d_Overflow\"].sort());\r\n assert.deepEqual([...elemOld!.$meta.changeFetchedPropNames].sort(), [\"ECInstanceId\", \"LastMod\", \"p34\", \"p35\"].sort());\r\n // Old stage has the pre-update (insert) values for the two overflow props\r\n assert.equal(elemOld![propName(34)], insertVal(34));\r\n assert.equal(elemOld![propName(35)], insertVal(35));\r\n assert.isUndefined(elemOld![propName(0)]);\r\n assert.deepEqual(Object.keys(elemOld!).sort(), [\"ECInstanceId\", \"ECClassId\", \"LastMod\", \"p34\", \"p35\", \"$meta\"].sort());\r\n\r\n // --- insert txn ---\r\n const insertInstances = readTxn(rwIModel, insertTxnId, undefined, { classIdsToClassNames: true });\r\n assert.equal(insertInstances.length, 3);\r\n\r\n // DrawingModel Updated New (indirect side-effect of inserting into the model)\r\n const modelNew = insertInstances.find((i) => i.ECClassId === \"BisCore.DrawingModel\" && i.$meta.stage === \"New\");\r\n expect(modelNew).to.exist;\r\n assert.equal(modelNew!.$meta.op, \"Updated\");\r\n assert.isString(modelNew!.LastMod);\r\n assert.isString(modelNew!.GeometryGuid);\r\n assert.deepEqual([...modelNew!.$meta.tables], [\"bis_Model\"]);\r\n assert.deepEqual([...modelNew!.$meta.changeFetchedPropNames].sort(), [\"ECInstanceId\", \"LastMod\", \"GeometryGuid\"].sort());\r\n assert.deepEqual(modelNew!.$meta.rowOptions, { classIdsToClassNames: true });\r\n assert.equal(modelNew!.$meta.isIndirectChange, true);\r\n\r\n // DrawingModel Updated Old\r\n const modelOld = insertInstances.find((i) => i.ECClassId === \"BisCore.DrawingModel\" && i.$meta.stage === \"Old\");\r\n expect(modelOld).to.exist;\r\n assert.equal(modelOld!.$meta.op, \"Updated\");\r\n assert.deepEqual(Object.keys(modelOld!).sort(), [\"ECInstanceId\", \"ECClassId\", \"$meta\"].sort());\r\n assert.deepEqual([...modelOld!.$meta.tables], [\"bis_Model\"]);\r\n assert.equal(modelOld!.$meta.isIndirectChange, true);\r\n\r\n // OverflowElement Inserted New — key assertions\r\n const insertElem = insertInstances.find((i) => i.ECInstanceId === elementId && i.$meta.stage === \"New\");\r\n expect(insertElem).to.exist;\r\n assert.equal(insertElem!.ECClassId, \"TestDomain.OverflowElement\");\r\n assert.equal(insertElem!.$meta.op, \"Inserted\");\r\n assert.equal(insertElem!.$meta.stage, \"New\");\r\n assert.equal(insertElem!.$meta.isIndirectChange, false);\r\n assert.deepEqual(insertElem!.$meta.rowOptions, { classIdsToClassNames: true });\r\n\r\n // All three physical tables (including overflow) contributed to this insert\r\n assert.deepEqual([...insertElem!.$meta.tables].sort(), [\"bis_Element\", \"bis_GeometricElement2d\", \"bis_GeometricElement2d_Overflow\"].sort());\r\n assert.deepEqual([...insertElem!.$meta.changeIndexes].sort(), [1, 2, 3].sort());\r\n\r\n // changeFetchedPropNames includes all 36 domain props\r\n const fetchedProps = [...insertElem!.$meta.changeFetchedPropNames];\r\n for (let i = 0; i < nProps; i++) {\r\n assert.include(fetchedProps, propName(i), `changeFetchedPropNames should contain p${i}`);\r\n }\r\n\r\n // All 36 domain props carry the insert values\r\n for (let i = 0; i < nProps; i++) {\r\n assert.equal(insertElem![propName(i)], insertVal(i), `p${i} should be '${insertVal(i)}'`);\r\n }\r\n\r\n // Spot-check BIS properties\r\n assert.equal(insertElem!.Model.Id, drawingModelId);\r\n assert.equal(insertElem!.Model.RelECClassId, \"BisCore.ModelContainsElements\");\r\n assert.equal(insertElem!.Category.Id, drawingCategoryId);\r\n assert.equal(insertElem!.Category.RelECClassId, \"BisCore.GeometricElement2dIsInCategory\");\r\n assert.equal(insertElem!.CodeSpec.Id, \"0x1\");\r\n assert.equal(insertElem!.CodeSpec.RelECClassId, \"BisCore.CodeSpecSpecifiesCode\");\r\n assert.equal(insertElem!.CodeScope.Id, \"0x1\");\r\n assert.equal(insertElem!.CodeScope.RelECClassId, \"BisCore.ElementScopesCode\");\r\n assert.isString(insertElem!.FederationGuid);\r\n assert.isString(insertElem!.LastMod);\r\n assert.deepEqual(insertElem!.Origin, { X: 0, Y: 0 });\r\n assert.equal(insertElem!.Rotation, 0);\r\n assert.deepEqual(insertElem!.BBoxLow, { X: -5, Y: -5 });\r\n assert.deepEqual(insertElem!.BBoxHigh, { X: 5, Y: 5 });\r\n assert.include(String(insertElem!.GeometryStream), \"\\\"bytes\\\"\");\r\n\r\n // --- delete txn ---\r\n // Wait so that LastMod on bis_Model gets a distinct timestamp before the delete txn\r\n await new Promise((resolve) => setTimeout(resolve, 300));\r\n await rwIModel.locks.acquireLocks({ exclusive: elementId });\r\n txn.deleteElement(elementId);\r\n txn.saveChanges(\"delete overflow element\");\r\n const deleteTxnId = rwIModel.txns.getLastSavedTxnProps()!.id;\r\n\r\n const deleteInstances = readTxn(rwIModel, deleteTxnId, undefined, { classIdsToClassNames: true });\r\n // DrawingModel Updated New + Old (indirect) + OverflowElement Deleted Old\r\n assert.equal(deleteInstances.length, 3);\r\n\r\n // DrawingModel Updated New (indirect side-effect)\r\n const updateModelNewForDelete = deleteInstances.find((i) => i.ECClassId === \"BisCore.DrawingModel\" && i.$meta.stage === \"New\");\r\n expect(updateModelNewForDelete).to.exist;\r\n assert.equal(updateModelNewForDelete!.$meta.op, \"Updated\");\r\n assert.isString(updateModelNewForDelete!.LastMod);\r\n assert.isString(updateModelNewForDelete!.GeometryGuid);\r\n assert.deepEqual(Object.keys(updateModelNewForDelete!).sort(), [\"ECInstanceId\", \"ECClassId\", \"LastMod\", \"$meta\", \"GeometryGuid\"].sort());\r\n assert.deepEqual([...updateModelNewForDelete!.$meta.tables], [\"bis_Model\"]);\r\n assert.deepEqual([...updateModelNewForDelete!.$meta.changeFetchedPropNames].sort(), [\"ECInstanceId\", \"LastMod\", \"GeometryGuid\"].sort());\r\n assert.deepEqual(updateModelNewForDelete!.$meta.rowOptions, { classIdsToClassNames: true });\r\n assert.equal(updateModelNewForDelete!.$meta.isIndirectChange, true);\r\n\r\n // DrawingModel Updated Old\r\n const updateModelOldForDelete = deleteInstances.find((i) => i.ECClassId === \"BisCore.DrawingModel\" && i.$meta.stage === \"Old\");\r\n expect(updateModelOldForDelete).to.exist;\r\n assert.equal(updateModelOldForDelete!.$meta.op, \"Updated\");\r\n assert.isString(updateModelOldForDelete!.LastMod);\r\n assert.isString(updateModelNewForDelete!.GeometryGuid);\r\n assert.deepEqual(Object.keys(updateModelOldForDelete!).sort(), [\"ECInstanceId\", \"ECClassId\", \"LastMod\", \"$meta\", \"GeometryGuid\"].sort());\r\n assert.deepEqual([...updateModelOldForDelete!.$meta.tables], [\"bis_Model\"]);\r\n assert.deepEqual([...updateModelOldForDelete!.$meta.changeFetchedPropNames].sort(), [\"ECInstanceId\", \"LastMod\", \"GeometryGuid\"].sort());\r\n assert.equal(updateModelOldForDelete!.$meta.isIndirectChange, true);\r\n\r\n // OverflowElement Deleted Old\r\n const deletedElemOld = deleteInstances.find((i) => i.ECInstanceId === elementId && i.$meta.stage === \"Old\");\r\n expect(deletedElemOld).to.exist;\r\n assert.equal(deletedElemOld!.ECClassId, \"TestDomain.OverflowElement\");\r\n assert.equal(deletedElemOld!.$meta.op, \"Deleted\");\r\n assert.equal(deletedElemOld!.$meta.stage, \"Old\");\r\n assert.equal(deletedElemOld!.$meta.isIndirectChange, false);\r\n assert.deepEqual(deletedElemOld!.$meta.rowOptions, { classIdsToClassNames: true });\r\n\r\n // All three physical tables contributed to the delete row\r\n assert.deepEqual([...deletedElemOld!.$meta.tables].sort(), [\"bis_Element\", \"bis_GeometricElement2d\", \"bis_GeometricElement2d_Overflow\"].sort());\r\n\r\n // All 36 domain props are recorded in changeFetchedPropNames\r\n const deleteFetchedProps = [...deletedElemOld!.$meta.changeFetchedPropNames];\r\n for (let i = 0; i < nProps; i++) {\r\n assert.include(deleteFetchedProps, propName(i), `changeFetchedPropNames should contain p${i}`);\r\n }\r\n\r\n // p0–p33 still carry the original insert values; p34/p35 carry the updated values\r\n for (let i = 0; i < 34; i++) {\r\n assert.equal(deletedElemOld![propName(i)], insertVal(i), `p${i} should be '${insertVal(i)}'`);\r\n }\r\n assert.equal(deletedElemOld![propName(34)], updateVal(34));\r\n assert.equal(deletedElemOld![propName(35)], updateVal(35));\r\n\r\n // Spot-check BIS properties\r\n assert.equal(deletedElemOld!.Model.Id, drawingModelId);\r\n assert.equal(deletedElemOld!.Model.RelECClassId, \"BisCore.ModelContainsElements\");\r\n assert.equal(deletedElemOld!.Category.Id, drawingCategoryId);\r\n assert.equal(deletedElemOld!.Category.RelECClassId, \"BisCore.GeometricElement2dIsInCategory\");\r\n assert.equal(deletedElemOld!.CodeSpec.Id, \"0x1\");\r\n assert.equal(deletedElemOld!.CodeSpec.RelECClassId, \"BisCore.CodeSpecSpecifiesCode\");\r\n assert.equal(deletedElemOld!.CodeScope.Id, \"0x1\");\r\n assert.equal(deletedElemOld!.CodeScope.RelECClassId, \"BisCore.ElementScopesCode\");\r\n assert.isString(deletedElemOld!.FederationGuid);\r\n assert.isString(deletedElemOld!.LastMod);\r\n assert.deepEqual(deletedElemOld!.Origin, { X: 0, Y: 0 });\r\n assert.equal(deletedElemOld!.Rotation, 0);\r\n assert.deepEqual(deletedElemOld!.BBoxLow, { X: -5, Y: -5 });\r\n assert.deepEqual(deletedElemOld!.BBoxHigh, { X: 5, Y: 5 });\r\n assert.include(String(deletedElemOld!.GeometryStream), \"\\\"bytes\\\"\");\r\n });\r\n});\r\n\r\ndescribe(\"ChangesetReader: invalid inputs\", () => {\r\n let iModel: BriefcaseDb;\r\n let txn: EditTxn;\r\n let validChangesetPath: string;\r\n\r\n before(async () => {\r\n HubMock.startup(\"ChangesetReaderInvalidInputs\", KnownTestLocations.outputDir);\r\n const adminToken = \"super manager token\";\r\n const iTwinId = HubMock.iTwinId;\r\n const iModelId = await HubMock.createNewIModel({ iTwinId, iModelName: \"invalidInputs\", accessToken: adminToken });\r\n iModel = await HubWrappers.downloadAndOpenBriefcase({ iTwinId, iModelId, accessToken: adminToken });\r\n txn = startTestTxn(iModel, \"ChangesetReader invalid inputs setup\");\r\n iModel.channels.addAllowedChannel(ChannelControl.sharedChannelName);\r\n\r\n // Push one changeset so we have a valid .changeset file to reference.\r\n await iModel.locks.acquireLocks({ shared: IModel.dictionaryId });\r\n IModelTestUtils.createAndInsertDrawingPartitionAndModel(txn, Code.createEmpty(), true);\r\n txn.saveChanges(\"setup\");\r\n await iModel.pushChanges({ description: \"setup\", accessToken: adminToken });\r\n\r\n const targetDir = path.join(KnownTestLocations.outputDir, iModelId, \"changesets\");\r\n const changesets = await HubMock.downloadChangesets({ iModelId, targetDir });\r\n assert.isAtLeast(changesets.length, 1);\r\n validChangesetPath = changesets[0].pathname;\r\n });\r\n\r\n after(() => {\r\n txn.end();\r\n iModel?.close();\r\n HubMock.shutdown();\r\n });\r\n\r\n // --- openFile ---\r\n\r\n it(\"openFile: non-existent file path throws\", () => {\r\n expect(() =>\r\n ChangesetReader.openFile({ db: iModel, fileName: \"/does/not/exist.changeset\" }),\r\n ).to.throw();\r\n });\r\n\r\n it(\"openFile: empty file name throws\", () => {\r\n expect(() =>\r\n ChangesetReader.openFile({ db: iModel, fileName: \"\" }),\r\n ).to.throw();\r\n });\r\n\r\n it(\"openFile: path points to a directory throws\", () => {\r\n expect(() =>\r\n ChangesetReader.openFile({ db: iModel, fileName: KnownTestLocations.outputDir }),\r\n ).to.throw();\r\n });\r\n\r\n it(\"openFile: path points to a plain text file (not .changeset) throws\", () => {\r\n const txtFile = path.join(KnownTestLocations.outputDir, \"not_a_changeset.txt\");\r\n // Write a small non-changeset file and expect the reader to reject it.\r\n fs.writeFileSync(txtFile, \"this is not a changeset\");\r\n\r\n using reader = ChangesetReader.openFile({ db: iModel, fileName: txtFile });\r\n assert.equal(reader.step(), false, \"Expected step() to return false for an invalid changeset file\");\r\n assert.equal(reader.step(), false, \"Expected step() to return false for an invalid changeset file\");\r\n assert.equal(reader.step(), false, \"Expected step() to return false for an invalid changeset file\");\r\n assert.equal(reader.step(), false, \"Expected step() to return false for an invalid changeset file\");\r\n });\r\n\r\n // --- openGroup ---\r\n\r\n it(\"openGroup: empty changesetFiles array throws synchronously\", () => {\r\n expect(() =>\r\n ChangesetReader.openGroup({ db: iModel, changesetFiles: [] }),\r\n ).to.throw();\r\n });\r\n\r\n it(\"openGroup: single non-existent path throws\", () => {\r\n expect(() =>\r\n ChangesetReader.openGroup({ db: iModel, changesetFiles: [\"/does/not/exist.changeset\"] }),\r\n ).to.throw();\r\n });\r\n\r\n it(\"openGroup: first file valid, second file non-existent throws\", () => {\r\n expect(() =>\r\n ChangesetReader.openGroup({ db: iModel, changesetFiles: [validChangesetPath, \"/does/not/exist.changeset\"] }),\r\n ).to.throw();\r\n });\r\n\r\n it(\"openGroup: file list containing an empty string throws\", () => {\r\n expect(() =>\r\n ChangesetReader.openGroup({ db: iModel, changesetFiles: [\"\"] }),\r\n ).to.throw();\r\n });\r\n\r\n it(\"openGroup: duplicate paths reads the same changeset twice without throwing\", () => {\r\n // Passing the same changeset file twice is unusual but not necessarily an error at open time.\r\n // The reader should open and step without throwing; the caller is responsible for any semantic issues.\r\n expect(() => {\r\n using reader = ChangesetReader.openGroup({ db: iModel, changesetFiles: [validChangesetPath, validChangesetPath] });\r\n while (reader.step()) { /* drain */ }\r\n }).to.not.throw();\r\n });\r\n\r\n // --- openTxn ---\r\n\r\n it(\"openTxn: non-existent txn id throws\", () => {\r\n expect(() =>\r\n ChangesetReader.openTxn({ db: iModel, txnId: \"0xdeadbeef\" }),\r\n ).to.throw();\r\n });\r\n\r\n it(\"openTxn: empty string txn id throws\", () => {\r\n expect(() =>\r\n ChangesetReader.openTxn({ db: iModel, txnId: \"\" }),\r\n ).to.throw();\r\n });\r\n\r\n // --- property accessors before step() ---\r\n\r\n it(\"accessing tableName before step() throws\", () => {\r\n using reader = ChangesetReader.openFile({ db: iModel, fileName: validChangesetPath });\r\n expect(() => reader.tableName).to.throw();\r\n });\r\n\r\n it(\"accessing isECTable before step() throws\", () => {\r\n using reader = ChangesetReader.openFile({ db: iModel, fileName: validChangesetPath });\r\n expect(() => reader.isECTable).to.throw();\r\n });\r\n\r\n it(\"accessing isIndirectChange before step() throws\", () => {\r\n using reader = ChangesetReader.openFile({ db: iModel, fileName: validChangesetPath });\r\n expect(() => reader.isIndirectChange).to.throw();\r\n });\r\n});\r\n\r\n"]}
1
+ {"version":3,"file":"ChangesetReader.test.js","sourceRoot":"","sources":["../../../../src/test/standalone/ChangesetReader.test.ts"],"names":[],"mappings":"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,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;YAC9C,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;YAChD,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;YACzD,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC;YAClD,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;YACjD,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE;YAClD,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE;YAC/C,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;YAC9C,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE;YAC/C,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;YACvD,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;YACjD,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;YACnD,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG;YAClD,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;YACjD,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;YAChD,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE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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 { DbResult, Id64, Id64String } from \"@itwin/core-bentley\";\nimport { Code, ColorDef, GeometryStreamProps, IModel, SubCategoryAppearance } from \"@itwin/core-common\";\nimport { Arc3d, IModelJson, Point3d } from \"@itwin/core-geometry\";\nimport { assert, expect } from \"chai\";\nimport { DrawingCategory } from \"../../Category\";\nimport { _nativeDb, BriefcaseDb, ChannelControl } from \"../../core-backend\";\nimport { HubMock } from \"../../internal/HubMock\";\nimport { ChangesetReader } from \"../../ChangesetReader\";\nimport * as path from \"node:path\";\nimport * as fs from \"fs\";\nimport { HubWrappers, IModelTestUtils } from \"../IModelTestUtils\";\nimport { KnownTestLocations } from \"../KnownTestLocations\";\nimport { ChangeUnifierCache, PartialChangeUnifier } from \"../../PartialChangeUnifier\";\nimport { ChangeInstance, PropertyFilter, RowFormatOptions } from \"../../ChangesetReaderTypes\";\nimport { EditTxn } from \"../../EditTxn\";\n\n/* eslint-disable @typescript-eslint/naming-convention */ // disabling it because the property names are not in camelcase, and we want to test them as-is\n\n/** Open a txn, drive the unifier, log and return all merged instances. */\nfunction readTxn(\n db: BriefcaseDb,\n txnId: string,\n propFilter?: PropertyFilter,\n rowOptions?: RowFormatOptions,\n invert?: boolean,\n useInMemoryUnifierCache?: boolean,\n): ChangeInstance[] {\n using reader = ChangesetReader.openTxn({ db, txnId, propFilter, rowOptions, invert });\n const inMemCache = useInMemoryUnifierCache ?? true;\n using pcu = new PartialChangeUnifier(inMemCache ? ChangeUnifierCache.createInMemoryCache() : ChangeUnifierCache.createSqliteBackedCache());\n while (reader.step())\n pcu.appendFrom(reader);\n const instances = Array.from(pcu.instances);\n return instances;\n}\n\nfunction startTestTxn(iModel: BriefcaseDb, description = \"changeset reader\"): EditTxn {\n const txn = new EditTxn(iModel, description);\n txn.start();\n return txn;\n}\n\nasync function importSchemaStrings(txn: EditTxn, schemas: string[]): Promise<void> {\n if (txn.isActive)\n txn.saveChanges();\n await txn.iModel.importSchemaStrings(schemas);\n}\n\ndescribe(\"ChangesetReader insert-full\", () => {\n let rwIModel: BriefcaseDb;\n let fullElementId: Id64String;\n let drawingModelId: Id64String;\n let drawingCategoryId: Id64String;\n let txnId: string;\n let txn: EditTxn;\n\n before(async () => {\n HubMock.startup(\"ECChangesetInsertFull\", KnownTestLocations.outputDir);\n const adminToken = \"super manager token\";\n const iTwinId = HubMock.iTwinId;\n const rwIModelId = await HubMock.createNewIModel({ iTwinId, iModelName: \"insertFull\", description: \"insertFull\", accessToken: adminToken });\n rwIModel = await HubWrappers.downloadAndOpenBriefcase({ iTwinId, iModelId: rwIModelId, accessToken: adminToken });\n txn = startTestTxn(rwIModel, \"ChangesetReader insert-full setup\");\n // Txn 1: import schema + drawing model setup, then push\n const schema = `<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n <ECSchema schemaName=\"TestDomain\" alias=\"ts\" version=\"01.00\" xmlns=\"http://www.bentley.com/schemas/Bentley.ECXML.3.1\">\n <ECSchemaReference name=\"BisCore\" version=\"01.00\" alias=\"bis\"/>\n <!-- Rich struct: scalar fields + nested point2d/3d sub-properties -->\n <ECStructClass typeName=\"RichPoint\" modifier=\"Sealed\">\n <ECProperty propertyName=\"X\" typeName=\"double\"/>\n <ECProperty propertyName=\"Y\" typeName=\"double\"/>\n <ECProperty propertyName=\"Z\" typeName=\"double\"/>\n <ECProperty propertyName=\"Label\" typeName=\"string\"/>\n <ECProperty propertyName=\"Pt2d\" typeName=\"point2d\"/>\n <ECProperty propertyName=\"Pt3d\" typeName=\"point3d\"/>\n </ECStructClass>\n <!-- Relationship used by the RelatedElem navigation property -->\n <ECRelationshipClass typeName=\"Test2dUsesElement\" strength=\"referencing\" modifier=\"None\">\n <Source multiplicity=\"(0..*)\" roleLabel=\"uses\" polymorphic=\"true\"><Class class=\"Test2dElement\"/></Source>\n <Target multiplicity=\"(0..1)\" roleLabel=\"is used by\" polymorphic=\"true\"><Class class=\"bis:Element\"/></Target>\n </ECRelationshipClass>\n <ECEntityClass typeName=\"Test2dElement\">\n <BaseClass>bis:GraphicalElement2d</BaseClass>\n <!-- Primitives -->\n <ECProperty propertyName=\"StrProp\" typeName=\"string\"/>\n <ECProperty propertyName=\"IntProp\" typeName=\"int\"/>\n <ECProperty propertyName=\"LongProp\" typeName=\"long\"/>\n <ECProperty propertyName=\"DblProp\" typeName=\"double\"/>\n <ECProperty propertyName=\"BoolProp\" typeName=\"boolean\"/>\n <ECProperty propertyName=\"DtProp\" typeName=\"dateTime\"/>\n <ECProperty propertyName=\"BinProp\" typeName=\"binary\"/>\n <!-- Geometric primitives -->\n <ECProperty propertyName=\"Pt2dProp\" typeName=\"point2d\"/>\n <ECProperty propertyName=\"Pt3dProp\" typeName=\"point3d\"/>\n <!-- Struct, arrays -->\n <ECStructProperty propertyName=\"StructProp\" typeName=\"RichPoint\"/>\n <ECArrayProperty propertyName=\"IntArrProp\" typeName=\"int\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n <ECArrayProperty propertyName=\"StrArrProp\" typeName=\"string\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n <ECStructArrayProperty propertyName=\"StructArrProp\" typeName=\"RichPoint\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n <!-- Navigation property -->\n <ECNavigationProperty propertyName=\"RelatedElem\" relationshipName=\"Test2dUsesElement\" direction=\"forward\"/>\n </ECEntityClass>\n </ECSchema>`;\n await importSchemaStrings(txn, [schema]);\n rwIModel.channels.addAllowedChannel(ChannelControl.sharedChannelName);\n\n await rwIModel.locks.acquireLocks({ shared: IModel.dictionaryId });\n const codeProps = Code.createEmpty();\n codeProps.value = \"DrillDownDrawing\";\n [, drawingModelId] = IModelTestUtils.createAndInsertDrawingPartitionAndModel(txn, codeProps, true);\n\n const foundCat = DrawingCategory.queryCategoryIdByName(rwIModel, IModel.dictionaryId, \"DrillDownCategory\");\n drawingCategoryId = foundCat ?? DrawingCategory.insert(txn, IModel.dictionaryId, \"DrillDownCategory\",\n new SubCategoryAppearance({ color: ColorDef.fromString(\"rgb(255,0,0)\").toJSON() }));\n\n txn.saveChanges(\"setup\");\n\n // Wait so that LastMod on bis_Model gets a distinct timestamp before the insert txn\n await new Promise((resolve) => setTimeout(resolve, 300));\n // Txn 2: insert FULL element every EC primitive type populated\n await rwIModel.locks.acquireLocks({ shared: drawingModelId });\n const geom: GeometryStreamProps = [\n Arc3d.createXY(Point3d.create(0, 0), 5),\n Arc3d.createXY(Point3d.create(5, 5), 2),\n Arc3d.createXY(Point3d.create(-5, -5), 20),\n ].map((a) => IModelJson.Writer.toIModelJson(a));\n\n fullElementId = txn.insertElement({\n classFullName: \"TestDomain:Test2dElement\",\n model: drawingModelId,\n category: drawingCategoryId,\n code: Code.createEmpty(),\n geom,\n StrProp: \"hello\",\n IntProp: 42,\n LongProp: 9_007_199_254_740_991, // Number.MAX_SAFE_INTEGER\n DblProp: 3.14159265358979,\n BoolProp: true,\n DtProp: \"2024-01-15T12:00:00.000\",\n BinProp: new Uint8Array([1, 2, 3, 4]),\n Pt2dProp: { x: 1.5, y: 2.5 },\n Pt3dProp: { x: 3.0, y: 4.0, z: 5.0 },\n StructProp: {\n X: 1.0, Y: 2.0, Z: 3.0, Label: \"origin\",\n Pt2d: { x: 0.5, y: 0.5 },\n Pt3d: { x: 1.0, y: 2.0, z: 3.0 },\n },\n IntArrProp: [10, 20, 30],\n StrArrProp: [\"alpha\", \"beta\", \"gamma\"],\n StructArrProp: [\n { X: 0.0, Y: 1.0, Z: 2.0, Label: \"a\", Pt2d: { x: 0.0, y: 0.0 }, Pt3d: { x: 0.0, y: 0.0, z: 0.0 } },\n { X: 3.0, Y: 4.0, Z: 5.0, Label: \"b\", Pt2d: { x: 1.0, y: 1.0 }, Pt3d: { x: 1.0, y: 1.0, z: 1.0 } },\n ],\n RelatedElem: { id: drawingCategoryId, relClassName: \"TestDomain:Test2dUsesElement\" },\n } as any);\n txn.saveChanges(\"insert full element\");\n txnId = rwIModel.txns.getLastSavedTxnProps()!.id;\n });\n\n after(() => {\n txn.end();\n rwIModel?.close();\n HubMock.shutdown();\n });\n\n it(\"txn1 insert-full | All_Properties | default rowOptions\", () => {\n const instances = readTxn(rwIModel, txnId);\n assert.equal(instances.length, 3);\n\n // --- instances[0]: DrawingModel Updated New ---\n const modelNew = instances.find((i) => i.ECInstanceId === drawingModelId && i.$meta.stage === \"New\");\n expect(modelNew).to.exist;\n assert.equal(modelNew!.ECInstanceId, drawingModelId);\n assert.equal(\"BisCore:DrawingModel\", rwIModel.getClassNameFromId(modelNew!.ECClassId));\n assert.isString(modelNew!.LastMod);\n assert.isString(modelNew!.GeometryGuid);\n // Object.keys\n assert.deepEqual(Object.keys(modelNew!).sort(), [\"ECInstanceId\", \"ECClassId\", \"LastMod\", \"GeometryGuid\", \"$meta\"].sort());\n // $meta keys\n assert.deepEqual(Object.keys(modelNew!.$meta).sort(), [\"op\", \"tables\", \"changeIndexes\", \"stage\", \"instanceKey\", \"propFilter\", \"changeFetchedPropNames\", \"rowOptions\", \"isIndirectChange\"].sort());\n assert.equal(modelNew!.$meta.op, \"Updated\");\n assert.equal(modelNew!.$meta.stage, \"New\");\n assert.deepEqual([...modelNew!.$meta.tables].sort(), [\"bis_Model\"].sort());\n assert.deepEqual([...modelNew!.$meta.changeIndexes].sort(), [3].sort());\n assert.isString(modelNew!.$meta.instanceKey);\n assert.equal(modelNew!.$meta.instanceKey.split(`-`).length, 2);\n assert.equal(modelNew!.$meta.propFilter, PropertyFilter.All);\n assert.deepEqual([...modelNew!.$meta.changeFetchedPropNames].sort(), [\"ECInstanceId\", \"LastMod\", \"GeometryGuid\"].sort());\n assert.deepEqual(modelNew!.$meta.rowOptions, {});\n assert.equal(modelNew!.$meta.isIndirectChange, true);\n\n // --- instances[1]: DrawingModel Updated Old ---\n const modelOld = instances.find((i) => i.ECInstanceId === drawingModelId && i.$meta.stage === \"Old\");\n expect(modelOld).to.exist;\n assert.equal(modelOld!.ECInstanceId, drawingModelId);\n assert.equal(\"BisCore:DrawingModel\", rwIModel.getClassNameFromId(modelOld!.ECClassId));\n // Object.keys\n assert.deepEqual(Object.keys(modelOld!).sort(), [\"ECInstanceId\", \"ECClassId\", \"$meta\"].sort());\n // $meta keys\n assert.deepEqual(Object.keys(modelOld!.$meta).sort(), [\"op\", \"tables\", \"changeIndexes\", \"stage\", \"instanceKey\", \"propFilter\", \"changeFetchedPropNames\", \"rowOptions\", \"isIndirectChange\"].sort());\n assert.equal(modelOld!.$meta.op, \"Updated\");\n assert.equal(modelOld!.$meta.stage, \"Old\");\n assert.deepEqual([...modelOld!.$meta.tables].sort(), [\"bis_Model\"].sort());\n assert.equal(modelOld!.$meta.propFilter, PropertyFilter.All);\n assert.deepEqual([...modelOld!.$meta.changeFetchedPropNames].sort(), [\"ECInstanceId\", \"LastMod\", \"GeometryGuid\"].sort());\n assert.deepEqual(modelOld!.$meta.rowOptions, {});\n assert.equal(modelOld!.$meta.isIndirectChange, true);\n\n // --- instances[2]: Test2dElement Inserted New ---\n const elem = instances.find((i) => i.ECInstanceId === fullElementId && i.$meta.stage === \"New\");\n expect(elem).to.exist;\n assert.equal(elem!.ECInstanceId, fullElementId);\n assert.equal(\"TestDomain:Test2dElement\", rwIModel.getClassNameFromId(elem!.ECClassId));\n assert.equal(elem!.Model.Id, drawingModelId);\n assert.equal(rwIModel.getClassNameFromId(elem!.Model.RelECClassId), \"BisCore:ModelContainsElements\");\n assert.isString(elem!.LastMod);\n assert.equal(elem!.CodeSpec.Id, \"0x1\");\n assert.equal(rwIModel.getClassNameFromId(elem!.CodeSpec.RelECClassId), \"BisCore:CodeSpecSpecifiesCode\");\n\n assert.equal(elem!.CodeScope.Id, \"0x1\");\n assert.equal(rwIModel.getClassNameFromId(elem!.CodeScope.RelECClassId), \"BisCore:ElementScopesCode\");\n assert.isString(elem!.FederationGuid);\n\n assert.equal(elem!.Category.Id, drawingCategoryId);\n assert.equal(rwIModel.getClassNameFromId(elem!.Category.RelECClassId), \"BisCore:GeometricElement2dIsInCategory\");\n assert.deepEqual(elem!.Origin, { X: 0, Y: 0 });\n assert.equal(elem!.Rotation, 0);\n assert.deepEqual(elem!.BBoxLow, { X: -25, Y: -25 });\n assert.deepEqual(elem!.BBoxHigh, { X: 15, Y: 15 });\n assert.include(String(elem!.GeometryStream), \"\\\"bytes\\\"\");\n assert.include(String(elem!.BinProp), \"\\\"bytes\\\"\");\n assert.equal(elem!.StrProp, \"hello\");\n assert.equal(elem!.IntProp, 42);\n assert.equal(elem!.LongProp, 9007199254740991);\n assert.closeTo(elem!.DblProp as number, 3.14159265358979, 1e-10);\n assert.equal(elem!.BoolProp, true);\n assert.equal(elem!.DtProp, \"2024-01-15T12:00:00.000\");\n assert.deepEqual(elem!.Pt2dProp, { X: 1.5, Y: 2.5 });\n assert.deepEqual(elem!.Pt3dProp, { X: 3, Y: 4, Z: 5 });\n assert.deepEqual(elem!.StructProp, { X: 1, Y: 2, Z: 3, Label: \"origin\", Pt2d: { X: 0.5, Y: 0.5 }, Pt3d: { X: 1, Y: 2, Z: 3 } });\n assert.deepEqual(elem!.IntArrProp, [10, 20, 30]);\n assert.deepEqual(elem!.StrArrProp, [\"alpha\", \"beta\", \"gamma\"]);\n assert.deepEqual(elem!.StructArrProp, [\n { X: 0, Y: 1, Z: 2, Label: \"a\", Pt2d: { X: 0, Y: 0 }, Pt3d: { X: 0, Y: 0, Z: 0 } },\n { X: 3, Y: 4, Z: 5, Label: \"b\", Pt2d: { X: 1, Y: 1 }, Pt3d: { X: 1, Y: 1, Z: 1 } },\n ]);\n assert.equal(elem!.RelatedElem.Id, drawingCategoryId);\n assert.equal(rwIModel.getClassNameFromId(elem!.RelatedElem.RelECClassId), \"TestDomain:Test2dUsesElement\");\n // Object.keys\n assert.deepEqual(Object.keys(elem!).sort(), [\n \"ECInstanceId\", \"ECClassId\", \"Model\", \"LastMod\", \"CodeSpec\", \"CodeScope\", \"FederationGuid\", \"$meta\",\n \"Category\", \"Origin\", \"Rotation\", \"BBoxLow\", \"BBoxHigh\", \"GeometryStream\",\n \"StrProp\", \"IntProp\", \"LongProp\", \"DblProp\", \"BoolProp\", \"DtProp\",\n \"Pt2dProp\", \"Pt3dProp\", \"StructProp\", \"IntArrProp\", \"StrArrProp\", \"StructArrProp\", \"RelatedElem\", \"BinProp\"\n ].sort());\n // $meta keys\n assert.deepEqual(Object.keys(elem!.$meta).sort(), [\"op\", \"tables\", \"changeIndexes\", \"stage\", \"instanceKey\", \"propFilter\", \"changeFetchedPropNames\", \"rowOptions\", \"isIndirectChange\"].sort());\n assert.equal(elem!.$meta.op, \"Inserted\");\n assert.equal(elem!.$meta.stage, \"New\");\n assert.deepEqual([...elem!.$meta.tables].sort(), [\"bis_Element\", \"bis_GeometricElement2d\"].sort());\n assert.deepEqual([...elem!.$meta.changeIndexes].sort(), [1, 2].sort());\n assert.isString(elem!.$meta.instanceKey);\n assert.equal(elem!.$meta.instanceKey.split(`-`).length, 2);\n assert.equal(elem!.$meta.propFilter, PropertyFilter.All);\n assert.deepEqual([...elem!.$meta.changeFetchedPropNames].sort(), [\n 'BBoxHigh', 'BBoxLow', 'BinProp', 'BoolProp', 'Category.Id', 'CodeScope.Id',\n 'CodeSpec.Id', 'CodeValue', 'DblProp', 'DtProp', 'ECClassId', 'ECInstanceId',\n 'FederationGuid', 'GeometryStream', 'IntArrProp', 'IntProp', 'JsonProperties',\n 'LastMod', 'LongProp', 'Model.Id', 'Origin', 'Parent', 'Pt2dProp', 'Pt3dProp',\n 'RelatedElem', 'Rotation', 'StrArrProp', 'StrProp', 'StructArrProp', 'StructProp.Label',\n 'StructProp.Pt2d', 'StructProp.Pt3d', 'StructProp.X', 'StructProp.Y', 'StructProp.Z',\n 'TypeDefinition', 'UserLabel'\n ].sort());\n assert.deepEqual(elem!.$meta.rowOptions, {});\n assert.equal(elem!.$meta.isIndirectChange, false);\n });\n\n it(\"txn1 insert-full | All_Properties | default rowOptions | invert\", () => {\n const instances = readTxn(rwIModel, txnId, undefined, undefined, true);\n assert.equal(instances.length, 3);\n\n // --- instances[0]: DrawingModel Updated New ---\n const modelNew = instances.find((i) => i.ECInstanceId === drawingModelId && i.$meta.stage === \"New\");\n expect(modelNew).to.exist;\n assert.equal(modelNew!.ECInstanceId, drawingModelId);\n assert.equal(\"BisCore:DrawingModel\", rwIModel.getClassNameFromId(modelNew!.ECClassId));\n assert.isUndefined(modelNew!.LastMod);\n assert.isUndefined(modelNew!.GeometryGuid);\n // Object.keys\n assert.deepEqual(Object.keys(modelNew!).sort(), [\"ECInstanceId\", \"ECClassId\", \"$meta\"].sort());\n // $meta keys\n assert.deepEqual(Object.keys(modelNew!.$meta).sort(), [\"op\", \"tables\", \"changeIndexes\", \"stage\", \"instanceKey\", \"propFilter\", \"changeFetchedPropNames\", \"rowOptions\", \"isIndirectChange\"].sort());\n assert.equal(modelNew!.$meta.op, \"Updated\");\n assert.equal(modelNew!.$meta.stage, \"New\");\n assert.deepEqual([...modelNew!.$meta.tables].sort(), [\"bis_Model\"].sort());\n assert.deepEqual([...modelNew!.$meta.changeIndexes].sort(), [3].sort());\n assert.isString(modelNew!.$meta.instanceKey);\n assert.equal(modelNew!.$meta.instanceKey.split(`-`).length, 2);\n assert.equal(modelNew!.$meta.propFilter, PropertyFilter.All);\n assert.deepEqual([...modelNew!.$meta.changeFetchedPropNames].sort(), [\"ECInstanceId\", \"LastMod\", \"GeometryGuid\"].sort());\n assert.deepEqual(modelNew!.$meta.rowOptions, {});\n assert.equal(modelNew!.$meta.isIndirectChange, true);\n\n // --- instances[1]: DrawingModel Updated Old ---\n const modelOld = instances.find((i) => i.ECInstanceId === drawingModelId && i.$meta.stage === \"Old\");\n expect(modelOld).to.exist;\n assert.equal(modelOld!.ECInstanceId, drawingModelId);\n assert.equal(\"BisCore:DrawingModel\", rwIModel.getClassNameFromId(modelOld!.ECClassId));\n assert.isString(modelOld!.LastMod);\n assert.isString(modelOld!.GeometryGuid);\n // Object.keys\n assert.deepEqual(Object.keys(modelOld!).sort(), [\"ECInstanceId\", \"ECClassId\", \"$meta\", \"LastMod\", \"GeometryGuid\"].sort());\n // $meta keys\n assert.deepEqual(Object.keys(modelOld!.$meta).sort(), [\"op\", \"tables\", \"changeIndexes\", \"stage\", \"instanceKey\", \"propFilter\", \"changeFetchedPropNames\", \"rowOptions\", \"isIndirectChange\"].sort());\n assert.equal(modelOld!.$meta.op, \"Updated\");\n assert.equal(modelOld!.$meta.stage, \"Old\");\n assert.deepEqual([...modelOld!.$meta.tables].sort(), [\"bis_Model\"].sort());\n assert.equal(modelOld!.$meta.propFilter, PropertyFilter.All);\n assert.deepEqual([...modelOld!.$meta.changeFetchedPropNames].sort(), [\"ECInstanceId\", \"LastMod\", \"GeometryGuid\"].sort());\n assert.deepEqual(modelOld!.$meta.rowOptions, {});\n assert.equal(modelOld!.$meta.isIndirectChange, true);\n\n // --- instances[2]: Test2dElement Inserted New ---\n const elem = instances.find((i) => i.ECInstanceId === fullElementId && i.$meta.stage === \"Old\");\n expect(elem).to.exist;\n assert.equal(elem!.ECInstanceId, fullElementId);\n assert.equal(\"TestDomain:Test2dElement\", rwIModel.getClassNameFromId(elem!.ECClassId));\n assert.equal(elem!.Model.Id, drawingModelId);\n assert.equal(rwIModel.getClassNameFromId(elem!.Model.RelECClassId), \"BisCore:ModelContainsElements\");\n assert.isString(elem!.LastMod);\n assert.equal(elem!.CodeSpec.Id, \"0x1\");\n assert.equal(rwIModel.getClassNameFromId(elem!.CodeSpec.RelECClassId), \"BisCore:CodeSpecSpecifiesCode\");\n\n assert.equal(elem!.CodeScope.Id, \"0x1\");\n assert.equal(rwIModel.getClassNameFromId(elem!.CodeScope.RelECClassId), \"BisCore:ElementScopesCode\");\n assert.isString(elem!.FederationGuid);\n\n assert.equal(elem!.Category.Id, drawingCategoryId);\n assert.equal(rwIModel.getClassNameFromId(elem!.Category.RelECClassId), \"BisCore:GeometricElement2dIsInCategory\");\n assert.deepEqual(elem!.Origin, { X: 0, Y: 0 });\n assert.equal(elem!.Rotation, 0);\n assert.deepEqual(elem!.BBoxLow, { X: -25, Y: -25 });\n assert.deepEqual(elem!.BBoxHigh, { X: 15, Y: 15 });\n assert.include(String(elem!.GeometryStream), \"\\\"bytes\\\"\");\n assert.include(String(elem!.BinProp), \"\\\"bytes\\\"\");\n assert.equal(elem!.StrProp, \"hello\");\n assert.equal(elem!.IntProp, 42);\n assert.equal(elem!.LongProp, 9007199254740991);\n assert.closeTo(elem!.DblProp as number, 3.14159265358979, 1e-10);\n assert.equal(elem!.BoolProp, true);\n assert.equal(elem!.DtProp, \"2024-01-15T12:00:00.000\");\n assert.deepEqual(elem!.Pt2dProp, { X: 1.5, Y: 2.5 });\n assert.deepEqual(elem!.Pt3dProp, { X: 3, Y: 4, Z: 5 });\n assert.deepEqual(elem!.StructProp, { X: 1, Y: 2, Z: 3, Label: \"origin\", Pt2d: { X: 0.5, Y: 0.5 }, Pt3d: { X: 1, Y: 2, Z: 3 } });\n assert.deepEqual(elem!.IntArrProp, [10, 20, 30]);\n assert.deepEqual(elem!.StrArrProp, [\"alpha\", \"beta\", \"gamma\"]);\n assert.deepEqual(elem!.StructArrProp, [\n { X: 0, Y: 1, Z: 2, Label: \"a\", Pt2d: { X: 0, Y: 0 }, Pt3d: { X: 0, Y: 0, Z: 0 } },\n { X: 3, Y: 4, Z: 5, Label: \"b\", Pt2d: { X: 1, Y: 1 }, Pt3d: { X: 1, Y: 1, Z: 1 } },\n ]);\n assert.equal(elem!.RelatedElem.Id, drawingCategoryId);\n assert.equal(rwIModel.getClassNameFromId(elem!.RelatedElem.RelECClassId), \"TestDomain:Test2dUsesElement\");\n // Object.keys\n assert.deepEqual(Object.keys(elem!).sort(), [\n \"ECInstanceId\", \"ECClassId\", \"Model\", \"LastMod\", \"CodeSpec\", \"CodeScope\", \"FederationGuid\", \"$meta\",\n \"Category\", \"Origin\", \"Rotation\", \"BBoxLow\", \"BBoxHigh\", \"GeometryStream\",\n \"StrProp\", \"IntProp\", \"LongProp\", \"DblProp\", \"BoolProp\", \"DtProp\",\n \"Pt2dProp\", \"Pt3dProp\", \"StructProp\", \"IntArrProp\", \"StrArrProp\", \"StructArrProp\", \"RelatedElem\", \"BinProp\"\n ].sort());\n // $meta keys\n assert.deepEqual(Object.keys(elem!.$meta).sort(), [\"op\", \"tables\", \"changeIndexes\", \"stage\", \"instanceKey\", \"propFilter\", \"changeFetchedPropNames\", \"rowOptions\", \"isIndirectChange\"].sort());\n assert.equal(elem!.$meta.op, \"Deleted\");\n assert.equal(elem!.$meta.stage, \"Old\");\n assert.deepEqual([...elem!.$meta.tables].sort(), [\"bis_Element\", \"bis_GeometricElement2d\"].sort());\n assert.deepEqual([...elem!.$meta.changeIndexes].sort(), [1, 2].sort());\n assert.isString(elem!.$meta.instanceKey);\n assert.equal(elem!.$meta.instanceKey.split(`-`).length, 2);\n assert.equal(elem!.$meta.propFilter, PropertyFilter.All);\n assert.deepEqual([...elem!.$meta.changeFetchedPropNames].sort(), [\n 'BBoxHigh', 'BBoxLow', 'BinProp', 'BoolProp', 'Category.Id', 'CodeScope.Id',\n 'CodeSpec.Id', 'CodeValue', 'DblProp', 'DtProp', 'ECClassId', 'ECInstanceId',\n 'FederationGuid', 'GeometryStream', 'IntArrProp', 'IntProp', 'JsonProperties',\n 'LastMod', 'LongProp', 'Model.Id', 'Origin', 'Parent', 'Pt2dProp', 'Pt3dProp',\n 'RelatedElem', 'Rotation', 'StrArrProp', 'StrProp', 'StructArrProp', 'StructProp.Label',\n 'StructProp.Pt2d', 'StructProp.Pt3d', 'StructProp.X', 'StructProp.Y', 'StructProp.Z',\n 'TypeDefinition', 'UserLabel'\n ].sort());\n assert.deepEqual(elem!.$meta.rowOptions, {});\n assert.equal(elem!.$meta.isIndirectChange, false);\n });\n\n it(\"txn1 insert-full | Bis_Element_Properties\", () => {\n const instances = readTxn(rwIModel, txnId, PropertyFilter.BisCoreElement, { classIdsToClassNames: true });\n assert.equal(instances.length, 3);\n\n // --- instances[0]: DrawingModel Updated New ---\n const modelNew = instances.find((i) => i.ECInstanceId === drawingModelId && i.$meta.stage === \"New\");\n expect(modelNew).to.exist;\n assert.equal(modelNew!.ECInstanceId, drawingModelId);\n assert.equal(modelNew!.ECClassId, \"BisCore.DrawingModel\");\n assert.isString(modelNew!.LastMod);\n assert.isString(modelNew!.GeometryGuid);\n assert.deepEqual(Object.keys(modelNew!).sort(), [\"ECInstanceId\", \"ECClassId\", \"LastMod\", \"GeometryGuid\", \"$meta\"].sort());\n assert.deepEqual(Object.keys(modelNew!.$meta).sort(), [\"op\", \"tables\", \"changeIndexes\", \"stage\", \"instanceKey\", \"propFilter\", \"changeFetchedPropNames\", \"rowOptions\", \"isIndirectChange\"].sort());\n assert.equal(modelNew!.$meta.op, \"Updated\");\n assert.equal(modelNew!.$meta.stage, \"New\");\n assert.equal(modelNew!.$meta.propFilter, PropertyFilter.BisCoreElement);\n assert.deepEqual([...modelNew!.$meta.changeFetchedPropNames].sort(), [\"ECInstanceId\", \"LastMod\", \"GeometryGuid\"].sort());\n assert.deepEqual(modelNew!.$meta.rowOptions, { classIdsToClassNames: true });\n assert.equal(modelNew!.$meta.isIndirectChange, true);\n\n // --- instances[1]: DrawingModel Updated Old ---\n const modelOld = instances.find((i) => i.ECInstanceId === drawingModelId && i.$meta.stage === \"Old\");\n expect(modelOld).to.exist;\n assert.equal(modelOld!.ECInstanceId, drawingModelId);\n assert.equal(modelOld!.ECClassId, \"BisCore.DrawingModel\");\n assert.deepEqual(Object.keys(modelOld!).sort(), [\"ECInstanceId\", \"ECClassId\", \"$meta\"].sort());\n assert.deepEqual(Object.keys(modelOld!.$meta).sort(), [\"op\", \"tables\", \"changeIndexes\", \"stage\", \"instanceKey\", \"propFilter\", \"changeFetchedPropNames\", \"rowOptions\", \"isIndirectChange\"].sort());\n assert.equal(modelOld!.$meta.op, \"Updated\");\n assert.equal(modelOld!.$meta.stage, \"Old\");\n assert.equal(modelOld!.$meta.propFilter, PropertyFilter.BisCoreElement);\n assert.deepEqual([...modelOld!.$meta.changeFetchedPropNames].sort(), [\"ECInstanceId\", \"LastMod\", \"GeometryGuid\"].sort());\n assert.deepEqual(modelOld!.$meta.rowOptions, { classIdsToClassNames: true });\n assert.equal(modelOld!.$meta.isIndirectChange, true);\n\n // --- instances[2]: Test2dElement Inserted New (Bis_Element_Properties: no custom props) ---\n const elem = instances.find((i) => i.ECInstanceId === fullElementId && i.$meta.stage === \"New\");\n expect(elem).to.exist;\n assert.equal(elem!.ECInstanceId, fullElementId);\n assert.equal(elem!.ECClassId, \"TestDomain.Test2dElement\");\n // No custom domain props\n assert.isUndefined(elem!.StrProp);\n assert.isUndefined(elem!.IntProp);\n assert.isUndefined(elem!.LongProp);\n assert.isUndefined(elem!.DblProp);\n assert.isUndefined(elem!.BoolProp);\n assert.isUndefined(elem!.DtProp);\n assert.isUndefined(elem!.Pt2dProp);\n assert.isUndefined(elem!.Pt3dProp);\n assert.isUndefined(elem!.StructProp);\n assert.isUndefined(elem!.IntArrProp);\n assert.isUndefined(elem!.StrArrProp);\n assert.isUndefined(elem!.StructArrProp);\n assert.isUndefined(elem!.RelatedElem);\n expect(elem!.Model).to.exist;\n expect(elem!.CodeScope).to.exist;\n expect(elem!.CodeSpec).to.exist;\n expect(elem!.FederationGuid).to.exist;\n expect(elem!.LastMod).to.exist;\n assert.deepEqual(Object.keys(elem!).sort(), [\"ECInstanceId\", \"ECClassId\", \"$meta\", \"CodeScope\", \"CodeSpec\", \"FederationGuid\", \"LastMod\", \"Model\"].sort());\n assert.deepEqual(Object.keys(elem!.$meta).sort(), [\"op\", \"tables\", \"changeIndexes\", \"stage\", \"instanceKey\", \"propFilter\", \"changeFetchedPropNames\", \"rowOptions\", \"isIndirectChange\"].sort());\n assert.equal(elem!.$meta.op, \"Inserted\");\n assert.equal(elem!.$meta.stage, \"New\");\n assert.deepEqual([...elem!.$meta.tables].sort(), [\"bis_Element\", \"bis_GeometricElement2d\"].sort());\n assert.deepEqual([...elem!.$meta.changeIndexes].sort(), [1, 2].sort());\n assert.isString(elem!.$meta.instanceKey);\n assert.equal(elem!.$meta.instanceKey.split(`-`).length, 2);\n assert.equal(elem!.$meta.propFilter, PropertyFilter.BisCoreElement);\n assert.deepEqual([...elem!.$meta.changeFetchedPropNames].sort(), [\"ECInstanceId\", \"ECClassId\", \"CodeScope.Id\", \"CodeSpec.Id\",\n \"CodeValue\", \"FederationGuid\", \"JsonProperties\", \"LastMod\", \"Model.Id\", \"Parent\", \"UserLabel\"].sort());\n assert.deepEqual(elem!.$meta.rowOptions, { classIdsToClassNames: true });\n assert.equal(elem!.$meta.isIndirectChange, false);\n });\n\n it(\"txn1 insert-full | Instance_Key\", () => {\n const instances = readTxn(rwIModel, txnId, PropertyFilter.InstanceKey);\n assert.equal(instances.length, 3);\n\n // --- instances[0]: DrawingModel Updated New ---\n const modelNew = instances.find((i) => i.ECInstanceId === drawingModelId && i.$meta.stage === \"New\");\n expect(modelNew).to.exist;\n assert.equal(modelNew!.ECInstanceId, drawingModelId);\n assert.equal(\"BisCore:DrawingModel\", rwIModel.getClassNameFromId(modelNew!.ECClassId));\n assert.deepEqual(Object.keys(modelNew!).sort(), [\"ECInstanceId\", \"ECClassId\", \"$meta\"].sort());\n assert.deepEqual(Object.keys(modelNew!.$meta).sort(), [\"op\", \"tables\", \"changeIndexes\", \"stage\", \"instanceKey\", \"propFilter\", \"changeFetchedPropNames\", \"rowOptions\", \"isIndirectChange\"].sort());\n assert.equal(modelNew!.$meta.op, \"Updated\");\n assert.equal(modelNew!.$meta.stage, \"New\");\n assert.deepEqual([...modelNew!.$meta.tables].sort(), [\"bis_Model\"].sort());\n assert.deepEqual([...modelNew!.$meta.changeIndexes].sort(), [3].sort());\n assert.isString(modelNew!.$meta.instanceKey);\n assert.equal(modelNew!.$meta.instanceKey.split(`-`).length, 2);\n assert.equal(modelNew!.$meta.propFilter, PropertyFilter.InstanceKey);\n assert.deepEqual([...modelNew!.$meta.changeFetchedPropNames].sort(), [\"ECInstanceId\"].sort());\n assert.deepEqual(modelNew!.$meta.rowOptions, {});\n assert.equal(modelNew!.$meta.isIndirectChange, true);\n\n // --- instances[1]: DrawingModel Updated Old ---\n const modelOld = instances.find((i) => i.ECInstanceId === drawingModelId && i.$meta.stage === \"Old\");\n expect(modelOld).to.exist;\n assert.equal(modelOld!.ECInstanceId, drawingModelId);\n assert.equal(\"BisCore:DrawingModel\", rwIModel.getClassNameFromId(modelOld!.ECClassId));\n assert.deepEqual(Object.keys(modelOld!).sort(), [\"ECInstanceId\", \"ECClassId\", \"$meta\"].sort());\n assert.deepEqual(Object.keys(modelOld!.$meta).sort(), [\"op\", \"tables\", \"changeIndexes\", \"stage\", \"instanceKey\", \"propFilter\", \"changeFetchedPropNames\", \"rowOptions\", \"isIndirectChange\"].sort());\n assert.equal(modelOld!.$meta.op, \"Updated\");\n assert.equal(modelOld!.$meta.stage, \"Old\");\n assert.equal(modelOld!.$meta.propFilter, PropertyFilter.InstanceKey);\n assert.deepEqual([...modelOld!.$meta.changeFetchedPropNames].sort(), [\"ECInstanceId\"].sort());\n assert.deepEqual(modelOld!.$meta.rowOptions, {});\n assert.equal(modelOld!.$meta.isIndirectChange, true);\n\n // --- instances[2]: Test2dElement Inserted New (only ECInstanceId + ECClassId) ---\n const elem = instances.find((i) => i.ECInstanceId === fullElementId && i.$meta.stage === \"New\");\n expect(elem).to.exist;\n assert.equal(elem!.ECInstanceId, fullElementId);\n assert.equal(\"TestDomain:Test2dElement\", rwIModel.getClassNameFromId(elem!.ECClassId));\n assert.isUndefined(elem!.StrProp);\n assert.isUndefined(elem!.Model);\n assert.isUndefined(elem!.Category);\n assert.isUndefined(elem!.LastMod);\n assert.deepEqual(Object.keys(elem!).sort(), [\"ECInstanceId\", \"ECClassId\", \"$meta\"].sort());\n assert.deepEqual(Object.keys(elem!.$meta).sort(), [\"op\", \"tables\", \"changeIndexes\", \"stage\", \"instanceKey\", \"propFilter\", \"changeFetchedPropNames\", \"rowOptions\", \"isIndirectChange\"].sort());\n assert.equal(elem!.$meta.op, \"Inserted\");\n assert.equal(elem!.$meta.stage, \"New\");\n assert.deepEqual([...elem!.$meta.tables].sort(), [\"bis_Element\", \"bis_GeometricElement2d\"].sort());\n assert.deepEqual([...elem!.$meta.changeIndexes].sort(), [1, 2].sort());\n assert.isString(elem!.$meta.instanceKey);\n assert.equal(elem!.$meta.instanceKey.split(`-`).length, 2);\n assert.equal(elem!.$meta.propFilter, PropertyFilter.InstanceKey);\n assert.deepEqual([...elem!.$meta.changeFetchedPropNames].sort(), [\"ECInstanceId\", \"ECClassId\"].sort());\n assert.deepEqual(elem!.$meta.rowOptions, {});\n assert.equal(elem!.$meta.isIndirectChange, false);\n });\n\n it(\"txn1 | rowOptions: classIdsToClassNames\", () => {\n const instances = readTxn(rwIModel, txnId, undefined, { classIdsToClassNames: true });\n assert.equal(instances.length, 3);\n\n // --- instances[0]: DrawingModel Updated New (ECClassId is now class name) ---\n const modelNew = instances.find((i) => i.ECInstanceId === drawingModelId && i.$meta.stage === \"New\");\n expect(modelNew).to.exist;\n assert.equal(modelNew!.ECInstanceId, drawingModelId);\n assert.equal(modelNew!.ECClassId, \"BisCore.DrawingModel\");\n assert.isString(modelNew!.LastMod);\n assert.isString(modelNew!.GeometryGuid);\n assert.deepEqual(Object.keys(modelNew!).sort(), [\"ECInstanceId\", \"ECClassId\", \"LastMod\", \"GeometryGuid\", \"$meta\"].sort());\n assert.deepEqual(Object.keys(modelNew!.$meta).sort(), [\"op\", \"tables\", \"changeIndexes\", \"stage\", \"instanceKey\", \"propFilter\", \"changeFetchedPropNames\", \"rowOptions\", \"isIndirectChange\"].sort());\n assert.equal(modelNew!.$meta.op, \"Updated\");\n assert.equal(modelNew!.$meta.stage, \"New\");\n assert.equal(modelNew!.$meta.propFilter, PropertyFilter.All);\n assert.deepEqual([...modelNew!.$meta.changeFetchedPropNames].sort(), [\"ECInstanceId\", \"LastMod\", \"GeometryGuid\"].sort());\n assert.deepEqual(modelNew!.$meta.rowOptions, { classIdsToClassNames: true });\n assert.equal(modelNew!.$meta.isIndirectChange, true);\n\n // --- instances[1]: DrawingModel Updated Old ---\n const modelOld = instances.find((i) => i.ECInstanceId === drawingModelId && i.$meta.stage === \"Old\");\n expect(modelOld).to.exist;\n assert.equal(modelOld!.ECInstanceId, drawingModelId);\n assert.equal(modelOld!.ECClassId, \"BisCore.DrawingModel\");\n assert.deepEqual(Object.keys(modelOld!).sort(), [\"ECInstanceId\", \"ECClassId\", \"$meta\"].sort());\n assert.deepEqual(Object.keys(modelOld!.$meta).sort(), [\"op\", \"tables\", \"changeIndexes\", \"stage\", \"instanceKey\", \"propFilter\", \"changeFetchedPropNames\", \"rowOptions\", \"isIndirectChange\"].sort());\n assert.equal(modelOld!.$meta.op, \"Updated\");\n assert.equal(modelOld!.$meta.stage, \"Old\");\n assert.equal(modelOld!.$meta.propFilter, PropertyFilter.All);\n assert.deepEqual([...modelOld!.$meta.changeFetchedPropNames].sort(), [\"ECInstanceId\", \"LastMod\", \"GeometryGuid\"].sort());\n assert.deepEqual(modelOld!.$meta.rowOptions, { classIdsToClassNames: true });\n assert.equal(modelOld!.$meta.isIndirectChange, true);\n\n\n // --- instances[2]: Test2dElement Inserted New (ECClassId + all RelECClassId = class names) ---\n const elem = instances.find((i) => i.ECInstanceId === fullElementId && i.$meta.stage === \"New\");\n expect(elem).to.exist;\n assert.equal(elem!.ECInstanceId, fullElementId);\n assert.equal(\"TestDomain.Test2dElement\", elem!.ECClassId);\n assert.deepEqual(elem!.Model, { Id: drawingModelId, RelECClassId: \"BisCore.ModelContainsElements\" });\n assert.isString(elem!.LastMod);\n assert.deepEqual(elem!.CodeSpec, { Id: \"0x1\", RelECClassId: \"BisCore.CodeSpecSpecifiesCode\" });\n assert.deepEqual(elem!.CodeScope, { Id: \"0x1\", RelECClassId: \"BisCore.ElementScopesCode\" });\n assert.isString(elem!.FederationGuid);\n assert.deepEqual(elem!.Category, { Id: drawingCategoryId, RelECClassId: \"BisCore.GeometricElement2dIsInCategory\" });\n assert.deepEqual(elem!.Origin, { X: 0, Y: 0 });\n assert.equal(elem!.Rotation, 0);\n assert.deepEqual(elem!.BBoxLow, { X: -25, Y: -25 });\n assert.deepEqual(elem!.BBoxHigh, { X: 15, Y: 15 });\n assert.include(String(elem!.GeometryStream), \"\\\"bytes\\\"\");\n assert.include(String(elem!.BinProp), \"\\\"bytes\\\"\");\n assert.equal(elem!.StrProp, \"hello\");\n assert.equal(elem!.IntProp, 42);\n assert.equal(elem!.LongProp, 9007199254740991);\n assert.closeTo(elem!.DblProp as number, 3.14159265358979, 1e-10);\n assert.equal(elem!.BoolProp, true);\n assert.equal(elem!.DtProp, \"2024-01-15T12:00:00.000\");\n assert.deepEqual(elem!.Pt2dProp, { X: 1.5, Y: 2.5 });\n assert.deepEqual(elem!.Pt3dProp, { X: 3, Y: 4, Z: 5 });\n assert.deepEqual(elem!.StructProp, { X: 1, Y: 2, Z: 3, Label: \"origin\", Pt2d: { X: 0.5, Y: 0.5 }, Pt3d: { X: 1, Y: 2, Z: 3 } });\n assert.deepEqual(elem!.IntArrProp, [10, 20, 30]);\n assert.deepEqual(elem!.StrArrProp, [\"alpha\", \"beta\", \"gamma\"]);\n assert.equal(elem!.StructArrProp.length, 2);\n assert.deepEqual(elem!.RelatedElem, { Id: drawingCategoryId, RelECClassId: \"TestDomain.Test2dUsesElement\" });\n assert.deepEqual(Object.keys(elem!).sort(), [\n \"ECInstanceId\", \"ECClassId\", \"Model\", \"LastMod\", \"CodeSpec\", \"CodeScope\", \"FederationGuid\", \"$meta\",\n \"Category\", \"Origin\", \"Rotation\", \"BBoxLow\", \"BBoxHigh\", \"GeometryStream\",\n \"StrProp\", \"IntProp\", \"LongProp\", \"DblProp\", \"BoolProp\", \"DtProp\",\n \"Pt2dProp\", \"Pt3dProp\", \"StructProp\", \"IntArrProp\", \"StrArrProp\", \"StructArrProp\", \"RelatedElem\", \"BinProp\"\n ].sort());\n assert.deepEqual(Object.keys(elem!.$meta).sort(), [\"op\", \"tables\", \"changeIndexes\", \"stage\", \"instanceKey\", \"propFilter\", \"changeFetchedPropNames\", \"rowOptions\", \"isIndirectChange\"].sort());\n assert.equal(elem!.$meta.op, \"Inserted\");\n assert.equal(elem!.$meta.stage, \"New\");\n assert.equal(elem!.$meta.propFilter, PropertyFilter.All);\n assert.deepEqual(elem!.$meta.rowOptions, { classIdsToClassNames: true });\n assert.deepEqual([...elem!.$meta.changeFetchedPropNames].sort(),\n [\"ECInstanceId\", \"ECClassId\", \"Model.Id\", \"LastMod\", \"CodeSpec.Id\", \"CodeScope.Id\",\n \"CodeValue\", \"UserLabel\", \"Parent\", \"FederationGuid\", \"JsonProperties\", \"Category.Id\",\n \"Origin\", \"Rotation\", \"BBoxLow\", \"BBoxHigh\", \"GeometryStream\", \"TypeDefinition\", \"StrProp\",\n \"IntProp\", \"LongProp\", \"DblProp\", \"BoolProp\", \"DtProp\", \"BinProp\", \"Pt2dProp\", \"Pt3dProp\",\n \"StructProp.X\", \"StructProp.Y\", \"StructProp.Z\", \"StructProp.Label\", \"StructProp.Pt2d\",\n \"StructProp.Pt3d\", \"IntArrProp\", \"StrArrProp\", \"StructArrProp\", \"RelatedElem\"].sort());\n assert.equal(elem!.$meta.isIndirectChange, false);\n });\n\n it(\"txn1 | rowOptions: useJsName\", () => {\n const instances = readTxn(rwIModel, txnId, undefined, { useJsName: true });\n assert.equal(instances.length, 3);\n\n // --- instances[0]: DrawingModel Updated New (all keys camelCase) ---\n const modelNew = instances.find((i) => i.id === drawingModelId && i.$meta.stage === \"New\");\n expect(modelNew).to.exist;\n assert.equal(modelNew!.id, drawingModelId);\n assert.equal(modelNew!.className, \"BisCore.DrawingModel\");\n assert.isString(modelNew!.lastMod);\n assert.isString(modelNew!.geometryGuid);\n assert.isUndefined(modelNew!.ECInstanceId);\n assert.isUndefined(modelNew!.ECClassId);\n assert.deepEqual(Object.keys(modelNew!).sort(), [\"id\", \"className\", \"lastMod\", \"geometryGuid\", \"$meta\"].sort());\n assert.deepEqual(Object.keys(modelNew!.$meta).sort(), [\"op\", \"tables\", \"changeIndexes\", \"stage\", \"instanceKey\", \"propFilter\", \"changeFetchedPropNames\", \"rowOptions\", \"isIndirectChange\"].sort());\n assert.equal(modelNew!.$meta.op, \"Updated\");\n assert.equal(modelNew!.$meta.stage, \"New\");\n assert.equal(modelNew!.$meta.propFilter, PropertyFilter.All);\n assert.deepEqual([...modelNew!.$meta.changeFetchedPropNames].sort(), [\"ECInstanceId\", \"LastMod\", \"GeometryGuid\"].sort());\n assert.deepEqual(modelNew!.$meta.rowOptions, { useJsName: true });\n assert.equal(modelNew!.$meta.isIndirectChange, true);\n\n // --- instances[1]: DrawingModel Updated Old ---\n const modelOld = instances.find((i) => i.id === drawingModelId && i.$meta.stage === \"Old\");\n expect(modelOld).to.exist;\n assert.equal(modelOld!.id, drawingModelId);\n assert.equal(modelOld!.className, \"BisCore.DrawingModel\");\n assert.isUndefined(modelOld!.ECInstanceId);\n assert.deepEqual(Object.keys(modelOld!).sort(), [\"id\", \"className\", \"$meta\"].sort());\n assert.deepEqual(Object.keys(modelOld!.$meta).sort(), [\"op\", \"tables\", \"changeIndexes\", \"stage\", \"instanceKey\", \"propFilter\", \"changeFetchedPropNames\", \"rowOptions\", \"isIndirectChange\"].sort());\n assert.equal(modelOld!.$meta.op, \"Updated\");\n assert.equal(modelOld!.$meta.stage, \"Old\");\n assert.equal(modelOld!.$meta.propFilter, PropertyFilter.All);\n assert.deepEqual([...modelOld!.$meta.changeFetchedPropNames].sort(), [\"ECInstanceId\", \"LastMod\", \"GeometryGuid\"].sort());\n assert.deepEqual(modelOld!.$meta.rowOptions, { useJsName: true });\n assert.equal(modelOld!.$meta.isIndirectChange, true);\n\n // --- instances[2]: Test2dElement Inserted New (camelCase keys + class names for nav) ---\n const elem = instances.find((i) => i.id === fullElementId && i.$meta.stage === \"New\");\n expect(elem).to.exist;\n assert.equal(elem!.id, fullElementId);\n assert.equal(elem!.className, \"TestDomain.Test2dElement\");\n assert.isUndefined(elem!.ECInstanceId);\n assert.isUndefined(elem!.ECClassId);\n assert.isUndefined(elem!.StrProp);\n assert.deepEqual(elem!.model, { id: drawingModelId, relClassName: \"BisCore.ModelContainsElements\" });\n assert.isString(elem!.lastMod);\n assert.deepEqual(elem!.codeSpec, { id: \"0x1\", relClassName: \"BisCore.CodeSpecSpecifiesCode\" });\n assert.deepEqual(elem!.codeScope, { id: \"0x1\", relClassName: \"BisCore.ElementScopesCode\" });\n assert.isString(elem!.federationGuid);\n assert.deepEqual(elem!.category, { id: drawingCategoryId, relClassName: \"BisCore.GeometricElement2dIsInCategory\" });\n assert.deepEqual(elem!.origin, { x: 0, y: 0 });\n assert.equal(elem!.rotation, 0);\n assert.deepEqual(elem!.bBoxLow, { x: -25, y: -25 });\n assert.deepEqual(elem!.bBoxHigh, { x: 15, y: 15 });\n assert.include(String(elem!.geometryStream), \"\\\"bytes\\\"\");\n assert.include(String(elem!.binProp), \"\\\"bytes\\\"\");\n assert.equal(elem!.strProp, \"hello\");\n assert.equal(elem!.intProp, 42);\n assert.equal(elem!.longProp, 9007199254740991);\n assert.closeTo(elem!.dblProp as number, 3.14159265358979, 1e-10);\n assert.equal(elem!.boolProp, true);\n assert.equal(elem!.dtProp, \"2024-01-15T12:00:00.000\");\n assert.deepEqual(elem!.pt2dProp, { x: 1.5, y: 2.5 });\n assert.deepEqual(elem!.pt3dProp, { x: 3, y: 4, z: 5 });\n assert.deepEqual(elem!.structProp, { x: 1, y: 2, z: 3, label: \"origin\", pt2d: { x: 0.5, y: 0.5 }, pt3d: { x: 1, y: 2, z: 3 } });\n assert.deepEqual(elem!.intArrProp, [10, 20, 30]);\n assert.deepEqual(elem!.strArrProp, [\"alpha\", \"beta\", \"gamma\"]);\n assert.equal(elem!.structArrProp.length, 2);\n assert.deepEqual(elem!.structArrProp[0], { x: 0, y: 1, z: 2, label: \"a\", pt2d: { x: 0, y: 0 }, pt3d: { x: 0, y: 0, z: 0 } });\n assert.deepEqual(elem!.relatedElem, { id: drawingCategoryId, relClassName: \"TestDomain.Test2dUsesElement\" });\n assert.deepEqual(Object.keys(elem!).sort(), [\n \"id\", \"className\", \"model\", \"lastMod\", \"codeSpec\", \"codeScope\", \"federationGuid\", \"$meta\",\n \"category\", \"origin\", \"rotation\", \"bBoxLow\", \"bBoxHigh\", \"geometryStream\",\n \"strProp\", \"intProp\", \"longProp\", \"dblProp\", \"boolProp\", \"dtProp\",\n \"pt2dProp\", \"pt3dProp\", \"structProp\", \"intArrProp\", \"strArrProp\", \"structArrProp\", \"relatedElem\", \"binProp\"\n ].sort());\n assert.deepEqual(Object.keys(elem!.$meta).sort(), [\"op\", \"tables\", \"changeIndexes\", \"stage\", \"instanceKey\", \"propFilter\", \"changeFetchedPropNames\", \"rowOptions\", \"isIndirectChange\"].sort());\n assert.equal(elem!.$meta.op, \"Inserted\");\n assert.equal(elem!.$meta.stage, \"New\");\n assert.equal(elem!.$meta.propFilter, PropertyFilter.All);\n assert.deepEqual([...elem!.$meta.changeFetchedPropNames].sort(), [\n 'BBoxHigh', 'BBoxLow', 'BinProp', 'BoolProp', 'Category.Id', 'CodeScope.Id',\n 'CodeSpec.Id', 'CodeValue', 'DblProp', 'DtProp', 'ECClassId',\n 'ECInstanceId', 'FederationGuid', 'GeometryStream', 'IntArrProp', 'IntProp',\n 'JsonProperties', 'LastMod', 'LongProp', 'Model.Id', 'Origin', 'Parent', 'Pt2dProp',\n 'Pt3dProp', 'RelatedElem', 'Rotation', 'StrArrProp', 'StrProp', 'StructArrProp', 'StructProp.Label',\n 'StructProp.Pt2d', 'StructProp.Pt3d', 'StructProp.X', 'StructProp.Y',\n 'StructProp.Z', 'TypeDefinition', 'UserLabel'\n ].sort());\n assert.deepEqual(elem!.$meta.rowOptions, { useJsName: true });\n assert.equal(elem!.$meta.isIndirectChange, false);\n });\n\n it(\"txn1 | rowOptions: abbreviateBlobs\", () => {\n const instances = readTxn(rwIModel, txnId, undefined, { abbreviateBlobs: true });\n assert.equal(instances.length, 3);\n\n // --- instances[0]: DrawingModel Updated New ---\n const modelNew = instances.find((i) => i.ECInstanceId === drawingModelId && i.$meta.stage === \"New\");\n expect(modelNew).to.exist;\n assert.equal(modelNew!.ECInstanceId, drawingModelId);\n assert.equal(\"BisCore:DrawingModel\", rwIModel.getClassNameFromId(modelNew!.ECClassId)); // still raw hex\n assert.isString(modelNew!.LastMod);\n assert.isString(modelNew!.GeometryGuid);\n assert.deepEqual(Object.keys(modelNew!).sort(), [\"ECInstanceId\", \"ECClassId\", \"LastMod\", \"GeometryGuid\", \"$meta\"].sort());\n assert.deepEqual(Object.keys(modelNew!.$meta).sort(), [\"op\", \"tables\", \"changeIndexes\", \"stage\", \"instanceKey\", \"propFilter\", \"changeFetchedPropNames\", \"rowOptions\", \"isIndirectChange\"].sort());\n assert.equal(modelNew!.$meta.op, \"Updated\");\n assert.equal(modelNew!.$meta.stage, \"New\");\n assert.equal(modelNew!.$meta.propFilter, PropertyFilter.All);\n assert.deepEqual([...modelNew!.$meta.changeFetchedPropNames].sort(), [\"ECInstanceId\", \"LastMod\", \"GeometryGuid\"].sort());\n assert.deepEqual(modelNew!.$meta.rowOptions, { abbreviateBlobs: true });\n assert.equal(modelNew!.$meta.isIndirectChange, true);\n\n // --- instances[1]: DrawingModel Updated Old ---\n const modelOld = instances.find((i) => i.ECInstanceId === drawingModelId && i.$meta.stage === \"Old\");\n expect(modelOld).to.exist;\n assert.equal(modelOld!.ECInstanceId, drawingModelId);\n assert.equal(\"BisCore:DrawingModel\", rwIModel.getClassNameFromId(modelOld!.ECClassId));\n assert.deepEqual(Object.keys(modelOld!).sort(), [\"ECInstanceId\", \"ECClassId\", \"$meta\"].sort());\n assert.deepEqual(Object.keys(modelOld!.$meta).sort(), [\"op\", \"tables\", \"changeIndexes\", \"stage\", \"instanceKey\", \"propFilter\", \"changeFetchedPropNames\", \"rowOptions\", \"isIndirectChange\"].sort());\n assert.equal(modelOld!.$meta.op, \"Updated\");\n assert.equal(modelOld!.$meta.stage, \"Old\");\n assert.equal(modelOld!.$meta.propFilter, PropertyFilter.All);\n assert.deepEqual([...modelOld!.$meta.changeFetchedPropNames].sort(), [\"ECInstanceId\", \"LastMod\", \"GeometryGuid\"].sort());\n assert.deepEqual(modelOld!.$meta.rowOptions, { abbreviateBlobs: true });\n assert.equal(modelOld!.$meta.isIndirectChange, true);\n\n // --- instances[2]: Test2dElement Inserted New ---\n const elem = instances.find((i) => i.ECInstanceId === fullElementId && i.$meta.stage === \"New\");\n expect(elem).to.exist;\n assert.equal(elem!.ECInstanceId, fullElementId);\n assert.equal(\"TestDomain:Test2dElement\", rwIModel.getClassNameFromId(elem!.ECClassId)); // still raw hex (no classIdsToClassNames)\n assert.equal(elem!.Model.Id, drawingModelId);\n assert.equal(rwIModel.getClassNameFromId(elem!.Model.RelECClassId), \"BisCore:ModelContainsElements\");\n assert.isString(elem!.LastMod);\n assert.equal(elem!.CodeSpec.Id, \"0x1\");\n assert.equal(rwIModel.getClassNameFromId(elem!.CodeSpec.RelECClassId), \"BisCore:CodeSpecSpecifiesCode\");\n\n assert.equal(elem!.CodeScope.Id, \"0x1\");\n assert.equal(rwIModel.getClassNameFromId(elem!.CodeScope.RelECClassId), \"BisCore:ElementScopesCode\");\n assert.isString(elem!.FederationGuid);\n assert.equal(elem!.Category.Id, drawingCategoryId);\n assert.equal(rwIModel.getClassNameFromId(elem!.Category.RelECClassId), \"BisCore:GeometricElement2dIsInCategory\");\n assert.deepEqual(elem!.Origin, { X: 0, Y: 0 });\n assert.equal(elem!.Rotation, 0);\n assert.deepEqual(elem!.BBoxLow, { X: -25, Y: -25 });\n assert.deepEqual(elem!.BBoxHigh, { X: 15, Y: 15 });\n // GeometryStream is a blob — abbreviated to {\"bytes\": N}\n assert.include(String(elem!.GeometryStream), \"\\\"bytes\\\"\");\n assert.include(String(elem!.BinProp), \"\\\"bytes\\\"\");\n assert.equal(elem!.StrProp, \"hello\");\n assert.equal(elem!.IntProp, 42);\n assert.equal(elem!.LongProp, 9007199254740991);\n assert.closeTo(elem!.DblProp as number, 3.14159265358979, 1e-10);\n assert.equal(elem!.BoolProp, true);\n assert.equal(elem!.DtProp, \"2024-01-15T12:00:00.000\");\n assert.deepEqual(elem!.Pt2dProp, { X: 1.5, Y: 2.5 });\n assert.deepEqual(elem!.Pt3dProp, { X: 3, Y: 4, Z: 5 });\n assert.deepEqual(elem!.StructProp, { X: 1, Y: 2, Z: 3, Label: \"origin\", Pt2d: { X: 0.5, Y: 0.5 }, Pt3d: { X: 1, Y: 2, Z: 3 } });\n assert.deepEqual(elem!.IntArrProp, [10, 20, 30]);\n assert.deepEqual(elem!.StrArrProp, [\"alpha\", \"beta\", \"gamma\"]);\n assert.equal(elem!.StructArrProp.length, 2);\n assert.equal(elem!.RelatedElem.Id, drawingCategoryId);\n assert.equal(rwIModel.getClassNameFromId(elem!.RelatedElem.RelECClassId), \"TestDomain:Test2dUsesElement\");\n assert.deepEqual(Object.keys(elem!).sort(), [\n \"ECInstanceId\", \"ECClassId\", \"Model\", \"LastMod\", \"CodeSpec\", \"CodeScope\", \"FederationGuid\", \"$meta\",\n \"Category\", \"Origin\", \"Rotation\", \"BBoxLow\", \"BBoxHigh\", \"GeometryStream\",\n \"StrProp\", \"IntProp\", \"LongProp\", \"DblProp\", \"BoolProp\", \"DtProp\",\n \"Pt2dProp\", \"Pt3dProp\", \"StructProp\", \"IntArrProp\", \"StrArrProp\", \"StructArrProp\", \"RelatedElem\", \"BinProp\"\n ].sort());\n assert.deepEqual(Object.keys(elem!.$meta).sort(), [\"op\", \"tables\", \"changeIndexes\", \"stage\", \"instanceKey\", \"propFilter\", \"changeFetchedPropNames\", \"rowOptions\", \"isIndirectChange\"].sort());\n assert.equal(elem!.$meta.op, \"Inserted\");\n assert.equal(elem!.$meta.stage, \"New\");\n assert.equal(elem!.$meta.propFilter, PropertyFilter.All);\n assert.deepEqual(elem!.$meta.rowOptions, { abbreviateBlobs: true });\n assert.equal(elem!.$meta.isIndirectChange, false);\n });\n\n it(\"txn1 | rowOptions: abbreviateBlobs: false\", () => {\n const instances = readTxn(rwIModel, txnId, undefined, { abbreviateBlobs: false }, undefined, false);\n assert.equal(instances.length, 3);\n\n // --- instances[0]: DrawingModel Updated New ---\n const modelNew = instances.find((i) => i.ECInstanceId === drawingModelId && i.$meta.stage === \"New\");\n expect(modelNew).to.exist;\n assert.equal(modelNew!.ECInstanceId, drawingModelId);\n assert.equal(\"BisCore:DrawingModel\", rwIModel.getClassNameFromId(modelNew!.ECClassId)); // still raw hex\n assert.isString(modelNew!.LastMod);\n assert.isString(modelNew!.GeometryGuid);\n assert.deepEqual(Object.keys(modelNew!).sort(), [\"ECInstanceId\", \"ECClassId\", \"LastMod\", \"GeometryGuid\", \"$meta\"].sort());\n assert.deepEqual(Object.keys(modelNew!.$meta).sort(), [\"op\", \"tables\", \"changeIndexes\", \"stage\", \"instanceKey\", \"propFilter\", \"changeFetchedPropNames\", \"rowOptions\", \"isIndirectChange\"].sort());\n assert.equal(modelNew!.$meta.op, \"Updated\");\n assert.equal(modelNew!.$meta.stage, \"New\");\n assert.equal(modelNew!.$meta.propFilter, PropertyFilter.All);\n assert.deepEqual([...modelNew!.$meta.changeFetchedPropNames].sort(), [\"ECInstanceId\", \"LastMod\", \"GeometryGuid\"].sort());\n assert.deepEqual(modelNew!.$meta.rowOptions, { abbreviateBlobs: false });\n assert.equal(modelNew!.$meta.isIndirectChange, true);\n\n // --- instances[1]: DrawingModel Updated Old ---\n const modelOld = instances.find((i) => i.ECInstanceId === drawingModelId && i.$meta.stage === \"Old\");\n expect(modelOld).to.exist;\n assert.equal(modelOld!.ECInstanceId, drawingModelId);\n assert.equal(\"BisCore:DrawingModel\", rwIModel.getClassNameFromId(modelOld!.ECClassId));\n assert.deepEqual(Object.keys(modelOld!).sort(), [\"ECInstanceId\", \"ECClassId\", \"$meta\"].sort());\n assert.deepEqual(Object.keys(modelOld!.$meta).sort(), [\"op\", \"tables\", \"changeIndexes\", \"stage\", \"instanceKey\", \"propFilter\", \"changeFetchedPropNames\", \"rowOptions\", \"isIndirectChange\"].sort());\n assert.equal(modelOld!.$meta.op, \"Updated\");\n assert.equal(modelOld!.$meta.stage, \"Old\");\n assert.equal(modelOld!.$meta.propFilter, PropertyFilter.All);\n assert.deepEqual([...modelOld!.$meta.changeFetchedPropNames].sort(), [\"ECInstanceId\", \"LastMod\", \"GeometryGuid\"].sort());\n assert.deepEqual(modelOld!.$meta.rowOptions, { abbreviateBlobs: false });\n assert.equal(modelOld!.$meta.isIndirectChange, true);\n\n // --- instances[2]: Test2dElement Inserted New ---\n const elem = instances.find((i) => i.ECInstanceId === fullElementId && i.$meta.stage === \"New\");\n expect(elem).to.exist;\n assert.equal(elem!.ECInstanceId, fullElementId);\n assert.equal(\"TestDomain:Test2dElement\", rwIModel.getClassNameFromId(elem!.ECClassId)); // still raw hex (no classIdsToClassNames)\n assert.equal(elem!.Model.Id, drawingModelId);\n assert.equal(rwIModel.getClassNameFromId(elem!.Model.RelECClassId), \"BisCore:ModelContainsElements\");\n assert.isString(elem!.LastMod);\n assert.equal(elem!.CodeSpec.Id, \"0x1\");\n assert.equal(rwIModel.getClassNameFromId(elem!.CodeSpec.RelECClassId), \"BisCore:CodeSpecSpecifiesCode\");\n\n assert.equal(elem!.CodeScope.Id, \"0x1\");\n assert.equal(rwIModel.getClassNameFromId(elem!.CodeScope.RelECClassId), \"BisCore:ElementScopesCode\");\n assert.isString(elem!.FederationGuid);\n assert.equal(elem!.Category.Id, drawingCategoryId);\n assert.equal(rwIModel.getClassNameFromId(elem!.Category.RelECClassId), \"BisCore:GeometricElement2dIsInCategory\");\n assert.deepEqual(elem!.Origin, { X: 0, Y: 0 });\n assert.equal(elem!.Rotation, 0);\n assert.deepEqual(elem!.BBoxLow, { X: -25, Y: -25 });\n assert.deepEqual(elem!.BBoxHigh, { X: 15, Y: 15 });\n // GeometryStream is a blob — abbreviated to {\"bytes\": N}\n assert.deepEqual(elem!.GeometryStream, new Uint8Array([\n 1, 0, 0, 0, 8, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,\n 7, 0, 0, 0, 112, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0,\n 16, 0, 88, 0, 8, 0, 32, 0, 56, 0, 0, 0, 80, 0, 7, 0,\n 16, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 20, 64, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 20, 64, 0, 0, 0, 0, 0, 0, 0, 0,\n 24, 45, 68, 84, 251, 33, 25, 64, 7, 0, 0, 0, 112, 0, 0, 0,\n 24, 0, 0, 0, 0, 0, 0, 0, 16, 0, 88, 0, 8, 0, 32, 0,\n 56, 0, 0, 0, 80, 0, 7, 0, 16, 0, 0, 0, 0, 0, 0, 1,\n 0, 0, 0, 0, 0, 0, 20, 64, 0, 0, 0, 0, 0, 0, 20, 64,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,\n 0, 0, 0, 0, 0, 0, 0, 0, 24, 45, 68, 84, 251, 33, 25, 64,\n 7, 0, 0, 0, 112, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0,\n 16, 0, 88, 0, 8, 0, 32, 0, 56, 0, 0, 0, 80, 0, 7, 0,\n 16, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 20, 192,\n 0, 0, 0, 0, 0, 0, 20, 192, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 52, 64, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 52, 64, 0, 0, 0, 0, 0, 0, 0, 0,\n 24, 45, 68, 84, 251, 33, 25, 64\n ]));\n assert.deepEqual(elem!.BinProp, new Uint8Array([1, 2, 3, 4]));\n assert.equal(elem!.StrProp, \"hello\");\n assert.equal(elem!.IntProp, 42);\n assert.equal(elem!.LongProp, 9007199254740991);\n assert.closeTo(elem!.DblProp as number, 3.14159265358979, 1e-10);\n assert.equal(elem!.BoolProp, true);\n assert.equal(elem!.DtProp, \"2024-01-15T12:00:00.000\");\n assert.deepEqual(elem!.Pt2dProp, { X: 1.5, Y: 2.5 });\n assert.deepEqual(elem!.Pt3dProp, { X: 3, Y: 4, Z: 5 });\n assert.deepEqual(elem!.StructProp, { X: 1, Y: 2, Z: 3, Label: \"origin\", Pt2d: { X: 0.5, Y: 0.5 }, Pt3d: { X: 1, Y: 2, Z: 3 } });\n assert.deepEqual(elem!.IntArrProp, [10, 20, 30]);\n assert.deepEqual(elem!.StrArrProp, [\"alpha\", \"beta\", \"gamma\"]);\n assert.equal(elem!.StructArrProp.length, 2);\n assert.equal(elem!.RelatedElem.Id, drawingCategoryId);\n assert.equal(rwIModel.getClassNameFromId(elem!.RelatedElem.RelECClassId), \"TestDomain:Test2dUsesElement\");\n assert.deepEqual(Object.keys(elem!).sort(), [\n \"ECInstanceId\", \"ECClassId\", \"Model\", \"LastMod\", \"CodeSpec\", \"CodeScope\", \"FederationGuid\", \"$meta\",\n \"Category\", \"Origin\", \"Rotation\", \"BBoxLow\", \"BBoxHigh\", \"GeometryStream\",\n \"StrProp\", \"IntProp\", \"LongProp\", \"DblProp\", \"BoolProp\", \"DtProp\",\n \"Pt2dProp\", \"Pt3dProp\", \"StructProp\", \"IntArrProp\", \"StrArrProp\", \"StructArrProp\", \"RelatedElem\", \"BinProp\"\n ].sort());\n assert.deepEqual(Object.keys(elem!.$meta).sort(), [\"op\", \"tables\", \"changeIndexes\", \"stage\", \"instanceKey\", \"propFilter\", \"changeFetchedPropNames\", \"rowOptions\", \"isIndirectChange\"].sort());\n assert.equal(elem!.$meta.op, \"Inserted\");\n assert.equal(elem!.$meta.stage, \"New\");\n assert.equal(elem!.$meta.propFilter, PropertyFilter.All);\n assert.deepEqual(elem!.$meta.rowOptions, { abbreviateBlobs: false });\n assert.equal(elem!.$meta.isIndirectChange, false);\n });\n\n it(\"txn1 | rowOptions: classIdsToClassNames + useJsName\", () => {\n const instances = readTxn(rwIModel, txnId, undefined, { classIdsToClassNames: true, useJsName: true }, undefined, false);\n assert.equal(instances.length, 3);\n\n // --- instances[0]: DrawingModel Updated New ---\n const modelNew = instances.find((i) => i.id === drawingModelId && i.$meta.stage === \"New\");\n expect(modelNew).to.exist;\n assert.equal(modelNew!.id, drawingModelId);\n assert.equal(modelNew!.className, \"BisCore.DrawingModel\");\n assert.isString(modelNew!.lastMod);\n assert.isString(modelNew!.geometryGuid);\n assert.isUndefined(modelNew!.ECInstanceId);\n assert.deepEqual(Object.keys(modelNew!).sort(), [\"id\", \"className\", \"lastMod\", \"geometryGuid\", \"$meta\"].sort());\n assert.deepEqual(Object.keys(modelNew!.$meta).sort(), [\"op\", \"tables\", \"changeIndexes\", \"stage\", \"instanceKey\", \"propFilter\", \"changeFetchedPropNames\", \"rowOptions\", \"isIndirectChange\"].sort());\n assert.equal(modelNew!.$meta.op, \"Updated\");\n assert.equal(modelNew!.$meta.stage, \"New\");\n assert.equal(modelNew!.$meta.propFilter, PropertyFilter.All);\n assert.deepEqual([...modelNew!.$meta.changeFetchedPropNames].sort(), [\"ECInstanceId\", \"LastMod\", \"GeometryGuid\"].sort());\n assert.deepEqual(modelNew!.$meta.rowOptions, { classIdsToClassNames: true, useJsName: true });\n assert.equal(modelNew!.$meta.isIndirectChange, true);\n\n // --- instances[1]: DrawingModel Updated Old ---\n const modelOld = instances.find((i) => i.id === drawingModelId && i.$meta.stage === \"Old\");\n expect(modelOld).to.exist;\n assert.equal(modelOld!.id, drawingModelId);\n assert.equal(modelOld!.className, \"BisCore.DrawingModel\");\n assert.isUndefined(modelOld!.ECInstanceId);\n assert.deepEqual(Object.keys(modelOld!).sort(), [\"id\", \"className\", \"$meta\"].sort());\n assert.deepEqual(Object.keys(modelOld!.$meta).sort(), [\"op\", \"tables\", \"changeIndexes\", \"stage\", \"instanceKey\", \"propFilter\", \"changeFetchedPropNames\", \"rowOptions\", \"isIndirectChange\"].sort());\n assert.equal(modelOld!.$meta.op, \"Updated\");\n assert.equal(modelOld!.$meta.stage, \"Old\");\n assert.equal(modelOld!.$meta.propFilter, PropertyFilter.All);\n assert.deepEqual([...modelOld!.$meta.changeFetchedPropNames].sort(), [\"ECInstanceId\", \"LastMod\", \"GeometryGuid\"].sort());\n assert.deepEqual(modelOld!.$meta.rowOptions, { classIdsToClassNames: true, useJsName: true });\n assert.equal(modelOld!.$meta.isIndirectChange, true);\n\n // --- instances[2]: Test2dElement Inserted New (camelCase + class names) ---\n const elem = instances.find((i) => i.id === fullElementId && i.$meta.stage === \"New\");\n expect(elem).to.exist;\n assert.equal(elem!.id, fullElementId);\n assert.equal(elem!.className, \"TestDomain.Test2dElement\");\n assert.isUndefined(elem!.ECInstanceId);\n assert.isUndefined(elem!.ECClassId);\n assert.isUndefined(elem!.StrProp);\n assert.deepEqual(elem!.model, { id: drawingModelId, relClassName: \"BisCore.ModelContainsElements\" });\n assert.isString(elem!.lastMod);\n assert.deepEqual(elem!.codeSpec, { id: \"0x1\", relClassName: \"BisCore.CodeSpecSpecifiesCode\" });\n assert.deepEqual(elem!.codeScope, { id: \"0x1\", relClassName: \"BisCore.ElementScopesCode\" });\n assert.isString(elem!.federationGuid);\n assert.deepEqual(elem!.category, { id: drawingCategoryId, relClassName: \"BisCore.GeometricElement2dIsInCategory\" });\n assert.deepEqual(elem!.origin, { x: 0, y: 0 });\n assert.equal(elem!.rotation, 0);\n assert.deepEqual(elem!.bBoxLow, { x: -25, y: -25 });\n assert.deepEqual(elem!.bBoxHigh, { x: 15, y: 15 });\n assert.include(String(elem!.geometryStream), \"\\\"bytes\\\"\");\n assert.include(String(elem!.binProp), \"\\\"bytes\\\"\");\n assert.equal(elem!.strProp, \"hello\");\n assert.equal(elem!.intProp, 42);\n assert.equal(elem!.longProp, 9007199254740991);\n assert.closeTo(elem!.dblProp as number, 3.14159265358979, 1e-10);\n assert.equal(elem!.boolProp, true);\n assert.equal(elem!.dtProp, \"2024-01-15T12:00:00.000\");\n assert.deepEqual(elem!.pt2dProp, { x: 1.5, y: 2.5 });\n assert.deepEqual(elem!.pt3dProp, { x: 3, y: 4, z: 5 });\n assert.deepEqual(elem!.structProp, { x: 1, y: 2, z: 3, label: \"origin\", pt2d: { x: 0.5, y: 0.5 }, pt3d: { x: 1, y: 2, z: 3 } });\n assert.deepEqual(elem!.intArrProp, [10, 20, 30]);\n assert.deepEqual(elem!.strArrProp, [\"alpha\", \"beta\", \"gamma\"]);\n assert.equal(elem!.structArrProp.length, 2);\n assert.deepEqual(elem!.relatedElem, { id: drawingCategoryId, relClassName: \"TestDomain.Test2dUsesElement\" });\n assert.deepEqual(Object.keys(elem!).sort(), [\n \"id\", \"className\", \"model\", \"lastMod\", \"codeSpec\", \"codeScope\", \"federationGuid\", \"$meta\",\n \"category\", \"origin\", \"rotation\", \"bBoxLow\", \"bBoxHigh\", \"geometryStream\",\n \"strProp\", \"intProp\", \"longProp\", \"dblProp\", \"boolProp\", \"dtProp\",\n \"pt2dProp\", \"pt3dProp\", \"structProp\", \"intArrProp\", \"strArrProp\", \"structArrProp\", \"relatedElem\", \"binProp\"\n ].sort());\n assert.deepEqual(Object.keys(elem!.$meta).sort(), [\"op\", \"tables\", \"changeIndexes\", \"stage\", \"instanceKey\", \"propFilter\", \"changeFetchedPropNames\", \"rowOptions\", \"isIndirectChange\"].sort());\n assert.equal(elem!.$meta.op, \"Inserted\");\n assert.equal(elem!.$meta.stage, \"New\");\n assert.equal(elem!.$meta.propFilter, PropertyFilter.All);\n assert.deepEqual([...elem!.$meta.changeFetchedPropNames].sort(), [\n 'BBoxHigh', 'BBoxLow', 'BinProp', 'BoolProp', 'Category.Id',\n 'CodeScope.Id', 'CodeSpec.Id',\n 'CodeValue', 'DblProp', 'DtProp',\n 'ECClassId', 'ECInstanceId', 'FederationGuid',\n 'GeometryStream', 'IntArrProp', 'IntProp',\n 'JsonProperties', 'LastMod', 'LongProp',\n 'Model.Id', 'Origin', 'Parent', 'Pt2dProp', 'Pt3dProp', 'RelatedElem', 'Rotation', 'StrArrProp',\n 'StrProp', 'StructArrProp', 'StructProp.Label', 'StructProp.Pt2d', 'StructProp.Pt3d',\n 'StructProp.X', 'StructProp.Y', 'StructProp.Z', 'TypeDefinition', 'UserLabel'\n ].sort());\n assert.deepEqual(elem!.$meta.rowOptions, { classIdsToClassNames: true, useJsName: true });\n assert.equal(elem!.$meta.isIndirectChange, false);\n });\n\n it(\"txn1 insert-full | All_Properties | inMemoryCache vs sqliteBackedCache\", () => {\n const inMemoryInstances = readTxn(rwIModel, txnId);\n const sqliteBackedInstances = readTxn(rwIModel, txnId, undefined, undefined, undefined, false);\n assert.equal(inMemoryInstances.length, 3);\n assert.equal(sqliteBackedInstances.length, 3);\n\n // --- instances[0]: DrawingModel Updated New ---\n const inMemoryModelNew = inMemoryInstances.find((i) => i.ECInstanceId === drawingModelId && i.$meta.stage === \"New\");\n const sqliteBackedModelNew = sqliteBackedInstances.find((i) => i.ECInstanceId === drawingModelId && i.$meta.stage === \"New\");\n expect(inMemoryModelNew).to.exist;\n expect(sqliteBackedModelNew).to.exist;\n assert.equal(inMemoryModelNew!.ECInstanceId, sqliteBackedModelNew!.ECInstanceId);\n assert.equal(sqliteBackedModelNew!.ECClassId, inMemoryModelNew!.ECClassId);\n assert.equal(inMemoryModelNew!.LastMod, sqliteBackedModelNew!.LastMod);\n assert.equal(inMemoryModelNew!.GeometryGuid, sqliteBackedModelNew!.GeometryGuid);\n // Object.keys\n assert.deepEqual(Object.keys(inMemoryModelNew!).sort(), Object.keys(sqliteBackedModelNew!).sort());\n // $meta keys\n assert.deepEqual(Object.keys(inMemoryModelNew!.$meta).sort(), Object.keys(sqliteBackedModelNew!.$meta).sort());\n assert.equal(inMemoryModelNew!.$meta.op, sqliteBackedModelNew!.$meta.op);\n assert.equal(inMemoryModelNew!.$meta.stage, sqliteBackedModelNew!.$meta.stage);\n assert.deepEqual([...inMemoryModelNew!.$meta.tables].sort(), [...sqliteBackedModelNew!.$meta.tables].sort());\n assert.deepEqual([...inMemoryModelNew!.$meta.changeIndexes].sort(), [...sqliteBackedModelNew!.$meta.changeIndexes].sort());\n assert.isString(inMemoryModelNew!.$meta.instanceKey);\n assert.equal(inMemoryModelNew!.$meta.instanceKey.split(`-`).length, 2);\n assert.equal(inMemoryModelNew!.$meta.propFilter, sqliteBackedModelNew!.$meta.propFilter);\n assert.deepEqual([...inMemoryModelNew!.$meta.changeFetchedPropNames].sort(), [...sqliteBackedModelNew!.$meta.changeFetchedPropNames].sort());\n assert.deepEqual(inMemoryModelNew!.$meta.rowOptions, sqliteBackedModelNew!.$meta.rowOptions);\n assert.equal(inMemoryModelNew!.$meta.isIndirectChange, sqliteBackedModelNew!.$meta.isIndirectChange);\n\n // --- instances[1]: DrawingModel Updated Old ---\n const inMemoryModelOld = inMemoryInstances.find((i) => i.ECInstanceId === drawingModelId && i.$meta.stage === \"Old\");\n const sqliteBackedModelOld = sqliteBackedInstances.find((i) => i.ECInstanceId === drawingModelId && i.$meta.stage === \"Old\");\n expect(inMemoryModelOld).to.exist;\n expect(sqliteBackedModelOld).to.exist;\n assert.equal(inMemoryModelOld!.ECInstanceId, sqliteBackedModelOld!.ECInstanceId);\n assert.equal(sqliteBackedModelOld!.ECClassId, inMemoryModelOld!.ECClassId);\n // Object.keys\n assert.deepEqual(Object.keys(inMemoryModelOld!).sort(), Object.keys(sqliteBackedModelOld!).sort());\n // $meta keys\n assert.deepEqual(Object.keys(inMemoryModelOld!.$meta).sort(), Object.keys(sqliteBackedModelOld!.$meta).sort());\n assert.equal(inMemoryModelOld!.$meta.op, sqliteBackedModelOld!.$meta.op);\n assert.equal(inMemoryModelOld!.$meta.stage, sqliteBackedModelOld!.$meta.stage);\n assert.deepEqual([...inMemoryModelOld!.$meta.tables].sort(), [...sqliteBackedModelOld!.$meta.tables].sort());\n assert.equal(inMemoryModelOld!.$meta.propFilter, sqliteBackedModelOld!.$meta.propFilter);\n assert.deepEqual([...inMemoryModelOld!.$meta.changeFetchedPropNames].sort(), [...sqliteBackedModelOld!.$meta.changeFetchedPropNames].sort());\n assert.deepEqual(inMemoryModelOld!.$meta.rowOptions, sqliteBackedModelOld!.$meta.rowOptions);\n assert.equal(inMemoryModelOld!.$meta.isIndirectChange, sqliteBackedModelOld!.$meta.isIndirectChange);\n\n // --- instances[2]: Test2dElement Inserted New ---\n const inMemoryElem = inMemoryInstances.find((i) => i.ECInstanceId === fullElementId && i.$meta.stage === \"New\");\n const sqliteBackedElem = sqliteBackedInstances.find((i) => i.ECInstanceId === fullElementId && i.$meta.stage === \"New\");\n expect(inMemoryElem).to.exist;\n expect(sqliteBackedElem).to.exist;\n assert.equal(inMemoryElem!.ECInstanceId, sqliteBackedElem!.ECInstanceId);\n assert.equal(sqliteBackedElem!.ECClassId, inMemoryElem!.ECClassId);\n assert.equal(inMemoryElem!.Model.Id, sqliteBackedElem!.Model.Id);\n assert.equal(inMemoryElem!.Model.RelECClassId, sqliteBackedElem!.Model.RelECClassId);\n assert.equal(inMemoryElem!.LastMod, sqliteBackedElem!.LastMod);\n assert.equal(inMemoryElem!.CodeSpec.Id, sqliteBackedElem!.CodeSpec.Id);\n assert.equal(inMemoryElem!.CodeSpec.RelECClassId, sqliteBackedElem!.CodeSpec.RelECClassId);\n\n assert.equal(inMemoryElem!.CodeScope.Id, sqliteBackedElem!.CodeScope.Id);\n assert.equal(inMemoryElem!.CodeScope.RelECClassId, sqliteBackedElem!.CodeScope.RelECClassId);\n assert.equal(inMemoryElem!.FederationGuid, sqliteBackedElem!.FederationGuid);\n\n assert.equal(inMemoryElem!.Category.Id, sqliteBackedElem!.Category.Id);\n assert.equal(inMemoryElem!.Category.RelECClassId, sqliteBackedElem!.Category.RelECClassId);\n assert.deepEqual(inMemoryElem!.Origin, sqliteBackedElem!.Origin);\n assert.equal(inMemoryElem!.Rotation, sqliteBackedElem!.Rotation);\n assert.deepEqual(inMemoryElem!.BBoxLow, sqliteBackedElem!.BBoxLow);\n assert.deepEqual(inMemoryElem!.BBoxHigh, sqliteBackedElem!.BBoxHigh);\n assert.equal(inMemoryElem!.GeometryStream, sqliteBackedElem!.GeometryStream);\n assert.equal(inMemoryElem!.BinProp, sqliteBackedElem!.BinProp);\n assert.equal(inMemoryElem!.StrProp, sqliteBackedElem!.StrProp);\n assert.equal(inMemoryElem!.IntProp, sqliteBackedElem!.IntProp);\n assert.equal(inMemoryElem!.LongProp, sqliteBackedElem!.LongProp);\n assert.closeTo(inMemoryElem!.DblProp as number, sqliteBackedElem!.DblProp as number, 1e-10);\n assert.equal(inMemoryElem!.BoolProp, sqliteBackedElem!.BoolProp);\n assert.equal(inMemoryElem!.DtProp, sqliteBackedElem!.DtProp);\n assert.deepEqual(inMemoryElem!.Pt2dProp, sqliteBackedElem!.Pt2dProp);\n assert.deepEqual(inMemoryElem!.Pt3dProp, sqliteBackedElem!.Pt3dProp);\n assert.deepEqual(inMemoryElem!.StructProp, sqliteBackedElem!.StructProp);\n assert.deepEqual(inMemoryElem!.IntArrProp, sqliteBackedElem!.IntArrProp);\n assert.deepEqual(inMemoryElem!.StrArrProp, sqliteBackedElem!.StrArrProp);\n assert.deepEqual(inMemoryElem!.StructArrProp, sqliteBackedElem!.StructArrProp);\n assert.equal(inMemoryElem!.RelatedElem.Id, sqliteBackedElem!.RelatedElem.Id);\n assert.equal(inMemoryElem!.RelatedElem.RelECClassId, sqliteBackedElem!.RelatedElem.RelECClassId);\n // Object.keys\n assert.deepEqual(Object.keys(inMemoryElem!).sort(), Object.keys(sqliteBackedElem!).sort());\n // $meta keys\n assert.deepEqual(Object.keys(inMemoryElem!.$meta).sort(), Object.keys(sqliteBackedElem!.$meta).sort());\n assert.equal(inMemoryElem!.$meta.op, sqliteBackedElem!.$meta.op);\n assert.equal(inMemoryElem!.$meta.stage, sqliteBackedElem!.$meta.stage);\n assert.deepEqual([...inMemoryElem!.$meta.tables].sort(), [...sqliteBackedElem!.$meta.tables].sort());\n assert.deepEqual([...inMemoryElem!.$meta.changeIndexes].sort(), [...sqliteBackedElem!.$meta.changeIndexes].sort());\n assert.equal(inMemoryElem!.$meta.instanceKey, sqliteBackedElem!.$meta.instanceKey);\n assert.deepEqual([...inMemoryElem!.$meta.changeFetchedPropNames].sort(), [...sqliteBackedElem!.$meta.changeFetchedPropNames].sort());\n assert.deepEqual(inMemoryElem!.$meta.rowOptions, sqliteBackedElem!.$meta.rowOptions);\n assert.equal(inMemoryElem!.$meta.isIndirectChange, sqliteBackedElem!.$meta.isIndirectChange);\n });\n it(\"should throw error if tried to fetch changeset metadata values before stepping\", () => {\n using reader = ChangesetReader.openTxn({ db: rwIModel, txnId });\n expect(() => reader.isECTable).to.throw();\n expect(() => reader.isIndirectChange).to.throw();\n expect(() => reader.tableName).to.throw();\n expect(() => reader.op).to.throw();\n assert.isUndefined(reader.inserted);\n assert.isUndefined(reader.deleted);\n reader.close();\n });\n it(\"should throw error if tried to fetch changeset metadata values after stepping past the end\", () => {\n using reader = ChangesetReader.openTxn({ db: rwIModel, txnId });\n while (reader.step()) { }\n assert.equal(reader.step(), false);\n expect(() => reader.isECTable).to.throw();\n expect(() => reader.isIndirectChange).to.throw();\n expect(() => reader.tableName).to.throw();\n expect(() => reader.op).to.throw();\n assert.isUndefined(reader.inserted);\n assert.isUndefined(reader.deleted);\n reader.close();\n });\n\n it(\"Checking non unified values\", () => {\n using reader = ChangesetReader.openTxn({ db: rwIModel, txnId });\n\n assert.isTrue(reader.step());\n assert.isTrue(reader.isECTable);\n assert.isFalse(reader.isIndirectChange);\n assert.equal(reader.tableName, \"bis_Element\");\n assert.equal(reader.op, \"Inserted\");\n assert.isDefined(reader.inserted);\n assert.isUndefined(reader.deleted);\n\n assert.isTrue(reader.step());\n assert.isTrue(reader.isECTable);\n assert.isFalse(reader.isIndirectChange);\n assert.equal(reader.tableName, \"bis_GeometricElement2d\");\n assert.equal(reader.op, \"Inserted\");\n assert.isDefined(reader.inserted);\n assert.isUndefined(reader.deleted);\n\n assert.isTrue(reader.step());\n assert.isTrue(reader.isECTable);\n assert.isTrue(reader.isIndirectChange);\n assert.equal(reader.tableName, \"bis_Model\");\n assert.equal(reader.op, \"Updated\");\n assert.isDefined(reader.inserted);\n assert.isDefined(reader.deleted);\n\n assert.isFalse(reader.step());\n });\n});\n\ndescribe(\"ChangesetReader insert-partial\", () => {\n let rwIModel: BriefcaseDb;\n let partialElementId: Id64String;\n let drawingModelId: Id64String;\n let drawingCategoryId: Id64String;\n let txnId: string;\n let txn: EditTxn;\n\n before(async () => {\n HubMock.startup(\"ECChangesetInsertPartial\", KnownTestLocations.outputDir);\n const adminToken = \"super manager token\";\n const iTwinId = HubMock.iTwinId;\n const rwIModelId = await HubMock.createNewIModel({ iTwinId, iModelName: \"insertPartial\", description: \"insertPartial\", accessToken: adminToken });\n rwIModel = await HubWrappers.downloadAndOpenBriefcase({ iTwinId, iModelId: rwIModelId, accessToken: adminToken });\n txn = startTestTxn(rwIModel, \"ChangesetReader insert-partial\");\n // Txn 1: import schema + drawing model setup, then push\n const schema = `<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n <ECSchema schemaName=\"TestDomain\" alias=\"ts\" version=\"01.00\" xmlns=\"http://www.bentley.com/schemas/Bentley.ECXML.3.1\">\n <ECSchemaReference name=\"BisCore\" version=\"01.00\" alias=\"bis\"/>\n <!-- Rich struct: scalar fields + nested point2d/3d sub-properties -->\n <ECStructClass typeName=\"RichPoint\" modifier=\"Sealed\">\n <ECProperty propertyName=\"X\" typeName=\"double\"/>\n <ECProperty propertyName=\"Y\" typeName=\"double\"/>\n <ECProperty propertyName=\"Z\" typeName=\"double\"/>\n <ECProperty propertyName=\"Label\" typeName=\"string\"/>\n <ECProperty propertyName=\"Pt2d\" typeName=\"point2d\"/>\n <ECProperty propertyName=\"Pt3d\" typeName=\"point3d\"/>\n </ECStructClass>\n <!-- Relationship used by the RelatedElem navigation property -->\n <ECRelationshipClass typeName=\"Test2dUsesElement\" strength=\"referencing\" modifier=\"None\">\n <Source multiplicity=\"(0..*)\" roleLabel=\"uses\" polymorphic=\"true\"><Class class=\"Test2dElement\"/></Source>\n <Target multiplicity=\"(0..1)\" roleLabel=\"is used by\" polymorphic=\"true\"><Class class=\"bis:Element\"/></Target>\n </ECRelationshipClass>\n <ECEntityClass typeName=\"Test2dElement\">\n <BaseClass>bis:GraphicalElement2d</BaseClass>\n <!-- Primitives -->\n <ECProperty propertyName=\"StrProp\" typeName=\"string\"/>\n <ECProperty propertyName=\"IntProp\" typeName=\"int\"/>\n <ECProperty propertyName=\"LongProp\" typeName=\"long\"/>\n <ECProperty propertyName=\"DblProp\" typeName=\"double\"/>\n <ECProperty propertyName=\"BoolProp\" typeName=\"boolean\"/>\n <ECProperty propertyName=\"DtProp\" typeName=\"dateTime\"/>\n <ECProperty propertyName=\"BinProp\" typeName=\"binary\"/>\n <!-- Geometric primitives -->\n <ECProperty propertyName=\"Pt2dProp\" typeName=\"point2d\"/>\n <ECProperty propertyName=\"Pt3dProp\" typeName=\"point3d\"/>\n <!-- Struct, arrays -->\n <ECStructProperty propertyName=\"StructProp\" typeName=\"RichPoint\"/>\n <ECArrayProperty propertyName=\"IntArrProp\" typeName=\"int\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n <ECArrayProperty propertyName=\"StrArrProp\" typeName=\"string\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n <ECStructArrayProperty propertyName=\"StructArrProp\" typeName=\"RichPoint\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n <!-- Navigation property -->\n <ECNavigationProperty propertyName=\"RelatedElem\" relationshipName=\"Test2dUsesElement\" direction=\"forward\"/>\n </ECEntityClass>\n </ECSchema>`;\n await importSchemaStrings(txn, [schema]);\n rwIModel.channels.addAllowedChannel(ChannelControl.sharedChannelName);\n\n await rwIModel.locks.acquireLocks({ shared: IModel.dictionaryId });\n const codeProps = Code.createEmpty();\n codeProps.value = \"DrillDownDrawing\";\n [, drawingModelId] = IModelTestUtils.createAndInsertDrawingPartitionAndModel(txn, codeProps, true);\n\n const foundCat = DrawingCategory.queryCategoryIdByName(rwIModel, IModel.dictionaryId, \"DrillDownCategory\");\n drawingCategoryId = foundCat ?? DrawingCategory.insert(txn, IModel.dictionaryId, \"DrillDownCategory\",\n new SubCategoryAppearance({ color: ColorDef.fromString(\"rgb(255,0,0)\").toJSON() }));\n\n txn.saveChanges(\"setup\");\n\n // Wait so that LastMod on bis_Model gets a distinct timestamp before the insert txn\n await new Promise((resolve) => setTimeout(resolve, 300));\n // Txn 2: insert PARTIAL element only mandatory props\n await rwIModel.locks.acquireLocks({ shared: drawingModelId });\n partialElementId = txn.insertElement({\n classFullName: \"TestDomain:Test2dElement\",\n model: drawingModelId,\n category: drawingCategoryId,\n code: Code.createEmpty(),\n // StrProp, IntProp, LongProp, DblProp, BoolProp, DtProp, BinProp intentionally absent\n } as any);\n txn.saveChanges(\"insert partial element\");\n txnId = rwIModel.txns.getLastSavedTxnProps()!.id;\n });\n\n after(() => {\n txn.end();\n rwIModel?.close();\n HubMock.shutdown();\n });\n\n it(\"txn2 insert-partial | All_Properties | default rowOptions\", () => {\n const instances = readTxn(rwIModel, txnId);\n assert.equal(instances.length, 3);\n\n // --- instances[0]: DrawingModel Updated New ---\n const modelNew = instances.find((i) => i.ECInstanceId === drawingModelId && i.$meta.stage === \"New\");\n expect(modelNew).to.exist;\n assert.equal(modelNew!.ECInstanceId, drawingModelId);\n assert.equal(\"BisCore:DrawingModel\", rwIModel.getClassNameFromId(modelNew!.ECClassId));\n assert.isString(modelNew!.LastMod);\n assert.isString(modelNew!.GeometryGuid);\n assert.deepEqual(Object.keys(modelNew!).sort(), [\"ECInstanceId\", \"ECClassId\", \"LastMod\", \"GeometryGuid\", \"$meta\"].sort());\n assert.deepEqual(Object.keys(modelNew!.$meta).sort(), [\"op\", \"tables\", \"changeIndexes\", \"stage\", \"instanceKey\", \"propFilter\", \"changeFetchedPropNames\", \"rowOptions\", \"isIndirectChange\"].sort());\n assert.equal(modelNew!.$meta.op, \"Updated\");\n assert.equal(modelNew!.$meta.stage, \"New\");\n assert.equal(modelNew!.$meta.propFilter, PropertyFilter.All);\n assert.deepEqual([...modelNew!.$meta.changeFetchedPropNames].sort(), [\"ECInstanceId\", \"LastMod\", \"GeometryGuid\"].sort());\n assert.deepEqual(modelNew!.$meta.rowOptions, {});\n assert.equal(modelNew!.$meta.isIndirectChange, true);\n\n // --- instances[1]: DrawingModel Updated Old ---\n const modelOld = instances.find((i) => i.ECInstanceId === drawingModelId && i.$meta.stage === \"Old\");\n expect(modelOld).to.exist;\n assert.equal(modelOld!.ECInstanceId, drawingModelId);\n assert.equal(\"BisCore:DrawingModel\", rwIModel.getClassNameFromId(modelOld!.ECClassId));\n // Model Old has LastMod and GeometryGuid when previous txn's model New values survive\n assert.deepEqual(Object.keys(modelOld!).sort(), [\"ECInstanceId\", \"ECClassId\", \"$meta\"].sort());\n assert.deepEqual(Object.keys(modelOld!.$meta).sort(), [\"op\", \"tables\", \"changeIndexes\", \"stage\", \"instanceKey\", \"propFilter\", \"changeFetchedPropNames\", \"rowOptions\", \"isIndirectChange\"].sort());\n assert.equal(modelOld!.$meta.op, \"Updated\");\n assert.equal(modelOld!.$meta.stage, \"Old\");\n assert.equal(modelOld!.$meta.propFilter, PropertyFilter.All);\n assert.deepEqual([...modelOld!.$meta.changeFetchedPropNames].sort(), [\"ECInstanceId\", \"LastMod\", \"GeometryGuid\"].sort());\n assert.deepEqual(modelOld!.$meta.rowOptions, {});\n assert.equal(modelOld!.$meta.isIndirectChange, true);\n\n // --- instances[2]: Test2dElement (partial) Inserted New ---\n const elem = instances.find((i) => i.ECInstanceId === partialElementId && i.$meta.stage === \"New\");\n expect(elem).to.exist;\n assert.equal(elem!.ECInstanceId, partialElementId);\n assert.equal(\"TestDomain:Test2dElement\", rwIModel.getClassNameFromId(elem!.ECClassId));\n assert.equal(elem!.Model.Id, drawingModelId);\n assert.equal(rwIModel.getClassNameFromId(elem!.Model.RelECClassId), \"BisCore:ModelContainsElements\");\n assert.isString(elem!.LastMod);\n assert.equal(elem!.CodeSpec.Id, \"0x1\");\n assert.equal(rwIModel.getClassNameFromId(elem!.CodeSpec.RelECClassId), \"BisCore:CodeSpecSpecifiesCode\");\n\n assert.equal(elem!.CodeScope.Id, \"0x1\");\n assert.equal(rwIModel.getClassNameFromId(elem!.CodeScope.RelECClassId), \"BisCore:ElementScopesCode\");\n assert.isString(elem!.FederationGuid);\n assert.equal(elem!.Category.Id, drawingCategoryId);\n assert.equal(rwIModel.getClassNameFromId(elem!.Category.RelECClassId), \"BisCore:GeometricElement2dIsInCategory\");\n // No custom props on the partial element\n assert.isUndefined(elem!.StrProp);\n assert.isUndefined(elem!.IntProp);\n assert.isUndefined(elem!.LongProp);\n assert.isUndefined(elem!.DblProp);\n assert.isUndefined(elem!.BoolProp);\n assert.isUndefined(elem!.DtProp);\n assert.isUndefined(elem!.Pt2dProp);\n assert.isUndefined(elem!.Pt3dProp);\n assert.isUndefined(elem!.StructProp);\n assert.isUndefined(elem!.IntArrProp);\n assert.isUndefined(elem!.StrArrProp);\n assert.isUndefined(elem!.StructArrProp);\n assert.isUndefined(elem!.RelatedElem);\n assert.isUndefined(elem!.BinProp);\n // Object.keys — partial insert: only BIS columns present (no 2d geometry columns either)\n assert.deepEqual(Object.keys(elem!).sort(), [\n \"ECInstanceId\", \"ECClassId\", \"Model\", \"LastMod\", \"CodeSpec\", \"CodeScope\", \"FederationGuid\", \"$meta\",\n \"Category\",\n ].sort());\n // $meta keys\n assert.deepEqual(Object.keys(elem!.$meta).sort(), [\"op\", \"tables\", \"changeIndexes\", \"stage\", \"instanceKey\", \"propFilter\", \"changeFetchedPropNames\", \"rowOptions\", \"isIndirectChange\"].sort());\n assert.equal(elem!.$meta.op, \"Inserted\");\n assert.equal(elem!.$meta.stage, \"New\");\n assert.deepEqual([...elem!.$meta.tables].sort(), [\"bis_Element\", \"bis_GeometricElement2d\"].sort());\n assert.deepEqual([...elem!.$meta.changeIndexes].sort(), [1, 2].sort());\n assert.isString(elem!.$meta.instanceKey);\n assert.equal(elem!.$meta.instanceKey.split(`-`).length, 2);\n assert.equal(elem!.$meta.propFilter, PropertyFilter.All);\n assert.deepEqual([...elem!.$meta.changeFetchedPropNames].sort(), [\n 'ECInstanceId', 'ECClassId', 'Model.Id', 'LastMod', 'CodeSpec.Id',\n 'CodeScope.Id', 'CodeValue', 'UserLabel', 'Parent', 'FederationGuid',\n 'JsonProperties', 'Category.Id', 'Origin', 'Rotation', 'BBoxLow', 'BBoxHigh',\n 'GeometryStream', 'TypeDefinition', 'StrProp', 'IntProp', 'LongProp',\n 'DblProp', 'BoolProp', 'DtProp', 'BinProp', 'Pt2dProp', 'Pt3dProp',\n 'StructProp.X', 'StructProp.Y', 'StructProp.Z', 'StructProp.Label',\n 'StructProp.Pt2d', 'StructProp.Pt3d', 'IntArrProp', 'StrArrProp',\n 'StructArrProp', 'RelatedElem'\n ].sort());\n assert.deepEqual(elem!.$meta.rowOptions, {});\n assert.isUndefined(elem!.BinProp);\n assert.equal(elem!.$meta.isIndirectChange, false);\n\n });\n\n it(\"txn2 insert-partial | All_Properties | default rowOptions | invert\", () => {\n const instances = readTxn(rwIModel, txnId, undefined, undefined, true);\n assert.equal(instances.length, 3);\n\n // --- instances[0]: DrawingModel Updated New ---\n const modelNew = instances.find((i) => i.ECInstanceId === drawingModelId && i.$meta.stage === \"New\");\n expect(modelNew).to.exist;\n assert.equal(modelNew!.ECInstanceId, drawingModelId);\n assert.equal(\"BisCore:DrawingModel\", rwIModel.getClassNameFromId(modelNew!.ECClassId));\n assert.isUndefined(modelNew!.LastMod);\n assert.isUndefined(modelNew!.GeometryGuid);\n assert.deepEqual(Object.keys(modelNew!).sort(), [\"ECInstanceId\", \"ECClassId\", \"$meta\"].sort());\n assert.deepEqual(Object.keys(modelNew!.$meta).sort(), [\"op\", \"tables\", \"changeIndexes\", \"stage\", \"instanceKey\", \"propFilter\", \"changeFetchedPropNames\", \"rowOptions\", \"isIndirectChange\"].sort());\n assert.equal(modelNew!.$meta.op, \"Updated\");\n assert.equal(modelNew!.$meta.stage, \"New\");\n assert.equal(modelNew!.$meta.propFilter, PropertyFilter.All);\n assert.deepEqual([...modelNew!.$meta.changeFetchedPropNames].sort(), [\"ECInstanceId\", \"LastMod\", \"GeometryGuid\"].sort());\n assert.deepEqual(modelNew!.$meta.rowOptions, {});\n assert.equal(modelNew!.$meta.isIndirectChange, true);\n\n // --- instances[1]: DrawingModel Updated Old ---\n const modelOld = instances.find((i) => i.ECInstanceId === drawingModelId && i.$meta.stage === \"Old\");\n expect(modelOld).to.exist;\n assert.equal(modelOld!.ECInstanceId, drawingModelId);\n assert.equal(\"BisCore:DrawingModel\", rwIModel.getClassNameFromId(modelOld!.ECClassId));\n assert.isString(modelOld!.LastMod);\n assert.isString(modelOld!.GeometryGuid);\n // Model Old has LastMod and GeometryGuid when previous txn's model New values survive\n assert.deepEqual(Object.keys(modelOld!).sort(), [\"ECInstanceId\", \"ECClassId\", \"$meta\", \"LastMod\", \"GeometryGuid\"].sort());\n assert.deepEqual(Object.keys(modelOld!.$meta).sort(), [\"op\", \"tables\", \"changeIndexes\", \"stage\", \"instanceKey\", \"propFilter\", \"changeFetchedPropNames\", \"rowOptions\", \"isIndirectChange\"].sort());\n assert.equal(modelOld!.$meta.op, \"Updated\");\n assert.equal(modelOld!.$meta.stage, \"Old\");\n assert.equal(modelOld!.$meta.propFilter, PropertyFilter.All);\n assert.deepEqual([...modelOld!.$meta.changeFetchedPropNames].sort(), [\"ECInstanceId\", \"LastMod\", \"GeometryGuid\"].sort());\n assert.deepEqual(modelOld!.$meta.rowOptions, {});\n assert.equal(modelOld!.$meta.isIndirectChange, true);\n\n const elem = instances.find((i) => i.ECInstanceId === partialElementId && i.$meta.stage === \"Old\");\n expect(elem).to.exist;\n assert.equal(elem!.ECInstanceId, partialElementId);\n assert.equal(\"TestDomain:Test2dElement\", rwIModel.getClassNameFromId(elem!.ECClassId));\n assert.equal(elem!.Model.Id, drawingModelId);\n assert.equal(rwIModel.getClassNameFromId(elem!.Model.RelECClassId), \"BisCore:ModelContainsElements\");\n assert.isString(elem!.LastMod);\n assert.equal(elem!.CodeSpec.Id, \"0x1\");\n assert.equal(rwIModel.getClassNameFromId(elem!.CodeSpec.RelECClassId), \"BisCore:CodeSpecSpecifiesCode\");\n\n assert.equal(elem!.CodeScope.Id, \"0x1\");\n assert.equal(rwIModel.getClassNameFromId(elem!.CodeScope.RelECClassId), \"BisCore:ElementScopesCode\");\n assert.isString(elem!.FederationGuid);\n assert.equal(elem!.Category.Id, drawingCategoryId);\n assert.equal(rwIModel.getClassNameFromId(elem!.Category.RelECClassId), \"BisCore:GeometricElement2dIsInCategory\");\n // No custom props on the partial element\n assert.isUndefined(elem!.StrProp);\n assert.isUndefined(elem!.IntProp);\n assert.isUndefined(elem!.LongProp);\n assert.isUndefined(elem!.DblProp);\n assert.isUndefined(elem!.BoolProp);\n assert.isUndefined(elem!.DtProp);\n assert.isUndefined(elem!.Pt2dProp);\n assert.isUndefined(elem!.Pt3dProp);\n assert.isUndefined(elem!.StructProp);\n assert.isUndefined(elem!.IntArrProp);\n assert.isUndefined(elem!.StrArrProp);\n assert.isUndefined(elem!.StructArrProp);\n assert.isUndefined(elem!.RelatedElem);\n assert.isUndefined(elem!.BinProp);\n // Object.keys — partial insert: only BIS columns present (no 2d geometry columns either)\n assert.deepEqual(Object.keys(elem!).sort(), [\n \"ECInstanceId\", \"ECClassId\", \"Model\", \"LastMod\", \"CodeSpec\", \"CodeScope\", \"FederationGuid\", \"$meta\",\n \"Category\",\n ].sort());\n // $meta keys\n assert.deepEqual(Object.keys(elem!.$meta).sort(), [\"op\", \"tables\", \"changeIndexes\", \"stage\", \"instanceKey\", \"propFilter\", \"changeFetchedPropNames\", \"rowOptions\", \"isIndirectChange\"].sort());\n assert.equal(elem!.$meta.op, \"Deleted\");\n assert.equal(elem!.$meta.stage, \"Old\");\n assert.deepEqual([...elem!.$meta.tables].sort(), [\"bis_Element\", \"bis_GeometricElement2d\"].sort());\n assert.deepEqual([...elem!.$meta.changeIndexes].sort(), [1, 2].sort());\n assert.isString(elem!.$meta.instanceKey);\n assert.equal(elem!.$meta.instanceKey.split(`-`).length, 2);\n assert.equal(elem!.$meta.propFilter, PropertyFilter.All);\n assert.deepEqual([...elem!.$meta.changeFetchedPropNames].sort(), [\n 'ECInstanceId', 'ECClassId', 'Model.Id', 'LastMod', 'CodeSpec.Id',\n 'CodeScope.Id', 'CodeValue', 'UserLabel', 'Parent', 'FederationGuid',\n 'JsonProperties', 'Category.Id', 'Origin', 'Rotation', 'BBoxLow', 'BBoxHigh',\n 'GeometryStream', 'TypeDefinition', 'StrProp', 'IntProp', 'LongProp',\n 'DblProp', 'BoolProp', 'DtProp', 'BinProp', 'Pt2dProp', 'Pt3dProp',\n 'StructProp.X', 'StructProp.Y', 'StructProp.Z', 'StructProp.Label',\n 'StructProp.Pt2d', 'StructProp.Pt3d', 'IntArrProp', 'StrArrProp',\n 'StructArrProp', 'RelatedElem'\n ].sort());\n assert.deepEqual(elem!.$meta.rowOptions, {});\n assert.isUndefined(elem!.BinProp);\n assert.equal(elem!.$meta.isIndirectChange, false);\n\n });\n\n it(\"txn2 insert-partial | Bis_Element_Properties\", () => {\n const instances = readTxn(rwIModel, txnId, PropertyFilter.BisCoreElement, { classIdsToClassNames: true });\n assert.equal(instances.length, 3);\n\n // --- instances[0]: DrawingModel Updated New ---\n const modelNew = instances.find((i) => i.ECInstanceId === drawingModelId && i.$meta.stage === \"New\");\n expect(modelNew).to.exist;\n assert.equal(modelNew!.ECInstanceId, drawingModelId);\n assert.equal(modelNew!.ECClassId, \"BisCore.DrawingModel\");\n assert.isString(modelNew!.LastMod);\n assert.isString(modelNew!.GeometryGuid);\n assert.deepEqual(Object.keys(modelNew!).sort(), [\"ECInstanceId\", \"ECClassId\", \"LastMod\", \"GeometryGuid\", \"$meta\"].sort());\n assert.deepEqual(Object.keys(modelNew!.$meta).sort(), [\"op\", \"tables\", \"changeIndexes\", \"stage\", \"instanceKey\", \"propFilter\", \"changeFetchedPropNames\", \"rowOptions\", \"isIndirectChange\"].sort());\n assert.equal(modelNew!.$meta.op, \"Updated\");\n assert.equal(modelNew!.$meta.stage, \"New\");\n assert.equal(modelNew!.$meta.propFilter, PropertyFilter.BisCoreElement);\n assert.deepEqual([...modelNew!.$meta.changeFetchedPropNames].sort(), [\"ECInstanceId\", \"LastMod\", \"GeometryGuid\"].sort());\n assert.deepEqual(modelNew!.$meta.rowOptions, { classIdsToClassNames: true });\n assert.equal(modelNew!.$meta.isIndirectChange, true);\n\n // --- instances[1]: DrawingModel Updated Old ---\n const modelOld = instances.find((i) => i.ECInstanceId === drawingModelId && i.$meta.stage === \"Old\");\n expect(modelOld).to.exist;\n assert.equal(modelOld!.ECInstanceId, drawingModelId);\n assert.equal(\"BisCore.DrawingModel\", modelOld!.ECClassId);\n assert.deepEqual(Object.keys(modelOld!).sort(), [\"ECInstanceId\", \"ECClassId\", \"$meta\"].sort());\n assert.deepEqual(Object.keys(modelOld!.$meta).sort(), [\"op\", \"tables\", \"changeIndexes\", \"stage\", \"instanceKey\", \"propFilter\", \"changeFetchedPropNames\", \"rowOptions\", \"isIndirectChange\"].sort());\n assert.equal(modelOld!.$meta.op, \"Updated\");\n assert.equal(modelOld!.$meta.stage, \"Old\");\n assert.equal(modelOld!.$meta.propFilter, PropertyFilter.BisCoreElement);\n assert.deepEqual([...modelOld!.$meta.changeFetchedPropNames].sort(), [\"ECInstanceId\", \"LastMod\", \"GeometryGuid\"].sort());\n assert.deepEqual(modelOld!.$meta.rowOptions, { classIdsToClassNames: true });\n assert.equal(modelOld!.$meta.isIndirectChange, true);\n\n // --- instances[2]: Test2dElement (partial) Inserted New ---\n const elem = instances.find((i) => i.ECInstanceId === partialElementId && i.$meta.stage === \"New\");\n expect(elem).to.exist;\n assert.equal(elem!.ECInstanceId, partialElementId);\n assert.equal(elem!.ECClassId, \"TestDomain.Test2dElement\");\n assert.isUndefined(elem!.StrProp);\n assert.isUndefined(elem!.IntProp);\n expect(elem!.Model).to.exist;\n expect(elem!.LastMod).to.exist;\n expect(elem!.CodeSpec).to.exist;\n expect(elem!.CodeScope).to.exist;\n expect(elem!.FederationGuid).to.exist;\n assert.deepEqual(Object.keys(elem!).sort(), [\"ECInstanceId\", \"ECClassId\", \"Model\", \"LastMod\", \"CodeSpec\", \"CodeScope\", \"FederationGuid\", \"$meta\"].sort());\n assert.deepEqual(Object.keys(elem!.$meta).sort(), [\"op\", \"tables\", \"changeIndexes\", \"stage\", \"instanceKey\", \"propFilter\", \"changeFetchedPropNames\", \"rowOptions\", \"isIndirectChange\"].sort());\n assert.equal(elem!.$meta.op, \"Inserted\");\n assert.equal(elem!.$meta.stage, \"New\");\n assert.deepEqual([...elem!.$meta.tables].sort(), [\"bis_Element\", \"bis_GeometricElement2d\"].sort());\n assert.deepEqual([...elem!.$meta.changeIndexes].sort(), [1, 2].sort());\n assert.isString(elem!.$meta.instanceKey);\n assert.equal(elem!.$meta.instanceKey.split(`-`).length, 2);\n assert.equal(elem!.$meta.propFilter, PropertyFilter.BisCoreElement);\n assert.deepEqual([...elem!.$meta.changeFetchedPropNames].sort(), [\"ECInstanceId\", \"ECClassId\", \"CodeScope.Id\",\n \"CodeSpec.Id\", \"CodeValue\", \"FederationGuid\", \"JsonProperties\", \"LastMod\", \"Model.Id\", \"Parent\", \"UserLabel\"].sort());\n assert.deepEqual(elem!.$meta.rowOptions, { classIdsToClassNames: true });\n assert.equal(elem!.$meta.isIndirectChange, false);\n });\n\n it(\"txn2 insert-partial | Instance_Key\", () => {\n const instances = readTxn(rwIModel, txnId, PropertyFilter.InstanceKey);\n assert.equal(instances.length, 3);\n\n // --- instances[0]: DrawingModel Updated New ---\n const modelNew = instances.find((i) => i.ECInstanceId === drawingModelId && i.$meta.stage === \"New\");\n expect(modelNew).to.exist;\n assert.equal(modelNew!.ECInstanceId, drawingModelId);\n assert.equal(\"BisCore:DrawingModel\", rwIModel.getClassNameFromId(modelNew!.ECClassId));\n assert.deepEqual(Object.keys(modelNew!).sort(), [\"ECInstanceId\", \"ECClassId\", \"$meta\"].sort());\n assert.deepEqual(Object.keys(modelNew!.$meta).sort(), [\"op\", \"tables\", \"changeIndexes\", \"stage\", \"instanceKey\", \"propFilter\", \"changeFetchedPropNames\", \"rowOptions\", \"isIndirectChange\"].sort());\n assert.equal(modelNew!.$meta.op, \"Updated\");\n assert.equal(modelNew!.$meta.stage, \"New\");\n assert.equal(modelNew!.$meta.propFilter, PropertyFilter.InstanceKey);\n assert.deepEqual([...modelNew!.$meta.changeFetchedPropNames].sort(), [\"ECInstanceId\"].sort());\n assert.deepEqual(modelNew!.$meta.rowOptions, {});\n assert.equal(modelNew!.$meta.isIndirectChange, true);\n\n // --- instances[1]: DrawingModel Updated Old ---\n const modelOld = instances.find((i) => i.ECInstanceId === drawingModelId && i.$meta.stage === \"Old\");\n expect(modelOld).to.exist;\n assert.equal(modelOld!.ECInstanceId, drawingModelId);\n assert.equal(\"BisCore:DrawingModel\", rwIModel.getClassNameFromId(modelOld!.ECClassId));\n assert.deepEqual(Object.keys(modelOld!).sort(), [\"ECInstanceId\", \"ECClassId\", \"$meta\"].sort());\n assert.deepEqual(Object.keys(modelOld!.$meta).sort(), [\"op\", \"tables\", \"changeIndexes\", \"stage\", \"instanceKey\", \"propFilter\", \"changeFetchedPropNames\", \"rowOptions\", \"isIndirectChange\"].sort());\n assert.equal(modelOld!.$meta.op, \"Updated\");\n assert.equal(modelOld!.$meta.stage, \"Old\");\n assert.equal(modelOld!.$meta.propFilter, PropertyFilter.InstanceKey);\n assert.deepEqual([...modelOld!.$meta.changeFetchedPropNames].sort(), [\"ECInstanceId\"].sort());\n assert.deepEqual(modelOld!.$meta.rowOptions, {});\n assert.equal(modelOld!.$meta.isIndirectChange, true);\n\n // --- instances[2]: Test2dElement (partial) Inserted New ---\n const elem = instances.find((i) => i.ECInstanceId === partialElementId && i.$meta.stage === \"New\");\n expect(elem).to.exist;\n assert.equal(elem!.ECInstanceId, partialElementId);\n assert.equal(\"TestDomain:Test2dElement\", rwIModel.getClassNameFromId(elem!.ECClassId));\n assert.isUndefined(elem!.StrProp);\n assert.isUndefined(elem!.Model);\n assert.isUndefined(elem!.LastMod);\n assert.deepEqual(Object.keys(elem!).sort(), [\"ECInstanceId\", \"ECClassId\", \"$meta\"].sort());\n assert.deepEqual(Object.keys(elem!.$meta).sort(), [\"op\", \"tables\", \"changeIndexes\", \"stage\", \"instanceKey\", \"propFilter\", \"changeFetchedPropNames\", \"rowOptions\", \"isIndirectChange\"].sort());\n assert.equal(elem!.$meta.op, \"Inserted\");\n assert.equal(elem!.$meta.stage, \"New\");\n assert.deepEqual([...elem!.$meta.tables].sort(), [\"bis_Element\", \"bis_GeometricElement2d\"].sort());\n assert.deepEqual([...elem!.$meta.changeIndexes].sort(), [1, 2].sort());\n assert.isString(elem!.$meta.instanceKey);\n assert.equal(elem!.$meta.instanceKey.split(`-`).length, 2);\n assert.equal(elem!.$meta.propFilter, PropertyFilter.InstanceKey);\n assert.deepEqual([...elem!.$meta.changeFetchedPropNames].sort(), [\"ECInstanceId\", \"ECClassId\"].sort());\n assert.deepEqual(elem!.$meta.rowOptions, {});\n assert.equal(elem!.$meta.isIndirectChange, false);\n });\n\n it(\"txn2 insert-partial | rowOptions: classIdsToClassNames\", () => {\n const instances = readTxn(rwIModel, txnId, undefined, { classIdsToClassNames: true });\n assert.equal(instances.length, 3);\n\n const modelNew = instances.find((i) => i.ECInstanceId === drawingModelId && i.$meta.stage === \"New\");\n expect(modelNew).to.exist;\n assert.equal(modelNew!.ECClassId, \"BisCore.DrawingModel\");\n assert.deepEqual(modelNew!.$meta.rowOptions, { classIdsToClassNames: true });\n\n const modelOld = instances.find((i) => i.ECInstanceId === drawingModelId && i.$meta.stage === \"Old\");\n expect(modelOld).to.exist;\n assert.equal(modelOld!.ECClassId, \"BisCore.DrawingModel\");\n assert.deepEqual(modelOld!.$meta.rowOptions, { classIdsToClassNames: true });\n\n const elem = instances.find((i) => i.ECInstanceId === partialElementId && i.$meta.stage === \"New\");\n expect(elem).to.exist;\n assert.equal(elem!.ECClassId, \"TestDomain.Test2dElement\");\n assert.deepEqual(elem!.Model, { Id: drawingModelId, RelECClassId: \"BisCore.ModelContainsElements\" });\n assert.deepEqual(elem!.CodeSpec, { Id: \"0x1\", RelECClassId: \"BisCore.CodeSpecSpecifiesCode\" });\n assert.deepEqual(elem!.CodeScope, { Id: \"0x1\", RelECClassId: \"BisCore.ElementScopesCode\" });\n assert.deepEqual(elem!.Category, { Id: drawingCategoryId, RelECClassId: \"BisCore.GeometricElement2dIsInCategory\" });\n assert.isUndefined(elem!.StrProp);\n assert.deepEqual(Object.keys(elem!).sort(), [\n \"ECInstanceId\", \"ECClassId\", \"Model\", \"LastMod\", \"CodeSpec\", \"CodeScope\", \"FederationGuid\", \"$meta\", \"Category\",\n ].sort());\n assert.equal(elem!.$meta.op, \"Inserted\");\n assert.equal(elem!.$meta.propFilter, PropertyFilter.All);\n assert.deepEqual(elem!.$meta.rowOptions, { classIdsToClassNames: true });\n });\n\n it(\"txn2 insert-partial | rowOptions: useJsName\", () => {\n const instances = readTxn(rwIModel, txnId, undefined, { useJsName: true });\n assert.equal(instances.length, 3);\n\n const modelNew = instances.find((i) => i.id === drawingModelId && i.$meta.stage === \"New\");\n expect(modelNew).to.exist;\n assert.equal(modelNew!.className, \"BisCore.DrawingModel\");\n assert.isUndefined(modelNew!.ECInstanceId);\n assert.deepEqual(modelNew!.$meta.rowOptions, { useJsName: true });\n\n const modelOld = instances.find((i) => i.id === drawingModelId && i.$meta.stage === \"Old\");\n expect(modelOld).to.exist;\n assert.equal(modelOld!.className, \"BisCore.DrawingModel\");\n assert.deepEqual(modelOld!.$meta.rowOptions, { useJsName: true });\n\n const elem = instances.find((i) => i.id === partialElementId && i.$meta.stage === \"New\");\n expect(elem).to.exist;\n assert.equal(elem!.className, \"TestDomain.Test2dElement\");\n assert.isUndefined(elem!.ECInstanceId);\n assert.isUndefined(elem!.ECClassId);\n assert.deepEqual(elem!.model, { id: drawingModelId, relClassName: \"BisCore.ModelContainsElements\" });\n assert.deepEqual(elem!.codeSpec, { id: \"0x1\", relClassName: \"BisCore.CodeSpecSpecifiesCode\" });\n assert.deepEqual(elem!.codeScope, { id: \"0x1\", relClassName: \"BisCore.ElementScopesCode\" });\n assert.deepEqual(elem!.category, { id: drawingCategoryId, relClassName: \"BisCore.GeometricElement2dIsInCategory\" });\n assert.isUndefined(elem!.strProp);\n assert.deepEqual(Object.keys(elem!).sort(), [\n \"id\", \"className\", \"model\", \"lastMod\", \"codeSpec\", \"codeScope\", \"federationGuid\", \"$meta\", \"category\",\n ].sort());\n assert.equal(elem!.$meta.op, \"Inserted\");\n assert.equal(elem!.$meta.propFilter, PropertyFilter.All);\n assert.deepEqual(elem!.$meta.rowOptions, { useJsName: true });\n });\n\n it(\"txn2 insert-partial | rowOptions: abbreviateBlobs\", () => {\n const instances = readTxn(rwIModel, txnId, undefined, { abbreviateBlobs: true });\n assert.equal(instances.length, 3);\n\n const modelNew = instances.find((i) => i.ECInstanceId === drawingModelId && i.$meta.stage === \"New\");\n expect(modelNew).to.exist;\n assert.equal(\"BisCore:DrawingModel\", rwIModel.getClassNameFromId(modelNew!.ECClassId));\n assert.deepEqual(modelNew!.$meta.rowOptions, { abbreviateBlobs: true });\n\n const modelOld = instances.find((i) => i.ECInstanceId === drawingModelId && i.$meta.stage === \"Old\");\n expect(modelOld).to.exist;\n assert.equal(\"BisCore:DrawingModel\", rwIModel.getClassNameFromId(modelOld!.ECClassId));\n assert.deepEqual(modelOld!.$meta.rowOptions, { abbreviateBlobs: true });\n\n // Partial element has no blob props; ECClassId stays as raw hex\n const elem = instances.find((i) => i.ECInstanceId === partialElementId && i.$meta.stage === \"New\");\n expect(elem).to.exist;\n assert.equal(\"TestDomain:Test2dElement\", rwIModel.getClassNameFromId(elem!.ECClassId));\n assert.equal(elem!.Model.Id, drawingModelId);\n assert.equal(rwIModel.getClassNameFromId(elem!.Model.RelECClassId), \"BisCore:ModelContainsElements\");\n assert.isUndefined(elem!.StrProp);\n assert.deepEqual(Object.keys(elem!).sort(), [\n \"ECInstanceId\", \"ECClassId\", \"Model\", \"LastMod\", \"CodeSpec\", \"CodeScope\", \"FederationGuid\", \"$meta\", \"Category\",\n ].sort());\n assert.equal(elem!.$meta.op, \"Inserted\");\n assert.equal(elem!.$meta.propFilter, PropertyFilter.All);\n assert.deepEqual(elem!.$meta.rowOptions, { abbreviateBlobs: true });\n });\n\n it(\"txn2 insert-partial | rowOptions: classIdsToClassNames + useJsName\", () => {\n const instances = readTxn(rwIModel, txnId, undefined, { classIdsToClassNames: true, useJsName: true });\n assert.equal(instances.length, 3);\n\n const modelNew = instances.find((i) => i.id === drawingModelId && i.$meta.stage === \"New\");\n expect(modelNew).to.exist;\n assert.equal(modelNew!.className, \"BisCore.DrawingModel\");\n assert.isUndefined(modelNew!.ECInstanceId);\n assert.deepEqual(modelNew!.$meta.rowOptions, { classIdsToClassNames: true, useJsName: true });\n\n const modelOld = instances.find((i) => i.id === drawingModelId && i.$meta.stage === \"Old\");\n expect(modelOld).to.exist;\n assert.equal(modelOld!.className, \"BisCore.DrawingModel\");\n assert.deepEqual(modelOld!.$meta.rowOptions, { classIdsToClassNames: true, useJsName: true });\n\n const elem = instances.find((i) => i.id === partialElementId && i.$meta.stage === \"New\");\n expect(elem).to.exist;\n assert.equal(elem!.className, \"TestDomain.Test2dElement\");\n assert.isUndefined(elem!.ECInstanceId);\n assert.deepEqual(elem!.model, { id: drawingModelId, relClassName: \"BisCore.ModelContainsElements\" });\n assert.deepEqual(elem!.codeSpec, { id: \"0x1\", relClassName: \"BisCore.CodeSpecSpecifiesCode\" });\n assert.deepEqual(elem!.codeScope, { id: \"0x1\", relClassName: \"BisCore.ElementScopesCode\" });\n assert.deepEqual(elem!.category, { id: drawingCategoryId, relClassName: \"BisCore.GeometricElement2dIsInCategory\" });\n assert.isUndefined(elem!.strProp);\n assert.deepEqual(Object.keys(elem!).sort(), [\n \"id\", \"className\", \"model\", \"lastMod\", \"codeSpec\", \"codeScope\", \"federationGuid\", \"$meta\", \"category\",\n ].sort());\n assert.equal(elem!.$meta.op, \"Inserted\");\n assert.equal(elem!.$meta.propFilter, PropertyFilter.All);\n assert.deepEqual(elem!.$meta.rowOptions, { classIdsToClassNames: true, useJsName: true });\n });\n it(\"should throw error if tried to fetch changeset metadata values before stepping\", () => {\n using reader = ChangesetReader.openTxn({ db: rwIModel, txnId });\n expect(() => reader.isECTable).to.throw();\n expect(() => reader.isIndirectChange).to.throw();\n expect(() => reader.tableName).to.throw();\n expect(() => reader.op).to.throw();\n assert.isUndefined(reader.inserted);\n assert.isUndefined(reader.deleted);\n reader.close();\n });\n it(\"should throw error if tried to fetch changeset metadata values after stepping past the end\", () => {\n using reader = ChangesetReader.openTxn({ db: rwIModel, txnId });\n while (reader.step()) { }\n assert.equal(reader.step(), false);\n expect(() => reader.isECTable).to.throw();\n expect(() => reader.isIndirectChange).to.throw();\n expect(() => reader.tableName).to.throw();\n expect(() => reader.op).to.throw();\n assert.isUndefined(reader.inserted);\n assert.isUndefined(reader.deleted);\n reader.close();\n });\n\n});\n\n\ndescribe(\"ChangesetReader update-full\", () => {\n let rwIModel: BriefcaseDb;\n let fullElementId: Id64String;\n let partialElementId: Id64String;\n let drawingModelId: Id64String;\n let drawingCategoryId: Id64String;\n let txnId: string;\n let txn: EditTxn;\n\n before(async () => {\n HubMock.startup(\"ECChangesetUpdateFull\", KnownTestLocations.outputDir);\n const adminToken = \"super manager token\";\n const iTwinId = HubMock.iTwinId;\n const rwIModelId = await HubMock.createNewIModel({ iTwinId, iModelName: \"updateFull\", description: \"updateFull\", accessToken: adminToken });\n rwIModel = await HubWrappers.downloadAndOpenBriefcase({ iTwinId, iModelId: rwIModelId, accessToken: adminToken });\n txn = startTestTxn(rwIModel, \"ChangesetReader update-full setup\");\n // Txn 1: import schema + drawing model setup, then push\n const schema = `<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n <ECSchema schemaName=\"TestDomain\" alias=\"ts\" version=\"01.00\" xmlns=\"http://www.bentley.com/schemas/Bentley.ECXML.3.1\">\n <ECSchemaReference name=\"BisCore\" version=\"01.00\" alias=\"bis\"/>\n <!-- Rich struct: scalar fields + nested point2d/3d sub-properties -->\n <ECStructClass typeName=\"RichPoint\" modifier=\"Sealed\">\n <ECProperty propertyName=\"X\" typeName=\"double\"/>\n <ECProperty propertyName=\"Y\" typeName=\"double\"/>\n <ECProperty propertyName=\"Z\" typeName=\"double\"/>\n <ECProperty propertyName=\"Label\" typeName=\"string\"/>\n <ECProperty propertyName=\"Pt2d\" typeName=\"point2d\"/>\n <ECProperty propertyName=\"Pt3d\" typeName=\"point3d\"/>\n </ECStructClass>\n <!-- Relationship used by the RelatedElem navigation property -->\n <ECRelationshipClass typeName=\"Test2dUsesElement\" strength=\"referencing\" modifier=\"None\">\n <Source multiplicity=\"(0..*)\" roleLabel=\"uses\" polymorphic=\"true\"><Class class=\"Test2dElement\"/></Source>\n <Target multiplicity=\"(0..1)\" roleLabel=\"is used by\" polymorphic=\"true\"><Class class=\"bis:Element\"/></Target>\n </ECRelationshipClass>\n <ECEntityClass typeName=\"Test2dElement\">\n <BaseClass>bis:GraphicalElement2d</BaseClass>\n <!-- Primitives -->\n <ECProperty propertyName=\"StrProp\" typeName=\"string\"/>\n <ECProperty propertyName=\"IntProp\" typeName=\"int\"/>\n <ECProperty propertyName=\"LongProp\" typeName=\"long\"/>\n <ECProperty propertyName=\"DblProp\" typeName=\"double\"/>\n <ECProperty propertyName=\"BoolProp\" typeName=\"boolean\"/>\n <ECProperty propertyName=\"DtProp\" typeName=\"dateTime\"/>\n <ECProperty propertyName=\"BinProp\" typeName=\"binary\"/>\n <!-- Geometric primitives -->\n <ECProperty propertyName=\"Pt2dProp\" typeName=\"point2d\"/>\n <ECProperty propertyName=\"Pt3dProp\" typeName=\"point3d\"/>\n <!-- Struct, arrays -->\n <ECStructProperty propertyName=\"StructProp\" typeName=\"RichPoint\"/>\n <ECArrayProperty propertyName=\"IntArrProp\" typeName=\"int\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n <ECArrayProperty propertyName=\"StrArrProp\" typeName=\"string\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n <ECStructArrayProperty propertyName=\"StructArrProp\" typeName=\"RichPoint\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n <!-- Navigation property -->\n <ECNavigationProperty propertyName=\"RelatedElem\" relationshipName=\"Test2dUsesElement\" direction=\"forward\"/>\n </ECEntityClass>\n </ECSchema>`;\n await importSchemaStrings(txn, [schema]);\n rwIModel.channels.addAllowedChannel(ChannelControl.sharedChannelName);\n\n await rwIModel.locks.acquireLocks({ shared: IModel.dictionaryId });\n const codeProps = Code.createEmpty();\n codeProps.value = \"DrillDownDrawing\";\n [, drawingModelId] = IModelTestUtils.createAndInsertDrawingPartitionAndModel(txn, codeProps, true);\n\n const foundCat = DrawingCategory.queryCategoryIdByName(rwIModel, IModel.dictionaryId, \"DrillDownCategory\");\n drawingCategoryId = foundCat ?? DrawingCategory.insert(txn, IModel.dictionaryId, \"DrillDownCategory\",\n new SubCategoryAppearance({ color: ColorDef.fromString(\"rgb(255,0,0)\").toJSON() }));\n\n txn.saveChanges(\"setup\");\n\n // Wait so that LastMod on bis_Model gets a distinct timestamp before the full insert txn\n await new Promise((resolve) => setTimeout(resolve, 300));\n // Txn 2: insert FULL element (needed as update target)\n await rwIModel.locks.acquireLocks({ shared: drawingModelId });\n const geom: GeometryStreamProps = [\n Arc3d.createXY(Point3d.create(0, 0), 5),\n Arc3d.createXY(Point3d.create(5, 5), 2),\n Arc3d.createXY(Point3d.create(-5, -5), 20),\n ].map((a) => IModelJson.Writer.toIModelJson(a));\n\n fullElementId = txn.insertElement({\n classFullName: \"TestDomain:Test2dElement\",\n model: drawingModelId,\n category: drawingCategoryId,\n code: Code.createEmpty(),\n geom,\n StrProp: \"hello\",\n IntProp: 42,\n LongProp: 9_007_199_254_740_991, // Number.MAX_SAFE_INTEGER\n DblProp: 3.14159265358979,\n BoolProp: true,\n DtProp: \"2024-01-15T12:00:00.000\",\n BinProp: new Uint8Array([1, 2, 3, 5]),\n Pt2dProp: { x: 1.5, y: 2.5 },\n Pt3dProp: { x: 3.0, y: 4.0, z: 5.0 },\n StructProp: {\n X: 1.0, Y: 2.0, Z: 3.0, Label: \"origin\",\n Pt2d: { x: 0.5, y: 0.5 },\n Pt3d: { x: 1.0, y: 2.0, z: 3.0 },\n },\n IntArrProp: [10, 20, 30],\n StrArrProp: [\"alpha\", \"beta\", \"gamma\"],\n StructArrProp: [\n { X: 0.0, Y: 1.0, Z: 2.0, Label: \"a\", Pt2d: { x: 0.0, y: 0.0 }, Pt3d: { x: 0.0, y: 0.0, z: 0.0 } },\n { X: 3.0, Y: 4.0, Z: 5.0, Label: \"b\", Pt2d: { x: 1.0, y: 1.0 }, Pt3d: { x: 1.0, y: 1.0, z: 1.0 } },\n ],\n RelatedElem: { id: drawingCategoryId, relClassName: \"TestDomain:Test2dUsesElement\" },\n } as any);\n txn.saveChanges(\"insert full element\");\n txnId = rwIModel.txns.getLastSavedTxnProps()!.id;\n\n // Wait so that LastMod on bis_Model gets a distinct timestamp before the partial insert txn\n await new Promise((resolve) => setTimeout(resolve, 300));\n // Txn 3: insert PARTIAL element (needed as RelatedElem target in the update)\n partialElementId = txn.insertElement({\n classFullName: \"TestDomain:Test2dElement\",\n model: drawingModelId,\n category: drawingCategoryId,\n code: Code.createEmpty(),\n // StrProp, IntProp, LongProp, DblProp, BoolProp, DtProp, BinProp intentionally absent\n } as any);\n txn.saveChanges(\"insert partial element\");\n txnId = rwIModel.txns.getLastSavedTxnProps()!.id;\n\n // Wait so that LastMod on bis_Model gets a distinct timestamp before the update txn\n await new Promise((resolve) => setTimeout(resolve, 300));\n // Txn 4: update FULL element this is the txn under test\n // Txn 3: update FULL element — change several property types\n await rwIModel.locks.acquireLocks({ exclusive: fullElementId });\n txn.updateElement({\n ...rwIModel.elements.getElementProps(fullElementId),\n StrProp: \"updated\",\n IntProp: 99,\n LongProp: 0,\n DblProp: 2.71828182845904,\n BoolProp: false,\n DtProp: \"2025-06-01T08:30:00.000\",\n BinProp: new Uint8Array([10, 20, 30, 40, 50]),\n Pt2dProp: { x: 9.0, y: 8.0 },\n Pt3dProp: { x: 7.0, y: 6.0, z: 5.0 },\n StructProp: {\n X: 9.0, Y: 8.0, Z: 7.0, Label: \"updated-origin\",\n Pt2d: { x: 9.5, y: 8.5 },\n Pt3d: { x: 9.0, y: 8.0, z: 7.0 },\n },\n IntArrProp: [100, 200],\n StrArrProp: [\"delta\", \"epsilon\"],\n StructArrProp: [\n { X: 5.0, Y: 6.0, Z: 7.0, Label: \"c\", Pt2d: { x: 5.0, y: 5.0 }, Pt3d: { x: 5.0, y: 5.0, z: 5.0 } },\n { X: 7.0, Y: 8.0, Z: 9.0, Label: \"d\", Pt2d: { x: 7.0, y: 7.0 }, Pt3d: { x: 7.0, y: 7.0, z: 7.0 } },\n { X: 9.0, Y: 10.0, Z: 11.0, Label: \"e\", Pt2d: { x: 9.0, y: 9.0 }, Pt3d: { x: 9.0, y: 9.0, z: 9.0 } },\n ],\n RelatedElem: { id: partialElementId, relClassName: \"TestDomain:Test2dUsesElement\" },\n });\n txn.saveChanges(\"update full element\");\n txnId = rwIModel.txns.getLastSavedTxnProps()!.id;\n });\n\n after(() => {\n txn.end();\n rwIModel?.close();\n HubMock.shutdown();\n });\n\n it(\"txn3 update-full | All_Properties | default rowOptions\", () => {\n const instances = readTxn(rwIModel, txnId, undefined, undefined, undefined, false);\n assert.equal(instances.length, 4);\n\n // --- instances[0]: DrawingModel Updated New ---\n const modelNew = instances.find((i) => i.ECInstanceId === drawingModelId && i.$meta.stage === \"New\");\n assert.equal(modelNew!.ECInstanceId, drawingModelId);\n assert.equal(\"BisCore:DrawingModel\", rwIModel.getClassNameFromId(modelNew!.ECClassId));\n assert.isString(modelNew!.LastMod);\n assert.isUndefined(modelNew!.GeometryGuid); // no GeometryGuid in update txn model row\n assert.deepEqual(Object.keys(modelNew!).sort(), [\"ECInstanceId\", \"ECClassId\", \"LastMod\", \"$meta\"].sort());\n assert.deepEqual(Object.keys(modelNew!.$meta).sort(), [\"op\", \"tables\", \"changeIndexes\", \"stage\", \"instanceKey\", \"propFilter\", \"changeFetchedPropNames\", \"rowOptions\", \"isIndirectChange\"].sort());\n assert.equal(modelNew!.$meta.op, \"Updated\");\n assert.equal(modelNew!.$meta.stage, \"New\");\n assert.equal(modelNew!.$meta.propFilter, PropertyFilter.All);\n assert.deepEqual([...modelNew!.$meta.changeFetchedPropNames].sort(), [\"ECInstanceId\", \"LastMod\"].sort());\n assert.deepEqual(modelNew!.$meta.rowOptions, {});\n assert.equal(modelNew!.$meta.isIndirectChange, true);\n\n // --- instances[1]: DrawingModel Updated Old ---\n const modelOld = instances.find((i) => i.ECInstanceId === drawingModelId && i.$meta.stage === \"Old\");\n assert.equal(modelOld!.ECInstanceId, drawingModelId);\n assert.equal(\"BisCore:DrawingModel\", rwIModel.getClassNameFromId(modelOld!.ECClassId));\n assert.isString(modelOld!.LastMod);\n assert.deepEqual(Object.keys(modelOld!).sort(), [\"ECInstanceId\", \"ECClassId\", \"LastMod\", \"$meta\"].sort());\n assert.deepEqual(Object.keys(modelOld!.$meta).sort(), [\"op\", \"tables\", \"changeIndexes\", \"stage\", \"instanceKey\", \"propFilter\", \"changeFetchedPropNames\", \"rowOptions\", \"isIndirectChange\"].sort());\n assert.equal(modelOld!.$meta.op, \"Updated\");\n assert.equal(modelOld!.$meta.stage, \"Old\");\n assert.equal(modelOld!.$meta.propFilter, PropertyFilter.All);\n assert.deepEqual([...modelOld!.$meta.changeFetchedPropNames].sort(), [\"ECInstanceId\", \"LastMod\"].sort());\n assert.deepEqual(modelOld!.$meta.rowOptions, {});\n assert.equal(modelOld!.$meta.isIndirectChange, true);\n\n // --- instances[2]: Test2dElement Updated New ---\n const elemNew = instances.find((i) => i.ECInstanceId === fullElementId && i.$meta.stage === \"New\");\n expect(elemNew).to.exist;\n assert.equal(elemNew!.ECInstanceId, fullElementId);\n assert.equal(elemNew!.ECClassId, \"0x176\");\n assert.equal(elemNew!.StrProp, \"updated\");\n assert.equal(elemNew!.IntProp, 99);\n assert.equal(elemNew!.LongProp, 0);\n assert.include(String(elemNew!.BinProp), \"\\\"bytes\\\"\");\n assert.closeTo(elemNew!.DblProp as number, 2.71828182845904, 1e-10);\n assert.equal(elemNew!.BoolProp, false);\n assert.equal(elemNew!.DtProp, \"2025-06-01T08:30:00.000\");\n assert.deepEqual(elemNew!.Pt2dProp, { X: 9, Y: 8 });\n assert.deepEqual(elemNew!.Pt3dProp, { X: 7, Y: 6, Z: 5 });\n assert.deepEqual(elemNew!.StructProp, { X: 9, Y: 8, Z: 7, Label: \"updated-origin\", Pt2d: { X: 9.5, Y: 8.5 }, Pt3d: { X: 9, Y: 8, Z: 7 } });\n assert.deepEqual(elemNew!.IntArrProp, [100, 200]);\n assert.deepEqual(elemNew!.StrArrProp, [\"delta\", \"epsilon\"]);\n assert.deepEqual(elemNew!.StructArrProp, [\n { X: 5, Y: 6, Z: 7, Label: \"c\", Pt2d: { X: 5, Y: 5 }, Pt3d: { X: 5, Y: 5, Z: 5 } },\n { X: 7, Y: 8, Z: 9, Label: \"d\", Pt2d: { X: 7, Y: 7 }, Pt3d: { X: 7, Y: 7, Z: 7 } },\n { X: 9, Y: 10, Z: 11, Label: \"e\", Pt2d: { X: 9, Y: 9 }, Pt3d: { X: 9, Y: 9, Z: 9 } },\n ]);\n assert.equal(elemNew!.RelatedElem.Id, partialElementId);\n assert.equal(rwIModel.getClassNameFromId(elemNew!.RelatedElem.RelECClassId), \"TestDomain:Test2dUsesElement\");\n assert.isString(elemNew!.LastMod);\n // Object.keys — update row: custom-prop columns first, then $meta and LastMod at the end\n assert.deepEqual(Object.keys(elemNew!).sort(), [\n \"ECInstanceId\", \"ECClassId\",\n \"StrProp\", \"IntProp\", \"LongProp\", \"DblProp\", \"BoolProp\", \"DtProp\",\n \"Pt2dProp\", \"Pt3dProp\", \"StructProp\", \"IntArrProp\", \"StrArrProp\", \"StructArrProp\", \"RelatedElem\",\n \"$meta\", \"LastMod\", \"BinProp\"\n ].sort());\n assert.deepEqual(Object.keys(elemNew!.$meta).sort(), [\"op\", \"tables\", \"changeIndexes\", \"stage\", \"instanceKey\", \"propFilter\", \"changeFetchedPropNames\", \"rowOptions\", \"isIndirectChange\"].sort());\n assert.equal(elemNew!.$meta.op, \"Updated\");\n assert.equal(elemNew!.$meta.stage, \"New\");\n assert.deepEqual([...elemNew!.$meta.tables].sort(), [\"bis_GeometricElement2d\", \"bis_Element\"].sort());\n assert.deepEqual([...elemNew!.$meta.changeIndexes].sort(), [1, 2].sort());\n assert.isString(elemNew!.$meta.instanceKey);\n assert.equal(elemNew!.$meta.instanceKey.split(`-`).length, 2);\n assert.equal(elemNew!.$meta.propFilter, PropertyFilter.All);\n assert.deepEqual([...elemNew!.$meta.changeFetchedPropNames].sort(), [\n \"BoolProp\", \"DblProp\", \"DtProp\", \"ECInstanceId\", \"IntArrProp\", \"IntProp\", \"LastMod\",\n \"LongProp\", \"Pt2dProp\", \"Pt3dProp.X\", \"Pt3dProp.Y\", \"RelatedElem.Id\", \"StrArrProp\",\n \"StrProp\", \"StructArrProp\", \"StructProp.Label\", \"StructProp.Pt2d\", \"StructProp.Pt3d\", \"StructProp.X\",\n \"StructProp.Y\", \"StructProp.Z\", \"BinProp\"\n ].sort());\n assert.deepEqual(elemNew!.$meta.rowOptions, {});\n assert.equal(elemNew!.$meta.isIndirectChange, false);\n\n // --- instances[3]: Test2dElement Updated Old ---\n const elemOld = instances.find((i) => i.ECInstanceId === fullElementId && i.$meta.stage === \"Old\");\n expect(elemOld).to.exist;\n assert.equal(elemOld!.ECInstanceId, fullElementId);\n assert.equal(elemOld!.ECClassId, \"0x176\");\n assert.equal(elemOld!.StrProp, \"hello\");\n assert.equal(elemOld!.IntProp, 42);\n assert.equal(elemOld!.LongProp, 9007199254740991);\n assert.closeTo(elemOld!.DblProp as number, 3.14159265358979, 1e-10);\n assert.equal(elemOld!.BoolProp, true);\n assert.include(String(elemOld!.BinProp), \"\\\"bytes\\\"\");\n assert.equal(elemOld!.DtProp, \"2024-01-15T12:00:00.000\");\n assert.deepEqual(elemOld!.Pt2dProp, { X: 1.5, Y: 2.5 });\n assert.deepEqual(elemOld!.Pt3dProp, { X: 3, Y: 4, Z: 5 });\n assert.deepEqual(elemOld!.StructProp, { X: 1, Y: 2, Z: 3, Label: \"origin\", Pt2d: { X: 0.5, Y: 0.5 }, Pt3d: { X: 1, Y: 2, Z: 3 } });\n assert.deepEqual(elemOld!.IntArrProp, [10, 20, 30]);\n assert.deepEqual(elemOld!.StrArrProp, [\"alpha\", \"beta\", \"gamma\"]);\n assert.deepEqual(elemOld!.StructArrProp, [\n { X: 0, Y: 1, Z: 2, Label: \"a\", Pt2d: { X: 0, Y: 0 }, Pt3d: { X: 0, Y: 0, Z: 0 } },\n { X: 3, Y: 4, Z: 5, Label: \"b\", Pt2d: { X: 1, Y: 1 }, Pt3d: { X: 1, Y: 1, Z: 1 } },\n ]);\n assert.equal(elemOld!.RelatedElem.Id, drawingCategoryId);\n assert.equal(rwIModel.getClassNameFromId(elemOld!.RelatedElem.RelECClassId), \"TestDomain:Test2dUsesElement\");\n assert.isString(elemOld!.LastMod);\n assert.deepEqual(Object.keys(elemOld!).sort(), [\n \"ECInstanceId\", \"ECClassId\",\n \"StrProp\", \"IntProp\", \"LongProp\", \"DblProp\", \"BoolProp\", \"DtProp\",\n \"Pt2dProp\", \"Pt3dProp\", \"StructProp\", \"IntArrProp\", \"StrArrProp\", \"StructArrProp\", \"RelatedElem\",\n \"$meta\", \"LastMod\", \"BinProp\"\n ].sort());\n assert.deepEqual(Object.keys(elemOld!.$meta).sort(), [\"op\", \"tables\", \"changeIndexes\", \"stage\", \"instanceKey\", \"propFilter\", \"changeFetchedPropNames\", \"rowOptions\", \"isIndirectChange\"].sort());\n assert.equal(elemOld!.$meta.op, \"Updated\");\n assert.equal(elemOld!.$meta.stage, \"Old\");\n assert.deepEqual([...elemOld!.$meta.tables].sort(), [\"bis_GeometricElement2d\", \"bis_Element\"].sort());\n assert.equal(elemOld!.$meta.propFilter, PropertyFilter.All);\n assert.deepEqual([...elemOld!.$meta.changeFetchedPropNames].sort(), [\n \"BoolProp\", \"DblProp\", \"DtProp\", \"ECInstanceId\", \"IntArrProp\", \"IntProp\", \"LastMod\",\n \"LongProp\", \"Pt2dProp\", \"Pt3dProp.X\", \"Pt3dProp.Y\", \"RelatedElem.Id\", \"StrArrProp\",\n \"StrProp\", \"StructArrProp\", \"StructProp.Label\", \"StructProp.Pt2d\", \"StructProp.Pt3d\", \"StructProp.X\",\n \"StructProp.Y\", \"StructProp.Z\", \"BinProp\"\n ].sort());\n assert.deepEqual(elemOld!.$meta.rowOptions, {});\n assert.equal(elemOld!.$meta.isIndirectChange, false);\n });\n\n it(\"txn3 update-full | Bis_Element_Properties\", () => {\n const instances = readTxn(rwIModel, txnId, PropertyFilter.BisCoreElement, { classIdsToClassNames: true }, undefined, false);\n assert.equal(instances.length, 4);\n\n // --- instances[0]: DrawingModel Updated New ---\n const modelNew = instances.find((i) => i.ECInstanceId === drawingModelId && i.$meta.stage === \"New\");\n expect(modelNew).to.exist;\n assert.equal(modelNew!.ECInstanceId, drawingModelId);\n assert.equal(modelNew!.ECClassId, \"BisCore.DrawingModel\");\n assert.isString(modelNew!.LastMod);\n assert.deepEqual(Object.keys(modelNew!).sort(), [\"ECInstanceId\", \"ECClassId\", \"LastMod\", \"$meta\"].sort());\n assert.deepEqual(Object.keys(modelNew!.$meta).sort(), [\"op\", \"tables\", \"changeIndexes\", \"stage\", \"instanceKey\", \"propFilter\", \"changeFetchedPropNames\", \"rowOptions\", \"isIndirectChange\"].sort());\n assert.equal(modelNew!.$meta.op, \"Updated\");\n assert.equal(modelNew!.$meta.stage, \"New\");\n assert.equal(modelNew!.$meta.propFilter, PropertyFilter.BisCoreElement);\n assert.deepEqual([...modelNew!.$meta.changeFetchedPropNames].sort(), [\"ECInstanceId\", \"LastMod\"].sort());\n assert.deepEqual(modelNew!.$meta.rowOptions, { classIdsToClassNames: true });\n assert.equal(modelNew!.$meta.isIndirectChange, true);\n\n // --- instances[1]: DrawingModel Updated Old ---\n const modelOld = instances.find((i) => i.ECInstanceId === drawingModelId && i.$meta.stage === \"Old\");\n expect(modelOld).to.exist;\n assert.equal(modelOld!.ECInstanceId, drawingModelId);\n assert.equal(modelOld!.ECClassId, \"BisCore.DrawingModel\");\n assert.isString(modelOld!.LastMod);\n assert.deepEqual(Object.keys(modelOld!).sort(), [\"ECInstanceId\", \"ECClassId\", \"LastMod\", \"$meta\"].sort());\n assert.deepEqual(Object.keys(modelOld!.$meta).sort(), [\"op\", \"tables\", \"changeIndexes\", \"stage\", \"instanceKey\", \"propFilter\", \"changeFetchedPropNames\", \"rowOptions\", \"isIndirectChange\"].sort());\n assert.equal(modelOld!.$meta.op, \"Updated\");\n assert.equal(modelOld!.$meta.stage, \"Old\");\n assert.equal(modelOld!.$meta.propFilter, PropertyFilter.BisCoreElement);\n assert.deepEqual([...modelOld!.$meta.changeFetchedPropNames].sort(), [\"ECInstanceId\", \"LastMod\"].sort());\n assert.deepEqual(modelOld!.$meta.rowOptions, { classIdsToClassNames: true });\n assert.equal(modelOld!.$meta.isIndirectChange, true);\n\n // --- instances[2]: Test2dElement Updated New (no custom props) ---\n const elemNew = instances.find((i) => i.ECInstanceId === fullElementId && i.$meta.stage === \"New\");\n expect(elemNew).to.exist;\n assert.equal(elemNew!.ECInstanceId, fullElementId);\n assert.equal(elemNew!.ECClassId, \"TestDomain.Test2dElement\");\n assert.isUndefined(elemNew!.StrProp);\n assert.isUndefined(elemNew!.IntProp);\n assert.isUndefined(elemNew!.Model);\n assert.isUndefined(elemNew!.Category);\n expect(elemNew!.LastMod).to.exist;\n assert.deepEqual(Object.keys(elemNew!).sort(), [\"ECInstanceId\", \"ECClassId\", \"$meta\", \"LastMod\"].sort());\n assert.deepEqual(Object.keys(elemNew!.$meta).sort(), [\"op\", \"tables\", \"changeIndexes\", \"stage\", \"instanceKey\", \"propFilter\", \"changeFetchedPropNames\", \"rowOptions\", \"isIndirectChange\"].sort());\n assert.equal(elemNew!.$meta.op, \"Updated\");\n assert.equal(elemNew!.$meta.stage, \"New\");\n assert.deepEqual([...elemNew!.$meta.tables].sort(), [\"bis_GeometricElement2d\", \"bis_Element\"].sort());\n assert.deepEqual([...elemNew!.$meta.changeIndexes].sort(), [1, 2].sort());\n assert.isString(elemNew!.$meta.instanceKey);\n assert.equal(elemNew!.$meta.instanceKey.split(`-`).length, 2);\n assert.equal(elemNew!.$meta.propFilter, PropertyFilter.BisCoreElement);\n\n assert.deepEqual([...elemNew!.$meta.changeFetchedPropNames].sort(), [\"ECInstanceId\", \"LastMod\"].sort());\n assert.deepEqual(elemNew!.$meta.rowOptions, { classIdsToClassNames: true });\n assert.equal(elemNew!.$meta.isIndirectChange, false);\n\n // --- instances[3]: Test2dElement Updated Old ---\n const elemOld = instances.find((i) => i.ECInstanceId === fullElementId && i.$meta.stage === \"Old\");\n expect(elemOld).to.exist;\n assert.equal(elemOld!.ECInstanceId, fullElementId);\n assert.equal(elemOld!.ECClassId, \"TestDomain.Test2dElement\");\n assert.isUndefined(elemOld!.StrProp);\n assert.isUndefined(elemOld!.IntProp);\n assert.isUndefined(elemOld!.Model);\n assert.deepEqual(Object.keys(elemOld!).sort(), [\"ECInstanceId\", \"ECClassId\", \"$meta\", \"LastMod\"].sort());\n assert.deepEqual(Object.keys(elemOld!.$meta).sort(), [\"op\", \"tables\", \"changeIndexes\", \"stage\", \"instanceKey\", \"propFilter\", \"changeFetchedPropNames\", \"rowOptions\", \"isIndirectChange\"].sort());\n assert.equal(elemOld!.$meta.op, \"Updated\");\n assert.equal(elemOld!.$meta.stage, \"Old\");\n assert.deepEqual([...elemOld!.$meta.tables].sort(), [\"bis_GeometricElement2d\", \"bis_Element\"].sort());\n assert.equal(elemOld!.$meta.propFilter, PropertyFilter.BisCoreElement);\n assert.deepEqual([...elemOld!.$meta.changeFetchedPropNames].sort(), [\"ECInstanceId\", \"LastMod\"].sort());\n assert.deepEqual(elemOld!.$meta.rowOptions, { classIdsToClassNames: true });\n assert.equal(elemOld!.$meta.isIndirectChange, false);\n });\n\n it(\"txn3 update-full | Instance_Key\", () => {\n const instances = readTxn(rwIModel, txnId, PropertyFilter.InstanceKey, undefined, undefined, false);\n assert.equal(instances.length, 4);\n\n // --- instances[0]: DrawingModel Updated New ---\n const modelNew = instances.find((i) => i.ECInstanceId === drawingModelId && i.$meta.stage === \"New\");\n expect(modelNew).to.exist;\n assert.equal(modelNew!.ECInstanceId, drawingModelId);\n assert.equal(\"BisCore:DrawingModel\", rwIModel.getClassNameFromId(modelNew!.ECClassId));\n assert.deepEqual(Object.keys(modelNew!).sort(), [\"ECInstanceId\", \"ECClassId\", \"$meta\"].sort());\n assert.deepEqual(Object.keys(modelNew!.$meta).sort(), [\"op\", \"tables\", \"changeIndexes\", \"stage\", \"instanceKey\", \"propFilter\", \"changeFetchedPropNames\", \"rowOptions\", \"isIndirectChange\"].sort());\n assert.equal(modelNew!.$meta.op, \"Updated\");\n assert.equal(modelNew!.$meta.stage, \"New\");\n assert.equal(modelNew!.$meta.propFilter, PropertyFilter.InstanceKey);\n assert.deepEqual([...modelNew!.$meta.changeFetchedPropNames].sort(), [\"ECInstanceId\"].sort());\n assert.deepEqual(modelNew!.$meta.rowOptions, {});\n assert.equal(modelNew!.$meta.isIndirectChange, true);\n\n // --- instances[1]: DrawingModel Updated Old ---\n const modelOld = instances.find((i) => i.ECInstanceId === drawingModelId && i.$meta.stage === \"Old\");\n expect(modelOld).to.exist;\n assert.equal(modelOld!.ECInstanceId, drawingModelId);\n assert.equal(\"BisCore:DrawingModel\", rwIModel.getClassNameFromId(modelOld!.ECClassId));\n assert.deepEqual(Object.keys(modelOld!).sort(), [\"ECInstanceId\", \"ECClassId\", \"$meta\"].sort());\n assert.deepEqual(Object.keys(modelOld!.$meta).sort(), [\"op\", \"tables\", \"changeIndexes\", \"stage\", \"instanceKey\", \"propFilter\", \"changeFetchedPropNames\", \"rowOptions\", \"isIndirectChange\"].sort());\n assert.equal(modelOld!.$meta.op, \"Updated\");\n assert.equal(modelOld!.$meta.stage, \"Old\");\n assert.equal(modelOld!.$meta.propFilter, PropertyFilter.InstanceKey);\n assert.deepEqual([...modelOld!.$meta.changeFetchedPropNames].sort(), [\"ECInstanceId\"].sort());\n assert.deepEqual(modelOld!.$meta.rowOptions, {});\n assert.equal(modelOld!.$meta.isIndirectChange, true);\n\n // --- instances[2]: Test2dElement Updated New ---\n const elemNew = instances.find((i) => i.ECInstanceId === fullElementId && i.$meta.stage === \"New\");\n expect(elemNew).to.exist;\n assert.equal(elemNew!.ECInstanceId, fullElementId);\n assert.equal(elemNew!.ECClassId, \"0x176\");\n assert.isUndefined(elemNew!.StrProp);\n assert.isUndefined(elemNew!.Model);\n assert.isUndefined(elemNew!.LastMod);\n assert.deepEqual(Object.keys(elemNew!).sort(), [\"ECInstanceId\", \"ECClassId\", \"$meta\"].sort());\n assert.deepEqual(Object.keys(elemNew!.$meta).sort(), [\"op\", \"tables\", \"changeIndexes\", \"stage\", \"instanceKey\", \"propFilter\", \"changeFetchedPropNames\", \"rowOptions\", \"isIndirectChange\"].sort());\n assert.equal(elemNew!.$meta.op, \"Updated\");\n assert.equal(elemNew!.$meta.stage, \"New\");\n assert.deepEqual([...elemNew!.$meta.tables].sort(), [\"bis_GeometricElement2d\", \"bis_Element\"].sort());\n assert.deepEqual([...elemNew!.$meta.changeIndexes].sort(), [1, 2].sort());\n assert.isString(elemNew!.$meta.instanceKey);\n assert.equal(elemNew!.$meta.instanceKey.split(`-`).length, 2);\n assert.equal(elemNew!.$meta.propFilter, PropertyFilter.InstanceKey);\n assert.deepEqual([...elemNew!.$meta.changeFetchedPropNames].sort(), [\"ECInstanceId\"].sort());\n assert.deepEqual(elemNew!.$meta.rowOptions, {});\n assert.equal(elemNew!.$meta.isIndirectChange, false);\n\n // --- instances[3]: Test2dElement Updated Old ---\n const elemOld = instances.find((i) => i.ECInstanceId === fullElementId && i.$meta.stage === \"Old\");\n expect(elemOld).to.exist;\n assert.equal(elemOld!.ECInstanceId, fullElementId);\n assert.equal(elemOld!.ECClassId, \"0x176\");\n assert.isUndefined(elemOld!.StrProp);\n assert.isUndefined(elemOld!.Model);\n assert.deepEqual(Object.keys(elemOld!).sort(), [\"ECInstanceId\", \"ECClassId\", \"$meta\"].sort());\n assert.deepEqual(Object.keys(elemOld!.$meta).sort(), [\"op\", \"tables\", \"changeIndexes\", \"stage\", \"instanceKey\", \"propFilter\", \"changeFetchedPropNames\", \"rowOptions\", \"isIndirectChange\"].sort());\n assert.equal(elemOld!.$meta.op, \"Updated\");\n assert.equal(elemOld!.$meta.stage, \"Old\");\n assert.deepEqual([...elemOld!.$meta.tables].sort(), [\"bis_GeometricElement2d\", \"bis_Element\"].sort());\n assert.equal(elemOld!.$meta.propFilter, PropertyFilter.InstanceKey);\n assert.deepEqual([...elemOld!.$meta.changeFetchedPropNames].sort(), [\"ECInstanceId\"].sort());\n assert.deepEqual(elemOld!.$meta.rowOptions, {});\n assert.equal(elemOld!.$meta.isIndirectChange, false);\n });\n\n it(\"txn3 update-full | rowOptions: useJsName\", () => {\n const instances = readTxn(rwIModel, txnId, undefined, { useJsName: true }, undefined, false);\n assert.equal(instances.length, 4);\n\n const modelNew = instances.find((i) => i.id === drawingModelId && i.$meta.stage === \"New\");\n expect(modelNew).to.exist;\n assert.equal(modelNew!.className, \"BisCore.DrawingModel\");\n assert.isUndefined(modelNew!.ECInstanceId);\n assert.deepEqual(modelNew!.$meta.rowOptions, { useJsName: true });\n\n const modelOld = instances.find((i) => i.id === drawingModelId && i.$meta.stage === \"Old\");\n expect(modelOld).to.exist;\n assert.equal(modelOld!.className, \"BisCore.DrawingModel\");\n assert.deepEqual(modelOld!.$meta.rowOptions, { useJsName: true });\n\n const elemNew = instances.find((i) => i.id === fullElementId && i.$meta.stage === \"New\");\n expect(elemNew).to.exist;\n assert.equal(elemNew!.className, \"TestDomain.Test2dElement\");\n assert.isUndefined(elemNew!.ECInstanceId);\n assert.equal(elemNew!.strProp, \"updated\");\n assert.equal(elemNew!.intProp, 99);\n assert.include(String(elemNew!.binProp), \"\\\"bytes\\\"\");\n assert.deepEqual(elemNew!.pt2dProp, { x: 9, y: 8 });\n assert.deepEqual(elemNew!.pt3dProp, { x: 7, y: 6, z: 5 });\n assert.deepEqual(elemNew!.relatedElem, { id: partialElementId, relClassName: \"TestDomain.Test2dUsesElement\" });\n assert.equal(elemNew!.$meta.op, \"Updated\");\n assert.equal(elemNew!.$meta.propFilter, PropertyFilter.All);\n assert.deepEqual(elemNew!.$meta.rowOptions, { useJsName: true });\n assert.deepEqual(Object.keys(elemNew!).sort(), [\"$meta\", \"binProp\", \"boolProp\", \"className\",\n \"dblProp\", \"dtProp\", \"id\", \"intArrProp\", \"intProp\", \"lastMod\", \"longProp\", \"pt2dProp\",\n \"pt3dProp\", \"relatedElem\", \"strArrProp\", \"strProp\", \"structArrProp\", \"structProp\"].sort());\n assert.deepEqual([...elemNew!.$meta.changeFetchedPropNames].sort(), [\"BinProp\", \"BoolProp\",\n \"DblProp\", \"DtProp\", \"ECInstanceId\", \"IntArrProp\", \"IntProp\", \"LastMod\",\n \"LongProp\", \"Pt2dProp\", \"Pt3dProp.X\", \"Pt3dProp.Y\", \"RelatedElem.Id\", \"StrArrProp\", \"StrProp\",\n \"StructArrProp\", \"StructProp.Label\", \"StructProp.Pt2d\", \"StructProp.Pt3d\", \"StructProp.X\",\n \"StructProp.Y\", \"StructProp.Z\"].sort());\n\n const elemOld = instances.find((i) => i.id === fullElementId && i.$meta.stage === \"Old\");\n expect(elemOld).to.exist;\n assert.equal(elemOld!.className, \"TestDomain.Test2dElement\");\n assert.isUndefined(elemOld!.ECInstanceId);\n assert.equal(elemOld!.strProp, \"hello\");\n assert.include(String(elemOld!.binProp), \"\\\"bytes\\\"\");\n assert.equal(elemOld!.intProp, 42);\n assert.deepEqual(elemOld!.relatedElem, { id: drawingCategoryId, relClassName: \"TestDomain.Test2dUsesElement\" });\n assert.deepEqual(elemOld!.$meta.rowOptions, { useJsName: true });\n assert.deepEqual(Object.keys(elemOld!).sort(), [\"$meta\", \"binProp\", \"boolProp\", \"className\",\n \"dblProp\", \"dtProp\", \"id\", \"intArrProp\", \"intProp\", \"lastMod\", \"longProp\", \"pt2dProp\",\n \"pt3dProp\", \"relatedElem\", \"strArrProp\", \"strProp\", \"structArrProp\", \"structProp\"].sort());\n assert.deepEqual([...elemOld!.$meta.changeFetchedPropNames].sort(), [\"BinProp\", \"BoolProp\",\n \"DblProp\", \"DtProp\", \"ECInstanceId\", \"IntArrProp\", \"IntProp\", \"LastMod\",\n \"LongProp\", \"Pt2dProp\", \"Pt3dProp.X\", \"Pt3dProp.Y\", \"RelatedElem.Id\", \"StrArrProp\", \"StrProp\",\n \"StructArrProp\", \"StructProp.Label\", \"StructProp.Pt2d\", \"StructProp.Pt3d\", \"StructProp.X\",\n \"StructProp.Y\", \"StructProp.Z\"].sort());\n });\n\n it(\"txn3 update-full | rowOptions: abbreviateBlobs\", () => {\n const instances = readTxn(rwIModel, txnId, undefined, { abbreviateBlobs: true }, undefined, false);\n assert.equal(instances.length, 4);\n\n const modelNew = instances.find((i) => i.ECInstanceId === drawingModelId && i.$meta.stage === \"New\");\n expect(modelNew).to.exist;\n assert.equal(\"BisCore:DrawingModel\", rwIModel.getClassNameFromId(modelNew!.ECClassId));\n assert.deepEqual(modelNew!.$meta.rowOptions, { abbreviateBlobs: true });\n\n const modelOld = instances.find((i) => i.ECInstanceId === drawingModelId && i.$meta.stage === \"Old\");\n expect(modelOld).to.exist;\n assert.equal(\"BisCore:DrawingModel\", rwIModel.getClassNameFromId(modelOld!.ECClassId));\n assert.deepEqual(modelOld!.$meta.rowOptions, { abbreviateBlobs: true });\n\n const elemNew = instances.find((i) => i.ECInstanceId === fullElementId && i.$meta.stage === \"New\");\n expect(elemNew).to.exist;\n assert.equal(\"TestDomain:Test2dElement\", rwIModel.getClassNameFromId(elemNew!.ECClassId));\n assert.equal(elemNew!.StrProp, \"updated\");\n // BinProp is a blob should be abbreviated to { bytes: N }\n assert.include(String(elemNew!.BinProp), \"bytes\");\n assert.equal(elemNew!.$meta.op, \"Updated\");\n assert.deepEqual(elemNew!.$meta.rowOptions, { abbreviateBlobs: true });\n assert.deepEqual(Object.keys(elemNew!).sort(), [\"$meta\", \"BinProp\", \"BoolProp\",\n \"DblProp\", \"DtProp\", \"IntArrProp\", \"IntProp\", \"LastMod\", \"LongProp\",\n \"Pt2dProp\", \"Pt3dProp\", \"RelatedElem\", \"StrArrProp\", \"StrProp\", \"StructArrProp\", \"StructProp\", \"ECClassId\", \"ECInstanceId\"].sort());\n assert.deepEqual([...elemNew!.$meta.changeFetchedPropNames].sort(), [\"BinProp\", \"BoolProp\",\n \"DblProp\", \"DtProp\", \"ECInstanceId\", \"IntArrProp\", \"IntProp\", \"LastMod\",\n \"LongProp\", \"Pt2dProp\", \"Pt3dProp.X\", \"Pt3dProp.Y\", \"RelatedElem.Id\", \"StrArrProp\", \"StrProp\",\n \"StructArrProp\", \"StructProp.Label\", \"StructProp.Pt2d\", \"StructProp.Pt3d\", \"StructProp.X\",\n \"StructProp.Y\", \"StructProp.Z\"].sort());\n\n const elemOld = instances.find((i) => i.ECInstanceId === fullElementId && i.$meta.stage === \"Old\");\n expect(elemOld).to.exist;\n assert.equal(elemOld!.ECClassId, \"0x176\");\n assert.equal(elemOld!.StrProp, \"hello\");\n assert.include(String(elemOld!.BinProp), \"bytes\");\n assert.deepEqual(elemOld!.$meta.rowOptions, { abbreviateBlobs: true });\n assert.deepEqual(Object.keys(elemOld!).sort(), [\"$meta\", \"BinProp\", \"BoolProp\",\n \"DblProp\", \"DtProp\", \"IntArrProp\", \"IntProp\", \"LastMod\", \"LongProp\",\n \"Pt2dProp\", \"Pt3dProp\", \"RelatedElem\", \"StrArrProp\", \"StrProp\", \"StructArrProp\", \"StructProp\", \"ECClassId\", \"ECInstanceId\"].sort());\n assert.deepEqual([...elemOld!.$meta.changeFetchedPropNames].sort(), [\"BinProp\", \"BoolProp\",\n \"DblProp\", \"DtProp\", \"ECInstanceId\", \"IntArrProp\", \"IntProp\", \"LastMod\",\n \"LongProp\", \"Pt2dProp\", \"Pt3dProp.X\", \"Pt3dProp.Y\", \"RelatedElem.Id\", \"StrArrProp\", \"StrProp\",\n \"StructArrProp\", \"StructProp.Label\", \"StructProp.Pt2d\", \"StructProp.Pt3d\", \"StructProp.X\",\n \"StructProp.Y\", \"StructProp.Z\"].sort());\n });\n\n it(\"txn3 update-full | rowOptions: classIdsToClassNames + useJsName\", () => {\n const instances = readTxn(rwIModel, txnId, undefined, { classIdsToClassNames: true, useJsName: true }, undefined, false);\n assert.equal(instances.length, 4);\n\n const modelNew = instances.find((i) => i.id === drawingModelId && i.$meta.stage === \"New\");\n expect(modelNew).to.exist;\n assert.equal(modelNew!.className, \"BisCore.DrawingModel\");\n assert.isUndefined(modelNew!.ECInstanceId);\n assert.deepEqual(modelNew!.$meta.rowOptions, { classIdsToClassNames: true, useJsName: true });\n\n const modelOld = instances.find((i) => i.id === drawingModelId && i.$meta.stage === \"Old\");\n expect(modelOld).to.exist;\n assert.equal(modelOld!.className, \"BisCore.DrawingModel\");\n assert.deepEqual(modelOld!.$meta.rowOptions, { classIdsToClassNames: true, useJsName: true });\n\n const elemNew = instances.find((i) => i.id === fullElementId && i.$meta.stage === \"New\");\n expect(elemNew).to.exist;\n assert.equal(elemNew!.className, \"TestDomain.Test2dElement\");\n assert.isUndefined(elemNew!.ECInstanceId);\n assert.equal(elemNew!.strProp, \"updated\");\n assert.equal(elemNew!.intProp, 99);\n assert.include(String(elemNew!.binProp), \"\\\"bytes\\\"\");\n assert.deepEqual(elemNew!.relatedElem, { id: partialElementId, relClassName: \"TestDomain.Test2dUsesElement\" });\n assert.equal(elemNew!.$meta.op, \"Updated\");\n assert.deepEqual(elemNew!.$meta.rowOptions, { classIdsToClassNames: true, useJsName: true });\n assert.deepEqual(Object.keys(elemNew!).sort(), [\"$meta\", \"binProp\", \"boolProp\", \"className\",\n \"dblProp\", \"dtProp\", \"id\", \"intArrProp\", \"intProp\", \"lastMod\", \"longProp\", \"pt2dProp\",\n \"pt3dProp\", \"relatedElem\", \"strArrProp\", \"strProp\", \"structArrProp\", \"structProp\"].sort());\n assert.deepEqual([...elemNew!.$meta.changeFetchedPropNames].sort(), [\"BinProp\", \"BoolProp\",\n \"DblProp\", \"DtProp\", \"ECInstanceId\", \"IntArrProp\", \"IntProp\", \"LastMod\",\n \"LongProp\", \"Pt2dProp\", \"Pt3dProp.X\", \"Pt3dProp.Y\", \"RelatedElem.Id\", \"StrArrProp\", \"StrProp\",\n \"StructArrProp\", \"StructProp.Label\", \"StructProp.Pt2d\", \"StructProp.Pt3d\", \"StructProp.X\",\n \"StructProp.Y\", \"StructProp.Z\"].sort());\n\n const elemOld = instances.find((i) => i.id === fullElementId && i.$meta.stage === \"Old\");\n expect(elemOld).to.exist;\n assert.equal(elemOld!.className, \"TestDomain.Test2dElement\");\n assert.isUndefined(elemOld!.ECInstanceId);\n assert.equal(elemOld!.strProp, \"hello\");\n assert.include(String(elemOld!.binProp), \"\\\"bytes\\\"\");\n assert.deepEqual(elemOld!.relatedElem, { id: drawingCategoryId, relClassName: \"TestDomain.Test2dUsesElement\" });\n assert.deepEqual(elemOld!.$meta.rowOptions, { classIdsToClassNames: true, useJsName: true });\n assert.deepEqual(Object.keys(elemOld!).sort(), [\"$meta\", \"binProp\", \"boolProp\", \"className\",\n \"dblProp\", \"dtProp\", \"id\", \"intArrProp\", \"intProp\", \"lastMod\", \"longProp\", \"pt2dProp\",\n \"pt3dProp\", \"relatedElem\", \"strArrProp\", \"strProp\", \"structArrProp\", \"structProp\"].sort());\n assert.deepEqual([...elemOld!.$meta.changeFetchedPropNames].sort(), [\"BinProp\", \"BoolProp\",\n \"DblProp\", \"DtProp\", \"ECInstanceId\", \"IntArrProp\", \"IntProp\", \"LastMod\",\n \"LongProp\", \"Pt2dProp\", \"Pt3dProp.X\", \"Pt3dProp.Y\", \"RelatedElem.Id\", \"StrArrProp\", \"StrProp\",\n \"StructArrProp\", \"StructProp.Label\", \"StructProp.Pt2d\", \"StructProp.Pt3d\", \"StructProp.X\",\n \"StructProp.Y\", \"StructProp.Z\"].sort());\n });\n\n it(\"txn3 update-full | rowOptions: classIdsToClassNames\", () => {\n\n const instances = readTxn(rwIModel, txnId, undefined, { classIdsToClassNames: true }, undefined, false);\n assert.equal(instances.length, 4);\n\n const modelNew = instances.find((i) => i.ECInstanceId === drawingModelId && i.$meta.stage === \"New\");\n expect(modelNew).to.exist;\n assert.equal(modelNew!.ECClassId, \"BisCore.DrawingModel\");\n assert.deepEqual(modelNew!.$meta.rowOptions, { classIdsToClassNames: true });\n\n const modelOld = instances.find((i) => i.ECInstanceId === drawingModelId && i.$meta.stage === \"Old\");\n expect(modelOld).to.exist;\n assert.equal(modelOld!.ECClassId, \"BisCore.DrawingModel\");\n assert.deepEqual(modelOld!.$meta.rowOptions, { classIdsToClassNames: true });\n\n const elemNew = instances.find((i) => i.ECInstanceId === fullElementId && i.$meta.stage === \"New\");\n expect(elemNew).to.exist;\n assert.equal(elemNew!.ECClassId, \"TestDomain.Test2dElement\");\n assert.equal(elemNew!.StrProp, \"updated\");\n assert.equal(elemNew!.IntProp, 99);\n assert.include(String(elemNew!.BinProp), \"\\\"bytes\\\"\");\n assert.deepEqual(elemNew!.RelatedElem, { Id: partialElementId, RelECClassId: \"TestDomain.Test2dUsesElement\" });\n assert.equal(elemNew!.$meta.op, \"Updated\");\n assert.equal(elemNew!.$meta.propFilter, PropertyFilter.All);\n assert.deepEqual(elemNew!.$meta.rowOptions, { classIdsToClassNames: true });\n\n assert.deepEqual(Object.keys(elemNew!).sort(), [\"$meta\", \"BinProp\", \"BoolProp\",\n \"DblProp\", \"DtProp\", \"IntArrProp\", \"IntProp\", \"LastMod\", \"LongProp\",\n \"Pt2dProp\", \"Pt3dProp\", \"RelatedElem\", \"StrArrProp\", \"StrProp\", \"StructArrProp\", \"StructProp\", \"ECClassId\", \"ECInstanceId\"].sort());\n assert.deepEqual([...elemNew!.$meta.changeFetchedPropNames].sort(), [\"BinProp\", \"BoolProp\",\n \"DblProp\", \"DtProp\", \"ECInstanceId\", \"IntArrProp\", \"IntProp\", \"LastMod\",\n \"LongProp\", \"Pt2dProp\", \"Pt3dProp.X\", \"Pt3dProp.Y\", \"RelatedElem.Id\", \"StrArrProp\", \"StrProp\",\n \"StructArrProp\", \"StructProp.Label\", \"StructProp.Pt2d\", \"StructProp.Pt3d\", \"StructProp.X\",\n \"StructProp.Y\", \"StructProp.Z\"].sort());\n\n const elemOld = instances.find((i) => i.ECInstanceId === fullElementId && i.$meta.stage === \"Old\");\n expect(elemOld).to.exist;\n assert.equal(elemOld!.ECClassId, \"TestDomain.Test2dElement\");\n assert.equal(elemOld!.StrProp, \"hello\");\n assert.equal(elemOld!.IntProp, 42);\n assert.include(String(elemOld!.BinProp), \"\\\"bytes\\\"\");\n assert.deepEqual(elemOld!.RelatedElem, { Id: drawingCategoryId, RelECClassId: \"TestDomain.Test2dUsesElement\" });\n assert.equal(elemOld!.$meta.op, \"Updated\");\n assert.deepEqual(elemOld!.$meta.rowOptions, { classIdsToClassNames: true });\n\n assert.deepEqual(Object.keys(elemOld!).sort(), [\"$meta\", \"BinProp\", \"BoolProp\",\n \"DblProp\", \"DtProp\", \"IntArrProp\", \"IntProp\", \"LastMod\", \"LongProp\",\n \"Pt2dProp\", \"Pt3dProp\", \"RelatedElem\", \"StrArrProp\", \"StrProp\", \"StructArrProp\", \"StructProp\", \"ECClassId\", \"ECInstanceId\"].sort());\n assert.deepEqual([...elemOld!.$meta.changeFetchedPropNames].sort(), [\"BinProp\", \"BoolProp\",\n \"DblProp\", \"DtProp\", \"ECInstanceId\", \"IntArrProp\", \"IntProp\", \"LastMod\",\n \"LongProp\", \"Pt2dProp\", \"Pt3dProp.X\", \"Pt3dProp.Y\", \"RelatedElem.Id\", \"StrArrProp\", \"StrProp\",\n \"StructArrProp\", \"StructProp.Label\", \"StructProp.Pt2d\", \"StructProp.Pt3d\", \"StructProp.X\",\n \"StructProp.Y\", \"StructProp.Z\"].sort());\n });\n it(\"should throw error if tried to fetch changeset metadata values before stepping\", () => {\n using reader = ChangesetReader.openTxn({ db: rwIModel, txnId });\n expect(() => reader.isECTable).to.throw();\n expect(() => reader.isIndirectChange).to.throw();\n expect(() => reader.tableName).to.throw();\n expect(() => reader.op).to.throw();\n assert.isUndefined(reader.inserted);\n assert.isUndefined(reader.deleted);\n reader.close();\n });\n it(\"should throw error if tried to fetch changeset metadata values after stepping past the end\", () => {\n using reader = ChangesetReader.openTxn({ db: rwIModel, txnId });\n while (reader.step()) { }\n assert.equal(reader.step(), false);\n assert.equal(reader.step(), false); // trying multiple steps past the end should still return false and not throw, but metadata access should throw\n assert.equal(reader.step(), false);\n expect(() => reader.isECTable).to.throw();\n expect(() => reader.isIndirectChange).to.throw();\n expect(() => reader.tableName).to.throw();\n expect(() => reader.op).to.throw();\n assert.isUndefined(reader.inserted);\n assert.isUndefined(reader.deleted);\n reader.close();\n });\n});\n\ndescribe(\"ChangesetReader delete-partial\", () => {\n let rwIModel: BriefcaseDb;\n let partialElementId: Id64String;\n let drawingModelId: Id64String;\n let drawingCategoryId: Id64String;\n let txnId: string;\n let txn: EditTxn;\n\n before(async () => {\n HubMock.startup(\"ECChangesetDeletePartial\", KnownTestLocations.outputDir);\n const adminToken = \"super manager token\";\n const iTwinId = HubMock.iTwinId;\n const rwIModelId = await HubMock.createNewIModel({ iTwinId, iModelName: \"deletePartial\", description: \"deletePartial\", accessToken: adminToken });\n rwIModel = await HubWrappers.downloadAndOpenBriefcase({ iTwinId, iModelId: rwIModelId, accessToken: adminToken });\n txn = startTestTxn(rwIModel, \"ChangesetReader delete-partial\");\n // Txn 1: import schema + drawing model setup, then push\n const schema = `<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n <ECSchema schemaName=\"TestDomain\" alias=\"ts\" version=\"01.00\" xmlns=\"http://www.bentley.com/schemas/Bentley.ECXML.3.1\">\n <ECSchemaReference name=\"BisCore\" version=\"01.00\" alias=\"bis\"/>\n <!-- Rich struct: scalar fields + nested point2d/3d sub-properties -->\n <ECStructClass typeName=\"RichPoint\" modifier=\"Sealed\">\n <ECProperty propertyName=\"X\" typeName=\"double\"/>\n <ECProperty propertyName=\"Y\" typeName=\"double\"/>\n <ECProperty propertyName=\"Z\" typeName=\"double\"/>\n <ECProperty propertyName=\"Label\" typeName=\"string\"/>\n <ECProperty propertyName=\"Pt2d\" typeName=\"point2d\"/>\n <ECProperty propertyName=\"Pt3d\" typeName=\"point3d\"/>\n </ECStructClass>\n <!-- Relationship used by the RelatedElem navigation property -->\n <ECRelationshipClass typeName=\"Test2dUsesElement\" strength=\"referencing\" modifier=\"None\">\n <Source multiplicity=\"(0..*)\" roleLabel=\"uses\" polymorphic=\"true\"><Class class=\"Test2dElement\"/></Source>\n <Target multiplicity=\"(0..1)\" roleLabel=\"is used by\" polymorphic=\"true\"><Class class=\"bis:Element\"/></Target>\n </ECRelationshipClass>\n <ECEntityClass typeName=\"Test2dElement\">\n <BaseClass>bis:GraphicalElement2d</BaseClass>\n <!-- Primitives -->\n <ECProperty propertyName=\"StrProp\" typeName=\"string\"/>\n <ECProperty propertyName=\"IntProp\" typeName=\"int\"/>\n <ECProperty propertyName=\"LongProp\" typeName=\"long\"/>\n <ECProperty propertyName=\"DblProp\" typeName=\"double\"/>\n <ECProperty propertyName=\"BoolProp\" typeName=\"boolean\"/>\n <ECProperty propertyName=\"DtProp\" typeName=\"dateTime\"/>\n <ECProperty propertyName=\"BinProp\" typeName=\"binary\"/>\n <!-- Geometric primitives -->\n <ECProperty propertyName=\"Pt2dProp\" typeName=\"point2d\"/>\n <ECProperty propertyName=\"Pt3dProp\" typeName=\"point3d\"/>\n <!-- Struct, arrays -->\n <ECStructProperty propertyName=\"StructProp\" typeName=\"RichPoint\"/>\n <ECArrayProperty propertyName=\"IntArrProp\" typeName=\"int\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n <ECArrayProperty propertyName=\"StrArrProp\" typeName=\"string\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n <ECStructArrayProperty propertyName=\"StructArrProp\" typeName=\"RichPoint\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n <!-- Navigation property -->\n <ECNavigationProperty propertyName=\"RelatedElem\" relationshipName=\"Test2dUsesElement\" direction=\"forward\"/>\n </ECEntityClass>\n </ECSchema>`;\n await importSchemaStrings(txn, [schema]);\n rwIModel.channels.addAllowedChannel(ChannelControl.sharedChannelName);\n\n await rwIModel.locks.acquireLocks({ shared: IModel.dictionaryId });\n const codeProps = Code.createEmpty();\n codeProps.value = \"DrillDownDrawing\";\n [, drawingModelId] = IModelTestUtils.createAndInsertDrawingPartitionAndModel(txn, codeProps, true);\n\n const foundCat = DrawingCategory.queryCategoryIdByName(rwIModel, IModel.dictionaryId, \"DrillDownCategory\");\n drawingCategoryId = foundCat ?? DrawingCategory.insert(txn, IModel.dictionaryId, \"DrillDownCategory\",\n new SubCategoryAppearance({ color: ColorDef.fromString(\"rgb(255,0,0)\").toJSON() }));\n\n txn.saveChanges(\"setup\");\n // Wait so that LastMod on bis_Model gets a distinct timestamp before the insert txn\n await new Promise((resolve) => setTimeout(resolve, 300));\n // Txn 2: insert PARTIAL element\n partialElementId = txn.insertElement({\n classFullName: \"TestDomain:Test2dElement\",\n model: drawingModelId,\n category: drawingCategoryId,\n code: Code.createEmpty(),\n // StrProp, IntProp, LongProp, DblProp, BoolProp, DtProp, BinProp intentionally absent\n } as any);\n txn.saveChanges(\"insert partial element\");\n txnId = rwIModel.txns.getLastSavedTxnProps()!.id;\n // Wait so that LastMod on bis_Model gets a distinct timestamp before the delete txn\n await new Promise((resolve) => setTimeout(resolve, 300));\n await rwIModel.locks.acquireLocks({ exclusive: partialElementId });\n txn.deleteElement(partialElementId);\n txn.saveChanges(\"delete partial element\");\n txnId = rwIModel.txns.getLastSavedTxnProps()!.id;\n });\n\n after(() => {\n txn.end();\n rwIModel?.close();\n HubMock.shutdown();\n });\n\n it(\"txn4 delete-partial | All_Properties | default rowOptions\", () => {\n const instances = readTxn(rwIModel, txnId);\n assert.equal(instances.length, 3);\n\n // --- instances[0]: DrawingModel Updated New ---\n const modelNew = instances.find((i) => i.ECInstanceId === drawingModelId && i.$meta.stage === \"New\");\n expect(modelNew).to.exist;\n assert.equal(modelNew!.ECInstanceId, drawingModelId);\n assert.equal(\"BisCore:DrawingModel\", rwIModel.getClassNameFromId(modelNew!.ECClassId));\n assert.isString(modelNew!.LastMod);\n assert.isString(modelNew!.GeometryGuid);\n assert.deepEqual(Object.keys(modelNew!).sort(), [\"ECInstanceId\", \"ECClassId\", \"LastMod\", \"GeometryGuid\", \"$meta\"].sort());\n assert.deepEqual(Object.keys(modelNew!.$meta).sort(), [\"op\", \"tables\", \"changeIndexes\", \"stage\", \"instanceKey\", \"propFilter\", \"changeFetchedPropNames\", \"rowOptions\", \"isIndirectChange\"].sort());\n assert.equal(modelNew!.$meta.op, \"Updated\");\n assert.equal(modelNew!.$meta.stage, \"New\");\n assert.equal(modelNew!.$meta.propFilter, PropertyFilter.All);\n assert.deepEqual([...modelNew!.$meta.changeFetchedPropNames].sort(), [\"ECInstanceId\", \"LastMod\", \"GeometryGuid\"].sort());\n assert.deepEqual(modelNew!.$meta.rowOptions, {});\n assert.equal(modelNew!.$meta.isIndirectChange, true);\n\n // --- instances[1]: DrawingModel Updated Old ---\n const modelOld = instances.find((i) => i.ECInstanceId === drawingModelId && i.$meta.stage === \"Old\");\n expect(modelOld).to.exist;\n assert.equal(modelOld!.ECInstanceId, drawingModelId);\n assert.equal(\"BisCore:DrawingModel\", rwIModel.getClassNameFromId(modelOld!.ECClassId));\n assert.isString(modelOld!.LastMod);\n assert.isString(modelOld!.GeometryGuid);\n assert.deepEqual(Object.keys(modelOld!).sort(), [\"ECInstanceId\", \"ECClassId\", \"LastMod\", \"GeometryGuid\", \"$meta\"].sort());\n assert.deepEqual(Object.keys(modelOld!.$meta).sort(), [\"op\", \"tables\", \"changeIndexes\", \"stage\", \"instanceKey\", \"propFilter\", \"changeFetchedPropNames\", \"rowOptions\", \"isIndirectChange\"].sort());\n assert.equal(modelOld!.$meta.op, \"Updated\");\n assert.equal(modelOld!.$meta.stage, \"Old\");\n assert.equal(modelOld!.$meta.propFilter, PropertyFilter.All);\n assert.deepEqual([...modelOld!.$meta.changeFetchedPropNames].sort(), [\"ECInstanceId\", \"LastMod\", \"GeometryGuid\"].sort());\n assert.deepEqual(modelOld!.$meta.rowOptions, {});\n assert.equal(modelOld!.$meta.isIndirectChange, true);\n\n // --- instances[2]: Test2dElement (partial) Deleted Old ---\n const elem = instances.find((i) => i.ECInstanceId === partialElementId && i.$meta.stage === \"Old\");\n expect(elem).to.exist;\n assert.equal(elem!.ECInstanceId, partialElementId);\n assert.equal(\"TestDomain:Test2dElement\", rwIModel.getClassNameFromId(elem!.ECClassId));\n assert.equal(elem!.Model.Id, drawingModelId);\n assert.equal(rwIModel.getClassNameFromId(elem!.Model.RelECClassId), \"BisCore:ModelContainsElements\");\n assert.isString(elem!.LastMod);\n assert.equal(elem!.CodeSpec.Id, \"0x1\");\n assert.equal(rwIModel.getClassNameFromId(elem!.CodeSpec.RelECClassId), \"BisCore:CodeSpecSpecifiesCode\");\n\n assert.equal(elem!.CodeScope.Id, \"0x1\");\n assert.equal(rwIModel.getClassNameFromId(elem!.CodeScope.RelECClassId), \"BisCore:ElementScopesCode\");\n assert.isString(elem!.FederationGuid);\n assert.equal(elem!.Category.Id, drawingCategoryId);\n assert.equal(rwIModel.getClassNameFromId(elem!.Category.RelECClassId), \"BisCore:GeometricElement2dIsInCategory\");\n // Partial element had no custom props at time of delete\n assert.isUndefined(elem!.StrProp);\n assert.isUndefined(elem!.IntProp);\n assert.isUndefined(elem!.Pt2dProp);\n assert.isUndefined(elem!.StructProp);\n assert.isUndefined(elem!.IntArrProp);\n assert.deepEqual(Object.keys(elem!).sort(), [\n \"ECInstanceId\", \"ECClassId\", \"Model\", \"LastMod\", \"CodeSpec\", \"CodeScope\", \"FederationGuid\", \"$meta\",\n \"Category\",\n ].sort());\n assert.deepEqual(Object.keys(elem!.$meta).sort(), [\"op\", \"tables\", \"changeIndexes\", \"stage\", \"instanceKey\", \"propFilter\", \"changeFetchedPropNames\", \"rowOptions\", \"isIndirectChange\"].sort());\n assert.equal(elem!.$meta.op, \"Deleted\");\n assert.equal(elem!.$meta.stage, \"Old\");\n assert.deepEqual([...elem!.$meta.tables].sort(), [\"bis_Element\", \"bis_GeometricElement2d\"].sort());\n assert.deepEqual([...elem!.$meta.changeIndexes].sort(), [1, 2].sort());\n assert.isString(elem!.$meta.instanceKey);\n assert.equal(elem!.$meta.instanceKey.split(`-`).length, 2);\n assert.equal(elem!.$meta.propFilter, PropertyFilter.All);\n assert.deepEqual([...elem!.$meta.changeFetchedPropNames].sort(), [\"BBoxHigh\", \"BBoxLow\", \"BinProp\", \"BoolProp\",\n \"Category.Id\", \"CodeScope.Id\", \"CodeSpec.Id\", \"CodeValue\", \"DblProp\", \"DtProp\", \"ECClassId\", \"ECInstanceId\", \"FederationGuid\", \"GeometryStream\",\n \"IntArrProp\", \"IntProp\", \"JsonProperties\", \"LastMod\", \"LongProp\", \"Model.Id\", \"Origin\", \"Parent\", \"Pt2dProp\", \"Pt3dProp\", \"RelatedElem\", \"Rotation\", \"StrArrProp\", \"StrProp\",\n \"StructArrProp\", \"StructProp.Label\", \"StructProp.Pt2d\", \"StructProp.Pt3d\", \"StructProp.X\", \"StructProp.Y\", \"StructProp.Z\", \"TypeDefinition\", \"UserLabel\"\n ].sort());\n assert.deepEqual(elem!.$meta.rowOptions, {});\n assert.equal(elem!.$meta.isIndirectChange, false);\n });\n\n it(\"txn4 delete-partial | Bis_Element_Properties\", () => {\n const instances = readTxn(rwIModel, txnId, PropertyFilter.BisCoreElement, { classIdsToClassNames: true });\n assert.equal(instances.length, 3);\n\n // --- instances[0]: DrawingModel Updated New ---\n const modelNew = instances.find((i) => i.ECInstanceId === drawingModelId && i.$meta.stage === \"New\");\n expect(modelNew).to.exist;\n assert.equal(modelNew!.ECInstanceId, drawingModelId);\n assert.equal(modelNew!.ECClassId, \"BisCore.DrawingModel\");\n assert.isString(modelNew!.LastMod);\n assert.isString(modelNew!.GeometryGuid);\n assert.deepEqual(Object.keys(modelNew!).sort(), [\"ECInstanceId\", \"ECClassId\", \"LastMod\", \"GeometryGuid\", \"$meta\"].sort());\n assert.deepEqual(Object.keys(modelNew!.$meta).sort(), [\"op\", \"tables\", \"changeIndexes\", \"stage\", \"instanceKey\", \"propFilter\", \"changeFetchedPropNames\", \"rowOptions\", \"isIndirectChange\"].sort());\n assert.equal(modelNew!.$meta.op, \"Updated\");\n assert.equal(modelNew!.$meta.stage, \"New\");\n assert.equal(modelNew!.$meta.propFilter, PropertyFilter.BisCoreElement);\n assert.deepEqual([...modelNew!.$meta.changeFetchedPropNames].sort(), [\"ECInstanceId\", \"LastMod\", \"GeometryGuid\"].sort());\n assert.deepEqual(modelNew!.$meta.rowOptions, { classIdsToClassNames: true });\n assert.equal(modelNew!.$meta.isIndirectChange, true);\n\n // --- instances[1]: DrawingModel Updated Old ---\n const modelOld = instances.find((i) => i.ECInstanceId === drawingModelId && i.$meta.stage === \"Old\");\n expect(modelOld).to.exist;\n assert.equal(modelOld!.ECInstanceId, drawingModelId);\n assert.equal(modelOld!.ECClassId, \"BisCore.DrawingModel\");\n assert.isString(modelOld!.LastMod);\n assert.isString(modelOld!.GeometryGuid);\n assert.deepEqual(Object.keys(modelOld!).sort(), [\"ECInstanceId\", \"ECClassId\", \"LastMod\", \"GeometryGuid\", \"$meta\"].sort());\n assert.deepEqual(Object.keys(modelOld!.$meta).sort(), [\"op\", \"tables\", \"changeIndexes\", \"stage\", \"instanceKey\", \"propFilter\", \"changeFetchedPropNames\", \"rowOptions\", \"isIndirectChange\"].sort());\n assert.equal(modelOld!.$meta.op, \"Updated\");\n assert.equal(modelOld!.$meta.stage, \"Old\");\n assert.equal(modelOld!.$meta.propFilter, PropertyFilter.BisCoreElement);\n assert.deepEqual([...modelOld!.$meta.changeFetchedPropNames].sort(), [\"ECInstanceId\", \"LastMod\", \"GeometryGuid\"].sort());\n assert.deepEqual(modelOld!.$meta.rowOptions, { classIdsToClassNames: true });\n assert.equal(modelOld!.$meta.isIndirectChange, true);\n\n // --- instances[2]: Test2dElement (partial) Deleted Old ---\n const elem = instances.find((i) => i.ECInstanceId === partialElementId && i.$meta.stage === \"Old\");\n expect(elem).to.exist;\n assert.equal(elem!.ECInstanceId, partialElementId);\n assert.equal(elem!.ECClassId, \"TestDomain.Test2dElement\");\n assert.isUndefined(elem!.StrProp);\n assert.isUndefined(elem!.Category);\n expect(elem!.Model).to.exist;\n expect(elem!.LastMod).to.exist;\n expect(elem!.CodeSpec).to.exist;\n expect(elem!.CodeScope).to.exist;\n expect(elem!.FederationGuid).to.exist;\n assert.deepEqual(Object.keys(elem!).sort(), [\"ECInstanceId\", \"ECClassId\", \"$meta\", \"Model\", \"LastMod\", \"CodeSpec\", \"CodeScope\", \"FederationGuid\"].sort());\n assert.deepEqual(Object.keys(elem!.$meta).sort(), [\"op\", \"tables\", \"changeIndexes\", \"stage\", \"instanceKey\", \"propFilter\", \"changeFetchedPropNames\", \"rowOptions\", \"isIndirectChange\"].sort());\n assert.equal(elem!.$meta.op, \"Deleted\");\n assert.equal(elem!.$meta.stage, \"Old\");\n assert.deepEqual([...elem!.$meta.tables].sort(), [\"bis_Element\", \"bis_GeometricElement2d\"].sort());\n assert.deepEqual([...elem!.$meta.changeIndexes].sort(), [1, 2].sort());\n assert.isString(elem!.$meta.instanceKey);\n assert.equal(elem!.$meta.instanceKey.split(`-`).length, 2);\n assert.equal(elem!.$meta.propFilter, PropertyFilter.BisCoreElement);\n assert.deepEqual([...elem!.$meta.changeFetchedPropNames].sort(), [\"CodeScope.Id\", \"CodeSpec.Id\", \"CodeValue\", \"ECClassId\", \"ECInstanceId\",\n \"FederationGuid\", \"JsonProperties\", \"LastMod\", \"Model.Id\", \"Parent\", \"UserLabel\"].sort());\n assert.deepEqual(elem!.$meta.rowOptions, { classIdsToClassNames: true });\n assert.equal(elem!.$meta.isIndirectChange, false);\n });\n\n it(\"txn4 delete-partial | Instance_Key\", () => {\n const instances = readTxn(rwIModel, txnId, PropertyFilter.InstanceKey);\n assert.equal(instances.length, 3);\n\n // --- instances[0]: DrawingModel Updated New ---\n const modelNew = instances.find((i) => i.ECInstanceId === drawingModelId && i.$meta.stage === \"New\");\n expect(modelNew).to.exist;\n assert.equal(modelNew!.ECInstanceId, drawingModelId);\n assert.equal(\"BisCore:DrawingModel\", rwIModel.getClassNameFromId(modelNew!.ECClassId));\n assert.deepEqual(Object.keys(modelNew!).sort(), [\"ECInstanceId\", \"ECClassId\", \"$meta\"].sort());\n assert.deepEqual(Object.keys(modelNew!.$meta).sort(), [\"op\", \"tables\", \"changeIndexes\", \"stage\", \"instanceKey\", \"propFilter\", \"changeFetchedPropNames\", \"rowOptions\", \"isIndirectChange\"].sort());\n assert.equal(modelNew!.$meta.op, \"Updated\");\n assert.equal(modelNew!.$meta.stage, \"New\");\n assert.equal(modelNew!.$meta.propFilter, PropertyFilter.InstanceKey);\n assert.deepEqual([...modelNew!.$meta.changeFetchedPropNames].sort(), [\"ECInstanceId\"].sort());\n assert.deepEqual(modelNew!.$meta.rowOptions, {});\n assert.equal(modelNew!.$meta.isIndirectChange, true);\n\n // --- instances[1]: DrawingModel Updated Old ---\n const modelOld = instances.find((i) => i.ECInstanceId === drawingModelId && i.$meta.stage === \"Old\");\n expect(modelOld).to.exist;\n assert.equal(modelOld!.ECInstanceId, drawingModelId);\n assert.equal(\"BisCore:DrawingModel\", rwIModel.getClassNameFromId(modelOld!.ECClassId));\n assert.deepEqual(Object.keys(modelOld!).sort(), [\"ECInstanceId\", \"ECClassId\", \"$meta\"].sort());\n assert.deepEqual(Object.keys(modelOld!.$meta).sort(), [\"op\", \"tables\", \"changeIndexes\", \"stage\", \"instanceKey\", \"propFilter\", \"changeFetchedPropNames\", \"rowOptions\", \"isIndirectChange\"].sort());\n assert.equal(modelOld!.$meta.op, \"Updated\");\n assert.equal(modelOld!.$meta.stage, \"Old\");\n assert.equal(modelOld!.$meta.propFilter, PropertyFilter.InstanceKey);\n assert.deepEqual([...modelOld!.$meta.changeFetchedPropNames].sort(), [\"ECInstanceId\"].sort());\n assert.deepEqual(modelOld!.$meta.rowOptions, {});\n assert.equal(modelOld!.$meta.isIndirectChange, true);\n\n // --- instances[2]: Test2dElement (partial) Deleted Old ---\n const elem = instances.find((i) => i.ECInstanceId === partialElementId && i.$meta.stage === \"Old\");\n expect(elem).to.exist;\n assert.equal(elem!.ECInstanceId, partialElementId);\n assert.equal(\"TestDomain:Test2dElement\", rwIModel.getClassNameFromId(elem!.ECClassId));\n assert.isUndefined(elem!.StrProp);\n assert.isUndefined(elem!.Model);\n assert.isUndefined(elem!.LastMod);\n assert.deepEqual(Object.keys(elem!).sort(), [\"ECInstanceId\", \"ECClassId\", \"$meta\"].sort());\n assert.deepEqual(Object.keys(elem!.$meta).sort(), [\"op\", \"tables\", \"changeIndexes\", \"stage\", \"instanceKey\", \"propFilter\", \"changeFetchedPropNames\", \"rowOptions\", \"isIndirectChange\"].sort());\n assert.equal(elem!.$meta.op, \"Deleted\");\n assert.equal(elem!.$meta.stage, \"Old\");\n assert.deepEqual([...elem!.$meta.tables].sort(), [\"bis_Element\", \"bis_GeometricElement2d\"].sort());\n assert.deepEqual([...elem!.$meta.changeIndexes].sort(), [1, 2].sort());\n assert.isString(elem!.$meta.instanceKey);\n assert.equal(elem!.$meta.instanceKey.split(`-`).length, 2);\n assert.equal(elem!.$meta.propFilter, PropertyFilter.InstanceKey);\n assert.deepEqual([...elem!.$meta.changeFetchedPropNames].sort(), ['ECClassId', 'ECInstanceId'].sort());\n assert.deepEqual(elem!.$meta.rowOptions, {});\n assert.equal(elem!.$meta.isIndirectChange, false);\n });\n\n it(\"txn4 delete-partial | rowOptions: classIdsToClassNames\", () => {\n const instances = readTxn(rwIModel, txnId, undefined, { classIdsToClassNames: true });\n assert.equal(instances.length, 3);\n\n const modelNew = instances.find((i) => i.ECInstanceId === drawingModelId && i.$meta.stage === \"New\");\n expect(modelNew).to.exist;\n assert.equal(modelNew!.ECClassId, \"BisCore.DrawingModel\");\n assert.deepEqual(modelNew!.$meta.rowOptions, { classIdsToClassNames: true });\n\n const modelOld = instances.find((i) => i.ECInstanceId === drawingModelId && i.$meta.stage === \"Old\");\n expect(modelOld).to.exist;\n assert.equal(modelOld!.ECClassId, \"BisCore.DrawingModel\");\n assert.deepEqual(modelOld!.$meta.rowOptions, { classIdsToClassNames: true });\n\n const elem = instances.find((i) => i.ECInstanceId === partialElementId && i.$meta.stage === \"Old\");\n expect(elem).to.exist;\n assert.equal(elem!.ECClassId, \"TestDomain.Test2dElement\");\n assert.deepEqual(elem!.Model, { Id: drawingModelId, RelECClassId: \"BisCore.ModelContainsElements\" });\n assert.deepEqual(elem!.CodeSpec, { Id: \"0x1\", RelECClassId: \"BisCore.CodeSpecSpecifiesCode\" });\n assert.deepEqual(elem!.CodeScope, { Id: \"0x1\", RelECClassId: \"BisCore.ElementScopesCode\" });\n assert.deepEqual(elem!.Category, { Id: drawingCategoryId, RelECClassId: \"BisCore.GeometricElement2dIsInCategory\" });\n assert.isUndefined(elem!.StrProp);\n assert.deepEqual(Object.keys(elem!).sort(), [\n \"ECInstanceId\", \"ECClassId\", \"Model\", \"LastMod\", \"CodeSpec\", \"CodeScope\", \"FederationGuid\", \"$meta\", \"Category\",\n ].sort());\n assert.equal(elem!.$meta.op, \"Deleted\");\n assert.equal(elem!.$meta.stage, \"Old\");\n assert.equal(elem!.$meta.propFilter, PropertyFilter.All);\n assert.deepEqual(elem!.$meta.rowOptions, { classIdsToClassNames: true });\n });\n\n it(\"txn4 delete-partial | rowOptions: useJsName\", () => {\n const instances = readTxn(rwIModel, txnId, undefined, { useJsName: true });\n assert.equal(instances.length, 3);\n\n const modelNew = instances.find((i) => i.id === drawingModelId && i.$meta.stage === \"New\");\n expect(modelNew).to.exist;\n assert.equal(modelNew!.className, \"BisCore.DrawingModel\");\n assert.isUndefined(modelNew!.ECInstanceId);\n assert.deepEqual(modelNew!.$meta.rowOptions, { useJsName: true });\n\n const modelOld = instances.find((i) => i.id === drawingModelId && i.$meta.stage === \"Old\");\n expect(modelOld).to.exist;\n assert.equal(modelOld!.className, \"BisCore.DrawingModel\");\n assert.deepEqual(modelOld!.$meta.rowOptions, { useJsName: true });\n\n const elem = instances.find((i) => i.id === partialElementId && i.$meta.stage === \"Old\");\n expect(elem).to.exist;\n assert.equal(elem!.className, \"TestDomain.Test2dElement\");\n assert.isUndefined(elem!.ECInstanceId);\n assert.isUndefined(elem!.ECClassId);\n assert.deepEqual(elem!.model, { id: drawingModelId, relClassName: \"BisCore.ModelContainsElements\" });\n assert.deepEqual(elem!.codeSpec, { id: \"0x1\", relClassName: \"BisCore.CodeSpecSpecifiesCode\" });\n assert.deepEqual(elem!.codeScope, { id: \"0x1\", relClassName: \"BisCore.ElementScopesCode\" });\n assert.deepEqual(elem!.category, { id: drawingCategoryId, relClassName: \"BisCore.GeometricElement2dIsInCategory\" });\n assert.isUndefined(elem!.strProp);\n assert.deepEqual(Object.keys(elem!).sort(), [\n \"id\", \"className\", \"model\", \"lastMod\", \"codeSpec\", \"codeScope\", \"federationGuid\", \"$meta\", \"category\",\n ].sort());\n assert.equal(elem!.$meta.op, \"Deleted\");\n assert.equal(elem!.$meta.stage, \"Old\");\n assert.equal(elem!.$meta.propFilter, PropertyFilter.All);\n assert.deepEqual(elem!.$meta.rowOptions, { useJsName: true });\n });\n\n it(\"txn4 delete-partial | rowOptions: abbreviateBlobs\", () => {\n const instances = readTxn(rwIModel, txnId, undefined, { abbreviateBlobs: true });\n assert.equal(instances.length, 3);\n\n const modelNew = instances.find((i) => i.ECInstanceId === drawingModelId && i.$meta.stage === \"New\");\n expect(modelNew).to.exist;\n assert.equal(\"BisCore:DrawingModel\", rwIModel.getClassNameFromId(modelNew!.ECClassId));\n assert.deepEqual(modelNew!.$meta.rowOptions, { abbreviateBlobs: true });\n\n const modelOld = instances.find((i) => i.ECInstanceId === drawingModelId && i.$meta.stage === \"Old\");\n expect(modelOld).to.exist;\n assert.equal(\"BisCore:DrawingModel\", rwIModel.getClassNameFromId(modelOld!.ECClassId));\n assert.deepEqual(modelOld!.$meta.rowOptions, { abbreviateBlobs: true });\n\n // Partial element had no blobs; ECClassId still raw hex\n const elem = instances.find((i) => i.ECInstanceId === partialElementId && i.$meta.stage === \"Old\");\n expect(elem).to.exist;\n assert.equal(\"TestDomain:Test2dElement\", rwIModel.getClassNameFromId(elem!.ECClassId));\n assert.equal(elem!.Model.Id, drawingModelId);\n assert.equal(rwIModel.getClassNameFromId(elem!.Model.RelECClassId), \"BisCore:ModelContainsElements\");\n assert.isUndefined(elem!.StrProp);\n assert.deepEqual(Object.keys(elem!).sort(), [\n \"ECInstanceId\", \"ECClassId\", \"Model\", \"LastMod\", \"CodeSpec\", \"CodeScope\", \"FederationGuid\", \"$meta\", \"Category\",\n ].sort());\n assert.equal(elem!.$meta.op, \"Deleted\");\n assert.equal(elem!.$meta.stage, \"Old\");\n assert.equal(elem!.$meta.propFilter, PropertyFilter.All);\n assert.deepEqual(elem!.$meta.rowOptions, { abbreviateBlobs: true });\n });\n\n it(\"txn4 delete-partial | rowOptions: classIdsToClassNames + useJsName\", () => {\n const instances = readTxn(rwIModel, txnId, undefined, { classIdsToClassNames: true, useJsName: true });\n assert.equal(instances.length, 3);\n\n const modelNew = instances.find((i) => i.id === drawingModelId && i.$meta.stage === \"New\");\n expect(modelNew).to.exist;\n assert.equal(modelNew!.className, \"BisCore.DrawingModel\");\n assert.isUndefined(modelNew!.ECInstanceId);\n assert.deepEqual(modelNew!.$meta.rowOptions, { classIdsToClassNames: true, useJsName: true });\n\n const modelOld = instances.find((i) => i.id === drawingModelId && i.$meta.stage === \"Old\");\n expect(modelOld).to.exist;\n assert.equal(modelOld!.className, \"BisCore.DrawingModel\");\n assert.deepEqual(modelOld!.$meta.rowOptions, { classIdsToClassNames: true, useJsName: true });\n\n const elem = instances.find((i) => i.id === partialElementId && i.$meta.stage === \"Old\");\n expect(elem).to.exist;\n assert.equal(elem!.className, \"TestDomain.Test2dElement\");\n assert.isUndefined(elem!.ECInstanceId);\n assert.deepEqual(elem!.model, { id: drawingModelId, relClassName: \"BisCore.ModelContainsElements\" });\n assert.deepEqual(elem!.codeSpec, { id: \"0x1\", relClassName: \"BisCore.CodeSpecSpecifiesCode\" });\n assert.deepEqual(elem!.codeScope, { id: \"0x1\", relClassName: \"BisCore.ElementScopesCode\" });\n assert.deepEqual(elem!.category, { id: drawingCategoryId, relClassName: \"BisCore.GeometricElement2dIsInCategory\" });\n assert.isUndefined(elem!.strProp);\n assert.deepEqual(Object.keys(elem!).sort(), [\n \"id\", \"className\", \"model\", \"lastMod\", \"codeSpec\", \"codeScope\", \"federationGuid\", \"$meta\", \"category\",\n ].sort());\n assert.equal(elem!.$meta.op, \"Deleted\");\n assert.equal(elem!.$meta.stage, \"Old\");\n assert.equal(elem!.$meta.propFilter, PropertyFilter.All);\n assert.deepEqual(elem!.$meta.rowOptions, { classIdsToClassNames: true, useJsName: true });\n });\n it(\"should throw error if tried to fetch changeset metadata values before stepping\", () => {\n using reader = ChangesetReader.openTxn({ db: rwIModel, txnId });\n expect(() => reader.isECTable).to.throw();\n expect(() => reader.isIndirectChange).to.throw();\n expect(() => reader.tableName).to.throw();\n expect(() => reader.op).to.throw();\n assert.isUndefined(reader.inserted);\n assert.isUndefined(reader.deleted);\n reader.close();\n });\n it(\"should throw error if tried to fetch changeset metadata values after stepping past the end\", () => {\n using reader = ChangesetReader.openTxn({ db: rwIModel, txnId });\n while (reader.step()) { }\n assert.equal(reader.step(), false);\n assert.equal(reader.step(), false); // try stepping again after already stepping past the end\n assert.equal(reader.step(), false);\n expect(() => reader.isECTable).to.throw();\n expect(() => reader.isIndirectChange).to.throw();\n expect(() => reader.tableName).to.throw();\n expect(() => reader.op).to.throw();\n assert.isUndefined(reader.inserted);\n assert.isUndefined(reader.deleted);\n reader.close();\n });\n});\n\ndescribe(\"ChangesetReader filters\", () => {\n let rwIModel: BriefcaseDb;\n let fullElementId: Id64String;\n let drawingModelId: Id64String;\n let drawingCategoryId: Id64String;\n let txnId: string;\n let txn: EditTxn;\n\n before(async () => {\n HubMock.startup(\"ECChangesetInsertFull\", KnownTestLocations.outputDir);\n const adminToken = \"super manager token\";\n const iTwinId = HubMock.iTwinId;\n const rwIModelId = await HubMock.createNewIModel({ iTwinId, iModelName: \"insertFull\", description: \"insertFull\", accessToken: adminToken });\n rwIModel = await HubWrappers.downloadAndOpenBriefcase({ iTwinId, iModelId: rwIModelId, accessToken: adminToken });\n txn = startTestTxn(rwIModel, \"ChangesetReader filters\");\n // Txn 1: import schema + drawing model setup, then push\n const schema = `<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n <ECSchema schemaName=\"TestDomain\" alias=\"ts\" version=\"01.00\" xmlns=\"http://www.bentley.com/schemas/Bentley.ECXML.3.1\">\n <ECSchemaReference name=\"BisCore\" version=\"01.00\" alias=\"bis\"/>\n <!-- Rich struct: scalar fields + nested point2d/3d sub-properties -->\n <ECStructClass typeName=\"RichPoint\" modifier=\"Sealed\">\n <ECProperty propertyName=\"X\" typeName=\"double\"/>\n <ECProperty propertyName=\"Y\" typeName=\"double\"/>\n <ECProperty propertyName=\"Z\" typeName=\"double\"/>\n <ECProperty propertyName=\"Label\" typeName=\"string\"/>\n <ECProperty propertyName=\"Pt2d\" typeName=\"point2d\"/>\n <ECProperty propertyName=\"Pt3d\" typeName=\"point3d\"/>\n </ECStructClass>\n <!-- Relationship used by the RelatedElem navigation property -->\n <ECRelationshipClass typeName=\"Test2dUsesElement\" strength=\"referencing\" modifier=\"None\">\n <Source multiplicity=\"(0..*)\" roleLabel=\"uses\" polymorphic=\"true\"><Class class=\"Test2dElement\"/></Source>\n <Target multiplicity=\"(0..1)\" roleLabel=\"is used by\" polymorphic=\"true\"><Class class=\"bis:Element\"/></Target>\n </ECRelationshipClass>\n <ECEntityClass typeName=\"Test2dElement\">\n <BaseClass>bis:GraphicalElement2d</BaseClass>\n <!-- Primitives -->\n <ECProperty propertyName=\"StrProp\" typeName=\"string\"/>\n <ECProperty propertyName=\"IntProp\" typeName=\"int\"/>\n <ECProperty propertyName=\"LongProp\" typeName=\"long\"/>\n <ECProperty propertyName=\"DblProp\" typeName=\"double\"/>\n <ECProperty propertyName=\"BoolProp\" typeName=\"boolean\"/>\n <ECProperty propertyName=\"DtProp\" typeName=\"dateTime\"/>\n <ECProperty propertyName=\"BinProp\" typeName=\"binary\"/>\n <!-- Geometric primitives -->\n <ECProperty propertyName=\"Pt2dProp\" typeName=\"point2d\"/>\n <ECProperty propertyName=\"Pt3dProp\" typeName=\"point3d\"/>\n <!-- Struct, arrays -->\n <ECStructProperty propertyName=\"StructProp\" typeName=\"RichPoint\"/>\n <ECArrayProperty propertyName=\"IntArrProp\" typeName=\"int\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n <ECArrayProperty propertyName=\"StrArrProp\" typeName=\"string\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n <ECStructArrayProperty propertyName=\"StructArrProp\" typeName=\"RichPoint\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n <!-- Navigation property -->\n <ECNavigationProperty propertyName=\"RelatedElem\" relationshipName=\"Test2dUsesElement\" direction=\"forward\"/>\n </ECEntityClass>\n </ECSchema>`;\n await importSchemaStrings(txn, [schema]);\n rwIModel.channels.addAllowedChannel(ChannelControl.sharedChannelName);\n\n await rwIModel.locks.acquireLocks({ shared: IModel.dictionaryId });\n const codeProps = Code.createEmpty();\n codeProps.value = \"DrillDownDrawing\";\n [, drawingModelId] = IModelTestUtils.createAndInsertDrawingPartitionAndModel(txn, codeProps, true);\n\n const foundCat = DrawingCategory.queryCategoryIdByName(rwIModel, IModel.dictionaryId, \"DrillDownCategory\");\n drawingCategoryId = foundCat ?? DrawingCategory.insert(txn, IModel.dictionaryId, \"DrillDownCategory\",\n new SubCategoryAppearance({ color: ColorDef.fromString(\"rgb(255,0,0)\").toJSON() }));\n\n txn.saveChanges(\"setup\");\n // Wait so that LastMod on bis_Model gets a distinct timestamp before the insert txn\n await new Promise((resolve) => setTimeout(resolve, 300));\n // Txn 2: insert FULL element every EC primitive type populated\n await rwIModel.locks.acquireLocks({ shared: drawingModelId });\n const geom: GeometryStreamProps = [\n Arc3d.createXY(Point3d.create(0, 0), 5),\n Arc3d.createXY(Point3d.create(5, 5), 2),\n Arc3d.createXY(Point3d.create(-5, -5), 20),\n ].map((a) => IModelJson.Writer.toIModelJson(a));\n\n fullElementId = txn.insertElement({\n classFullName: \"TestDomain:Test2dElement\",\n model: drawingModelId,\n category: drawingCategoryId,\n code: Code.createEmpty(),\n geom,\n StrProp: \"hello\",\n IntProp: 42,\n LongProp: 9_007_199_254_740_991, // Number.MAX_SAFE_INTEGER\n DblProp: 3.14159265358979,\n BoolProp: true,\n DtProp: \"2024-01-15T12:00:00.000\",\n BinProp: new Uint8Array([1, 2, 3, 4]),\n Pt2dProp: { x: 1.5, y: 2.5 },\n Pt3dProp: { x: 3.0, y: 4.0, z: 5.0 },\n StructProp: {\n X: 1.0, Y: 2.0, Z: 3.0, Label: \"origin\",\n Pt2d: { x: 0.5, y: 0.5 },\n Pt3d: { x: 1.0, y: 2.0, z: 3.0 },\n },\n IntArrProp: [10, 20, 30],\n StrArrProp: [\"alpha\", \"beta\", \"gamma\"],\n StructArrProp: [\n { X: 0.0, Y: 1.0, Z: 2.0, Label: \"a\", Pt2d: { x: 0.0, y: 0.0 }, Pt3d: { x: 0.0, y: 0.0, z: 0.0 } },\n { X: 3.0, Y: 4.0, Z: 5.0, Label: \"b\", Pt2d: { x: 1.0, y: 1.0 }, Pt3d: { x: 1.0, y: 1.0, z: 1.0 } },\n ],\n RelatedElem: { id: drawingCategoryId, relClassName: \"TestDomain:Test2dUsesElement\" },\n } as any);\n txn.saveChanges(\"insert full element\");\n txnId = rwIModel.txns.getLastSavedTxnProps()!.id;\n });\n\n after(() => {\n txn.end();\n rwIModel?.close();\n HubMock.shutdown();\n });\n\n it(\"txn1 insert-full | filter by table name\", () => {\n using reader = ChangesetReader.openTxn({ db: rwIModel, txnId });\n using pcu = new PartialChangeUnifier(ChangeUnifierCache.createInMemoryCache());\n reader.setTableNameFilters(new Set([\"bis_Model\"]));\n while (reader.step())\n pcu.appendFrom(reader);\n const instances = Array.from(pcu.instances);\n assert.equal(instances.length, 2);\n\n // --- instances[0]: DrawingModel Updated New ---\n const modelNew = instances.find((i) => i.ECInstanceId === drawingModelId && i.$meta.stage === \"New\");\n expect(modelNew).to.exist;\n assert.equal(modelNew!.ECInstanceId, drawingModelId);\n assert.equal(\"BisCore:DrawingModel\", rwIModel.getClassNameFromId(modelNew!.ECClassId));\n assert.isString(modelNew!.LastMod);\n assert.isString(modelNew!.GeometryGuid);\n // Object.keys\n assert.deepEqual(Object.keys(modelNew!).sort(), [\"ECInstanceId\", \"ECClassId\", \"LastMod\", \"GeometryGuid\", \"$meta\"].sort());\n // $meta keys\n assert.deepEqual(Object.keys(modelNew!.$meta).sort(), [\"op\", \"tables\", \"changeIndexes\", \"stage\", \"instanceKey\", \"propFilter\", \"changeFetchedPropNames\", \"rowOptions\", \"isIndirectChange\"].sort());\n assert.equal(modelNew!.$meta.op, \"Updated\");\n assert.equal(modelNew!.$meta.stage, \"New\");\n assert.deepEqual([...modelNew!.$meta.tables].sort(), [\"bis_Model\"].sort());\n assert.deepEqual([...modelNew!.$meta.changeIndexes].sort(), [1].sort());\n assert.isString(modelNew!.$meta.instanceKey);\n assert.equal(modelNew!.$meta.instanceKey.split(`-`).length, 2);\n assert.equal(modelNew!.$meta.propFilter, PropertyFilter.All);\n assert.deepEqual([...modelNew!.$meta.changeFetchedPropNames].sort(), [\"ECInstanceId\", \"LastMod\", \"GeometryGuid\"].sort());\n assert.deepEqual(modelNew!.$meta.rowOptions, {});\n assert.equal(modelNew!.$meta.isIndirectChange, true);\n\n // --- instances[1]: DrawingModel Updated Old ---\n const modelOld = instances.find((i) => i.ECInstanceId === drawingModelId && i.$meta.stage === \"Old\");\n expect(modelOld).to.exist;\n assert.equal(modelOld!.ECInstanceId, drawingModelId);\n assert.equal(\"BisCore:DrawingModel\", rwIModel.getClassNameFromId(modelOld!.ECClassId));\n // Object.keys\n assert.deepEqual(Object.keys(modelOld!).sort(), [\"ECInstanceId\", \"ECClassId\", \"$meta\"].sort());\n // $meta keys\n assert.deepEqual(Object.keys(modelOld!.$meta).sort(), [\"op\", \"tables\", \"changeIndexes\", \"stage\", \"instanceKey\", \"propFilter\", \"changeFetchedPropNames\", \"rowOptions\", \"isIndirectChange\"].sort());\n assert.equal(modelOld!.$meta.op, \"Updated\");\n assert.equal(modelOld!.$meta.stage, \"Old\");\n assert.deepEqual([...modelOld!.$meta.tables].sort(), [\"bis_Model\"].sort());\n assert.equal(modelOld!.$meta.propFilter, PropertyFilter.All);\n assert.deepEqual([...modelOld!.$meta.changeFetchedPropNames].sort(), [\"ECInstanceId\", \"LastMod\", \"GeometryGuid\"].sort());\n assert.deepEqual(modelOld!.$meta.rowOptions, {});\n assert.equal(modelOld!.$meta.isIndirectChange, true);\n });\n\n it(\"txn1 insert-full | filter by operation name\", () => {\n using reader = ChangesetReader.openTxn({ db: rwIModel, txnId });\n using pcu = new PartialChangeUnifier(ChangeUnifierCache.createInMemoryCache());\n reader.setOpCodeFilters(new Set([\"Inserted\"]));\n while (reader.step())\n pcu.appendFrom(reader);\n const instances = Array.from(pcu.instances);\n assert.equal(instances.length, 1);\n\n const elem = instances.find((i) => i.ECInstanceId === fullElementId && i.$meta.stage === \"New\");\n expect(elem).to.exist;\n assert.equal(elem!.ECInstanceId, fullElementId);\n assert.equal(\"TestDomain:Test2dElement\", rwIModel.getClassNameFromId(elem!.ECClassId));\n assert.equal(elem!.Model.Id, drawingModelId);\n assert.equal(rwIModel.getClassNameFromId(elem!.Model.RelECClassId), \"BisCore:ModelContainsElements\");\n assert.isString(elem!.LastMod);\n assert.equal(elem!.CodeSpec.Id, \"0x1\");\n assert.equal(rwIModel.getClassNameFromId(elem!.CodeSpec.RelECClassId), \"BisCore:CodeSpecSpecifiesCode\");\n\n assert.equal(elem!.CodeScope.Id, \"0x1\");\n assert.equal(rwIModel.getClassNameFromId(elem!.CodeScope.RelECClassId), \"BisCore:ElementScopesCode\");\n assert.isString(elem!.FederationGuid);\n\n assert.equal(elem!.Category.Id, drawingCategoryId);\n assert.equal(rwIModel.getClassNameFromId(elem!.Category.RelECClassId), \"BisCore:GeometricElement2dIsInCategory\");\n assert.deepEqual(elem!.Origin, { X: 0, Y: 0 });\n assert.equal(elem!.Rotation, 0);\n assert.deepEqual(elem!.BBoxLow, { X: -25, Y: -25 });\n assert.deepEqual(elem!.BBoxHigh, { X: 15, Y: 15 });\n assert.include(String(elem!.GeometryStream), \"\\\"bytes\\\"\");\n assert.include(String(elem!.BinProp), \"\\\"bytes\\\"\");\n assert.equal(elem!.StrProp, \"hello\");\n assert.equal(elem!.IntProp, 42);\n assert.equal(elem!.LongProp, 9007199254740991);\n assert.closeTo(elem!.DblProp as number, 3.14159265358979, 1e-10);\n assert.equal(elem!.BoolProp, true);\n assert.equal(elem!.DtProp, \"2024-01-15T12:00:00.000\");\n assert.deepEqual(elem!.Pt2dProp, { X: 1.5, Y: 2.5 });\n assert.deepEqual(elem!.Pt3dProp, { X: 3, Y: 4, Z: 5 });\n assert.deepEqual(elem!.StructProp, { X: 1, Y: 2, Z: 3, Label: \"origin\", Pt2d: { X: 0.5, Y: 0.5 }, Pt3d: { X: 1, Y: 2, Z: 3 } });\n assert.deepEqual(elem!.IntArrProp, [10, 20, 30]);\n assert.deepEqual(elem!.StrArrProp, [\"alpha\", \"beta\", \"gamma\"]);\n assert.deepEqual(elem!.StructArrProp, [\n { X: 0, Y: 1, Z: 2, Label: \"a\", Pt2d: { X: 0, Y: 0 }, Pt3d: { X: 0, Y: 0, Z: 0 } },\n { X: 3, Y: 4, Z: 5, Label: \"b\", Pt2d: { X: 1, Y: 1 }, Pt3d: { X: 1, Y: 1, Z: 1 } },\n ]);\n assert.equal(elem!.RelatedElem.Id, drawingCategoryId);\n assert.equal(rwIModel.getClassNameFromId(elem!.RelatedElem.RelECClassId), \"TestDomain:Test2dUsesElement\");\n // Object.keys\n assert.deepEqual(Object.keys(elem!).sort(), [\n \"ECInstanceId\", \"ECClassId\", \"Model\", \"LastMod\", \"CodeSpec\", \"CodeScope\", \"FederationGuid\", \"$meta\",\n \"Category\", \"Origin\", \"Rotation\", \"BBoxLow\", \"BBoxHigh\", \"GeometryStream\",\n \"StrProp\", \"IntProp\", \"LongProp\", \"DblProp\", \"BoolProp\", \"DtProp\",\n \"Pt2dProp\", \"Pt3dProp\", \"StructProp\", \"IntArrProp\", \"StrArrProp\", \"StructArrProp\", \"RelatedElem\", \"BinProp\"\n ].sort());\n // $meta keys\n assert.deepEqual(Object.keys(elem!.$meta).sort(), [\"op\", \"tables\", \"changeIndexes\", \"stage\", \"instanceKey\", \"propFilter\", \"changeFetchedPropNames\", \"rowOptions\", \"isIndirectChange\"].sort());\n assert.equal(elem!.$meta.op, \"Inserted\");\n assert.equal(elem!.$meta.stage, \"New\");\n assert.deepEqual([...elem!.$meta.tables].sort(), [\"bis_Element\", \"bis_GeometricElement2d\"].sort());\n assert.deepEqual([...elem!.$meta.changeIndexes].sort(), [1, 2].sort());\n assert.isString(elem!.$meta.instanceKey);\n assert.equal(elem!.$meta.instanceKey.split(`-`).length, 2);\n assert.equal(elem!.$meta.propFilter, PropertyFilter.All);\n assert.deepEqual([...elem!.$meta.changeFetchedPropNames].sort(), [\n 'BBoxHigh', 'BBoxLow', 'BinProp', 'BoolProp', 'Category.Id', 'CodeScope.Id',\n 'CodeSpec.Id', 'CodeValue', 'DblProp', 'DtProp', 'ECClassId', 'ECInstanceId',\n 'FederationGuid', 'GeometryStream', 'IntArrProp', 'IntProp', 'JsonProperties',\n 'LastMod', 'LongProp', 'Model.Id', 'Origin', 'Parent', 'Pt2dProp', 'Pt3dProp',\n 'RelatedElem', 'Rotation', 'StrArrProp', 'StrProp', 'StructArrProp', 'StructProp.Label',\n 'StructProp.Pt2d', 'StructProp.Pt3d', 'StructProp.X', 'StructProp.Y', 'StructProp.Z',\n 'TypeDefinition', 'UserLabel'\n ].sort());\n assert.deepEqual(elem!.$meta.rowOptions, {});\n assert.equal(elem!.$meta.isIndirectChange, false);\n });\n\n it(\"txn1 insert-full | filter by className\", () => {\n using reader = ChangesetReader.openTxn({ db: rwIModel, txnId });\n using pcu = new PartialChangeUnifier(ChangeUnifierCache.createSqliteBackedCache());\n reader.setClassNameFilters(new Set([\"BisCore:DrawingModel\"]));\n while (reader.step())\n pcu.appendFrom(reader);\n const instances = Array.from(pcu.instances);\n assert.equal(instances.length, 2);\n\n // --- instances[0]: DrawingModel Updated New ---\n const modelNew = instances.find((i) => i.ECInstanceId === drawingModelId && i.$meta.stage === \"New\");\n expect(modelNew).to.exist;\n assert.equal(modelNew!.ECInstanceId, drawingModelId);\n assert.equal(\"BisCore:DrawingModel\", rwIModel.getClassNameFromId(modelNew!.ECClassId));\n assert.isString(modelNew!.LastMod);\n assert.isString(modelNew!.GeometryGuid);\n // Object.keys\n assert.deepEqual(Object.keys(modelNew!).sort(), [\"ECInstanceId\", \"ECClassId\", \"LastMod\", \"GeometryGuid\", \"$meta\"].sort());\n // $meta keys\n assert.deepEqual(Object.keys(modelNew!.$meta).sort(), [\"op\", \"tables\", \"changeIndexes\", \"stage\", \"instanceKey\", \"propFilter\", \"changeFetchedPropNames\", \"rowOptions\", \"isIndirectChange\"].sort());\n assert.equal(modelNew!.$meta.op, \"Updated\");\n assert.equal(modelNew!.$meta.stage, \"New\");\n assert.deepEqual([...modelNew!.$meta.tables].sort(), [\"bis_Model\"].sort());\n assert.deepEqual([...modelNew!.$meta.changeIndexes].sort(), [1].sort());\n assert.isString(modelNew!.$meta.instanceKey);\n assert.equal(modelNew!.$meta.instanceKey.split(`-`).length, 2);\n assert.equal(modelNew!.$meta.propFilter, PropertyFilter.All);\n assert.deepEqual([...modelNew!.$meta.changeFetchedPropNames].sort(), [\"ECInstanceId\", \"LastMod\", \"GeometryGuid\"].sort());\n assert.deepEqual(modelNew!.$meta.rowOptions, {});\n assert.equal(modelNew!.$meta.isIndirectChange, true);\n\n // --- instances[1]: DrawingModel Updated Old ---\n const modelOld = instances.find((i) => i.ECInstanceId === drawingModelId && i.$meta.stage === \"Old\");\n expect(modelOld).to.exist;\n assert.equal(modelOld!.ECInstanceId, drawingModelId);\n assert.equal(\"BisCore:DrawingModel\", rwIModel.getClassNameFromId(modelOld!.ECClassId));\n // Object.keys\n assert.deepEqual(Object.keys(modelOld!).sort(), [\"ECInstanceId\", \"ECClassId\", \"$meta\"].sort());\n // $meta keys\n assert.deepEqual(Object.keys(modelOld!.$meta).sort(), [\"op\", \"tables\", \"changeIndexes\", \"stage\", \"instanceKey\", \"propFilter\", \"changeFetchedPropNames\", \"rowOptions\", \"isIndirectChange\"].sort());\n assert.equal(modelOld!.$meta.op, \"Updated\");\n assert.equal(modelOld!.$meta.stage, \"Old\");\n assert.deepEqual([...modelOld!.$meta.tables].sort(), [\"bis_Model\"].sort());\n assert.equal(modelOld!.$meta.propFilter, PropertyFilter.All);\n assert.deepEqual([...modelOld!.$meta.changeFetchedPropNames].sort(), [\"ECInstanceId\", \"LastMod\", \"GeometryGuid\"].sort());\n assert.deepEqual(modelOld!.$meta.rowOptions, {});\n assert.equal(modelOld!.$meta.isIndirectChange, true);\n });\n});\n\ndescribe(\"ChangesetReader — openFile + openGroup\", () => {\n let rwIModel: BriefcaseDb;\n let rwIModelId: string;\n let drawingModelId: Id64String;\n let drawingCategoryId: Id64String;\n let txn: EditTxn;\n\n before(async () => {\n HubMock.startup(\"ECChangesetOpenFileGroup\", KnownTestLocations.outputDir);\n const adminToken = \"super manager token\";\n const iTwinId = HubMock.iTwinId;\n rwIModelId = await HubMock.createNewIModel({ iTwinId, iModelName: \"openFileGroup\", description: \"openFileGroup\", accessToken: adminToken });\n rwIModel = await HubWrappers.downloadAndOpenBriefcase({ iTwinId, iModelId: rwIModelId, accessToken: adminToken });\n\n txn = startTestTxn(rwIModel, \"ChangesetReader setup\");\n\n // Push 1: import schema + drawing model setup\n const schema = `<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n <ECSchema schemaName=\"TestDomain\" alias=\"ts\" version=\"01.00\" xmlns=\"http://www.bentley.com/schemas/Bentley.ECXML.3.1\">\n <ECSchemaReference name=\"BisCore\" version=\"01.00\" alias=\"bis\"/>\n <ECEntityClass typeName=\"SimpleElement\">\n <BaseClass>bis:GraphicalElement2d</BaseClass>\n <!-- Simple binary -->\n <ECProperty propertyName=\"BinProp\" typeName=\"binary\"/>\n <!-- Point3d -->\n <ECProperty propertyName=\"Pt3dProp\" typeName=\"point3d\"/>\n <!-- Array of GUIDs stored as strings -->\n <ECArrayProperty propertyName=\"GuidArrProp\" typeName=\"string\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n </ECEntityClass>\n </ECSchema>`;\n await importSchemaStrings(txn, [schema]);\n rwIModel.channels.addAllowedChannel(ChannelControl.sharedChannelName);\n\n await rwIModel.locks.acquireLocks({ shared: IModel.dictionaryId });\n const codeProps = Code.createEmpty();\n codeProps.value = \"OpenFileDrawing\";\n [, drawingModelId] = IModelTestUtils.createAndInsertDrawingPartitionAndModel(txn, codeProps, true);\n\n const foundCat = DrawingCategory.queryCategoryIdByName(rwIModel, IModel.dictionaryId, \"OpenFileCategory\");\n drawingCategoryId = foundCat ?? DrawingCategory.insert(txn, IModel.dictionaryId, \"OpenFileCategory\",\n new SubCategoryAppearance({ color: ColorDef.fromString(\"rgb(0,128,255)\").toJSON() }));\n\n txn.saveChanges(\"setup\");\n await rwIModel.pushChanges({ description: \"setup\", accessToken: adminToken });\n });\n\n after(() => {\n txn.end();\n rwIModel?.close();\n HubMock.shutdown();\n });\n\n it(\"openFile reads insert and update changesets independently; openGroup reads both as a stream\", async () => {\n const adminToken = \"super manager token\";\n const targetDir = path.join(KnownTestLocations.outputDir, rwIModelId, \"changesets\");\n\n // Wait so that LastMod on bis_Model gets a distinct timestamp before the insert txn\n await new Promise((resolve) => setTimeout(resolve, 300));\n // --- Push 2: insert element — only Y and Z set on Pt3dProp, X omitted (defaults to 0) ---\n await rwIModel.locks.acquireLocks({ shared: drawingModelId });\n const elementId: Id64String = txn.insertElement({\n classFullName: \"TestDomain:SimpleElement\",\n model: drawingModelId,\n category: drawingCategoryId,\n code: Code.createEmpty(),\n Pt3dProp: { y: 2.5, z: 3.7 },\n BinProp: new Uint8Array([1, 2, 3, 4]),\n GuidArrProp: [\n \"a1b2c3d4-e5f6-7890-abcd-ef1234567890\",\n \"bbbbbbbb-cccc-dddd-eeee-ffffffffffff\",\n ],\n } as any);\n txn.saveChanges(\"insert element\");\n await rwIModel.pushChanges({ description: \"insert element\", accessToken: adminToken });\n\n\n let changesets = await HubMock.downloadChangesets({ iModelId: rwIModelId, targetDir });\n expect(changesets.length).to.equal(2);\n const insertCs = changesets[1];\n // === openFile: insert changeset ===\n {\n using reader = ChangesetReader.openFile({ db: rwIModel, fileName: insertCs.pathname, rowOptions: { abbreviateBlobs: false } });\n using pcu = new PartialChangeUnifier(ChangeUnifierCache.createInMemoryCache());\n while (reader.step())\n pcu.appendFrom(reader);\n const instances = Array.from(pcu.instances);\n\n const elemNew = instances.find((i) => i.ECInstanceId === elementId && i.$meta.stage === \"New\");\n expect(elemNew).to.exist;\n assert.deepEqual(Object.keys(elemNew!.$meta).sort(), [\"op\", \"tables\", \"changeIndexes\", \"stage\", \"propFilter\", \"rowOptions\", \"changeFetchedPropNames\", \"instanceKey\", \"isIndirectChange\"].sort());\n assert.equal(elemNew!.$meta.op, \"Inserted\");\n assert.equal(elemNew!.$meta.stage, \"New\");\n assert.deepEqual(elemNew!.$meta.tables.sort(), [\"bis_Element\", \"bis_GeometricElement2d\"].sort());\n assert.deepEqual(elemNew!.$meta.propFilter, PropertyFilter.All);\n assert.deepEqual(elemNew!.$meta.changeIndexes.sort(), [1, 2].sort());\n assert.deepEqual(elemNew!.$meta.rowOptions, { abbreviateBlobs: false });\n assert.equal(elemNew!.$meta.isIndirectChange, false);\n\n expect(elemNew!.Category).to.exist;\n expect(elemNew!.CodeScope).to.exist;\n expect(elemNew!.CodeSpec).to.exist;\n expect(elemNew!.LastMod).to.exist;\n expect(elemNew!.Model).to.exist;\n expect(elemNew!.FederationGuid).to.exist;\n assert.isUndefined(elemNew!.Pt3dProp);\n assert.isNotNull(elemNew!.BinProp);\n assert.deepEqual(elemNew!.BinProp, new Uint8Array([1, 2, 3, 4]));\n assert.deepEqual(elemNew!.GuidArrProp, [\n \"a1b2c3d4-e5f6-7890-abcd-ef1234567890\",\n \"bbbbbbbb-cccc-dddd-eeee-ffffffffffff\",\n ]);\n assert.deepEqual(Object.keys(elemNew!).sort(), [\"ECInstanceId\", \"ECClassId\", \"Model\", \"CodeSpec\",\n \"CodeScope\", \"FederationGuid\", \"$meta\", \"Category\", \"LastMod\",\n \"BinProp\", \"GuidArrProp\"].sort())\n assert.deepEqual([...elemNew!.$meta.changeFetchedPropNames].sort(), ['BBoxHigh', 'BBoxLow', 'BinProp',\n 'Category.Id', 'CodeScope.Id', 'CodeSpec.Id', 'CodeValue',\n 'ECClassId', 'ECInstanceId', 'FederationGuid', 'GeometryStream', 'GuidArrProp',\n 'JsonProperties', 'LastMod', 'Model.Id', 'Origin', 'Parent', 'Pt3dProp', 'Rotation',\n 'TypeDefinition', 'UserLabel'].sort());\n }\n\n // Wait so that LastMod on bis_Model gets a distinct timestamp before the update txn\n await new Promise((resolve) => setTimeout(resolve, 300));\n // --- Push 3: update element — change all custom props ---\n await rwIModel.locks.acquireLocks({ exclusive: elementId });\n txn.updateElement({\n ...rwIModel.elements.getElementProps(elementId),\n Pt3dProp: { x: 1.0, y: 9.9, z: 7.7 },\n BinProp: new Uint8Array([0xaa, 0xbb, 0xcc, 0xdd]),\n GuidArrProp: [\n \"ffffffff-0000-1111-2222-333344445555\",\n ],\n });\n txn.saveChanges(\"update element\");\n await rwIModel.pushChanges({ description: \"update element\", accessToken: adminToken });\n\n // Download all changesets: [setup(0), insert(1), update(2)]\n changesets = await HubMock.downloadChangesets({ iModelId: rwIModelId, targetDir });\n expect(changesets.length).to.equal(3);\n const updateCs = changesets[2];\n\n // === openFile: update changeset ===\n {\n using reader = ChangesetReader.openFile({ db: rwIModel, fileName: updateCs.pathname, rowOptions: { abbreviateBlobs: false } });\n using pcu = new PartialChangeUnifier(ChangeUnifierCache.createInMemoryCache());\n while (reader.step())\n pcu.appendFrom(reader);\n const instances = Array.from(pcu.instances);\n\n const elemNew = instances.find((i) => i.ECInstanceId === elementId && i.$meta.stage === \"New\");\n const elemOld = instances.find((i) => i.ECInstanceId === elementId && i.$meta.stage === \"Old\");\n expect(elemNew).to.exist;\n expect(elemOld).to.exist;\n assert.equal(elemNew!.$meta.op, \"Updated\");\n assert.equal(elemNew!.$meta.stage, \"New\");\n assert.equal(elemNew!.$meta.propFilter, PropertyFilter.All);\n assert.deepEqual(Object.keys(elemNew!.$meta).sort(), [\"op\", \"tables\", \"changeIndexes\", \"stage\", \"propFilter\", \"rowOptions\", \"changeFetchedPropNames\", \"instanceKey\", \"isIndirectChange\"].sort());\n assert.equal(elemNew!.$meta.isIndirectChange, false);\n assert.deepEqual(Object.keys(elemNew!).sort(), [\"ECInstanceId\", \"ECClassId\", \"Origin\",\n \"Rotation\", \"BBoxLow\", \"BBoxHigh\", \"Pt3dProp\", \"BinProp\", \"GuidArrProp\", \"$meta\", \"LastMod\"].sort());\n assert.deepEqual(elemNew!.Pt3dProp, { X: 1, Y: 9.9, Z: 7.7 });\n assert.deepEqual(elemNew!.BinProp, new Uint8Array([0xaa, 0xbb, 0xcc, 0xdd]));\n assert.deepEqual(elemNew!.GuidArrProp, [\"ffffffff-0000-1111-2222-333344445555\"]);\n assert.deepEqual(elemNew!.Origin, { X: 0, Y: 0 });\n assert.deepEqual(elemNew!.BBoxLow, { X: 0, Y: 0 });\n assert.deepEqual(elemNew!.BBoxHigh, { X: 0, Y: 0 });\n assert.deepEqual(elemNew!.Rotation, 0);\n expect(elemNew!.LastMod).to.exist;\n assert.deepEqual([...elemNew!.$meta.changeFetchedPropNames].sort(), ['BBoxHigh', 'BBoxLow', 'BinProp', 'ECInstanceId', 'GuidArrProp', 'LastMod', 'Origin', 'Pt3dProp', 'Rotation'].sort());\n\n assert.equal(elemOld!.$meta.op, \"Updated\");\n assert.equal(elemOld!.$meta.stage, \"Old\");\n assert.deepEqual(Object.keys(elemOld!.$meta).sort(), [\"op\", \"tables\", \"changeIndexes\", \"stage\", \"propFilter\", \"rowOptions\", \"changeFetchedPropNames\", \"instanceKey\", \"isIndirectChange\"].sort());\n assert.deepEqual(Object.keys(elemOld!).sort(), [\"ECInstanceId\", \"ECClassId\", \"BinProp\", \"GuidArrProp\", \"$meta\",\n \"LastMod\"].sort());\n assert.deepEqual(elemOld!.BinProp, new Uint8Array([1, 2, 3, 4]));\n assert.deepEqual(elemOld!.GuidArrProp, [\n \"a1b2c3d4-e5f6-7890-abcd-ef1234567890\",\n \"bbbbbbbb-cccc-dddd-eeee-ffffffffffff\",\n ]);\n assert.equal(elemOld!.$meta.isIndirectChange, false);\n expect(elemOld!.LastMod).to.exist;\n assert.deepEqual([...elemOld!.$meta.changeFetchedPropNames].sort(), ['BBoxHigh', 'BBoxLow', 'BinProp', 'ECInstanceId', 'GuidArrProp', 'LastMod', 'Origin', 'Pt3dProp', 'Rotation'].sort());\n }\n\n // === openGroup: insert + update as a single stream ===\n // After merging, the elem New key is shared between insert-New and update-New;\n // the update-New wins on overlapping props, so the final New reflects the updated state.\n // elem Old only comes from the update changeset.\n {\n using reader = ChangesetReader.openGroup({ db: rwIModel, changesetFiles: [insertCs.pathname, updateCs.pathname], rowOptions: { abbreviateBlobs: false } });\n using pcu = new PartialChangeUnifier(ChangeUnifierCache.createInMemoryCache());\n while (reader.step())\n pcu.appendFrom(reader);\n const instances = Array.from(pcu.instances);\n\n const elemNew = instances.find((i) => i.ECInstanceId === elementId && i.$meta.stage === \"New\");\n const elemOld = instances.find((i) => i.ECInstanceId === elementId && i.$meta.stage === \"Old\");\n expect(elemNew).to.exist;\n expect(elemOld).to.not.exist;\n // New merges insert + update; final values are from the update\n assert.deepEqual(elemNew!.Pt3dProp, { X: 1, Y: 9.9, Z: 7.7 });\n assert.deepEqual(elemNew!.BinProp, new Uint8Array([0xaa, 0xbb, 0xcc, 0xdd]));\n assert.deepEqual(elemNew!.GuidArrProp, [\"ffffffff-0000-1111-2222-333344445555\"]);\n assert.deepEqual(elemNew!.Origin, { X: 0, Y: 0 });\n assert.deepEqual(elemNew!.BBoxLow, { X: 0, Y: 0 });\n assert.deepEqual(elemNew!.BBoxHigh, { X: 0, Y: 0 });\n assert.deepEqual(elemNew!.Rotation, 0);\n expect(elemNew!.LastMod).to.exist;\n expect(elemNew!.Category).to.exist;\n expect(elemNew!.CodeScope).to.exist;\n expect(elemNew!.CodeSpec).to.exist;\n expect(elemNew!.LastMod).to.exist;\n expect(elemNew!.Model).to.exist;\n expect(elemNew!.FederationGuid).to.exist;\n assert.deepEqual(Object.keys(elemNew!.$meta).sort(), [\"op\", \"tables\", \"changeIndexes\", \"stage\", \"propFilter\", \"rowOptions\", \"changeFetchedPropNames\", \"instanceKey\", \"isIndirectChange\"].sort());\n assert.equal(elemNew!.$meta.op, \"Inserted\");\n assert.equal(elemNew!.$meta.stage, \"New\");\n assert.deepEqual(elemNew!.$meta.tables.sort(), [\"bis_Element\", \"bis_GeometricElement2d\"].sort());\n assert.deepEqual(elemNew!.$meta.propFilter, PropertyFilter.All);\n assert.deepEqual(elemNew!.$meta.changeIndexes.sort(), [1, 2].sort());\n assert.deepEqual(elemNew!.$meta.rowOptions, { abbreviateBlobs: false });\n assert.deepEqual(Object.keys(elemNew!).sort(), [\"ECInstanceId\", \"ECClassId\", \"Model\", \"CodeSpec\",\n \"CodeScope\", \"FederationGuid\", \"$meta\", \"Category\", \"LastMod\",\n \"BinProp\", \"GuidArrProp\", \"Origin\", \"Rotation\", \"BBoxLow\", \"BBoxHigh\", \"Pt3dProp\"].sort());\n assert.deepEqual([...elemNew!.$meta.changeFetchedPropNames].sort(), ['BBoxHigh', 'BBoxLow',\n 'BinProp', 'Category.Id', 'CodeScope.Id', 'CodeSpec.Id',\n 'CodeValue', 'ECClassId', 'ECInstanceId', 'FederationGuid', 'GeometryStream',\n 'GuidArrProp', 'JsonProperties', 'LastMod', 'Model.Id', 'Origin', 'Parent', 'Pt3dProp',\n 'Rotation', 'TypeDefinition', 'UserLabel'].sort());\n assert.equal(elemNew!.$meta.isIndirectChange, false);\n }\n });\n});\n\ndescribe(\"ChangesetReader — openLocalChanges + openInmemoryChanges\", () => {\n let rwIModel: BriefcaseDb;\n let rwIModelId: string;\n let drawingModelId: Id64String;\n let drawingCategoryId: Id64String;\n let txn: EditTxn;\n\n before(async () => {\n HubMock.startup(\"ECChangesetOpenFileGroup\", KnownTestLocations.outputDir);\n const adminToken = \"super manager token\";\n const iTwinId = HubMock.iTwinId;\n rwIModelId = await HubMock.createNewIModel({ iTwinId, iModelName: \"openFileGroup\", description: \"openFileGroup\", accessToken: adminToken });\n rwIModel = await HubWrappers.downloadAndOpenBriefcase({ iTwinId, iModelId: rwIModelId, accessToken: adminToken });\n txn = startTestTxn(rwIModel, \"ChangesetReader setup\");\n // Push 1: import schema + drawing model setup\n const schema = `<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n <ECSchema schemaName=\"TestDomain\" alias=\"ts\" version=\"01.00\" xmlns=\"http://www.bentley.com/schemas/Bentley.ECXML.3.1\">\n <ECSchemaReference name=\"BisCore\" version=\"01.00\" alias=\"bis\"/>\n <ECEntityClass typeName=\"SimpleElement\">\n <BaseClass>bis:GraphicalElement2d</BaseClass>\n <!-- Simple binary -->\n <ECProperty propertyName=\"BinProp\" typeName=\"binary\"/>\n <!-- Point3d -->\n <ECProperty propertyName=\"Pt3dProp\" typeName=\"point3d\"/>\n <!-- Array of GUIDs stored as strings -->\n <ECArrayProperty propertyName=\"GuidArrProp\" typeName=\"string\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n </ECEntityClass>\n </ECSchema>`;\n await importSchemaStrings(txn, [schema]);\n rwIModel.channels.addAllowedChannel(ChannelControl.sharedChannelName);\n\n await rwIModel.locks.acquireLocks({ shared: IModel.dictionaryId });\n const codeProps = Code.createEmpty();\n codeProps.value = \"OpenFileDrawing\";\n [, drawingModelId] = IModelTestUtils.createAndInsertDrawingPartitionAndModel(txn, codeProps, true);\n\n const foundCat = DrawingCategory.queryCategoryIdByName(rwIModel, IModel.dictionaryId, \"OpenFileCategory\");\n drawingCategoryId = foundCat ?? DrawingCategory.insert(txn, IModel.dictionaryId, \"OpenFileCategory\",\n new SubCategoryAppearance({ color: ColorDef.fromString(\"rgb(0,128,255)\").toJSON() }));\n\n txn.saveChanges(\"setup\");\n await rwIModel.pushChanges({ description: \"setup\", accessToken: adminToken });\n });\n\n after(() => {\n txn.end();\n rwIModel?.close();\n HubMock.shutdown();\n });\n\n it(\"opens local and in-memory changes\", async () => {\n // Wait so that LastMod on bis_Model gets a distinct timestamp before the insert txn\n await new Promise((resolve) => setTimeout(resolve, 300));\n await rwIModel.locks.acquireLocks({ shared: drawingModelId });\n const elementId: Id64String = txn.insertElement({\n classFullName: \"TestDomain:SimpleElement\",\n model: drawingModelId,\n category: drawingCategoryId,\n code: Code.createEmpty(),\n Pt3dProp: { y: 2.5, z: 3.7 },\n BinProp: new Uint8Array([1, 2, 3, 4]),\n GuidArrProp: [\n \"a1b2c3d4-e5f6-7890-abcd-ef1234567890\",\n \"bbbbbbbb-cccc-dddd-eeee-ffffffffffff\",\n ],\n } as any);\n txn.saveChanges(\"insert element\");\n\n\n // === openFile: insert changeset ===\n {\n using reader = ChangesetReader.openLocalChanges({ db: rwIModel, rowOptions: { abbreviateBlobs: false } });\n using pcu = new PartialChangeUnifier(ChangeUnifierCache.createSqliteBackedCache());\n while (reader.step())\n pcu.appendFrom(reader);\n const instances = Array.from(pcu.instances);\n\n const elemNew = instances.find((i) => i.ECInstanceId === elementId && i.$meta.stage === \"New\");\n expect(elemNew).to.exist;\n assert.deepEqual(Object.keys(elemNew!.$meta).sort(), [\"op\", \"tables\", \"changeIndexes\", \"stage\", \"propFilter\", \"rowOptions\", \"changeFetchedPropNames\", \"instanceKey\", \"isIndirectChange\"].sort());\n assert.equal(elemNew!.$meta.op, \"Inserted\");\n assert.equal(elemNew!.$meta.stage, \"New\");\n assert.deepEqual(elemNew!.$meta.tables.sort(), [\"bis_Element\", \"bis_GeometricElement2d\"].sort());\n assert.deepEqual(elemNew!.$meta.propFilter, PropertyFilter.All);\n assert.deepEqual(elemNew!.$meta.changeIndexes.sort(), [1, 2].sort());\n assert.deepEqual(elemNew!.$meta.rowOptions, { abbreviateBlobs: false });\n assert.equal(elemNew!.$meta.isIndirectChange, false);\n\n expect(elemNew!.Category).to.exist;\n expect(elemNew!.CodeScope).to.exist;\n expect(elemNew!.CodeSpec).to.exist;\n expect(elemNew!.LastMod).to.exist;\n expect(elemNew!.Model).to.exist;\n expect(elemNew!.FederationGuid).to.exist;\n assert.isUndefined(elemNew!.Pt3dProp);\n assert.isNotNull(elemNew!.BinProp);\n assert.deepEqual(elemNew!.BinProp, new Uint8Array([1, 2, 3, 4]));\n assert.deepEqual(elemNew!.GuidArrProp, [\n \"a1b2c3d4-e5f6-7890-abcd-ef1234567890\",\n \"bbbbbbbb-cccc-dddd-eeee-ffffffffffff\",\n ]);\n assert.deepEqual(Object.keys(elemNew!).sort(), [\"ECInstanceId\", \"ECClassId\", \"Model\", \"CodeSpec\",\n \"CodeScope\", \"FederationGuid\", \"$meta\", \"Category\", \"LastMod\",\n \"BinProp\", \"GuidArrProp\"].sort())\n assert.deepEqual([...elemNew!.$meta.changeFetchedPropNames].sort(), ['BBoxHigh', 'BBoxLow', 'BinProp',\n 'Category.Id', 'CodeScope.Id', 'CodeSpec.Id', 'CodeValue',\n 'ECClassId', 'ECInstanceId', 'FederationGuid', 'GeometryStream', 'GuidArrProp',\n 'JsonProperties', 'LastMod', 'Model.Id', 'Origin', 'Parent', 'Pt3dProp', 'Rotation',\n 'TypeDefinition', 'UserLabel'].sort());\n }\n // Wait so that LastMod on bis_Model gets a distinct timestamp before the update txn\n await new Promise((resolve) => setTimeout(resolve, 300));\n // --- Push 3: update element — change all custom props ---\n await rwIModel.locks.acquireLocks({ exclusive: elementId });\n txn.updateElement({\n ...rwIModel.elements.getElementProps(elementId),\n Pt3dProp: { x: 1.0, y: 9.9, z: 7.7 },\n BinProp: new Uint8Array([0xaa, 0xbb, 0xcc, 0xdd]),\n GuidArrProp: [\n \"ffffffff-0000-1111-2222-333344445555\",\n ],\n });\n\n // === openFile: update changeset ===\n {\n using reader = ChangesetReader.openInMemoryChanges({ db: rwIModel, rowOptions: { abbreviateBlobs: false } });\n using pcu = new PartialChangeUnifier(ChangeUnifierCache.createSqliteBackedCache());\n while (reader.step())\n pcu.appendFrom(reader);\n const instances = Array.from(pcu.instances);\n\n const elemNew = instances.find((i) => i.ECInstanceId === elementId && i.$meta.stage === \"New\");\n const elemOld = instances.find((i) => i.ECInstanceId === elementId && i.$meta.stage === \"Old\");\n expect(elemNew).to.exist;\n expect(elemOld).to.exist;\n assert.equal(elemNew!.$meta.op, \"Updated\");\n assert.equal(elemNew!.$meta.stage, \"New\");\n assert.equal(elemNew!.$meta.propFilter, PropertyFilter.All);\n assert.deepEqual(Object.keys(elemNew!.$meta).sort(), [\"op\", \"tables\", \"changeIndexes\", \"stage\", \"propFilter\", \"rowOptions\", \"changeFetchedPropNames\", \"instanceKey\", \"isIndirectChange\"].sort());\n assert.deepEqual(Object.keys(elemNew!).sort(), [\"ECInstanceId\", \"ECClassId\", \"Origin\",\n \"Rotation\", \"BBoxLow\", \"BBoxHigh\", \"Pt3dProp\", \"BinProp\", \"GuidArrProp\", \"$meta\", \"LastMod\"].sort());\n assert.deepEqual(elemNew!.Pt3dProp, { X: 1, Y: 9.9, Z: 7.7 });\n assert.deepEqual(elemNew!.BinProp, new Uint8Array([0xaa, 0xbb, 0xcc, 0xdd]));\n assert.deepEqual(elemNew!.GuidArrProp, [\"ffffffff-0000-1111-2222-333344445555\"]);\n assert.deepEqual(elemNew!.Origin, { X: 0, Y: 0 });\n assert.deepEqual(elemNew!.BBoxLow, { X: 0, Y: 0 });\n assert.deepEqual(elemNew!.BBoxHigh, { X: 0, Y: 0 });\n assert.deepEqual(elemNew!.Rotation, 0);\n expect(elemNew!.LastMod).to.exist;\n assert.deepEqual([...elemNew!.$meta.changeFetchedPropNames].sort(), ['BBoxHigh', 'BBoxLow', 'BinProp', 'ECInstanceId', 'GuidArrProp', 'LastMod', 'Origin', 'Pt3dProp', 'Rotation'].sort());\n assert.equal(elemNew!.$meta.isIndirectChange, false);\n\n assert.equal(elemOld!.$meta.op, \"Updated\");\n assert.equal(elemOld!.$meta.stage, \"Old\");\n assert.deepEqual(Object.keys(elemOld!.$meta).sort(), [\"op\", \"tables\", \"changeIndexes\", \"stage\", \"propFilter\", \"rowOptions\", \"changeFetchedPropNames\", \"instanceKey\", \"isIndirectChange\"].sort());\n assert.deepEqual(Object.keys(elemOld!).sort(), [\"ECInstanceId\", \"ECClassId\", \"BinProp\", \"GuidArrProp\", \"$meta\",\n \"LastMod\"].sort());\n assert.deepEqual(elemOld!.BinProp, new Uint8Array([1, 2, 3, 4]));\n assert.deepEqual(elemOld!.GuidArrProp, [\n \"a1b2c3d4-e5f6-7890-abcd-ef1234567890\",\n \"bbbbbbbb-cccc-dddd-eeee-ffffffffffff\",\n ]);\n expect(elemOld!.LastMod).to.exist;\n assert.equal(elemOld!.$meta.isIndirectChange, false);\n assert.deepEqual([...elemOld!.$meta.changeFetchedPropNames].sort(), ['BBoxHigh', 'BBoxLow', 'BinProp', 'ECInstanceId', 'GuidArrProp', 'LastMod', 'Origin', 'Pt3dProp', 'Rotation'].sort());\n }\n\n // === openGroup: insert + update as a single stream ===\n // After merging, the elem New key is shared between insert-New and update-New;\n // the update-New wins on overlapping props, so the final New reflects the updated state.\n // elem Old only comes from the update changeset.\n {\n using reader = ChangesetReader.openLocalChanges({ db: rwIModel, includeInMemoryChanges: true, rowOptions: { abbreviateBlobs: false } });\n using pcu = new PartialChangeUnifier(ChangeUnifierCache.createSqliteBackedCache());\n while (reader.step())\n pcu.appendFrom(reader);\n const instances = Array.from(pcu.instances);\n\n const elemNew = instances.find((i) => i.ECInstanceId === elementId && i.$meta.stage === \"New\");\n const elemOld = instances.find((i) => i.ECInstanceId === elementId && i.$meta.stage === \"Old\");\n expect(elemNew).to.exist;\n expect(elemOld).to.not.exist;\n // New merges insert + update; final values are from the update\n assert.deepEqual(elemNew!.Pt3dProp, { X: 1, Y: 9.9, Z: 7.7 });\n assert.deepEqual(elemNew!.BinProp, new Uint8Array([0xaa, 0xbb, 0xcc, 0xdd]));\n assert.deepEqual(elemNew!.GuidArrProp, [\"ffffffff-0000-1111-2222-333344445555\"]);\n assert.deepEqual(elemNew!.Origin, { X: 0, Y: 0 });\n assert.deepEqual(elemNew!.BBoxLow, { X: 0, Y: 0 });\n assert.deepEqual(elemNew!.BBoxHigh, { X: 0, Y: 0 });\n assert.deepEqual(elemNew!.Rotation, 0);\n expect(elemNew!.LastMod).to.exist;\n expect(elemNew!.Category).to.exist;\n expect(elemNew!.CodeScope).to.exist;\n expect(elemNew!.CodeSpec).to.exist;\n expect(elemNew!.LastMod).to.exist;\n expect(elemNew!.Model).to.exist;\n expect(elemNew!.FederationGuid).to.exist;\n assert.deepEqual(Object.keys(elemNew!.$meta).sort(), [\"op\", \"tables\", \"changeIndexes\", \"stage\", \"propFilter\", \"rowOptions\", \"changeFetchedPropNames\", \"instanceKey\", \"isIndirectChange\"].sort());\n assert.equal(elemNew!.$meta.op, \"Inserted\");\n assert.equal(elemNew!.$meta.stage, \"New\");\n assert.deepEqual(elemNew!.$meta.tables.sort(), [\"bis_Element\", \"bis_GeometricElement2d\"].sort());\n assert.deepEqual(elemNew!.$meta.propFilter, PropertyFilter.All);\n assert.deepEqual(elemNew!.$meta.changeIndexes.sort(), [1, 2].sort());\n assert.deepEqual(elemNew!.$meta.rowOptions, { abbreviateBlobs: false });\n assert.deepEqual(Object.keys(elemNew!).sort(), [\"ECInstanceId\", \"ECClassId\", \"Model\", \"CodeSpec\",\n \"CodeScope\", \"FederationGuid\", \"$meta\", \"Category\", \"LastMod\",\n \"BinProp\", \"GuidArrProp\", \"Origin\", \"Rotation\", \"BBoxLow\", \"BBoxHigh\", \"Pt3dProp\"].sort());\n assert.deepEqual([...elemNew!.$meta.changeFetchedPropNames].sort(), ['BBoxHigh', 'BBoxLow',\n 'BinProp', 'Category.Id', 'CodeScope.Id', 'CodeSpec.Id',\n 'CodeValue', 'ECClassId', 'ECInstanceId', 'FederationGuid', 'GeometryStream',\n 'GuidArrProp', 'JsonProperties', 'LastMod', 'Model.Id', 'Origin', 'Parent', 'Pt3dProp',\n 'Rotation', 'TypeDefinition', 'UserLabel'].sort());\n assert.equal(elemNew!.$meta.isIndirectChange, false);\n }\n });\n});\n\ndescribe(\"ChangesetReader: behaviour in case imodel is not in sync with changeset file being read\", async () => {\n let rwIModel: BriefcaseDb;\n let rwIModelId: string;\n let elementId: Id64String;\n let drawingModelId: Id64String;\n let categoryId1: Id64String;\n let categoryId2: Id64String;\n let txn: EditTxn;\n\n before(async () => {\n HubMock.startup(\"ChangesetReaderBugsTest\", KnownTestLocations.outputDir);\n const adminToken = \"super manager token\";\n const iTwinId = HubMock.iTwinId;\n rwIModelId = await HubMock.createNewIModel({ iTwinId, iModelName: \"bugTest\", description: \"BugTest\", accessToken: adminToken });\n assert.isNotEmpty(rwIModelId);\n rwIModel = await HubWrappers.downloadAndOpenBriefcase({ iTwinId, iModelId: rwIModelId, accessToken: adminToken });\n txn = startTestTxn(rwIModel, \"ChangesetReaderBugsTest setup\");\n // Push 1: import schema + set up drawing model and two categories\n const schema = `<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n <ECSchema schemaName=\"TestDomain\" alias=\"ts\" version=\"01.00\" xmlns=\"http://www.bentley.com/schemas/Bentley.ECXML.3.1\">\n <ECSchemaReference name=\"BisCore\" version=\"01.00\" alias=\"bis\"/>\n <ECEntityClass typeName=\"Test2dElement\">\n <BaseClass>bis:GraphicalElement2d</BaseClass>\n <ECProperty propertyName=\"s\" typeName=\"point2d\"/>\n </ECEntityClass>\n </ECSchema>`;\n await importSchemaStrings(txn, [schema]);\n rwIModel.channels.addAllowedChannel(ChannelControl.sharedChannelName);\n\n await rwIModel.locks.acquireLocks({ shared: IModel.dictionaryId });\n const codeProps = Code.createEmpty();\n codeProps.value = \"DrawingModel\";\n [, drawingModelId] = IModelTestUtils.createAndInsertDrawingPartitionAndModel(txn, codeProps, true);\n\n categoryId1 = DrawingCategory.queryCategoryIdByName(rwIModel, IModel.dictionaryId, \"Category1\")\n ?? DrawingCategory.insert(txn, IModel.dictionaryId, \"Category1\", new SubCategoryAppearance({ color: ColorDef.fromString(\"rgb(255,0,0)\").toJSON() }));\n\n categoryId2 = DrawingCategory.queryCategoryIdByName(rwIModel, IModel.dictionaryId, \"Category2\")\n ?? DrawingCategory.insert(txn, IModel.dictionaryId, \"Category2\", new SubCategoryAppearance({ color: ColorDef.fromString(\"rgb(0,0,255)\").toJSON() }));\n\n txn.saveChanges(\"setup\");\n await rwIModel.pushChanges({ description: \"setup\", accessToken: adminToken });\n });\n\n after(() => {\n txn.end();\n rwIModel?.close();\n HubMock.shutdown();\n });\n\n it(\"openFile() reads the middle changeset of an insert → update → delete lifecycle\", async () => {\n const adminToken = \"super manager token\";\n // Push 2 (insert): insert element with category1\n const geomArray: Arc3d[] = [\n Arc3d.createXY(Point3d.create(0, 0), 5),\n Arc3d.createXY(Point3d.create(5, 5), 2),\n Arc3d.createXY(Point3d.create(-5, -5), 20),\n ];\n const geometryStream: GeometryStreamProps = [];\n for (const geom of geomArray)\n geometryStream.push(IModelJson.Writer.toIModelJson(geom));\n\n // Wait so that LastMod on bis_Model gets a distinct timestamp before the insert txn\n await new Promise((resolve) => setTimeout(resolve, 300));\n await rwIModel.locks.acquireLocks({ shared: drawingModelId });\n elementId = txn.insertElement({\n classFullName: \"TestDomain:Test2dElement\",\n model: drawingModelId,\n category: categoryId1,\n code: Code.createEmpty(),\n geom: geometryStream,\n s: { x: 1.5, y: 2.5 },\n } as any);\n assert.isTrue(Id64.isValidId64(elementId));\n txn.saveChanges(\"insert element\");\n await rwIModel.pushChanges({ description: \"insert element\", accessToken: adminToken });\n\n // Wait so that LastMod on bis_Model gets a distinct timestamp before the update txn\n await new Promise((resolve) => setTimeout(resolve, 300));\n // Push 3 (update): change category to category2\n await rwIModel.locks.acquireLocks({ exclusive: elementId });\n txn.updateElement({\n ...rwIModel.elements.getElementProps(elementId),\n category: categoryId2,\n });\n txn.saveChanges(\"update element\");\n await rwIModel.pushChanges({ description: \"update element\", accessToken: adminToken });\n\n // Wait so that LastMod on bis_Model gets a distinct timestamp before the delete txn\n await new Promise((resolve) => setTimeout(resolve, 300));\n // Push 4 (delete): delete the element\n await rwIModel.locks.acquireLocks({ exclusive: elementId });\n txn.deleteElement(elementId);\n txn.saveChanges(\"delete element\");\n await rwIModel.pushChanges({ description: \"delete element\", accessToken: adminToken });\n // changesets: [setup, insert, update, delete] — 4 total; index 2 = update changeset\n const targetDir = path.join(KnownTestLocations.outputDir, rwIModelId, \"changesets\");\n const changesets = await HubMock.downloadChangesets({ iModelId: rwIModelId, targetDir });\n expect(changesets.length).to.equal(4);\n const middleChangeset = changesets[Math.floor(changesets.length / 2)]; // index 2 = update\n\n using reader = ChangesetReader.openFile({ db: rwIModel, fileName: middleChangeset.pathname, propFilter: PropertyFilter.InstanceKey, rowOptions: { classIdsToClassNames: true } });\n using pcu = new PartialChangeUnifier(ChangeUnifierCache.createInMemoryCache());\n while (reader.step())\n pcu.appendFrom(reader);\n\n const instances = Array.from(pcu.instances);\n\n const bisElementOld = instances.filter((i) => i.ECInstanceId === elementId && i.$meta.stage === \"Old\");\n const bisElementNew = instances.filter((i) => i.ECInstanceId === elementId && i.$meta.stage === \"New\");\n expect(bisElementOld).to.exist;\n expect(bisElementNew).to.exist;\n expect(bisElementOld).to.have.lengthOf(2);\n expect(bisElementNew).to.have.lengthOf(2);\n // Why this is happening?\n // We have deleted the instance from the db when the changeset is opened\n // So we are unable to fetch the correct classId for the instance\n // and it is defaulting to the base class of the deleted instance which is \"BisCore.Element\" and \"BisCore.GeometricElement2d\" instead of \"TestDomain.Test2dElement\"\n // If the instance had not been deleted, we would have been able to fetch the correct classId for the instance and it would have been \"TestDomain.Test2dElement\"\n // And we would have just two entries for the instance with classId \"TestDomain.Test2dElement\" , one wioth stage \"New\" and other with \"old\"\n expect(bisElementNew.map((i => i.ECClassId)).sort()).to.deep.equal([\"BisCore.GeometricElement2d\", \"BisCore.Element\"].sort());\n expect(bisElementOld.map((i => i.ECClassId)).sort()).to.deep.equal([\"BisCore.GeometricElement2d\", \"BisCore.Element\"].sort());\n });\n\n it(\"openTxn() reads the middle txn of an insert → update → update lifecycle\", async () => {\n // Push 2 (insert): insert element with category1\n const geomArray: Arc3d[] = [\n Arc3d.createXY(Point3d.create(0, 0), 5),\n Arc3d.createXY(Point3d.create(5, 5), 2),\n Arc3d.createXY(Point3d.create(-5, -5), 20),\n ];\n const geometryStream: GeometryStreamProps = [];\n for (const geom of geomArray)\n geometryStream.push(IModelJson.Writer.toIModelJson(geom));\n\n // Wait so that LastMod on bis_Model gets a distinct timestamp before the insert txn\n await new Promise((resolve) => setTimeout(resolve, 300));\n await rwIModel.locks.acquireLocks({ shared: drawingModelId });\n elementId = txn.insertElement({\n classFullName: \"TestDomain:Test2dElement\",\n model: drawingModelId,\n category: categoryId1,\n code: Code.createEmpty(),\n geom: geometryStream,\n s: { x: 1.5, y: 2.5 },\n } as any);\n assert.isTrue(Id64.isValidId64(elementId));\n txn.saveChanges(\"insert element\");\n // Wait so that LastMod on bis_Model gets a distinct timestamp before the update txn\n await new Promise((resolve) => setTimeout(resolve, 300));\n\n await rwIModel.locks.acquireLocks({ exclusive: elementId });\n txn.updateElement({\n ...rwIModel.elements.getElementProps(elementId),\n s: { x: 100.0, y: 2.5 },\n });\n txn.saveChanges(\"update element\");\n const txnId = rwIModel.txns.getLastSavedTxnProps()!.id;\n assert.isTrue(Id64.isValidId64(txnId));\n\n // Wait so that LastMod on bis_Model gets a distinct timestamp before the update txn\n await new Promise((resolve) => setTimeout(resolve, 300));\n\n await rwIModel.locks.acquireLocks({ exclusive: elementId });\n txn.updateElement({\n ...rwIModel.elements.getElementProps(elementId),\n s: { x: 100.0, y: 200.0 },\n });\n txn.saveChanges(\"update element\");\n\n using reader = ChangesetReader.openTxn({ db: rwIModel, txnId });\n using pcu = new PartialChangeUnifier(ChangeUnifierCache.createInMemoryCache());\n while (reader.step())\n pcu.appendFrom(reader);\n\n const instances = Array.from(pcu.instances);\n\n const elementOld = instances.find((i) => i.ECInstanceId === elementId && i.$meta.stage === \"Old\");\n const elementNew = instances.find((i) => i.ECInstanceId === elementId && i.$meta.stage === \"New\");\n expect(elementOld).to.exist;\n expect(elementNew).to.exist;\n // Here as we can see that we correctly captured old value of s.X which is 1.5 and new value of s.X which is 100.0\n // But the Y value, though same is a bit different, it is 200\n // Because in liveDB we have done another tyransaction after the one which we have opened\n // In that transaction we have updated the Y value to 200, so when we are fetching the changes for the opened transaction,\n // we are getting the latest value of Y which is 200 instead of 2.5\n assert.deepEqual(elementOld!.s, { X: 1.5, Y: 200 });\n assert.deepEqual(elementNew!.s, { X: 100, Y: 200 });\n // But we can find the exact stuff which actually changed and which we fetched from the changeset and not the live DB\n // using the changeFetchedPropNames, we can find that only s.X was changed in the changeset and s.Y was not changed in the changeset.\n expect(elementNew!.$meta.changeFetchedPropNames).to.include(\"s.X\");\n expect(elementNew!.$meta.changeFetchedPropNames).to.not.include(\"s.Y\");\n expect(elementOld!.$meta.changeFetchedPropNames).to.include(\"s.X\");\n expect(elementOld!.$meta.changeFetchedPropNames).to.not.include(\"s.Y\");\n });\n});\n\ndescribe(\"ChangesetReader: overflow table graceful recovery when ExclusiveRootClassId is NULL\", () => {\n let rwIModel: BriefcaseDb;\n let rwIModelId: string;\n let txn: EditTxn;\n let updateChangesetPathname: string;\n let id: string;\n\n before(async () => {\n HubMock.startup(\"ECChangesetOverflowNull\", KnownTestLocations.outputDir);\n const adminToken = \"super manager token\";\n const iTwinId = HubMock.iTwinId;\n const nProps = 36; // enough to spill into the overflow table\n\n rwIModelId = await HubMock.createNewIModel({ iTwinId, iModelName: \"overflowNull\", description: \"OverflowNull\", accessToken: adminToken });\n rwIModel = await HubWrappers.downloadAndOpenBriefcase({ iTwinId, iModelId: rwIModelId, accessToken: adminToken });\n txn = startTestTxn(rwIModel, \"overflow null test\");\n\n // Import schema with class that spans the overflow table (36 properties)\n const schema = `<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n <ECSchema schemaName=\"TestDomain\" alias=\"ts\" version=\"01.00\" xmlns=\"http://www.bentley.com/schemas/Bentley.ECXML.3.1\">\n <ECSchemaReference name=\"BisCore\" version=\"01.00\" alias=\"bis\"/>\n <ECEntityClass typeName=\"Test2dElement\">\n <BaseClass>bis:GraphicalElement2d</BaseClass>\n ${Array(nProps).fill(undefined).map((_, i) => `<ECProperty propertyName=\"p${i}\" typeName=\"string\"/>`).join(\"\\n\")}\n </ECEntityClass>\n </ECSchema>`;\n await importSchemaStrings(txn, [schema]);\n rwIModel.channels.addAllowedChannel(ChannelControl.sharedChannelName);\n\n await rwIModel.locks.acquireLocks({ shared: IModel.dictionaryId });\n const codeProps = Code.createEmpty();\n codeProps.value = \"DrawingModel\";\n const [, drawingModelId] = IModelTestUtils.createAndInsertDrawingPartitionAndModel(txn, codeProps, true);\n let drawingCategoryId = DrawingCategory.queryCategoryIdByName(rwIModel, IModel.dictionaryId, \"OverflowNullCat\");\n if (undefined === drawingCategoryId)\n drawingCategoryId = DrawingCategory.insert(txn, IModel.dictionaryId, \"OverflowNullCat\", new SubCategoryAppearance({ color: ColorDef.fromString(\"rgb(255,0,0)\").toJSON() }));\n\n const geom: GeometryStreamProps = [\n Arc3d.createXY(Point3d.create(0, 0), 5),\n Arc3d.createXY(Point3d.create(5, 5), 2),\n Arc3d.createXY(Point3d.create(-5, -5), 20),\n ].map((a) => IModelJson.Writer.toIModelJson(a));\n\n const props = Array(nProps).fill(undefined).map((_, i) => ({ [`p${i}`]: `test_${i}` })).reduce((acc, curr) => ({ ...acc, ...curr }), {});\n\n // Wait so that LastMod on bis_Model gets a distinct timestamp before the insert txn\n await new Promise((resolve) => setTimeout(resolve, 300));\n // Push 1: insert element\n await rwIModel.locks.acquireLocks({ shared: drawingModelId });\n id = txn.insertElement({\n classFullName: \"TestDomain:Test2dElement\",\n model: drawingModelId,\n category: drawingCategoryId,\n code: Code.createEmpty(),\n geom,\n ...props,\n } as any);\n assert.isTrue(Id64.isValidId64(id));\n txn.saveChanges();\n await rwIModel.pushChanges({ description: \"insert element\", accessToken: adminToken });\n\n // Push 2: update element — this is the changeset we will read against the broken iModel\n const updatedProps = Object.assign(\n rwIModel.elements.getElementProps(id),\n Array(nProps).fill(undefined).map((_, i) => ({ [`p${i}`]: `updated_${i}` })).reduce((acc, curr) => ({ ...acc, ...curr }), {}),\n );\n // Wait so that LastMod on bis_Model gets a distinct timestamp before the update txn\n await new Promise((resolve) => setTimeout(resolve, 300));\n await rwIModel.locks.acquireLocks({ exclusive: id });\n txn.updateElement(updatedProps);\n txn.saveChanges();\n await rwIModel.pushChanges({ description: \"update element\", accessToken: adminToken });\n\n // Wait so that LastMod on bis_Model gets a distinct timestamp before the delete txn\n await new Promise((resolve) => setTimeout(resolve, 300));\n // Push 3: delete element (so the iModel is out of sync when we re-read push 2)\n await rwIModel.locks.acquireLocks({ exclusive: id });\n txn.deleteElement(id);\n txn.saveChanges();\n await rwIModel.pushChanges({ description: \"delete element\", accessToken: adminToken });\n\n const targetDir = path.join(KnownTestLocations.outputDir, rwIModelId, \"changesets\");\n const changesets = await HubMock.downloadChangesets({ iModelId: rwIModelId, targetDir });\n // changesets: [insert, update, delete] — index 1 = update changeset\n updateChangesetPathname = changesets[1].pathname;\n });\n\n after(() => {\n txn.end();\n rwIModel?.close();\n HubMock.shutdown();\n });\n\n it(\"openFile() recovers gracefully when ExclusiveRootClassId is NULL for overflow table\", () => {\n /**\n * Simulate the broken state: clear ExclusiveRootClassId so the reader cannot\n * determine which derived class owns the overflow table rows.\n * The reader should fall back gracefully rather than crashing, and still\n * produce inserted/deleted instances for the overflow table rows.\n */\n expect(\n rwIModel[_nativeDb].executeSql(\"UPDATE ec_Table SET ExclusiveRootClassId=NULL WHERE Name='bis_GeometricElement2d_Overflow'\"),\n ).to.equal(DbResult.BE_SQLITE_OK);\n\n let assertedOnOverflowTable = false;\n\n using reader = ChangesetReader.openFile({ db: rwIModel, fileName: updateChangesetPathname });\n while (reader.step()) {\n if (reader.tableName !== \"bis_GeometricElement2d_Overflow\")\n continue;\n\n assert.equal(reader.op, \"Updated\");\n\n // inserted (New stage)\n expect(reader.inserted).to.exist;\n assert.deepEqual(reader.inserted!.$meta.tables, [\"bis_GeometricElement2d_Overflow\"]);\n assert.equal(reader.inserted!.$meta.op, \"Updated\");\n assert.equal(reader.inserted!.$meta.stage, \"New\");\n assert.equal(reader.inserted!.ECInstanceId, id);\n assert.equal(rwIModel.getClassNameFromId(reader.inserted!.ECClassId), \"BisCore:GeometricElement2d\");\n\n // deleted (Old stage)\n expect(reader.deleted).to.exist;\n assert.deepEqual(reader.deleted!.$meta.tables, [\"bis_GeometricElement2d_Overflow\"]);\n assert.equal(reader.deleted!.$meta.op, \"Updated\");\n assert.equal(reader.deleted!.$meta.stage, \"Old\");\n assert.equal(reader.deleted!.ECInstanceId, id);\n assert.equal(rwIModel.getClassNameFromId(reader.deleted!.ECClassId), \"BisCore:GeometricElement2d\");\n\n assertedOnOverflowTable = true;\n }\n\n assert.isTrue(assertedOnOverflowTable, \"Expected at least one row from the overflow table\");\n });\n});\n\ndescribe(\"ChangesetReader: instance reused with a different class (class change in Updated row)\", () => {\n it(\"openFile() correctly identifies ECClassId change from T1 to T2 in a buggy changeset\", async () => {\n /**\n * Same scenario as ChangesetReader.test.ts: \"Instance update to a different class (bug)\".\n * Verifies ChangesetReader behaviour when an instance ID is reused with a different class.\n *\n * Steps:\n * 1. Import schema with two classes (T1 and T2) that inherit from GraphicalElement2d.\n * - T1 has property 'p' of type string\n * - T2 has property 'p' of type long\n * 2. Insert a T1 element, push changeset #1.\n * 3. Delete the T1 element, reset the ID sequence to force ID reuse, insert T2 with same ID, push changeset #2.\n *\n * ChangesetReader should:\n * - Report op=Updated for bis_Element and bis_GeometricElement2d rows.\n * - inserted.ECClassId resolves to T2, deleted.ECClassId resolves to T1.\n * - Property p: inserted carries the T2 integer value (1111), deleted carries the T1 string value (\"wwww\").\n */\n HubMock.startup(\"ChangesetReaderClassChange\", KnownTestLocations.outputDir);\n const adminToken = \"super manager token\";\n const iTwinId = HubMock.iTwinId;\n\n const modelId = await HubMock.createNewIModel({ iTwinId, iModelName: \"classChange\", description: \"ClassChange\", accessToken: adminToken });\n assert.isNotEmpty(modelId);\n\n let b1 = await HubWrappers.downloadAndOpenBriefcase({ iTwinId, iModelId: modelId, accessToken: adminToken });\n let txn = startTestTxn(b1, \"class change test\");\n\n const schema = `<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n <ECSchema schemaName=\"TestDomain\" alias=\"ts\" version=\"01.00\" xmlns=\"http://www.bentley.com/schemas/Bentley.ECXML.3.1\">\n <ECSchemaReference name=\"BisCore\" version=\"01.00\" alias=\"bis\"/>\n <ECEntityClass typeName=\"T1\">\n <BaseClass>bis:GraphicalElement2d</BaseClass>\n <ECProperty propertyName=\"p\" typeName=\"string\"/>\n </ECEntityClass>\n <ECEntityClass typeName=\"T2\">\n <BaseClass>bis:GraphicalElement2d</BaseClass>\n <ECProperty propertyName=\"p\" typeName=\"long\"/>\n </ECEntityClass>\n </ECSchema>`;\n\n await importSchemaStrings(txn, [schema]);\n b1.channels.addAllowedChannel(ChannelControl.sharedChannelName);\n\n await b1.locks.acquireLocks({ shared: IModel.dictionaryId });\n const codeProps = Code.createEmpty();\n codeProps.value = \"DrawingModel\";\n const [, drawingModelId] = IModelTestUtils.createAndInsertDrawingPartitionAndModel(txn, codeProps, true);\n let drawingCategoryId = DrawingCategory.queryCategoryIdByName(b1, IModel.dictionaryId, \"MyDrawingCategory\");\n if (undefined === drawingCategoryId)\n drawingCategoryId = DrawingCategory.insert(txn, IModel.dictionaryId, \"MyDrawingCategory\", new SubCategoryAppearance({ color: ColorDef.fromString(\"rgb(255,0,0)\").toJSON() }));\n\n const geom: GeometryStreamProps = [\n Arc3d.createXY(Point3d.create(0, 0), 5),\n Arc3d.createXY(Point3d.create(5, 5), 2),\n Arc3d.createXY(Point3d.create(-5, -5), 20),\n ].map((a) => IModelJson.Writer.toIModelJson(a));\n\n // Wait so that LastMod on bis_Model gets a distinct timestamp before the insert txn\n await new Promise((resolve) => setTimeout(resolve, 300));\n // Push 1: insert T1 element\n await b1.locks.acquireLocks({ shared: drawingModelId });\n const elId = txn.insertElement({\n classFullName: \"TestDomain:T1\",\n model: drawingModelId,\n category: drawingCategoryId,\n code: Code.createEmpty(),\n geom,\n p: \"wwww\",\n } as any);\n assert.isTrue(Id64.isValidId64(elId));\n txn.saveChanges();\n await b1.pushChanges({ description: \"insert element\" });\n\n // Wait so that LastMod on bis_Model gets a distinct timestamp before the delete txn\n await new Promise((resolve) => setTimeout(resolve, 300));\n // Push 2: delete T1 element, reset ID sequence to force same ID, insert T2\n await b1.locks.acquireLocks({ shared: drawingModelId, exclusive: elId });\n await b1.locks.acquireLocks({ shared: IModel.dictionaryId });\n txn.deleteElement(elId);\n txn.saveChanges();\n\n // Force ID sequence so the next insert reuses elId\n const bid = BigInt(elId) - 1n;\n b1[_nativeDb].saveLocalValue(\"bis_elementidsequence\", bid.toString());\n txn.saveChanges();\n const fileName = b1[_nativeDb].getFilePath();\n txn.end();\n b1.close();\n\n b1 = await BriefcaseDb.open({ fileName });\n b1.channels.addAllowedChannel(ChannelControl.sharedChannelName);\n txn = startTestTxn(b1, \"class change test reopened\");\n\n // Wait so that LastMod on bis_Model gets a distinct timestamp before the INSERT txn\n await new Promise((resolve) => setTimeout(resolve, 300));\n const elId2 = txn.insertElement({\n classFullName: \"TestDomain:T2\",\n model: drawingModelId,\n category: drawingCategoryId,\n code: Code.createEmpty(),\n geom,\n p: 1111,\n } as any);\n expect(elId2).to.equal(elId);\n txn.saveChanges();\n await b1.pushChanges({ description: \"buggy changeset\" });\n\n const targetDir = path.join(KnownTestLocations.outputDir, modelId, \"changesets\");\n const changesets = await HubMock.downloadChangesets({ iModelId: modelId, targetDir });\n expect(changesets.length).to.equal(2);\n expect(changesets[0].description).to.equal(\"insert element\");\n expect(changesets[1].description).to.equal(\"buggy changeset\");\n\n // ChangesetReader reads ECClassId from the changeset data for each stage,\n // so it correctly sees T2 for the new (inserted) side and T1 for the old (deleted) side.\n let bisElementAsserted = false;\n let bisGeomElement2dAsserted = false;\n\n using reader = ChangesetReader.openFile({ db: b1, fileName: changesets[1].pathname });\n while (reader.step()) {\n if (reader.tableName === \"bis_Element\" && reader.op === \"Updated\") {\n bisElementAsserted = true;\n expect(reader.inserted).to.exist;\n expect(reader.deleted).to.exist;\n // ECInstanceId: PK was not changed in the update — only available on the Old side\n assert.equal(reader.deleted!.ECInstanceId, elId);\n // ECClassId correctly reflects the class change\n assert.equal(b1.getClassNameFromId(reader.inserted!.ECClassId), \"TestDomain:T2\");\n assert.equal(b1.getClassNameFromId(reader.deleted!.ECClassId), \"TestDomain:T1\");\n }\n if (reader.tableName === \"bis_GeometricElement2d\" && reader.op === \"Updated\") {\n bisGeomElement2dAsserted = true;\n expect(reader.inserted).to.exist;\n expect(reader.deleted).to.exist;\n // ECClassId correctly reflects the class change\n assert.equal(b1.getClassNameFromId(reader.inserted!.ECClassId), \"TestDomain:T2\");\n assert.equal(b1.getClassNameFromId(reader.deleted!.ECClassId), \"TestDomain:T1\");\n // Property 'p': T2 declares it as long (integer), T1 as string\n assert.equal(reader.inserted!.p, 1111);\n assert.equal(reader.deleted!.p, \"wwww\");\n }\n }\n\n assert.isTrue(bisElementAsserted, \"Expected an Updated row in bis_Element\");\n assert.isTrue(bisGeomElement2dAsserted, \"Expected an Updated row in bis_GeometricElement2d\");\n\n txn.end();\n b1.close();\n HubMock.shutdown();\n });\n});\n\ndescribe(\"ChangesetReader: overflow table insert and update and delete\", () => {\n let rwIModel: BriefcaseDb;\n let elementId: Id64String;\n let drawingModelId: Id64String;\n let drawingCategoryId: Id64String;\n let insertTxnId: string;\n let updateTxnId: string;\n let txn: EditTxn;\n\n const nProps = 36;\n const propName = (i: number) => `p${i}`;\n const insertVal = (i: number) => `insert-${i}`;\n const updateVal = (i: number) => `updated-${i}`;\n\n before(async () => {\n HubMock.startup(\"ECChangesetOverflowInsertUpdate\", KnownTestLocations.outputDir);\n const adminToken = \"super manager token\";\n const iTwinId = HubMock.iTwinId;\n const rwIModelId = await HubMock.createNewIModel({ iTwinId, iModelName: \"overflowInsertUpdate\", description: \"overflowInsertUpdate\", accessToken: adminToken });\n rwIModel = await HubWrappers.downloadAndOpenBriefcase({ iTwinId, iModelId: rwIModelId, accessToken: adminToken });\n txn = startTestTxn(rwIModel, \"ChangesetReader overflow insert/update\");\n\n // 36 string properties — enough to spill columns into bis_GeometricElement2d_Overflow\n const schema = `<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n <ECSchema schemaName=\"TestDomain\" alias=\"ts\" version=\"01.00\" xmlns=\"http://www.bentley.com/schemas/Bentley.ECXML.3.1\">\n <ECSchemaReference name=\"BisCore\" version=\"01.00\" alias=\"bis\"/>\n <ECEntityClass typeName=\"OverflowElement\">\n <BaseClass>bis:GraphicalElement2d</BaseClass>\n ${Array.from({ length: nProps }, (_, i) => `<ECProperty propertyName=\"${propName(i)}\" typeName=\"string\"/>`).join(\"\\n \")}\n </ECEntityClass>\n </ECSchema>`;\n await importSchemaStrings(txn, [schema]);\n rwIModel.channels.addAllowedChannel(ChannelControl.sharedChannelName);\n\n await rwIModel.locks.acquireLocks({ shared: IModel.dictionaryId });\n const codeProps = Code.createEmpty();\n codeProps.value = \"OverflowDrawing\";\n [, drawingModelId] = IModelTestUtils.createAndInsertDrawingPartitionAndModel(txn, codeProps, true);\n const foundCat = DrawingCategory.queryCategoryIdByName(rwIModel, IModel.dictionaryId, \"OverflowCat\");\n drawingCategoryId = foundCat ?? DrawingCategory.insert(txn, IModel.dictionaryId, \"OverflowCat\",\n new SubCategoryAppearance({ color: ColorDef.fromString(\"rgb(0,128,0)\").toJSON() }));\n txn.saveChanges(\"setup\");\n\n // Txn 2: insert element with every property populated\n await rwIModel.locks.acquireLocks({ shared: drawingModelId });\n const geom: GeometryStreamProps = [\n Arc3d.createXY(Point3d.create(0, 0), 5),\n ].map((a) => IModelJson.Writer.toIModelJson(a));\n const insertProps = Object.fromEntries(Array.from({ length: nProps }, (_, i) => [propName(i), insertVal(i)]));\n // Wait so that LastMod on bis_Model gets a distinct timestamp before the insert txn\n await new Promise((resolve) => setTimeout(resolve, 300));\n\n elementId = txn.insertElement({\n classFullName: \"TestDomain:OverflowElement\",\n model: drawingModelId,\n category: drawingCategoryId,\n code: Code.createEmpty(),\n geom,\n ...insertProps,\n } as any);\n txn.saveChanges(\"insert overflow element\");\n insertTxnId = rwIModel.txns.getLastSavedTxnProps()!.id;\n\n // Wait so that LastMod on bis_Model gets a distinct timestamp before the UPDATE txn\n await new Promise((resolve) => setTimeout(resolve, 300));\n // Txn 3: update only the overflow-table properties (p34, p35 — the last two)\n await rwIModel.locks.acquireLocks({ exclusive: elementId });\n txn.updateElement({\n ...rwIModel.elements.getElementProps(elementId),\n [propName(34)]: updateVal(34),\n [propName(35)]: updateVal(35),\n });\n txn.saveChanges(\"update overflow props\");\n updateTxnId = rwIModel.txns.getLastSavedTxnProps()!.id;\n });\n\n after(() => {\n txn.end();\n rwIModel?.close();\n HubMock.shutdown();\n });\n\n it(\"txn | bis_GeometricElement2d_Overflow rows merged; overflow props correct in New and Old\", async () => {\n // --- update txn ---\n const updateInstances = readTxn(rwIModel, updateTxnId, undefined, { classIdsToClassNames: true });\n assert.equal(updateInstances.length, 4);\n\n // DrawingModel Updated New (indirect side-effect)\n const updateModelNew = updateInstances.find((i) => i.ECClassId === \"BisCore.DrawingModel\" && i.$meta.stage === \"New\");\n expect(updateModelNew).to.exist;\n assert.equal(updateModelNew!.$meta.op, \"Updated\");\n assert.isString(updateModelNew!.LastMod);\n assert.deepEqual(Object.keys(updateModelNew!).sort(), [\"ECInstanceId\", \"ECClassId\", \"LastMod\", \"$meta\"].sort());\n assert.deepEqual([...updateModelNew!.$meta.tables], [\"bis_Model\"]);\n assert.deepEqual([...updateModelNew!.$meta.changeFetchedPropNames].sort(), [\"ECInstanceId\", \"LastMod\"].sort());\n assert.deepEqual(updateModelNew!.$meta.rowOptions, { classIdsToClassNames: true });\n assert.equal(updateModelNew!.$meta.isIndirectChange, true);\n\n // DrawingModel Updated Old\n const updateModelOld = updateInstances.find((i) => i.ECClassId === \"BisCore.DrawingModel\" && i.$meta.stage === \"Old\");\n expect(updateModelOld).to.exist;\n assert.equal(updateModelOld!.$meta.op, \"Updated\");\n assert.isString(updateModelOld!.LastMod);\n assert.deepEqual(Object.keys(updateModelOld!).sort(), [\"ECInstanceId\", \"ECClassId\", \"LastMod\", \"$meta\"].sort());\n assert.deepEqual([...updateModelOld!.$meta.tables], [\"bis_Model\"]);\n assert.deepEqual([...updateModelOld!.$meta.changeFetchedPropNames].sort(), [\"ECInstanceId\", \"LastMod\"].sort());\n assert.equal(updateModelOld!.$meta.isIndirectChange, true);\n\n // OverflowElement Updated New\n const elemNew = updateInstances.find((i) => i.ECInstanceId === elementId && i.$meta.stage === \"New\");\n expect(elemNew).to.exist;\n assert.equal(elemNew!.ECClassId, \"TestDomain.OverflowElement\");\n assert.equal(elemNew!.$meta.op, \"Updated\");\n assert.equal(elemNew!.$meta.isIndirectChange, false);\n assert.deepEqual(elemNew!.$meta.rowOptions, { classIdsToClassNames: true });\n // Only bis_Element (LastMod) and bis_GeometricElement2d_Overflow (p34, p35) were touched\n assert.deepEqual([...elemNew!.$meta.tables].sort(), [\"bis_Element\", \"bis_GeometricElement2d_Overflow\"].sort());\n assert.deepEqual([...elemNew!.$meta.changeIndexes].sort(), [1, 2].sort());\n // changeFetchedPropNames: only the props that changed\n assert.deepEqual([...elemNew!.$meta.changeFetchedPropNames].sort(), [\"ECInstanceId\", \"LastMod\", \"p34\", \"p35\"].sort());\n // New stage has updated values for the two overflow props\n assert.equal(elemNew![propName(34)], updateVal(34));\n assert.equal(elemNew![propName(35)], updateVal(35));\n // Other props (p0–p33) are not present — not part of the delta\n assert.isUndefined(elemNew![propName(0)]);\n assert.deepEqual(Object.keys(elemNew!).sort(), [\"ECInstanceId\", \"ECClassId\", \"LastMod\", \"p34\", \"p35\", \"$meta\"].sort());\n\n // OverflowElement Updated Old\n const elemOld = updateInstances.find((i) => i.ECInstanceId === elementId && i.$meta.stage === \"Old\");\n expect(elemOld).to.exist;\n assert.equal(elemOld!.ECClassId, \"TestDomain.OverflowElement\");\n assert.equal(elemOld!.$meta.op, \"Updated\");\n assert.equal(elemOld!.$meta.isIndirectChange, false);\n assert.deepEqual([...elemOld!.$meta.tables].sort(), [\"bis_Element\", \"bis_GeometricElement2d_Overflow\"].sort());\n assert.deepEqual([...elemOld!.$meta.changeFetchedPropNames].sort(), [\"ECInstanceId\", \"LastMod\", \"p34\", \"p35\"].sort());\n // Old stage has the pre-update (insert) values for the two overflow props\n assert.equal(elemOld![propName(34)], insertVal(34));\n assert.equal(elemOld![propName(35)], insertVal(35));\n assert.isUndefined(elemOld![propName(0)]);\n assert.deepEqual(Object.keys(elemOld!).sort(), [\"ECInstanceId\", \"ECClassId\", \"LastMod\", \"p34\", \"p35\", \"$meta\"].sort());\n\n // --- insert txn ---\n const insertInstances = readTxn(rwIModel, insertTxnId, undefined, { classIdsToClassNames: true });\n assert.equal(insertInstances.length, 3);\n\n // DrawingModel Updated New (indirect side-effect of inserting into the model)\n const modelNew = insertInstances.find((i) => i.ECClassId === \"BisCore.DrawingModel\" && i.$meta.stage === \"New\");\n expect(modelNew).to.exist;\n assert.equal(modelNew!.$meta.op, \"Updated\");\n assert.isString(modelNew!.LastMod);\n assert.isString(modelNew!.GeometryGuid);\n assert.deepEqual([...modelNew!.$meta.tables], [\"bis_Model\"]);\n assert.deepEqual([...modelNew!.$meta.changeFetchedPropNames].sort(), [\"ECInstanceId\", \"LastMod\", \"GeometryGuid\"].sort());\n assert.deepEqual(modelNew!.$meta.rowOptions, { classIdsToClassNames: true });\n assert.equal(modelNew!.$meta.isIndirectChange, true);\n\n // DrawingModel Updated Old\n const modelOld = insertInstances.find((i) => i.ECClassId === \"BisCore.DrawingModel\" && i.$meta.stage === \"Old\");\n expect(modelOld).to.exist;\n assert.equal(modelOld!.$meta.op, \"Updated\");\n assert.deepEqual(Object.keys(modelOld!).sort(), [\"ECInstanceId\", \"ECClassId\", \"$meta\"].sort());\n assert.deepEqual([...modelOld!.$meta.tables], [\"bis_Model\"]);\n assert.equal(modelOld!.$meta.isIndirectChange, true);\n\n // OverflowElement Inserted New — key assertions\n const insertElem = insertInstances.find((i) => i.ECInstanceId === elementId && i.$meta.stage === \"New\");\n expect(insertElem).to.exist;\n assert.equal(insertElem!.ECClassId, \"TestDomain.OverflowElement\");\n assert.equal(insertElem!.$meta.op, \"Inserted\");\n assert.equal(insertElem!.$meta.stage, \"New\");\n assert.equal(insertElem!.$meta.isIndirectChange, false);\n assert.deepEqual(insertElem!.$meta.rowOptions, { classIdsToClassNames: true });\n\n // All three physical tables (including overflow) contributed to this insert\n assert.deepEqual([...insertElem!.$meta.tables].sort(), [\"bis_Element\", \"bis_GeometricElement2d\", \"bis_GeometricElement2d_Overflow\"].sort());\n assert.deepEqual([...insertElem!.$meta.changeIndexes].sort(), [1, 2, 3].sort());\n\n // changeFetchedPropNames includes all 36 domain props\n const fetchedProps = [...insertElem!.$meta.changeFetchedPropNames];\n for (let i = 0; i < nProps; i++) {\n assert.include(fetchedProps, propName(i), `changeFetchedPropNames should contain p${i}`);\n }\n\n // All 36 domain props carry the insert values\n for (let i = 0; i < nProps; i++) {\n assert.equal(insertElem![propName(i)], insertVal(i), `p${i} should be '${insertVal(i)}'`);\n }\n\n // Spot-check BIS properties\n assert.equal(insertElem!.Model.Id, drawingModelId);\n assert.equal(insertElem!.Model.RelECClassId, \"BisCore.ModelContainsElements\");\n assert.equal(insertElem!.Category.Id, drawingCategoryId);\n assert.equal(insertElem!.Category.RelECClassId, \"BisCore.GeometricElement2dIsInCategory\");\n assert.equal(insertElem!.CodeSpec.Id, \"0x1\");\n assert.equal(insertElem!.CodeSpec.RelECClassId, \"BisCore.CodeSpecSpecifiesCode\");\n assert.equal(insertElem!.CodeScope.Id, \"0x1\");\n assert.equal(insertElem!.CodeScope.RelECClassId, \"BisCore.ElementScopesCode\");\n assert.isString(insertElem!.FederationGuid);\n assert.isString(insertElem!.LastMod);\n assert.deepEqual(insertElem!.Origin, { X: 0, Y: 0 });\n assert.equal(insertElem!.Rotation, 0);\n assert.deepEqual(insertElem!.BBoxLow, { X: -5, Y: -5 });\n assert.deepEqual(insertElem!.BBoxHigh, { X: 5, Y: 5 });\n assert.include(String(insertElem!.GeometryStream), \"\\\"bytes\\\"\");\n\n // --- delete txn ---\n // Wait so that LastMod on bis_Model gets a distinct timestamp before the delete txn\n await new Promise((resolve) => setTimeout(resolve, 300));\n await rwIModel.locks.acquireLocks({ exclusive: elementId });\n txn.deleteElement(elementId);\n txn.saveChanges(\"delete overflow element\");\n const deleteTxnId = rwIModel.txns.getLastSavedTxnProps()!.id;\n\n const deleteInstances = readTxn(rwIModel, deleteTxnId, undefined, { classIdsToClassNames: true });\n // DrawingModel Updated New + Old (indirect) + OverflowElement Deleted Old\n assert.equal(deleteInstances.length, 3);\n\n // DrawingModel Updated New (indirect side-effect)\n const updateModelNewForDelete = deleteInstances.find((i) => i.ECClassId === \"BisCore.DrawingModel\" && i.$meta.stage === \"New\");\n expect(updateModelNewForDelete).to.exist;\n assert.equal(updateModelNewForDelete!.$meta.op, \"Updated\");\n assert.isString(updateModelNewForDelete!.LastMod);\n assert.isString(updateModelNewForDelete!.GeometryGuid);\n assert.deepEqual(Object.keys(updateModelNewForDelete!).sort(), [\"ECInstanceId\", \"ECClassId\", \"LastMod\", \"$meta\", \"GeometryGuid\"].sort());\n assert.deepEqual([...updateModelNewForDelete!.$meta.tables], [\"bis_Model\"]);\n assert.deepEqual([...updateModelNewForDelete!.$meta.changeFetchedPropNames].sort(), [\"ECInstanceId\", \"LastMod\", \"GeometryGuid\"].sort());\n assert.deepEqual(updateModelNewForDelete!.$meta.rowOptions, { classIdsToClassNames: true });\n assert.equal(updateModelNewForDelete!.$meta.isIndirectChange, true);\n\n // DrawingModel Updated Old\n const updateModelOldForDelete = deleteInstances.find((i) => i.ECClassId === \"BisCore.DrawingModel\" && i.$meta.stage === \"Old\");\n expect(updateModelOldForDelete).to.exist;\n assert.equal(updateModelOldForDelete!.$meta.op, \"Updated\");\n assert.isString(updateModelOldForDelete!.LastMod);\n assert.isString(updateModelNewForDelete!.GeometryGuid);\n assert.deepEqual(Object.keys(updateModelOldForDelete!).sort(), [\"ECInstanceId\", \"ECClassId\", \"LastMod\", \"$meta\", \"GeometryGuid\"].sort());\n assert.deepEqual([...updateModelOldForDelete!.$meta.tables], [\"bis_Model\"]);\n assert.deepEqual([...updateModelOldForDelete!.$meta.changeFetchedPropNames].sort(), [\"ECInstanceId\", \"LastMod\", \"GeometryGuid\"].sort());\n assert.equal(updateModelOldForDelete!.$meta.isIndirectChange, true);\n\n // OverflowElement Deleted Old\n const deletedElemOld = deleteInstances.find((i) => i.ECInstanceId === elementId && i.$meta.stage === \"Old\");\n expect(deletedElemOld).to.exist;\n assert.equal(deletedElemOld!.ECClassId, \"TestDomain.OverflowElement\");\n assert.equal(deletedElemOld!.$meta.op, \"Deleted\");\n assert.equal(deletedElemOld!.$meta.stage, \"Old\");\n assert.equal(deletedElemOld!.$meta.isIndirectChange, false);\n assert.deepEqual(deletedElemOld!.$meta.rowOptions, { classIdsToClassNames: true });\n\n // All three physical tables contributed to the delete row\n assert.deepEqual([...deletedElemOld!.$meta.tables].sort(), [\"bis_Element\", \"bis_GeometricElement2d\", \"bis_GeometricElement2d_Overflow\"].sort());\n\n // All 36 domain props are recorded in changeFetchedPropNames\n const deleteFetchedProps = [...deletedElemOld!.$meta.changeFetchedPropNames];\n for (let i = 0; i < nProps; i++) {\n assert.include(deleteFetchedProps, propName(i), `changeFetchedPropNames should contain p${i}`);\n }\n\n // p0–p33 still carry the original insert values; p34/p35 carry the updated values\n for (let i = 0; i < 34; i++) {\n assert.equal(deletedElemOld![propName(i)], insertVal(i), `p${i} should be '${insertVal(i)}'`);\n }\n assert.equal(deletedElemOld![propName(34)], updateVal(34));\n assert.equal(deletedElemOld![propName(35)], updateVal(35));\n\n // Spot-check BIS properties\n assert.equal(deletedElemOld!.Model.Id, drawingModelId);\n assert.equal(deletedElemOld!.Model.RelECClassId, \"BisCore.ModelContainsElements\");\n assert.equal(deletedElemOld!.Category.Id, drawingCategoryId);\n assert.equal(deletedElemOld!.Category.RelECClassId, \"BisCore.GeometricElement2dIsInCategory\");\n assert.equal(deletedElemOld!.CodeSpec.Id, \"0x1\");\n assert.equal(deletedElemOld!.CodeSpec.RelECClassId, \"BisCore.CodeSpecSpecifiesCode\");\n assert.equal(deletedElemOld!.CodeScope.Id, \"0x1\");\n assert.equal(deletedElemOld!.CodeScope.RelECClassId, \"BisCore.ElementScopesCode\");\n assert.isString(deletedElemOld!.FederationGuid);\n assert.isString(deletedElemOld!.LastMod);\n assert.deepEqual(deletedElemOld!.Origin, { X: 0, Y: 0 });\n assert.equal(deletedElemOld!.Rotation, 0);\n assert.deepEqual(deletedElemOld!.BBoxLow, { X: -5, Y: -5 });\n assert.deepEqual(deletedElemOld!.BBoxHigh, { X: 5, Y: 5 });\n assert.include(String(deletedElemOld!.GeometryStream), \"\\\"bytes\\\"\");\n });\n});\n\ndescribe(\"ChangesetReader: invalid inputs\", () => {\n let iModel: BriefcaseDb;\n let txn: EditTxn;\n let validChangesetPath: string;\n\n before(async () => {\n HubMock.startup(\"ChangesetReaderInvalidInputs\", KnownTestLocations.outputDir);\n const adminToken = \"super manager token\";\n const iTwinId = HubMock.iTwinId;\n const iModelId = await HubMock.createNewIModel({ iTwinId, iModelName: \"invalidInputs\", accessToken: adminToken });\n iModel = await HubWrappers.downloadAndOpenBriefcase({ iTwinId, iModelId, accessToken: adminToken });\n txn = startTestTxn(iModel, \"ChangesetReader invalid inputs setup\");\n iModel.channels.addAllowedChannel(ChannelControl.sharedChannelName);\n\n // Push one changeset so we have a valid .changeset file to reference.\n await iModel.locks.acquireLocks({ shared: IModel.dictionaryId });\n IModelTestUtils.createAndInsertDrawingPartitionAndModel(txn, Code.createEmpty(), true);\n txn.saveChanges(\"setup\");\n await iModel.pushChanges({ description: \"setup\", accessToken: adminToken });\n\n const targetDir = path.join(KnownTestLocations.outputDir, iModelId, \"changesets\");\n const changesets = await HubMock.downloadChangesets({ iModelId, targetDir });\n assert.isAtLeast(changesets.length, 1);\n validChangesetPath = changesets[0].pathname;\n });\n\n after(() => {\n txn.end();\n iModel?.close();\n HubMock.shutdown();\n });\n\n // --- openFile ---\n\n it(\"openFile: non-existent file path throws\", () => {\n expect(() =>\n ChangesetReader.openFile({ db: iModel, fileName: \"/does/not/exist.changeset\" }),\n ).to.throw();\n });\n\n it(\"openFile: empty file name throws\", () => {\n expect(() =>\n ChangesetReader.openFile({ db: iModel, fileName: \"\" }),\n ).to.throw();\n });\n\n it(\"openFile: path points to a directory throws\", () => {\n expect(() =>\n ChangesetReader.openFile({ db: iModel, fileName: KnownTestLocations.outputDir }),\n ).to.throw();\n });\n\n it(\"openFile: path points to a plain text file (not .changeset) throws\", () => {\n const txtFile = path.join(KnownTestLocations.outputDir, \"not_a_changeset.txt\");\n // Write a small non-changeset file and expect the reader to reject it.\n fs.writeFileSync(txtFile, \"this is not a changeset\");\n\n using reader = ChangesetReader.openFile({ db: iModel, fileName: txtFile });\n assert.equal(reader.step(), false, \"Expected step() to return false for an invalid changeset file\");\n assert.equal(reader.step(), false, \"Expected step() to return false for an invalid changeset file\");\n assert.equal(reader.step(), false, \"Expected step() to return false for an invalid changeset file\");\n assert.equal(reader.step(), false, \"Expected step() to return false for an invalid changeset file\");\n });\n\n // --- openGroup ---\n\n it(\"openGroup: empty changesetFiles array throws synchronously\", () => {\n expect(() =>\n ChangesetReader.openGroup({ db: iModel, changesetFiles: [] }),\n ).to.throw();\n });\n\n it(\"openGroup: single non-existent path throws\", () => {\n expect(() =>\n ChangesetReader.openGroup({ db: iModel, changesetFiles: [\"/does/not/exist.changeset\"] }),\n ).to.throw();\n });\n\n it(\"openGroup: first file valid, second file non-existent throws\", () => {\n expect(() =>\n ChangesetReader.openGroup({ db: iModel, changesetFiles: [validChangesetPath, \"/does/not/exist.changeset\"] }),\n ).to.throw();\n });\n\n it(\"openGroup: file list containing an empty string throws\", () => {\n expect(() =>\n ChangesetReader.openGroup({ db: iModel, changesetFiles: [\"\"] }),\n ).to.throw();\n });\n\n it(\"openGroup: duplicate paths reads the same changeset twice without throwing\", () => {\n // Passing the same changeset file twice is unusual but not necessarily an error at open time.\n // The reader should open and step without throwing; the caller is responsible for any semantic issues.\n expect(() => {\n using reader = ChangesetReader.openGroup({ db: iModel, changesetFiles: [validChangesetPath, validChangesetPath] });\n while (reader.step()) { /* drain */ }\n }).to.not.throw();\n });\n\n // --- openTxn ---\n\n it(\"openTxn: non-existent txn id throws\", () => {\n expect(() =>\n ChangesetReader.openTxn({ db: iModel, txnId: \"0xdeadbeef\" }),\n ).to.throw();\n });\n\n it(\"openTxn: empty string txn id throws\", () => {\n expect(() =>\n ChangesetReader.openTxn({ db: iModel, txnId: \"\" }),\n ).to.throw();\n });\n\n // --- property accessors before step() ---\n\n it(\"accessing tableName before step() throws\", () => {\n using reader = ChangesetReader.openFile({ db: iModel, fileName: validChangesetPath });\n expect(() => reader.tableName).to.throw();\n });\n\n it(\"accessing isECTable before step() throws\", () => {\n using reader = ChangesetReader.openFile({ db: iModel, fileName: validChangesetPath });\n expect(() => reader.isECTable).to.throw();\n });\n\n it(\"accessing isIndirectChange before step() throws\", () => {\n using reader = ChangesetReader.openFile({ db: iModel, fileName: validChangesetPath });\n expect(() => reader.isIndirectChange).to.throw();\n });\n});\n\n"]}