@itwin/core-backend 5.9.0-dev.4 → 5.9.0-dev.6
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.
- package/lib/cjs/BackendHubAccess.js.map +1 -1
- package/lib/cjs/BackendLoggerCategory.js.map +1 -1
- package/lib/cjs/BisCoreSchema.js.map +1 -1
- package/lib/cjs/BlobContainerService.js.map +1 -1
- package/lib/cjs/BriefcaseManager.js +3 -3
- package/lib/cjs/BriefcaseManager.js.map +1 -1
- package/lib/cjs/CatalogDb.js.map +1 -1
- package/lib/cjs/Category.d.ts +37 -7
- package/lib/cjs/Category.d.ts.map +1 -1
- package/lib/cjs/Category.js +33 -42
- package/lib/cjs/Category.js.map +1 -1
- package/lib/cjs/ChangeSummaryManager.js +2 -2
- package/lib/cjs/ChangeSummaryManager.js.map +1 -1
- package/lib/cjs/ChangedElementsDb.js.map +1 -1
- package/lib/cjs/ChangesetECAdaptor.d.ts.map +1 -1
- package/lib/cjs/ChangesetECAdaptor.js +253 -250
- package/lib/cjs/ChangesetECAdaptor.js.map +1 -1
- package/lib/cjs/ChannelControl.d.ts +29 -0
- package/lib/cjs/ChannelControl.d.ts.map +1 -1
- package/lib/cjs/ChannelControl.js.map +1 -1
- package/lib/cjs/CheckpointManager.js +1 -1
- package/lib/cjs/CheckpointManager.js.map +1 -1
- package/lib/cjs/ClassRegistry.js +5 -5
- package/lib/cjs/ClassRegistry.js.map +1 -1
- package/lib/cjs/CloudSqlite.js.map +1 -1
- package/lib/cjs/CodeService.js.map +1 -1
- package/lib/cjs/CodeSpecs.d.ts +32 -3
- package/lib/cjs/CodeSpecs.d.ts.map +1 -1
- package/lib/cjs/CodeSpecs.js +48 -20
- package/lib/cjs/CodeSpecs.js.map +1 -1
- package/lib/cjs/ConcurrentQuery.js.map +1 -1
- package/lib/cjs/CustomViewState3dCreator.js.map +1 -1
- package/lib/cjs/DevTools.js.map +1 -1
- package/lib/cjs/DisplayStyle.d.ts +18 -3
- package/lib/cjs/DisplayStyle.d.ts.map +1 -1
- package/lib/cjs/DisplayStyle.js +10 -21
- package/lib/cjs/DisplayStyle.js.map +1 -1
- package/lib/cjs/ECDb.js.map +1 -1
- package/lib/cjs/ECSchemaXmlContext.js.map +1 -1
- package/lib/cjs/ECSqlRowExecutor.js.map +1 -1
- package/lib/cjs/ECSqlStatement.js.map +1 -1
- package/lib/cjs/ECSqlSyncReader.js.map +1 -1
- package/lib/cjs/EditTxn.d.ts +262 -0
- package/lib/cjs/EditTxn.d.ts.map +1 -0
- package/lib/cjs/EditTxn.js +548 -0
- package/lib/cjs/EditTxn.js.map +1 -0
- package/lib/cjs/Element.d.ts +74 -5
- package/lib/cjs/Element.d.ts.map +1 -1
- package/lib/cjs/Element.js +63 -75
- package/lib/cjs/Element.js.map +1 -1
- package/lib/cjs/ElementAspect.d.ts +10 -0
- package/lib/cjs/ElementAspect.d.ts.map +1 -1
- package/lib/cjs/ElementAspect.js +21 -12
- package/lib/cjs/ElementAspect.js.map +1 -1
- package/lib/cjs/ElementGraphics.js.map +1 -1
- package/lib/cjs/ElementTreeWalker.d.ts +56 -3
- package/lib/cjs/ElementTreeWalker.d.ts.map +1 -1
- package/lib/cjs/ElementTreeWalker.js +53 -40
- package/lib/cjs/ElementTreeWalker.js.map +1 -1
- package/lib/cjs/Entity.js.map +1 -1
- package/lib/cjs/EntityReferences.js.map +1 -1
- package/lib/cjs/ExportGraphics.js.map +1 -1
- package/lib/cjs/ExternalSource.d.ts +11 -2
- package/lib/cjs/ExternalSource.d.ts.map +1 -1
- package/lib/cjs/ExternalSource.js +10 -8
- package/lib/cjs/ExternalSource.js.map +1 -1
- package/lib/cjs/FontFile.js.map +1 -1
- package/lib/cjs/GeoCoordConfig.js.map +1 -1
- package/lib/cjs/GeographicCRSServices.js.map +1 -1
- package/lib/cjs/GeometrySummary.js +47 -47
- package/lib/cjs/GeometrySummary.js.map +1 -1
- package/lib/cjs/IModelDb.d.ts +66 -22
- package/lib/cjs/IModelDb.d.ts.map +1 -1
- package/lib/cjs/IModelDb.js +182 -296
- package/lib/cjs/IModelDb.js.map +1 -1
- package/lib/cjs/IModelDbFonts.js.map +1 -1
- package/lib/cjs/IModelElementCloneContext.js.map +1 -1
- package/lib/cjs/IModelHost.d.ts +22 -0
- package/lib/cjs/IModelHost.d.ts.map +1 -1
- package/lib/cjs/IModelHost.js +9 -0
- package/lib/cjs/IModelHost.js.map +1 -1
- package/lib/cjs/IModelIncrementalSchemaLocater.js.map +1 -1
- package/lib/cjs/IModelJsFs.js.map +1 -1
- package/lib/cjs/ImageSourceConversion.js.map +1 -1
- package/lib/cjs/IpcHost.js +2 -2
- package/lib/cjs/IpcHost.js.map +1 -1
- package/lib/cjs/LineStyle.d.ts +47 -7
- package/lib/cjs/LineStyle.d.ts.map +1 -1
- package/lib/cjs/LineStyle.js +38 -33
- package/lib/cjs/LineStyle.js.map +1 -1
- package/lib/cjs/LocalHub.js +1 -1
- package/lib/cjs/LocalHub.js.map +1 -1
- package/lib/cjs/LocalhostIpcHost.js.map +1 -1
- package/lib/cjs/LockControl.js.map +1 -1
- package/lib/cjs/Material.d.ts +8 -1
- package/lib/cjs/Material.d.ts.map +1 -1
- package/lib/cjs/Material.js +6 -12
- package/lib/cjs/Material.js.map +1 -1
- package/lib/cjs/Model.d.ts +59 -20
- package/lib/cjs/Model.d.ts.map +1 -1
- package/lib/cjs/Model.js +38 -80
- package/lib/cjs/Model.js.map +1 -1
- package/lib/cjs/NativeAppStorage.js.map +1 -1
- package/lib/cjs/NativeHost.js.map +1 -1
- package/lib/cjs/NavigationRelationship.js.map +1 -1
- package/lib/cjs/PromiseMemoizer.js.map +1 -1
- package/lib/cjs/PropertyStore.js.map +1 -1
- package/lib/cjs/Relationship.d.ts +72 -7
- package/lib/cjs/Relationship.d.ts.map +1 -1
- package/lib/cjs/Relationship.js +39 -21
- package/lib/cjs/Relationship.js.map +1 -1
- package/lib/cjs/RpcBackend.js.map +1 -1
- package/lib/cjs/SQLiteDb.js.map +1 -1
- package/lib/cjs/Schema.js.map +1 -1
- package/lib/cjs/SchemaSync.js +4 -4
- package/lib/cjs/SchemaSync.js.map +1 -1
- package/lib/cjs/SchemaUtils.js.map +1 -1
- package/lib/cjs/SheetIndex.d.ts +9 -0
- package/lib/cjs/SheetIndex.d.ts.map +1 -1
- package/lib/cjs/SheetIndex.js +38 -35
- package/lib/cjs/SheetIndex.js.map +1 -1
- package/lib/cjs/SqliteChangesetReader.js.map +1 -1
- package/lib/cjs/SqliteStatement.js.map +1 -1
- package/lib/cjs/StashManager.js +1 -1
- package/lib/cjs/StashManager.js.map +1 -1
- package/lib/cjs/Texture.d.ts +6 -0
- package/lib/cjs/Texture.d.ts.map +1 -1
- package/lib/cjs/Texture.js +6 -14
- package/lib/cjs/Texture.js.map +1 -1
- package/lib/cjs/TileStorage.js.map +1 -1
- package/lib/cjs/TxnManager.d.ts +5 -5
- package/lib/cjs/TxnManager.d.ts.map +1 -1
- package/lib/cjs/TxnManager.js +23 -7
- package/lib/cjs/TxnManager.js.map +1 -1
- package/lib/cjs/ViewDefinition.d.ts +21 -1
- package/lib/cjs/ViewDefinition.d.ts.map +1 -1
- package/lib/cjs/ViewDefinition.js +27 -66
- package/lib/cjs/ViewDefinition.js.map +1 -1
- package/lib/cjs/ViewStateHydrator.js.map +1 -1
- package/lib/cjs/ViewStore.js.map +1 -1
- package/lib/cjs/annotations/ElementDrivesTextAnnotation.d.ts +14 -6
- package/lib/cjs/annotations/ElementDrivesTextAnnotation.d.ts.map +1 -1
- package/lib/cjs/annotations/ElementDrivesTextAnnotation.js +33 -27
- package/lib/cjs/annotations/ElementDrivesTextAnnotation.js.map +1 -1
- package/lib/cjs/annotations/FrameGeometry.js.map +1 -1
- package/lib/cjs/annotations/LeaderGeometry.js.map +1 -1
- package/lib/cjs/annotations/TextAnnotationElement.d.ts.map +1 -1
- package/lib/cjs/annotations/TextAnnotationElement.js +6 -5
- package/lib/cjs/annotations/TextAnnotationElement.js.map +1 -1
- package/lib/cjs/annotations/TextAnnotationGeometry.js.map +1 -1
- package/lib/cjs/annotations/TextBlockGeometry.js.map +1 -1
- package/lib/cjs/annotations/TextBlockLayout.js.map +1 -1
- package/lib/cjs/assets/IModelChange.02.00.00.ecschema.xml +90 -90
- package/lib/cjs/assets/Settings/Schemas/Base.Schema.json +32 -32
- package/lib/cjs/assets/Settings/Schemas/Gcs.schema.json +27 -27
- package/lib/cjs/assets/Settings/Schemas/Workspace.Schema.json +94 -94
- package/lib/cjs/assets/Settings/backend.setting.json5 +21 -21
- package/lib/cjs/core-backend.d.ts +1 -0
- package/lib/cjs/core-backend.d.ts.map +1 -1
- package/lib/cjs/core-backend.js +1 -0
- package/lib/cjs/core-backend.js.map +1 -1
- package/lib/cjs/domains/FunctionalElements.d.ts +6 -2
- package/lib/cjs/domains/FunctionalElements.d.ts.map +1 -1
- package/lib/cjs/domains/FunctionalElements.js +8 -13
- package/lib/cjs/domains/FunctionalElements.js.map +1 -1
- package/lib/cjs/domains/FunctionalSchema.js.map +1 -1
- package/lib/cjs/domains/GenericElements.d.ts +11 -4
- package/lib/cjs/domains/GenericElements.d.ts.map +1 -1
- package/lib/cjs/domains/GenericElements.js +13 -24
- package/lib/cjs/domains/GenericElements.js.map +1 -1
- package/lib/cjs/domains/GenericSchema.js.map +1 -1
- package/lib/cjs/internal/ChangesetConflictArgs.js.map +1 -1
- package/lib/cjs/internal/ChannelAdmin.d.ts +15 -0
- package/lib/cjs/internal/ChannelAdmin.d.ts.map +1 -1
- package/lib/cjs/internal/ChannelAdmin.js +5 -3
- package/lib/cjs/internal/ChannelAdmin.js.map +1 -1
- package/lib/cjs/internal/ElementLRUCache.js.map +1 -1
- package/lib/cjs/internal/FontFileImpl.js.map +1 -1
- package/lib/cjs/internal/HubMock.js.map +1 -1
- package/lib/cjs/internal/IModelDbFontsImpl.js.map +1 -1
- package/lib/cjs/internal/IntegrityCheck.js.map +1 -1
- package/lib/cjs/internal/NativePlatform.js.map +1 -1
- package/lib/cjs/internal/NoLocks.js.map +1 -1
- package/lib/cjs/internal/OnlineStatus.js.map +1 -1
- package/lib/cjs/internal/ServerBasedLocks.js.map +1 -1
- package/lib/cjs/internal/Symbols.d.ts +4 -0
- package/lib/cjs/internal/Symbols.d.ts.map +1 -1
- package/lib/cjs/internal/Symbols.js +5 -1
- package/lib/cjs/internal/Symbols.js.map +1 -1
- package/lib/cjs/internal/annotations/fields.d.ts +3 -2
- package/lib/cjs/internal/annotations/fields.d.ts.map +1 -1
- package/lib/cjs/internal/annotations/fields.js +7 -6
- package/lib/cjs/internal/annotations/fields.js.map +1 -1
- package/lib/cjs/internal/cross-package.js.map +1 -1
- package/lib/cjs/internal/workspace/SettingsEditorImpl.js.map +1 -1
- package/lib/cjs/internal/workspace/SettingsImpl.js.map +1 -1
- package/lib/cjs/internal/workspace/SettingsSchemasImpl.js.map +1 -1
- package/lib/cjs/internal/workspace/WorkspaceImpl.js.map +1 -1
- package/lib/cjs/internal/workspace/WorkspaceSqliteDb.js.map +1 -1
- package/lib/cjs/rpc/multipart.js.map +1 -1
- package/lib/cjs/rpc/tracing.js.map +1 -1
- package/lib/cjs/rpc/web/logging.js.map +1 -1
- package/lib/cjs/rpc/web/request.js.map +1 -1
- package/lib/cjs/rpc/web/response.js.map +1 -1
- package/lib/cjs/rpc-impl/DevToolsRpcImpl.js.map +1 -1
- package/lib/cjs/rpc-impl/IModelReadRpcImpl.js.map +1 -1
- package/lib/cjs/rpc-impl/IModelTileRpcImpl.js.map +1 -1
- package/lib/cjs/rpc-impl/RpcBriefcaseUtility.d.ts.map +1 -1
- package/lib/cjs/rpc-impl/RpcBriefcaseUtility.js.map +1 -1
- package/lib/cjs/rpc-impl/SnapshotIModelRpcImpl.js.map +1 -1
- package/lib/cjs/workspace/Settings.js.map +1 -1
- package/lib/cjs/workspace/SettingsDb.js.map +1 -1
- package/lib/cjs/workspace/SettingsEditor.js.map +1 -1
- package/lib/cjs/workspace/SettingsSchemas.js.map +1 -1
- package/lib/cjs/workspace/Workspace.js.map +1 -1
- package/lib/cjs/workspace/WorkspaceEditor.js.map +1 -1
- package/lib/esm/BackendHubAccess.js.map +1 -1
- package/lib/esm/BackendLoggerCategory.js.map +1 -1
- package/lib/esm/BisCoreSchema.js.map +1 -1
- package/lib/esm/BlobContainerService.js.map +1 -1
- package/lib/esm/BriefcaseManager.js +3 -3
- package/lib/esm/BriefcaseManager.js.map +1 -1
- package/lib/esm/CatalogDb.js.map +1 -1
- package/lib/esm/Category.d.ts +37 -7
- package/lib/esm/Category.d.ts.map +1 -1
- package/lib/esm/Category.js +33 -42
- package/lib/esm/Category.js.map +1 -1
- package/lib/esm/ChangeSummaryManager.js +2 -2
- package/lib/esm/ChangeSummaryManager.js.map +1 -1
- package/lib/esm/ChangedElementsDb.js.map +1 -1
- package/lib/esm/ChangesetECAdaptor.d.ts.map +1 -1
- package/lib/esm/ChangesetECAdaptor.js +253 -250
- package/lib/esm/ChangesetECAdaptor.js.map +1 -1
- package/lib/esm/ChannelControl.d.ts +29 -0
- package/lib/esm/ChannelControl.d.ts.map +1 -1
- package/lib/esm/ChannelControl.js.map +1 -1
- package/lib/esm/CheckpointManager.js +1 -1
- package/lib/esm/CheckpointManager.js.map +1 -1
- package/lib/esm/ClassRegistry.js +5 -5
- package/lib/esm/ClassRegistry.js.map +1 -1
- package/lib/esm/CloudSqlite.js.map +1 -1
- package/lib/esm/CodeService.js.map +1 -1
- package/lib/esm/CodeSpecs.d.ts +32 -3
- package/lib/esm/CodeSpecs.d.ts.map +1 -1
- package/lib/esm/CodeSpecs.js +49 -21
- package/lib/esm/CodeSpecs.js.map +1 -1
- package/lib/esm/ConcurrentQuery.js.map +1 -1
- package/lib/esm/CustomViewState3dCreator.js.map +1 -1
- package/lib/esm/DevTools.js.map +1 -1
- package/lib/esm/DisplayStyle.d.ts +18 -3
- package/lib/esm/DisplayStyle.d.ts.map +1 -1
- package/lib/esm/DisplayStyle.js +10 -21
- package/lib/esm/DisplayStyle.js.map +1 -1
- package/lib/esm/ECDb.js.map +1 -1
- package/lib/esm/ECSchemaXmlContext.js.map +1 -1
- package/lib/esm/ECSqlRowExecutor.js.map +1 -1
- package/lib/esm/ECSqlStatement.js.map +1 -1
- package/lib/esm/ECSqlSyncReader.js.map +1 -1
- package/lib/esm/EditTxn.d.ts +262 -0
- package/lib/esm/EditTxn.d.ts.map +1 -0
- package/lib/esm/EditTxn.js +543 -0
- package/lib/esm/EditTxn.js.map +1 -0
- package/lib/esm/Element.d.ts +74 -5
- package/lib/esm/Element.d.ts.map +1 -1
- package/lib/esm/Element.js +64 -76
- package/lib/esm/Element.js.map +1 -1
- package/lib/esm/ElementAspect.d.ts +10 -0
- package/lib/esm/ElementAspect.d.ts.map +1 -1
- package/lib/esm/ElementAspect.js +22 -13
- package/lib/esm/ElementAspect.js.map +1 -1
- package/lib/esm/ElementGraphics.js.map +1 -1
- package/lib/esm/ElementTreeWalker.d.ts +56 -3
- package/lib/esm/ElementTreeWalker.d.ts.map +1 -1
- package/lib/esm/ElementTreeWalker.js +53 -40
- package/lib/esm/ElementTreeWalker.js.map +1 -1
- package/lib/esm/Entity.js.map +1 -1
- package/lib/esm/EntityReferences.js.map +1 -1
- package/lib/esm/ExportGraphics.js.map +1 -1
- package/lib/esm/ExternalSource.d.ts +11 -2
- package/lib/esm/ExternalSource.d.ts.map +1 -1
- package/lib/esm/ExternalSource.js +10 -8
- package/lib/esm/ExternalSource.js.map +1 -1
- package/lib/esm/FontFile.js.map +1 -1
- package/lib/esm/GeoCoordConfig.js.map +1 -1
- package/lib/esm/GeographicCRSServices.js.map +1 -1
- package/lib/esm/GeometrySummary.js +47 -47
- package/lib/esm/GeometrySummary.js.map +1 -1
- package/lib/esm/IModelDb.d.ts +66 -22
- package/lib/esm/IModelDb.d.ts.map +1 -1
- package/lib/esm/IModelDb.js +184 -298
- package/lib/esm/IModelDb.js.map +1 -1
- package/lib/esm/IModelDbFonts.js.map +1 -1
- package/lib/esm/IModelElementCloneContext.js.map +1 -1
- package/lib/esm/IModelHost.d.ts +22 -0
- package/lib/esm/IModelHost.d.ts.map +1 -1
- package/lib/esm/IModelHost.js +9 -0
- package/lib/esm/IModelHost.js.map +1 -1
- package/lib/esm/IModelIncrementalSchemaLocater.js.map +1 -1
- package/lib/esm/IModelJsFs.js.map +1 -1
- package/lib/esm/ImageSourceConversion.js.map +1 -1
- package/lib/esm/IpcHost.js +3 -3
- package/lib/esm/IpcHost.js.map +1 -1
- package/lib/esm/LineStyle.d.ts +47 -7
- package/lib/esm/LineStyle.d.ts.map +1 -1
- package/lib/esm/LineStyle.js +38 -33
- package/lib/esm/LineStyle.js.map +1 -1
- package/lib/esm/LocalHub.js +1 -1
- package/lib/esm/LocalHub.js.map +1 -1
- package/lib/esm/LocalhostIpcHost.js.map +1 -1
- package/lib/esm/LockControl.js.map +1 -1
- package/lib/esm/Material.d.ts +8 -1
- package/lib/esm/Material.d.ts.map +1 -1
- package/lib/esm/Material.js +6 -12
- package/lib/esm/Material.js.map +1 -1
- package/lib/esm/Model.d.ts +59 -20
- package/lib/esm/Model.d.ts.map +1 -1
- package/lib/esm/Model.js +39 -81
- package/lib/esm/Model.js.map +1 -1
- package/lib/esm/NativeAppStorage.js.map +1 -1
- package/lib/esm/NativeHost.js.map +1 -1
- package/lib/esm/NavigationRelationship.js.map +1 -1
- package/lib/esm/PromiseMemoizer.js.map +1 -1
- package/lib/esm/PropertyStore.js.map +1 -1
- package/lib/esm/Relationship.d.ts +72 -7
- package/lib/esm/Relationship.d.ts.map +1 -1
- package/lib/esm/Relationship.js +40 -22
- package/lib/esm/Relationship.js.map +1 -1
- package/lib/esm/RpcBackend.js.map +1 -1
- package/lib/esm/SQLiteDb.js.map +1 -1
- package/lib/esm/Schema.js.map +1 -1
- package/lib/esm/SchemaSync.js +5 -5
- package/lib/esm/SchemaSync.js.map +1 -1
- package/lib/esm/SchemaUtils.js.map +1 -1
- package/lib/esm/SheetIndex.d.ts +9 -0
- package/lib/esm/SheetIndex.d.ts.map +1 -1
- package/lib/esm/SheetIndex.js +38 -35
- package/lib/esm/SheetIndex.js.map +1 -1
- package/lib/esm/SqliteChangesetReader.js.map +1 -1
- package/lib/esm/SqliteStatement.js.map +1 -1
- package/lib/esm/StashManager.js +1 -1
- package/lib/esm/StashManager.js.map +1 -1
- package/lib/esm/Texture.d.ts +6 -0
- package/lib/esm/Texture.d.ts.map +1 -1
- package/lib/esm/Texture.js +6 -14
- package/lib/esm/Texture.js.map +1 -1
- package/lib/esm/TileStorage.js.map +1 -1
- package/lib/esm/TxnManager.d.ts +5 -5
- package/lib/esm/TxnManager.d.ts.map +1 -1
- package/lib/esm/TxnManager.js +23 -7
- package/lib/esm/TxnManager.js.map +1 -1
- package/lib/esm/ViewDefinition.d.ts +21 -1
- package/lib/esm/ViewDefinition.d.ts.map +1 -1
- package/lib/esm/ViewDefinition.js +27 -66
- package/lib/esm/ViewDefinition.js.map +1 -1
- package/lib/esm/ViewStateHydrator.js.map +1 -1
- package/lib/esm/ViewStore.js.map +1 -1
- package/lib/esm/annotations/ElementDrivesTextAnnotation.d.ts +14 -6
- package/lib/esm/annotations/ElementDrivesTextAnnotation.d.ts.map +1 -1
- package/lib/esm/annotations/ElementDrivesTextAnnotation.js +33 -27
- package/lib/esm/annotations/ElementDrivesTextAnnotation.js.map +1 -1
- package/lib/esm/annotations/FrameGeometry.js.map +1 -1
- package/lib/esm/annotations/LeaderGeometry.js.map +1 -1
- package/lib/esm/annotations/TextAnnotationElement.d.ts.map +1 -1
- package/lib/esm/annotations/TextAnnotationElement.js +6 -5
- package/lib/esm/annotations/TextAnnotationElement.js.map +1 -1
- package/lib/esm/annotations/TextAnnotationGeometry.js.map +1 -1
- package/lib/esm/annotations/TextBlockGeometry.js.map +1 -1
- package/lib/esm/annotations/TextBlockLayout.js.map +1 -1
- package/lib/esm/core-backend.d.ts +1 -0
- package/lib/esm/core-backend.d.ts.map +1 -1
- package/lib/esm/core-backend.js +1 -0
- package/lib/esm/core-backend.js.map +1 -1
- package/lib/esm/domains/FunctionalElements.d.ts +6 -2
- package/lib/esm/domains/FunctionalElements.d.ts.map +1 -1
- package/lib/esm/domains/FunctionalElements.js +8 -13
- package/lib/esm/domains/FunctionalElements.js.map +1 -1
- package/lib/esm/domains/FunctionalSchema.js.map +1 -1
- package/lib/esm/domains/GenericElements.d.ts +11 -4
- package/lib/esm/domains/GenericElements.d.ts.map +1 -1
- package/lib/esm/domains/GenericElements.js +13 -24
- package/lib/esm/domains/GenericElements.js.map +1 -1
- package/lib/esm/domains/GenericSchema.js.map +1 -1
- package/lib/esm/internal/ChangesetConflictArgs.js.map +1 -1
- package/lib/esm/internal/ChannelAdmin.d.ts +15 -0
- package/lib/esm/internal/ChannelAdmin.d.ts.map +1 -1
- package/lib/esm/internal/ChannelAdmin.js +6 -4
- package/lib/esm/internal/ChannelAdmin.js.map +1 -1
- package/lib/esm/internal/ElementLRUCache.js.map +1 -1
- package/lib/esm/internal/FontFileImpl.js.map +1 -1
- package/lib/esm/internal/HubMock.js.map +1 -1
- package/lib/esm/internal/IModelDbFontsImpl.js.map +1 -1
- package/lib/esm/internal/IntegrityCheck.js.map +1 -1
- package/lib/esm/internal/NativePlatform.js.map +1 -1
- package/lib/esm/internal/NoLocks.js.map +1 -1
- package/lib/esm/internal/OnlineStatus.js.map +1 -1
- package/lib/esm/internal/ServerBasedLocks.js.map +1 -1
- package/lib/esm/internal/Symbols.d.ts +4 -0
- package/lib/esm/internal/Symbols.d.ts.map +1 -1
- package/lib/esm/internal/Symbols.js +4 -0
- package/lib/esm/internal/Symbols.js.map +1 -1
- package/lib/esm/internal/annotations/fields.d.ts +3 -2
- package/lib/esm/internal/annotations/fields.d.ts.map +1 -1
- package/lib/esm/internal/annotations/fields.js +7 -6
- package/lib/esm/internal/annotations/fields.js.map +1 -1
- package/lib/esm/internal/cross-package.js.map +1 -1
- package/lib/esm/internal/workspace/SettingsEditorImpl.js.map +1 -1
- package/lib/esm/internal/workspace/SettingsImpl.js.map +1 -1
- package/lib/esm/internal/workspace/SettingsSchemasImpl.js.map +1 -1
- package/lib/esm/internal/workspace/WorkspaceImpl.js.map +1 -1
- package/lib/esm/internal/workspace/WorkspaceSqliteDb.js.map +1 -1
- package/lib/esm/rpc/multipart.js.map +1 -1
- package/lib/esm/rpc/tracing.js.map +1 -1
- package/lib/esm/rpc/web/logging.js.map +1 -1
- package/lib/esm/rpc/web/request.js.map +1 -1
- package/lib/esm/rpc/web/response.js.map +1 -1
- package/lib/esm/rpc-impl/DevToolsRpcImpl.js.map +1 -1
- package/lib/esm/rpc-impl/IModelReadRpcImpl.js.map +1 -1
- package/lib/esm/rpc-impl/IModelTileRpcImpl.js.map +1 -1
- package/lib/esm/rpc-impl/RpcBriefcaseUtility.d.ts.map +1 -1
- package/lib/esm/rpc-impl/RpcBriefcaseUtility.js.map +1 -1
- package/lib/esm/rpc-impl/SnapshotIModelRpcImpl.js.map +1 -1
- package/lib/esm/test/AdvancedEqual.js.map +1 -1
- package/lib/esm/test/AnnotationTestUtils.js.map +1 -1
- package/lib/esm/test/AttachDb.test.js +11 -11
- package/lib/esm/test/AttachDb.test.js.map +1 -1
- package/lib/esm/test/ElementDrivesElement.test.d.ts +20 -19
- package/lib/esm/test/ElementDrivesElement.test.d.ts.map +1 -1
- package/lib/esm/test/ElementDrivesElement.test.js +134 -119
- package/lib/esm/test/ElementDrivesElement.test.js.map +1 -1
- package/lib/esm/test/ElementLRUCache.test.js.map +1 -1
- package/lib/esm/test/GeometryTestUtil.js.map +1 -1
- package/lib/esm/test/IModelHost.test.js +56 -2
- package/lib/esm/test/IModelHost.test.js.map +1 -1
- package/lib/esm/test/IModelTestUtils.d.ts +23 -23
- package/lib/esm/test/IModelTestUtils.d.ts.map +1 -1
- package/lib/esm/test/IModelTestUtils.js +466 -449
- package/lib/esm/test/IModelTestUtils.js.map +1 -1
- package/lib/esm/test/ImageSourceConversion.test.js.map +1 -1
- package/lib/esm/test/IpcHost.test.js.map +1 -1
- package/lib/esm/test/KnownTestLocations.js.map +1 -1
- package/lib/esm/test/PrintElementTree.js.map +1 -1
- package/lib/esm/test/PropertyDb.test.js +2 -2
- package/lib/esm/test/PropertyDb.test.js.map +1 -1
- package/lib/esm/test/RevisionUtility.js.map +1 -1
- package/lib/esm/test/SchemaUtils.test.js +25 -25
- package/lib/esm/test/SchemaUtils.test.js.map +1 -1
- package/lib/esm/test/SequentialLogMatcher.js.map +1 -1
- package/lib/esm/test/SquashSchemaAndDataChanges.test.js +156 -147
- package/lib/esm/test/SquashSchemaAndDataChanges.test.js.map +1 -1
- package/lib/esm/test/TestChangeSetUtility.d.ts.map +1 -1
- package/lib/esm/test/TestChangeSetUtility.js +11 -7
- package/lib/esm/test/TestChangeSetUtility.js.map +1 -1
- package/lib/esm/test/TestEditTxn.d.ts +8 -0
- package/lib/esm/test/TestEditTxn.d.ts.map +1 -0
- package/lib/esm/test/TestEditTxn.js +34 -0
- package/lib/esm/test/TestEditTxn.js.map +1 -0
- package/lib/esm/test/TestUtils.d.ts +1 -0
- package/lib/esm/test/TestUtils.d.ts.map +1 -1
- package/lib/esm/test/TestUtils.js +8 -1
- package/lib/esm/test/TestUtils.js.map +1 -1
- package/lib/esm/test/annotations/Fields.test.js +135 -143
- package/lib/esm/test/annotations/Fields.test.js.map +1 -1
- package/lib/esm/test/annotations/FrameGeometry.test.js.map +1 -1
- package/lib/esm/test/annotations/LeaderGeometry.test.js.map +1 -1
- package/lib/esm/test/annotations/TextAnnotation.test.js +156 -99
- package/lib/esm/test/annotations/TextAnnotation.test.js.map +1 -1
- package/lib/esm/test/annotations/TextBlock.test.js +5 -3
- package/lib/esm/test/annotations/TextBlock.test.js.map +1 -1
- package/lib/esm/test/assets/IncrementalSchemaLocater/configs/old.config.js.map +1 -1
- package/lib/esm/test/assets/IncrementalSchemaLocater/configs/simple.config.js.map +1 -1
- package/lib/esm/test/categories/Category.test.js +63 -3
- package/lib/esm/test/categories/Category.test.js.map +1 -1
- package/lib/esm/test/codespec/CodeSpec.test.js +88 -5
- package/lib/esm/test/codespec/CodeSpec.test.js.map +1 -1
- package/lib/esm/test/ecdb/CTE.test.js +88 -88
- package/lib/esm/test/ecdb/CTE.test.js.map +1 -1
- package/lib/esm/test/ecdb/ConcurrentQuery.test.js +19 -19
- package/lib/esm/test/ecdb/ConcurrentQuery.test.js.map +1 -1
- package/lib/esm/test/ecdb/ConcurrentQueryLoad.test.js +15 -15
- package/lib/esm/test/ecdb/ConcurrentQueryLoad.test.js.map +1 -1
- package/lib/esm/test/ecdb/ECDb.test.js +72 -72
- package/lib/esm/test/ecdb/ECDb.test.js.map +1 -1
- package/lib/esm/test/ecdb/ECDbTestHelper.js.map +1 -1
- package/lib/esm/test/ecdb/ECSchemaXmlContext.test.js.map +1 -1
- package/lib/esm/test/ecdb/ECSqlAst.test.js +68 -67
- package/lib/esm/test/ecdb/ECSqlAst.test.js.map +1 -1
- package/lib/esm/test/ecdb/ECSqlQuery.test.js +6 -6
- package/lib/esm/test/ecdb/ECSqlQuery.test.js.map +1 -1
- package/lib/esm/test/ecdb/ECSqlStatement.test.js +332 -333
- package/lib/esm/test/ecdb/ECSqlStatement.test.js.map +1 -1
- package/lib/esm/test/ecdb/ECSqlSyncReader.test.js.map +1 -1
- package/lib/esm/test/ecdb/QueryReaders.test.js +47 -44
- package/lib/esm/test/ecdb/QueryReaders.test.js.map +1 -1
- package/lib/esm/test/ecdb/SqliteStatement.test.js +2 -2
- package/lib/esm/test/ecdb/SqliteStatement.test.js.map +1 -1
- package/lib/esm/test/ecsql/dataset/ECSqlDatasets.d.ts.map +1 -1
- package/lib/esm/test/ecsql/dataset/ECSqlDatasets.js +30 -28
- package/lib/esm/test/ecsql/dataset/ECSqlDatasets.js.map +1 -1
- package/lib/esm/test/ecsql/src/ECSqlTestGenerator.js +21 -21
- package/lib/esm/test/ecsql/src/ECSqlTestGenerator.js.map +1 -1
- package/lib/esm/test/ecsql/src/ECSqlTestParser.js.map +1 -1
- package/lib/esm/test/ecsql/src/ECSqlTestRunner.test.js.map +1 -1
- package/lib/esm/test/element/DeleteDefinitionElements.test.js +159 -143
- package/lib/esm/test/element/DeleteDefinitionElements.test.js.map +1 -1
- package/lib/esm/test/element/ElementAspect.test.js +90 -82
- package/lib/esm/test/element/ElementAspect.test.js.map +1 -1
- package/lib/esm/test/element/ElementDependencyGraph.test.d.ts.map +1 -1
- package/lib/esm/test/element/ElementDependencyGraph.test.js +51 -43
- package/lib/esm/test/element/ElementDependencyGraph.test.js.map +1 -1
- package/lib/esm/test/element/ElementRoundTrip.test.js +176 -177
- package/lib/esm/test/element/ElementRoundTrip.test.js.map +1 -1
- package/lib/esm/test/element/ExcludedElements.test.js +2 -2
- package/lib/esm/test/element/ExcludedElements.test.js.map +1 -1
- package/lib/esm/test/element/ExternalSource.test.js +40 -38
- package/lib/esm/test/element/ExternalSource.test.js.map +1 -1
- package/lib/esm/test/element/NullStructArray.test.js +23 -22
- package/lib/esm/test/element/NullStructArray.test.js.map +1 -1
- package/lib/esm/test/element/ProjectInformationRecord.test.js +5 -2
- package/lib/esm/test/element/ProjectInformationRecord.test.js.map +1 -1
- package/lib/esm/test/element/SheetInformationAspect.test.js +43 -11
- package/lib/esm/test/element/SheetInformationAspect.test.js.map +1 -1
- package/lib/esm/test/element/UrlLink.test.js +2 -2
- package/lib/esm/test/element/UrlLink.test.js.map +1 -1
- package/lib/esm/test/font/FontFile.test.js.map +1 -1
- package/lib/esm/test/font/IModelDbFonts.test.js +87 -73
- package/lib/esm/test/font/IModelDbFonts.test.js.map +1 -1
- package/lib/esm/test/hubaccess/ApplyChangeset.test.js +194 -155
- package/lib/esm/test/hubaccess/ApplyChangeset.test.js.map +1 -1
- package/lib/esm/test/hubaccess/BriefcaseManager.test.js +2 -4
- package/lib/esm/test/hubaccess/BriefcaseManager.test.js.map +1 -1
- package/lib/esm/test/hubaccess/CheckpointManager.test.js.map +1 -1
- package/lib/esm/test/hubaccess/Rebase.test.js +369 -303
- package/lib/esm/test/hubaccess/Rebase.test.js.map +1 -1
- package/lib/esm/test/hubaccess/SemanticRebase.test.js +467 -392
- package/lib/esm/test/hubaccess/SemanticRebase.test.js.map +1 -1
- package/lib/esm/test/imageData.js.map +1 -1
- package/lib/esm/test/imodel/Code.test.js +31 -31
- package/lib/esm/test/imodel/Code.test.js.map +1 -1
- package/lib/esm/test/imodel/ElementTreeWalker.test.js +57 -48
- package/lib/esm/test/imodel/ElementTreeWalker.test.js.map +1 -1
- package/lib/esm/test/imodel/GetTextureImage.test.js.map +1 -1
- package/lib/esm/test/imodel/IModel.test.js +463 -388
- package/lib/esm/test/imodel/IModel.test.js.map +1 -1
- package/lib/esm/test/imodel/ProjectExtents.test.js +2 -2
- package/lib/esm/test/imodel/ProjectExtents.test.js.map +1 -1
- package/lib/esm/test/imodel/SchemaXmlImport.test.js +13 -13
- package/lib/esm/test/imodel/SchemaXmlImport.test.js.map +1 -1
- package/lib/esm/test/incrementalSchemaLocater/ECSqlQueries.test.js.map +1 -1
- package/lib/esm/test/incrementalSchemaLocater/IncrementalLoading.test.js.map +1 -1
- package/lib/esm/test/incrementalSchemaLocater/TestContext.d.ts.map +1 -1
- package/lib/esm/test/incrementalSchemaLocater/TestContext.js +2 -2
- package/lib/esm/test/incrementalSchemaLocater/TestContext.js.map +1 -1
- package/lib/esm/test/index.d.ts +1 -0
- package/lib/esm/test/index.d.ts.map +1 -1
- package/lib/esm/test/index.js +1 -0
- package/lib/esm/test/index.js.map +1 -1
- package/lib/esm/test/misc/DevTools.test.js.map +1 -1
- package/lib/esm/test/misc/EntitySubClasses.test.js.map +1 -1
- package/lib/esm/test/misc/GeoServices.test.js.map +1 -1
- package/lib/esm/test/misc/PromiseMemoizer.test.js.map +1 -1
- package/lib/esm/test/native/DgnDbWorker.test.js.map +1 -1
- package/lib/esm/test/rpc/response.test.js.map +1 -1
- package/lib/esm/test/schema/ClassRegistry.test.js +122 -121
- package/lib/esm/test/schema/ClassRegistry.test.js.map +1 -1
- package/lib/esm/test/schema/FunctionalDomain.test.js +36 -34
- package/lib/esm/test/schema/FunctionalDomain.test.js.map +1 -1
- package/lib/esm/test/schema/GenericDomain.test.js +114 -94
- package/lib/esm/test/schema/GenericDomain.test.js.map +1 -1
- package/lib/esm/test/schema/IModelSchemaContext.test.js +11 -10
- package/lib/esm/test/schema/IModelSchemaContext.test.js.map +1 -1
- package/lib/esm/test/schema/SchemaImportCallbacks.test.js +226 -211
- package/lib/esm/test/schema/SchemaImportCallbacks.test.js.map +1 -1
- package/lib/esm/test/sheetindex/SheetIndex.test.d.ts +1 -3
- package/lib/esm/test/sheetindex/SheetIndex.test.d.ts.map +1 -1
- package/lib/esm/test/sheetindex/SheetIndex.test.js +312 -247
- package/lib/esm/test/sheetindex/SheetIndex.test.js.map +1 -1
- package/lib/esm/test/standalone/ChangeMerge.test.js +101 -82
- package/lib/esm/test/standalone/ChangeMerge.test.js.map +1 -1
- package/lib/esm/test/standalone/ChangesetReader.test.js +242 -213
- package/lib/esm/test/standalone/ChangesetReader.test.js.map +1 -1
- package/lib/esm/test/standalone/CustomViewState3dCreator.test.js.map +1 -1
- package/lib/esm/test/standalone/DisplayStyle.test.js +43 -40
- package/lib/esm/test/standalone/DisplayStyle.test.js.map +1 -1
- package/lib/esm/test/standalone/Drawing.test.js +4 -3
- package/lib/esm/test/standalone/Drawing.test.js.map +1 -1
- package/lib/esm/test/standalone/EditTxn.test.d.ts +2 -0
- package/lib/esm/test/standalone/EditTxn.test.d.ts.map +1 -0
- package/lib/esm/test/standalone/EditTxn.test.js +219 -0
- package/lib/esm/test/standalone/EditTxn.test.js.map +1 -0
- package/lib/esm/test/standalone/ElementGraphics.test.js.map +1 -1
- package/lib/esm/test/standalone/ElementMesh.test.js +16 -13
- package/lib/esm/test/standalone/ElementMesh.test.js.map +1 -1
- package/lib/esm/test/standalone/ExportGraphics.test.js +40 -34
- package/lib/esm/test/standalone/ExportGraphics.test.js.map +1 -1
- package/lib/esm/test/standalone/GeometryChangeEvents.test.js +11 -15
- package/lib/esm/test/standalone/GeometryChangeEvents.test.js.map +1 -1
- package/lib/esm/test/standalone/GeometryStream.test.js +212 -165
- package/lib/esm/test/standalone/GeometryStream.test.js.map +1 -1
- package/lib/esm/test/standalone/HubMock.test.js +31 -25
- package/lib/esm/test/standalone/HubMock.test.js.map +1 -1
- package/lib/esm/test/standalone/IModelLimits.test.js +11 -8
- package/lib/esm/test/standalone/IModelLimits.test.js.map +1 -1
- package/lib/esm/test/standalone/IModelWrite.test.d.ts +2 -2
- package/lib/esm/test/standalone/IModelWrite.test.d.ts.map +1 -1
- package/lib/esm/test/standalone/IModelWrite.test.js +211 -169
- package/lib/esm/test/standalone/IModelWrite.test.js.map +1 -1
- package/lib/esm/test/standalone/ITwinWorkspace.test.js.map +1 -1
- package/lib/esm/test/standalone/InlineGeometryPartReferences.test.js +25 -22
- package/lib/esm/test/standalone/InlineGeometryPartReferences.test.js.map +1 -1
- package/lib/esm/test/standalone/IntegrityCheck.test.js +20 -18
- package/lib/esm/test/standalone/IntegrityCheck.test.js.map +1 -1
- package/lib/esm/test/standalone/MergeConflict.test.d.ts +2 -2
- package/lib/esm/test/standalone/MergeConflict.test.d.ts.map +1 -1
- package/lib/esm/test/standalone/MergeConflict.test.js +49 -33
- package/lib/esm/test/standalone/MergeConflict.test.js.map +1 -1
- package/lib/esm/test/standalone/NativeAppStorage.test.js.map +1 -1
- package/lib/esm/test/standalone/RenderMaterialElement.test.js +5 -5
- package/lib/esm/test/standalone/RenderMaterialElement.test.js.map +1 -1
- package/lib/esm/test/standalone/RenderTimeline.test.js +3 -2
- package/lib/esm/test/standalone/RenderTimeline.test.js.map +1 -1
- package/lib/esm/test/standalone/SQLiteDb.test.js.map +1 -1
- package/lib/esm/test/standalone/SchemaUtils.test.js.map +1 -1
- package/lib/esm/test/standalone/SectionDrawing.test.js +7 -7
- package/lib/esm/test/standalone/SectionDrawing.test.js.map +1 -1
- package/lib/esm/test/standalone/ServerBasedLocks.test.js +21 -19
- package/lib/esm/test/standalone/ServerBasedLocks.test.js.map +1 -1
- package/lib/esm/test/standalone/Setting.test.js.map +1 -1
- package/lib/esm/test/standalone/Settings.test.js +7 -4
- package/lib/esm/test/standalone/Settings.test.js.map +1 -1
- package/lib/esm/test/standalone/SettingsSchemas.test.js +2 -1
- package/lib/esm/test/standalone/SettingsSchemas.test.js.map +1 -1
- package/lib/esm/test/standalone/SnapshotDb.test.js +3 -1
- package/lib/esm/test/standalone/SnapshotDb.test.js.map +1 -1
- package/lib/esm/test/standalone/StandaloneDb.test.js +27 -26
- package/lib/esm/test/standalone/StandaloneDb.test.js.map +1 -1
- package/lib/esm/test/standalone/Texture.test.js +5 -4
- package/lib/esm/test/standalone/Texture.test.js.map +1 -1
- package/lib/esm/test/standalone/TileCache.test.d.ts.map +1 -1
- package/lib/esm/test/standalone/TileCache.test.js +5 -3
- package/lib/esm/test/standalone/TileCache.test.js.map +1 -1
- package/lib/esm/test/standalone/TileTree.test.js +35 -31
- package/lib/esm/test/standalone/TileTree.test.js.map +1 -1
- package/lib/esm/test/standalone/TxnManager.test.js +700 -653
- package/lib/esm/test/standalone/TxnManager.test.js.map +1 -1
- package/lib/esm/test/standalone/ViewDefinition.test.js +295 -229
- package/lib/esm/test/standalone/ViewDefinition.test.js.map +1 -1
- package/lib/esm/test/standalone/ViewStoreDb.test.js.map +1 -1
- package/lib/esm/test/standalone/Workspace.test.js +25 -23
- package/lib/esm/test/standalone/Workspace.test.js.map +1 -1
- package/lib/esm/test/standalone/iModelDb.test.js.map +1 -1
- package/lib/esm/test/workspace/SettingsDb.test.js.map +1 -1
- package/lib/esm/workspace/Settings.js.map +1 -1
- package/lib/esm/workspace/SettingsDb.js.map +1 -1
- package/lib/esm/workspace/SettingsEditor.js.map +1 -1
- package/lib/esm/workspace/SettingsSchemas.js.map +1 -1
- package/lib/esm/workspace/Workspace.js.map +1 -1
- package/lib/esm/workspace/WorkspaceEditor.js.map +1 -1
- package/package.json +13 -13
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SheetIndex.test.js","sourceRoot":"","sources":["../../../../src/test/sheetindex/SheetIndex.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 { Id64, Id64String } from \"@itwin/core-bentley\";\nimport { BisCodeSpec, CodeScopeSpec, CodeSpec, GeometricModel2dProps, RelatedElement, SheetProps } from \"@itwin/core-common\";\n\nimport { IModelDb, SnapshotDb } from \"../../IModelDb\";\nimport { ExtensiveTestScenario, IModelTestUtils } from \"../IModelTestUtils\";\nimport { DocumentPartition, Sheet } from \"../../Element\";\nimport { expect } from \"chai\";\nimport { DocumentListModel, SheetIndexModel, SheetModel } from \"../../Model\";\nimport { ElementOwnsChildElements, SheetIndexFolderOwnsEntries, SheetIndexOwnsEntries, SheetIndexReferenceRefersToSheetIndex, SheetReferenceRefersToSheet } from \"../../NavigationRelationship\";\nimport { SheetIndex, SheetIndexFolder, SheetIndexReference, SheetReference } from \"../../SheetIndex\";\n\nexport const getOrCreateDocumentList = async (iModel: IModelDb): Promise<Id64String> => {\n const documentListName = \"SheetList\";\n let documentListModelId: string | undefined;\n\n // Attempt to find an existing document partition and document list model\n const ids = iModel.queryEntityIds({ from: DocumentPartition.classFullName, where: `CodeValue = '${documentListName}'`});\n if (ids.size === 1) {\n documentListModelId = ids.values().next().value;\n }\n\n // If they do not exist, create the document partition and document list model\n if (documentListModelId === undefined) {\n const subjectId = iModel.elements.getRootSubject().id;\n await iModel.locks.acquireLocks({\n shared: subjectId,\n });\n documentListModelId = DocumentListModel.insert(iModel, subjectId, documentListName);\n }\n\n return documentListModelId;\n};\n\nconst insertSheet = async (iModel: IModelDb, sheetName: string): Promise<Id64String> => {\n const createSheetProps = {\n height: 42,\n width: 42,\n scale: 42,\n };\n // Get or make documentListModelId\n const modelId = await getOrCreateDocumentList(iModel);\n\n // Acquire locks and create sheet\n await iModel.locks.acquireLocks({ shared: modelId });\n const sheetElementProps: SheetProps = {\n ...createSheetProps,\n classFullName: Sheet.classFullName,\n code: Sheet.createCode(iModel, modelId, sheetName),\n model: modelId,\n };\n const sheetElementId = iModel.elements.insertElement(sheetElementProps);\n\n const sheetModelProps: GeometricModel2dProps = {\n classFullName: SheetModel.classFullName,\n modeledElement: { id: sheetElementId, relClassName: \"BisCore:ModelModelsElement\" } as RelatedElement,\n };\n const sheetModelId = iModel.models.insertModel(sheetModelProps);\n\n return sheetModelId;\n};\n\nconst insertCodeSpec = async (iModel: IModelDb) => {\n const indexSpec = CodeSpec.create(iModel, BisCodeSpec.sheetIndex, CodeScopeSpec.Type.Model);\n iModel.codeSpecs.insert(indexSpec);\n\n const entrySpec = CodeSpec.create(iModel, BisCodeSpec.sheetIndexEntry, CodeScopeSpec.Type.ParentElement);\n iModel.codeSpecs.insert(entrySpec);\n};\n\ndescribe(\"SheetIndex\", () => {\n let iModel: SnapshotDb;\n\n beforeEach(async () => {\n const iModelFile: string = IModelTestUtils.prepareOutputFile(\"IModel\", \"TestSheetIndex.bim\");\n\n const iModelDb = SnapshotDb.createEmpty(iModelFile, { rootSubject: { name: \"SheetIndex\" } });\n await ExtensiveTestScenario.prepareDb(iModelDb);\n await ExtensiveTestScenario.populateDb(iModelDb);\n iModel = iModelDb;\n\n await insertCodeSpec(iModel);\n });\n\n afterEach(() => {\n iModel.abandonChanges();\n iModel.close();\n });\n\n it(\"SheetIndexModel Should insert\", async () => {\n const subjectId = iModel.elements.getRootSubject().id;\n\n const modelId = SheetIndexModel.insert(iModel, subjectId, \"testSheetIndex\");\n expect(Id64.isValidId64(modelId)).to.be.true;\n });\n\n it(\"SheetIndex Should insert\", async () => {\n const subjectId = iModel.elements.getRootSubject().id;\n\n const modelId = SheetIndexModel.insert(iModel, subjectId, \"TestSheetIndexModel\");\n expect(Id64.isValidId64(modelId)).to.be.true;\n\n const sheetIndex = SheetIndex.insert(iModel, modelId, \"TestSheetIndex\");\n expect(Id64.isValidId64(sheetIndex)).to.be.true;\n });\n\n describe(\"Update\", () => {\n it(\"Priority\", () => {\n const subjectId = iModel.elements.getRootSubject().id;\n\n const modelId = SheetIndexModel.insert(iModel, subjectId, \"TestSheetIndexModel\");\n expect(Id64.isValidId64(modelId)).to.be.true;\n\n const sheetIndex1Id = SheetIndex.insert(iModel, modelId, \"TestSheetIndex\");\n expect(Id64.isValidId64(sheetIndex1Id)).to.be.true;\n\n const folderId = SheetIndexFolder.insert({ iModelDb: iModel, sheetIndexModelId: modelId, parentId: sheetIndex1Id, name: \"TestFolder\", priority: 1 });\n expect(Id64.isValidId64(folderId)).to.be.true;\n\n const folder = iModel.elements.tryGetElement<SheetIndexFolder>(folderId);\n expect(folder).to.not.be.undefined;\n expect(folder?.entryPriority).equals(1);\n\n folder!.entryPriority = 0;\n folder!.update();\n\n const folderPostUpdate = iModel.elements.tryGetElement<SheetIndexFolder>(folderId);\n expect(folderPostUpdate?.entryPriority).equals(0);\n });\n\n it(\"Parent\", () => {\n const subjectId = iModel.elements.getRootSubject().id;\n\n const modelId = SheetIndexModel.insert(iModel, subjectId, \"TestSheetIndexModel\");\n expect(Id64.isValidId64(modelId)).to.be.true;\n\n const sheetIndex1Id = SheetIndex.insert(iModel, modelId, \"TestSheetIndex-1\");\n expect(Id64.isValidId64(sheetIndex1Id)).to.be.true;\n\n const sheetIndex2Id = SheetIndex.insert(iModel, modelId, \"TestSheetIndex-2\");\n expect(Id64.isValidId64(sheetIndex2Id)).to.be.true;\n\n const folderId = SheetIndexFolder.insert({ iModelDb: iModel, sheetIndexModelId: modelId, parentId: sheetIndex1Id, name: \"TestFolder\", priority: 1 });\n expect(Id64.isValidId64(folderId)).to.be.true;\n\n const folder = iModel.elements.tryGetElement<SheetIndexFolder>(folderId);\n expect(folder).to.not.be.undefined;\n\n const parentRel11 = iModel.relationships.tryGetInstanceProps(ElementOwnsChildElements.classFullName, { sourceId: sheetIndex1Id, targetId: folderId });\n expect(parentRel11).to.not.be.undefined;\n\n folder!.parent = new SheetIndexOwnsEntries(sheetIndex2Id);\n folder!.update();\n\n const parentRel12 = iModel.relationships.tryGetInstanceProps(ElementOwnsChildElements.classFullName, { sourceId: sheetIndex1Id, targetId: folderId });\n expect(parentRel12).to.be.undefined;\n\n const parentRel22 = iModel.relationships.tryGetInstanceProps(ElementOwnsChildElements.classFullName, { sourceId: sheetIndex2Id, targetId: folderId });\n expect(parentRel22).to.not.be.undefined;\n });\n\n it(\"Sheet Reference\", async () => {\n const subjectId = iModel.elements.getRootSubject().id;\n\n const modelId = SheetIndexModel.insert(iModel, subjectId, \"TestSheetIndexModel\");\n expect(Id64.isValidId64(modelId)).to.be.true;\n\n const sheetIndexId = SheetIndex.insert(iModel, modelId, \"TestSheetIndex\");\n expect(Id64.isValidId64(sheetIndexId)).to.be.true;\n\n const sheet1Id = await insertSheet(iModel, \"sheet-1\");\n const sheet2Id = await insertSheet(iModel, \"sheet-2\");\n\n const sheetRefId = SheetReference.insert({ iModelDb: iModel, sheetIndexModelId: modelId, parentId: sheetIndexId, name: \"TestSheetReference\", priority: 1 });\n expect(Id64.isValidId64(sheetRefId)).to.be.true;\n\n const sheetRef = iModel.elements.tryGetElement<SheetReference>(sheetRefId);\n expect(sheetRef).to.not.be.undefined;\n expect(sheetRef!.sheet).to.be.undefined;\n\n sheetRef!.sheet = new SheetReferenceRefersToSheet(sheet1Id);\n sheetRef!.update();\n\n const refersRel11 = iModel.relationships.tryGetInstanceProps(SheetReferenceRefersToSheet.classFullName, { sourceId: sheetRefId, targetId: sheet1Id });\n expect(refersRel11).to.not.be.undefined;\n\n const parentRel12 = iModel.relationships.tryGetInstanceProps(SheetReferenceRefersToSheet.classFullName, { sourceId: sheetRefId, targetId: sheet2Id });\n expect(parentRel12).to.be.undefined;\n\n sheetRef!.sheet = new SheetReferenceRefersToSheet(sheet2Id);\n sheetRef!.update();\n\n const refersRel21 = iModel.relationships.tryGetInstanceProps(SheetReferenceRefersToSheet.classFullName, { sourceId: sheetRefId, targetId: sheet1Id });\n expect(refersRel21).to.be.undefined;\n\n const parentRel22 = iModel.relationships.tryGetInstanceProps(SheetReferenceRefersToSheet.classFullName, { sourceId: sheetRefId, targetId: sheet2Id });\n expect(parentRel22).to.not.be.undefined;\n });\n\n it(\"Sheet Index Reference\", () => {\n const subjectId = iModel.elements.getRootSubject().id;\n\n const modelId = SheetIndexModel.insert(iModel, subjectId, \"TestSheetIndexModel\");\n expect(Id64.isValidId64(modelId)).to.be.true;\n\n const sheetIndex1Id = SheetIndex.insert(iModel, modelId, \"TestSheetIndex-1\");\n expect(Id64.isValidId64(sheetIndex1Id)).to.be.true;\n\n const sheetIndex2Id = SheetIndex.insert(iModel, modelId, \"TestSheetIndex-2\");\n expect(Id64.isValidId64(sheetIndex2Id)).to.be.true;\n const sheetIndex3Id = SheetIndex.insert(iModel, modelId, \"TestSheetIndex-3\");\n expect(Id64.isValidId64(sheetIndex3Id)).to.be.true;\n\n const sheetIndexRefId = SheetIndexReference.insert({iModelDb: iModel, sheetIndexModelId: modelId, parentId: sheetIndex1Id, name: \"TestSheetReference\", priority: 1});\n expect(Id64.isValidId64(sheetIndexRefId)).to.be.true;\n\n const sheetIndexRef = iModel.elements.tryGetElement<SheetIndexReference>(sheetIndexRefId);\n expect(sheetIndexRef).to.not.be.undefined;\n expect(sheetIndexRef!.sheetIndex).to.be.undefined;\n\n sheetIndexRef!.sheetIndex = new SheetIndexReferenceRefersToSheetIndex(sheetIndex2Id);\n sheetIndexRef!.update();\n\n const parentRel11 = iModel.relationships.tryGetInstanceProps(SheetIndexReferenceRefersToSheetIndex.classFullName, { sourceId: sheetIndexRefId, targetId: sheetIndex2Id });\n expect(parentRel11).to.not.be.undefined;\n\n sheetIndexRef!.sheetIndex = new SheetIndexReferenceRefersToSheetIndex(sheetIndex3Id);\n sheetIndexRef!.update();\n\n const refersRel21 = iModel.relationships.tryGetInstanceProps(SheetIndexReferenceRefersToSheetIndex.classFullName, { sourceId: sheetIndexRefId, targetId: sheetIndex2Id });\n expect(refersRel21).to.be.undefined;\n\n const parentRel22 = iModel.relationships.tryGetInstanceProps(SheetIndexReferenceRefersToSheetIndex.classFullName, { sourceId: sheetIndexRefId, targetId: sheetIndex3Id });\n expect(parentRel22).to.not.be.undefined;\n });\n });\n\n describe(\"SheetIndexFolder\", () => {\n it(\"Should insert\", async () => {\n const subjectId = iModel.elements.getRootSubject().id;\n\n const modelId = SheetIndexModel.insert(iModel, subjectId, \"TestSheetIndexModel\");\n expect(Id64.isValidId64(modelId)).to.be.true;\n const sheetIndexId = SheetIndex.insert(iModel, modelId, \"TestSheetIndex\");\n expect(Id64.isValidId64(sheetIndexId)).to.be.true;\n\n const folderId = SheetIndexFolder.insert({ iModelDb: iModel, sheetIndexModelId: modelId, parentId: sheetIndexId, name: \"TestFolder-1\", priority: 1});\n expect(Id64.isValidId64(folderId)).to.be.true;\n\n const folder = iModel.elements.tryGetElement<SheetIndexFolder>(folderId);\n expect(folder).to.not.be.undefined;\n\n const relationship = iModel.relationships.tryGetInstanceProps(ElementOwnsChildElements.classFullName, { sourceId: sheetIndexId, targetId: folderId });\n expect(relationship).to.not.be.undefined;\n expect(relationship?.classFullName).equals(SheetIndexOwnsEntries.classFullName);\n\n expect(folder?.parent?.id).equals(sheetIndexId);\n });\n\n it(\"Should not insert SheetIndexFolder with the same name\", async () => {\n const subjectId = iModel.elements.getRootSubject().id;\n\n const modelId = SheetIndexModel.insert(iModel, subjectId, \"TestSheetIndexModel\");\n expect(Id64.isValidId64(modelId)).to.be.true;\n const sheetIndex = SheetIndex.insert(iModel, modelId, \"TestSheetIndex\");\n expect(Id64.isValidId64(sheetIndex)).to.be.true;\n\n const folder = SheetIndexFolder.insert({ iModelDb: iModel, sheetIndexModelId: modelId, parentId: sheetIndex, name: \"TestFolder\", priority: 1 });\n expect(Id64.isValidId64(folder)).to.be.true;\n\n const failInsert = () => SheetIndexFolder.insert({iModelDb: iModel, sheetIndexModelId: modelId, parentId: sheetIndex, name: \"TestFolder\", priority: 0 });\n\n expect(failInsert).throws();\n });\n\n it(\"Should have children\", async () => {\n const subjectId = iModel.elements.getRootSubject().id;\n\n const modelId = SheetIndexModel.insert(iModel, subjectId, \"TestSheetIndexModel\");\n expect(Id64.isValidId64(modelId)).to.be.true;\n const sheetIndexId = SheetIndex.insert(iModel, modelId, \"TestSheetIndex\");\n expect(Id64.isValidId64(sheetIndexId)).to.be.true;\n\n const folder1Id = SheetIndexFolder.insert({ iModelDb: iModel, sheetIndexModelId: modelId, parentId: sheetIndexId, name: \"TestFolder-1\", priority: 1 });\n expect(Id64.isValidId64(folder1Id)).to.be.true;\n\n const folder2Id = SheetIndexFolder.insert({ iModelDb: iModel, sheetIndexModelId: modelId, parentId: folder1Id, name: \"TestFolder-2\", priority: 1 });\n expect(Id64.isValidId64(folder2Id)).to.be.true;\n const folder2 = iModel.elements.tryGetElement<SheetIndexFolder>(folder2Id);\n expect(folder2).to.not.be.undefined;\n\n const relationship = iModel.relationships.tryGetInstanceProps(ElementOwnsChildElements.classFullName, { sourceId: folder1Id, targetId: folder2Id });\n expect(relationship).to.not.be.undefined;\n expect(relationship?.classFullName).equals(SheetIndexFolderOwnsEntries.classFullName);\n\n expect(folder2?.parent?.id).equals(folder1Id);\n });\n });\n\n describe(\"SheetReferences\", () => {\n it(\"Should not insert SheetReferences with the same name\", async () => {\n const subjectId = iModel.elements.getRootSubject().id;\n\n const modelId = SheetIndexModel.insert(iModel, subjectId, \"TestSheetIndexModel\");\n expect(Id64.isValidId64(modelId)).to.be.true;\n const sheetIndex = SheetIndex.insert(iModel, modelId, \"TestSheetIndex\");\n expect(Id64.isValidId64(sheetIndex)).to.be.true;\n\n const sheetRef1 = SheetReference.insert({ iModelDb: iModel, sheetIndexModelId: modelId, parentId: sheetIndex, name: \"TestSheetRef\", priority: 1 });\n expect(Id64.isValidId64(sheetRef1)).to.be.true;\n\n const failInsert = () => SheetReference.insert({ iModelDb: iModel, sheetIndexModelId: modelId, parentId: sheetIndex, name: \"TestSheetRef\", priority: 0 });\n\n expect(failInsert).throws();\n });\n\n it(\"Should insert SheetReferences without a Sheet\", async () => {\n const subjectId = iModel.elements.getRootSubject().id;\n\n const modelId = SheetIndexModel.insert(iModel, subjectId, \"TestSheetIndexModel\");\n expect(Id64.isValidId64(modelId)).to.be.true;\n const sheetIndex = SheetIndex.insert(iModel, modelId, \"TestSheetIndex\");\n expect(Id64.isValidId64(sheetIndex)).to.be.true;\n\n const sheetRef = SheetReference.insert({ iModelDb: iModel, sheetIndexModelId: modelId, parentId: sheetIndex, name: \"TestSheetRef\", priority: 1 });\n expect(Id64.isValidId64(sheetRef)).to.be.true;\n });\n\n it(\"Should insert and with a Sheet\", async () => {\n const subjectId = iModel.elements.getRootSubject().id;\n const sheetId = await insertSheet(iModel, \"sheet-1\");\n\n const modelId = SheetIndexModel.insert(iModel, subjectId, \"TestSheetIndexModel\");\n expect(Id64.isValidId64(modelId)).to.be.true;\n const sheetIndex = SheetIndex.insert(iModel, modelId, \"TestSheetIndex\");\n expect(Id64.isValidId64(sheetIndex)).to.be.true;\n\n const sheetRefId = SheetReference.insert({ iModelDb: iModel, sheetIndexModelId: modelId, parentId: sheetIndex, name: \"TestSheetRef\", priority: 1, sheetId });\n expect(Id64.isValidId64(sheetRefId)).to.be.true;\n\n const ref = iModel.elements.tryGetElement<SheetReference>(sheetRefId);\n expect(ref).to.not.be.undefined;\n\n const relationship = iModel.relationships.tryGetInstanceProps(SheetReferenceRefersToSheet.classFullName, { sourceId: sheetRefId, targetId: sheetId });\n expect(relationship).to.not.be.undefined;\n expect(relationship?.classFullName).equals(SheetReferenceRefersToSheet.classFullName);\n\n expect(ref?.sheet?.id).equals(sheetId);\n });\n\n it.skip(\"Should not insert with the same Sheet twice\", async () => {\n const subjectId = iModel.elements.getRootSubject().id;\n const sheetId = await insertSheet(iModel, \"sheet-1\");\n\n const modelId = SheetIndexModel.insert(iModel, subjectId, \"TestSheetIndexModel\");\n expect(Id64.isValidId64(modelId)).to.be.true;\n const sheetIndex = SheetIndex.insert(iModel, modelId, \"TestSheetIndex\");\n\n SheetReference.insert({ iModelDb: iModel, sheetIndexModelId: modelId, parentId: sheetIndex, name: \"TestSheetRef-1\", priority: 1, sheetId });\n\n const sameIndex = () => SheetReference.insert({ iModelDb: iModel, sheetIndexModelId: modelId, parentId: sheetIndex, name: \"TestSheetRef-2\", priority: 2, sheetId });\n\n expect(sameIndex).throws();\n });\n });\n\n describe(\"SheetIndexReferences\", () => {\n it(\"Should not insert SheetIndexReferences with the same name\", async () => {\n const subjectId = iModel.elements.getRootSubject().id;\n\n const modelId = SheetIndexModel.insert(iModel, subjectId, \"TestSheetIndexModel\");\n expect(Id64.isValidId64(modelId)).to.be.true;\n const sheetIndex = SheetIndex.insert(iModel, modelId, \"TestSheetIndex\");\n expect(Id64.isValidId64(sheetIndex)).to.be.true;\n\n const sheetIndexRef = SheetIndexReference.insert({ iModelDb: iModel, sheetIndexModelId: modelId, parentId: sheetIndex, name: \"TestSheetIndexRef\", priority: 1 });\n expect(Id64.isValidId64(sheetIndexRef)).to.be.true;\n\n const failInsert = () => SheetIndexReference.insert({ iModelDb: iModel, sheetIndexModelId: modelId, parentId: sheetIndex, name: \"TestSheetIndexRef\", priority: 0 });\n\n expect(failInsert).throws();\n });\n\n it(\"Should insert SheetIndexReferences without a SheetIndexRef\", async () => {\n const subjectId = iModel.elements.getRootSubject().id;\n\n const modelId = SheetIndexModel.insert(iModel, subjectId, \"TestSheetIndexModel\");\n expect(Id64.isValidId64(modelId)).to.be.true;\n const sheetIndex1Id = SheetIndex.insert(iModel, modelId, \"TestSheetIndex\");\n expect(Id64.isValidId64(sheetIndex1Id)).to.be.true;\n\n const sheetRef = SheetIndexReference.insert({ iModelDb: iModel, sheetIndexModelId: modelId, parentId: sheetIndex1Id, name: \"TestSheetIndexRef\", priority: 1 });\n expect(Id64.isValidId64(sheetRef)).to.be.true;\n });\n\n it(\"Should insert and with a SheetIndexRef\", async () => {\n const subjectId = iModel.elements.getRootSubject().id;\n\n const modelId = SheetIndexModel.insert(iModel, subjectId, \"TestSheetIndexModel\");\n expect(Id64.isValidId64(modelId)).to.be.true;\n const sheetIndex1Id = SheetIndex.insert(iModel, modelId, \"TestSheetIndex-1\");\n expect(Id64.isValidId64(sheetIndex1Id)).to.be.true;\n const sheetIndex2Id = SheetIndex.insert(iModel, modelId, \"TestSheetIndex-2\");\n expect(Id64.isValidId64(sheetIndex1Id)).to.be.true;\n\n const sheetIndexRefId = SheetIndexReference.insert({ iModelDb: iModel, sheetIndexModelId: modelId, parentId: sheetIndex1Id, name: \"TestSheetRef\", priority: 1, sheetIndexId: sheetIndex2Id });\n expect(Id64.isValidId64(sheetIndexRefId)).to.be.true;\n\n const ref = iModel.elements.tryGetElement<SheetIndexReference>(sheetIndexRefId);\n expect(ref).to.not.be.undefined;\n\n const relationship = iModel.relationships.tryGetInstanceProps(SheetIndexReferenceRefersToSheetIndex.classFullName, { sourceId: sheetIndexRefId, targetId: sheetIndex2Id });\n expect(relationship).to.not.be.undefined;\n expect(relationship?.classFullName).equals(SheetIndexReferenceRefersToSheetIndex.classFullName);\n\n expect(ref?.sheetIndex?.id).equals(sheetIndex2Id);\n });\n });\n});\n"]}
|
|
1
|
+
{"version":3,"file":"SheetIndex.test.js","sourceRoot":"","sources":["../../../../src/test/sheetindex/SheetIndex.test.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n * See LICENSE.md in the project root for license terms and full copyright notice.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\nimport { Id64, Id64String } from \"@itwin/core-bentley\";\r\nimport { BisCodeSpec, CodeScopeSpec, CodeSpec, EditTxnError, RelatedElement, SheetProps } from \"@itwin/core-common\";\r\nimport { EditTxn, withEditTxn } from \"../../EditTxn\";\r\n\r\nimport { SnapshotDb } from \"../../IModelDb\";\r\nimport { ExtensiveTestScenario, IModelTestUtils } from \"../IModelTestUtils\";\r\nimport { DocumentPartition, Sheet } from \"../../Element\";\r\nimport { expect } from \"chai\";\r\nimport { DocumentListModel, SheetIndexModel, SheetModel } from \"../../Model\";\r\nimport { ElementOwnsChildElements, SheetIndexFolderOwnsEntries, SheetIndexOwnsEntries, SheetIndexReferenceRefersToSheetIndex, SheetReferenceRefersToSheet } from \"../../NavigationRelationship\";\r\nimport { SheetIndex, SheetIndexFolder, SheetIndexReference, SheetReference } from \"../../SheetIndex\";\r\n\r\nconst getOrCreateDocumentList = (txn: EditTxn): Id64String => {\r\n const documentListName = \"SheetList\";\r\n const ids = txn.iModel.queryEntityIds({ from: DocumentPartition.classFullName, where: `CodeValue = '${documentListName}'` });\r\n if (ids.size === 1)\r\n return ids.values().next().value!;\r\n\r\n const subjectId = txn.iModel.elements.getRootSubject().id;\r\n return DocumentListModel.insert(txn, subjectId, documentListName);\r\n};\r\n\r\nconst insertSheet = (txn: EditTxn, sheetName: string): Id64String => {\r\n const modelId = getOrCreateDocumentList(txn);\r\n const sheetElementProps: SheetProps = {\r\n height: 42,\r\n width: 42,\r\n scale: 42,\r\n classFullName: Sheet.classFullName,\r\n code: Sheet.createCode(txn.iModel, modelId, sheetName),\r\n model: modelId,\r\n };\r\n const sheetElementId = txn.insertElement(sheetElementProps);\r\n return txn.insertModel({\r\n classFullName: SheetModel.classFullName,\r\n modeledElement: { id: sheetElementId, relClassName: \"BisCore:ModelModelsElement\" } as RelatedElement,\r\n });\r\n};\r\n\r\nconst insertCodeSpec = (txn: EditTxn) => {\r\n const indexSpec = CodeSpec.create(txn.iModel, BisCodeSpec.sheetIndex, CodeScopeSpec.Type.Model);\r\n txn.iModel.codeSpecs.insert(txn, indexSpec);\r\n\r\n const entrySpec = CodeSpec.create(txn.iModel, BisCodeSpec.sheetIndexEntry, CodeScopeSpec.Type.ParentElement);\r\n txn.iModel.codeSpecs.insert(txn, entrySpec);\r\n};\r\n\r\ndescribe(\"SheetIndex\", () => {\r\n let iModel: SnapshotDb;\r\n\r\n beforeEach(async () => {\r\n const iModelFile: string = IModelTestUtils.prepareOutputFile(\"IModel\", \"TestSheetIndex.bim\");\r\n\r\n const iModelDb = SnapshotDb.createEmpty(iModelFile, { rootSubject: { name: \"SheetIndex\" } });\r\n await ExtensiveTestScenario.prepareDb(iModelDb);\r\n await ExtensiveTestScenario.populateDb(iModelDb);\r\n iModel = iModelDb;\r\n\r\n withEditTxn(iModel, (txn) => insertCodeSpec(txn));\r\n });\r\n\r\n afterEach(() => {\r\n iModel.close();\r\n });\r\n\r\n it(\"SheetIndexModel Should insert\", () => {\r\n withEditTxn(iModel, (txn) => {\r\n const subjectId = iModel.elements.getRootSubject().id;\r\n const modelId = SheetIndexModel.insert(txn, subjectId, \"testSheetIndex\");\r\n expect(Id64.isValidId64(modelId)).to.be.true;\r\n });\r\n });\r\n\r\n it(\"SheetIndex Should insert\", () => {\r\n withEditTxn(iModel, (txn) => {\r\n const subjectId = iModel.elements.getRootSubject().id;\r\n const modelId = SheetIndexModel.insert(txn, subjectId, \"TestSheetIndexModel\");\r\n expect(Id64.isValidId64(modelId)).to.be.true;\r\n\r\n const sheetIndex = SheetIndex.insert(txn, modelId, \"TestSheetIndex\");\r\n expect(Id64.isValidId64(sheetIndex)).to.be.true;\r\n });\r\n });\r\n\r\n describe(\"Update\", () => {\r\n it(\"Priority\", () => {\r\n withEditTxn(iModel, (txn) => {\r\n const subjectId = iModel.elements.getRootSubject().id;\r\n const modelId = SheetIndexModel.insert(txn, subjectId, \"TestSheetIndexModel\");\r\n expect(Id64.isValidId64(modelId)).to.be.true;\r\n\r\n const sheetIndex1Id = SheetIndex.insert(txn, modelId, \"TestSheetIndex\");\r\n expect(Id64.isValidId64(sheetIndex1Id)).to.be.true;\r\n\r\n const folderId = SheetIndexFolder.insert(txn, { sheetIndexModelId: modelId, parentId: sheetIndex1Id, name: \"TestFolder\", priority: 1 });\r\n expect(Id64.isValidId64(folderId)).to.be.true;\r\n\r\n const folder = iModel.elements.tryGetElement<SheetIndexFolder>(folderId);\r\n expect(folder).to.not.be.undefined;\r\n expect(folder?.entryPriority).equals(1);\r\n\r\n folder!.entryPriority = 0;\r\n folder!.update(txn);\r\n\r\n const folderPostUpdate = iModel.elements.tryGetElement<SheetIndexFolder>(folderId);\r\n expect(folderPostUpdate?.entryPriority).equals(0);\r\n });\r\n });\r\n\r\n it(\"Parent\", () => {\r\n withEditTxn(iModel, (txn) => {\r\n const subjectId = iModel.elements.getRootSubject().id;\r\n const modelId = SheetIndexModel.insert(txn, subjectId, \"TestSheetIndexModel\");\r\n expect(Id64.isValidId64(modelId)).to.be.true;\r\n\r\n const sheetIndex1Id = SheetIndex.insert(txn, modelId, \"TestSheetIndex-1\");\r\n expect(Id64.isValidId64(sheetIndex1Id)).to.be.true;\r\n\r\n const sheetIndex2Id = SheetIndex.insert(txn, modelId, \"TestSheetIndex-2\");\r\n expect(Id64.isValidId64(sheetIndex2Id)).to.be.true;\r\n\r\n const folderId = SheetIndexFolder.insert(txn, { sheetIndexModelId: modelId, parentId: sheetIndex1Id, name: \"TestFolder\", priority: 1 });\r\n expect(Id64.isValidId64(folderId)).to.be.true;\r\n\r\n const folder = iModel.elements.tryGetElement<SheetIndexFolder>(folderId);\r\n expect(folder).to.not.be.undefined;\r\n\r\n const parentRel11 = iModel.relationships.tryGetInstanceProps(ElementOwnsChildElements.classFullName, { sourceId: sheetIndex1Id, targetId: folderId });\r\n expect(parentRel11).to.not.be.undefined;\r\n\r\n folder!.parent = new SheetIndexOwnsEntries(sheetIndex2Id);\r\n folder!.update(txn);\r\n\r\n const parentRel12 = iModel.relationships.tryGetInstanceProps(ElementOwnsChildElements.classFullName, { sourceId: sheetIndex1Id, targetId: folderId });\r\n expect(parentRel12).to.be.undefined;\r\n\r\n const parentRel22 = iModel.relationships.tryGetInstanceProps(ElementOwnsChildElements.classFullName, { sourceId: sheetIndex2Id, targetId: folderId });\r\n expect(parentRel22).to.not.be.undefined;\r\n });\r\n });\r\n\r\n it(\"Sheet Reference\", () => {\r\n withEditTxn(iModel, (txn) => {\r\n const sheet1Id = insertSheet(txn, \"sheet-1\");\r\n const sheet2Id = insertSheet(txn, \"sheet-2\");\r\n const subjectId = iModel.elements.getRootSubject().id;\r\n const modelId = SheetIndexModel.insert(txn, subjectId, \"TestSheetIndexModel\");\r\n expect(Id64.isValidId64(modelId)).to.be.true;\r\n\r\n const sheetIndexId = SheetIndex.insert(txn, modelId, \"TestSheetIndex\");\r\n expect(Id64.isValidId64(sheetIndexId)).to.be.true;\r\n\r\n const sheetRefId = SheetReference.insert(txn, { sheetIndexModelId: modelId, parentId: sheetIndexId, name: \"TestSheetReference\", priority: 1 });\r\n expect(Id64.isValidId64(sheetRefId)).to.be.true;\r\n\r\n const sheetRef = iModel.elements.tryGetElement<SheetReference>(sheetRefId);\r\n expect(sheetRef).to.not.be.undefined;\r\n expect(sheetRef!.sheet).to.be.undefined;\r\n\r\n sheetRef!.sheet = new SheetReferenceRefersToSheet(sheet1Id);\r\n sheetRef!.update(txn);\r\n\r\n const refersRel11 = iModel.relationships.tryGetInstanceProps(SheetReferenceRefersToSheet.classFullName, { sourceId: sheetRefId, targetId: sheet1Id });\r\n expect(refersRel11).to.not.be.undefined;\r\n\r\n const parentRel12 = iModel.relationships.tryGetInstanceProps(SheetReferenceRefersToSheet.classFullName, { sourceId: sheetRefId, targetId: sheet2Id });\r\n expect(parentRel12).to.be.undefined;\r\n\r\n sheetRef!.sheet = new SheetReferenceRefersToSheet(sheet2Id);\r\n sheetRef!.update(txn);\r\n\r\n const refersRel21 = iModel.relationships.tryGetInstanceProps(SheetReferenceRefersToSheet.classFullName, { sourceId: sheetRefId, targetId: sheet1Id });\r\n expect(refersRel21).to.be.undefined;\r\n\r\n const parentRel22 = iModel.relationships.tryGetInstanceProps(SheetReferenceRefersToSheet.classFullName, { sourceId: sheetRefId, targetId: sheet2Id });\r\n expect(parentRel22).to.not.be.undefined;\r\n });\r\n });\r\n\r\n it(\"Sheet Index Reference\", () => {\r\n withEditTxn(iModel, (txn) => {\r\n const subjectId = iModel.elements.getRootSubject().id;\r\n const modelId = SheetIndexModel.insert(txn, subjectId, \"TestSheetIndexModel\");\r\n expect(Id64.isValidId64(modelId)).to.be.true;\r\n\r\n const sheetIndex1Id = SheetIndex.insert(txn, modelId, \"TestSheetIndex-1\");\r\n expect(Id64.isValidId64(sheetIndex1Id)).to.be.true;\r\n\r\n const sheetIndex2Id = SheetIndex.insert(txn, modelId, \"TestSheetIndex-2\");\r\n expect(Id64.isValidId64(sheetIndex2Id)).to.be.true;\r\n const sheetIndex3Id = SheetIndex.insert(txn, modelId, \"TestSheetIndex-3\");\r\n expect(Id64.isValidId64(sheetIndex3Id)).to.be.true;\r\n\r\n const sheetIndexRefId = SheetIndexReference.insert(txn, { sheetIndexModelId: modelId, parentId: sheetIndex1Id, name: \"TestSheetReference\", priority: 1 });\r\n expect(Id64.isValidId64(sheetIndexRefId)).to.be.true;\r\n\r\n const sheetIndexRef = iModel.elements.tryGetElement<SheetIndexReference>(sheetIndexRefId);\r\n expect(sheetIndexRef).to.not.be.undefined;\r\n expect(sheetIndexRef!.sheetIndex).to.be.undefined;\r\n\r\n sheetIndexRef!.sheetIndex = new SheetIndexReferenceRefersToSheetIndex(sheetIndex2Id);\r\n sheetIndexRef!.update(txn);\r\n\r\n const parentRel11 = iModel.relationships.tryGetInstanceProps(SheetIndexReferenceRefersToSheetIndex.classFullName, { sourceId: sheetIndexRefId, targetId: sheetIndex2Id });\r\n expect(parentRel11).to.not.be.undefined;\r\n\r\n sheetIndexRef!.sheetIndex = new SheetIndexReferenceRefersToSheetIndex(sheetIndex3Id);\r\n sheetIndexRef!.update(txn);\r\n\r\n const refersRel21 = iModel.relationships.tryGetInstanceProps(SheetIndexReferenceRefersToSheetIndex.classFullName, { sourceId: sheetIndexRefId, targetId: sheetIndex2Id });\r\n expect(refersRel21).to.be.undefined;\r\n\r\n const parentRel22 = iModel.relationships.tryGetInstanceProps(SheetIndexReferenceRefersToSheetIndex.classFullName, { sourceId: sheetIndexRefId, targetId: sheetIndex3Id });\r\n expect(parentRel22).to.not.be.undefined;\r\n });\r\n });\r\n });\r\n\r\n describe(\"SheetIndexFolder\", () => {\r\n it(\"Should insert\", () => {\r\n withEditTxn(iModel, (txn) => {\r\n const subjectId = iModel.elements.getRootSubject().id;\r\n const modelId = SheetIndexModel.insert(txn, subjectId, \"TestSheetIndexModel\");\r\n expect(Id64.isValidId64(modelId)).to.be.true;\r\n const sheetIndexId = SheetIndex.insert(txn, modelId, \"TestSheetIndex\");\r\n expect(Id64.isValidId64(sheetIndexId)).to.be.true;\r\n\r\n const folderId = SheetIndexFolder.insert(txn, { sheetIndexModelId: modelId, parentId: sheetIndexId, name: \"TestFolder-1\", priority: 1 });\r\n expect(Id64.isValidId64(folderId)).to.be.true;\r\n\r\n const folder = iModel.elements.tryGetElement<SheetIndexFolder>(folderId);\r\n expect(folder).to.not.be.undefined;\r\n\r\n const relationship = iModel.relationships.tryGetInstanceProps(ElementOwnsChildElements.classFullName, { sourceId: sheetIndexId, targetId: folderId });\r\n expect(relationship).to.not.be.undefined;\r\n expect(relationship?.classFullName).equals(SheetIndexOwnsEntries.classFullName);\r\n\r\n expect(folder?.parent?.id).equals(sheetIndexId);\r\n });\r\n });\r\n\r\n it(\"Should not insert SheetIndexFolder with the same name\", () => {\r\n withEditTxn(iModel, (txn) => {\r\n const subjectId = iModel.elements.getRootSubject().id;\r\n const modelId = SheetIndexModel.insert(txn, subjectId, \"TestSheetIndexModel\");\r\n expect(Id64.isValidId64(modelId)).to.be.true;\r\n const sheetIndex = SheetIndex.insert(txn, modelId, \"TestSheetIndex\");\r\n expect(Id64.isValidId64(sheetIndex)).to.be.true;\r\n\r\n const folder = SheetIndexFolder.insert(txn, { sheetIndexModelId: modelId, parentId: sheetIndex, name: \"TestFolder\", priority: 1 });\r\n expect(Id64.isValidId64(folder)).to.be.true;\r\n\r\n const failInsert = () => SheetIndexFolder.insert(txn, { sheetIndexModelId: modelId, parentId: sheetIndex, name: \"TestFolder\", priority: 0 });\r\n\r\n expect(failInsert).throws();\r\n });\r\n });\r\n\r\n it(\"Should have children\", () => {\r\n withEditTxn(iModel, (txn) => {\r\n const subjectId = iModel.elements.getRootSubject().id;\r\n const modelId = SheetIndexModel.insert(txn, subjectId, \"TestSheetIndexModel\");\r\n expect(Id64.isValidId64(modelId)).to.be.true;\r\n const sheetIndexId = SheetIndex.insert(txn, modelId, \"TestSheetIndex\");\r\n expect(Id64.isValidId64(sheetIndexId)).to.be.true;\r\n\r\n const folder1Id = SheetIndexFolder.insert(txn, { sheetIndexModelId: modelId, parentId: sheetIndexId, name: \"TestFolder-1\", priority: 1 });\r\n expect(Id64.isValidId64(folder1Id)).to.be.true;\r\n\r\n const folder2Id = SheetIndexFolder.insert(txn, { sheetIndexModelId: modelId, parentId: folder1Id, name: \"TestFolder-2\", priority: 1 });\r\n expect(Id64.isValidId64(folder2Id)).to.be.true;\r\n const folder2 = iModel.elements.tryGetElement<SheetIndexFolder>(folder2Id);\r\n expect(folder2).to.not.be.undefined;\r\n\r\n const relationship = iModel.relationships.tryGetInstanceProps(ElementOwnsChildElements.classFullName, { sourceId: folder1Id, targetId: folder2Id });\r\n expect(relationship).to.not.be.undefined;\r\n expect(relationship?.classFullName).equals(SheetIndexFolderOwnsEntries.classFullName);\r\n\r\n expect(folder2?.parent?.id).equals(folder1Id);\r\n });\r\n });\r\n });\r\n\r\n describe(\"SheetReferences\", () => {\r\n it(\"Should not insert SheetReferences with the same name\", () => {\r\n withEditTxn(iModel, (txn) => {\r\n const subjectId = iModel.elements.getRootSubject().id;\r\n const modelId = SheetIndexModel.insert(txn, subjectId, \"TestSheetIndexModel\");\r\n expect(Id64.isValidId64(modelId)).to.be.true;\r\n const sheetIndex = SheetIndex.insert(txn, modelId, \"TestSheetIndex\");\r\n expect(Id64.isValidId64(sheetIndex)).to.be.true;\r\n\r\n const sheetRef1 = SheetReference.insert(txn, { sheetIndexModelId: modelId, parentId: sheetIndex, name: \"TestSheetRef\", priority: 1 });\r\n expect(Id64.isValidId64(sheetRef1)).to.be.true;\r\n\r\n const failInsert = () => SheetReference.insert(txn, { sheetIndexModelId: modelId, parentId: sheetIndex, name: \"TestSheetRef\", priority: 0 });\r\n\r\n expect(failInsert).throws();\r\n });\r\n });\r\n\r\n it(\"Should insert SheetReferences without a Sheet\", () => {\r\n withEditTxn(iModel, (txn) => {\r\n const subjectId = iModel.elements.getRootSubject().id;\r\n const modelId = SheetIndexModel.insert(txn, subjectId, \"TestSheetIndexModel\");\r\n expect(Id64.isValidId64(modelId)).to.be.true;\r\n const sheetIndex = SheetIndex.insert(txn, modelId, \"TestSheetIndex\");\r\n expect(Id64.isValidId64(sheetIndex)).to.be.true;\r\n\r\n const sheetRef = SheetReference.insert(txn, { sheetIndexModelId: modelId, parentId: sheetIndex, name: \"TestSheetRef\", priority: 1 });\r\n expect(Id64.isValidId64(sheetRef)).to.be.true;\r\n });\r\n });\r\n\r\n it(\"Should insert and with a Sheet\", () => {\r\n withEditTxn(iModel, (txn) => {\r\n const sheetId = insertSheet(txn, \"sheet-1\");\r\n const subjectId = iModel.elements.getRootSubject().id;\r\n const modelId = SheetIndexModel.insert(txn, subjectId, \"TestSheetIndexModel\");\r\n expect(Id64.isValidId64(modelId)).to.be.true;\r\n const sheetIndex = SheetIndex.insert(txn, modelId, \"TestSheetIndex\");\r\n expect(Id64.isValidId64(sheetIndex)).to.be.true;\r\n\r\n const sheetRefId = SheetReference.insert(txn, { sheetIndexModelId: modelId, parentId: sheetIndex, name: \"TestSheetRef\", priority: 1, sheetId });\r\n expect(Id64.isValidId64(sheetRefId)).to.be.true;\r\n\r\n const ref = iModel.elements.tryGetElement<SheetReference>(sheetRefId);\r\n expect(ref).to.not.be.undefined;\r\n\r\n const relationship = iModel.relationships.tryGetInstanceProps(SheetReferenceRefersToSheet.classFullName, { sourceId: sheetRefId, targetId: sheetId });\r\n expect(relationship).to.not.be.undefined;\r\n expect(relationship?.classFullName).equals(SheetReferenceRefersToSheet.classFullName);\r\n\r\n expect(ref?.sheet?.id).equals(sheetId);\r\n });\r\n });\r\n\r\n it(\"supports deprecated SheetReference.insert overload when implicit writes are allowed\", () => {\r\n const previousEnforcement = EditTxn.implicitWriteEnforcement;\r\n EditTxn.implicitWriteEnforcement = \"allow\";\r\n\r\n try {\r\n withEditTxn(iModel, (txn) => {\r\n const sheetId = insertSheet(txn, \"legacy-sheet\");\r\n const subjectId = iModel.elements.getRootSubject().id;\r\n const modelId = SheetIndexModel.insert(txn, subjectId, \"LegacySheetRefModel\");\r\n const sheetIndex = SheetIndex.insert(txn, modelId, \"LegacySheetIndex\");\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-deprecated\r\n const sheetRefId = SheetReference.insert({\r\n iModelDb: iModel,\r\n sheetIndexModelId: modelId,\r\n parentId: sheetIndex,\r\n name: \"LegacySheetRef\",\r\n priority: 1,\r\n sheetId,\r\n });\r\n\r\n expect(Id64.isValidId64(sheetRefId)).to.be.true;\r\n const ref = iModel.elements.tryGetElement<SheetReference>(sheetRefId);\r\n expect(ref?.sheet?.id).to.equal(sheetId);\r\n });\r\n } finally {\r\n EditTxn.implicitWriteEnforcement = previousEnforcement;\r\n }\r\n });\r\n\r\n it(\"rejects deprecated SheetReference.insert overload when implicit writes are disallowed\", () => {\r\n const previousEnforcement = EditTxn.implicitWriteEnforcement;\r\n EditTxn.implicitWriteEnforcement = \"throw\";\r\n\r\n try {\r\n withEditTxn(iModel, (txn) => {\r\n const sheetId = insertSheet(txn, \"legacy-throw-sheet\");\r\n const subjectId = iModel.elements.getRootSubject().id;\r\n const modelId = SheetIndexModel.insert(txn, subjectId, \"LegacyThrowSheetRefModel\");\r\n const sheetIndex = SheetIndex.insert(txn, modelId, \"LegacyThrowSheetIndex\");\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-deprecated\r\n expect(() => SheetReference.insert({\r\n iModelDb: iModel,\r\n sheetIndexModelId: modelId,\r\n parentId: sheetIndex,\r\n name: \"LegacyThrowSheetRef\",\r\n priority: 1,\r\n sheetId,\r\n })).to.throw().that.satisfies((error: unknown) => EditTxnError.isError(error, \"implicit-txn-write-disallowed\"));\r\n });\r\n } finally {\r\n EditTxn.implicitWriteEnforcement = previousEnforcement;\r\n }\r\n });\r\n\r\n it.skip(\"Should not insert with the same Sheet twice\", () => {\r\n withEditTxn(iModel, (txn) => {\r\n const sheetId = insertSheet(txn, \"sheet-1\");\r\n const subjectId = iModel.elements.getRootSubject().id;\r\n const modelId = SheetIndexModel.insert(txn, subjectId, \"TestSheetIndexModel\");\r\n expect(Id64.isValidId64(modelId)).to.be.true;\r\n const sheetIndex = SheetIndex.insert(txn, modelId, \"TestSheetIndex\");\r\n\r\n SheetReference.insert(txn, { sheetIndexModelId: modelId, parentId: sheetIndex, name: \"TestSheetRef-1\", priority: 1, sheetId });\r\n\r\n const sameIndex = () => SheetReference.insert(txn, { sheetIndexModelId: modelId, parentId: sheetIndex, name: \"TestSheetRef-2\", priority: 2, sheetId });\r\n\r\n expect(sameIndex).throws();\r\n });\r\n });\r\n });\r\n\r\n describe(\"SheetIndexReferences\", () => {\r\n it(\"Should not insert SheetIndexReferences with the same name\", () => {\r\n withEditTxn(iModel, (txn) => {\r\n const subjectId = iModel.elements.getRootSubject().id;\r\n const modelId = SheetIndexModel.insert(txn, subjectId, \"TestSheetIndexModel\");\r\n expect(Id64.isValidId64(modelId)).to.be.true;\r\n const sheetIndex = SheetIndex.insert(txn, modelId, \"TestSheetIndex\");\r\n expect(Id64.isValidId64(sheetIndex)).to.be.true;\r\n\r\n const sheetIndexRef = SheetIndexReference.insert(txn, { sheetIndexModelId: modelId, parentId: sheetIndex, name: \"TestSheetIndexRef\", priority: 1 });\r\n expect(Id64.isValidId64(sheetIndexRef)).to.be.true;\r\n\r\n const failInsert = () => SheetIndexReference.insert(txn, { sheetIndexModelId: modelId, parentId: sheetIndex, name: \"TestSheetIndexRef\", priority: 0 });\r\n\r\n expect(failInsert).throws();\r\n });\r\n });\r\n\r\n it(\"Should insert SheetIndexReferences without a SheetIndexRef\", () => {\r\n withEditTxn(iModel, (txn) => {\r\n const subjectId = iModel.elements.getRootSubject().id;\r\n const modelId = SheetIndexModel.insert(txn, subjectId, \"TestSheetIndexModel\");\r\n expect(Id64.isValidId64(modelId)).to.be.true;\r\n const sheetIndex1Id = SheetIndex.insert(txn, modelId, \"TestSheetIndex\");\r\n expect(Id64.isValidId64(sheetIndex1Id)).to.be.true;\r\n\r\n const sheetRef = SheetIndexReference.insert(txn, { sheetIndexModelId: modelId, parentId: sheetIndex1Id, name: \"TestSheetIndexRef\", priority: 1 });\r\n expect(Id64.isValidId64(sheetRef)).to.be.true;\r\n });\r\n });\r\n\r\n it(\"Should insert and with a SheetIndexRef\", () => {\r\n withEditTxn(iModel, (txn) => {\r\n const subjectId = iModel.elements.getRootSubject().id;\r\n const modelId = SheetIndexModel.insert(txn, subjectId, \"TestSheetIndexModel\");\r\n expect(Id64.isValidId64(modelId)).to.be.true;\r\n const sheetIndex1Id = SheetIndex.insert(txn, modelId, \"TestSheetIndex-1\");\r\n expect(Id64.isValidId64(sheetIndex1Id)).to.be.true;\r\n const sheetIndex2Id = SheetIndex.insert(txn, modelId, \"TestSheetIndex-2\");\r\n expect(Id64.isValidId64(sheetIndex1Id)).to.be.true;\r\n\r\n const sheetIndexRefId = SheetIndexReference.insert(txn, { sheetIndexModelId: modelId, parentId: sheetIndex1Id, name: \"TestSheetRef\", priority: 1, sheetIndexId: sheetIndex2Id });\r\n expect(Id64.isValidId64(sheetIndexRefId)).to.be.true;\r\n\r\n const ref = iModel.elements.tryGetElement<SheetIndexReference>(sheetIndexRefId);\r\n expect(ref).to.not.be.undefined;\r\n\r\n const relationship = iModel.relationships.tryGetInstanceProps(SheetIndexReferenceRefersToSheetIndex.classFullName, { sourceId: sheetIndexRefId, targetId: sheetIndex2Id });\r\n expect(relationship).to.not.be.undefined;\r\n expect(relationship?.classFullName).equals(SheetIndexReferenceRefersToSheetIndex.classFullName);\r\n\r\n expect(ref?.sheetIndex?.id).equals(sheetIndex2Id);\r\n });\r\n });\r\n });\r\n});\r\n\r\n\r\n\r\n\r\n"]}
|
|
@@ -3,15 +3,22 @@
|
|
|
3
3
|
* See LICENSE.md in the project root for license terms and full copyright notice.
|
|
4
4
|
*--------------------------------------------------------------------------------------------*/
|
|
5
5
|
import { DbConflictResolution, Guid } from "@itwin/core-bentley";
|
|
6
|
+
import { EditTxn } from "../../EditTxn";
|
|
6
7
|
import { IModel, SubCategoryAppearance } from "@itwin/core-common";
|
|
7
8
|
import * as chai from "chai";
|
|
8
9
|
import { assert } from "chai";
|
|
9
10
|
import * as chaiAsPromised from "chai-as-promised";
|
|
10
11
|
import { HubWrappers, KnownTestLocations } from "..";
|
|
11
|
-
import { ChannelControl,
|
|
12
|
+
import { ChannelControl, SpatialCategory, SqliteChangesetReader, } from "../../core-backend";
|
|
12
13
|
import { HubMock } from "../../internal/HubMock";
|
|
13
14
|
import { IModelTestUtils, TestUserType } from "../IModelTestUtils";
|
|
15
|
+
import { TestUtils } from "../TestUtils";
|
|
14
16
|
import { Point3d } from "@itwin/core-geometry";
|
|
17
|
+
function startTestTxn(briefcase) {
|
|
18
|
+
const txn = new EditTxn(briefcase, "change merge");
|
|
19
|
+
txn.start();
|
|
20
|
+
return txn;
|
|
21
|
+
}
|
|
15
22
|
chai.use(chaiAsPromised);
|
|
16
23
|
async function assertThrowsAsync(test, msg) {
|
|
17
24
|
try {
|
|
@@ -25,11 +32,12 @@ async function assertThrowsAsync(test, msg) {
|
|
|
25
32
|
}
|
|
26
33
|
throw new Error(`Failed to throw error with message: "${msg}"`);
|
|
27
34
|
}
|
|
28
|
-
async function updatePhysicalObject(
|
|
29
|
-
|
|
30
|
-
|
|
35
|
+
async function updatePhysicalObject(txn, el1, federationGuid) {
|
|
36
|
+
const briefcase = txn.iModel;
|
|
37
|
+
await briefcase.locks.acquireLocks({ exclusive: el1 });
|
|
38
|
+
const props = briefcase.elements.getElement(el1);
|
|
31
39
|
props.federationGuid = federationGuid;
|
|
32
|
-
|
|
40
|
+
txn.updateElement(props.toJSON());
|
|
33
41
|
}
|
|
34
42
|
describe("Change merge method", () => {
|
|
35
43
|
const ctx = {
|
|
@@ -53,17 +61,17 @@ describe("Change merge method", () => {
|
|
|
53
61
|
openB2: async (noLock) => { return ctx.openBriefcase("user2", noLock); },
|
|
54
62
|
openB3: async (noLock) => { return ctx.openBriefcase("user3", noLock); },
|
|
55
63
|
};
|
|
56
|
-
async function insertPhysicalObject(
|
|
57
|
-
|
|
58
|
-
|
|
64
|
+
async function insertPhysicalObject(txn) {
|
|
65
|
+
const briefcase = txn.iModel;
|
|
66
|
+
await briefcase.locks.acquireLocks({ shared: ctx.modelId });
|
|
67
|
+
return txn.insertElement(IModelTestUtils.createPhysicalObject(briefcase, ctx.modelId, ctx.spatialCategoryId).toJSON());
|
|
59
68
|
}
|
|
60
69
|
before(async () => {
|
|
61
|
-
await
|
|
70
|
+
await TestUtils.startBackend();
|
|
62
71
|
HubMock.startup("PullMergeMethod", KnownTestLocations.outputDir);
|
|
63
72
|
});
|
|
64
73
|
after(async () => {
|
|
65
74
|
HubMock.shutdown();
|
|
66
|
-
//await IModelHost.shutdown();
|
|
67
75
|
});
|
|
68
76
|
beforeEach(async () => {
|
|
69
77
|
ctx.iTwinId = HubMock.iTwinId;
|
|
@@ -73,12 +81,13 @@ describe("Change merge method", () => {
|
|
|
73
81
|
ctx.iModelId = await HubMock.createNewIModel({ accessToken: ctx.accessTokens.user1, iTwinId: ctx.iTwinId, iModelName: ctx.iModelName, description: ctx.rootSubject });
|
|
74
82
|
assert.isNotEmpty(ctx.iModelId);
|
|
75
83
|
const b1 = await ctx.openB1();
|
|
84
|
+
const b1Txn = startTestTxn(b1);
|
|
76
85
|
await b1.locks.acquireLocks({ shared: IModel.dictionaryId });
|
|
77
|
-
[, ctx.modelId] = IModelTestUtils.createAndInsertPhysicalPartitionAndModel(
|
|
86
|
+
[, ctx.modelId] = IModelTestUtils.createAndInsertPhysicalPartitionAndModel(b1Txn, IModelTestUtils.getUniqueModelCode(b1, "newPhysicalModel"), true);
|
|
78
87
|
const dictionary = b1.models.getModel(IModel.dictionaryId);
|
|
79
88
|
const newCategoryCode = IModelTestUtils.getUniqueSpatialCategoryCode(dictionary, "ThisTestSpatialCategory");
|
|
80
|
-
ctx.spatialCategoryId = SpatialCategory.insert(
|
|
81
|
-
|
|
89
|
+
ctx.spatialCategoryId = SpatialCategory.insert(b1Txn, dictionary.id, newCategoryCode.value, new SubCategoryAppearance({ color: 0xff0000 }));
|
|
90
|
+
b1Txn.saveChanges();
|
|
82
91
|
await b1.pushChanges({ description: "" });
|
|
83
92
|
b1.close();
|
|
84
93
|
});
|
|
@@ -89,6 +98,7 @@ describe("Change merge method", () => {
|
|
|
89
98
|
*/
|
|
90
99
|
const events = new Map();
|
|
91
100
|
const b1 = await ctx.openB1();
|
|
101
|
+
const b1Txn = startTestTxn(b1);
|
|
92
102
|
events.set(b1.briefcaseId, []);
|
|
93
103
|
b1.txns.rebaser.onRebaseTxnBegin.addListener((args) => {
|
|
94
104
|
events.get(b1.briefcaseId)?.push({ args, event: "onRebaseTxnBegin" });
|
|
@@ -97,6 +107,7 @@ describe("Change merge method", () => {
|
|
|
97
107
|
events.get(b1.briefcaseId)?.push({ args, event: "onRebaseTxnEnd" });
|
|
98
108
|
});
|
|
99
109
|
const b2 = await ctx.openB2();
|
|
110
|
+
const b2Txn = startTestTxn(b2);
|
|
100
111
|
events.set(b2.briefcaseId, []);
|
|
101
112
|
b2.txns.rebaser.onRebaseTxnBegin.addListener((args) => {
|
|
102
113
|
events.get(b2.briefcaseId)?.push({ args, event: "onRebaseTxnBegin" });
|
|
@@ -104,22 +115,22 @@ describe("Change merge method", () => {
|
|
|
104
115
|
b2.txns.rebaser.onRebaseTxnEnd.addListener((args) => {
|
|
105
116
|
events.get(b2.briefcaseId)?.push({ args, event: "onRebaseTxnEnd" });
|
|
106
117
|
});
|
|
107
|
-
const e1 = await insertPhysicalObject(
|
|
108
|
-
|
|
118
|
+
const e1 = await insertPhysicalObject(b1Txn);
|
|
119
|
+
b1Txn.saveChanges(`inserted physical object [id=${e1}]`);
|
|
109
120
|
events.set(b1.briefcaseId, []);
|
|
110
121
|
await b1.pushChanges({ description: `inserted physical object [id=${e1}]` });
|
|
111
122
|
assert.isDefined(b1.elements.getElement(e1));
|
|
112
123
|
assert.equal(events.get(b1.briefcaseId)?.length, 0);
|
|
113
|
-
const e2 = await insertPhysicalObject(
|
|
114
|
-
|
|
124
|
+
const e2 = await insertPhysicalObject(b1Txn);
|
|
125
|
+
b1Txn.saveChanges();
|
|
115
126
|
events.set(b1.briefcaseId, []);
|
|
116
127
|
await b1.pushChanges({ description: `inserted physical object [id=${e2}]` });
|
|
117
128
|
assert.equal(events.get(b1.briefcaseId)?.length, 0);
|
|
118
129
|
assert.isDefined(b1.elements.getElement(e2));
|
|
119
|
-
const e3 = await insertPhysicalObject(
|
|
120
|
-
|
|
121
|
-
const e4 = await insertPhysicalObject(
|
|
122
|
-
|
|
130
|
+
const e3 = await insertPhysicalObject(b2Txn);
|
|
131
|
+
b2Txn.saveChanges(`inserted physical object [id=${e3}]`);
|
|
132
|
+
const e4 = await insertPhysicalObject(b2Txn);
|
|
133
|
+
b2Txn.saveChanges(`inserted physical object [id=${e4}]`);
|
|
123
134
|
events.set(b2.briefcaseId, []);
|
|
124
135
|
// fast-forward has no effect its a deprecated flag
|
|
125
136
|
await b2.pushChanges({ description: `inserted physical object [id=${e3},${e4}]`, noFastForward: true });
|
|
@@ -136,10 +147,10 @@ describe("Change merge method", () => {
|
|
|
136
147
|
assert.isDefined(b2.elements.getElement(e2));
|
|
137
148
|
assert.isDefined(b2.elements.getElement(e3));
|
|
138
149
|
assert.isDefined(b2.elements.getElement(e4));
|
|
139
|
-
const e5 = await insertPhysicalObject(
|
|
140
|
-
|
|
141
|
-
const e6 = await insertPhysicalObject(
|
|
142
|
-
|
|
150
|
+
const e5 = await insertPhysicalObject(b1Txn);
|
|
151
|
+
b1Txn.saveChanges(`inserted physical object [id=${e5}]`);
|
|
152
|
+
const e6 = await insertPhysicalObject(b1Txn);
|
|
153
|
+
b1Txn.saveChanges(`inserted physical object [id=${e6}]`);
|
|
143
154
|
events.set(b1.briefcaseId, []);
|
|
144
155
|
await b1.pushChanges({ description: `inserted physical object [id=${e5}, ${e6}]` });
|
|
145
156
|
assert.equal(events.get(b1.briefcaseId)?.length, 4);
|
|
@@ -166,21 +177,21 @@ describe("Change merge method", () => {
|
|
|
166
177
|
assert.isDefined(b2.elements.getElement(e4));
|
|
167
178
|
assert.isDefined(b2.elements.getElement(e5));
|
|
168
179
|
assert.isDefined(b2.elements.getElement(e6));
|
|
169
|
-
await updatePhysicalObject(
|
|
170
|
-
|
|
171
|
-
await updatePhysicalObject(
|
|
172
|
-
|
|
180
|
+
await updatePhysicalObject(b1Txn, e3, Guid.createValue());
|
|
181
|
+
b1Txn.saveChanges(`update physical object [id=${e3}]`);
|
|
182
|
+
await updatePhysicalObject(b1Txn, e4, Guid.createValue());
|
|
183
|
+
b1Txn.saveChanges(`update physical object [id=${e4}]`);
|
|
173
184
|
events.set(b1.briefcaseId, []);
|
|
174
185
|
await b1.pushChanges({ description: `update physical object [id=${e3},${e4}]` });
|
|
175
186
|
assert.equal(events.get(b1.briefcaseId)?.length, 0);
|
|
176
|
-
await updatePhysicalObject(
|
|
177
|
-
|
|
178
|
-
await updatePhysicalObject(
|
|
179
|
-
|
|
180
|
-
await updatePhysicalObject(
|
|
181
|
-
|
|
182
|
-
await updatePhysicalObject(
|
|
183
|
-
|
|
187
|
+
await updatePhysicalObject(b2Txn, e1, Guid.createValue());
|
|
188
|
+
b2Txn.saveChanges(`update physical object [id=${e1}]`);
|
|
189
|
+
await updatePhysicalObject(b2Txn, e2, Guid.createValue());
|
|
190
|
+
b2Txn.saveChanges(`update physical object [id=${e2}]`);
|
|
191
|
+
await updatePhysicalObject(b2Txn, e5, Guid.createValue());
|
|
192
|
+
b2Txn.saveChanges(`update physical object [id=${e5}]`);
|
|
193
|
+
await updatePhysicalObject(b2Txn, e6, Guid.createValue());
|
|
194
|
+
b2Txn.saveChanges(`update physical object [id=${e6}]`);
|
|
184
195
|
events.set(b2.briefcaseId, []);
|
|
185
196
|
await b2.pushChanges({ description: `update physical object [id=${e1},${e2},${e5}]`, noFastForward: true });
|
|
186
197
|
assert.equal(events.get(b2.briefcaseId)?.length, 8);
|
|
@@ -218,6 +229,7 @@ describe("Change merge method", () => {
|
|
|
218
229
|
it("rebase events (noFastForward:false/default)", async () => {
|
|
219
230
|
const events = new Map();
|
|
220
231
|
const b1 = await ctx.openB1();
|
|
232
|
+
const b1Txn = startTestTxn(b1);
|
|
221
233
|
events.set(b1.briefcaseId, []);
|
|
222
234
|
b1.txns.rebaser.onRebaseTxnBegin.addListener((args) => {
|
|
223
235
|
events.get(b1.briefcaseId)?.push({ args, event: "onRebaseTxnBegin" });
|
|
@@ -226,6 +238,7 @@ describe("Change merge method", () => {
|
|
|
226
238
|
events.get(b1.briefcaseId)?.push({ args, event: "onRebaseTxnEnd" });
|
|
227
239
|
});
|
|
228
240
|
const b2 = await ctx.openB2();
|
|
241
|
+
const b2Txn = startTestTxn(b2);
|
|
229
242
|
events.set(b2.briefcaseId, []);
|
|
230
243
|
b2.txns.rebaser.onRebaseTxnBegin.addListener((args) => {
|
|
231
244
|
events.get(b2.briefcaseId)?.push({ args, event: "onRebaseTxnBegin" });
|
|
@@ -233,22 +246,22 @@ describe("Change merge method", () => {
|
|
|
233
246
|
b2.txns.rebaser.onRebaseTxnEnd.addListener((args) => {
|
|
234
247
|
events.get(b2.briefcaseId)?.push({ args, event: "onRebaseTxnEnd" });
|
|
235
248
|
});
|
|
236
|
-
const e1 = await insertPhysicalObject(
|
|
237
|
-
|
|
249
|
+
const e1 = await insertPhysicalObject(b1Txn);
|
|
250
|
+
b1Txn.saveChanges(`inserted physical object [id=${e1}]`);
|
|
238
251
|
events.set(b1.briefcaseId, []);
|
|
239
252
|
await b1.pushChanges({ description: `inserted physical object [id=${e1}]` });
|
|
240
253
|
assert.isDefined(b1.elements.getElement(e1));
|
|
241
254
|
assert.equal(events.get(b1.briefcaseId)?.length, 0);
|
|
242
|
-
const e2 = await insertPhysicalObject(
|
|
243
|
-
|
|
255
|
+
const e2 = await insertPhysicalObject(b1Txn);
|
|
256
|
+
b1Txn.saveChanges();
|
|
244
257
|
events.set(b1.briefcaseId, []);
|
|
245
258
|
await b1.pushChanges({ description: `inserted physical object [id=${e2}]` });
|
|
246
259
|
assert.equal(events.get(b1.briefcaseId)?.length, 0);
|
|
247
260
|
assert.isDefined(b1.elements.getElement(e2));
|
|
248
|
-
const e3 = await insertPhysicalObject(
|
|
249
|
-
|
|
250
|
-
const e4 = await insertPhysicalObject(
|
|
251
|
-
|
|
261
|
+
const e3 = await insertPhysicalObject(b2Txn);
|
|
262
|
+
b2Txn.saveChanges(`inserted physical object [id=${e3}]`);
|
|
263
|
+
const e4 = await insertPhysicalObject(b2Txn);
|
|
264
|
+
b2Txn.saveChanges(`inserted physical object [id=${e4}]`);
|
|
252
265
|
events.set(b2.briefcaseId, []);
|
|
253
266
|
// fast-forward
|
|
254
267
|
await b2.pushChanges({ description: `inserted physical object [id=${e3},${e4}]` });
|
|
@@ -257,10 +270,10 @@ describe("Change merge method", () => {
|
|
|
257
270
|
assert.isDefined(b2.elements.getElement(e2));
|
|
258
271
|
assert.isDefined(b2.elements.getElement(e3));
|
|
259
272
|
assert.isDefined(b2.elements.getElement(e4));
|
|
260
|
-
const e5 = await insertPhysicalObject(
|
|
261
|
-
|
|
262
|
-
const e6 = await insertPhysicalObject(
|
|
263
|
-
|
|
273
|
+
const e5 = await insertPhysicalObject(b1Txn);
|
|
274
|
+
b1Txn.saveChanges(`inserted physical object [id=${e5}]`);
|
|
275
|
+
const e6 = await insertPhysicalObject(b1Txn);
|
|
276
|
+
b1Txn.saveChanges(`inserted physical object [id=${e6}]`);
|
|
264
277
|
events.set(b1.briefcaseId, []);
|
|
265
278
|
await b1.pushChanges({ description: `inserted physical object [id=${e5}, ${e6}]` });
|
|
266
279
|
assert.equal(events.get(b1.briefcaseId)?.length, 4);
|
|
@@ -279,21 +292,21 @@ describe("Change merge method", () => {
|
|
|
279
292
|
assert.isDefined(b2.elements.getElement(e4));
|
|
280
293
|
assert.isDefined(b2.elements.getElement(e5));
|
|
281
294
|
assert.isDefined(b2.elements.getElement(e6));
|
|
282
|
-
await updatePhysicalObject(
|
|
283
|
-
|
|
284
|
-
await updatePhysicalObject(
|
|
285
|
-
|
|
295
|
+
await updatePhysicalObject(b1Txn, e3, Guid.createValue());
|
|
296
|
+
b1Txn.saveChanges(`update physical object [id=${e3}]`);
|
|
297
|
+
await updatePhysicalObject(b1Txn, e4, Guid.createValue());
|
|
298
|
+
b1Txn.saveChanges(`update physical object [id=${e4}]`);
|
|
286
299
|
events.set(b1.briefcaseId, []);
|
|
287
300
|
await b1.pushChanges({ description: `update physical object [id=${e3},${e4}]` });
|
|
288
301
|
assert.equal(events.get(b1.briefcaseId)?.length, 0);
|
|
289
|
-
await updatePhysicalObject(
|
|
290
|
-
|
|
291
|
-
await updatePhysicalObject(
|
|
292
|
-
|
|
293
|
-
await updatePhysicalObject(
|
|
294
|
-
|
|
295
|
-
await updatePhysicalObject(
|
|
296
|
-
|
|
302
|
+
await updatePhysicalObject(b2Txn, e1, Guid.createValue());
|
|
303
|
+
b2Txn.saveChanges(`update physical object [id=${e1}]`);
|
|
304
|
+
await updatePhysicalObject(b2Txn, e2, Guid.createValue());
|
|
305
|
+
b2Txn.saveChanges(`update physical object [id=${e2}]`);
|
|
306
|
+
await updatePhysicalObject(b2Txn, e5, Guid.createValue());
|
|
307
|
+
b2Txn.saveChanges(`update physical object [id=${e5}]`);
|
|
308
|
+
await updatePhysicalObject(b2Txn, e6, Guid.createValue());
|
|
309
|
+
b2Txn.saveChanges(`update physical object [id=${e6}]`);
|
|
297
310
|
events.set(b2.briefcaseId, []);
|
|
298
311
|
await b2.pushChanges({ description: `update physical object [id=${e1},${e2},${e5}]` });
|
|
299
312
|
assert.isDefined(b1.elements.getElement(e1).federationGuid);
|
|
@@ -313,17 +326,19 @@ describe("Change merge method", () => {
|
|
|
313
326
|
});
|
|
314
327
|
it("rebase with be_props (insert conflict)", async () => {
|
|
315
328
|
const b1 = await ctx.openB1();
|
|
329
|
+
const b1Txn = startTestTxn(b1);
|
|
316
330
|
const b2 = await ctx.openB2();
|
|
317
|
-
|
|
318
|
-
|
|
331
|
+
const b2Txn = startTestTxn(b2);
|
|
332
|
+
b1Txn.saveFileProperty({ namespace: "test", name: "test" }, "test1");
|
|
333
|
+
b1Txn.saveChanges("test");
|
|
319
334
|
await b1.pushChanges({ description: "test" });
|
|
320
|
-
|
|
321
|
-
|
|
335
|
+
b2Txn.saveFileProperty({ namespace: "test", name: "test" }, "test2");
|
|
336
|
+
b2Txn.saveChanges("test2");
|
|
322
337
|
await assertThrowsAsync(async () => b2.pushChanges({ description: "test2" }), "PRIMARY KEY insert conflict. Aborting rebase.");
|
|
323
338
|
assert.equal(b2.queryFilePropertyString({ namespace: "test", name: "test" }), "test1");
|
|
324
|
-
|
|
325
|
-
chai.expect(() =>
|
|
326
|
-
|
|
339
|
+
b2Txn.saveFileProperty({ namespace: "test", name: "test" }, "test3");
|
|
340
|
+
chai.expect(() => b2Txn.saveChanges("test1")).throws("Could not save changes (test1)");
|
|
341
|
+
b2Txn.abandonChanges();
|
|
327
342
|
// set handler to resolve conflict
|
|
328
343
|
b2.txns.rebaser.addConflictHandler({
|
|
329
344
|
id: "my", handler: (args) => {
|
|
@@ -336,7 +351,7 @@ describe("Change merge method", () => {
|
|
|
336
351
|
chai.expect(args.txn.type).to.be.equal("Data");
|
|
337
352
|
const localChangedVal = args.getValueText(5, "New");
|
|
338
353
|
const tipValue = b2.queryFilePropertyString({ namespace: "test", name: "test" });
|
|
339
|
-
|
|
354
|
+
b2Txn.saveFileProperty({ namespace: "test", name: "test" }, `${tipValue} + ${localChangedVal}`);
|
|
340
355
|
return DbConflictResolution.Skip; // skip incoming value and continue
|
|
341
356
|
}
|
|
342
357
|
}
|
|
@@ -368,15 +383,17 @@ describe("Change merge method", () => {
|
|
|
368
383
|
});
|
|
369
384
|
it("rebase with be_props (data conflict) ", async () => {
|
|
370
385
|
const b1 = await ctx.openB1();
|
|
386
|
+
const b1Txn = startTestTxn(b1);
|
|
371
387
|
const b2 = await ctx.openB2();
|
|
372
|
-
|
|
373
|
-
|
|
388
|
+
const b2Txn = startTestTxn(b2);
|
|
389
|
+
b1Txn.saveFileProperty({ namespace: "test", name: "test" }, "test1");
|
|
390
|
+
b1Txn.saveChanges("test");
|
|
374
391
|
await b1.pushChanges({ description: "test" });
|
|
375
392
|
await b2.pullChanges();
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
393
|
+
b2Txn.saveFileProperty({ namespace: "test", name: "test" }, "test2");
|
|
394
|
+
b2Txn.saveChanges("test2");
|
|
395
|
+
b1Txn.saveFileProperty({ namespace: "test", name: "test" }, "test3");
|
|
396
|
+
b1Txn.saveChanges("test");
|
|
380
397
|
await b1.pushChanges({ description: "test" });
|
|
381
398
|
// set handler to resolve conflict
|
|
382
399
|
b2.txns.rebaser.addConflictHandler({
|
|
@@ -386,7 +403,7 @@ describe("Change merge method", () => {
|
|
|
386
403
|
if (args.opcode === "Updated") {
|
|
387
404
|
const localChangedVal = args.getValueText(5, "New");
|
|
388
405
|
const tipValue = b2.queryFilePropertyString({ namespace: "test", name: "test" });
|
|
389
|
-
|
|
406
|
+
b2Txn.saveFileProperty({ namespace: "test", name: "test" }, `${tipValue} + ${localChangedVal}`);
|
|
390
407
|
return DbConflictResolution.Skip; // skip incomming value and continue
|
|
391
408
|
}
|
|
392
409
|
}
|
|
@@ -404,20 +421,22 @@ describe("Change merge method", () => {
|
|
|
404
421
|
});
|
|
405
422
|
it("should keep element deleted when local delete conflicts with remote update", async () => {
|
|
406
423
|
const b1 = await ctx.openB1(true /* = noLock */);
|
|
424
|
+
const b1Txn = startTestTxn(b1);
|
|
407
425
|
const b2 = await ctx.openB2(true /* = noLock */);
|
|
408
|
-
const
|
|
409
|
-
|
|
426
|
+
const b2Txn = startTestTxn(b2);
|
|
427
|
+
const e1 = await insertPhysicalObject(b1Txn);
|
|
428
|
+
b1Txn.saveChanges();
|
|
410
429
|
await b1.pushChanges({ description: `inserted physical object [id=${e1}]` });
|
|
411
430
|
await b2.pullChanges();
|
|
412
431
|
const eb1 = b1.elements.getElementProps(e1);
|
|
413
432
|
eb1.userLabel = "test1";
|
|
414
433
|
eb1.placement = { origin: { x: 1, y: 1, z: 1 }, angles: { yaw: 1, pitch: 1, roll: 1 } };
|
|
415
434
|
eb1.geom = IModelTestUtils.createBox(Point3d.create(3, 3, 3));
|
|
416
|
-
|
|
417
|
-
|
|
435
|
+
b1Txn.updateElement(eb1);
|
|
436
|
+
b1Txn.saveChanges();
|
|
418
437
|
await b1.pushChanges({ description: `update physical object [id=${e1}]` });
|
|
419
|
-
|
|
420
|
-
|
|
438
|
+
b2Txn.deleteElement(e1);
|
|
439
|
+
b2Txn.saveChanges();
|
|
421
440
|
await b2.pullChanges();
|
|
422
441
|
const eb2 = b2.elements.tryGetElementProps(e1);
|
|
423
442
|
// when placement is changed the element is not deleted after pullChanges();
|