@itwin/core-backend 5.9.0-dev.3 → 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
@@ -6,7 +6,8 @@ import { assert } from "chai";
6
6
  import * as path from "path";
7
7
  import { Id64 } from "@itwin/core-bentley";
8
8
  import { Point3d } from "@itwin/core-geometry";
9
- import { IModel } from "@itwin/core-common";
9
+ import { ImageSourceFormat, IModel } from "@itwin/core-common";
10
+ import { EditTxn } from "../../EditTxn";
10
11
  import { CategorySelector, DisplayStyle2d, DisplayStyle3d, DrawingCategory, DrawingViewDefinition, GeometryPart, IModelJsFs, InformationPartitionElement, ModelSelector, OrthographicViewDefinition, RenderMaterialElement, SnapshotDb, SpatialCategory, SubCategory, Subject, Texture, } from "../../core-backend";
11
12
  import { ExtensiveTestScenario, IModelTestUtils } from "../IModelTestUtils";
12
13
  import { KnownTestLocations } from "../KnownTestLocations";
@@ -60,149 +61,164 @@ describe("DeleteDefinitionElements", () => {
60
61
  assert.isTrue(Id64.isValidId64(physicalObjectId1));
61
62
  assert.isTrue(Id64.isValidId64(physicalObjectId2));
62
63
  assert.isTrue(Id64.isValidId64(physicalObjectId3));
64
+ const txn = new EditTxn(iModelDb, "delete definition elements");
65
+ txn.start();
63
66
  let usedDefinitionElementIds;
64
- // make sure deleteDefinitionElements skips Elements that are not DefinitionElements
65
- usedDefinitionElementIds = iModelDb.elements.deleteDefinitionElements([physicalObjectId1, physicalObjectId2, physicalObjectId3, subjectId]);
66
- assert.equal(usedDefinitionElementIds.size, 0);
67
- assert.isDefined(iModelDb.elements.tryGetElement(physicalObjectId1));
68
- assert.isDefined(iModelDb.elements.tryGetElement(physicalObjectId2));
69
- assert.isDefined(iModelDb.elements.tryGetElement(physicalObjectId3));
70
- assert.isDefined(iModelDb.elements.tryGetElement(subjectId));
71
- // make sure deleteDefinitionElements skips invalid Ids
72
- usedDefinitionElementIds = iModelDb.elements.deleteDefinitionElements([Id64.invalid, Id64.invalid]);
73
- assert.equal(usedDefinitionElementIds.size, 0);
74
- // delete/deleteDefinitionElements for a used GeometryPart should fail
75
- assert.throws(() => iModelDb.elements.deleteElement(geometryPartId));
76
- usedDefinitionElementIds = iModelDb.elements.deleteDefinitionElements([geometryPartId]);
77
- assert.isTrue(usedDefinitionElementIds.has(geometryPartId));
78
- assert.isDefined(iModelDb.elements.tryGetElement(geometryPartId));
79
- // deleteDefinitionElements for an unused GeometryPart should succeed, delete should still fail
80
- const unusedGeometryPartProps = {
81
- classFullName: GeometryPart.classFullName,
82
- model: definitionModelId,
83
- code: GeometryPart.createCode(iModelDb, definitionModelId, "Unused GeometryPart"),
84
- geom: IModelTestUtils.createBox(Point3d.create(1, 1, 1)),
85
- };
86
- const unusedGeometryPartId = iModelDb.elements.insertElement(unusedGeometryPartProps);
87
- assert.isTrue(Id64.isValidId64(unusedGeometryPartId));
88
- assert.throws(() => iModelDb.elements.deleteElement(unusedGeometryPartId));
89
- usedDefinitionElementIds = iModelDb.elements.deleteDefinitionElements([unusedGeometryPartId]);
90
- assert.equal(usedDefinitionElementIds.size, 0);
91
- assert.isUndefined(iModelDb.elements.tryGetElement(unusedGeometryPartId));
92
- // delete/deleteDefinitionElements for a used RenderMaterial should fail
93
- assert.throws(() => iModelDb.elements.deleteElement(renderMaterialId));
94
- usedDefinitionElementIds = iModelDb.elements.deleteDefinitionElements([renderMaterialId]);
95
- assert.isTrue(usedDefinitionElementIds.has(renderMaterialId));
96
- assert.isDefined(iModelDb.elements.tryGetElement(renderMaterialId));
97
- // deleteDefinitionElements for an unused RenderMaterial should succeed, delete should still fail
98
- const unusedRenderMaterialId = RenderMaterialElement.insert(iModelDb, definitionModelId, "Unused RenderMaterial", { paletteName: "PaletteName" });
99
- assert.isTrue(Id64.isValidId64(unusedRenderMaterialId));
100
- assert.throws(() => iModelDb.elements.deleteElement(unusedRenderMaterialId));
101
- usedDefinitionElementIds = iModelDb.elements.deleteDefinitionElements([unusedRenderMaterialId]);
102
- assert.equal(usedDefinitionElementIds.size, 0);
103
- assert.isUndefined(iModelDb.elements.tryGetElement(unusedRenderMaterialId));
104
- // delete/deleteDefinitionElements for a used Texture should fail
105
- assert.throws(() => iModelDb.elements.deleteElement(textureId));
106
- usedDefinitionElementIds = iModelDb.elements.deleteDefinitionElements([textureId]);
107
- assert.isTrue(usedDefinitionElementIds.has(textureId));
108
- assert.isDefined(iModelDb.elements.tryGetElement(textureId));
109
- // deleteDefinitionElements for an unused Texture should succeed, delete should still fail
110
- const unusedTextureId = IModelTestUtils.insertTextureElement(iModelDb, definitionModelId, "Unused Texture");
111
- assert.isTrue(Id64.isValidId64(unusedTextureId));
112
- assert.throws(() => iModelDb.elements.deleteElement(unusedTextureId));
113
- usedDefinitionElementIds = iModelDb.elements.deleteDefinitionElements([unusedTextureId]);
114
- assert.equal(usedDefinitionElementIds.size, 0);
115
- assert.isUndefined(iModelDb.elements.tryGetElement(unusedTextureId));
116
- // delete/deleteDefinitionElements for a used SpatialCategory should fail
117
- assert.throws(() => iModelDb.elements.deleteElement(spatialCategoryId));
118
- usedDefinitionElementIds = iModelDb.elements.deleteDefinitionElements([spatialCategoryId]);
119
- assert.isTrue(usedDefinitionElementIds.has(spatialCategoryId));
120
- assert.isDefined(iModelDb.elements.tryGetElement(spatialCategoryId));
121
- // delete/deleteDefinitionElements for a default SubCategory should fail
122
- const spatialCategory = iModelDb.elements.getElement(spatialCategoryId, SpatialCategory);
123
- const defaultSpatialSubCategoryId = spatialCategory.myDefaultSubCategoryId();
124
- assert.throws(() => iModelDb.elements.deleteElement(defaultSpatialSubCategoryId));
125
- usedDefinitionElementIds = iModelDb.elements.deleteDefinitionElements([defaultSpatialSubCategoryId]);
126
- assert.isTrue(usedDefinitionElementIds.has(defaultSpatialSubCategoryId));
127
- assert.isDefined(iModelDb.elements.tryGetElement(defaultSpatialSubCategoryId));
128
- // delete/deleteDefinitionElements for a used, non-default SubCategory should fail
129
- assert.throws(() => iModelDb.elements.deleteElement(subCategoryId));
130
- usedDefinitionElementIds = iModelDb.elements.deleteDefinitionElements([subCategoryId]);
131
- assert.isTrue(usedDefinitionElementIds.has(subCategoryId));
132
- assert.isDefined(iModelDb.elements.tryGetElement(subCategoryId));
133
- // deleteDefinitionElements for an unused SubCategory should succeed, delete should still fail
134
- const unusedSubCategoryId = SubCategory.insert(iModelDb, spatialCategoryId, "Unused SubCategory", {});
135
- assert.isTrue(Id64.isValidId64(unusedSubCategoryId));
136
- assert.throws(() => iModelDb.elements.deleteElement(unusedSubCategoryId));
137
- usedDefinitionElementIds = iModelDb.elements.deleteDefinitionElements([unusedSubCategoryId]);
138
- assert.equal(usedDefinitionElementIds.size, 0);
139
- assert.isUndefined(iModelDb.elements.tryGetElement(unusedSubCategoryId));
140
- // deleteDefinitionElements for an unused SpatialCategory should succeed, delete should still fail
141
- const unusedSpatialCategoryId = SpatialCategory.insert(iModelDb, definitionModelId, "Unused SpatialCategory", {});
142
- assert.isTrue(Id64.isValidId64(unusedSpatialCategoryId));
143
- const unusedSpatialCategory = iModelDb.elements.getElement(unusedSpatialCategoryId, SpatialCategory);
144
- const unusedSpatialCategoryDefaultSubCategoryId = unusedSpatialCategory.myDefaultSubCategoryId();
145
- assert.isTrue(Id64.isValidId64(unusedSpatialCategoryDefaultSubCategoryId));
146
- assert.throws(() => iModelDb.elements.deleteElement(unusedSpatialCategoryId));
147
- assert.throws(() => iModelDb.elements.deleteElement(unusedSpatialCategoryDefaultSubCategoryId));
148
- usedDefinitionElementIds = iModelDb.elements.deleteDefinitionElements([unusedSpatialCategoryId]);
149
- assert.equal(usedDefinitionElementIds.size, 0);
150
- assert.isUndefined(iModelDb.elements.tryGetElement(unusedSpatialCategoryId));
151
- assert.isUndefined(iModelDb.elements.tryGetElement(unusedSpatialCategoryDefaultSubCategoryId));
152
- // delete/deleteDefinitionElements of a used DrawingCategory should fail
153
- assert.throws(() => iModelDb.elements.deleteElement(drawingCategoryId));
154
- usedDefinitionElementIds = iModelDb.elements.deleteDefinitionElements([drawingCategoryId]);
155
- assert.isTrue(usedDefinitionElementIds.has(drawingCategoryId));
156
- assert.isDefined(iModelDb.elements.tryGetElement(drawingCategoryId));
157
- // deleteDefinitionElements for an unused DrawingCategory should succeed, delete should still fail
158
- const unusedDrawingCategoryId = DrawingCategory.insert(iModelDb, definitionModelId, "Unused DrawingCategory", {});
159
- assert.isTrue(Id64.isValidId64(unusedDrawingCategoryId));
160
- const unusedDrawingCategory = iModelDb.elements.getElement(unusedDrawingCategoryId, DrawingCategory);
161
- const unusedDrawingSubCategoryId = unusedDrawingCategory.myDefaultSubCategoryId();
162
- assert.isTrue(Id64.isValidId64(unusedDrawingSubCategoryId));
163
- assert.throws(() => iModelDb.elements.deleteElement(unusedDrawingSubCategoryId));
164
- usedDefinitionElementIds = iModelDb.elements.deleteDefinitionElements([unusedDrawingCategoryId]);
165
- assert.equal(usedDefinitionElementIds.size, 0);
166
- assert.isUndefined(iModelDb.elements.tryGetElement(unusedDrawingCategoryId));
167
- assert.isUndefined(iModelDb.elements.tryGetElement(unusedDrawingSubCategoryId));
168
- // delete/deleteDefinitionElements of DefinitionElements used by an existing SpatialViewDefinition should fail
169
- assert.throws(() => iModelDb.elements.deleteElement(spatialCategorySelectorId));
170
- assert.throws(() => iModelDb.elements.deleteElement(modelSelectorId));
171
- assert.throws(() => iModelDb.elements.deleteElement(displayStyle3dId));
172
- usedDefinitionElementIds = iModelDb.elements.deleteDefinitionElements([spatialCategorySelectorId, modelSelectorId, displayStyle3dId]);
173
- assert.isTrue(usedDefinitionElementIds.has(spatialCategorySelectorId));
174
- assert.isTrue(usedDefinitionElementIds.has(modelSelectorId));
175
- assert.isTrue(usedDefinitionElementIds.has(displayStyle3dId));
176
- assert.isDefined(iModelDb.elements.tryGetElement(spatialCategorySelectorId));
177
- assert.isDefined(iModelDb.elements.tryGetElement(modelSelectorId));
178
- assert.isDefined(iModelDb.elements.tryGetElement(displayStyle3dId));
179
- assert.isDefined(iModelDb.elements.tryGetElement(viewId));
180
- // deleteDefinitionElements should succeed when the list includes the SpatialViewDefinition as the only thing referencing other DefinitionElements, delete should still fail
181
- assert.throws(() => iModelDb.elements.deleteElement(viewId));
182
- usedDefinitionElementIds = iModelDb.elements.deleteDefinitionElements([viewId, spatialCategorySelectorId, modelSelectorId, displayStyle3dId]);
183
- assert.equal(usedDefinitionElementIds.size, 0);
184
- assert.isUndefined(iModelDb.elements.tryGetElement(spatialCategorySelectorId));
185
- assert.isUndefined(iModelDb.elements.tryGetElement(modelSelectorId));
186
- assert.isUndefined(iModelDb.elements.tryGetElement(displayStyle3dId));
187
- assert.isUndefined(iModelDb.elements.tryGetElement(viewId));
188
- // delete/deleteDefinitionElements of DefinitionElements used by an existing DrawingViewDefinition should fail
189
- assert.throws(() => iModelDb.elements.deleteElement(drawingCategorySelectorId));
190
- assert.throws(() => iModelDb.elements.deleteElement(displayStyle2dId));
191
- usedDefinitionElementIds = iModelDb.elements.deleteDefinitionElements([drawingCategorySelectorId, displayStyle2dId]);
192
- assert.isTrue(usedDefinitionElementIds.has(drawingCategorySelectorId));
193
- assert.isTrue(usedDefinitionElementIds.has(displayStyle2dId));
194
- assert.isDefined(iModelDb.elements.tryGetElement(drawingCategorySelectorId));
195
- assert.isDefined(iModelDb.elements.tryGetElement(displayStyle2dId));
196
- assert.isDefined(iModelDb.elements.tryGetElement(drawingViewId));
197
- // deleteDefinitionElements should succeed when the list includes the DrawingViewDefinition as the only thing referencing other DefinitionElements, delete should still fail
198
- assert.throws(() => iModelDb.elements.deleteElement(drawingViewId));
199
- usedDefinitionElementIds = iModelDb.elements.deleteDefinitionElements([drawingViewId, drawingCategorySelectorId, displayStyle2dId]);
200
- assert.equal(usedDefinitionElementIds.size, 0);
201
- assert.isUndefined(iModelDb.elements.tryGetElement(drawingCategorySelectorId));
202
- assert.isUndefined(iModelDb.elements.tryGetElement(displayStyle2dId));
203
- assert.isUndefined(iModelDb.elements.tryGetElement(drawingViewId));
204
- iModelDb.saveChanges();
205
- iModelDb.close();
67
+ const expectDeleteToThrow = (elementId) => assert.throws(() => txn.deleteElement(elementId));
68
+ try {
69
+ // make sure deleteDefinitionElements skips Elements that are not DefinitionElements
70
+ usedDefinitionElementIds = txn.deleteDefinitionElements([physicalObjectId1, physicalObjectId2, physicalObjectId3, subjectId]);
71
+ assert.equal(usedDefinitionElementIds.size, 0);
72
+ assert.isDefined(iModelDb.elements.tryGetElement(physicalObjectId1));
73
+ assert.isDefined(iModelDb.elements.tryGetElement(physicalObjectId2));
74
+ assert.isDefined(iModelDb.elements.tryGetElement(physicalObjectId3));
75
+ assert.isDefined(iModelDb.elements.tryGetElement(subjectId));
76
+ // make sure deleteDefinitionElements skips invalid Ids
77
+ usedDefinitionElementIds = txn.deleteDefinitionElements([Id64.invalid, Id64.invalid]);
78
+ assert.equal(usedDefinitionElementIds.size, 0);
79
+ // delete/deleteDefinitionElements for a used GeometryPart should fail
80
+ expectDeleteToThrow(geometryPartId);
81
+ usedDefinitionElementIds = txn.deleteDefinitionElements([geometryPartId]);
82
+ assert.isTrue(usedDefinitionElementIds.has(geometryPartId));
83
+ assert.isDefined(iModelDb.elements.tryGetElement(geometryPartId));
84
+ // deleteDefinitionElements for an unused GeometryPart should succeed, delete should still fail
85
+ const unusedGeometryPartProps = {
86
+ classFullName: GeometryPart.classFullName,
87
+ model: definitionModelId,
88
+ code: GeometryPart.createCode(iModelDb, definitionModelId, "Unused GeometryPart"),
89
+ geom: IModelTestUtils.createBox(Point3d.create(1, 1, 1)),
90
+ };
91
+ const unusedGeometryPartId = txn.insertElement(unusedGeometryPartProps);
92
+ assert.isTrue(Id64.isValidId64(unusedGeometryPartId));
93
+ expectDeleteToThrow(unusedGeometryPartId);
94
+ usedDefinitionElementIds = txn.deleteDefinitionElements([unusedGeometryPartId]);
95
+ assert.equal(usedDefinitionElementIds.size, 0);
96
+ assert.isUndefined(iModelDb.elements.tryGetElement(unusedGeometryPartId));
97
+ // delete/deleteDefinitionElements for a used RenderMaterial should fail
98
+ expectDeleteToThrow(renderMaterialId);
99
+ usedDefinitionElementIds = txn.deleteDefinitionElements([renderMaterialId]);
100
+ assert.isTrue(usedDefinitionElementIds.has(renderMaterialId));
101
+ assert.isDefined(iModelDb.elements.tryGetElement(renderMaterialId));
102
+ // deleteDefinitionElements for an unused RenderMaterial should succeed, delete should still fail
103
+ const unusedRenderMaterial = RenderMaterialElement.create(iModelDb, definitionModelId, "Unused RenderMaterial", { paletteName: "PaletteName" });
104
+ const unusedRenderMaterialId = txn.insertElement(unusedRenderMaterial.toJSON());
105
+ assert.isTrue(Id64.isValidId64(unusedRenderMaterialId));
106
+ expectDeleteToThrow(unusedRenderMaterialId);
107
+ usedDefinitionElementIds = txn.deleteDefinitionElements([unusedRenderMaterialId]);
108
+ assert.equal(usedDefinitionElementIds.size, 0);
109
+ assert.isUndefined(iModelDb.elements.tryGetElement(unusedRenderMaterialId));
110
+ // delete/deleteDefinitionElements for a used Texture should fail
111
+ expectDeleteToThrow(textureId);
112
+ usedDefinitionElementIds = txn.deleteDefinitionElements([textureId]);
113
+ assert.isTrue(usedDefinitionElementIds.has(textureId));
114
+ assert.isDefined(iModelDb.elements.tryGetElement(textureId));
115
+ // deleteDefinitionElements for an unused Texture should succeed, delete should still fail
116
+ const textureData = Buffer.from([137, 80, 78, 71, 13, 10, 26, 10, 0, 0, 0, 13, 73, 72, 68, 82, 0, 0, 0, 3, 0, 0, 0, 3, 8, 2, 0, 0, 0, 217, 74, 34, 232, 0, 0, 0, 1, 115, 82, 71, 66, 0, 174, 206, 28, 233, 0, 0, 0, 4, 103, 65, 77, 65, 0, 0, 177, 143, 11, 252, 97, 5, 0, 0, 0, 9, 112, 72, 89, 115, 0, 0, 14, 195, 0, 0, 14, 195, 1, 199, 111, 168, 100, 0, 0, 0, 24, 73, 68, 65, 84, 24, 87, 99, 248, 15, 4, 12, 12, 64, 4, 198, 64, 46, 132, 5, 162, 254, 51, 0, 0, 195, 90, 10, 246, 127, 175, 154, 145, 0, 0, 0, 0, 73, 69, 78, 68, 174, 66, 96, 130]).toString("base64");
117
+ const unusedTexture = Texture.createTexture(iModelDb, definitionModelId, "Unused Texture", ImageSourceFormat.Png, textureData, "Description for Unused Texture");
118
+ const unusedTextureId = txn.insertElement(unusedTexture.toJSON());
119
+ assert.isTrue(Id64.isValidId64(unusedTextureId));
120
+ expectDeleteToThrow(unusedTextureId);
121
+ usedDefinitionElementIds = txn.deleteDefinitionElements([unusedTextureId]);
122
+ assert.equal(usedDefinitionElementIds.size, 0);
123
+ assert.isUndefined(iModelDb.elements.tryGetElement(unusedTextureId));
124
+ // delete/deleteDefinitionElements for a used SpatialCategory should fail
125
+ expectDeleteToThrow(spatialCategoryId);
126
+ usedDefinitionElementIds = txn.deleteDefinitionElements([spatialCategoryId]);
127
+ assert.isTrue(usedDefinitionElementIds.has(spatialCategoryId));
128
+ assert.isDefined(iModelDb.elements.tryGetElement(spatialCategoryId));
129
+ // delete/deleteDefinitionElements for a default SubCategory should fail
130
+ const spatialCategory = iModelDb.elements.getElement(spatialCategoryId, SpatialCategory);
131
+ const defaultSpatialSubCategoryId = spatialCategory.myDefaultSubCategoryId();
132
+ expectDeleteToThrow(defaultSpatialSubCategoryId);
133
+ usedDefinitionElementIds = txn.deleteDefinitionElements([defaultSpatialSubCategoryId]);
134
+ assert.isTrue(usedDefinitionElementIds.has(defaultSpatialSubCategoryId));
135
+ assert.isDefined(iModelDb.elements.tryGetElement(defaultSpatialSubCategoryId));
136
+ // delete/deleteDefinitionElements for a used, non-default SubCategory should fail
137
+ expectDeleteToThrow(subCategoryId);
138
+ usedDefinitionElementIds = txn.deleteDefinitionElements([subCategoryId]);
139
+ assert.isTrue(usedDefinitionElementIds.has(subCategoryId));
140
+ assert.isDefined(iModelDb.elements.tryGetElement(subCategoryId));
141
+ // deleteDefinitionElements for an unused SubCategory should succeed, delete should still fail
142
+ const unusedSubCategory = SubCategory.create(iModelDb, spatialCategoryId, "Unused SubCategory", {});
143
+ const unusedSubCategoryId = txn.insertElement(unusedSubCategory.toJSON());
144
+ assert.isTrue(Id64.isValidId64(unusedSubCategoryId));
145
+ expectDeleteToThrow(unusedSubCategoryId);
146
+ usedDefinitionElementIds = txn.deleteDefinitionElements([unusedSubCategoryId]);
147
+ assert.equal(usedDefinitionElementIds.size, 0);
148
+ assert.isUndefined(iModelDb.elements.tryGetElement(unusedSubCategoryId));
149
+ // deleteDefinitionElements for an unused SpatialCategory should succeed, delete should still fail
150
+ const unusedSpatialCategory = SpatialCategory.create(iModelDb, definitionModelId, "Unused SpatialCategory");
151
+ const unusedSpatialCategoryId = txn.insertElement(unusedSpatialCategory.toJSON());
152
+ assert.isTrue(Id64.isValidId64(unusedSpatialCategoryId));
153
+ const reloadedSpatialCategory = iModelDb.elements.getElement(unusedSpatialCategoryId, SpatialCategory);
154
+ const unusedSpatialCategoryDefaultSubCategoryId = reloadedSpatialCategory.myDefaultSubCategoryId();
155
+ assert.isTrue(Id64.isValidId64(unusedSpatialCategoryDefaultSubCategoryId));
156
+ expectDeleteToThrow(unusedSpatialCategoryId);
157
+ expectDeleteToThrow(unusedSpatialCategoryDefaultSubCategoryId);
158
+ usedDefinitionElementIds = txn.deleteDefinitionElements([unusedSpatialCategoryId]);
159
+ assert.equal(usedDefinitionElementIds.size, 0);
160
+ assert.isUndefined(iModelDb.elements.tryGetElement(unusedSpatialCategoryId));
161
+ assert.isUndefined(iModelDb.elements.tryGetElement(unusedSpatialCategoryDefaultSubCategoryId));
162
+ // delete/deleteDefinitionElements of a used DrawingCategory should fail
163
+ expectDeleteToThrow(drawingCategoryId);
164
+ usedDefinitionElementIds = txn.deleteDefinitionElements([drawingCategoryId]);
165
+ assert.isTrue(usedDefinitionElementIds.has(drawingCategoryId));
166
+ assert.isDefined(iModelDb.elements.tryGetElement(drawingCategoryId));
167
+ // deleteDefinitionElements for an unused DrawingCategory should succeed, delete should still fail
168
+ const unusedDrawingCategory = DrawingCategory.create(iModelDb, definitionModelId, "Unused DrawingCategory");
169
+ const unusedDrawingCategoryId = txn.insertElement(unusedDrawingCategory.toJSON());
170
+ assert.isTrue(Id64.isValidId64(unusedDrawingCategoryId));
171
+ const reloadedDrawingCategory = iModelDb.elements.getElement(unusedDrawingCategoryId, DrawingCategory);
172
+ const unusedDrawingSubCategoryId = reloadedDrawingCategory.myDefaultSubCategoryId();
173
+ assert.isTrue(Id64.isValidId64(unusedDrawingSubCategoryId));
174
+ expectDeleteToThrow(unusedDrawingSubCategoryId);
175
+ usedDefinitionElementIds = txn.deleteDefinitionElements([unusedDrawingCategoryId]);
176
+ assert.equal(usedDefinitionElementIds.size, 0);
177
+ assert.isUndefined(iModelDb.elements.tryGetElement(unusedDrawingCategoryId));
178
+ assert.isUndefined(iModelDb.elements.tryGetElement(unusedDrawingSubCategoryId));
179
+ // delete/deleteDefinitionElements of DefinitionElements used by an existing SpatialViewDefinition should fail
180
+ expectDeleteToThrow(spatialCategorySelectorId);
181
+ expectDeleteToThrow(modelSelectorId);
182
+ expectDeleteToThrow(displayStyle3dId);
183
+ usedDefinitionElementIds = txn.deleteDefinitionElements([spatialCategorySelectorId, modelSelectorId, displayStyle3dId]);
184
+ assert.isTrue(usedDefinitionElementIds.has(spatialCategorySelectorId));
185
+ assert.isTrue(usedDefinitionElementIds.has(modelSelectorId));
186
+ assert.isTrue(usedDefinitionElementIds.has(displayStyle3dId));
187
+ assert.isDefined(iModelDb.elements.tryGetElement(spatialCategorySelectorId));
188
+ assert.isDefined(iModelDb.elements.tryGetElement(modelSelectorId));
189
+ assert.isDefined(iModelDb.elements.tryGetElement(displayStyle3dId));
190
+ assert.isDefined(iModelDb.elements.tryGetElement(viewId));
191
+ // deleteDefinitionElements should succeed when the list includes the SpatialViewDefinition as the only thing referencing other DefinitionElements, delete should still fail
192
+ expectDeleteToThrow(viewId);
193
+ usedDefinitionElementIds = txn.deleteDefinitionElements([viewId, spatialCategorySelectorId, modelSelectorId, displayStyle3dId]);
194
+ assert.equal(usedDefinitionElementIds.size, 0);
195
+ assert.isUndefined(iModelDb.elements.tryGetElement(spatialCategorySelectorId));
196
+ assert.isUndefined(iModelDb.elements.tryGetElement(modelSelectorId));
197
+ assert.isUndefined(iModelDb.elements.tryGetElement(displayStyle3dId));
198
+ assert.isUndefined(iModelDb.elements.tryGetElement(viewId));
199
+ // delete/deleteDefinitionElements of DefinitionElements used by an existing DrawingViewDefinition should fail
200
+ expectDeleteToThrow(drawingCategorySelectorId);
201
+ expectDeleteToThrow(displayStyle2dId);
202
+ usedDefinitionElementIds = txn.deleteDefinitionElements([drawingCategorySelectorId, displayStyle2dId]);
203
+ assert.isTrue(usedDefinitionElementIds.has(drawingCategorySelectorId));
204
+ assert.isTrue(usedDefinitionElementIds.has(displayStyle2dId));
205
+ assert.isDefined(iModelDb.elements.tryGetElement(drawingCategorySelectorId));
206
+ assert.isDefined(iModelDb.elements.tryGetElement(displayStyle2dId));
207
+ assert.isDefined(iModelDb.elements.tryGetElement(drawingViewId));
208
+ // deleteDefinitionElements should succeed when the list includes the DrawingViewDefinition as the only thing referencing other DefinitionElements, delete should still fail
209
+ expectDeleteToThrow(drawingViewId);
210
+ usedDefinitionElementIds = txn.deleteDefinitionElements([drawingViewId, drawingCategorySelectorId, displayStyle2dId]);
211
+ assert.equal(usedDefinitionElementIds.size, 0);
212
+ assert.isUndefined(iModelDb.elements.tryGetElement(drawingCategorySelectorId));
213
+ assert.isUndefined(iModelDb.elements.tryGetElement(displayStyle2dId));
214
+ assert.isUndefined(iModelDb.elements.tryGetElement(drawingViewId));
215
+ txn.end();
216
+ }
217
+ finally {
218
+ if (txn.isActive)
219
+ txn.end("abandon");
220
+ iModelDb.close();
221
+ }
206
222
  });
207
223
  });
208
224
  //# sourceMappingURL=DeleteDefinitionElements.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DeleteDefinitionElements.test.js","sourceRoot":"","sources":["../../../../src/test/element/DeleteDefinitionElements.test.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n\nimport { assert } from \"chai\";\nimport * as path from \"path\";\nimport { Id64, Id64Set } from \"@itwin/core-bentley\";\nimport { Point3d } from \"@itwin/core-geometry\";\nimport { GeometryPartProps, IModel } from \"@itwin/core-common\";\nimport {\n CategorySelector, DisplayStyle2d, DisplayStyle3d, DrawingCategory, DrawingViewDefinition, GeometryPart, IModelJsFs, InformationPartitionElement,\n ModelSelector, OrthographicViewDefinition, RenderMaterialElement, SnapshotDb, SpatialCategory, SubCategory, Subject, Texture,\n} from \"../../core-backend\";\nimport { ExtensiveTestScenario, IModelTestUtils } from \"../IModelTestUtils\";\nimport { KnownTestLocations } from \"../KnownTestLocations\";\n\ndescribe(\"DeleteDefinitionElements\", () => {\n const outputDir: string = path.join(KnownTestLocations.outputDir, \"DeleteDefinitionElements\");\n\n before(async () => {\n if (!IModelJsFs.existsSync(KnownTestLocations.outputDir)) {\n IModelJsFs.mkdirSync(KnownTestLocations.outputDir);\n }\n if (!IModelJsFs.existsSync(outputDir)) {\n IModelJsFs.mkdirSync(outputDir);\n }\n });\n\n it(\"should delete if not used\", async () => {\n const iModelFile: string = IModelTestUtils.prepareOutputFile(\"DeleteDefinitionElements\", \"DeleteDefinitionElements.bim\");\n const iModelDb = SnapshotDb.createEmpty(iModelFile, { rootSubject: { name: \"DeleteDefinitionElements\" } });\n await ExtensiveTestScenario.prepareDb(iModelDb);\n await ExtensiveTestScenario.populateDb(iModelDb);\n\n // Get ElementIds of DefinitionElements created by populateDb\n const subjectId = iModelDb.elements.queryElementIdByCode(Subject.createCode(iModelDb, IModel.rootSubjectId, \"Subject\"))!;\n const definitionModelId = iModelDb.elements.queryElementIdByCode(InformationPartitionElement.createCode(iModelDb, subjectId, \"Definition\"))!;\n const spatialCategoryId = iModelDb.elements.queryElementIdByCode(SpatialCategory.createCode(iModelDb, definitionModelId, \"SpatialCategory\"))!;\n const subCategoryId = iModelDb.elements.queryElementIdByCode(SubCategory.createCode(iModelDb, spatialCategoryId, \"SubCategory\"))!;\n const spatialCategorySelectorId = iModelDb.elements.queryElementIdByCode(CategorySelector.createCode(iModelDb, definitionModelId, \"SpatialCategories\"))!;\n const modelSelectorId = iModelDb.elements.queryElementIdByCode(ModelSelector.createCode(iModelDb, definitionModelId, \"SpatialModels\"))!;\n const displayStyle3dId = iModelDb.elements.queryElementIdByCode(DisplayStyle3d.createCode(iModelDb, definitionModelId, \"DisplayStyle3d\"))!;\n const viewId = iModelDb.elements.queryElementIdByCode(OrthographicViewDefinition.createCode(iModelDb, definitionModelId, \"Orthographic View\"))!;\n const drawingCategoryId = iModelDb.elements.queryElementIdByCode(DrawingCategory.createCode(iModelDb, definitionModelId, \"DrawingCategory\"))!;\n const drawingCategorySelectorId = iModelDb.elements.queryElementIdByCode(CategorySelector.createCode(iModelDb, definitionModelId, \"DrawingCategories\"))!;\n const displayStyle2dId = iModelDb.elements.queryElementIdByCode(DisplayStyle2d.createCode(iModelDb, definitionModelId, \"DisplayStyle2d\"))!;\n const drawingViewId = iModelDb.elements.queryElementIdByCode(DrawingViewDefinition.createCode(iModelDb, definitionModelId, \"Drawing View\"))!;\n const geometryPartId = iModelDb.elements.queryElementIdByCode(GeometryPart.createCode(iModelDb, definitionModelId, \"GeometryPart\"))!;\n const renderMaterialId = iModelDb.elements.queryElementIdByCode(RenderMaterialElement.createCode(iModelDb, definitionModelId, \"RenderMaterial\"))!;\n const textureId = iModelDb.elements.queryElementIdByCode(Texture.createCode(iModelDb, definitionModelId, \"Texture\"))!;\n const physicalObjectId1 = IModelTestUtils.queryByUserLabel(iModelDb, \"PhysicalObject1\");\n const physicalObjectId2 = IModelTestUtils.queryByUserLabel(iModelDb, \"PhysicalObject2\");\n const physicalObjectId3 = IModelTestUtils.queryByUserLabel(iModelDb, \"PhysicalObject3\");\n assert.isTrue(Id64.isValidId64(spatialCategoryId));\n assert.isTrue(Id64.isValidId64(subCategoryId));\n assert.isTrue(Id64.isValidId64(spatialCategorySelectorId));\n assert.isTrue(Id64.isValidId64(modelSelectorId));\n assert.isTrue(Id64.isValidId64(displayStyle3dId));\n assert.isTrue(Id64.isValidId64(viewId));\n assert.isTrue(Id64.isValidId64(drawingCategoryId));\n assert.isTrue(Id64.isValidId64(drawingCategorySelectorId));\n assert.isTrue(Id64.isValidId64(displayStyle2dId));\n assert.isTrue(Id64.isValidId64(drawingViewId));\n assert.isTrue(Id64.isValidId64(geometryPartId));\n assert.isTrue(Id64.isValidId64(renderMaterialId));\n assert.isTrue(Id64.isValidId64(textureId));\n assert.isTrue(Id64.isValidId64(physicalObjectId1));\n assert.isTrue(Id64.isValidId64(physicalObjectId2));\n assert.isTrue(Id64.isValidId64(physicalObjectId3));\n\n let usedDefinitionElementIds: Id64Set;\n\n // make sure deleteDefinitionElements skips Elements that are not DefinitionElements\n usedDefinitionElementIds = iModelDb.elements.deleteDefinitionElements([physicalObjectId1, physicalObjectId2, physicalObjectId3, subjectId]);\n assert.equal(usedDefinitionElementIds.size, 0);\n assert.isDefined(iModelDb.elements.tryGetElement(physicalObjectId1));\n assert.isDefined(iModelDb.elements.tryGetElement(physicalObjectId2));\n assert.isDefined(iModelDb.elements.tryGetElement(physicalObjectId3));\n assert.isDefined(iModelDb.elements.tryGetElement(subjectId));\n\n // make sure deleteDefinitionElements skips invalid Ids\n usedDefinitionElementIds = iModelDb.elements.deleteDefinitionElements([Id64.invalid, Id64.invalid]);\n assert.equal(usedDefinitionElementIds.size, 0);\n\n // delete/deleteDefinitionElements for a used GeometryPart should fail\n assert.throws(() => iModelDb.elements.deleteElement(geometryPartId));\n usedDefinitionElementIds = iModelDb.elements.deleteDefinitionElements([geometryPartId]);\n assert.isTrue(usedDefinitionElementIds.has(geometryPartId));\n assert.isDefined(iModelDb.elements.tryGetElement(geometryPartId));\n\n // deleteDefinitionElements for an unused GeometryPart should succeed, delete should still fail\n const unusedGeometryPartProps: GeometryPartProps = {\n classFullName: GeometryPart.classFullName,\n model: definitionModelId,\n code: GeometryPart.createCode(iModelDb, definitionModelId, \"Unused GeometryPart\"),\n geom: IModelTestUtils.createBox(Point3d.create(1, 1, 1)),\n };\n const unusedGeometryPartId = iModelDb.elements.insertElement(unusedGeometryPartProps);\n assert.isTrue(Id64.isValidId64(unusedGeometryPartId));\n assert.throws(() => iModelDb.elements.deleteElement(unusedGeometryPartId));\n usedDefinitionElementIds = iModelDb.elements.deleteDefinitionElements([unusedGeometryPartId]);\n assert.equal(usedDefinitionElementIds.size, 0);\n assert.isUndefined(iModelDb.elements.tryGetElement(unusedGeometryPartId));\n\n // delete/deleteDefinitionElements for a used RenderMaterial should fail\n assert.throws(() => iModelDb.elements.deleteElement(renderMaterialId));\n usedDefinitionElementIds = iModelDb.elements.deleteDefinitionElements([renderMaterialId]);\n assert.isTrue(usedDefinitionElementIds.has(renderMaterialId));\n assert.isDefined(iModelDb.elements.tryGetElement(renderMaterialId));\n\n // deleteDefinitionElements for an unused RenderMaterial should succeed, delete should still fail\n const unusedRenderMaterialId = RenderMaterialElement.insert(iModelDb, definitionModelId, \"Unused RenderMaterial\", { paletteName: \"PaletteName\" });\n assert.isTrue(Id64.isValidId64(unusedRenderMaterialId));\n assert.throws(() => iModelDb.elements.deleteElement(unusedRenderMaterialId));\n usedDefinitionElementIds = iModelDb.elements.deleteDefinitionElements([unusedRenderMaterialId]);\n assert.equal(usedDefinitionElementIds.size, 0);\n assert.isUndefined(iModelDb.elements.tryGetElement(unusedRenderMaterialId));\n\n // delete/deleteDefinitionElements for a used Texture should fail\n assert.throws(() => iModelDb.elements.deleteElement(textureId));\n usedDefinitionElementIds = iModelDb.elements.deleteDefinitionElements([textureId]);\n assert.isTrue(usedDefinitionElementIds.has(textureId));\n assert.isDefined(iModelDb.elements.tryGetElement(textureId));\n\n // deleteDefinitionElements for an unused Texture should succeed, delete should still fail\n const unusedTextureId = IModelTestUtils.insertTextureElement(iModelDb, definitionModelId, \"Unused Texture\");\n assert.isTrue(Id64.isValidId64(unusedTextureId));\n assert.throws(() => iModelDb.elements.deleteElement(unusedTextureId));\n usedDefinitionElementIds = iModelDb.elements.deleteDefinitionElements([unusedTextureId]);\n assert.equal(usedDefinitionElementIds.size, 0);\n assert.isUndefined(iModelDb.elements.tryGetElement(unusedTextureId));\n\n // delete/deleteDefinitionElements for a used SpatialCategory should fail\n assert.throws(() => iModelDb.elements.deleteElement(spatialCategoryId));\n usedDefinitionElementIds = iModelDb.elements.deleteDefinitionElements([spatialCategoryId]);\n assert.isTrue(usedDefinitionElementIds.has(spatialCategoryId));\n assert.isDefined(iModelDb.elements.tryGetElement(spatialCategoryId));\n\n // delete/deleteDefinitionElements for a default SubCategory should fail\n const spatialCategory = iModelDb.elements.getElement<SpatialCategory>(spatialCategoryId, SpatialCategory);\n const defaultSpatialSubCategoryId = spatialCategory.myDefaultSubCategoryId();\n assert.throws(() => iModelDb.elements.deleteElement(defaultSpatialSubCategoryId));\n usedDefinitionElementIds = iModelDb.elements.deleteDefinitionElements([defaultSpatialSubCategoryId]);\n assert.isTrue(usedDefinitionElementIds.has(defaultSpatialSubCategoryId));\n assert.isDefined(iModelDb.elements.tryGetElement(defaultSpatialSubCategoryId));\n\n // delete/deleteDefinitionElements for a used, non-default SubCategory should fail\n assert.throws(() => iModelDb.elements.deleteElement(subCategoryId));\n usedDefinitionElementIds = iModelDb.elements.deleteDefinitionElements([subCategoryId]);\n assert.isTrue(usedDefinitionElementIds.has(subCategoryId));\n assert.isDefined(iModelDb.elements.tryGetElement(subCategoryId));\n\n // deleteDefinitionElements for an unused SubCategory should succeed, delete should still fail\n const unusedSubCategoryId = SubCategory.insert(iModelDb, spatialCategoryId, \"Unused SubCategory\", {});\n assert.isTrue(Id64.isValidId64(unusedSubCategoryId));\n assert.throws(() => iModelDb.elements.deleteElement(unusedSubCategoryId));\n usedDefinitionElementIds = iModelDb.elements.deleteDefinitionElements([unusedSubCategoryId]);\n assert.equal(usedDefinitionElementIds.size, 0);\n assert.isUndefined(iModelDb.elements.tryGetElement(unusedSubCategoryId));\n\n // deleteDefinitionElements for an unused SpatialCategory should succeed, delete should still fail\n const unusedSpatialCategoryId = SpatialCategory.insert(iModelDb, definitionModelId, \"Unused SpatialCategory\", {});\n assert.isTrue(Id64.isValidId64(unusedSpatialCategoryId));\n const unusedSpatialCategory = iModelDb.elements.getElement<SpatialCategory>(unusedSpatialCategoryId, SpatialCategory);\n const unusedSpatialCategoryDefaultSubCategoryId = unusedSpatialCategory.myDefaultSubCategoryId();\n assert.isTrue(Id64.isValidId64(unusedSpatialCategoryDefaultSubCategoryId));\n assert.throws(() => iModelDb.elements.deleteElement(unusedSpatialCategoryId));\n assert.throws(() => iModelDb.elements.deleteElement(unusedSpatialCategoryDefaultSubCategoryId));\n usedDefinitionElementIds = iModelDb.elements.deleteDefinitionElements([unusedSpatialCategoryId]);\n assert.equal(usedDefinitionElementIds.size, 0);\n assert.isUndefined(iModelDb.elements.tryGetElement(unusedSpatialCategoryId));\n assert.isUndefined(iModelDb.elements.tryGetElement(unusedSpatialCategoryDefaultSubCategoryId));\n\n // delete/deleteDefinitionElements of a used DrawingCategory should fail\n assert.throws(() => iModelDb.elements.deleteElement(drawingCategoryId));\n usedDefinitionElementIds = iModelDb.elements.deleteDefinitionElements([drawingCategoryId]);\n assert.isTrue(usedDefinitionElementIds.has(drawingCategoryId));\n assert.isDefined(iModelDb.elements.tryGetElement(drawingCategoryId));\n\n // deleteDefinitionElements for an unused DrawingCategory should succeed, delete should still fail\n const unusedDrawingCategoryId = DrawingCategory.insert(iModelDb, definitionModelId, \"Unused DrawingCategory\", {});\n assert.isTrue(Id64.isValidId64(unusedDrawingCategoryId));\n const unusedDrawingCategory = iModelDb.elements.getElement<DrawingCategory>(unusedDrawingCategoryId, DrawingCategory);\n const unusedDrawingSubCategoryId = unusedDrawingCategory.myDefaultSubCategoryId();\n assert.isTrue(Id64.isValidId64(unusedDrawingSubCategoryId));\n assert.throws(() => iModelDb.elements.deleteElement(unusedDrawingSubCategoryId));\n usedDefinitionElementIds = iModelDb.elements.deleteDefinitionElements([unusedDrawingCategoryId]);\n assert.equal(usedDefinitionElementIds.size, 0);\n assert.isUndefined(iModelDb.elements.tryGetElement(unusedDrawingCategoryId));\n assert.isUndefined(iModelDb.elements.tryGetElement(unusedDrawingSubCategoryId));\n\n // delete/deleteDefinitionElements of DefinitionElements used by an existing SpatialViewDefinition should fail\n assert.throws(() => iModelDb.elements.deleteElement(spatialCategorySelectorId));\n assert.throws(() => iModelDb.elements.deleteElement(modelSelectorId));\n assert.throws(() => iModelDb.elements.deleteElement(displayStyle3dId));\n usedDefinitionElementIds = iModelDb.elements.deleteDefinitionElements([spatialCategorySelectorId, modelSelectorId, displayStyle3dId]);\n assert.isTrue(usedDefinitionElementIds.has(spatialCategorySelectorId));\n assert.isTrue(usedDefinitionElementIds.has(modelSelectorId));\n assert.isTrue(usedDefinitionElementIds.has(displayStyle3dId));\n assert.isDefined(iModelDb.elements.tryGetElement(spatialCategorySelectorId));\n assert.isDefined(iModelDb.elements.tryGetElement(modelSelectorId));\n assert.isDefined(iModelDb.elements.tryGetElement(displayStyle3dId));\n assert.isDefined(iModelDb.elements.tryGetElement(viewId));\n\n // deleteDefinitionElements should succeed when the list includes the SpatialViewDefinition as the only thing referencing other DefinitionElements, delete should still fail\n assert.throws(() => iModelDb.elements.deleteElement(viewId));\n usedDefinitionElementIds = iModelDb.elements.deleteDefinitionElements([viewId, spatialCategorySelectorId, modelSelectorId, displayStyle3dId]);\n assert.equal(usedDefinitionElementIds.size, 0);\n assert.isUndefined(iModelDb.elements.tryGetElement(spatialCategorySelectorId));\n assert.isUndefined(iModelDb.elements.tryGetElement(modelSelectorId));\n assert.isUndefined(iModelDb.elements.tryGetElement(displayStyle3dId));\n assert.isUndefined(iModelDb.elements.tryGetElement(viewId));\n\n // delete/deleteDefinitionElements of DefinitionElements used by an existing DrawingViewDefinition should fail\n assert.throws(() => iModelDb.elements.deleteElement(drawingCategorySelectorId));\n assert.throws(() => iModelDb.elements.deleteElement(displayStyle2dId));\n usedDefinitionElementIds = iModelDb.elements.deleteDefinitionElements([drawingCategorySelectorId, displayStyle2dId]);\n assert.isTrue(usedDefinitionElementIds.has(drawingCategorySelectorId));\n assert.isTrue(usedDefinitionElementIds.has(displayStyle2dId));\n assert.isDefined(iModelDb.elements.tryGetElement(drawingCategorySelectorId));\n assert.isDefined(iModelDb.elements.tryGetElement(displayStyle2dId));\n assert.isDefined(iModelDb.elements.tryGetElement(drawingViewId));\n\n // deleteDefinitionElements should succeed when the list includes the DrawingViewDefinition as the only thing referencing other DefinitionElements, delete should still fail\n assert.throws(() => iModelDb.elements.deleteElement(drawingViewId));\n usedDefinitionElementIds = iModelDb.elements.deleteDefinitionElements([drawingViewId, drawingCategorySelectorId, displayStyle2dId]);\n assert.equal(usedDefinitionElementIds.size, 0);\n assert.isUndefined(iModelDb.elements.tryGetElement(drawingCategorySelectorId));\n assert.isUndefined(iModelDb.elements.tryGetElement(displayStyle2dId));\n assert.isUndefined(iModelDb.elements.tryGetElement(drawingViewId));\n\n iModelDb.saveChanges();\n iModelDb.close();\n });\n});\n"]}
1
+ {"version":3,"file":"DeleteDefinitionElements.test.js","sourceRoot":"","sources":["../../../../src/test/element/DeleteDefinitionElements.test.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n\nimport { assert } from \"chai\";\nimport * as path from \"path\";\nimport { Id64, Id64Set } from \"@itwin/core-bentley\";\nimport { Point3d } from \"@itwin/core-geometry\";\nimport { GeometryPartProps, ImageSourceFormat, IModel } from \"@itwin/core-common\";\nimport { EditTxn } from \"../../EditTxn\";\nimport {\n CategorySelector, DisplayStyle2d, DisplayStyle3d, DrawingCategory, DrawingViewDefinition, GeometryPart, IModelJsFs, InformationPartitionElement,\n ModelSelector, OrthographicViewDefinition, RenderMaterialElement, SnapshotDb, SpatialCategory, SubCategory, Subject, Texture,\n} from \"../../core-backend\";\nimport { ExtensiveTestScenario, IModelTestUtils } from \"../IModelTestUtils\";\nimport { KnownTestLocations } from \"../KnownTestLocations\";\n\ndescribe(\"DeleteDefinitionElements\", () => {\n const outputDir: string = path.join(KnownTestLocations.outputDir, \"DeleteDefinitionElements\");\n\n before(async () => {\n if (!IModelJsFs.existsSync(KnownTestLocations.outputDir)) {\n IModelJsFs.mkdirSync(KnownTestLocations.outputDir);\n }\n if (!IModelJsFs.existsSync(outputDir)) {\n IModelJsFs.mkdirSync(outputDir);\n }\n });\n\n it(\"should delete if not used\", async () => {\n const iModelFile: string = IModelTestUtils.prepareOutputFile(\"DeleteDefinitionElements\", \"DeleteDefinitionElements.bim\");\n const iModelDb = SnapshotDb.createEmpty(iModelFile, { rootSubject: { name: \"DeleteDefinitionElements\" } });\n await ExtensiveTestScenario.prepareDb(iModelDb);\n await ExtensiveTestScenario.populateDb(iModelDb);\n\n // Get ElementIds of DefinitionElements created by populateDb\n const subjectId = iModelDb.elements.queryElementIdByCode(Subject.createCode(iModelDb, IModel.rootSubjectId, \"Subject\"))!;\n const definitionModelId = iModelDb.elements.queryElementIdByCode(InformationPartitionElement.createCode(iModelDb, subjectId, \"Definition\"))!;\n const spatialCategoryId = iModelDb.elements.queryElementIdByCode(SpatialCategory.createCode(iModelDb, definitionModelId, \"SpatialCategory\"))!;\n const subCategoryId = iModelDb.elements.queryElementIdByCode(SubCategory.createCode(iModelDb, spatialCategoryId, \"SubCategory\"))!;\n const spatialCategorySelectorId = iModelDb.elements.queryElementIdByCode(CategorySelector.createCode(iModelDb, definitionModelId, \"SpatialCategories\"))!;\n const modelSelectorId = iModelDb.elements.queryElementIdByCode(ModelSelector.createCode(iModelDb, definitionModelId, \"SpatialModels\"))!;\n const displayStyle3dId = iModelDb.elements.queryElementIdByCode(DisplayStyle3d.createCode(iModelDb, definitionModelId, \"DisplayStyle3d\"))!;\n const viewId = iModelDb.elements.queryElementIdByCode(OrthographicViewDefinition.createCode(iModelDb, definitionModelId, \"Orthographic View\"))!;\n const drawingCategoryId = iModelDb.elements.queryElementIdByCode(DrawingCategory.createCode(iModelDb, definitionModelId, \"DrawingCategory\"))!;\n const drawingCategorySelectorId = iModelDb.elements.queryElementIdByCode(CategorySelector.createCode(iModelDb, definitionModelId, \"DrawingCategories\"))!;\n const displayStyle2dId = iModelDb.elements.queryElementIdByCode(DisplayStyle2d.createCode(iModelDb, definitionModelId, \"DisplayStyle2d\"))!;\n const drawingViewId = iModelDb.elements.queryElementIdByCode(DrawingViewDefinition.createCode(iModelDb, definitionModelId, \"Drawing View\"))!;\n const geometryPartId = iModelDb.elements.queryElementIdByCode(GeometryPart.createCode(iModelDb, definitionModelId, \"GeometryPart\"))!;\n const renderMaterialId = iModelDb.elements.queryElementIdByCode(RenderMaterialElement.createCode(iModelDb, definitionModelId, \"RenderMaterial\"))!;\n const textureId = iModelDb.elements.queryElementIdByCode(Texture.createCode(iModelDb, definitionModelId, \"Texture\"))!;\n const physicalObjectId1 = IModelTestUtils.queryByUserLabel(iModelDb, \"PhysicalObject1\");\n const physicalObjectId2 = IModelTestUtils.queryByUserLabel(iModelDb, \"PhysicalObject2\");\n const physicalObjectId3 = IModelTestUtils.queryByUserLabel(iModelDb, \"PhysicalObject3\");\n assert.isTrue(Id64.isValidId64(spatialCategoryId));\n assert.isTrue(Id64.isValidId64(subCategoryId));\n assert.isTrue(Id64.isValidId64(spatialCategorySelectorId));\n assert.isTrue(Id64.isValidId64(modelSelectorId));\n assert.isTrue(Id64.isValidId64(displayStyle3dId));\n assert.isTrue(Id64.isValidId64(viewId));\n assert.isTrue(Id64.isValidId64(drawingCategoryId));\n assert.isTrue(Id64.isValidId64(drawingCategorySelectorId));\n assert.isTrue(Id64.isValidId64(displayStyle2dId));\n assert.isTrue(Id64.isValidId64(drawingViewId));\n assert.isTrue(Id64.isValidId64(geometryPartId));\n assert.isTrue(Id64.isValidId64(renderMaterialId));\n assert.isTrue(Id64.isValidId64(textureId));\n assert.isTrue(Id64.isValidId64(physicalObjectId1));\n assert.isTrue(Id64.isValidId64(physicalObjectId2));\n assert.isTrue(Id64.isValidId64(physicalObjectId3));\n\n const txn = new EditTxn(iModelDb, \"delete definition elements\");\n txn.start();\n\n let usedDefinitionElementIds: Id64Set;\n const expectDeleteToThrow = (elementId: string) => assert.throws(() => txn.deleteElement(elementId));\n\n try {\n // make sure deleteDefinitionElements skips Elements that are not DefinitionElements\n usedDefinitionElementIds = txn.deleteDefinitionElements([physicalObjectId1, physicalObjectId2, physicalObjectId3, subjectId]);\n assert.equal(usedDefinitionElementIds.size, 0);\n assert.isDefined(iModelDb.elements.tryGetElement(physicalObjectId1));\n assert.isDefined(iModelDb.elements.tryGetElement(physicalObjectId2));\n assert.isDefined(iModelDb.elements.tryGetElement(physicalObjectId3));\n assert.isDefined(iModelDb.elements.tryGetElement(subjectId));\n\n // make sure deleteDefinitionElements skips invalid Ids\n usedDefinitionElementIds = txn.deleteDefinitionElements([Id64.invalid, Id64.invalid]);\n assert.equal(usedDefinitionElementIds.size, 0);\n\n // delete/deleteDefinitionElements for a used GeometryPart should fail\n expectDeleteToThrow(geometryPartId);\n usedDefinitionElementIds = txn.deleteDefinitionElements([geometryPartId]);\n assert.isTrue(usedDefinitionElementIds.has(geometryPartId));\n assert.isDefined(iModelDb.elements.tryGetElement(geometryPartId));\n\n // deleteDefinitionElements for an unused GeometryPart should succeed, delete should still fail\n const unusedGeometryPartProps: GeometryPartProps = {\n classFullName: GeometryPart.classFullName,\n model: definitionModelId,\n code: GeometryPart.createCode(iModelDb, definitionModelId, \"Unused GeometryPart\"),\n geom: IModelTestUtils.createBox(Point3d.create(1, 1, 1)),\n };\n const unusedGeometryPartId = txn.insertElement(unusedGeometryPartProps);\n assert.isTrue(Id64.isValidId64(unusedGeometryPartId));\n expectDeleteToThrow(unusedGeometryPartId);\n usedDefinitionElementIds = txn.deleteDefinitionElements([unusedGeometryPartId]);\n assert.equal(usedDefinitionElementIds.size, 0);\n assert.isUndefined(iModelDb.elements.tryGetElement(unusedGeometryPartId));\n\n // delete/deleteDefinitionElements for a used RenderMaterial should fail\n expectDeleteToThrow(renderMaterialId);\n usedDefinitionElementIds = txn.deleteDefinitionElements([renderMaterialId]);\n assert.isTrue(usedDefinitionElementIds.has(renderMaterialId));\n assert.isDefined(iModelDb.elements.tryGetElement(renderMaterialId));\n\n // deleteDefinitionElements for an unused RenderMaterial should succeed, delete should still fail\n const unusedRenderMaterial = RenderMaterialElement.create(iModelDb, definitionModelId, \"Unused RenderMaterial\", { paletteName: \"PaletteName\" });\n const unusedRenderMaterialId = txn.insertElement(unusedRenderMaterial.toJSON());\n assert.isTrue(Id64.isValidId64(unusedRenderMaterialId));\n expectDeleteToThrow(unusedRenderMaterialId);\n usedDefinitionElementIds = txn.deleteDefinitionElements([unusedRenderMaterialId]);\n assert.equal(usedDefinitionElementIds.size, 0);\n assert.isUndefined(iModelDb.elements.tryGetElement(unusedRenderMaterialId));\n\n // delete/deleteDefinitionElements for a used Texture should fail\n expectDeleteToThrow(textureId);\n usedDefinitionElementIds = txn.deleteDefinitionElements([textureId]);\n assert.isTrue(usedDefinitionElementIds.has(textureId));\n assert.isDefined(iModelDb.elements.tryGetElement(textureId));\n\n // deleteDefinitionElements for an unused Texture should succeed, delete should still fail\n const textureData = Buffer.from([137, 80, 78, 71, 13, 10, 26, 10, 0, 0, 0, 13, 73, 72, 68, 82, 0, 0, 0, 3, 0, 0, 0, 3, 8, 2, 0, 0, 0, 217, 74, 34, 232, 0, 0, 0, 1, 115, 82, 71, 66, 0, 174, 206, 28, 233, 0, 0, 0, 4, 103, 65, 77, 65, 0, 0, 177, 143, 11, 252, 97, 5, 0, 0, 0, 9, 112, 72, 89, 115, 0, 0, 14, 195, 0, 0, 14, 195, 1, 199, 111, 168, 100, 0, 0, 0, 24, 73, 68, 65, 84, 24, 87, 99, 248, 15, 4, 12, 12, 64, 4, 198, 64, 46, 132, 5, 162, 254, 51, 0, 0, 195, 90, 10, 246, 127, 175, 154, 145, 0, 0, 0, 0, 73, 69, 78, 68, 174, 66, 96, 130]).toString(\"base64\");\n const unusedTexture = Texture.createTexture(iModelDb, definitionModelId, \"Unused Texture\", ImageSourceFormat.Png, textureData, \"Description for Unused Texture\");\n const unusedTextureId = txn.insertElement(unusedTexture.toJSON());\n assert.isTrue(Id64.isValidId64(unusedTextureId));\n expectDeleteToThrow(unusedTextureId);\n usedDefinitionElementIds = txn.deleteDefinitionElements([unusedTextureId]);\n assert.equal(usedDefinitionElementIds.size, 0);\n assert.isUndefined(iModelDb.elements.tryGetElement(unusedTextureId));\n\n // delete/deleteDefinitionElements for a used SpatialCategory should fail\n expectDeleteToThrow(spatialCategoryId);\n usedDefinitionElementIds = txn.deleteDefinitionElements([spatialCategoryId]);\n assert.isTrue(usedDefinitionElementIds.has(spatialCategoryId));\n assert.isDefined(iModelDb.elements.tryGetElement(spatialCategoryId));\n\n // delete/deleteDefinitionElements for a default SubCategory should fail\n const spatialCategory = iModelDb.elements.getElement<SpatialCategory>(spatialCategoryId, SpatialCategory);\n const defaultSpatialSubCategoryId = spatialCategory.myDefaultSubCategoryId();\n expectDeleteToThrow(defaultSpatialSubCategoryId);\n usedDefinitionElementIds = txn.deleteDefinitionElements([defaultSpatialSubCategoryId]);\n assert.isTrue(usedDefinitionElementIds.has(defaultSpatialSubCategoryId));\n assert.isDefined(iModelDb.elements.tryGetElement(defaultSpatialSubCategoryId));\n\n // delete/deleteDefinitionElements for a used, non-default SubCategory should fail\n expectDeleteToThrow(subCategoryId);\n usedDefinitionElementIds = txn.deleteDefinitionElements([subCategoryId]);\n assert.isTrue(usedDefinitionElementIds.has(subCategoryId));\n assert.isDefined(iModelDb.elements.tryGetElement(subCategoryId));\n\n // deleteDefinitionElements for an unused SubCategory should succeed, delete should still fail\n const unusedSubCategory = SubCategory.create(iModelDb, spatialCategoryId, \"Unused SubCategory\", {});\n const unusedSubCategoryId = txn.insertElement(unusedSubCategory.toJSON());\n assert.isTrue(Id64.isValidId64(unusedSubCategoryId));\n expectDeleteToThrow(unusedSubCategoryId);\n usedDefinitionElementIds = txn.deleteDefinitionElements([unusedSubCategoryId]);\n assert.equal(usedDefinitionElementIds.size, 0);\n assert.isUndefined(iModelDb.elements.tryGetElement(unusedSubCategoryId));\n\n // deleteDefinitionElements for an unused SpatialCategory should succeed, delete should still fail\n const unusedSpatialCategory = SpatialCategory.create(iModelDb, definitionModelId, \"Unused SpatialCategory\");\n const unusedSpatialCategoryId = txn.insertElement(unusedSpatialCategory.toJSON());\n assert.isTrue(Id64.isValidId64(unusedSpatialCategoryId));\n const reloadedSpatialCategory = iModelDb.elements.getElement<SpatialCategory>(unusedSpatialCategoryId, SpatialCategory);\n const unusedSpatialCategoryDefaultSubCategoryId = reloadedSpatialCategory.myDefaultSubCategoryId();\n assert.isTrue(Id64.isValidId64(unusedSpatialCategoryDefaultSubCategoryId));\n expectDeleteToThrow(unusedSpatialCategoryId);\n expectDeleteToThrow(unusedSpatialCategoryDefaultSubCategoryId);\n usedDefinitionElementIds = txn.deleteDefinitionElements([unusedSpatialCategoryId]);\n assert.equal(usedDefinitionElementIds.size, 0);\n assert.isUndefined(iModelDb.elements.tryGetElement(unusedSpatialCategoryId));\n assert.isUndefined(iModelDb.elements.tryGetElement(unusedSpatialCategoryDefaultSubCategoryId));\n\n // delete/deleteDefinitionElements of a used DrawingCategory should fail\n expectDeleteToThrow(drawingCategoryId);\n usedDefinitionElementIds = txn.deleteDefinitionElements([drawingCategoryId]);\n assert.isTrue(usedDefinitionElementIds.has(drawingCategoryId));\n assert.isDefined(iModelDb.elements.tryGetElement(drawingCategoryId));\n\n // deleteDefinitionElements for an unused DrawingCategory should succeed, delete should still fail\n const unusedDrawingCategory = DrawingCategory.create(iModelDb, definitionModelId, \"Unused DrawingCategory\");\n const unusedDrawingCategoryId = txn.insertElement(unusedDrawingCategory.toJSON());\n assert.isTrue(Id64.isValidId64(unusedDrawingCategoryId));\n const reloadedDrawingCategory = iModelDb.elements.getElement<DrawingCategory>(unusedDrawingCategoryId, DrawingCategory);\n const unusedDrawingSubCategoryId = reloadedDrawingCategory.myDefaultSubCategoryId();\n assert.isTrue(Id64.isValidId64(unusedDrawingSubCategoryId));\n expectDeleteToThrow(unusedDrawingSubCategoryId);\n usedDefinitionElementIds = txn.deleteDefinitionElements([unusedDrawingCategoryId]);\n assert.equal(usedDefinitionElementIds.size, 0);\n assert.isUndefined(iModelDb.elements.tryGetElement(unusedDrawingCategoryId));\n assert.isUndefined(iModelDb.elements.tryGetElement(unusedDrawingSubCategoryId));\n\n // delete/deleteDefinitionElements of DefinitionElements used by an existing SpatialViewDefinition should fail\n expectDeleteToThrow(spatialCategorySelectorId);\n expectDeleteToThrow(modelSelectorId);\n expectDeleteToThrow(displayStyle3dId);\n usedDefinitionElementIds = txn.deleteDefinitionElements([spatialCategorySelectorId, modelSelectorId, displayStyle3dId]);\n assert.isTrue(usedDefinitionElementIds.has(spatialCategorySelectorId));\n assert.isTrue(usedDefinitionElementIds.has(modelSelectorId));\n assert.isTrue(usedDefinitionElementIds.has(displayStyle3dId));\n assert.isDefined(iModelDb.elements.tryGetElement(spatialCategorySelectorId));\n assert.isDefined(iModelDb.elements.tryGetElement(modelSelectorId));\n assert.isDefined(iModelDb.elements.tryGetElement(displayStyle3dId));\n assert.isDefined(iModelDb.elements.tryGetElement(viewId));\n\n // deleteDefinitionElements should succeed when the list includes the SpatialViewDefinition as the only thing referencing other DefinitionElements, delete should still fail\n expectDeleteToThrow(viewId);\n usedDefinitionElementIds = txn.deleteDefinitionElements([viewId, spatialCategorySelectorId, modelSelectorId, displayStyle3dId]);\n assert.equal(usedDefinitionElementIds.size, 0);\n assert.isUndefined(iModelDb.elements.tryGetElement(spatialCategorySelectorId));\n assert.isUndefined(iModelDb.elements.tryGetElement(modelSelectorId));\n assert.isUndefined(iModelDb.elements.tryGetElement(displayStyle3dId));\n assert.isUndefined(iModelDb.elements.tryGetElement(viewId));\n\n // delete/deleteDefinitionElements of DefinitionElements used by an existing DrawingViewDefinition should fail\n expectDeleteToThrow(drawingCategorySelectorId);\n expectDeleteToThrow(displayStyle2dId);\n usedDefinitionElementIds = txn.deleteDefinitionElements([drawingCategorySelectorId, displayStyle2dId]);\n assert.isTrue(usedDefinitionElementIds.has(drawingCategorySelectorId));\n assert.isTrue(usedDefinitionElementIds.has(displayStyle2dId));\n assert.isDefined(iModelDb.elements.tryGetElement(drawingCategorySelectorId));\n assert.isDefined(iModelDb.elements.tryGetElement(displayStyle2dId));\n assert.isDefined(iModelDb.elements.tryGetElement(drawingViewId));\n\n // deleteDefinitionElements should succeed when the list includes the DrawingViewDefinition as the only thing referencing other DefinitionElements, delete should still fail\n expectDeleteToThrow(drawingViewId);\n usedDefinitionElementIds = txn.deleteDefinitionElements([drawingViewId, drawingCategorySelectorId, displayStyle2dId]);\n assert.equal(usedDefinitionElementIds.size, 0);\n assert.isUndefined(iModelDb.elements.tryGetElement(drawingCategorySelectorId));\n assert.isUndefined(iModelDb.elements.tryGetElement(displayStyle2dId));\n assert.isUndefined(iModelDb.elements.tryGetElement(drawingViewId));\n\n txn.end();\n } finally {\n if (txn.isActive)\n txn.end(\"abandon\");\n\n iModelDb.close();\n }\n });\n});\n"]}