@itwin/core-backend 5.9.0-dev.8 → 5.9.0-dev.9
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.d.ts +38 -0
- package/lib/cjs/BackendHubAccess.d.ts.map +1 -1
- 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.map +1 -1
- package/lib/cjs/CatalogDb.js.map +1 -1
- 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.js +248 -248
- package/lib/cjs/ChangesetECAdaptor.js.map +1 -1
- package/lib/cjs/ChannelControl.js.map +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.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.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.js.map +1 -1
- package/lib/cjs/Element.js.map +1 -1
- package/lib/cjs/ElementAspect.js.map +1 -1
- package/lib/cjs/ElementGraphics.js.map +1 -1
- 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.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.js +9 -9
- 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.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.d.ts.map +1 -1
- package/lib/cjs/IpcHost.js +13 -4
- package/lib/cjs/IpcHost.js.map +1 -1
- 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.d.ts +85 -1
- package/lib/cjs/LockControl.d.ts.map +1 -1
- package/lib/cjs/LockControl.js.map +1 -1
- package/lib/cjs/Material.js.map +1 -1
- 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.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.map +1 -1
- package/lib/cjs/SchemaUtils.js.map +1 -1
- 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.map +1 -1
- package/lib/cjs/Texture.js.map +1 -1
- package/lib/cjs/TileStorage.js.map +1 -1
- package/lib/cjs/TxnManager.d.ts +100 -4
- package/lib/cjs/TxnManager.d.ts.map +1 -1
- package/lib/cjs/TxnManager.js +171 -8
- package/lib/cjs/TxnManager.js.map +1 -1
- 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.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.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.js.map +1 -1
- package/lib/cjs/domains/FunctionalElements.js.map +1 -1
- package/lib/cjs/domains/FunctionalSchema.js.map +1 -1
- 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.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.d.ts +2 -0
- package/lib/cjs/internal/HubMock.d.ts.map +1 -1
- package/lib/cjs/internal/HubMock.js +7 -0
- 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.d.ts.map +1 -1
- package/lib/cjs/internal/NoLocks.js +6 -0
- package/lib/cjs/internal/NoLocks.js.map +1 -1
- package/lib/cjs/internal/OnlineStatus.js.map +1 -1
- package/lib/cjs/internal/ServerBasedLocks.d.ts +12 -0
- package/lib/cjs/internal/ServerBasedLocks.d.ts.map +1 -1
- package/lib/cjs/internal/ServerBasedLocks.js +285 -4
- package/lib/cjs/internal/ServerBasedLocks.js.map +1 -1
- package/lib/cjs/internal/Symbols.js.map +1 -1
- 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.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.d.ts +38 -0
- package/lib/esm/BackendHubAccess.d.ts.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.map +1 -1
- package/lib/esm/CatalogDb.js.map +1 -1
- 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.js +248 -248
- package/lib/esm/ChangesetECAdaptor.js.map +1 -1
- package/lib/esm/ChannelControl.js.map +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.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.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.js.map +1 -1
- package/lib/esm/Element.js.map +1 -1
- package/lib/esm/ElementAspect.js.map +1 -1
- package/lib/esm/ElementGraphics.js.map +1 -1
- 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.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.js +9 -9
- 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.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.d.ts.map +1 -1
- package/lib/esm/IpcHost.js +13 -4
- package/lib/esm/IpcHost.js.map +1 -1
- 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.d.ts +85 -1
- package/lib/esm/LockControl.d.ts.map +1 -1
- package/lib/esm/LockControl.js.map +1 -1
- package/lib/esm/Material.js.map +1 -1
- 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.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.map +1 -1
- package/lib/esm/SchemaUtils.js.map +1 -1
- 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.map +1 -1
- package/lib/esm/Texture.js.map +1 -1
- package/lib/esm/TileStorage.js.map +1 -1
- package/lib/esm/TxnManager.d.ts +100 -4
- package/lib/esm/TxnManager.d.ts.map +1 -1
- package/lib/esm/TxnManager.js +171 -8
- package/lib/esm/TxnManager.js.map +1 -1
- 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.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.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.js.map +1 -1
- package/lib/esm/domains/FunctionalElements.js.map +1 -1
- package/lib/esm/domains/FunctionalSchema.js.map +1 -1
- 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.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.d.ts +2 -0
- package/lib/esm/internal/HubMock.d.ts.map +1 -1
- package/lib/esm/internal/HubMock.js +7 -0
- 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.d.ts.map +1 -1
- package/lib/esm/internal/NoLocks.js +6 -0
- package/lib/esm/internal/NoLocks.js.map +1 -1
- package/lib/esm/internal/OnlineStatus.js.map +1 -1
- package/lib/esm/internal/ServerBasedLocks.d.ts +12 -0
- package/lib/esm/internal/ServerBasedLocks.d.ts.map +1 -1
- package/lib/esm/internal/ServerBasedLocks.js +286 -5
- package/lib/esm/internal/ServerBasedLocks.js.map +1 -1
- package/lib/esm/internal/Symbols.js.map +1 -1
- 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.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.js +23 -23
- 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.map +1 -1
- 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.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 +129 -129
- package/lib/esm/test/SquashSchemaAndDataChanges.test.js.map +1 -1
- package/lib/esm/test/TestChangeSetUtility.js.map +1 -1
- package/lib/esm/test/TestEditTxn.js.map +1 -1
- package/lib/esm/test/TestUtils.js.map +1 -1
- package/lib/esm/test/annotations/Fields.test.js +53 -53
- 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.map +1 -1
- 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.map +1 -1
- 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 +65 -65
- package/lib/esm/test/ecdb/ECSqlAst.test.js.map +1 -1
- package/lib/esm/test/ecdb/ECSqlQuery.test.js +4 -4
- package/lib/esm/test/ecdb/ECSqlQuery.test.js.map +1 -1
- package/lib/esm/test/ecdb/ECSqlStatement.test.js +332 -332
- 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 +31 -31
- package/lib/esm/test/ecdb/QueryReaders.test.js.map +1 -1
- package/lib/esm/test/ecdb/SqliteStatement.test.js.map +1 -1
- 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.map +1 -1
- package/lib/esm/test/element/ElementAspect.test.js +22 -22
- package/lib/esm/test/element/ElementAspect.test.js.map +1 -1
- package/lib/esm/test/element/ElementDependencyGraph.test.js.map +1 -1
- package/lib/esm/test/element/ElementRoundTrip.test.js +139 -139
- package/lib/esm/test/element/ElementRoundTrip.test.js.map +1 -1
- package/lib/esm/test/element/ExcludedElements.test.js.map +1 -1
- package/lib/esm/test/element/ExternalSource.test.js.map +1 -1
- package/lib/esm/test/element/NullStructArray.test.js +13 -13
- package/lib/esm/test/element/NullStructArray.test.js.map +1 -1
- package/lib/esm/test/element/ProjectInformationRecord.test.js.map +1 -1
- package/lib/esm/test/element/SheetInformationAspect.test.js.map +1 -1
- 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.map +1 -1
- package/lib/esm/test/hubaccess/ApplyChangeset.test.js +32 -32
- package/lib/esm/test/hubaccess/ApplyChangeset.test.js.map +1 -1
- 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 +56 -56
- package/lib/esm/test/hubaccess/Rebase.test.js.map +1 -1
- package/lib/esm/test/hubaccess/SemanticRebase.test.js +145 -145
- 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.map +1 -1
- 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 +44 -44
- package/lib/esm/test/imodel/IModel.test.js.map +1 -1
- 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.js.map +1 -1
- 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 +99 -99
- package/lib/esm/test/schema/ClassRegistry.test.js.map +1 -1
- package/lib/esm/test/schema/FunctionalDomain.test.js.map +1 -1
- package/lib/esm/test/schema/GenericDomain.test.js.map +1 -1
- package/lib/esm/test/schema/IModelSchemaContext.test.js +9 -9
- package/lib/esm/test/schema/IModelSchemaContext.test.js.map +1 -1
- package/lib/esm/test/schema/SchemaImportCallbacks.test.js +19 -19
- package/lib/esm/test/schema/SchemaImportCallbacks.test.js.map +1 -1
- package/lib/esm/test/sheetindex/SheetIndex.test.js.map +1 -1
- package/lib/esm/test/standalone/ChangeMerge.test.js.map +1 -1
- package/lib/esm/test/standalone/ChangesetReader.test.js +135 -135
- 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.map +1 -1
- package/lib/esm/test/standalone/Drawing.test.js.map +1 -1
- package/lib/esm/test/standalone/EditTxn.test.js.map +1 -1
- package/lib/esm/test/standalone/ElementGraphics.test.js.map +1 -1
- package/lib/esm/test/standalone/ElementMesh.test.js.map +1 -1
- package/lib/esm/test/standalone/ExportGraphics.test.js +14 -14
- package/lib/esm/test/standalone/ExportGraphics.test.js.map +1 -1
- package/lib/esm/test/standalone/GeometryChangeEvents.test.js.map +1 -1
- package/lib/esm/test/standalone/GeometryStream.test.js.map +1 -1
- package/lib/esm/test/standalone/HubMock.test.js.map +1 -1
- package/lib/esm/test/standalone/IModelLimits.test.js.map +1 -1
- package/lib/esm/test/standalone/IModelWrite.test.js +27 -27
- 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.map +1 -1
- package/lib/esm/test/standalone/IntegrityCheck.test.js.map +1 -1
- 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.map +1 -1
- 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.map +1 -1
- package/lib/esm/test/standalone/ServerBasedLocks.test.js +907 -3
- 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.map +1 -1
- package/lib/esm/test/standalone/SettingsSchemas.test.js.map +1 -1
- package/lib/esm/test/standalone/SnapshotDb.test.js.map +1 -1
- package/lib/esm/test/standalone/StandaloneDb.test.js +20 -20
- package/lib/esm/test/standalone/StandaloneDb.test.js.map +1 -1
- package/lib/esm/test/standalone/Texture.test.js.map +1 -1
- package/lib/esm/test/standalone/TileCache.test.js.map +1 -1
- package/lib/esm/test/standalone/TileTree.test.js.map +1 -1
- package/lib/esm/test/standalone/TxnManager.test.js.map +1 -1
- 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.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 +12 -12
|
@@ -1 +1 @@
|
|
|
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"]}
|
|
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, EditTxnError, RelatedElement, SheetProps } from \"@itwin/core-common\";\nimport { EditTxn, withEditTxn } from \"../../EditTxn\";\n\nimport { 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\nconst getOrCreateDocumentList = (txn: EditTxn): Id64String => {\n const documentListName = \"SheetList\";\n const ids = txn.iModel.queryEntityIds({ from: DocumentPartition.classFullName, where: `CodeValue = '${documentListName}'` });\n if (ids.size === 1)\n return ids.values().next().value!;\n\n const subjectId = txn.iModel.elements.getRootSubject().id;\n return DocumentListModel.insert(txn, subjectId, documentListName);\n};\n\nconst insertSheet = (txn: EditTxn, sheetName: string): Id64String => {\n const modelId = getOrCreateDocumentList(txn);\n const sheetElementProps: SheetProps = {\n height: 42,\n width: 42,\n scale: 42,\n classFullName: Sheet.classFullName,\n code: Sheet.createCode(txn.iModel, modelId, sheetName),\n model: modelId,\n };\n const sheetElementId = txn.insertElement(sheetElementProps);\n return txn.insertModel({\n classFullName: SheetModel.classFullName,\n modeledElement: { id: sheetElementId, relClassName: \"BisCore:ModelModelsElement\" } as RelatedElement,\n });\n};\n\nconst insertCodeSpec = (txn: EditTxn) => {\n const indexSpec = CodeSpec.create(txn.iModel, BisCodeSpec.sheetIndex, CodeScopeSpec.Type.Model);\n txn.iModel.codeSpecs.insert(txn, indexSpec);\n\n const entrySpec = CodeSpec.create(txn.iModel, BisCodeSpec.sheetIndexEntry, CodeScopeSpec.Type.ParentElement);\n txn.iModel.codeSpecs.insert(txn, 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 withEditTxn(iModel, (txn) => insertCodeSpec(txn));\n });\n\n afterEach(() => {\n iModel.close();\n });\n\n it(\"SheetIndexModel Should insert\", () => {\n withEditTxn(iModel, (txn) => {\n const subjectId = iModel.elements.getRootSubject().id;\n const modelId = SheetIndexModel.insert(txn, subjectId, \"testSheetIndex\");\n expect(Id64.isValidId64(modelId)).to.be.true;\n });\n });\n\n it(\"SheetIndex Should insert\", () => {\n withEditTxn(iModel, (txn) => {\n const subjectId = iModel.elements.getRootSubject().id;\n const modelId = SheetIndexModel.insert(txn, subjectId, \"TestSheetIndexModel\");\n expect(Id64.isValidId64(modelId)).to.be.true;\n\n const sheetIndex = SheetIndex.insert(txn, modelId, \"TestSheetIndex\");\n expect(Id64.isValidId64(sheetIndex)).to.be.true;\n });\n });\n\n describe(\"Update\", () => {\n it(\"Priority\", () => {\n withEditTxn(iModel, (txn) => {\n const subjectId = iModel.elements.getRootSubject().id;\n const modelId = SheetIndexModel.insert(txn, subjectId, \"TestSheetIndexModel\");\n expect(Id64.isValidId64(modelId)).to.be.true;\n\n const sheetIndex1Id = SheetIndex.insert(txn, modelId, \"TestSheetIndex\");\n expect(Id64.isValidId64(sheetIndex1Id)).to.be.true;\n\n const folderId = SheetIndexFolder.insert(txn, { 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(txn);\n\n const folderPostUpdate = iModel.elements.tryGetElement<SheetIndexFolder>(folderId);\n expect(folderPostUpdate?.entryPriority).equals(0);\n });\n });\n\n it(\"Parent\", () => {\n withEditTxn(iModel, (txn) => {\n const subjectId = iModel.elements.getRootSubject().id;\n const modelId = SheetIndexModel.insert(txn, subjectId, \"TestSheetIndexModel\");\n expect(Id64.isValidId64(modelId)).to.be.true;\n\n const sheetIndex1Id = SheetIndex.insert(txn, modelId, \"TestSheetIndex-1\");\n expect(Id64.isValidId64(sheetIndex1Id)).to.be.true;\n\n const sheetIndex2Id = SheetIndex.insert(txn, modelId, \"TestSheetIndex-2\");\n expect(Id64.isValidId64(sheetIndex2Id)).to.be.true;\n\n const folderId = SheetIndexFolder.insert(txn, { 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(txn);\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\n it(\"Sheet Reference\", () => {\n withEditTxn(iModel, (txn) => {\n const sheet1Id = insertSheet(txn, \"sheet-1\");\n const sheet2Id = insertSheet(txn, \"sheet-2\");\n const subjectId = iModel.elements.getRootSubject().id;\n const modelId = SheetIndexModel.insert(txn, subjectId, \"TestSheetIndexModel\");\n expect(Id64.isValidId64(modelId)).to.be.true;\n\n const sheetIndexId = SheetIndex.insert(txn, modelId, \"TestSheetIndex\");\n expect(Id64.isValidId64(sheetIndexId)).to.be.true;\n\n const sheetRefId = SheetReference.insert(txn, { 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(txn);\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(txn);\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\n it(\"Sheet Index Reference\", () => {\n withEditTxn(iModel, (txn) => {\n const subjectId = iModel.elements.getRootSubject().id;\n const modelId = SheetIndexModel.insert(txn, subjectId, \"TestSheetIndexModel\");\n expect(Id64.isValidId64(modelId)).to.be.true;\n\n const sheetIndex1Id = SheetIndex.insert(txn, modelId, \"TestSheetIndex-1\");\n expect(Id64.isValidId64(sheetIndex1Id)).to.be.true;\n\n const sheetIndex2Id = SheetIndex.insert(txn, modelId, \"TestSheetIndex-2\");\n expect(Id64.isValidId64(sheetIndex2Id)).to.be.true;\n const sheetIndex3Id = SheetIndex.insert(txn, modelId, \"TestSheetIndex-3\");\n expect(Id64.isValidId64(sheetIndex3Id)).to.be.true;\n\n const sheetIndexRefId = SheetIndexReference.insert(txn, { 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(txn);\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(txn);\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\n describe(\"SheetIndexFolder\", () => {\n it(\"Should insert\", () => {\n withEditTxn(iModel, (txn) => {\n const subjectId = iModel.elements.getRootSubject().id;\n const modelId = SheetIndexModel.insert(txn, subjectId, \"TestSheetIndexModel\");\n expect(Id64.isValidId64(modelId)).to.be.true;\n const sheetIndexId = SheetIndex.insert(txn, modelId, \"TestSheetIndex\");\n expect(Id64.isValidId64(sheetIndexId)).to.be.true;\n\n const folderId = SheetIndexFolder.insert(txn, { 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\n it(\"Should not insert SheetIndexFolder with the same name\", () => {\n withEditTxn(iModel, (txn) => {\n const subjectId = iModel.elements.getRootSubject().id;\n const modelId = SheetIndexModel.insert(txn, subjectId, \"TestSheetIndexModel\");\n expect(Id64.isValidId64(modelId)).to.be.true;\n const sheetIndex = SheetIndex.insert(txn, modelId, \"TestSheetIndex\");\n expect(Id64.isValidId64(sheetIndex)).to.be.true;\n\n const folder = SheetIndexFolder.insert(txn, { sheetIndexModelId: modelId, parentId: sheetIndex, name: \"TestFolder\", priority: 1 });\n expect(Id64.isValidId64(folder)).to.be.true;\n\n const failInsert = () => SheetIndexFolder.insert(txn, { sheetIndexModelId: modelId, parentId: sheetIndex, name: \"TestFolder\", priority: 0 });\n\n expect(failInsert).throws();\n });\n });\n\n it(\"Should have children\", () => {\n withEditTxn(iModel, (txn) => {\n const subjectId = iModel.elements.getRootSubject().id;\n const modelId = SheetIndexModel.insert(txn, subjectId, \"TestSheetIndexModel\");\n expect(Id64.isValidId64(modelId)).to.be.true;\n const sheetIndexId = SheetIndex.insert(txn, modelId, \"TestSheetIndex\");\n expect(Id64.isValidId64(sheetIndexId)).to.be.true;\n\n const folder1Id = SheetIndexFolder.insert(txn, { sheetIndexModelId: modelId, parentId: sheetIndexId, name: \"TestFolder-1\", priority: 1 });\n expect(Id64.isValidId64(folder1Id)).to.be.true;\n\n const folder2Id = SheetIndexFolder.insert(txn, { 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\n describe(\"SheetReferences\", () => {\n it(\"Should not insert SheetReferences with the same name\", () => {\n withEditTxn(iModel, (txn) => {\n const subjectId = iModel.elements.getRootSubject().id;\n const modelId = SheetIndexModel.insert(txn, subjectId, \"TestSheetIndexModel\");\n expect(Id64.isValidId64(modelId)).to.be.true;\n const sheetIndex = SheetIndex.insert(txn, modelId, \"TestSheetIndex\");\n expect(Id64.isValidId64(sheetIndex)).to.be.true;\n\n const sheetRef1 = SheetReference.insert(txn, { sheetIndexModelId: modelId, parentId: sheetIndex, name: \"TestSheetRef\", priority: 1 });\n expect(Id64.isValidId64(sheetRef1)).to.be.true;\n\n const failInsert = () => SheetReference.insert(txn, { sheetIndexModelId: modelId, parentId: sheetIndex, name: \"TestSheetRef\", priority: 0 });\n\n expect(failInsert).throws();\n });\n });\n\n it(\"Should insert SheetReferences without a Sheet\", () => {\n withEditTxn(iModel, (txn) => {\n const subjectId = iModel.elements.getRootSubject().id;\n const modelId = SheetIndexModel.insert(txn, subjectId, \"TestSheetIndexModel\");\n expect(Id64.isValidId64(modelId)).to.be.true;\n const sheetIndex = SheetIndex.insert(txn, modelId, \"TestSheetIndex\");\n expect(Id64.isValidId64(sheetIndex)).to.be.true;\n\n const sheetRef = SheetReference.insert(txn, { sheetIndexModelId: modelId, parentId: sheetIndex, name: \"TestSheetRef\", priority: 1 });\n expect(Id64.isValidId64(sheetRef)).to.be.true;\n });\n });\n\n it(\"Should insert and with a Sheet\", () => {\n withEditTxn(iModel, (txn) => {\n const sheetId = insertSheet(txn, \"sheet-1\");\n const subjectId = iModel.elements.getRootSubject().id;\n const modelId = SheetIndexModel.insert(txn, subjectId, \"TestSheetIndexModel\");\n expect(Id64.isValidId64(modelId)).to.be.true;\n const sheetIndex = SheetIndex.insert(txn, modelId, \"TestSheetIndex\");\n expect(Id64.isValidId64(sheetIndex)).to.be.true;\n\n const sheetRefId = SheetReference.insert(txn, { 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\n it(\"supports deprecated SheetReference.insert overload when implicit writes are allowed\", () => {\n const previousEnforcement = EditTxn.implicitWriteEnforcement;\n EditTxn.implicitWriteEnforcement = \"allow\";\n\n try {\n withEditTxn(iModel, (txn) => {\n const sheetId = insertSheet(txn, \"legacy-sheet\");\n const subjectId = iModel.elements.getRootSubject().id;\n const modelId = SheetIndexModel.insert(txn, subjectId, \"LegacySheetRefModel\");\n const sheetIndex = SheetIndex.insert(txn, modelId, \"LegacySheetIndex\");\n\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n const sheetRefId = SheetReference.insert({\n iModelDb: iModel,\n sheetIndexModelId: modelId,\n parentId: sheetIndex,\n name: \"LegacySheetRef\",\n priority: 1,\n sheetId,\n });\n\n expect(Id64.isValidId64(sheetRefId)).to.be.true;\n const ref = iModel.elements.tryGetElement<SheetReference>(sheetRefId);\n expect(ref?.sheet?.id).to.equal(sheetId);\n });\n } finally {\n EditTxn.implicitWriteEnforcement = previousEnforcement;\n }\n });\n\n it(\"rejects deprecated SheetReference.insert overload when implicit writes are disallowed\", () => {\n const previousEnforcement = EditTxn.implicitWriteEnforcement;\n EditTxn.implicitWriteEnforcement = \"throw\";\n\n try {\n withEditTxn(iModel, (txn) => {\n const sheetId = insertSheet(txn, \"legacy-throw-sheet\");\n const subjectId = iModel.elements.getRootSubject().id;\n const modelId = SheetIndexModel.insert(txn, subjectId, \"LegacyThrowSheetRefModel\");\n const sheetIndex = SheetIndex.insert(txn, modelId, \"LegacyThrowSheetIndex\");\n\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n expect(() => SheetReference.insert({\n iModelDb: iModel,\n sheetIndexModelId: modelId,\n parentId: sheetIndex,\n name: \"LegacyThrowSheetRef\",\n priority: 1,\n sheetId,\n })).to.throw().that.satisfies((error: unknown) => EditTxnError.isError(error, \"implicit-txn-write-disallowed\"));\n });\n } finally {\n EditTxn.implicitWriteEnforcement = previousEnforcement;\n }\n });\n\n it.skip(\"Should not insert with the same Sheet twice\", () => {\n withEditTxn(iModel, (txn) => {\n const sheetId = insertSheet(txn, \"sheet-1\");\n const subjectId = iModel.elements.getRootSubject().id;\n const modelId = SheetIndexModel.insert(txn, subjectId, \"TestSheetIndexModel\");\n expect(Id64.isValidId64(modelId)).to.be.true;\n const sheetIndex = SheetIndex.insert(txn, modelId, \"TestSheetIndex\");\n\n SheetReference.insert(txn, { sheetIndexModelId: modelId, parentId: sheetIndex, name: \"TestSheetRef-1\", priority: 1, sheetId });\n\n const sameIndex = () => SheetReference.insert(txn, { sheetIndexModelId: modelId, parentId: sheetIndex, name: \"TestSheetRef-2\", priority: 2, sheetId });\n\n expect(sameIndex).throws();\n });\n });\n });\n\n describe(\"SheetIndexReferences\", () => {\n it(\"Should not insert SheetIndexReferences with the same name\", () => {\n withEditTxn(iModel, (txn) => {\n const subjectId = iModel.elements.getRootSubject().id;\n const modelId = SheetIndexModel.insert(txn, subjectId, \"TestSheetIndexModel\");\n expect(Id64.isValidId64(modelId)).to.be.true;\n const sheetIndex = SheetIndex.insert(txn, modelId, \"TestSheetIndex\");\n expect(Id64.isValidId64(sheetIndex)).to.be.true;\n\n const sheetIndexRef = SheetIndexReference.insert(txn, { sheetIndexModelId: modelId, parentId: sheetIndex, name: \"TestSheetIndexRef\", priority: 1 });\n expect(Id64.isValidId64(sheetIndexRef)).to.be.true;\n\n const failInsert = () => SheetIndexReference.insert(txn, { sheetIndexModelId: modelId, parentId: sheetIndex, name: \"TestSheetIndexRef\", priority: 0 });\n\n expect(failInsert).throws();\n });\n });\n\n it(\"Should insert SheetIndexReferences without a SheetIndexRef\", () => {\n withEditTxn(iModel, (txn) => {\n const subjectId = iModel.elements.getRootSubject().id;\n const modelId = SheetIndexModel.insert(txn, subjectId, \"TestSheetIndexModel\");\n expect(Id64.isValidId64(modelId)).to.be.true;\n const sheetIndex1Id = SheetIndex.insert(txn, modelId, \"TestSheetIndex\");\n expect(Id64.isValidId64(sheetIndex1Id)).to.be.true;\n\n const sheetRef = SheetIndexReference.insert(txn, { sheetIndexModelId: modelId, parentId: sheetIndex1Id, name: \"TestSheetIndexRef\", priority: 1 });\n expect(Id64.isValidId64(sheetRef)).to.be.true;\n });\n });\n\n it(\"Should insert and with a SheetIndexRef\", () => {\n withEditTxn(iModel, (txn) => {\n const subjectId = iModel.elements.getRootSubject().id;\n const modelId = SheetIndexModel.insert(txn, subjectId, \"TestSheetIndexModel\");\n expect(Id64.isValidId64(modelId)).to.be.true;\n const sheetIndex1Id = SheetIndex.insert(txn, modelId, \"TestSheetIndex-1\");\n expect(Id64.isValidId64(sheetIndex1Id)).to.be.true;\n const sheetIndex2Id = SheetIndex.insert(txn, modelId, \"TestSheetIndex-2\");\n expect(Id64.isValidId64(sheetIndex1Id)).to.be.true;\n\n const sheetIndexRefId = SheetIndexReference.insert(txn, { 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});\n\n\n\n\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChangeMerge.test.js","sourceRoot":"","sources":["../../../../src/test/standalone/ChangeMerge.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 { DbConflictResolution, Guid } from \"@itwin/core-bentley\";\r\nimport { EditTxn } from \"../../EditTxn\";\r\nimport {\r\n IModel,\r\n PhysicalElementProps,\r\n SubCategoryAppearance,\r\n TxnProps\r\n} from \"@itwin/core-common\";\r\nimport * as chai from \"chai\";\r\nimport { assert } from \"chai\";\r\nimport * as chaiAsPromised from \"chai-as-promised\";\r\nimport { HubWrappers, KnownTestLocations } from \"..\";\r\nimport {\r\n BriefcaseDb,\r\n ChannelControl,\r\n DictionaryModel,\r\n SpatialCategory,\r\n SqliteChangesetReader,\r\n} from \"../../core-backend\";\r\nimport { HubMock } from \"../../internal/HubMock\";\r\nimport { RebaseChangesetConflictArgs } from \"../../internal/ChangesetConflictArgs\";\r\nimport { IModelTestUtils, TestUserType } from \"../IModelTestUtils\";\r\nimport { TestUtils } from \"../TestUtils\";\r\nimport { Point3d } from \"@itwin/core-geometry\";\r\n\r\nfunction startTestTxn(briefcase: BriefcaseDb): EditTxn {\r\n const txn = new EditTxn(briefcase, \"change merge\");\r\n txn.start();\r\n return txn;\r\n}\r\n\r\nchai.use(chaiAsPromised);\r\n\r\nasync function assertThrowsAsync<T>(test: () => Promise<T>, msg?: string) {\r\n try {\r\n await test();\r\n } catch (e) {\r\n if (e instanceof Error && msg) {\r\n assert.equal(e.message, msg);\r\n }\r\n return;\r\n }\r\n throw new Error(`Failed to throw error with message: \"${msg}\"`);\r\n}\r\n\r\nasync function updatePhysicalObject(txn: EditTxn, el1: string, federationGuid: string) {\r\n const briefcase = txn.iModel as BriefcaseDb;\r\n await briefcase.locks.acquireLocks({ exclusive: el1 });\r\n const props = briefcase.elements.getElement(el1);\r\n props.federationGuid = federationGuid;\r\n txn.updateElement(props.toJSON());\r\n}\r\n\r\ndescribe(\"Change merge method\", () => {\r\n const ctx = {\r\n accessTokens: {\r\n user1: \"\",\r\n user2: \"\",\r\n user3: \"\",\r\n },\r\n iModelId: \"\",\r\n iTwinId: \"\",\r\n modelId: \"\",\r\n spatialCategoryId: \"\",\r\n iModelName: \"TestIModel\",\r\n rootSubject: \"TestSubject\",\r\n openBriefcase: async (user: \"user1\" | \"user2\" | \"user3\", noLock?: true) => {\r\n const b = await HubWrappers.downloadAndOpenBriefcase({ accessToken: ctx.accessTokens[user], iTwinId: ctx.iTwinId, iModelId: ctx.iModelId, noLock });\r\n b.channels.addAllowedChannel(ChannelControl.sharedChannelName);\r\n return b;\r\n },\r\n openB1: async (noLock?: true) => { return ctx.openBriefcase(\"user1\", noLock); },\r\n openB2: async (noLock?: true) => { return ctx.openBriefcase(\"user2\", noLock); },\r\n openB3: async (noLock?: true) => { return ctx.openBriefcase(\"user3\", noLock); },\r\n }\r\n\r\n async function insertPhysicalObject(txn: EditTxn) {\r\n const briefcase = txn.iModel as BriefcaseDb;\r\n await briefcase.locks.acquireLocks({ shared: ctx.modelId });\r\n return txn.insertElement(IModelTestUtils.createPhysicalObject(briefcase, ctx.modelId, ctx.spatialCategoryId).toJSON());\r\n }\r\n\r\n before(async () => {\r\n await TestUtils.startBackend();\r\n HubMock.startup(\"PullMergeMethod\", KnownTestLocations.outputDir);\r\n });\r\n\r\n after(async () => {\r\n HubMock.shutdown()\r\n });\r\n\r\n beforeEach(async () => {\r\n ctx.iTwinId = HubMock.iTwinId;\r\n ctx.accessTokens.user1 = await HubWrappers.getAccessToken(TestUserType.SuperManager);\r\n ctx.accessTokens.user2 = await HubWrappers.getAccessToken(TestUserType.Regular);\r\n ctx.accessTokens.user3 = await HubWrappers.getAccessToken(TestUserType.Super);\r\n ctx.iModelId = await HubMock.createNewIModel({ accessToken: ctx.accessTokens.user1, iTwinId: ctx.iTwinId, iModelName: ctx.iModelName, description: ctx.rootSubject });\r\n assert.isNotEmpty(ctx.iModelId);\r\n const b1 = await ctx.openB1();\r\n const b1Txn = startTestTxn(b1);\r\n await b1.locks.acquireLocks({ shared: IModel.dictionaryId });\r\n [, ctx.modelId] = IModelTestUtils.createAndInsertPhysicalPartitionAndModel(\r\n b1Txn,\r\n IModelTestUtils.getUniqueModelCode(b1, \"newPhysicalModel\"),\r\n true);\r\n const dictionary: DictionaryModel = b1.models.getModel<DictionaryModel>(IModel.dictionaryId);\r\n const newCategoryCode = IModelTestUtils.getUniqueSpatialCategoryCode(dictionary, \"ThisTestSpatialCategory\");\r\n ctx.spatialCategoryId = SpatialCategory.insert(\r\n b1Txn,\r\n dictionary.id,\r\n newCategoryCode.value,\r\n new SubCategoryAppearance({ color: 0xff0000 }),\r\n );\r\n b1Txn.saveChanges();\r\n await b1.pushChanges({ description: \"\" });\r\n b1.close();\r\n });\r\n\r\n it(\"rebase events (noFastForward:true)\", async () => {\r\n /**\r\n * Fastforward will not trigger rebase events as rebase was not required to merge changes.\r\n * In this test we will test rebase events when noFastForward is set to true. Which mean rebase is required to merge changes.\r\n */\r\n const events = new Map<number, { args: TxnProps, event: \"onRebaseTxnBegin\" | \"onRebaseTxnEnd\" }[]>();\r\n\r\n const b1 = await ctx.openB1();\r\n const b1Txn = startTestTxn(b1);\r\n events.set(b1.briefcaseId, []);\r\n b1.txns.rebaser.onRebaseTxnBegin.addListener((args) => {\r\n\r\n events.get(b1.briefcaseId)?.push({ args, event: \"onRebaseTxnBegin\" });\r\n });\r\n b1.txns.rebaser.onRebaseTxnEnd.addListener((args) => {\r\n events.get(b1.briefcaseId)?.push({ args, event: \"onRebaseTxnEnd\" });\r\n });\r\n\r\n const b2 = await ctx.openB2();\r\n const b2Txn = startTestTxn(b2);\r\n events.set(b2.briefcaseId, []);\r\n b2.txns.rebaser.onRebaseTxnBegin.addListener((args) => {\r\n events.get(b2.briefcaseId)?.push({ args, event: \"onRebaseTxnBegin\" });\r\n });\r\n b2.txns.rebaser.onRebaseTxnEnd.addListener((args) => {\r\n events.get(b2.briefcaseId)?.push({ args, event: \"onRebaseTxnEnd\" });\r\n });\r\n\r\n\r\n const e1 = await insertPhysicalObject(b1Txn);\r\n b1Txn.saveChanges(`inserted physical object [id=${e1}]`);\r\n events.set(b1.briefcaseId, []);\r\n await b1.pushChanges({ description: `inserted physical object [id=${e1}]` });\r\n assert.isDefined(b1.elements.getElement(e1));\r\n assert.equal(events.get(b1.briefcaseId)?.length, 0);\r\n\r\n const e2 = await insertPhysicalObject(b1Txn);\r\n b1Txn.saveChanges();\r\n events.set(b1.briefcaseId, []);\r\n await b1.pushChanges({ description: `inserted physical object [id=${e2}]` });\r\n assert.equal(events.get(b1.briefcaseId)?.length, 0);\r\n\r\n assert.isDefined(b1.elements.getElement(e2));\r\n\r\n const e3 = await insertPhysicalObject(b2Txn);\r\n b2Txn.saveChanges(`inserted physical object [id=${e3}]`);\r\n const e4 = await insertPhysicalObject(b2Txn);\r\n b2Txn.saveChanges(`inserted physical object [id=${e4}]`);\r\n\r\n events.set(b2.briefcaseId, []);\r\n // fast-forward has no effect its a deprecated flag\r\n await b2.pushChanges({ description: `inserted physical object [id=${e3},${e4}]`, noFastForward: true });\r\n assert.equal(events.get(b2.briefcaseId)?.length, 4);\r\n assert.equal(events.get(b2.briefcaseId)?.[0].event, \"onRebaseTxnBegin\");\r\n assert.equal(events.get(b2.briefcaseId)?.[0].args.id, \"0x100000000\");\r\n assert.equal(events.get(b2.briefcaseId)?.[0].args.props?.description, \"inserted physical object [id=0x40000000001]\");\r\n assert.equal(events.get(b2.briefcaseId)?.[0].args.type, \"Data\");\r\n\r\n assert.equal(events.get(b2.briefcaseId)?.[3].event, \"onRebaseTxnEnd\");\r\n assert.equal(events.get(b2.briefcaseId)?.[3].args.id, \"0x100000001\");\r\n assert.equal(events.get(b2.briefcaseId)?.[3].args.props?.description, \"inserted physical object [id=0x40000000002]\");\r\n assert.equal(events.get(b2.briefcaseId)?.[3].args.type, \"Data\");\r\n\r\n\r\n assert.isDefined(b2.elements.getElement(e1));\r\n assert.isDefined(b2.elements.getElement(e2));\r\n assert.isDefined(b2.elements.getElement(e3));\r\n assert.isDefined(b2.elements.getElement(e4));\r\n\r\n const e5 = await insertPhysicalObject(b1Txn);\r\n b1Txn.saveChanges(`inserted physical object [id=${e5}]`);\r\n const e6 = await insertPhysicalObject(b1Txn);\r\n b1Txn.saveChanges(`inserted physical object [id=${e6}]`);\r\n events.set(b1.briefcaseId, []);\r\n await b1.pushChanges({ description: `inserted physical object [id=${e5}, ${e6}]` });\r\n assert.equal(events.get(b1.briefcaseId)?.length, 4);\r\n assert.equal(events.get(b1.briefcaseId)?.[0].event, \"onRebaseTxnBegin\");\r\n assert.equal(events.get(b1.briefcaseId)?.[0].args.id, \"0x100000000\");\r\n assert.equal(events.get(b1.briefcaseId)?.[0].args.props?.description, \"inserted physical object [id=0x30000000003]\");\r\n assert.equal(events.get(b1.briefcaseId)?.[0].args.type, \"Data\");\r\n\r\n assert.equal(events.get(b1.briefcaseId)?.[3].event, \"onRebaseTxnEnd\");\r\n assert.equal(events.get(b1.briefcaseId)?.[3].args.id, \"0x100000001\");\r\n assert.equal(events.get(b1.briefcaseId)?.[3].args.props?.description, \"inserted physical object [id=0x30000000004]\");\r\n assert.equal(events.get(b1.briefcaseId)?.[3].args.type, \"Data\");\r\n\r\n\r\n assert.isDefined(b1.elements.getElement(e1));\r\n assert.isDefined(b1.elements.getElement(e2));\r\n assert.isDefined(b1.elements.getElement(e3)); // Not found\r\n assert.isDefined(b1.elements.getElement(e4));\r\n assert.isDefined(b1.elements.getElement(e5));\r\n assert.isDefined(b1.elements.getElement(e6));\r\n\r\n events.set(b2.briefcaseId, []);\r\n await b2.pullChanges();\r\n assert.equal(events.get(b2.briefcaseId)?.length, 0);\r\n assert.isDefined(b2.elements.getElement(e1));\r\n assert.isDefined(b2.elements.getElement(e2));\r\n assert.isDefined(b2.elements.getElement(e3));\r\n assert.isDefined(b2.elements.getElement(e4));\r\n assert.isDefined(b2.elements.getElement(e5));\r\n assert.isDefined(b2.elements.getElement(e6));\r\n\r\n await updatePhysicalObject(b1Txn, e3, Guid.createValue());\r\n b1Txn.saveChanges(`update physical object [id=${e3}]`);\r\n await updatePhysicalObject(b1Txn, e4, Guid.createValue());\r\n b1Txn.saveChanges(`update physical object [id=${e4}]`);\r\n events.set(b1.briefcaseId, []);\r\n await b1.pushChanges({ description: `update physical object [id=${e3},${e4}]` });\r\n assert.equal(events.get(b1.briefcaseId)?.length, 0);\r\n\r\n await updatePhysicalObject(b2Txn, e1, Guid.createValue());\r\n b2Txn.saveChanges(`update physical object [id=${e1}]`);\r\n await updatePhysicalObject(b2Txn, e2, Guid.createValue());\r\n b2Txn.saveChanges(`update physical object [id=${e2}]`);\r\n await updatePhysicalObject(b2Txn, e5, Guid.createValue());\r\n b2Txn.saveChanges(`update physical object [id=${e5}]`);\r\n await updatePhysicalObject(b2Txn, e6, Guid.createValue());\r\n b2Txn.saveChanges(`update physical object [id=${e6}]`);\r\n events.set(b2.briefcaseId, []);\r\n await b2.pushChanges({ description: `update physical object [id=${e1},${e2},${e5}]`, noFastForward: true });\r\n assert.equal(events.get(b2.briefcaseId)?.length, 8);\r\n assert.equal(events.get(b2.briefcaseId)?.[0].event, \"onRebaseTxnBegin\");\r\n assert.equal(events.get(b2.briefcaseId)?.[0].args.id, \"0x100000000\");\r\n assert.equal(events.get(b2.briefcaseId)?.[0].args.props?.description, \"update physical object [id=0x30000000001]\");\r\n assert.equal(events.get(b2.briefcaseId)?.[0].args.type, \"Data\");\r\n\r\n assert.equal(events.get(b2.briefcaseId)?.[2].event, \"onRebaseTxnBegin\");\r\n assert.equal(events.get(b2.briefcaseId)?.[2].args.id, \"0x100000001\");\r\n assert.equal(events.get(b2.briefcaseId)?.[2].args.props?.description, \"update physical object [id=0x30000000002]\");\r\n assert.equal(events.get(b2.briefcaseId)?.[2].args.type, \"Data\");\r\n\r\n assert.equal(events.get(b2.briefcaseId)?.[4].event, \"onRebaseTxnBegin\");\r\n assert.equal(events.get(b2.briefcaseId)?.[4].args.id, \"0x100000002\");\r\n assert.equal(events.get(b2.briefcaseId)?.[4].args.props?.description, \"update physical object [id=0x30000000003]\");\r\n assert.equal(events.get(b2.briefcaseId)?.[4].args.type, \"Data\");\r\n\r\n assert.equal(events.get(b2.briefcaseId)?.[6].event, \"onRebaseTxnBegin\");\r\n assert.equal(events.get(b2.briefcaseId)?.[6].args.id, \"0x100000003\");\r\n assert.equal(events.get(b2.briefcaseId)?.[6].args.props?.description, \"update physical object [id=0x30000000004]\");\r\n assert.equal(events.get(b2.briefcaseId)?.[6].args.type, \"Data\");\r\n\r\n assert.isDefined(b1.elements.getElement(e1).federationGuid);\r\n assert.isDefined(b1.elements.getElement(e2).federationGuid);\r\n assert.isDefined(b1.elements.getElement(e3).federationGuid);\r\n assert.isDefined(b1.elements.getElement(e4).federationGuid);\r\n assert.isDefined(b1.elements.getElement(e5).federationGuid);\r\n assert.isDefined(b1.elements.getElement(e6).federationGuid);\r\n\r\n assert.isDefined(b2.elements.getElement(e1).federationGuid);\r\n assert.isDefined(b2.elements.getElement(e2).federationGuid);\r\n assert.isDefined(b2.elements.getElement(e3).federationGuid);\r\n assert.isDefined(b2.elements.getElement(e4).federationGuid);\r\n assert.isDefined(b2.elements.getElement(e5).federationGuid);\r\n assert.isDefined(b2.elements.getElement(e6).federationGuid);\r\n\r\n b1.close();\r\n b2.close();\r\n });\r\n it(\"rebase events (noFastForward:false/default)\", async () => {\r\n const events = new Map<number, { args: TxnProps, event: \"onRebaseTxnBegin\" | \"onRebaseTxnEnd\" }[]>();\r\n\r\n const b1 = await ctx.openB1();\r\n const b1Txn = startTestTxn(b1);\r\n events.set(b1.briefcaseId, []);\r\n b1.txns.rebaser.onRebaseTxnBegin.addListener((args) => {\r\n\r\n events.get(b1.briefcaseId)?.push({ args, event: \"onRebaseTxnBegin\" });\r\n });\r\n b1.txns.rebaser.onRebaseTxnEnd.addListener((args) => {\r\n events.get(b1.briefcaseId)?.push({ args, event: \"onRebaseTxnEnd\" });\r\n });\r\n\r\n const b2 = await ctx.openB2();\r\n const b2Txn = startTestTxn(b2);\r\n events.set(b2.briefcaseId, []);\r\n b2.txns.rebaser.onRebaseTxnBegin.addListener((args) => {\r\n events.get(b2.briefcaseId)?.push({ args, event: \"onRebaseTxnBegin\" });\r\n });\r\n b2.txns.rebaser.onRebaseTxnEnd.addListener((args) => {\r\n events.get(b2.briefcaseId)?.push({ args, event: \"onRebaseTxnEnd\" });\r\n });\r\n\r\n\r\n const e1 = await insertPhysicalObject(b1Txn);\r\n b1Txn.saveChanges(`inserted physical object [id=${e1}]`);\r\n events.set(b1.briefcaseId, []);\r\n await b1.pushChanges({ description: `inserted physical object [id=${e1}]` });\r\n assert.isDefined(b1.elements.getElement(e1));\r\n assert.equal(events.get(b1.briefcaseId)?.length, 0);\r\n\r\n const e2 = await insertPhysicalObject(b1Txn);\r\n b1Txn.saveChanges();\r\n events.set(b1.briefcaseId, []);\r\n await b1.pushChanges({ description: `inserted physical object [id=${e2}]` });\r\n assert.equal(events.get(b1.briefcaseId)?.length, 0);\r\n\r\n assert.isDefined(b1.elements.getElement(e2));\r\n\r\n const e3 = await insertPhysicalObject(b2Txn);\r\n b2Txn.saveChanges(`inserted physical object [id=${e3}]`);\r\n const e4 = await insertPhysicalObject(b2Txn);\r\n b2Txn.saveChanges(`inserted physical object [id=${e4}]`);\r\n\r\n events.set(b2.briefcaseId, []);\r\n // fast-forward\r\n await b2.pushChanges({ description: `inserted physical object [id=${e3},${e4}]` });\r\n assert.equal(events.get(b2.briefcaseId)?.length, 4);\r\n\r\n assert.isDefined(b2.elements.getElement(e1));\r\n assert.isDefined(b2.elements.getElement(e2));\r\n assert.isDefined(b2.elements.getElement(e3));\r\n assert.isDefined(b2.elements.getElement(e4));\r\n\r\n const e5 = await insertPhysicalObject(b1Txn);\r\n b1Txn.saveChanges(`inserted physical object [id=${e5}]`);\r\n const e6 = await insertPhysicalObject(b1Txn);\r\n b1Txn.saveChanges(`inserted physical object [id=${e6}]`);\r\n events.set(b1.briefcaseId, []);\r\n await b1.pushChanges({ description: `inserted physical object [id=${e5}, ${e6}]` });\r\n assert.equal(events.get(b1.briefcaseId)?.length, 4);\r\n\r\n assert.isDefined(b1.elements.getElement(e1));\r\n assert.isDefined(b1.elements.getElement(e2));\r\n assert.isDefined(b1.elements.getElement(e3)); // Not found\r\n assert.isDefined(b1.elements.getElement(e4));\r\n assert.isDefined(b1.elements.getElement(e5));\r\n assert.isDefined(b1.elements.getElement(e6));\r\n\r\n events.set(b2.briefcaseId, []);\r\n await b2.pullChanges();\r\n assert.equal(events.get(b2.briefcaseId)?.length, 0);\r\n assert.isDefined(b2.elements.getElement(e1));\r\n assert.isDefined(b2.elements.getElement(e2));\r\n assert.isDefined(b2.elements.getElement(e3));\r\n assert.isDefined(b2.elements.getElement(e4));\r\n assert.isDefined(b2.elements.getElement(e5));\r\n assert.isDefined(b2.elements.getElement(e6));\r\n\r\n await updatePhysicalObject(b1Txn, e3, Guid.createValue());\r\n b1Txn.saveChanges(`update physical object [id=${e3}]`);\r\n await updatePhysicalObject(b1Txn, e4, Guid.createValue());\r\n b1Txn.saveChanges(`update physical object [id=${e4}]`);\r\n events.set(b1.briefcaseId, []);\r\n await b1.pushChanges({ description: `update physical object [id=${e3},${e4}]` });\r\n assert.equal(events.get(b1.briefcaseId)?.length, 0);\r\n\r\n await updatePhysicalObject(b2Txn, e1, Guid.createValue());\r\n b2Txn.saveChanges(`update physical object [id=${e1}]`);\r\n await updatePhysicalObject(b2Txn, e2, Guid.createValue());\r\n b2Txn.saveChanges(`update physical object [id=${e2}]`);\r\n await updatePhysicalObject(b2Txn, e5, Guid.createValue());\r\n b2Txn.saveChanges(`update physical object [id=${e5}]`);\r\n await updatePhysicalObject(b2Txn, e6, Guid.createValue());\r\n b2Txn.saveChanges(`update physical object [id=${e6}]`);\r\n events.set(b2.briefcaseId, []);\r\n await b2.pushChanges({ description: `update physical object [id=${e1},${e2},${e5}]` });\r\n\r\n assert.isDefined(b1.elements.getElement(e1).federationGuid);\r\n assert.isDefined(b1.elements.getElement(e2).federationGuid);\r\n assert.isDefined(b1.elements.getElement(e3).federationGuid);\r\n assert.isDefined(b1.elements.getElement(e4).federationGuid);\r\n assert.isDefined(b1.elements.getElement(e5).federationGuid);\r\n assert.isDefined(b1.elements.getElement(e6).federationGuid);\r\n\r\n assert.isDefined(b2.elements.getElement(e1).federationGuid);\r\n assert.isDefined(b2.elements.getElement(e2).federationGuid);\r\n assert.isDefined(b2.elements.getElement(e3).federationGuid);\r\n assert.isDefined(b2.elements.getElement(e4).federationGuid);\r\n assert.isDefined(b2.elements.getElement(e5).federationGuid);\r\n assert.isDefined(b2.elements.getElement(e6).federationGuid);\r\n\r\n b1.close();\r\n b2.close();\r\n });\r\n it(\"rebase with be_props (insert conflict)\", async () => {\r\n const b1 = await ctx.openB1();\r\n const b1Txn = startTestTxn(b1);\r\n const b2 = await ctx.openB2();\r\n const b2Txn = startTestTxn(b2);\r\n\r\n b1Txn.saveFileProperty({ namespace: \"test\", name: \"test\" }, \"test1\");\r\n b1Txn.saveChanges(\"test\");\r\n await b1.pushChanges({ description: \"test\" });\r\n\r\n b2Txn.saveFileProperty({ namespace: \"test\", name: \"test\" }, \"test2\");\r\n b2Txn.saveChanges(\"test2\");\r\n\r\n await assertThrowsAsync(\r\n async () => b2.pushChanges({ description: \"test2\" }),\r\n \"PRIMARY KEY insert conflict. Aborting rebase.\");\r\n\r\n assert.equal(b2.queryFilePropertyString({ namespace: \"test\", name: \"test\" }), \"test1\");\r\n\r\n b2Txn.saveFileProperty({ namespace: \"test\", name: \"test\" }, \"test3\");\r\n\r\n chai.expect(() => b2Txn.saveChanges(\"test1\")).throws(\"Could not save changes (test1)\");\r\n b2Txn.abandonChanges();\r\n\r\n // set handler to resolve conflict\r\n b2.txns.rebaser.addConflictHandler({\r\n id: \"my\", handler: (args: RebaseChangesetConflictArgs) => {\r\n if (args.cause === \"Conflict\") {\r\n if (args.tableName === \"be_Prop\") {\r\n if (args.opcode === \"Inserted\") {\r\n chai.expect(args.getColumnNames()).to.be.deep.equal([\"Namespace\", \"Name\", \"Id\", \"SubId\", \"TxnMode\", \"StrData\", \"RawSize\", \"Data\"]);\r\n chai.expect(args.txn.id).to.be.equal(\"0x100000000\");\r\n chai.expect(args.txn.descr).to.be.equal(\"test2\");\r\n chai.expect(args.txn.type).to.be.equal(\"Data\");\r\n const localChangedVal = args.getValueText(5, \"New\");\r\n const tipValue = b2.queryFilePropertyString({ namespace: \"test\", name: \"test\" });\r\n b2Txn.saveFileProperty({ namespace: \"test\", name: \"test\" }, `${tipValue} + ${localChangedVal}`);\r\n return DbConflictResolution.Skip; // skip incoming value and continue\r\n }\r\n }\r\n }\r\n return undefined;\r\n }\r\n });\r\n\r\n // resume rebase see if it resolve the conflict\r\n await b2.txns.rebaser.resume();\r\n\r\n // use changeset api to read txn directly\r\n const reader = SqliteChangesetReader.openTxn({ db: b2, txnId: \"0x100000000\" });\r\n chai.expect(reader.step()).to.be.true;\r\n chai.expect(reader.tableName).to.be.equal(\"be_Prop\");\r\n chai.expect(reader.getColumnNames(reader.tableName)[5]).to.be.equal(\"StrData\");\r\n // note the operation changed from insert to update\r\n chai.expect(reader.op).to.be.equal(\"Updated\");\r\n // note this old value is from master branch after changeset was recomputed\r\n chai.expect(reader.getChangeValueText(5, \"Old\")).to.be.equal(\"test1\");\r\n // note this new value is from local branch after merger.\r\n chai.expect(reader.getChangeValueText(5, \"New\")).to.be.equal(\"test1 + test2\");\r\n reader.close();\r\n\r\n assert.equal(b2.queryFilePropertyString({ namespace: \"test\", name: \"test\" }), \"test1 + test2\");\r\n\r\n\r\n\r\n await b2.pushChanges({ description: \"test2\" });\r\n await b1.pullChanges();\r\n assert.equal(b2.queryFilePropertyString({ namespace: \"test\", name: \"test\" }), \"test1 + test2\");\r\n assert.equal(b1.queryFilePropertyString({ namespace: \"test\", name: \"test\" }), \"test1 + test2\");\r\n\r\n b1.close();\r\n b2.close();\r\n });\r\n\r\n it(\"rebase with be_props (data conflict) \", async () => {\r\n const b1 = await ctx.openB1();\r\n const b1Txn = startTestTxn(b1);\r\n const b2 = await ctx.openB2();\r\n const b2Txn = startTestTxn(b2);\r\n\r\n b1Txn.saveFileProperty({ namespace: \"test\", name: \"test\" }, \"test1\");\r\n b1Txn.saveChanges(\"test\");\r\n await b1.pushChanges({ description: \"test\" });\r\n\r\n await b2.pullChanges();\r\n b2Txn.saveFileProperty({ namespace: \"test\", name: \"test\" }, \"test2\");\r\n b2Txn.saveChanges(\"test2\");\r\n\r\n b1Txn.saveFileProperty({ namespace: \"test\", name: \"test\" }, \"test3\");\r\n b1Txn.saveChanges(\"test\");\r\n await b1.pushChanges({ description: \"test\" });\r\n\r\n // set handler to resolve conflict\r\n b2.txns.rebaser.addConflictHandler({\r\n id: \"my\", handler: (args: RebaseChangesetConflictArgs) => {\r\n if (args.cause === \"Data\") {\r\n if (args.tableName === \"be_Prop\") {\r\n if (args.opcode === \"Updated\") {\r\n const localChangedVal = args.getValueText(5, \"New\");\r\n const tipValue = b2.queryFilePropertyString({ namespace: \"test\", name: \"test\" });\r\n b2Txn.saveFileProperty({ namespace: \"test\", name: \"test\" }, `${tipValue} + ${localChangedVal}`);\r\n return DbConflictResolution.Skip; // skip incomming value and continue\r\n }\r\n }\r\n }\r\n return undefined;\r\n }\r\n });\r\n\r\n await b2.pushChanges({ description: \"test\" });\r\n await b2.pullChanges();\r\n await b1.pullChanges();\r\n assert.equal(b2.queryFilePropertyString({ namespace: \"test\", name: \"test\" }), \"test3 + test2\");\r\n assert.equal(b1.queryFilePropertyString({ namespace: \"test\", name: \"test\" }), \"test3 + test2\");\r\n\r\n b1.close();\r\n b2.close();\r\n });\r\n it(\"should keep element deleted when local delete conflicts with remote update\", async () => {\r\n const b1 = await ctx.openB1(true /* = noLock */);\r\n const b1Txn = startTestTxn(b1);\r\n const b2 = await ctx.openB2(true /* = noLock */);\r\n const b2Txn = startTestTxn(b2);\r\n\r\n const e1 = await insertPhysicalObject(b1Txn);\r\n b1Txn.saveChanges();\r\n await b1.pushChanges({ description: `inserted physical object [id=${e1}]` });\r\n await b2.pullChanges();\r\n\r\n const eb1 = b1.elements.getElementProps<PhysicalElementProps>(e1);\r\n eb1.userLabel = \"test1\";\r\n eb1.placement = { origin: { x: 1, y: 1, z: 1 }, angles: { yaw: 1, pitch: 1, roll: 1 } };\r\n eb1.geom = IModelTestUtils.createBox(Point3d.create(3, 3, 3));\r\n\r\n b1Txn.updateElement(eb1);\r\n b1Txn.saveChanges();\r\n await b1.pushChanges({ description: `update physical object [id=${e1}]` });\r\n\r\n b2Txn.deleteElement(e1);\r\n b2Txn.saveChanges();\r\n await b2.pullChanges();\r\n\r\n const eb2 = b2.elements.tryGetElementProps<PhysicalElementProps>(e1);\r\n\r\n // when placement is changed the element is not deleted after pullChanges();\r\n assert.isUndefined(eb2);\r\n\r\n b1.close();\r\n b2.close();\r\n });\r\n});\r\n"]}
|
|
1
|
+
{"version":3,"file":"ChangeMerge.test.js","sourceRoot":"","sources":["../../../../src/test/standalone/ChangeMerge.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 { DbConflictResolution, Guid } from \"@itwin/core-bentley\";\nimport { EditTxn } from \"../../EditTxn\";\nimport {\n IModel,\n PhysicalElementProps,\n SubCategoryAppearance,\n TxnProps\n} from \"@itwin/core-common\";\nimport * as chai from \"chai\";\nimport { assert } from \"chai\";\nimport * as chaiAsPromised from \"chai-as-promised\";\nimport { HubWrappers, KnownTestLocations } from \"..\";\nimport {\n BriefcaseDb,\n ChannelControl,\n DictionaryModel,\n SpatialCategory,\n SqliteChangesetReader,\n} from \"../../core-backend\";\nimport { HubMock } from \"../../internal/HubMock\";\nimport { RebaseChangesetConflictArgs } from \"../../internal/ChangesetConflictArgs\";\nimport { IModelTestUtils, TestUserType } from \"../IModelTestUtils\";\nimport { TestUtils } from \"../TestUtils\";\nimport { Point3d } from \"@itwin/core-geometry\";\n\nfunction startTestTxn(briefcase: BriefcaseDb): EditTxn {\n const txn = new EditTxn(briefcase, \"change merge\");\n txn.start();\n return txn;\n}\n\nchai.use(chaiAsPromised);\n\nasync function assertThrowsAsync<T>(test: () => Promise<T>, msg?: string) {\n try {\n await test();\n } catch (e) {\n if (e instanceof Error && msg) {\n assert.equal(e.message, msg);\n }\n return;\n }\n throw new Error(`Failed to throw error with message: \"${msg}\"`);\n}\n\nasync function updatePhysicalObject(txn: EditTxn, el1: string, federationGuid: string) {\n const briefcase = txn.iModel as BriefcaseDb;\n await briefcase.locks.acquireLocks({ exclusive: el1 });\n const props = briefcase.elements.getElement(el1);\n props.federationGuid = federationGuid;\n txn.updateElement(props.toJSON());\n}\n\ndescribe(\"Change merge method\", () => {\n const ctx = {\n accessTokens: {\n user1: \"\",\n user2: \"\",\n user3: \"\",\n },\n iModelId: \"\",\n iTwinId: \"\",\n modelId: \"\",\n spatialCategoryId: \"\",\n iModelName: \"TestIModel\",\n rootSubject: \"TestSubject\",\n openBriefcase: async (user: \"user1\" | \"user2\" | \"user3\", noLock?: true) => {\n const b = await HubWrappers.downloadAndOpenBriefcase({ accessToken: ctx.accessTokens[user], iTwinId: ctx.iTwinId, iModelId: ctx.iModelId, noLock });\n b.channels.addAllowedChannel(ChannelControl.sharedChannelName);\n return b;\n },\n openB1: async (noLock?: true) => { return ctx.openBriefcase(\"user1\", noLock); },\n openB2: async (noLock?: true) => { return ctx.openBriefcase(\"user2\", noLock); },\n openB3: async (noLock?: true) => { return ctx.openBriefcase(\"user3\", noLock); },\n }\n\n async function insertPhysicalObject(txn: EditTxn) {\n const briefcase = txn.iModel as BriefcaseDb;\n await briefcase.locks.acquireLocks({ shared: ctx.modelId });\n return txn.insertElement(IModelTestUtils.createPhysicalObject(briefcase, ctx.modelId, ctx.spatialCategoryId).toJSON());\n }\n\n before(async () => {\n await TestUtils.startBackend();\n HubMock.startup(\"PullMergeMethod\", KnownTestLocations.outputDir);\n });\n\n after(async () => {\n HubMock.shutdown()\n });\n\n beforeEach(async () => {\n ctx.iTwinId = HubMock.iTwinId;\n ctx.accessTokens.user1 = await HubWrappers.getAccessToken(TestUserType.SuperManager);\n ctx.accessTokens.user2 = await HubWrappers.getAccessToken(TestUserType.Regular);\n ctx.accessTokens.user3 = await HubWrappers.getAccessToken(TestUserType.Super);\n ctx.iModelId = await HubMock.createNewIModel({ accessToken: ctx.accessTokens.user1, iTwinId: ctx.iTwinId, iModelName: ctx.iModelName, description: ctx.rootSubject });\n assert.isNotEmpty(ctx.iModelId);\n const b1 = await ctx.openB1();\n const b1Txn = startTestTxn(b1);\n await b1.locks.acquireLocks({ shared: IModel.dictionaryId });\n [, ctx.modelId] = IModelTestUtils.createAndInsertPhysicalPartitionAndModel(\n b1Txn,\n IModelTestUtils.getUniqueModelCode(b1, \"newPhysicalModel\"),\n true);\n const dictionary: DictionaryModel = b1.models.getModel<DictionaryModel>(IModel.dictionaryId);\n const newCategoryCode = IModelTestUtils.getUniqueSpatialCategoryCode(dictionary, \"ThisTestSpatialCategory\");\n ctx.spatialCategoryId = SpatialCategory.insert(\n b1Txn,\n dictionary.id,\n newCategoryCode.value,\n new SubCategoryAppearance({ color: 0xff0000 }),\n );\n b1Txn.saveChanges();\n await b1.pushChanges({ description: \"\" });\n b1.close();\n });\n\n it(\"rebase events (noFastForward:true)\", async () => {\n /**\n * Fastforward will not trigger rebase events as rebase was not required to merge changes.\n * In this test we will test rebase events when noFastForward is set to true. Which mean rebase is required to merge changes.\n */\n const events = new Map<number, { args: TxnProps, event: \"onRebaseTxnBegin\" | \"onRebaseTxnEnd\" }[]>();\n\n const b1 = await ctx.openB1();\n const b1Txn = startTestTxn(b1);\n events.set(b1.briefcaseId, []);\n b1.txns.rebaser.onRebaseTxnBegin.addListener((args) => {\n\n events.get(b1.briefcaseId)?.push({ args, event: \"onRebaseTxnBegin\" });\n });\n b1.txns.rebaser.onRebaseTxnEnd.addListener((args) => {\n events.get(b1.briefcaseId)?.push({ args, event: \"onRebaseTxnEnd\" });\n });\n\n const b2 = await ctx.openB2();\n const b2Txn = startTestTxn(b2);\n events.set(b2.briefcaseId, []);\n b2.txns.rebaser.onRebaseTxnBegin.addListener((args) => {\n events.get(b2.briefcaseId)?.push({ args, event: \"onRebaseTxnBegin\" });\n });\n b2.txns.rebaser.onRebaseTxnEnd.addListener((args) => {\n events.get(b2.briefcaseId)?.push({ args, event: \"onRebaseTxnEnd\" });\n });\n\n\n const e1 = await insertPhysicalObject(b1Txn);\n b1Txn.saveChanges(`inserted physical object [id=${e1}]`);\n events.set(b1.briefcaseId, []);\n await b1.pushChanges({ description: `inserted physical object [id=${e1}]` });\n assert.isDefined(b1.elements.getElement(e1));\n assert.equal(events.get(b1.briefcaseId)?.length, 0);\n\n const e2 = await insertPhysicalObject(b1Txn);\n b1Txn.saveChanges();\n events.set(b1.briefcaseId, []);\n await b1.pushChanges({ description: `inserted physical object [id=${e2}]` });\n assert.equal(events.get(b1.briefcaseId)?.length, 0);\n\n assert.isDefined(b1.elements.getElement(e2));\n\n const e3 = await insertPhysicalObject(b2Txn);\n b2Txn.saveChanges(`inserted physical object [id=${e3}]`);\n const e4 = await insertPhysicalObject(b2Txn);\n b2Txn.saveChanges(`inserted physical object [id=${e4}]`);\n\n events.set(b2.briefcaseId, []);\n // fast-forward has no effect its a deprecated flag\n await b2.pushChanges({ description: `inserted physical object [id=${e3},${e4}]`, noFastForward: true });\n assert.equal(events.get(b2.briefcaseId)?.length, 4);\n assert.equal(events.get(b2.briefcaseId)?.[0].event, \"onRebaseTxnBegin\");\n assert.equal(events.get(b2.briefcaseId)?.[0].args.id, \"0x100000000\");\n assert.equal(events.get(b2.briefcaseId)?.[0].args.props?.description, \"inserted physical object [id=0x40000000001]\");\n assert.equal(events.get(b2.briefcaseId)?.[0].args.type, \"Data\");\n\n assert.equal(events.get(b2.briefcaseId)?.[3].event, \"onRebaseTxnEnd\");\n assert.equal(events.get(b2.briefcaseId)?.[3].args.id, \"0x100000001\");\n assert.equal(events.get(b2.briefcaseId)?.[3].args.props?.description, \"inserted physical object [id=0x40000000002]\");\n assert.equal(events.get(b2.briefcaseId)?.[3].args.type, \"Data\");\n\n\n assert.isDefined(b2.elements.getElement(e1));\n assert.isDefined(b2.elements.getElement(e2));\n assert.isDefined(b2.elements.getElement(e3));\n assert.isDefined(b2.elements.getElement(e4));\n\n const e5 = await insertPhysicalObject(b1Txn);\n b1Txn.saveChanges(`inserted physical object [id=${e5}]`);\n const e6 = await insertPhysicalObject(b1Txn);\n b1Txn.saveChanges(`inserted physical object [id=${e6}]`);\n events.set(b1.briefcaseId, []);\n await b1.pushChanges({ description: `inserted physical object [id=${e5}, ${e6}]` });\n assert.equal(events.get(b1.briefcaseId)?.length, 4);\n assert.equal(events.get(b1.briefcaseId)?.[0].event, \"onRebaseTxnBegin\");\n assert.equal(events.get(b1.briefcaseId)?.[0].args.id, \"0x100000000\");\n assert.equal(events.get(b1.briefcaseId)?.[0].args.props?.description, \"inserted physical object [id=0x30000000003]\");\n assert.equal(events.get(b1.briefcaseId)?.[0].args.type, \"Data\");\n\n assert.equal(events.get(b1.briefcaseId)?.[3].event, \"onRebaseTxnEnd\");\n assert.equal(events.get(b1.briefcaseId)?.[3].args.id, \"0x100000001\");\n assert.equal(events.get(b1.briefcaseId)?.[3].args.props?.description, \"inserted physical object [id=0x30000000004]\");\n assert.equal(events.get(b1.briefcaseId)?.[3].args.type, \"Data\");\n\n\n assert.isDefined(b1.elements.getElement(e1));\n assert.isDefined(b1.elements.getElement(e2));\n assert.isDefined(b1.elements.getElement(e3)); // Not found\n assert.isDefined(b1.elements.getElement(e4));\n assert.isDefined(b1.elements.getElement(e5));\n assert.isDefined(b1.elements.getElement(e6));\n\n events.set(b2.briefcaseId, []);\n await b2.pullChanges();\n assert.equal(events.get(b2.briefcaseId)?.length, 0);\n assert.isDefined(b2.elements.getElement(e1));\n assert.isDefined(b2.elements.getElement(e2));\n assert.isDefined(b2.elements.getElement(e3));\n assert.isDefined(b2.elements.getElement(e4));\n assert.isDefined(b2.elements.getElement(e5));\n assert.isDefined(b2.elements.getElement(e6));\n\n await updatePhysicalObject(b1Txn, e3, Guid.createValue());\n b1Txn.saveChanges(`update physical object [id=${e3}]`);\n await updatePhysicalObject(b1Txn, e4, Guid.createValue());\n b1Txn.saveChanges(`update physical object [id=${e4}]`);\n events.set(b1.briefcaseId, []);\n await b1.pushChanges({ description: `update physical object [id=${e3},${e4}]` });\n assert.equal(events.get(b1.briefcaseId)?.length, 0);\n\n await updatePhysicalObject(b2Txn, e1, Guid.createValue());\n b2Txn.saveChanges(`update physical object [id=${e1}]`);\n await updatePhysicalObject(b2Txn, e2, Guid.createValue());\n b2Txn.saveChanges(`update physical object [id=${e2}]`);\n await updatePhysicalObject(b2Txn, e5, Guid.createValue());\n b2Txn.saveChanges(`update physical object [id=${e5}]`);\n await updatePhysicalObject(b2Txn, e6, Guid.createValue());\n b2Txn.saveChanges(`update physical object [id=${e6}]`);\n events.set(b2.briefcaseId, []);\n await b2.pushChanges({ description: `update physical object [id=${e1},${e2},${e5}]`, noFastForward: true });\n assert.equal(events.get(b2.briefcaseId)?.length, 8);\n assert.equal(events.get(b2.briefcaseId)?.[0].event, \"onRebaseTxnBegin\");\n assert.equal(events.get(b2.briefcaseId)?.[0].args.id, \"0x100000000\");\n assert.equal(events.get(b2.briefcaseId)?.[0].args.props?.description, \"update physical object [id=0x30000000001]\");\n assert.equal(events.get(b2.briefcaseId)?.[0].args.type, \"Data\");\n\n assert.equal(events.get(b2.briefcaseId)?.[2].event, \"onRebaseTxnBegin\");\n assert.equal(events.get(b2.briefcaseId)?.[2].args.id, \"0x100000001\");\n assert.equal(events.get(b2.briefcaseId)?.[2].args.props?.description, \"update physical object [id=0x30000000002]\");\n assert.equal(events.get(b2.briefcaseId)?.[2].args.type, \"Data\");\n\n assert.equal(events.get(b2.briefcaseId)?.[4].event, \"onRebaseTxnBegin\");\n assert.equal(events.get(b2.briefcaseId)?.[4].args.id, \"0x100000002\");\n assert.equal(events.get(b2.briefcaseId)?.[4].args.props?.description, \"update physical object [id=0x30000000003]\");\n assert.equal(events.get(b2.briefcaseId)?.[4].args.type, \"Data\");\n\n assert.equal(events.get(b2.briefcaseId)?.[6].event, \"onRebaseTxnBegin\");\n assert.equal(events.get(b2.briefcaseId)?.[6].args.id, \"0x100000003\");\n assert.equal(events.get(b2.briefcaseId)?.[6].args.props?.description, \"update physical object [id=0x30000000004]\");\n assert.equal(events.get(b2.briefcaseId)?.[6].args.type, \"Data\");\n\n assert.isDefined(b1.elements.getElement(e1).federationGuid);\n assert.isDefined(b1.elements.getElement(e2).federationGuid);\n assert.isDefined(b1.elements.getElement(e3).federationGuid);\n assert.isDefined(b1.elements.getElement(e4).federationGuid);\n assert.isDefined(b1.elements.getElement(e5).federationGuid);\n assert.isDefined(b1.elements.getElement(e6).federationGuid);\n\n assert.isDefined(b2.elements.getElement(e1).federationGuid);\n assert.isDefined(b2.elements.getElement(e2).federationGuid);\n assert.isDefined(b2.elements.getElement(e3).federationGuid);\n assert.isDefined(b2.elements.getElement(e4).federationGuid);\n assert.isDefined(b2.elements.getElement(e5).federationGuid);\n assert.isDefined(b2.elements.getElement(e6).federationGuid);\n\n b1.close();\n b2.close();\n });\n it(\"rebase events (noFastForward:false/default)\", async () => {\n const events = new Map<number, { args: TxnProps, event: \"onRebaseTxnBegin\" | \"onRebaseTxnEnd\" }[]>();\n\n const b1 = await ctx.openB1();\n const b1Txn = startTestTxn(b1);\n events.set(b1.briefcaseId, []);\n b1.txns.rebaser.onRebaseTxnBegin.addListener((args) => {\n\n events.get(b1.briefcaseId)?.push({ args, event: \"onRebaseTxnBegin\" });\n });\n b1.txns.rebaser.onRebaseTxnEnd.addListener((args) => {\n events.get(b1.briefcaseId)?.push({ args, event: \"onRebaseTxnEnd\" });\n });\n\n const b2 = await ctx.openB2();\n const b2Txn = startTestTxn(b2);\n events.set(b2.briefcaseId, []);\n b2.txns.rebaser.onRebaseTxnBegin.addListener((args) => {\n events.get(b2.briefcaseId)?.push({ args, event: \"onRebaseTxnBegin\" });\n });\n b2.txns.rebaser.onRebaseTxnEnd.addListener((args) => {\n events.get(b2.briefcaseId)?.push({ args, event: \"onRebaseTxnEnd\" });\n });\n\n\n const e1 = await insertPhysicalObject(b1Txn);\n b1Txn.saveChanges(`inserted physical object [id=${e1}]`);\n events.set(b1.briefcaseId, []);\n await b1.pushChanges({ description: `inserted physical object [id=${e1}]` });\n assert.isDefined(b1.elements.getElement(e1));\n assert.equal(events.get(b1.briefcaseId)?.length, 0);\n\n const e2 = await insertPhysicalObject(b1Txn);\n b1Txn.saveChanges();\n events.set(b1.briefcaseId, []);\n await b1.pushChanges({ description: `inserted physical object [id=${e2}]` });\n assert.equal(events.get(b1.briefcaseId)?.length, 0);\n\n assert.isDefined(b1.elements.getElement(e2));\n\n const e3 = await insertPhysicalObject(b2Txn);\n b2Txn.saveChanges(`inserted physical object [id=${e3}]`);\n const e4 = await insertPhysicalObject(b2Txn);\n b2Txn.saveChanges(`inserted physical object [id=${e4}]`);\n\n events.set(b2.briefcaseId, []);\n // fast-forward\n await b2.pushChanges({ description: `inserted physical object [id=${e3},${e4}]` });\n assert.equal(events.get(b2.briefcaseId)?.length, 4);\n\n assert.isDefined(b2.elements.getElement(e1));\n assert.isDefined(b2.elements.getElement(e2));\n assert.isDefined(b2.elements.getElement(e3));\n assert.isDefined(b2.elements.getElement(e4));\n\n const e5 = await insertPhysicalObject(b1Txn);\n b1Txn.saveChanges(`inserted physical object [id=${e5}]`);\n const e6 = await insertPhysicalObject(b1Txn);\n b1Txn.saveChanges(`inserted physical object [id=${e6}]`);\n events.set(b1.briefcaseId, []);\n await b1.pushChanges({ description: `inserted physical object [id=${e5}, ${e6}]` });\n assert.equal(events.get(b1.briefcaseId)?.length, 4);\n\n assert.isDefined(b1.elements.getElement(e1));\n assert.isDefined(b1.elements.getElement(e2));\n assert.isDefined(b1.elements.getElement(e3)); // Not found\n assert.isDefined(b1.elements.getElement(e4));\n assert.isDefined(b1.elements.getElement(e5));\n assert.isDefined(b1.elements.getElement(e6));\n\n events.set(b2.briefcaseId, []);\n await b2.pullChanges();\n assert.equal(events.get(b2.briefcaseId)?.length, 0);\n assert.isDefined(b2.elements.getElement(e1));\n assert.isDefined(b2.elements.getElement(e2));\n assert.isDefined(b2.elements.getElement(e3));\n assert.isDefined(b2.elements.getElement(e4));\n assert.isDefined(b2.elements.getElement(e5));\n assert.isDefined(b2.elements.getElement(e6));\n\n await updatePhysicalObject(b1Txn, e3, Guid.createValue());\n b1Txn.saveChanges(`update physical object [id=${e3}]`);\n await updatePhysicalObject(b1Txn, e4, Guid.createValue());\n b1Txn.saveChanges(`update physical object [id=${e4}]`);\n events.set(b1.briefcaseId, []);\n await b1.pushChanges({ description: `update physical object [id=${e3},${e4}]` });\n assert.equal(events.get(b1.briefcaseId)?.length, 0);\n\n await updatePhysicalObject(b2Txn, e1, Guid.createValue());\n b2Txn.saveChanges(`update physical object [id=${e1}]`);\n await updatePhysicalObject(b2Txn, e2, Guid.createValue());\n b2Txn.saveChanges(`update physical object [id=${e2}]`);\n await updatePhysicalObject(b2Txn, e5, Guid.createValue());\n b2Txn.saveChanges(`update physical object [id=${e5}]`);\n await updatePhysicalObject(b2Txn, e6, Guid.createValue());\n b2Txn.saveChanges(`update physical object [id=${e6}]`);\n events.set(b2.briefcaseId, []);\n await b2.pushChanges({ description: `update physical object [id=${e1},${e2},${e5}]` });\n\n assert.isDefined(b1.elements.getElement(e1).federationGuid);\n assert.isDefined(b1.elements.getElement(e2).federationGuid);\n assert.isDefined(b1.elements.getElement(e3).federationGuid);\n assert.isDefined(b1.elements.getElement(e4).federationGuid);\n assert.isDefined(b1.elements.getElement(e5).federationGuid);\n assert.isDefined(b1.elements.getElement(e6).federationGuid);\n\n assert.isDefined(b2.elements.getElement(e1).federationGuid);\n assert.isDefined(b2.elements.getElement(e2).federationGuid);\n assert.isDefined(b2.elements.getElement(e3).federationGuid);\n assert.isDefined(b2.elements.getElement(e4).federationGuid);\n assert.isDefined(b2.elements.getElement(e5).federationGuid);\n assert.isDefined(b2.elements.getElement(e6).federationGuid);\n\n b1.close();\n b2.close();\n });\n it(\"rebase with be_props (insert conflict)\", async () => {\n const b1 = await ctx.openB1();\n const b1Txn = startTestTxn(b1);\n const b2 = await ctx.openB2();\n const b2Txn = startTestTxn(b2);\n\n b1Txn.saveFileProperty({ namespace: \"test\", name: \"test\" }, \"test1\");\n b1Txn.saveChanges(\"test\");\n await b1.pushChanges({ description: \"test\" });\n\n b2Txn.saveFileProperty({ namespace: \"test\", name: \"test\" }, \"test2\");\n b2Txn.saveChanges(\"test2\");\n\n await assertThrowsAsync(\n async () => b2.pushChanges({ description: \"test2\" }),\n \"PRIMARY KEY insert conflict. Aborting rebase.\");\n\n assert.equal(b2.queryFilePropertyString({ namespace: \"test\", name: \"test\" }), \"test1\");\n\n b2Txn.saveFileProperty({ namespace: \"test\", name: \"test\" }, \"test3\");\n\n chai.expect(() => b2Txn.saveChanges(\"test1\")).throws(\"Could not save changes (test1)\");\n b2Txn.abandonChanges();\n\n // set handler to resolve conflict\n b2.txns.rebaser.addConflictHandler({\n id: \"my\", handler: (args: RebaseChangesetConflictArgs) => {\n if (args.cause === \"Conflict\") {\n if (args.tableName === \"be_Prop\") {\n if (args.opcode === \"Inserted\") {\n chai.expect(args.getColumnNames()).to.be.deep.equal([\"Namespace\", \"Name\", \"Id\", \"SubId\", \"TxnMode\", \"StrData\", \"RawSize\", \"Data\"]);\n chai.expect(args.txn.id).to.be.equal(\"0x100000000\");\n chai.expect(args.txn.descr).to.be.equal(\"test2\");\n chai.expect(args.txn.type).to.be.equal(\"Data\");\n const localChangedVal = args.getValueText(5, \"New\");\n const tipValue = b2.queryFilePropertyString({ namespace: \"test\", name: \"test\" });\n b2Txn.saveFileProperty({ namespace: \"test\", name: \"test\" }, `${tipValue} + ${localChangedVal}`);\n return DbConflictResolution.Skip; // skip incoming value and continue\n }\n }\n }\n return undefined;\n }\n });\n\n // resume rebase see if it resolve the conflict\n await b2.txns.rebaser.resume();\n\n // use changeset api to read txn directly\n const reader = SqliteChangesetReader.openTxn({ db: b2, txnId: \"0x100000000\" });\n chai.expect(reader.step()).to.be.true;\n chai.expect(reader.tableName).to.be.equal(\"be_Prop\");\n chai.expect(reader.getColumnNames(reader.tableName)[5]).to.be.equal(\"StrData\");\n // note the operation changed from insert to update\n chai.expect(reader.op).to.be.equal(\"Updated\");\n // note this old value is from master branch after changeset was recomputed\n chai.expect(reader.getChangeValueText(5, \"Old\")).to.be.equal(\"test1\");\n // note this new value is from local branch after merger.\n chai.expect(reader.getChangeValueText(5, \"New\")).to.be.equal(\"test1 + test2\");\n reader.close();\n\n assert.equal(b2.queryFilePropertyString({ namespace: \"test\", name: \"test\" }), \"test1 + test2\");\n\n\n\n await b2.pushChanges({ description: \"test2\" });\n await b1.pullChanges();\n assert.equal(b2.queryFilePropertyString({ namespace: \"test\", name: \"test\" }), \"test1 + test2\");\n assert.equal(b1.queryFilePropertyString({ namespace: \"test\", name: \"test\" }), \"test1 + test2\");\n\n b1.close();\n b2.close();\n });\n\n it(\"rebase with be_props (data conflict) \", async () => {\n const b1 = await ctx.openB1();\n const b1Txn = startTestTxn(b1);\n const b2 = await ctx.openB2();\n const b2Txn = startTestTxn(b2);\n\n b1Txn.saveFileProperty({ namespace: \"test\", name: \"test\" }, \"test1\");\n b1Txn.saveChanges(\"test\");\n await b1.pushChanges({ description: \"test\" });\n\n await b2.pullChanges();\n b2Txn.saveFileProperty({ namespace: \"test\", name: \"test\" }, \"test2\");\n b2Txn.saveChanges(\"test2\");\n\n b1Txn.saveFileProperty({ namespace: \"test\", name: \"test\" }, \"test3\");\n b1Txn.saveChanges(\"test\");\n await b1.pushChanges({ description: \"test\" });\n\n // set handler to resolve conflict\n b2.txns.rebaser.addConflictHandler({\n id: \"my\", handler: (args: RebaseChangesetConflictArgs) => {\n if (args.cause === \"Data\") {\n if (args.tableName === \"be_Prop\") {\n if (args.opcode === \"Updated\") {\n const localChangedVal = args.getValueText(5, \"New\");\n const tipValue = b2.queryFilePropertyString({ namespace: \"test\", name: \"test\" });\n b2Txn.saveFileProperty({ namespace: \"test\", name: \"test\" }, `${tipValue} + ${localChangedVal}`);\n return DbConflictResolution.Skip; // skip incomming value and continue\n }\n }\n }\n return undefined;\n }\n });\n\n await b2.pushChanges({ description: \"test\" });\n await b2.pullChanges();\n await b1.pullChanges();\n assert.equal(b2.queryFilePropertyString({ namespace: \"test\", name: \"test\" }), \"test3 + test2\");\n assert.equal(b1.queryFilePropertyString({ namespace: \"test\", name: \"test\" }), \"test3 + test2\");\n\n b1.close();\n b2.close();\n });\n it(\"should keep element deleted when local delete conflicts with remote update\", async () => {\n const b1 = await ctx.openB1(true /* = noLock */);\n const b1Txn = startTestTxn(b1);\n const b2 = await ctx.openB2(true /* = noLock */);\n const b2Txn = startTestTxn(b2);\n\n const e1 = await insertPhysicalObject(b1Txn);\n b1Txn.saveChanges();\n await b1.pushChanges({ description: `inserted physical object [id=${e1}]` });\n await b2.pullChanges();\n\n const eb1 = b1.elements.getElementProps<PhysicalElementProps>(e1);\n eb1.userLabel = \"test1\";\n eb1.placement = { origin: { x: 1, y: 1, z: 1 }, angles: { yaw: 1, pitch: 1, roll: 1 } };\n eb1.geom = IModelTestUtils.createBox(Point3d.create(3, 3, 3));\n\n b1Txn.updateElement(eb1);\n b1Txn.saveChanges();\n await b1.pushChanges({ description: `update physical object [id=${e1}]` });\n\n b2Txn.deleteElement(e1);\n b2Txn.saveChanges();\n await b2.pullChanges();\n\n const eb2 = b2.elements.tryGetElementProps<PhysicalElementProps>(e1);\n\n // when placement is changed the element is not deleted after pullChanges();\n assert.isUndefined(eb2);\n\n b1.close();\n b2.close();\n });\n});\n"]}
|