@itwin/core-backend 5.9.0-dev.4 → 5.9.0-dev.5

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 (426) hide show
  1. package/lib/cjs/BriefcaseManager.js +3 -3
  2. package/lib/cjs/BriefcaseManager.js.map +1 -1
  3. package/lib/cjs/Category.d.ts +37 -7
  4. package/lib/cjs/Category.d.ts.map +1 -1
  5. package/lib/cjs/Category.js +33 -42
  6. package/lib/cjs/Category.js.map +1 -1
  7. package/lib/cjs/ChangesetECAdaptor.d.ts.map +1 -1
  8. package/lib/cjs/ChangesetECAdaptor.js +5 -2
  9. package/lib/cjs/ChangesetECAdaptor.js.map +1 -1
  10. package/lib/cjs/ChannelControl.d.ts +29 -0
  11. package/lib/cjs/ChannelControl.d.ts.map +1 -1
  12. package/lib/cjs/ChannelControl.js.map +1 -1
  13. package/lib/cjs/CheckpointManager.js +1 -1
  14. package/lib/cjs/CheckpointManager.js.map +1 -1
  15. package/lib/cjs/CodeSpecs.d.ts +32 -3
  16. package/lib/cjs/CodeSpecs.d.ts.map +1 -1
  17. package/lib/cjs/CodeSpecs.js +48 -20
  18. package/lib/cjs/CodeSpecs.js.map +1 -1
  19. package/lib/cjs/DisplayStyle.d.ts +18 -3
  20. package/lib/cjs/DisplayStyle.d.ts.map +1 -1
  21. package/lib/cjs/DisplayStyle.js +10 -21
  22. package/lib/cjs/DisplayStyle.js.map +1 -1
  23. package/lib/cjs/EditTxn.d.ts +262 -0
  24. package/lib/cjs/EditTxn.d.ts.map +1 -0
  25. package/lib/cjs/EditTxn.js +548 -0
  26. package/lib/cjs/EditTxn.js.map +1 -0
  27. package/lib/cjs/Element.d.ts +74 -5
  28. package/lib/cjs/Element.d.ts.map +1 -1
  29. package/lib/cjs/Element.js +63 -75
  30. package/lib/cjs/Element.js.map +1 -1
  31. package/lib/cjs/ElementAspect.d.ts +10 -0
  32. package/lib/cjs/ElementAspect.d.ts.map +1 -1
  33. package/lib/cjs/ElementAspect.js +21 -12
  34. package/lib/cjs/ElementAspect.js.map +1 -1
  35. package/lib/cjs/ElementTreeWalker.d.ts +56 -3
  36. package/lib/cjs/ElementTreeWalker.d.ts.map +1 -1
  37. package/lib/cjs/ElementTreeWalker.js +53 -40
  38. package/lib/cjs/ElementTreeWalker.js.map +1 -1
  39. package/lib/cjs/ExternalSource.d.ts +11 -2
  40. package/lib/cjs/ExternalSource.d.ts.map +1 -1
  41. package/lib/cjs/ExternalSource.js +10 -8
  42. package/lib/cjs/ExternalSource.js.map +1 -1
  43. package/lib/cjs/IModelDb.d.ts +66 -22
  44. package/lib/cjs/IModelDb.d.ts.map +1 -1
  45. package/lib/cjs/IModelDb.js +174 -288
  46. package/lib/cjs/IModelDb.js.map +1 -1
  47. package/lib/cjs/IModelHost.d.ts +22 -0
  48. package/lib/cjs/IModelHost.d.ts.map +1 -1
  49. package/lib/cjs/IModelHost.js +9 -0
  50. package/lib/cjs/IModelHost.js.map +1 -1
  51. package/lib/cjs/IpcHost.js +2 -2
  52. package/lib/cjs/IpcHost.js.map +1 -1
  53. package/lib/cjs/LineStyle.d.ts +47 -7
  54. package/lib/cjs/LineStyle.d.ts.map +1 -1
  55. package/lib/cjs/LineStyle.js +38 -33
  56. package/lib/cjs/LineStyle.js.map +1 -1
  57. package/lib/cjs/Material.d.ts +8 -1
  58. package/lib/cjs/Material.d.ts.map +1 -1
  59. package/lib/cjs/Material.js +6 -12
  60. package/lib/cjs/Material.js.map +1 -1
  61. package/lib/cjs/Model.d.ts +59 -20
  62. package/lib/cjs/Model.d.ts.map +1 -1
  63. package/lib/cjs/Model.js +38 -80
  64. package/lib/cjs/Model.js.map +1 -1
  65. package/lib/cjs/Relationship.d.ts +72 -7
  66. package/lib/cjs/Relationship.d.ts.map +1 -1
  67. package/lib/cjs/Relationship.js +39 -21
  68. package/lib/cjs/Relationship.js.map +1 -1
  69. package/lib/cjs/SchemaSync.js +4 -4
  70. package/lib/cjs/SchemaSync.js.map +1 -1
  71. package/lib/cjs/SheetIndex.d.ts +9 -0
  72. package/lib/cjs/SheetIndex.d.ts.map +1 -1
  73. package/lib/cjs/SheetIndex.js +38 -35
  74. package/lib/cjs/SheetIndex.js.map +1 -1
  75. package/lib/cjs/StashManager.js +1 -1
  76. package/lib/cjs/StashManager.js.map +1 -1
  77. package/lib/cjs/Texture.d.ts +6 -0
  78. package/lib/cjs/Texture.d.ts.map +1 -1
  79. package/lib/cjs/Texture.js +6 -14
  80. package/lib/cjs/Texture.js.map +1 -1
  81. package/lib/cjs/TxnManager.d.ts +5 -5
  82. package/lib/cjs/TxnManager.d.ts.map +1 -1
  83. package/lib/cjs/TxnManager.js +23 -7
  84. package/lib/cjs/TxnManager.js.map +1 -1
  85. package/lib/cjs/ViewDefinition.d.ts +21 -1
  86. package/lib/cjs/ViewDefinition.d.ts.map +1 -1
  87. package/lib/cjs/ViewDefinition.js +27 -66
  88. package/lib/cjs/ViewDefinition.js.map +1 -1
  89. package/lib/cjs/annotations/ElementDrivesTextAnnotation.d.ts +14 -6
  90. package/lib/cjs/annotations/ElementDrivesTextAnnotation.d.ts.map +1 -1
  91. package/lib/cjs/annotations/ElementDrivesTextAnnotation.js +33 -27
  92. package/lib/cjs/annotations/ElementDrivesTextAnnotation.js.map +1 -1
  93. package/lib/cjs/annotations/TextAnnotationElement.d.ts.map +1 -1
  94. package/lib/cjs/annotations/TextAnnotationElement.js +6 -5
  95. package/lib/cjs/annotations/TextAnnotationElement.js.map +1 -1
  96. package/lib/cjs/core-backend.d.ts +1 -0
  97. package/lib/cjs/core-backend.d.ts.map +1 -1
  98. package/lib/cjs/core-backend.js +1 -0
  99. package/lib/cjs/core-backend.js.map +1 -1
  100. package/lib/cjs/domains/FunctionalElements.d.ts +6 -2
  101. package/lib/cjs/domains/FunctionalElements.d.ts.map +1 -1
  102. package/lib/cjs/domains/FunctionalElements.js +8 -13
  103. package/lib/cjs/domains/FunctionalElements.js.map +1 -1
  104. package/lib/cjs/domains/GenericElements.d.ts +11 -4
  105. package/lib/cjs/domains/GenericElements.d.ts.map +1 -1
  106. package/lib/cjs/domains/GenericElements.js +13 -24
  107. package/lib/cjs/domains/GenericElements.js.map +1 -1
  108. package/lib/cjs/internal/ChannelAdmin.d.ts +15 -0
  109. package/lib/cjs/internal/ChannelAdmin.d.ts.map +1 -1
  110. package/lib/cjs/internal/ChannelAdmin.js +5 -3
  111. package/lib/cjs/internal/ChannelAdmin.js.map +1 -1
  112. package/lib/cjs/internal/Symbols.d.ts +4 -0
  113. package/lib/cjs/internal/Symbols.d.ts.map +1 -1
  114. package/lib/cjs/internal/Symbols.js +5 -1
  115. package/lib/cjs/internal/Symbols.js.map +1 -1
  116. package/lib/cjs/internal/annotations/fields.d.ts +3 -2
  117. package/lib/cjs/internal/annotations/fields.d.ts.map +1 -1
  118. package/lib/cjs/internal/annotations/fields.js +7 -6
  119. package/lib/cjs/internal/annotations/fields.js.map +1 -1
  120. package/lib/cjs/rpc-impl/RpcBriefcaseUtility.d.ts.map +1 -1
  121. package/lib/cjs/rpc-impl/RpcBriefcaseUtility.js.map +1 -1
  122. package/lib/esm/BriefcaseManager.js +3 -3
  123. package/lib/esm/BriefcaseManager.js.map +1 -1
  124. package/lib/esm/Category.d.ts +37 -7
  125. package/lib/esm/Category.d.ts.map +1 -1
  126. package/lib/esm/Category.js +33 -42
  127. package/lib/esm/Category.js.map +1 -1
  128. package/lib/esm/ChangesetECAdaptor.d.ts.map +1 -1
  129. package/lib/esm/ChangesetECAdaptor.js +5 -2
  130. package/lib/esm/ChangesetECAdaptor.js.map +1 -1
  131. package/lib/esm/ChannelControl.d.ts +29 -0
  132. package/lib/esm/ChannelControl.d.ts.map +1 -1
  133. package/lib/esm/ChannelControl.js.map +1 -1
  134. package/lib/esm/CheckpointManager.js +1 -1
  135. package/lib/esm/CheckpointManager.js.map +1 -1
  136. package/lib/esm/CodeSpecs.d.ts +32 -3
  137. package/lib/esm/CodeSpecs.d.ts.map +1 -1
  138. package/lib/esm/CodeSpecs.js +49 -21
  139. package/lib/esm/CodeSpecs.js.map +1 -1
  140. package/lib/esm/DisplayStyle.d.ts +18 -3
  141. package/lib/esm/DisplayStyle.d.ts.map +1 -1
  142. package/lib/esm/DisplayStyle.js +10 -21
  143. package/lib/esm/DisplayStyle.js.map +1 -1
  144. package/lib/esm/EditTxn.d.ts +262 -0
  145. package/lib/esm/EditTxn.d.ts.map +1 -0
  146. package/lib/esm/EditTxn.js +543 -0
  147. package/lib/esm/EditTxn.js.map +1 -0
  148. package/lib/esm/Element.d.ts +74 -5
  149. package/lib/esm/Element.d.ts.map +1 -1
  150. package/lib/esm/Element.js +64 -76
  151. package/lib/esm/Element.js.map +1 -1
  152. package/lib/esm/ElementAspect.d.ts +10 -0
  153. package/lib/esm/ElementAspect.d.ts.map +1 -1
  154. package/lib/esm/ElementAspect.js +22 -13
  155. package/lib/esm/ElementAspect.js.map +1 -1
  156. package/lib/esm/ElementTreeWalker.d.ts +56 -3
  157. package/lib/esm/ElementTreeWalker.d.ts.map +1 -1
  158. package/lib/esm/ElementTreeWalker.js +53 -40
  159. package/lib/esm/ElementTreeWalker.js.map +1 -1
  160. package/lib/esm/ExternalSource.d.ts +11 -2
  161. package/lib/esm/ExternalSource.d.ts.map +1 -1
  162. package/lib/esm/ExternalSource.js +10 -8
  163. package/lib/esm/ExternalSource.js.map +1 -1
  164. package/lib/esm/IModelDb.d.ts +66 -22
  165. package/lib/esm/IModelDb.d.ts.map +1 -1
  166. package/lib/esm/IModelDb.js +176 -290
  167. package/lib/esm/IModelDb.js.map +1 -1
  168. package/lib/esm/IModelHost.d.ts +22 -0
  169. package/lib/esm/IModelHost.d.ts.map +1 -1
  170. package/lib/esm/IModelHost.js +9 -0
  171. package/lib/esm/IModelHost.js.map +1 -1
  172. package/lib/esm/IpcHost.js +3 -3
  173. package/lib/esm/IpcHost.js.map +1 -1
  174. package/lib/esm/LineStyle.d.ts +47 -7
  175. package/lib/esm/LineStyle.d.ts.map +1 -1
  176. package/lib/esm/LineStyle.js +38 -33
  177. package/lib/esm/LineStyle.js.map +1 -1
  178. package/lib/esm/Material.d.ts +8 -1
  179. package/lib/esm/Material.d.ts.map +1 -1
  180. package/lib/esm/Material.js +6 -12
  181. package/lib/esm/Material.js.map +1 -1
  182. package/lib/esm/Model.d.ts +59 -20
  183. package/lib/esm/Model.d.ts.map +1 -1
  184. package/lib/esm/Model.js +39 -81
  185. package/lib/esm/Model.js.map +1 -1
  186. package/lib/esm/Relationship.d.ts +72 -7
  187. package/lib/esm/Relationship.d.ts.map +1 -1
  188. package/lib/esm/Relationship.js +40 -22
  189. package/lib/esm/Relationship.js.map +1 -1
  190. package/lib/esm/SchemaSync.js +5 -5
  191. package/lib/esm/SchemaSync.js.map +1 -1
  192. package/lib/esm/SheetIndex.d.ts +9 -0
  193. package/lib/esm/SheetIndex.d.ts.map +1 -1
  194. package/lib/esm/SheetIndex.js +38 -35
  195. package/lib/esm/SheetIndex.js.map +1 -1
  196. package/lib/esm/StashManager.js +1 -1
  197. package/lib/esm/StashManager.js.map +1 -1
  198. package/lib/esm/Texture.d.ts +6 -0
  199. package/lib/esm/Texture.d.ts.map +1 -1
  200. package/lib/esm/Texture.js +6 -14
  201. package/lib/esm/Texture.js.map +1 -1
  202. package/lib/esm/TxnManager.d.ts +5 -5
  203. package/lib/esm/TxnManager.d.ts.map +1 -1
  204. package/lib/esm/TxnManager.js +23 -7
  205. package/lib/esm/TxnManager.js.map +1 -1
  206. package/lib/esm/ViewDefinition.d.ts +21 -1
  207. package/lib/esm/ViewDefinition.d.ts.map +1 -1
  208. package/lib/esm/ViewDefinition.js +27 -66
  209. package/lib/esm/ViewDefinition.js.map +1 -1
  210. package/lib/esm/annotations/ElementDrivesTextAnnotation.d.ts +14 -6
  211. package/lib/esm/annotations/ElementDrivesTextAnnotation.d.ts.map +1 -1
  212. package/lib/esm/annotations/ElementDrivesTextAnnotation.js +33 -27
  213. package/lib/esm/annotations/ElementDrivesTextAnnotation.js.map +1 -1
  214. package/lib/esm/annotations/TextAnnotationElement.d.ts.map +1 -1
  215. package/lib/esm/annotations/TextAnnotationElement.js +6 -5
  216. package/lib/esm/annotations/TextAnnotationElement.js.map +1 -1
  217. package/lib/esm/core-backend.d.ts +1 -0
  218. package/lib/esm/core-backend.d.ts.map +1 -1
  219. package/lib/esm/core-backend.js +1 -0
  220. package/lib/esm/core-backend.js.map +1 -1
  221. package/lib/esm/domains/FunctionalElements.d.ts +6 -2
  222. package/lib/esm/domains/FunctionalElements.d.ts.map +1 -1
  223. package/lib/esm/domains/FunctionalElements.js +8 -13
  224. package/lib/esm/domains/FunctionalElements.js.map +1 -1
  225. package/lib/esm/domains/GenericElements.d.ts +11 -4
  226. package/lib/esm/domains/GenericElements.d.ts.map +1 -1
  227. package/lib/esm/domains/GenericElements.js +13 -24
  228. package/lib/esm/domains/GenericElements.js.map +1 -1
  229. package/lib/esm/internal/ChannelAdmin.d.ts +15 -0
  230. package/lib/esm/internal/ChannelAdmin.d.ts.map +1 -1
  231. package/lib/esm/internal/ChannelAdmin.js +6 -4
  232. package/lib/esm/internal/ChannelAdmin.js.map +1 -1
  233. package/lib/esm/internal/Symbols.d.ts +4 -0
  234. package/lib/esm/internal/Symbols.d.ts.map +1 -1
  235. package/lib/esm/internal/Symbols.js +4 -0
  236. package/lib/esm/internal/Symbols.js.map +1 -1
  237. package/lib/esm/internal/annotations/fields.d.ts +3 -2
  238. package/lib/esm/internal/annotations/fields.d.ts.map +1 -1
  239. package/lib/esm/internal/annotations/fields.js +7 -6
  240. package/lib/esm/internal/annotations/fields.js.map +1 -1
  241. package/lib/esm/rpc-impl/RpcBriefcaseUtility.d.ts.map +1 -1
  242. package/lib/esm/rpc-impl/RpcBriefcaseUtility.js.map +1 -1
  243. package/lib/esm/test/AnnotationTestUtils.js.map +1 -1
  244. package/lib/esm/test/ElementDrivesElement.test.d.ts +20 -19
  245. package/lib/esm/test/ElementDrivesElement.test.d.ts.map +1 -1
  246. package/lib/esm/test/ElementDrivesElement.test.js +111 -96
  247. package/lib/esm/test/ElementDrivesElement.test.js.map +1 -1
  248. package/lib/esm/test/ElementLRUCache.test.js.map +1 -1
  249. package/lib/esm/test/IModelHost.test.js +56 -2
  250. package/lib/esm/test/IModelHost.test.js.map +1 -1
  251. package/lib/esm/test/IModelTestUtils.d.ts +23 -23
  252. package/lib/esm/test/IModelTestUtils.d.ts.map +1 -1
  253. package/lib/esm/test/IModelTestUtils.js +466 -449
  254. package/lib/esm/test/IModelTestUtils.js.map +1 -1
  255. package/lib/esm/test/PropertyDb.test.js +2 -2
  256. package/lib/esm/test/PropertyDb.test.js.map +1 -1
  257. package/lib/esm/test/SquashSchemaAndDataChanges.test.js +27 -18
  258. package/lib/esm/test/SquashSchemaAndDataChanges.test.js.map +1 -1
  259. package/lib/esm/test/TestChangeSetUtility.d.ts.map +1 -1
  260. package/lib/esm/test/TestChangeSetUtility.js +11 -7
  261. package/lib/esm/test/TestChangeSetUtility.js.map +1 -1
  262. package/lib/esm/test/TestEditTxn.d.ts +8 -0
  263. package/lib/esm/test/TestEditTxn.d.ts.map +1 -0
  264. package/lib/esm/test/TestEditTxn.js +34 -0
  265. package/lib/esm/test/TestEditTxn.js.map +1 -0
  266. package/lib/esm/test/TestUtils.d.ts +1 -0
  267. package/lib/esm/test/TestUtils.d.ts.map +1 -1
  268. package/lib/esm/test/TestUtils.js +8 -1
  269. package/lib/esm/test/TestUtils.js.map +1 -1
  270. package/lib/esm/test/annotations/Fields.test.js +82 -90
  271. package/lib/esm/test/annotations/Fields.test.js.map +1 -1
  272. package/lib/esm/test/annotations/FrameGeometry.test.js.map +1 -1
  273. package/lib/esm/test/annotations/TextAnnotation.test.js +156 -99
  274. package/lib/esm/test/annotations/TextAnnotation.test.js.map +1 -1
  275. package/lib/esm/test/annotations/TextBlock.test.js +5 -3
  276. package/lib/esm/test/annotations/TextBlock.test.js.map +1 -1
  277. package/lib/esm/test/assets/IncrementalSchemaLocater/configs/old.config.js.map +1 -1
  278. package/lib/esm/test/assets/IncrementalSchemaLocater/configs/simple.config.js.map +1 -1
  279. package/lib/esm/test/categories/Category.test.js +63 -3
  280. package/lib/esm/test/categories/Category.test.js.map +1 -1
  281. package/lib/esm/test/codespec/CodeSpec.test.js +88 -5
  282. package/lib/esm/test/codespec/CodeSpec.test.js.map +1 -1
  283. package/lib/esm/test/ecdb/ECDb.test.js.map +1 -1
  284. package/lib/esm/test/ecdb/ECSqlAst.test.js +3 -2
  285. package/lib/esm/test/ecdb/ECSqlAst.test.js.map +1 -1
  286. package/lib/esm/test/ecdb/ECSqlQuery.test.js +2 -2
  287. package/lib/esm/test/ecdb/ECSqlQuery.test.js.map +1 -1
  288. package/lib/esm/test/ecdb/ECSqlStatement.test.js +0 -1
  289. package/lib/esm/test/ecdb/ECSqlStatement.test.js.map +1 -1
  290. package/lib/esm/test/ecdb/QueryReaders.test.js +17 -14
  291. package/lib/esm/test/ecdb/QueryReaders.test.js.map +1 -1
  292. package/lib/esm/test/ecdb/SqliteStatement.test.js +2 -2
  293. package/lib/esm/test/ecdb/SqliteStatement.test.js.map +1 -1
  294. package/lib/esm/test/ecsql/dataset/ECSqlDatasets.d.ts.map +1 -1
  295. package/lib/esm/test/ecsql/dataset/ECSqlDatasets.js +30 -28
  296. package/lib/esm/test/ecsql/dataset/ECSqlDatasets.js.map +1 -1
  297. package/lib/esm/test/ecsql/src/ECSqlTestGenerator.js.map +1 -1
  298. package/lib/esm/test/ecsql/src/ECSqlTestParser.js.map +1 -1
  299. package/lib/esm/test/ecsql/src/ECSqlTestRunner.test.js.map +1 -1
  300. package/lib/esm/test/element/DeleteDefinitionElements.test.js +159 -143
  301. package/lib/esm/test/element/DeleteDefinitionElements.test.js.map +1 -1
  302. package/lib/esm/test/element/ElementAspect.test.js +68 -60
  303. package/lib/esm/test/element/ElementAspect.test.js.map +1 -1
  304. package/lib/esm/test/element/ElementDependencyGraph.test.d.ts.map +1 -1
  305. package/lib/esm/test/element/ElementDependencyGraph.test.js +51 -43
  306. package/lib/esm/test/element/ElementDependencyGraph.test.js.map +1 -1
  307. package/lib/esm/test/element/ElementRoundTrip.test.js +37 -38
  308. package/lib/esm/test/element/ElementRoundTrip.test.js.map +1 -1
  309. package/lib/esm/test/element/ExcludedElements.test.js +2 -2
  310. package/lib/esm/test/element/ExcludedElements.test.js.map +1 -1
  311. package/lib/esm/test/element/ExternalSource.test.js +40 -38
  312. package/lib/esm/test/element/ExternalSource.test.js.map +1 -1
  313. package/lib/esm/test/element/NullStructArray.test.js +10 -9
  314. package/lib/esm/test/element/NullStructArray.test.js.map +1 -1
  315. package/lib/esm/test/element/ProjectInformationRecord.test.js +5 -2
  316. package/lib/esm/test/element/ProjectInformationRecord.test.js.map +1 -1
  317. package/lib/esm/test/element/SheetInformationAspect.test.js +43 -11
  318. package/lib/esm/test/element/SheetInformationAspect.test.js.map +1 -1
  319. package/lib/esm/test/element/UrlLink.test.js +2 -2
  320. package/lib/esm/test/element/UrlLink.test.js.map +1 -1
  321. package/lib/esm/test/font/IModelDbFonts.test.js +87 -73
  322. package/lib/esm/test/font/IModelDbFonts.test.js.map +1 -1
  323. package/lib/esm/test/hubaccess/ApplyChangeset.test.js +164 -125
  324. package/lib/esm/test/hubaccess/ApplyChangeset.test.js.map +1 -1
  325. package/lib/esm/test/hubaccess/BriefcaseManager.test.js +2 -4
  326. package/lib/esm/test/hubaccess/BriefcaseManager.test.js.map +1 -1
  327. package/lib/esm/test/hubaccess/Rebase.test.js +313 -247
  328. package/lib/esm/test/hubaccess/Rebase.test.js.map +1 -1
  329. package/lib/esm/test/hubaccess/SemanticRebase.test.js +322 -247
  330. package/lib/esm/test/hubaccess/SemanticRebase.test.js.map +1 -1
  331. package/lib/esm/test/imodel/Code.test.js +31 -31
  332. package/lib/esm/test/imodel/Code.test.js.map +1 -1
  333. package/lib/esm/test/imodel/ElementTreeWalker.test.js +57 -48
  334. package/lib/esm/test/imodel/ElementTreeWalker.test.js.map +1 -1
  335. package/lib/esm/test/imodel/IModel.test.js +419 -344
  336. package/lib/esm/test/imodel/IModel.test.js.map +1 -1
  337. package/lib/esm/test/imodel/ProjectExtents.test.js +2 -2
  338. package/lib/esm/test/imodel/ProjectExtents.test.js.map +1 -1
  339. package/lib/esm/test/incrementalSchemaLocater/ECSqlQueries.test.js.map +1 -1
  340. package/lib/esm/test/incrementalSchemaLocater/TestContext.d.ts.map +1 -1
  341. package/lib/esm/test/incrementalSchemaLocater/TestContext.js +2 -2
  342. package/lib/esm/test/incrementalSchemaLocater/TestContext.js.map +1 -1
  343. package/lib/esm/test/index.d.ts +1 -0
  344. package/lib/esm/test/index.d.ts.map +1 -1
  345. package/lib/esm/test/index.js +1 -0
  346. package/lib/esm/test/index.js.map +1 -1
  347. package/lib/esm/test/schema/ClassRegistry.test.js +23 -22
  348. package/lib/esm/test/schema/ClassRegistry.test.js.map +1 -1
  349. package/lib/esm/test/schema/FunctionalDomain.test.js +36 -34
  350. package/lib/esm/test/schema/FunctionalDomain.test.js.map +1 -1
  351. package/lib/esm/test/schema/GenericDomain.test.js +114 -94
  352. package/lib/esm/test/schema/GenericDomain.test.js.map +1 -1
  353. package/lib/esm/test/schema/IModelSchemaContext.test.js +2 -1
  354. package/lib/esm/test/schema/IModelSchemaContext.test.js.map +1 -1
  355. package/lib/esm/test/schema/SchemaImportCallbacks.test.js +207 -192
  356. package/lib/esm/test/schema/SchemaImportCallbacks.test.js.map +1 -1
  357. package/lib/esm/test/sheetindex/SheetIndex.test.d.ts +1 -3
  358. package/lib/esm/test/sheetindex/SheetIndex.test.d.ts.map +1 -1
  359. package/lib/esm/test/sheetindex/SheetIndex.test.js +312 -247
  360. package/lib/esm/test/sheetindex/SheetIndex.test.js.map +1 -1
  361. package/lib/esm/test/standalone/ChangeMerge.test.js +101 -82
  362. package/lib/esm/test/standalone/ChangeMerge.test.js.map +1 -1
  363. package/lib/esm/test/standalone/ChangesetReader.test.js +114 -85
  364. package/lib/esm/test/standalone/ChangesetReader.test.js.map +1 -1
  365. package/lib/esm/test/standalone/DisplayStyle.test.js +43 -40
  366. package/lib/esm/test/standalone/DisplayStyle.test.js.map +1 -1
  367. package/lib/esm/test/standalone/Drawing.test.js +4 -3
  368. package/lib/esm/test/standalone/Drawing.test.js.map +1 -1
  369. package/lib/esm/test/standalone/EditTxn.test.d.ts +2 -0
  370. package/lib/esm/test/standalone/EditTxn.test.d.ts.map +1 -0
  371. package/lib/esm/test/standalone/EditTxn.test.js +219 -0
  372. package/lib/esm/test/standalone/EditTxn.test.js.map +1 -0
  373. package/lib/esm/test/standalone/ElementMesh.test.js +16 -13
  374. package/lib/esm/test/standalone/ElementMesh.test.js.map +1 -1
  375. package/lib/esm/test/standalone/ExportGraphics.test.js +26 -20
  376. package/lib/esm/test/standalone/ExportGraphics.test.js.map +1 -1
  377. package/lib/esm/test/standalone/GeometryChangeEvents.test.js +11 -15
  378. package/lib/esm/test/standalone/GeometryChangeEvents.test.js.map +1 -1
  379. package/lib/esm/test/standalone/GeometryStream.test.js +212 -165
  380. package/lib/esm/test/standalone/GeometryStream.test.js.map +1 -1
  381. package/lib/esm/test/standalone/HubMock.test.js +31 -25
  382. package/lib/esm/test/standalone/HubMock.test.js.map +1 -1
  383. package/lib/esm/test/standalone/IModelLimits.test.js +11 -8
  384. package/lib/esm/test/standalone/IModelLimits.test.js.map +1 -1
  385. package/lib/esm/test/standalone/IModelWrite.test.d.ts +2 -2
  386. package/lib/esm/test/standalone/IModelWrite.test.d.ts.map +1 -1
  387. package/lib/esm/test/standalone/IModelWrite.test.js +184 -142
  388. package/lib/esm/test/standalone/IModelWrite.test.js.map +1 -1
  389. package/lib/esm/test/standalone/InlineGeometryPartReferences.test.js +25 -22
  390. package/lib/esm/test/standalone/InlineGeometryPartReferences.test.js.map +1 -1
  391. package/lib/esm/test/standalone/IntegrityCheck.test.js +20 -18
  392. package/lib/esm/test/standalone/IntegrityCheck.test.js.map +1 -1
  393. package/lib/esm/test/standalone/MergeConflict.test.d.ts +2 -2
  394. package/lib/esm/test/standalone/MergeConflict.test.d.ts.map +1 -1
  395. package/lib/esm/test/standalone/MergeConflict.test.js +49 -33
  396. package/lib/esm/test/standalone/MergeConflict.test.js.map +1 -1
  397. package/lib/esm/test/standalone/RenderMaterialElement.test.js +5 -5
  398. package/lib/esm/test/standalone/RenderMaterialElement.test.js.map +1 -1
  399. package/lib/esm/test/standalone/RenderTimeline.test.js +3 -2
  400. package/lib/esm/test/standalone/RenderTimeline.test.js.map +1 -1
  401. package/lib/esm/test/standalone/SectionDrawing.test.js +7 -7
  402. package/lib/esm/test/standalone/SectionDrawing.test.js.map +1 -1
  403. package/lib/esm/test/standalone/ServerBasedLocks.test.js +21 -19
  404. package/lib/esm/test/standalone/ServerBasedLocks.test.js.map +1 -1
  405. package/lib/esm/test/standalone/Settings.test.js +7 -4
  406. package/lib/esm/test/standalone/Settings.test.js.map +1 -1
  407. package/lib/esm/test/standalone/SettingsSchemas.test.js +2 -1
  408. package/lib/esm/test/standalone/SettingsSchemas.test.js.map +1 -1
  409. package/lib/esm/test/standalone/SnapshotDb.test.js +3 -1
  410. package/lib/esm/test/standalone/SnapshotDb.test.js.map +1 -1
  411. package/lib/esm/test/standalone/StandaloneDb.test.js +7 -6
  412. package/lib/esm/test/standalone/StandaloneDb.test.js.map +1 -1
  413. package/lib/esm/test/standalone/Texture.test.js +5 -4
  414. package/lib/esm/test/standalone/Texture.test.js.map +1 -1
  415. package/lib/esm/test/standalone/TileCache.test.d.ts.map +1 -1
  416. package/lib/esm/test/standalone/TileCache.test.js +5 -3
  417. package/lib/esm/test/standalone/TileCache.test.js.map +1 -1
  418. package/lib/esm/test/standalone/TileTree.test.js +35 -31
  419. package/lib/esm/test/standalone/TileTree.test.js.map +1 -1
  420. package/lib/esm/test/standalone/TxnManager.test.js +700 -653
  421. package/lib/esm/test/standalone/TxnManager.test.js.map +1 -1
  422. package/lib/esm/test/standalone/ViewDefinition.test.js +295 -229
  423. package/lib/esm/test/standalone/ViewDefinition.test.js.map +1 -1
  424. package/lib/esm/test/standalone/Workspace.test.js +25 -23
  425. package/lib/esm/test/standalone/Workspace.test.js.map +1 -1
  426. package/package.json +12 -12
@@ -3,7 +3,8 @@
3
3
  * See LICENSE.md in the project root for license terms and full copyright notice.
4
4
  *--------------------------------------------------------------------------------------------*/
5
5
  import { Id64 } from "@itwin/core-bentley";
6
- import { BisCodeSpec, CodeScopeSpec, CodeSpec } from "@itwin/core-common";
6
+ import { BisCodeSpec, CodeScopeSpec, CodeSpec, EditTxnError } from "@itwin/core-common";
7
+ import { EditTxn, withEditTxn } from "../../EditTxn";
7
8
  import { SnapshotDb } from "../../IModelDb";
8
9
  import { ExtensiveTestScenario, IModelTestUtils } from "../IModelTestUtils";
9
10
  import { DocumentPartition, Sheet } from "../../Element";
@@ -11,53 +12,35 @@ import { expect } from "chai";
11
12
  import { DocumentListModel, SheetIndexModel, SheetModel } from "../../Model";
12
13
  import { ElementOwnsChildElements, SheetIndexFolderOwnsEntries, SheetIndexOwnsEntries, SheetIndexReferenceRefersToSheetIndex, SheetReferenceRefersToSheet } from "../../NavigationRelationship";
13
14
  import { SheetIndex, SheetIndexFolder, SheetIndexReference, SheetReference } from "../../SheetIndex";
14
- export const getOrCreateDocumentList = async (iModel) => {
15
+ const getOrCreateDocumentList = (txn) => {
15
16
  const documentListName = "SheetList";
16
- let documentListModelId;
17
- // Attempt to find an existing document partition and document list model
18
- const ids = iModel.queryEntityIds({ from: DocumentPartition.classFullName, where: `CodeValue = '${documentListName}'` });
19
- if (ids.size === 1) {
20
- documentListModelId = ids.values().next().value;
21
- }
22
- // If they do not exist, create the document partition and document list model
23
- if (documentListModelId === undefined) {
24
- const subjectId = iModel.elements.getRootSubject().id;
25
- await iModel.locks.acquireLocks({
26
- shared: subjectId,
27
- });
28
- documentListModelId = DocumentListModel.insert(iModel, subjectId, documentListName);
29
- }
30
- return documentListModelId;
17
+ const ids = txn.iModel.queryEntityIds({ from: DocumentPartition.classFullName, where: `CodeValue = '${documentListName}'` });
18
+ if (ids.size === 1)
19
+ return ids.values().next().value;
20
+ const subjectId = txn.iModel.elements.getRootSubject().id;
21
+ return DocumentListModel.insert(txn, subjectId, documentListName);
31
22
  };
32
- const insertSheet = async (iModel, sheetName) => {
33
- const createSheetProps = {
23
+ const insertSheet = (txn, sheetName) => {
24
+ const modelId = getOrCreateDocumentList(txn);
25
+ const sheetElementProps = {
34
26
  height: 42,
35
27
  width: 42,
36
28
  scale: 42,
37
- };
38
- // Get or make documentListModelId
39
- const modelId = await getOrCreateDocumentList(iModel);
40
- // Acquire locks and create sheet
41
- await iModel.locks.acquireLocks({ shared: modelId });
42
- const sheetElementProps = {
43
- ...createSheetProps,
44
29
  classFullName: Sheet.classFullName,
45
- code: Sheet.createCode(iModel, modelId, sheetName),
30
+ code: Sheet.createCode(txn.iModel, modelId, sheetName),
46
31
  model: modelId,
47
32
  };
48
- const sheetElementId = iModel.elements.insertElement(sheetElementProps);
49
- const sheetModelProps = {
33
+ const sheetElementId = txn.insertElement(sheetElementProps);
34
+ return txn.insertModel({
50
35
  classFullName: SheetModel.classFullName,
51
36
  modeledElement: { id: sheetElementId, relClassName: "BisCore:ModelModelsElement" },
52
- };
53
- const sheetModelId = iModel.models.insertModel(sheetModelProps);
54
- return sheetModelId;
37
+ });
55
38
  };
56
- const insertCodeSpec = async (iModel) => {
57
- const indexSpec = CodeSpec.create(iModel, BisCodeSpec.sheetIndex, CodeScopeSpec.Type.Model);
58
- iModel.codeSpecs.insert(indexSpec);
59
- const entrySpec = CodeSpec.create(iModel, BisCodeSpec.sheetIndexEntry, CodeScopeSpec.Type.ParentElement);
60
- iModel.codeSpecs.insert(entrySpec);
39
+ const insertCodeSpec = (txn) => {
40
+ const indexSpec = CodeSpec.create(txn.iModel, BisCodeSpec.sheetIndex, CodeScopeSpec.Type.Model);
41
+ txn.iModel.codeSpecs.insert(txn, indexSpec);
42
+ const entrySpec = CodeSpec.create(txn.iModel, BisCodeSpec.sheetIndexEntry, CodeScopeSpec.Type.ParentElement);
43
+ txn.iModel.codeSpecs.insert(txn, entrySpec);
61
44
  };
62
45
  describe("SheetIndex", () => {
63
46
  let iModel;
@@ -67,245 +50,327 @@ describe("SheetIndex", () => {
67
50
  await ExtensiveTestScenario.prepareDb(iModelDb);
68
51
  await ExtensiveTestScenario.populateDb(iModelDb);
69
52
  iModel = iModelDb;
70
- await insertCodeSpec(iModel);
53
+ withEditTxn(iModel, (txn) => insertCodeSpec(txn));
71
54
  });
72
55
  afterEach(() => {
73
- iModel.abandonChanges();
74
56
  iModel.close();
75
57
  });
76
- it("SheetIndexModel Should insert", async () => {
77
- const subjectId = iModel.elements.getRootSubject().id;
78
- const modelId = SheetIndexModel.insert(iModel, subjectId, "testSheetIndex");
79
- expect(Id64.isValidId64(modelId)).to.be.true;
58
+ it("SheetIndexModel Should insert", () => {
59
+ withEditTxn(iModel, (txn) => {
60
+ const subjectId = iModel.elements.getRootSubject().id;
61
+ const modelId = SheetIndexModel.insert(txn, subjectId, "testSheetIndex");
62
+ expect(Id64.isValidId64(modelId)).to.be.true;
63
+ });
80
64
  });
81
- it("SheetIndex Should insert", async () => {
82
- const subjectId = iModel.elements.getRootSubject().id;
83
- const modelId = SheetIndexModel.insert(iModel, subjectId, "TestSheetIndexModel");
84
- expect(Id64.isValidId64(modelId)).to.be.true;
85
- const sheetIndex = SheetIndex.insert(iModel, modelId, "TestSheetIndex");
86
- expect(Id64.isValidId64(sheetIndex)).to.be.true;
65
+ it("SheetIndex Should insert", () => {
66
+ withEditTxn(iModel, (txn) => {
67
+ const subjectId = iModel.elements.getRootSubject().id;
68
+ const modelId = SheetIndexModel.insert(txn, subjectId, "TestSheetIndexModel");
69
+ expect(Id64.isValidId64(modelId)).to.be.true;
70
+ const sheetIndex = SheetIndex.insert(txn, modelId, "TestSheetIndex");
71
+ expect(Id64.isValidId64(sheetIndex)).to.be.true;
72
+ });
87
73
  });
88
74
  describe("Update", () => {
89
75
  it("Priority", () => {
90
- const subjectId = iModel.elements.getRootSubject().id;
91
- const modelId = SheetIndexModel.insert(iModel, subjectId, "TestSheetIndexModel");
92
- expect(Id64.isValidId64(modelId)).to.be.true;
93
- const sheetIndex1Id = SheetIndex.insert(iModel, modelId, "TestSheetIndex");
94
- expect(Id64.isValidId64(sheetIndex1Id)).to.be.true;
95
- const folderId = SheetIndexFolder.insert({ iModelDb: iModel, sheetIndexModelId: modelId, parentId: sheetIndex1Id, name: "TestFolder", priority: 1 });
96
- expect(Id64.isValidId64(folderId)).to.be.true;
97
- const folder = iModel.elements.tryGetElement(folderId);
98
- expect(folder).to.not.be.undefined;
99
- expect(folder?.entryPriority).equals(1);
100
- folder.entryPriority = 0;
101
- folder.update();
102
- const folderPostUpdate = iModel.elements.tryGetElement(folderId);
103
- expect(folderPostUpdate?.entryPriority).equals(0);
76
+ withEditTxn(iModel, (txn) => {
77
+ const subjectId = iModel.elements.getRootSubject().id;
78
+ const modelId = SheetIndexModel.insert(txn, subjectId, "TestSheetIndexModel");
79
+ expect(Id64.isValidId64(modelId)).to.be.true;
80
+ const sheetIndex1Id = SheetIndex.insert(txn, modelId, "TestSheetIndex");
81
+ expect(Id64.isValidId64(sheetIndex1Id)).to.be.true;
82
+ const folderId = SheetIndexFolder.insert(txn, { sheetIndexModelId: modelId, parentId: sheetIndex1Id, name: "TestFolder", priority: 1 });
83
+ expect(Id64.isValidId64(folderId)).to.be.true;
84
+ const folder = iModel.elements.tryGetElement(folderId);
85
+ expect(folder).to.not.be.undefined;
86
+ expect(folder?.entryPriority).equals(1);
87
+ folder.entryPriority = 0;
88
+ folder.update(txn);
89
+ const folderPostUpdate = iModel.elements.tryGetElement(folderId);
90
+ expect(folderPostUpdate?.entryPriority).equals(0);
91
+ });
104
92
  });
105
93
  it("Parent", () => {
106
- const subjectId = iModel.elements.getRootSubject().id;
107
- const modelId = SheetIndexModel.insert(iModel, subjectId, "TestSheetIndexModel");
108
- expect(Id64.isValidId64(modelId)).to.be.true;
109
- const sheetIndex1Id = SheetIndex.insert(iModel, modelId, "TestSheetIndex-1");
110
- expect(Id64.isValidId64(sheetIndex1Id)).to.be.true;
111
- const sheetIndex2Id = SheetIndex.insert(iModel, modelId, "TestSheetIndex-2");
112
- expect(Id64.isValidId64(sheetIndex2Id)).to.be.true;
113
- const folderId = SheetIndexFolder.insert({ iModelDb: iModel, sheetIndexModelId: modelId, parentId: sheetIndex1Id, name: "TestFolder", priority: 1 });
114
- expect(Id64.isValidId64(folderId)).to.be.true;
115
- const folder = iModel.elements.tryGetElement(folderId);
116
- expect(folder).to.not.be.undefined;
117
- const parentRel11 = iModel.relationships.tryGetInstanceProps(ElementOwnsChildElements.classFullName, { sourceId: sheetIndex1Id, targetId: folderId });
118
- expect(parentRel11).to.not.be.undefined;
119
- folder.parent = new SheetIndexOwnsEntries(sheetIndex2Id);
120
- folder.update();
121
- const parentRel12 = iModel.relationships.tryGetInstanceProps(ElementOwnsChildElements.classFullName, { sourceId: sheetIndex1Id, targetId: folderId });
122
- expect(parentRel12).to.be.undefined;
123
- const parentRel22 = iModel.relationships.tryGetInstanceProps(ElementOwnsChildElements.classFullName, { sourceId: sheetIndex2Id, targetId: folderId });
124
- expect(parentRel22).to.not.be.undefined;
94
+ withEditTxn(iModel, (txn) => {
95
+ const subjectId = iModel.elements.getRootSubject().id;
96
+ const modelId = SheetIndexModel.insert(txn, subjectId, "TestSheetIndexModel");
97
+ expect(Id64.isValidId64(modelId)).to.be.true;
98
+ const sheetIndex1Id = SheetIndex.insert(txn, modelId, "TestSheetIndex-1");
99
+ expect(Id64.isValidId64(sheetIndex1Id)).to.be.true;
100
+ const sheetIndex2Id = SheetIndex.insert(txn, modelId, "TestSheetIndex-2");
101
+ expect(Id64.isValidId64(sheetIndex2Id)).to.be.true;
102
+ const folderId = SheetIndexFolder.insert(txn, { sheetIndexModelId: modelId, parentId: sheetIndex1Id, name: "TestFolder", priority: 1 });
103
+ expect(Id64.isValidId64(folderId)).to.be.true;
104
+ const folder = iModel.elements.tryGetElement(folderId);
105
+ expect(folder).to.not.be.undefined;
106
+ const parentRel11 = iModel.relationships.tryGetInstanceProps(ElementOwnsChildElements.classFullName, { sourceId: sheetIndex1Id, targetId: folderId });
107
+ expect(parentRel11).to.not.be.undefined;
108
+ folder.parent = new SheetIndexOwnsEntries(sheetIndex2Id);
109
+ folder.update(txn);
110
+ const parentRel12 = iModel.relationships.tryGetInstanceProps(ElementOwnsChildElements.classFullName, { sourceId: sheetIndex1Id, targetId: folderId });
111
+ expect(parentRel12).to.be.undefined;
112
+ const parentRel22 = iModel.relationships.tryGetInstanceProps(ElementOwnsChildElements.classFullName, { sourceId: sheetIndex2Id, targetId: folderId });
113
+ expect(parentRel22).to.not.be.undefined;
114
+ });
125
115
  });
126
- it("Sheet Reference", async () => {
127
- const subjectId = iModel.elements.getRootSubject().id;
128
- const modelId = SheetIndexModel.insert(iModel, subjectId, "TestSheetIndexModel");
129
- expect(Id64.isValidId64(modelId)).to.be.true;
130
- const sheetIndexId = SheetIndex.insert(iModel, modelId, "TestSheetIndex");
131
- expect(Id64.isValidId64(sheetIndexId)).to.be.true;
132
- const sheet1Id = await insertSheet(iModel, "sheet-1");
133
- const sheet2Id = await insertSheet(iModel, "sheet-2");
134
- const sheetRefId = SheetReference.insert({ iModelDb: iModel, sheetIndexModelId: modelId, parentId: sheetIndexId, name: "TestSheetReference", priority: 1 });
135
- expect(Id64.isValidId64(sheetRefId)).to.be.true;
136
- const sheetRef = iModel.elements.tryGetElement(sheetRefId);
137
- expect(sheetRef).to.not.be.undefined;
138
- expect(sheetRef.sheet).to.be.undefined;
139
- sheetRef.sheet = new SheetReferenceRefersToSheet(sheet1Id);
140
- sheetRef.update();
141
- const refersRel11 = iModel.relationships.tryGetInstanceProps(SheetReferenceRefersToSheet.classFullName, { sourceId: sheetRefId, targetId: sheet1Id });
142
- expect(refersRel11).to.not.be.undefined;
143
- const parentRel12 = iModel.relationships.tryGetInstanceProps(SheetReferenceRefersToSheet.classFullName, { sourceId: sheetRefId, targetId: sheet2Id });
144
- expect(parentRel12).to.be.undefined;
145
- sheetRef.sheet = new SheetReferenceRefersToSheet(sheet2Id);
146
- sheetRef.update();
147
- const refersRel21 = iModel.relationships.tryGetInstanceProps(SheetReferenceRefersToSheet.classFullName, { sourceId: sheetRefId, targetId: sheet1Id });
148
- expect(refersRel21).to.be.undefined;
149
- const parentRel22 = iModel.relationships.tryGetInstanceProps(SheetReferenceRefersToSheet.classFullName, { sourceId: sheetRefId, targetId: sheet2Id });
150
- expect(parentRel22).to.not.be.undefined;
116
+ it("Sheet Reference", () => {
117
+ withEditTxn(iModel, (txn) => {
118
+ const sheet1Id = insertSheet(txn, "sheet-1");
119
+ const sheet2Id = insertSheet(txn, "sheet-2");
120
+ const subjectId = iModel.elements.getRootSubject().id;
121
+ const modelId = SheetIndexModel.insert(txn, subjectId, "TestSheetIndexModel");
122
+ expect(Id64.isValidId64(modelId)).to.be.true;
123
+ const sheetIndexId = SheetIndex.insert(txn, modelId, "TestSheetIndex");
124
+ expect(Id64.isValidId64(sheetIndexId)).to.be.true;
125
+ const sheetRefId = SheetReference.insert(txn, { sheetIndexModelId: modelId, parentId: sheetIndexId, name: "TestSheetReference", priority: 1 });
126
+ expect(Id64.isValidId64(sheetRefId)).to.be.true;
127
+ const sheetRef = iModel.elements.tryGetElement(sheetRefId);
128
+ expect(sheetRef).to.not.be.undefined;
129
+ expect(sheetRef.sheet).to.be.undefined;
130
+ sheetRef.sheet = new SheetReferenceRefersToSheet(sheet1Id);
131
+ sheetRef.update(txn);
132
+ const refersRel11 = iModel.relationships.tryGetInstanceProps(SheetReferenceRefersToSheet.classFullName, { sourceId: sheetRefId, targetId: sheet1Id });
133
+ expect(refersRel11).to.not.be.undefined;
134
+ const parentRel12 = iModel.relationships.tryGetInstanceProps(SheetReferenceRefersToSheet.classFullName, { sourceId: sheetRefId, targetId: sheet2Id });
135
+ expect(parentRel12).to.be.undefined;
136
+ sheetRef.sheet = new SheetReferenceRefersToSheet(sheet2Id);
137
+ sheetRef.update(txn);
138
+ const refersRel21 = iModel.relationships.tryGetInstanceProps(SheetReferenceRefersToSheet.classFullName, { sourceId: sheetRefId, targetId: sheet1Id });
139
+ expect(refersRel21).to.be.undefined;
140
+ const parentRel22 = iModel.relationships.tryGetInstanceProps(SheetReferenceRefersToSheet.classFullName, { sourceId: sheetRefId, targetId: sheet2Id });
141
+ expect(parentRel22).to.not.be.undefined;
142
+ });
151
143
  });
152
144
  it("Sheet Index Reference", () => {
153
- const subjectId = iModel.elements.getRootSubject().id;
154
- const modelId = SheetIndexModel.insert(iModel, subjectId, "TestSheetIndexModel");
155
- expect(Id64.isValidId64(modelId)).to.be.true;
156
- const sheetIndex1Id = SheetIndex.insert(iModel, modelId, "TestSheetIndex-1");
157
- expect(Id64.isValidId64(sheetIndex1Id)).to.be.true;
158
- const sheetIndex2Id = SheetIndex.insert(iModel, modelId, "TestSheetIndex-2");
159
- expect(Id64.isValidId64(sheetIndex2Id)).to.be.true;
160
- const sheetIndex3Id = SheetIndex.insert(iModel, modelId, "TestSheetIndex-3");
161
- expect(Id64.isValidId64(sheetIndex3Id)).to.be.true;
162
- const sheetIndexRefId = SheetIndexReference.insert({ iModelDb: iModel, sheetIndexModelId: modelId, parentId: sheetIndex1Id, name: "TestSheetReference", priority: 1 });
163
- expect(Id64.isValidId64(sheetIndexRefId)).to.be.true;
164
- const sheetIndexRef = iModel.elements.tryGetElement(sheetIndexRefId);
165
- expect(sheetIndexRef).to.not.be.undefined;
166
- expect(sheetIndexRef.sheetIndex).to.be.undefined;
167
- sheetIndexRef.sheetIndex = new SheetIndexReferenceRefersToSheetIndex(sheetIndex2Id);
168
- sheetIndexRef.update();
169
- const parentRel11 = iModel.relationships.tryGetInstanceProps(SheetIndexReferenceRefersToSheetIndex.classFullName, { sourceId: sheetIndexRefId, targetId: sheetIndex2Id });
170
- expect(parentRel11).to.not.be.undefined;
171
- sheetIndexRef.sheetIndex = new SheetIndexReferenceRefersToSheetIndex(sheetIndex3Id);
172
- sheetIndexRef.update();
173
- const refersRel21 = iModel.relationships.tryGetInstanceProps(SheetIndexReferenceRefersToSheetIndex.classFullName, { sourceId: sheetIndexRefId, targetId: sheetIndex2Id });
174
- expect(refersRel21).to.be.undefined;
175
- const parentRel22 = iModel.relationships.tryGetInstanceProps(SheetIndexReferenceRefersToSheetIndex.classFullName, { sourceId: sheetIndexRefId, targetId: sheetIndex3Id });
176
- expect(parentRel22).to.not.be.undefined;
145
+ withEditTxn(iModel, (txn) => {
146
+ const subjectId = iModel.elements.getRootSubject().id;
147
+ const modelId = SheetIndexModel.insert(txn, subjectId, "TestSheetIndexModel");
148
+ expect(Id64.isValidId64(modelId)).to.be.true;
149
+ const sheetIndex1Id = SheetIndex.insert(txn, modelId, "TestSheetIndex-1");
150
+ expect(Id64.isValidId64(sheetIndex1Id)).to.be.true;
151
+ const sheetIndex2Id = SheetIndex.insert(txn, modelId, "TestSheetIndex-2");
152
+ expect(Id64.isValidId64(sheetIndex2Id)).to.be.true;
153
+ const sheetIndex3Id = SheetIndex.insert(txn, modelId, "TestSheetIndex-3");
154
+ expect(Id64.isValidId64(sheetIndex3Id)).to.be.true;
155
+ const sheetIndexRefId = SheetIndexReference.insert(txn, { sheetIndexModelId: modelId, parentId: sheetIndex1Id, name: "TestSheetReference", priority: 1 });
156
+ expect(Id64.isValidId64(sheetIndexRefId)).to.be.true;
157
+ const sheetIndexRef = iModel.elements.tryGetElement(sheetIndexRefId);
158
+ expect(sheetIndexRef).to.not.be.undefined;
159
+ expect(sheetIndexRef.sheetIndex).to.be.undefined;
160
+ sheetIndexRef.sheetIndex = new SheetIndexReferenceRefersToSheetIndex(sheetIndex2Id);
161
+ sheetIndexRef.update(txn);
162
+ const parentRel11 = iModel.relationships.tryGetInstanceProps(SheetIndexReferenceRefersToSheetIndex.classFullName, { sourceId: sheetIndexRefId, targetId: sheetIndex2Id });
163
+ expect(parentRel11).to.not.be.undefined;
164
+ sheetIndexRef.sheetIndex = new SheetIndexReferenceRefersToSheetIndex(sheetIndex3Id);
165
+ sheetIndexRef.update(txn);
166
+ const refersRel21 = iModel.relationships.tryGetInstanceProps(SheetIndexReferenceRefersToSheetIndex.classFullName, { sourceId: sheetIndexRefId, targetId: sheetIndex2Id });
167
+ expect(refersRel21).to.be.undefined;
168
+ const parentRel22 = iModel.relationships.tryGetInstanceProps(SheetIndexReferenceRefersToSheetIndex.classFullName, { sourceId: sheetIndexRefId, targetId: sheetIndex3Id });
169
+ expect(parentRel22).to.not.be.undefined;
170
+ });
177
171
  });
178
172
  });
179
173
  describe("SheetIndexFolder", () => {
180
- it("Should insert", async () => {
181
- const subjectId = iModel.elements.getRootSubject().id;
182
- const modelId = SheetIndexModel.insert(iModel, subjectId, "TestSheetIndexModel");
183
- expect(Id64.isValidId64(modelId)).to.be.true;
184
- const sheetIndexId = SheetIndex.insert(iModel, modelId, "TestSheetIndex");
185
- expect(Id64.isValidId64(sheetIndexId)).to.be.true;
186
- const folderId = SheetIndexFolder.insert({ iModelDb: iModel, sheetIndexModelId: modelId, parentId: sheetIndexId, name: "TestFolder-1", priority: 1 });
187
- expect(Id64.isValidId64(folderId)).to.be.true;
188
- const folder = iModel.elements.tryGetElement(folderId);
189
- expect(folder).to.not.be.undefined;
190
- const relationship = iModel.relationships.tryGetInstanceProps(ElementOwnsChildElements.classFullName, { sourceId: sheetIndexId, targetId: folderId });
191
- expect(relationship).to.not.be.undefined;
192
- expect(relationship?.classFullName).equals(SheetIndexOwnsEntries.classFullName);
193
- expect(folder?.parent?.id).equals(sheetIndexId);
174
+ it("Should insert", () => {
175
+ withEditTxn(iModel, (txn) => {
176
+ const subjectId = iModel.elements.getRootSubject().id;
177
+ const modelId = SheetIndexModel.insert(txn, subjectId, "TestSheetIndexModel");
178
+ expect(Id64.isValidId64(modelId)).to.be.true;
179
+ const sheetIndexId = SheetIndex.insert(txn, modelId, "TestSheetIndex");
180
+ expect(Id64.isValidId64(sheetIndexId)).to.be.true;
181
+ const folderId = SheetIndexFolder.insert(txn, { sheetIndexModelId: modelId, parentId: sheetIndexId, name: "TestFolder-1", priority: 1 });
182
+ expect(Id64.isValidId64(folderId)).to.be.true;
183
+ const folder = iModel.elements.tryGetElement(folderId);
184
+ expect(folder).to.not.be.undefined;
185
+ const relationship = iModel.relationships.tryGetInstanceProps(ElementOwnsChildElements.classFullName, { sourceId: sheetIndexId, targetId: folderId });
186
+ expect(relationship).to.not.be.undefined;
187
+ expect(relationship?.classFullName).equals(SheetIndexOwnsEntries.classFullName);
188
+ expect(folder?.parent?.id).equals(sheetIndexId);
189
+ });
194
190
  });
195
- it("Should not insert SheetIndexFolder with the same name", async () => {
196
- const subjectId = iModel.elements.getRootSubject().id;
197
- const modelId = SheetIndexModel.insert(iModel, subjectId, "TestSheetIndexModel");
198
- expect(Id64.isValidId64(modelId)).to.be.true;
199
- const sheetIndex = SheetIndex.insert(iModel, modelId, "TestSheetIndex");
200
- expect(Id64.isValidId64(sheetIndex)).to.be.true;
201
- const folder = SheetIndexFolder.insert({ iModelDb: iModel, sheetIndexModelId: modelId, parentId: sheetIndex, name: "TestFolder", priority: 1 });
202
- expect(Id64.isValidId64(folder)).to.be.true;
203
- const failInsert = () => SheetIndexFolder.insert({ iModelDb: iModel, sheetIndexModelId: modelId, parentId: sheetIndex, name: "TestFolder", priority: 0 });
204
- expect(failInsert).throws();
191
+ it("Should not insert SheetIndexFolder with the same name", () => {
192
+ withEditTxn(iModel, (txn) => {
193
+ const subjectId = iModel.elements.getRootSubject().id;
194
+ const modelId = SheetIndexModel.insert(txn, subjectId, "TestSheetIndexModel");
195
+ expect(Id64.isValidId64(modelId)).to.be.true;
196
+ const sheetIndex = SheetIndex.insert(txn, modelId, "TestSheetIndex");
197
+ expect(Id64.isValidId64(sheetIndex)).to.be.true;
198
+ const folder = SheetIndexFolder.insert(txn, { sheetIndexModelId: modelId, parentId: sheetIndex, name: "TestFolder", priority: 1 });
199
+ expect(Id64.isValidId64(folder)).to.be.true;
200
+ const failInsert = () => SheetIndexFolder.insert(txn, { sheetIndexModelId: modelId, parentId: sheetIndex, name: "TestFolder", priority: 0 });
201
+ expect(failInsert).throws();
202
+ });
205
203
  });
206
- it("Should have children", async () => {
207
- const subjectId = iModel.elements.getRootSubject().id;
208
- const modelId = SheetIndexModel.insert(iModel, subjectId, "TestSheetIndexModel");
209
- expect(Id64.isValidId64(modelId)).to.be.true;
210
- const sheetIndexId = SheetIndex.insert(iModel, modelId, "TestSheetIndex");
211
- expect(Id64.isValidId64(sheetIndexId)).to.be.true;
212
- const folder1Id = SheetIndexFolder.insert({ iModelDb: iModel, sheetIndexModelId: modelId, parentId: sheetIndexId, name: "TestFolder-1", priority: 1 });
213
- expect(Id64.isValidId64(folder1Id)).to.be.true;
214
- const folder2Id = SheetIndexFolder.insert({ iModelDb: iModel, sheetIndexModelId: modelId, parentId: folder1Id, name: "TestFolder-2", priority: 1 });
215
- expect(Id64.isValidId64(folder2Id)).to.be.true;
216
- const folder2 = iModel.elements.tryGetElement(folder2Id);
217
- expect(folder2).to.not.be.undefined;
218
- const relationship = iModel.relationships.tryGetInstanceProps(ElementOwnsChildElements.classFullName, { sourceId: folder1Id, targetId: folder2Id });
219
- expect(relationship).to.not.be.undefined;
220
- expect(relationship?.classFullName).equals(SheetIndexFolderOwnsEntries.classFullName);
221
- expect(folder2?.parent?.id).equals(folder1Id);
204
+ it("Should have children", () => {
205
+ withEditTxn(iModel, (txn) => {
206
+ const subjectId = iModel.elements.getRootSubject().id;
207
+ const modelId = SheetIndexModel.insert(txn, subjectId, "TestSheetIndexModel");
208
+ expect(Id64.isValidId64(modelId)).to.be.true;
209
+ const sheetIndexId = SheetIndex.insert(txn, modelId, "TestSheetIndex");
210
+ expect(Id64.isValidId64(sheetIndexId)).to.be.true;
211
+ const folder1Id = SheetIndexFolder.insert(txn, { sheetIndexModelId: modelId, parentId: sheetIndexId, name: "TestFolder-1", priority: 1 });
212
+ expect(Id64.isValidId64(folder1Id)).to.be.true;
213
+ const folder2Id = SheetIndexFolder.insert(txn, { sheetIndexModelId: modelId, parentId: folder1Id, name: "TestFolder-2", priority: 1 });
214
+ expect(Id64.isValidId64(folder2Id)).to.be.true;
215
+ const folder2 = iModel.elements.tryGetElement(folder2Id);
216
+ expect(folder2).to.not.be.undefined;
217
+ const relationship = iModel.relationships.tryGetInstanceProps(ElementOwnsChildElements.classFullName, { sourceId: folder1Id, targetId: folder2Id });
218
+ expect(relationship).to.not.be.undefined;
219
+ expect(relationship?.classFullName).equals(SheetIndexFolderOwnsEntries.classFullName);
220
+ expect(folder2?.parent?.id).equals(folder1Id);
221
+ });
222
222
  });
223
223
  });
224
224
  describe("SheetReferences", () => {
225
- it("Should not insert SheetReferences with the same name", async () => {
226
- const subjectId = iModel.elements.getRootSubject().id;
227
- const modelId = SheetIndexModel.insert(iModel, subjectId, "TestSheetIndexModel");
228
- expect(Id64.isValidId64(modelId)).to.be.true;
229
- const sheetIndex = SheetIndex.insert(iModel, modelId, "TestSheetIndex");
230
- expect(Id64.isValidId64(sheetIndex)).to.be.true;
231
- const sheetRef1 = SheetReference.insert({ iModelDb: iModel, sheetIndexModelId: modelId, parentId: sheetIndex, name: "TestSheetRef", priority: 1 });
232
- expect(Id64.isValidId64(sheetRef1)).to.be.true;
233
- const failInsert = () => SheetReference.insert({ iModelDb: iModel, sheetIndexModelId: modelId, parentId: sheetIndex, name: "TestSheetRef", priority: 0 });
234
- expect(failInsert).throws();
225
+ it("Should not insert SheetReferences with the same name", () => {
226
+ withEditTxn(iModel, (txn) => {
227
+ const subjectId = iModel.elements.getRootSubject().id;
228
+ const modelId = SheetIndexModel.insert(txn, subjectId, "TestSheetIndexModel");
229
+ expect(Id64.isValidId64(modelId)).to.be.true;
230
+ const sheetIndex = SheetIndex.insert(txn, modelId, "TestSheetIndex");
231
+ expect(Id64.isValidId64(sheetIndex)).to.be.true;
232
+ const sheetRef1 = SheetReference.insert(txn, { sheetIndexModelId: modelId, parentId: sheetIndex, name: "TestSheetRef", priority: 1 });
233
+ expect(Id64.isValidId64(sheetRef1)).to.be.true;
234
+ const failInsert = () => SheetReference.insert(txn, { sheetIndexModelId: modelId, parentId: sheetIndex, name: "TestSheetRef", priority: 0 });
235
+ expect(failInsert).throws();
236
+ });
235
237
  });
236
- it("Should insert SheetReferences without a Sheet", async () => {
237
- const subjectId = iModel.elements.getRootSubject().id;
238
- const modelId = SheetIndexModel.insert(iModel, subjectId, "TestSheetIndexModel");
239
- expect(Id64.isValidId64(modelId)).to.be.true;
240
- const sheetIndex = SheetIndex.insert(iModel, modelId, "TestSheetIndex");
241
- expect(Id64.isValidId64(sheetIndex)).to.be.true;
242
- const sheetRef = SheetReference.insert({ iModelDb: iModel, sheetIndexModelId: modelId, parentId: sheetIndex, name: "TestSheetRef", priority: 1 });
243
- expect(Id64.isValidId64(sheetRef)).to.be.true;
238
+ it("Should insert SheetReferences without a Sheet", () => {
239
+ withEditTxn(iModel, (txn) => {
240
+ const subjectId = iModel.elements.getRootSubject().id;
241
+ const modelId = SheetIndexModel.insert(txn, subjectId, "TestSheetIndexModel");
242
+ expect(Id64.isValidId64(modelId)).to.be.true;
243
+ const sheetIndex = SheetIndex.insert(txn, modelId, "TestSheetIndex");
244
+ expect(Id64.isValidId64(sheetIndex)).to.be.true;
245
+ const sheetRef = SheetReference.insert(txn, { sheetIndexModelId: modelId, parentId: sheetIndex, name: "TestSheetRef", priority: 1 });
246
+ expect(Id64.isValidId64(sheetRef)).to.be.true;
247
+ });
244
248
  });
245
- it("Should insert and with a Sheet", async () => {
246
- const subjectId = iModel.elements.getRootSubject().id;
247
- const sheetId = await insertSheet(iModel, "sheet-1");
248
- const modelId = SheetIndexModel.insert(iModel, subjectId, "TestSheetIndexModel");
249
- expect(Id64.isValidId64(modelId)).to.be.true;
250
- const sheetIndex = SheetIndex.insert(iModel, modelId, "TestSheetIndex");
251
- expect(Id64.isValidId64(sheetIndex)).to.be.true;
252
- const sheetRefId = SheetReference.insert({ iModelDb: iModel, sheetIndexModelId: modelId, parentId: sheetIndex, name: "TestSheetRef", priority: 1, sheetId });
253
- expect(Id64.isValidId64(sheetRefId)).to.be.true;
254
- const ref = iModel.elements.tryGetElement(sheetRefId);
255
- expect(ref).to.not.be.undefined;
256
- const relationship = iModel.relationships.tryGetInstanceProps(SheetReferenceRefersToSheet.classFullName, { sourceId: sheetRefId, targetId: sheetId });
257
- expect(relationship).to.not.be.undefined;
258
- expect(relationship?.classFullName).equals(SheetReferenceRefersToSheet.classFullName);
259
- expect(ref?.sheet?.id).equals(sheetId);
249
+ it("Should insert and with a Sheet", () => {
250
+ withEditTxn(iModel, (txn) => {
251
+ const sheetId = insertSheet(txn, "sheet-1");
252
+ const subjectId = iModel.elements.getRootSubject().id;
253
+ const modelId = SheetIndexModel.insert(txn, subjectId, "TestSheetIndexModel");
254
+ expect(Id64.isValidId64(modelId)).to.be.true;
255
+ const sheetIndex = SheetIndex.insert(txn, modelId, "TestSheetIndex");
256
+ expect(Id64.isValidId64(sheetIndex)).to.be.true;
257
+ const sheetRefId = SheetReference.insert(txn, { sheetIndexModelId: modelId, parentId: sheetIndex, name: "TestSheetRef", priority: 1, sheetId });
258
+ expect(Id64.isValidId64(sheetRefId)).to.be.true;
259
+ const ref = iModel.elements.tryGetElement(sheetRefId);
260
+ expect(ref).to.not.be.undefined;
261
+ const relationship = iModel.relationships.tryGetInstanceProps(SheetReferenceRefersToSheet.classFullName, { sourceId: sheetRefId, targetId: sheetId });
262
+ expect(relationship).to.not.be.undefined;
263
+ expect(relationship?.classFullName).equals(SheetReferenceRefersToSheet.classFullName);
264
+ expect(ref?.sheet?.id).equals(sheetId);
265
+ });
260
266
  });
261
- it.skip("Should not insert with the same Sheet twice", async () => {
262
- const subjectId = iModel.elements.getRootSubject().id;
263
- const sheetId = await insertSheet(iModel, "sheet-1");
264
- const modelId = SheetIndexModel.insert(iModel, subjectId, "TestSheetIndexModel");
265
- expect(Id64.isValidId64(modelId)).to.be.true;
266
- const sheetIndex = SheetIndex.insert(iModel, modelId, "TestSheetIndex");
267
- SheetReference.insert({ iModelDb: iModel, sheetIndexModelId: modelId, parentId: sheetIndex, name: "TestSheetRef-1", priority: 1, sheetId });
268
- const sameIndex = () => SheetReference.insert({ iModelDb: iModel, sheetIndexModelId: modelId, parentId: sheetIndex, name: "TestSheetRef-2", priority: 2, sheetId });
269
- expect(sameIndex).throws();
267
+ it("supports deprecated SheetReference.insert overload when implicit writes are allowed", () => {
268
+ const previousEnforcement = EditTxn.implicitWriteEnforcement;
269
+ EditTxn.implicitWriteEnforcement = "allow";
270
+ try {
271
+ withEditTxn(iModel, (txn) => {
272
+ const sheetId = insertSheet(txn, "legacy-sheet");
273
+ const subjectId = iModel.elements.getRootSubject().id;
274
+ const modelId = SheetIndexModel.insert(txn, subjectId, "LegacySheetRefModel");
275
+ const sheetIndex = SheetIndex.insert(txn, modelId, "LegacySheetIndex");
276
+ // eslint-disable-next-line @typescript-eslint/no-deprecated
277
+ const sheetRefId = SheetReference.insert({
278
+ iModelDb: iModel,
279
+ sheetIndexModelId: modelId,
280
+ parentId: sheetIndex,
281
+ name: "LegacySheetRef",
282
+ priority: 1,
283
+ sheetId,
284
+ });
285
+ expect(Id64.isValidId64(sheetRefId)).to.be.true;
286
+ const ref = iModel.elements.tryGetElement(sheetRefId);
287
+ expect(ref?.sheet?.id).to.equal(sheetId);
288
+ });
289
+ }
290
+ finally {
291
+ EditTxn.implicitWriteEnforcement = previousEnforcement;
292
+ }
293
+ });
294
+ it("rejects deprecated SheetReference.insert overload when implicit writes are disallowed", () => {
295
+ const previousEnforcement = EditTxn.implicitWriteEnforcement;
296
+ EditTxn.implicitWriteEnforcement = "throw";
297
+ try {
298
+ withEditTxn(iModel, (txn) => {
299
+ const sheetId = insertSheet(txn, "legacy-throw-sheet");
300
+ const subjectId = iModel.elements.getRootSubject().id;
301
+ const modelId = SheetIndexModel.insert(txn, subjectId, "LegacyThrowSheetRefModel");
302
+ const sheetIndex = SheetIndex.insert(txn, modelId, "LegacyThrowSheetIndex");
303
+ // eslint-disable-next-line @typescript-eslint/no-deprecated
304
+ expect(() => SheetReference.insert({
305
+ iModelDb: iModel,
306
+ sheetIndexModelId: modelId,
307
+ parentId: sheetIndex,
308
+ name: "LegacyThrowSheetRef",
309
+ priority: 1,
310
+ sheetId,
311
+ })).to.throw().that.satisfies((error) => EditTxnError.isError(error, "implicit-txn-write-disallowed"));
312
+ });
313
+ }
314
+ finally {
315
+ EditTxn.implicitWriteEnforcement = previousEnforcement;
316
+ }
317
+ });
318
+ it.skip("Should not insert with the same Sheet twice", () => {
319
+ withEditTxn(iModel, (txn) => {
320
+ const sheetId = insertSheet(txn, "sheet-1");
321
+ const subjectId = iModel.elements.getRootSubject().id;
322
+ const modelId = SheetIndexModel.insert(txn, subjectId, "TestSheetIndexModel");
323
+ expect(Id64.isValidId64(modelId)).to.be.true;
324
+ const sheetIndex = SheetIndex.insert(txn, modelId, "TestSheetIndex");
325
+ SheetReference.insert(txn, { sheetIndexModelId: modelId, parentId: sheetIndex, name: "TestSheetRef-1", priority: 1, sheetId });
326
+ const sameIndex = () => SheetReference.insert(txn, { sheetIndexModelId: modelId, parentId: sheetIndex, name: "TestSheetRef-2", priority: 2, sheetId });
327
+ expect(sameIndex).throws();
328
+ });
270
329
  });
271
330
  });
272
331
  describe("SheetIndexReferences", () => {
273
- it("Should not insert SheetIndexReferences with the same name", async () => {
274
- const subjectId = iModel.elements.getRootSubject().id;
275
- const modelId = SheetIndexModel.insert(iModel, subjectId, "TestSheetIndexModel");
276
- expect(Id64.isValidId64(modelId)).to.be.true;
277
- const sheetIndex = SheetIndex.insert(iModel, modelId, "TestSheetIndex");
278
- expect(Id64.isValidId64(sheetIndex)).to.be.true;
279
- const sheetIndexRef = SheetIndexReference.insert({ iModelDb: iModel, sheetIndexModelId: modelId, parentId: sheetIndex, name: "TestSheetIndexRef", priority: 1 });
280
- expect(Id64.isValidId64(sheetIndexRef)).to.be.true;
281
- const failInsert = () => SheetIndexReference.insert({ iModelDb: iModel, sheetIndexModelId: modelId, parentId: sheetIndex, name: "TestSheetIndexRef", priority: 0 });
282
- expect(failInsert).throws();
332
+ it("Should not insert SheetIndexReferences with the same name", () => {
333
+ withEditTxn(iModel, (txn) => {
334
+ const subjectId = iModel.elements.getRootSubject().id;
335
+ const modelId = SheetIndexModel.insert(txn, subjectId, "TestSheetIndexModel");
336
+ expect(Id64.isValidId64(modelId)).to.be.true;
337
+ const sheetIndex = SheetIndex.insert(txn, modelId, "TestSheetIndex");
338
+ expect(Id64.isValidId64(sheetIndex)).to.be.true;
339
+ const sheetIndexRef = SheetIndexReference.insert(txn, { sheetIndexModelId: modelId, parentId: sheetIndex, name: "TestSheetIndexRef", priority: 1 });
340
+ expect(Id64.isValidId64(sheetIndexRef)).to.be.true;
341
+ const failInsert = () => SheetIndexReference.insert(txn, { sheetIndexModelId: modelId, parentId: sheetIndex, name: "TestSheetIndexRef", priority: 0 });
342
+ expect(failInsert).throws();
343
+ });
283
344
  });
284
- it("Should insert SheetIndexReferences without a SheetIndexRef", async () => {
285
- const subjectId = iModel.elements.getRootSubject().id;
286
- const modelId = SheetIndexModel.insert(iModel, subjectId, "TestSheetIndexModel");
287
- expect(Id64.isValidId64(modelId)).to.be.true;
288
- const sheetIndex1Id = SheetIndex.insert(iModel, modelId, "TestSheetIndex");
289
- expect(Id64.isValidId64(sheetIndex1Id)).to.be.true;
290
- const sheetRef = SheetIndexReference.insert({ iModelDb: iModel, sheetIndexModelId: modelId, parentId: sheetIndex1Id, name: "TestSheetIndexRef", priority: 1 });
291
- expect(Id64.isValidId64(sheetRef)).to.be.true;
345
+ it("Should insert SheetIndexReferences without a SheetIndexRef", () => {
346
+ withEditTxn(iModel, (txn) => {
347
+ const subjectId = iModel.elements.getRootSubject().id;
348
+ const modelId = SheetIndexModel.insert(txn, subjectId, "TestSheetIndexModel");
349
+ expect(Id64.isValidId64(modelId)).to.be.true;
350
+ const sheetIndex1Id = SheetIndex.insert(txn, modelId, "TestSheetIndex");
351
+ expect(Id64.isValidId64(sheetIndex1Id)).to.be.true;
352
+ const sheetRef = SheetIndexReference.insert(txn, { sheetIndexModelId: modelId, parentId: sheetIndex1Id, name: "TestSheetIndexRef", priority: 1 });
353
+ expect(Id64.isValidId64(sheetRef)).to.be.true;
354
+ });
292
355
  });
293
- it("Should insert and with a SheetIndexRef", async () => {
294
- const subjectId = iModel.elements.getRootSubject().id;
295
- const modelId = SheetIndexModel.insert(iModel, subjectId, "TestSheetIndexModel");
296
- expect(Id64.isValidId64(modelId)).to.be.true;
297
- const sheetIndex1Id = SheetIndex.insert(iModel, modelId, "TestSheetIndex-1");
298
- expect(Id64.isValidId64(sheetIndex1Id)).to.be.true;
299
- const sheetIndex2Id = SheetIndex.insert(iModel, modelId, "TestSheetIndex-2");
300
- expect(Id64.isValidId64(sheetIndex1Id)).to.be.true;
301
- const sheetIndexRefId = SheetIndexReference.insert({ iModelDb: iModel, sheetIndexModelId: modelId, parentId: sheetIndex1Id, name: "TestSheetRef", priority: 1, sheetIndexId: sheetIndex2Id });
302
- expect(Id64.isValidId64(sheetIndexRefId)).to.be.true;
303
- const ref = iModel.elements.tryGetElement(sheetIndexRefId);
304
- expect(ref).to.not.be.undefined;
305
- const relationship = iModel.relationships.tryGetInstanceProps(SheetIndexReferenceRefersToSheetIndex.classFullName, { sourceId: sheetIndexRefId, targetId: sheetIndex2Id });
306
- expect(relationship).to.not.be.undefined;
307
- expect(relationship?.classFullName).equals(SheetIndexReferenceRefersToSheetIndex.classFullName);
308
- expect(ref?.sheetIndex?.id).equals(sheetIndex2Id);
356
+ it("Should insert and with a SheetIndexRef", () => {
357
+ withEditTxn(iModel, (txn) => {
358
+ const subjectId = iModel.elements.getRootSubject().id;
359
+ const modelId = SheetIndexModel.insert(txn, subjectId, "TestSheetIndexModel");
360
+ expect(Id64.isValidId64(modelId)).to.be.true;
361
+ const sheetIndex1Id = SheetIndex.insert(txn, modelId, "TestSheetIndex-1");
362
+ expect(Id64.isValidId64(sheetIndex1Id)).to.be.true;
363
+ const sheetIndex2Id = SheetIndex.insert(txn, modelId, "TestSheetIndex-2");
364
+ expect(Id64.isValidId64(sheetIndex1Id)).to.be.true;
365
+ const sheetIndexRefId = SheetIndexReference.insert(txn, { sheetIndexModelId: modelId, parentId: sheetIndex1Id, name: "TestSheetRef", priority: 1, sheetIndexId: sheetIndex2Id });
366
+ expect(Id64.isValidId64(sheetIndexRefId)).to.be.true;
367
+ const ref = iModel.elements.tryGetElement(sheetIndexRefId);
368
+ expect(ref).to.not.be.undefined;
369
+ const relationship = iModel.relationships.tryGetInstanceProps(SheetIndexReferenceRefersToSheetIndex.classFullName, { sourceId: sheetIndexRefId, targetId: sheetIndex2Id });
370
+ expect(relationship).to.not.be.undefined;
371
+ expect(relationship?.classFullName).equals(SheetIndexReferenceRefersToSheetIndex.classFullName);
372
+ expect(ref?.sheetIndex?.id).equals(sheetIndex2Id);
373
+ });
309
374
  });
310
375
  });
311
376
  });