@itwin/core-backend 5.9.0-dev.3 → 5.9.0-dev.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/cjs/BriefcaseManager.js +3 -3
- package/lib/cjs/BriefcaseManager.js.map +1 -1
- package/lib/cjs/Category.d.ts +37 -7
- package/lib/cjs/Category.d.ts.map +1 -1
- package/lib/cjs/Category.js +33 -42
- package/lib/cjs/Category.js.map +1 -1
- package/lib/cjs/ChangesetECAdaptor.d.ts.map +1 -1
- package/lib/cjs/ChangesetECAdaptor.js +5 -2
- package/lib/cjs/ChangesetECAdaptor.js.map +1 -1
- package/lib/cjs/ChannelControl.d.ts +29 -0
- package/lib/cjs/ChannelControl.d.ts.map +1 -1
- package/lib/cjs/ChannelControl.js.map +1 -1
- package/lib/cjs/CheckpointManager.js +1 -1
- package/lib/cjs/CheckpointManager.js.map +1 -1
- package/lib/cjs/CodeSpecs.d.ts +32 -3
- package/lib/cjs/CodeSpecs.d.ts.map +1 -1
- package/lib/cjs/CodeSpecs.js +48 -20
- package/lib/cjs/CodeSpecs.js.map +1 -1
- package/lib/cjs/DisplayStyle.d.ts +18 -3
- package/lib/cjs/DisplayStyle.d.ts.map +1 -1
- package/lib/cjs/DisplayStyle.js +10 -21
- package/lib/cjs/DisplayStyle.js.map +1 -1
- package/lib/cjs/EditTxn.d.ts +262 -0
- package/lib/cjs/EditTxn.d.ts.map +1 -0
- package/lib/cjs/EditTxn.js +548 -0
- package/lib/cjs/EditTxn.js.map +1 -0
- package/lib/cjs/Element.d.ts +74 -5
- package/lib/cjs/Element.d.ts.map +1 -1
- package/lib/cjs/Element.js +63 -75
- package/lib/cjs/Element.js.map +1 -1
- package/lib/cjs/ElementAspect.d.ts +10 -0
- package/lib/cjs/ElementAspect.d.ts.map +1 -1
- package/lib/cjs/ElementAspect.js +21 -12
- package/lib/cjs/ElementAspect.js.map +1 -1
- package/lib/cjs/ElementTreeWalker.d.ts +56 -3
- package/lib/cjs/ElementTreeWalker.d.ts.map +1 -1
- package/lib/cjs/ElementTreeWalker.js +53 -40
- package/lib/cjs/ElementTreeWalker.js.map +1 -1
- package/lib/cjs/ExternalSource.d.ts +11 -2
- package/lib/cjs/ExternalSource.d.ts.map +1 -1
- package/lib/cjs/ExternalSource.js +10 -8
- package/lib/cjs/ExternalSource.js.map +1 -1
- package/lib/cjs/IModelDb.d.ts +66 -22
- package/lib/cjs/IModelDb.d.ts.map +1 -1
- package/lib/cjs/IModelDb.js +174 -288
- package/lib/cjs/IModelDb.js.map +1 -1
- package/lib/cjs/IModelHost.d.ts +22 -0
- package/lib/cjs/IModelHost.d.ts.map +1 -1
- package/lib/cjs/IModelHost.js +9 -0
- package/lib/cjs/IModelHost.js.map +1 -1
- package/lib/cjs/IpcHost.js +2 -2
- package/lib/cjs/IpcHost.js.map +1 -1
- package/lib/cjs/LineStyle.d.ts +47 -7
- package/lib/cjs/LineStyle.d.ts.map +1 -1
- package/lib/cjs/LineStyle.js +38 -33
- package/lib/cjs/LineStyle.js.map +1 -1
- package/lib/cjs/Material.d.ts +8 -1
- package/lib/cjs/Material.d.ts.map +1 -1
- package/lib/cjs/Material.js +6 -12
- package/lib/cjs/Material.js.map +1 -1
- package/lib/cjs/Model.d.ts +59 -20
- package/lib/cjs/Model.d.ts.map +1 -1
- package/lib/cjs/Model.js +38 -80
- package/lib/cjs/Model.js.map +1 -1
- package/lib/cjs/Relationship.d.ts +72 -7
- package/lib/cjs/Relationship.d.ts.map +1 -1
- package/lib/cjs/Relationship.js +39 -21
- package/lib/cjs/Relationship.js.map +1 -1
- package/lib/cjs/SchemaSync.js +4 -4
- package/lib/cjs/SchemaSync.js.map +1 -1
- package/lib/cjs/SheetIndex.d.ts +9 -0
- package/lib/cjs/SheetIndex.d.ts.map +1 -1
- package/lib/cjs/SheetIndex.js +38 -35
- package/lib/cjs/SheetIndex.js.map +1 -1
- package/lib/cjs/StashManager.js +1 -1
- package/lib/cjs/StashManager.js.map +1 -1
- package/lib/cjs/Texture.d.ts +6 -0
- package/lib/cjs/Texture.d.ts.map +1 -1
- package/lib/cjs/Texture.js +6 -14
- package/lib/cjs/Texture.js.map +1 -1
- package/lib/cjs/TxnManager.d.ts +5 -5
- package/lib/cjs/TxnManager.d.ts.map +1 -1
- package/lib/cjs/TxnManager.js +23 -7
- package/lib/cjs/TxnManager.js.map +1 -1
- package/lib/cjs/ViewDefinition.d.ts +21 -1
- package/lib/cjs/ViewDefinition.d.ts.map +1 -1
- package/lib/cjs/ViewDefinition.js +27 -66
- package/lib/cjs/ViewDefinition.js.map +1 -1
- package/lib/cjs/annotations/ElementDrivesTextAnnotation.d.ts +14 -6
- package/lib/cjs/annotations/ElementDrivesTextAnnotation.d.ts.map +1 -1
- package/lib/cjs/annotations/ElementDrivesTextAnnotation.js +33 -27
- package/lib/cjs/annotations/ElementDrivesTextAnnotation.js.map +1 -1
- package/lib/cjs/annotations/TextAnnotationElement.d.ts.map +1 -1
- package/lib/cjs/annotations/TextAnnotationElement.js +6 -5
- package/lib/cjs/annotations/TextAnnotationElement.js.map +1 -1
- package/lib/cjs/core-backend.d.ts +1 -0
- package/lib/cjs/core-backend.d.ts.map +1 -1
- package/lib/cjs/core-backend.js +1 -0
- package/lib/cjs/core-backend.js.map +1 -1
- package/lib/cjs/domains/FunctionalElements.d.ts +6 -2
- package/lib/cjs/domains/FunctionalElements.d.ts.map +1 -1
- package/lib/cjs/domains/FunctionalElements.js +8 -13
- package/lib/cjs/domains/FunctionalElements.js.map +1 -1
- package/lib/cjs/domains/GenericElements.d.ts +11 -4
- package/lib/cjs/domains/GenericElements.d.ts.map +1 -1
- package/lib/cjs/domains/GenericElements.js +13 -24
- package/lib/cjs/domains/GenericElements.js.map +1 -1
- package/lib/cjs/internal/ChannelAdmin.d.ts +15 -0
- package/lib/cjs/internal/ChannelAdmin.d.ts.map +1 -1
- package/lib/cjs/internal/ChannelAdmin.js +5 -3
- package/lib/cjs/internal/ChannelAdmin.js.map +1 -1
- package/lib/cjs/internal/Symbols.d.ts +4 -0
- package/lib/cjs/internal/Symbols.d.ts.map +1 -1
- package/lib/cjs/internal/Symbols.js +5 -1
- package/lib/cjs/internal/Symbols.js.map +1 -1
- package/lib/cjs/internal/annotations/fields.d.ts +3 -2
- package/lib/cjs/internal/annotations/fields.d.ts.map +1 -1
- package/lib/cjs/internal/annotations/fields.js +7 -6
- package/lib/cjs/internal/annotations/fields.js.map +1 -1
- package/lib/cjs/rpc-impl/RpcBriefcaseUtility.d.ts.map +1 -1
- package/lib/cjs/rpc-impl/RpcBriefcaseUtility.js.map +1 -1
- package/lib/esm/BriefcaseManager.js +3 -3
- package/lib/esm/BriefcaseManager.js.map +1 -1
- package/lib/esm/Category.d.ts +37 -7
- package/lib/esm/Category.d.ts.map +1 -1
- package/lib/esm/Category.js +33 -42
- package/lib/esm/Category.js.map +1 -1
- package/lib/esm/ChangesetECAdaptor.d.ts.map +1 -1
- package/lib/esm/ChangesetECAdaptor.js +5 -2
- package/lib/esm/ChangesetECAdaptor.js.map +1 -1
- package/lib/esm/ChannelControl.d.ts +29 -0
- package/lib/esm/ChannelControl.d.ts.map +1 -1
- package/lib/esm/ChannelControl.js.map +1 -1
- package/lib/esm/CheckpointManager.js +1 -1
- package/lib/esm/CheckpointManager.js.map +1 -1
- package/lib/esm/CodeSpecs.d.ts +32 -3
- package/lib/esm/CodeSpecs.d.ts.map +1 -1
- package/lib/esm/CodeSpecs.js +49 -21
- package/lib/esm/CodeSpecs.js.map +1 -1
- package/lib/esm/DisplayStyle.d.ts +18 -3
- package/lib/esm/DisplayStyle.d.ts.map +1 -1
- package/lib/esm/DisplayStyle.js +10 -21
- package/lib/esm/DisplayStyle.js.map +1 -1
- package/lib/esm/EditTxn.d.ts +262 -0
- package/lib/esm/EditTxn.d.ts.map +1 -0
- package/lib/esm/EditTxn.js +543 -0
- package/lib/esm/EditTxn.js.map +1 -0
- package/lib/esm/Element.d.ts +74 -5
- package/lib/esm/Element.d.ts.map +1 -1
- package/lib/esm/Element.js +64 -76
- package/lib/esm/Element.js.map +1 -1
- package/lib/esm/ElementAspect.d.ts +10 -0
- package/lib/esm/ElementAspect.d.ts.map +1 -1
- package/lib/esm/ElementAspect.js +22 -13
- package/lib/esm/ElementAspect.js.map +1 -1
- package/lib/esm/ElementTreeWalker.d.ts +56 -3
- package/lib/esm/ElementTreeWalker.d.ts.map +1 -1
- package/lib/esm/ElementTreeWalker.js +53 -40
- package/lib/esm/ElementTreeWalker.js.map +1 -1
- package/lib/esm/ExternalSource.d.ts +11 -2
- package/lib/esm/ExternalSource.d.ts.map +1 -1
- package/lib/esm/ExternalSource.js +10 -8
- package/lib/esm/ExternalSource.js.map +1 -1
- package/lib/esm/IModelDb.d.ts +66 -22
- package/lib/esm/IModelDb.d.ts.map +1 -1
- package/lib/esm/IModelDb.js +176 -290
- package/lib/esm/IModelDb.js.map +1 -1
- package/lib/esm/IModelHost.d.ts +22 -0
- package/lib/esm/IModelHost.d.ts.map +1 -1
- package/lib/esm/IModelHost.js +9 -0
- package/lib/esm/IModelHost.js.map +1 -1
- package/lib/esm/IpcHost.js +3 -3
- package/lib/esm/IpcHost.js.map +1 -1
- package/lib/esm/LineStyle.d.ts +47 -7
- package/lib/esm/LineStyle.d.ts.map +1 -1
- package/lib/esm/LineStyle.js +38 -33
- package/lib/esm/LineStyle.js.map +1 -1
- package/lib/esm/Material.d.ts +8 -1
- package/lib/esm/Material.d.ts.map +1 -1
- package/lib/esm/Material.js +6 -12
- package/lib/esm/Material.js.map +1 -1
- package/lib/esm/Model.d.ts +59 -20
- package/lib/esm/Model.d.ts.map +1 -1
- package/lib/esm/Model.js +39 -81
- package/lib/esm/Model.js.map +1 -1
- package/lib/esm/Relationship.d.ts +72 -7
- package/lib/esm/Relationship.d.ts.map +1 -1
- package/lib/esm/Relationship.js +40 -22
- package/lib/esm/Relationship.js.map +1 -1
- package/lib/esm/SchemaSync.js +5 -5
- package/lib/esm/SchemaSync.js.map +1 -1
- package/lib/esm/SheetIndex.d.ts +9 -0
- package/lib/esm/SheetIndex.d.ts.map +1 -1
- package/lib/esm/SheetIndex.js +38 -35
- package/lib/esm/SheetIndex.js.map +1 -1
- package/lib/esm/StashManager.js +1 -1
- package/lib/esm/StashManager.js.map +1 -1
- package/lib/esm/Texture.d.ts +6 -0
- package/lib/esm/Texture.d.ts.map +1 -1
- package/lib/esm/Texture.js +6 -14
- package/lib/esm/Texture.js.map +1 -1
- package/lib/esm/TxnManager.d.ts +5 -5
- package/lib/esm/TxnManager.d.ts.map +1 -1
- package/lib/esm/TxnManager.js +23 -7
- package/lib/esm/TxnManager.js.map +1 -1
- package/lib/esm/ViewDefinition.d.ts +21 -1
- package/lib/esm/ViewDefinition.d.ts.map +1 -1
- package/lib/esm/ViewDefinition.js +27 -66
- package/lib/esm/ViewDefinition.js.map +1 -1
- package/lib/esm/annotations/ElementDrivesTextAnnotation.d.ts +14 -6
- package/lib/esm/annotations/ElementDrivesTextAnnotation.d.ts.map +1 -1
- package/lib/esm/annotations/ElementDrivesTextAnnotation.js +33 -27
- package/lib/esm/annotations/ElementDrivesTextAnnotation.js.map +1 -1
- package/lib/esm/annotations/TextAnnotationElement.d.ts.map +1 -1
- package/lib/esm/annotations/TextAnnotationElement.js +6 -5
- package/lib/esm/annotations/TextAnnotationElement.js.map +1 -1
- package/lib/esm/core-backend.d.ts +1 -0
- package/lib/esm/core-backend.d.ts.map +1 -1
- package/lib/esm/core-backend.js +1 -0
- package/lib/esm/core-backend.js.map +1 -1
- package/lib/esm/domains/FunctionalElements.d.ts +6 -2
- package/lib/esm/domains/FunctionalElements.d.ts.map +1 -1
- package/lib/esm/domains/FunctionalElements.js +8 -13
- package/lib/esm/domains/FunctionalElements.js.map +1 -1
- package/lib/esm/domains/GenericElements.d.ts +11 -4
- package/lib/esm/domains/GenericElements.d.ts.map +1 -1
- package/lib/esm/domains/GenericElements.js +13 -24
- package/lib/esm/domains/GenericElements.js.map +1 -1
- package/lib/esm/internal/ChannelAdmin.d.ts +15 -0
- package/lib/esm/internal/ChannelAdmin.d.ts.map +1 -1
- package/lib/esm/internal/ChannelAdmin.js +6 -4
- package/lib/esm/internal/ChannelAdmin.js.map +1 -1
- package/lib/esm/internal/Symbols.d.ts +4 -0
- package/lib/esm/internal/Symbols.d.ts.map +1 -1
- package/lib/esm/internal/Symbols.js +4 -0
- package/lib/esm/internal/Symbols.js.map +1 -1
- package/lib/esm/internal/annotations/fields.d.ts +3 -2
- package/lib/esm/internal/annotations/fields.d.ts.map +1 -1
- package/lib/esm/internal/annotations/fields.js +7 -6
- package/lib/esm/internal/annotations/fields.js.map +1 -1
- package/lib/esm/rpc-impl/RpcBriefcaseUtility.d.ts.map +1 -1
- package/lib/esm/rpc-impl/RpcBriefcaseUtility.js.map +1 -1
- package/lib/esm/test/AnnotationTestUtils.js.map +1 -1
- package/lib/esm/test/ElementDrivesElement.test.d.ts +20 -19
- package/lib/esm/test/ElementDrivesElement.test.d.ts.map +1 -1
- package/lib/esm/test/ElementDrivesElement.test.js +111 -96
- package/lib/esm/test/ElementDrivesElement.test.js.map +1 -1
- package/lib/esm/test/ElementLRUCache.test.js.map +1 -1
- package/lib/esm/test/IModelHost.test.js +56 -2
- package/lib/esm/test/IModelHost.test.js.map +1 -1
- package/lib/esm/test/IModelTestUtils.d.ts +23 -23
- package/lib/esm/test/IModelTestUtils.d.ts.map +1 -1
- package/lib/esm/test/IModelTestUtils.js +466 -449
- package/lib/esm/test/IModelTestUtils.js.map +1 -1
- package/lib/esm/test/PropertyDb.test.js +2 -2
- package/lib/esm/test/PropertyDb.test.js.map +1 -1
- package/lib/esm/test/SquashSchemaAndDataChanges.test.js +27 -18
- package/lib/esm/test/SquashSchemaAndDataChanges.test.js.map +1 -1
- package/lib/esm/test/TestChangeSetUtility.d.ts.map +1 -1
- package/lib/esm/test/TestChangeSetUtility.js +11 -7
- package/lib/esm/test/TestChangeSetUtility.js.map +1 -1
- package/lib/esm/test/TestEditTxn.d.ts +8 -0
- package/lib/esm/test/TestEditTxn.d.ts.map +1 -0
- package/lib/esm/test/TestEditTxn.js +34 -0
- package/lib/esm/test/TestEditTxn.js.map +1 -0
- package/lib/esm/test/TestUtils.d.ts +1 -0
- package/lib/esm/test/TestUtils.d.ts.map +1 -1
- package/lib/esm/test/TestUtils.js +8 -1
- package/lib/esm/test/TestUtils.js.map +1 -1
- package/lib/esm/test/annotations/Fields.test.js +82 -90
- 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/TextAnnotation.test.js +156 -99
- package/lib/esm/test/annotations/TextAnnotation.test.js.map +1 -1
- package/lib/esm/test/annotations/TextBlock.test.js +5 -3
- package/lib/esm/test/annotations/TextBlock.test.js.map +1 -1
- package/lib/esm/test/assets/IncrementalSchemaLocater/configs/old.config.js.map +1 -1
- package/lib/esm/test/assets/IncrementalSchemaLocater/configs/simple.config.js.map +1 -1
- package/lib/esm/test/categories/Category.test.js +63 -3
- package/lib/esm/test/categories/Category.test.js.map +1 -1
- package/lib/esm/test/codespec/CodeSpec.test.js +88 -5
- package/lib/esm/test/codespec/CodeSpec.test.js.map +1 -1
- package/lib/esm/test/ecdb/ECDb.test.js.map +1 -1
- package/lib/esm/test/ecdb/ECSqlAst.test.js +3 -2
- package/lib/esm/test/ecdb/ECSqlAst.test.js.map +1 -1
- package/lib/esm/test/ecdb/ECSqlQuery.test.js +2 -2
- package/lib/esm/test/ecdb/ECSqlQuery.test.js.map +1 -1
- package/lib/esm/test/ecdb/ECSqlStatement.test.js +0 -1
- package/lib/esm/test/ecdb/ECSqlStatement.test.js.map +1 -1
- package/lib/esm/test/ecdb/QueryReaders.test.js +17 -14
- package/lib/esm/test/ecdb/QueryReaders.test.js.map +1 -1
- package/lib/esm/test/ecdb/SqliteStatement.test.js +2 -2
- package/lib/esm/test/ecdb/SqliteStatement.test.js.map +1 -1
- package/lib/esm/test/ecsql/dataset/ECSqlDatasets.d.ts.map +1 -1
- package/lib/esm/test/ecsql/dataset/ECSqlDatasets.js +30 -28
- package/lib/esm/test/ecsql/dataset/ECSqlDatasets.js.map +1 -1
- package/lib/esm/test/ecsql/src/ECSqlTestGenerator.js.map +1 -1
- package/lib/esm/test/ecsql/src/ECSqlTestParser.js.map +1 -1
- package/lib/esm/test/ecsql/src/ECSqlTestRunner.test.js.map +1 -1
- package/lib/esm/test/element/DeleteDefinitionElements.test.js +159 -143
- package/lib/esm/test/element/DeleteDefinitionElements.test.js.map +1 -1
- package/lib/esm/test/element/ElementAspect.test.js +68 -60
- package/lib/esm/test/element/ElementAspect.test.js.map +1 -1
- package/lib/esm/test/element/ElementDependencyGraph.test.d.ts.map +1 -1
- package/lib/esm/test/element/ElementDependencyGraph.test.js +51 -43
- package/lib/esm/test/element/ElementDependencyGraph.test.js.map +1 -1
- package/lib/esm/test/element/ElementRoundTrip.test.js +37 -38
- package/lib/esm/test/element/ElementRoundTrip.test.js.map +1 -1
- package/lib/esm/test/element/ExcludedElements.test.js +2 -2
- package/lib/esm/test/element/ExcludedElements.test.js.map +1 -1
- package/lib/esm/test/element/ExternalSource.test.js +40 -38
- package/lib/esm/test/element/ExternalSource.test.js.map +1 -1
- package/lib/esm/test/element/NullStructArray.test.js +10 -9
- package/lib/esm/test/element/NullStructArray.test.js.map +1 -1
- package/lib/esm/test/element/ProjectInformationRecord.test.js +5 -2
- package/lib/esm/test/element/ProjectInformationRecord.test.js.map +1 -1
- package/lib/esm/test/element/SheetInformationAspect.test.js +43 -11
- package/lib/esm/test/element/SheetInformationAspect.test.js.map +1 -1
- package/lib/esm/test/element/UrlLink.test.js +2 -2
- package/lib/esm/test/element/UrlLink.test.js.map +1 -1
- package/lib/esm/test/font/IModelDbFonts.test.js +87 -73
- package/lib/esm/test/font/IModelDbFonts.test.js.map +1 -1
- package/lib/esm/test/hubaccess/ApplyChangeset.test.js +164 -125
- package/lib/esm/test/hubaccess/ApplyChangeset.test.js.map +1 -1
- package/lib/esm/test/hubaccess/BriefcaseManager.test.js +2 -4
- package/lib/esm/test/hubaccess/BriefcaseManager.test.js.map +1 -1
- package/lib/esm/test/hubaccess/Rebase.test.js +313 -247
- package/lib/esm/test/hubaccess/Rebase.test.js.map +1 -1
- package/lib/esm/test/hubaccess/SemanticRebase.test.js +322 -247
- package/lib/esm/test/hubaccess/SemanticRebase.test.js.map +1 -1
- package/lib/esm/test/imodel/Code.test.js +31 -31
- package/lib/esm/test/imodel/Code.test.js.map +1 -1
- package/lib/esm/test/imodel/ElementTreeWalker.test.js +57 -48
- package/lib/esm/test/imodel/ElementTreeWalker.test.js.map +1 -1
- package/lib/esm/test/imodel/IModel.test.js +419 -344
- package/lib/esm/test/imodel/IModel.test.js.map +1 -1
- package/lib/esm/test/imodel/ProjectExtents.test.js +2 -2
- package/lib/esm/test/imodel/ProjectExtents.test.js.map +1 -1
- package/lib/esm/test/incrementalSchemaLocater/ECSqlQueries.test.js.map +1 -1
- package/lib/esm/test/incrementalSchemaLocater/TestContext.d.ts.map +1 -1
- package/lib/esm/test/incrementalSchemaLocater/TestContext.js +2 -2
- package/lib/esm/test/incrementalSchemaLocater/TestContext.js.map +1 -1
- package/lib/esm/test/index.d.ts +1 -0
- package/lib/esm/test/index.d.ts.map +1 -1
- package/lib/esm/test/index.js +1 -0
- package/lib/esm/test/index.js.map +1 -1
- package/lib/esm/test/schema/ClassRegistry.test.js +23 -22
- package/lib/esm/test/schema/ClassRegistry.test.js.map +1 -1
- package/lib/esm/test/schema/FunctionalDomain.test.js +36 -34
- package/lib/esm/test/schema/FunctionalDomain.test.js.map +1 -1
- package/lib/esm/test/schema/GenericDomain.test.js +114 -94
- package/lib/esm/test/schema/GenericDomain.test.js.map +1 -1
- package/lib/esm/test/schema/IModelSchemaContext.test.js +2 -1
- package/lib/esm/test/schema/IModelSchemaContext.test.js.map +1 -1
- package/lib/esm/test/schema/SchemaImportCallbacks.test.js +207 -192
- package/lib/esm/test/schema/SchemaImportCallbacks.test.js.map +1 -1
- package/lib/esm/test/sheetindex/SheetIndex.test.d.ts +1 -3
- package/lib/esm/test/sheetindex/SheetIndex.test.d.ts.map +1 -1
- package/lib/esm/test/sheetindex/SheetIndex.test.js +312 -247
- package/lib/esm/test/sheetindex/SheetIndex.test.js.map +1 -1
- package/lib/esm/test/standalone/ChangeMerge.test.js +101 -82
- package/lib/esm/test/standalone/ChangeMerge.test.js.map +1 -1
- package/lib/esm/test/standalone/ChangesetReader.test.js +114 -85
- package/lib/esm/test/standalone/ChangesetReader.test.js.map +1 -1
- package/lib/esm/test/standalone/DisplayStyle.test.js +43 -40
- package/lib/esm/test/standalone/DisplayStyle.test.js.map +1 -1
- package/lib/esm/test/standalone/Drawing.test.js +4 -3
- package/lib/esm/test/standalone/Drawing.test.js.map +1 -1
- package/lib/esm/test/standalone/EditTxn.test.d.ts +2 -0
- package/lib/esm/test/standalone/EditTxn.test.d.ts.map +1 -0
- package/lib/esm/test/standalone/EditTxn.test.js +219 -0
- package/lib/esm/test/standalone/EditTxn.test.js.map +1 -0
- package/lib/esm/test/standalone/ElementMesh.test.js +16 -13
- package/lib/esm/test/standalone/ElementMesh.test.js.map +1 -1
- package/lib/esm/test/standalone/ExportGraphics.test.js +26 -20
- package/lib/esm/test/standalone/ExportGraphics.test.js.map +1 -1
- package/lib/esm/test/standalone/GeometryChangeEvents.test.js +11 -15
- package/lib/esm/test/standalone/GeometryChangeEvents.test.js.map +1 -1
- package/lib/esm/test/standalone/GeometryStream.test.js +212 -165
- package/lib/esm/test/standalone/GeometryStream.test.js.map +1 -1
- package/lib/esm/test/standalone/HubMock.test.js +31 -25
- package/lib/esm/test/standalone/HubMock.test.js.map +1 -1
- package/lib/esm/test/standalone/IModelLimits.test.js +11 -8
- package/lib/esm/test/standalone/IModelLimits.test.js.map +1 -1
- package/lib/esm/test/standalone/IModelWrite.test.d.ts +2 -2
- package/lib/esm/test/standalone/IModelWrite.test.d.ts.map +1 -1
- package/lib/esm/test/standalone/IModelWrite.test.js +184 -142
- package/lib/esm/test/standalone/IModelWrite.test.js.map +1 -1
- package/lib/esm/test/standalone/InlineGeometryPartReferences.test.js +25 -22
- package/lib/esm/test/standalone/InlineGeometryPartReferences.test.js.map +1 -1
- package/lib/esm/test/standalone/IntegrityCheck.test.js +20 -18
- package/lib/esm/test/standalone/IntegrityCheck.test.js.map +1 -1
- package/lib/esm/test/standalone/MergeConflict.test.d.ts +2 -2
- package/lib/esm/test/standalone/MergeConflict.test.d.ts.map +1 -1
- package/lib/esm/test/standalone/MergeConflict.test.js +49 -33
- package/lib/esm/test/standalone/MergeConflict.test.js.map +1 -1
- package/lib/esm/test/standalone/RenderMaterialElement.test.js +5 -5
- package/lib/esm/test/standalone/RenderMaterialElement.test.js.map +1 -1
- package/lib/esm/test/standalone/RenderTimeline.test.js +3 -2
- package/lib/esm/test/standalone/RenderTimeline.test.js.map +1 -1
- package/lib/esm/test/standalone/SectionDrawing.test.js +7 -7
- package/lib/esm/test/standalone/SectionDrawing.test.js.map +1 -1
- package/lib/esm/test/standalone/ServerBasedLocks.test.js +21 -19
- package/lib/esm/test/standalone/ServerBasedLocks.test.js.map +1 -1
- package/lib/esm/test/standalone/Settings.test.js +7 -4
- package/lib/esm/test/standalone/Settings.test.js.map +1 -1
- package/lib/esm/test/standalone/SettingsSchemas.test.js +2 -1
- package/lib/esm/test/standalone/SettingsSchemas.test.js.map +1 -1
- package/lib/esm/test/standalone/SnapshotDb.test.js +3 -1
- package/lib/esm/test/standalone/SnapshotDb.test.js.map +1 -1
- package/lib/esm/test/standalone/StandaloneDb.test.js +7 -6
- package/lib/esm/test/standalone/StandaloneDb.test.js.map +1 -1
- package/lib/esm/test/standalone/Texture.test.js +5 -4
- package/lib/esm/test/standalone/Texture.test.js.map +1 -1
- package/lib/esm/test/standalone/TileCache.test.d.ts.map +1 -1
- package/lib/esm/test/standalone/TileCache.test.js +5 -3
- package/lib/esm/test/standalone/TileCache.test.js.map +1 -1
- package/lib/esm/test/standalone/TileTree.test.js +35 -31
- package/lib/esm/test/standalone/TileTree.test.js.map +1 -1
- package/lib/esm/test/standalone/TxnManager.test.js +700 -653
- package/lib/esm/test/standalone/TxnManager.test.js.map +1 -1
- package/lib/esm/test/standalone/ViewDefinition.test.js +295 -229
- package/lib/esm/test/standalone/ViewDefinition.test.js.map +1 -1
- package/lib/esm/test/standalone/Workspace.test.js +25 -23
- package/lib/esm/test/standalone/Workspace.test.js.map +1 -1
- package/package.json +12 -12
|
@@ -6,13 +6,13 @@ import { expect } from "chai";
|
|
|
6
6
|
import { existsSync } from "fs";
|
|
7
7
|
import { join } from "path";
|
|
8
8
|
import { OpenMode } from "@itwin/core-bentley";
|
|
9
|
-
import { IModelHost } from "../IModelHost";
|
|
10
9
|
import { PropertyStore } from "../PropertyStore";
|
|
11
10
|
import { KnownTestLocations } from "./KnownTestLocations";
|
|
11
|
+
import { TestUtils } from "./TestUtils";
|
|
12
12
|
describe("PropertyDb", function () {
|
|
13
13
|
this.timeout(0);
|
|
14
14
|
const outputDir = KnownTestLocations.outputDir;
|
|
15
|
-
before(async () =>
|
|
15
|
+
before(async () => TestUtils.startBackend());
|
|
16
16
|
it("save and load properties", async () => {
|
|
17
17
|
const dbName = join(outputDir, "properties.db");
|
|
18
18
|
PropertyStore.PropertyDb.createNewDb(dbName);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PropertyDb.test.js","sourceRoot":"","sources":["../../../src/test/PropertyDb.test.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAE/F,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAC9B,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAEhC,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"PropertyDb.test.js","sourceRoot":"","sources":["../../../src/test/PropertyDb.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 { expect } from \"chai\";\nimport { existsSync } from \"fs\";\nimport { Suite } from \"mocha\";\nimport { join } from \"path\";\nimport { OpenMode } from \"@itwin/core-bentley\";\nimport { PropertyStore } from \"../PropertyStore\";\nimport { KnownTestLocations } from \"./KnownTestLocations\";\nimport { TestUtils } from \"./TestUtils\";\n\ndescribe(\"PropertyDb\", function (this: Suite) {\n this.timeout(0);\n\n const outputDir = KnownTestLocations.outputDir;\n\n before(async () => TestUtils.startBackend());\n\n it(\"save and load properties\", async () => {\n const dbName = join(outputDir, \"properties.db\");\n PropertyStore.PropertyDb.createNewDb(dbName);\n expect(existsSync(dbName)).true;\n const propertyDb = new PropertyStore.PropertyDb();\n propertyDb.openDb(dbName, OpenMode.ReadWrite);\n\n const countProperties = (filter?: PropertyStore.PropertyFilter) => {\n let count = 0;\n propertyDb.forAllProperties(() => {\n ++count;\n }, filter);\n return count;\n };\n const testJson = {\n a: \"test string\",\n num: 20,\n b: true,\n };\n\n const string1 = \"this is a test\";\n const string2 = \"this is another test\";\n const blob1 = new Uint8Array([2, 33, 23, 0, 202]);\n await propertyDb.saveProperty(\"test-string\", string1);\n await propertyDb.saveProperty(\"test-string2\", string2);\n await propertyDb.saveProperty(\"test-obj\", testJson);\n await propertyDb.saveProperty(\"is-false\", false);\n await propertyDb.saveProperty(\"is-true\", true);\n await propertyDb.saveProperty(\"is-100\", 100);\n await propertyDb.saveProperty(\"is-2.3\", 2.3);\n await propertyDb.saveProperty(\"is-blob\", blob1);\n propertyDb.saveChanges();\n expect(countProperties()).equal(8);\n\n expect(propertyDb.getString(\"test-string\")).equals(string1);\n expect(propertyDb.getString(\"test-string2\")).equals(string2);\n expect(propertyDb.getObject(\"test-obj\")).deep.equal(testJson);\n expect(propertyDb.getBoolean(\"is-false\")).false;\n expect(propertyDb.getBoolean(\"is-true\")).true;\n expect(propertyDb.getNumber(\"is-100\")).equal(100);\n expect(propertyDb.getNumber(\"is-2.3\")).equal(2.3);\n expect(propertyDb.getBlob(\"is-blob\")).deep.equal(blob1);\n\n const updated = \"this is a different string\";\n await propertyDb.saveProperty(\"test-string\", updated);\n expect(propertyDb.getString(\"test-string\")).equals(updated);\n\n expect(propertyDb.getNumber(\"test-string\")).undefined;\n expect(propertyDb.getString(\"not there\")).undefined;\n expect(propertyDb.getBlob(\"not there\")).undefined;\n expect(propertyDb.getNumber(\"not there\")).undefined;\n expect(propertyDb.getBlob(\"not there\")).undefined;\n expect(propertyDb.getNumber(\"not there\", 50)).equal(50);\n\n expect(countProperties({ value: \"test%\", valueCompare: \"LIKE\" })).equal(3);\n await propertyDb.deleteProperty(\"test-string\");\n expect(countProperties()).equal(7);\n expect(countProperties({ value: \"test%\", valueCompare: \"LIKE\" })).equal(2);\n\n propertyDb.closeDb(true);\n });\n});\n"]}
|
|
@@ -11,6 +11,7 @@ import { HubMock } from "../internal/HubMock";
|
|
|
11
11
|
import { KnownTestLocations } from "./KnownTestLocations";
|
|
12
12
|
import * as chai from "chai";
|
|
13
13
|
import { TestUtils } from "./TestUtils";
|
|
14
|
+
import { EditTxn, withEditTxn } from "../EditTxn";
|
|
14
15
|
const schemas = {
|
|
15
16
|
/** Base schema v01.00.00 with classes A, C, D */
|
|
16
17
|
v01x00x00: `<?xml version="1.0" encoding="UTF-8"?>
|
|
@@ -166,12 +167,13 @@ describe("SquashSchemaAndDataChanges", () => {
|
|
|
166
167
|
const createModelAndCategory = async (db) => {
|
|
167
168
|
const modelCode = IModelTestUtils.getUniqueModelCode(db, "DrawingModel");
|
|
168
169
|
await db.locks.acquireLocks({ shared: IModel.dictionaryId });
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
170
|
+
return withEditTxn(db, (txn) => {
|
|
171
|
+
const [, newDrawingModelId] = IModelTestUtils.createAndInsertDrawingPartitionAndModel(txn, modelCode);
|
|
172
|
+
const newDrawingCategoryId = DrawingCategory.insert(txn, IModel.dictionaryId, "DrawingCategory", new SubCategoryAppearance());
|
|
173
|
+
return [newDrawingModelId, newDrawingCategoryId];
|
|
174
|
+
});
|
|
173
175
|
};
|
|
174
|
-
const insertElement = (
|
|
176
|
+
const insertElement = (txn, className, properties) => {
|
|
175
177
|
const elementProps = {
|
|
176
178
|
classFullName: className,
|
|
177
179
|
model: drawingModelId,
|
|
@@ -179,8 +181,8 @@ describe("SquashSchemaAndDataChanges", () => {
|
|
|
179
181
|
code: Code.createEmpty(),
|
|
180
182
|
...properties,
|
|
181
183
|
};
|
|
182
|
-
const element =
|
|
183
|
-
return
|
|
184
|
+
const element = txn.iModel.elements.createElement(elementProps);
|
|
185
|
+
return txn.insertElement(element.toJSON());
|
|
184
186
|
};
|
|
185
187
|
before(async () => {
|
|
186
188
|
HubMock.startup("MergeSchemaAndDataChanges", KnownTestLocations.outputDir);
|
|
@@ -191,7 +193,6 @@ describe("SquashSchemaAndDataChanges", () => {
|
|
|
191
193
|
iModelId = await HubWrappers.createIModel("user1", HubMock.iTwinId, `Test-${Guid.createValue()}`);
|
|
192
194
|
imodel = await HubWrappers.downloadAndOpenBriefcase({ accessToken: "user1", iTwinId: HubMock.iTwinId, iModelId });
|
|
193
195
|
imodel.channels.addAllowedChannel(ChannelControl.sharedChannelName);
|
|
194
|
-
imodel.saveChanges();
|
|
195
196
|
[drawingModelId, drawingCategoryId] = await createModelAndCategory(imodel);
|
|
196
197
|
await imodel.importSchemaStrings([schemas.v01x00x00, schemas.v01x00x01AddPropC2]);
|
|
197
198
|
await imodel.pushChanges({ description: "create model and category and imported schemas" });
|
|
@@ -205,22 +206,29 @@ describe("SquashSchemaAndDataChanges", () => {
|
|
|
205
206
|
await TestUtils.shutdownBackend();
|
|
206
207
|
await TestUtils.startBackend(); // restart normal backend so subsequent test suites aren't left without IModelHost
|
|
207
208
|
});
|
|
208
|
-
it("should
|
|
209
|
+
it("should allow schema import while an EditTxn is active", async () => {
|
|
209
210
|
await imodel.locks.acquireLocks({ shared: drawingModelId });
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
211
|
+
const txn = new EditTxn(imodel, "schema and data changes unsaved state");
|
|
212
|
+
txn.start();
|
|
213
|
+
try {
|
|
214
|
+
txn.saveChanges("prepare for schema import");
|
|
215
|
+
await imodel.importSchemaStrings([schemas.v01x00x02MovePropCToA]);
|
|
216
|
+
chai.assert(imodel.containsClass("TestDomain:C"));
|
|
217
|
+
}
|
|
218
|
+
finally {
|
|
219
|
+
if (txn.isActive)
|
|
220
|
+
txn.end("abandon");
|
|
221
|
+
}
|
|
216
222
|
});
|
|
217
223
|
it("should squash schema and data changes if useSemanticRebase flag is on", async () => {
|
|
218
224
|
await imodel.locks.acquireLocks({ shared: drawingModelId });
|
|
219
|
-
|
|
225
|
+
const txn = new EditTxn(imodel, "squash schema and data changes");
|
|
226
|
+
txn.start();
|
|
227
|
+
insertElement(txn, "TestDomain:C", {
|
|
220
228
|
propA: "local_value_a",
|
|
221
229
|
propC: "local_value_c",
|
|
222
230
|
});
|
|
223
|
-
|
|
231
|
+
txn.saveChanges("local data change");
|
|
224
232
|
await imodel.importSchemaStrings([schemas.v01x00x02MovePropCToA]); // transforming data change
|
|
225
233
|
const lastTxnProps = imodel.txns.getLastSavedTxnProps();
|
|
226
234
|
chai.assert(lastTxnProps !== undefined);
|
|
@@ -235,7 +243,8 @@ describe("SquashSchemaAndDataChanges", () => {
|
|
|
235
243
|
chai.assert(thirdLastTxnProps !== undefined);
|
|
236
244
|
chai.assert(thirdLastTxnProps?.type === "Data");
|
|
237
245
|
chai.assert(thirdLastTxnProps?.prevId === undefined);
|
|
238
|
-
|
|
246
|
+
if (txn.isActive)
|
|
247
|
+
txn.end("abandon");
|
|
239
248
|
});
|
|
240
249
|
});
|
|
241
250
|
//# sourceMappingURL=SquashSchemaAndDataChanges.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SquashSchemaAndDataChanges.test.js","sourceRoot":"","sources":["../../../src/test/SquashSchemaAndDataChanges.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 { Guid, Id64String } from \"@itwin/core-bentley\";\nimport { BriefcaseDb } from \"../IModelDb\";\nimport { HubWrappers, IModelTestUtils } from \"./IModelTestUtils\";\nimport { ChannelControl } from \"../ChannelControl\";\nimport { Code, GeometricElementProps, IModel, SubCategoryAppearance } from \"@itwin/core-common\";\nimport { DrawingCategory } from \"../Category\";\nimport { HubMock } from \"../internal/HubMock\";\nimport { KnownTestLocations } from \"./KnownTestLocations\";\nimport * as chai from \"chai\";\nimport { TestUtils } from \"./TestUtils\";\n\nconst schemas = {\n /** Base schema v01.00.00 with classes A, C, D */\n v01x00x00: `<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n <ECSchema schemaName=\"TestDomain\" alias=\"td\" version=\"01.00.00\" xmlns=\"http://www.bentley.com/schemas/Bentley.ECXML.3.2\">\n <ECSchemaReference name=\"BisCore\" version=\"01.00.23\" alias=\"bis\"/>\n <ECEntityClass typeName=\"A\">\n <BaseClass>bis:GraphicalElement2d</BaseClass>\n <ECProperty propertyName=\"PropA\" typeName=\"string\"/>\n </ECEntityClass>\n <ECEntityClass typeName=\"C\">\n <BaseClass>A</BaseClass>\n <ECProperty propertyName=\"PropC\" typeName=\"string\"/>\n </ECEntityClass>\n <ECEntityClass typeName=\"D\">\n <BaseClass>A</BaseClass>\n <ECProperty propertyName=\"PropD\" typeName=\"string\"/>\n </ECEntityClass>\n </ECSchema>`,\n\n /** v01.00.01 - Adds PropC2 to class C (trivial additive change) */\n v01x00x01AddPropC2: `<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n <ECSchema schemaName=\"TestDomain\" alias=\"td\" version=\"01.00.01\" xmlns=\"http://www.bentley.com/schemas/Bentley.ECXML.3.2\">\n <ECSchemaReference name=\"BisCore\" version=\"01.00.23\" alias=\"bis\"/>\n <ECEntityClass typeName=\"A\">\n <BaseClass>bis:GraphicalElement2d</BaseClass>\n <ECProperty propertyName=\"PropA\" typeName=\"string\"/>\n </ECEntityClass>\n <ECEntityClass typeName=\"C\">\n <BaseClass>A</BaseClass>\n <ECProperty propertyName=\"PropC\" typeName=\"string\"/>\n <ECProperty propertyName=\"PropC2\" typeName=\"string\"/>\n </ECEntityClass>\n <ECEntityClass typeName=\"D\">\n <BaseClass>A</BaseClass>\n <ECProperty propertyName=\"PropD\" typeName=\"string\"/>\n </ECEntityClass>\n </ECSchema>`,\n\n /** v01.00.02 - Adds PropD2 to class D (trivial additive change) */\n v01x00x02AddPropD2: `<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n <ECSchema schemaName=\"TestDomain\" alias=\"td\" version=\"01.00.02\" xmlns=\"http://www.bentley.com/schemas/Bentley.ECXML.3.2\">\n <ECSchemaReference name=\"BisCore\" version=\"01.00.23\" alias=\"bis\"/>\n <ECEntityClass typeName=\"A\">\n <BaseClass>bis:GraphicalElement2d</BaseClass>\n <ECProperty propertyName=\"PropA\" typeName=\"string\"/>\n </ECEntityClass>\n <ECEntityClass typeName=\"C\">\n <BaseClass>A</BaseClass>\n <ECProperty propertyName=\"PropC\" typeName=\"string\"/>\n <ECProperty propertyName=\"PropC2\" typeName=\"string\"/>\n </ECEntityClass>\n <ECEntityClass typeName=\"D\">\n <BaseClass>A</BaseClass>\n <ECProperty propertyName=\"PropD\" typeName=\"string\"/>\n <ECProperty propertyName=\"PropD2\" typeName=\"string\"/>\n </ECEntityClass>\n </ECSchema>`,\n\n /** v01.00.02 - Moves PropC from C to A (requires data transformation) on top of v01.00.01 */\n v01x00x02MovePropCToA: `<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n <ECSchema schemaName=\"TestDomain\" alias=\"td\" version=\"01.00.02\" xmlns=\"http://www.bentley.com/schemas/Bentley.ECXML.3.2\">\n <ECSchemaReference name=\"BisCore\" version=\"01.00.23\" alias=\"bis\"/>\n <ECEntityClass typeName=\"A\">\n <BaseClass>bis:GraphicalElement2d</BaseClass>\n <ECProperty propertyName=\"PropA\" typeName=\"string\"/>\n <ECProperty propertyName=\"PropC\" typeName=\"string\"/>\n </ECEntityClass>\n <ECEntityClass typeName=\"C\">\n <BaseClass>A</BaseClass>\n <ECProperty propertyName=\"PropC2\" typeName=\"string\"/>\n </ECEntityClass>\n <ECEntityClass typeName=\"D\">\n <BaseClass>A</BaseClass>\n <ECProperty propertyName=\"PropD\" typeName=\"string\"/>\n </ECEntityClass>\n </ECSchema>`,\n\n /** v01.00.03 - Builds on top of v01.00.02 and in addition moves PropD to base, so we can have incoming and local transforming changes */\n v01x00x03MovePropCAndD: `<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n <ECSchema schemaName=\"TestDomain\" alias=\"td\" version=\"01.00.03\" xmlns=\"http://www.bentley.com/schemas/Bentley.ECXML.3.2\">\n <ECSchemaReference name=\"BisCore\" version=\"01.00.23\" alias=\"bis\"/>\n <ECEntityClass typeName=\"A\">\n <BaseClass>bis:GraphicalElement2d</BaseClass>\n <ECProperty propertyName=\"PropA\" typeName=\"string\"/>\n <ECProperty propertyName=\"PropC\" typeName=\"string\"/>\n <ECProperty propertyName=\"PropD\" typeName=\"string\"/>\n </ECEntityClass>\n <ECEntityClass typeName=\"C\">\n <BaseClass>A</BaseClass>\n <ECProperty propertyName=\"PropC2\" typeName=\"string\"/>\n </ECEntityClass>\n <ECEntityClass typeName=\"D\">\n <BaseClass>A</BaseClass>\n <ECProperty propertyName=\"PropD2\" typeName=\"string\"/>\n </ECEntityClass>\n </ECSchema>`,\n\n /** v01.00.01 (incompatible variant) - Adds PropC3 instead of PropC2 to class C (same version) */\n v01x00x01AddPropC3Incompatible: `<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n <ECSchema schemaName=\"TestDomain\" alias=\"td\" version=\"01.00.01\" xmlns=\"http://www.bentley.com/schemas/Bentley.ECXML.3.2\">\n <ECSchemaReference name=\"BisCore\" version=\"01.00.23\" alias=\"bis\"/>\n <ECEntityClass typeName=\"A\">\n <BaseClass>bis:GraphicalElement2d</BaseClass>\n <ECProperty propertyName=\"PropA\" typeName=\"string\"/>\n </ECEntityClass>\n <ECEntityClass typeName=\"C\">\n <BaseClass>A</BaseClass>\n <ECProperty propertyName=\"PropC\" typeName=\"string\"/>\n <ECProperty propertyName=\"PropC3\" typeName=\"string\"/>\n </ECEntityClass>\n <ECEntityClass typeName=\"D\">\n <BaseClass>A</BaseClass>\n <ECProperty propertyName=\"PropD\" typeName=\"string\"/>\n </ECEntityClass>\n </ECSchema>`,\n\n /** v01.00.02 (incompatible variant) - Adds PropC3 instead of PropC2 to class C (higher version) */\n v01x00x02AddPropC3Incompatible: `<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n <ECSchema schemaName=\"TestDomain\" alias=\"td\" version=\"01.00.02\" xmlns=\"http://www.bentley.com/schemas/Bentley.ECXML.3.2\">\n <ECSchemaReference name=\"BisCore\" version=\"01.00.23\" alias=\"bis\"/>\n <ECEntityClass typeName=\"A\">\n <BaseClass>bis:GraphicalElement2d</BaseClass>\n <ECProperty propertyName=\"PropA\" typeName=\"string\"/>\n </ECEntityClass>\n <ECEntityClass typeName=\"C\">\n <BaseClass>A</BaseClass>\n <ECProperty propertyName=\"PropC\" typeName=\"string\"/>\n <ECProperty propertyName=\"PropC3\" typeName=\"string\"/>\n </ECEntityClass>\n <ECEntityClass typeName=\"D\">\n <BaseClass>A</BaseClass>\n <ECProperty propertyName=\"PropD\" typeName=\"string\"/>\n </ECEntityClass>\n </ECSchema>`,\n\n /** v01.00.02 (incompatible variant) - Adds PropC2 (higher version, different type) */\n v01x00x02AddPropC2Incompatible: `<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n <ECSchema schemaName=\"TestDomain\" alias=\"td\" version=\"01.00.02\" xmlns=\"http://www.bentley.com/schemas/Bentley.ECXML.3.2\">\n <ECSchemaReference name=\"BisCore\" version=\"01.00.23\" alias=\"bis\"/>\n <ECEntityClass typeName=\"A\">\n <BaseClass>bis:GraphicalElement2d</BaseClass>\n <ECProperty propertyName=\"PropA\" typeName=\"string\"/>\n </ECEntityClass>\n <ECEntityClass typeName=\"C\">\n <BaseClass>A</BaseClass>\n <ECProperty propertyName=\"PropC\" typeName=\"string\"/>\n <ECProperty propertyName=\"PropC2\" typeName=\"int\"/>\n </ECEntityClass>\n <ECEntityClass typeName=\"D\">\n <BaseClass>A</BaseClass>\n <ECProperty propertyName=\"PropD\" typeName=\"string\"/>\n </ECEntityClass>\n </ECSchema>`,\n};\n\ndescribe(\"SquashSchemaAndDataChanges\", () => {\n let imodel: BriefcaseDb;\n let iModelId: string;\n let drawingModelId: string;\n let drawingCategoryId: string;\n\n const createModelAndCategory = async (db: BriefcaseDb) => {\n const modelCode = IModelTestUtils.getUniqueModelCode(db, \"DrawingModel\");\n await db.locks.acquireLocks({ shared: IModel.dictionaryId });\n const [, newDrawingModelId] = IModelTestUtils.createAndInsertDrawingPartitionAndModel(db, modelCode);\n const newDrawingCategoryId = DrawingCategory.insert(\n db,\n IModel.dictionaryId,\n \"DrawingCategory\",\n new SubCategoryAppearance()\n );\n db.saveChanges();\n return [newDrawingModelId, newDrawingCategoryId];\n };\n\n const insertElement = (\n briefcase: BriefcaseDb,\n className: string,\n properties: Record<string, any>\n ): Id64String => {\n const elementProps: GeometricElementProps = {\n classFullName: className,\n model: drawingModelId,\n category: drawingCategoryId,\n code: Code.createEmpty(),\n ...properties,\n };\n const element = briefcase.elements.createElement(elementProps);\n return briefcase.elements.insertElement(element.toJSON());\n }\n\n before(async () => {\n HubMock.startup(\"MergeSchemaAndDataChanges\", KnownTestLocations.outputDir);\n await TestUtils.shutdownBackend();\n await TestUtils.startBackend({ useSemanticRebase: true });\n });\n\n beforeEach(async () => {\n iModelId = await HubWrappers.createIModel(\"user1\", HubMock.iTwinId, `Test-${Guid.createValue()}`);\n\n imodel = await HubWrappers.downloadAndOpenBriefcase({ accessToken: \"user1\", iTwinId: HubMock.iTwinId, iModelId });\n\n imodel.channels.addAllowedChannel(ChannelControl.sharedChannelName);\n\n imodel.saveChanges();\n [drawingModelId, drawingCategoryId] = await createModelAndCategory(imodel);\n await imodel.importSchemaStrings([schemas.v01x00x00, schemas.v01x00x01AddPropC2]);\n await imodel.pushChanges({ description: \"create model and category and imported schemas\" });\n });\n\n afterEach(async () => {\n imodel.close();\n await HubMock.deleteIModel({ accessToken: \"user1\", iTwinId: HubMock.iTwinId, iModelId });\n });\n\n after(async () => {\n HubMock.shutdown();\n await TestUtils.shutdownBackend();\n await TestUtils.startBackend(); // restart normal backend so subsequent test suites aren't left without IModelHost\n });\n\n it(\"should throw error if tried to import schema while unsaved changes are present\", async () => {\n await imodel.locks.acquireLocks({ shared: drawingModelId });\n insertElement(imodel, \"TestDomain:C\", {\n propA: \"local_value_a\",\n propC: \"local_value_c\",\n });\n\n await chai.expect(imodel.importSchemaStrings([schemas.v01x00x02MovePropCToA])).to.be.rejectedWith(\"Cannot import schemas with unsaved changes when useSemanticRebase flag is on\");\n await imodel.discardChanges();\n });\n\n it(\"should squash schema and data changes if useSemanticRebase flag is on\", async () => {\n await imodel.locks.acquireLocks({ shared: drawingModelId });\n insertElement(imodel, \"TestDomain:C\", {\n propA: \"local_value_a\",\n propC: \"local_value_c\",\n });\n imodel.saveChanges(\"local data change\");\n await imodel.importSchemaStrings([schemas.v01x00x02MovePropCToA]); // transforming data change\n\n const lastTxnProps = imodel.txns.getLastSavedTxnProps();\n chai.assert(lastTxnProps !== undefined);\n chai.assert(lastTxnProps?.type === \"Schema\");\n chai.assert(lastTxnProps?.prevId !== undefined);\n // both schema and data(migration) changes are merged into single txn\n\n const secondLastTxnProps = imodel.txns.getTxnProps(lastTxnProps.prevId);\n chai.assert(secondLastTxnProps !== undefined);\n chai.assert(secondLastTxnProps?.type === \"Ddl\");\n chai.assert(secondLastTxnProps?.prevId !== undefined);\n\n const thirdLastTxnProps = imodel.txns.getTxnProps(secondLastTxnProps.prevId);\n chai.assert(thirdLastTxnProps !== undefined);\n chai.assert(thirdLastTxnProps?.type === \"Data\");\n chai.assert(thirdLastTxnProps?.prevId === undefined);\n\n await imodel.discardChanges();\n });\n});"]}
|
|
1
|
+
{"version":3,"file":"SquashSchemaAndDataChanges.test.js","sourceRoot":"","sources":["../../../src/test/SquashSchemaAndDataChanges.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 { Guid, Id64String } from \"@itwin/core-bentley\";\nimport { BriefcaseDb } from \"../IModelDb\";\nimport { HubWrappers, IModelTestUtils } from \"./IModelTestUtils\";\nimport { ChannelControl } from \"../ChannelControl\";\nimport { Code, GeometricElementProps, IModel, SubCategoryAppearance } from \"@itwin/core-common\";\nimport { DrawingCategory } from \"../Category\";\nimport { HubMock } from \"../internal/HubMock\";\nimport { KnownTestLocations } from \"./KnownTestLocations\";\nimport * as chai from \"chai\";\nimport { TestUtils } from \"./TestUtils\";\nimport { EditTxn, withEditTxn } from \"../EditTxn\";\n\nconst schemas = {\n /** Base schema v01.00.00 with classes A, C, D */\n v01x00x00: `<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n <ECSchema schemaName=\"TestDomain\" alias=\"td\" version=\"01.00.00\" xmlns=\"http://www.bentley.com/schemas/Bentley.ECXML.3.2\">\n <ECSchemaReference name=\"BisCore\" version=\"01.00.23\" alias=\"bis\"/>\n <ECEntityClass typeName=\"A\">\n <BaseClass>bis:GraphicalElement2d</BaseClass>\n <ECProperty propertyName=\"PropA\" typeName=\"string\"/>\n </ECEntityClass>\n <ECEntityClass typeName=\"C\">\n <BaseClass>A</BaseClass>\n <ECProperty propertyName=\"PropC\" typeName=\"string\"/>\n </ECEntityClass>\n <ECEntityClass typeName=\"D\">\n <BaseClass>A</BaseClass>\n <ECProperty propertyName=\"PropD\" typeName=\"string\"/>\n </ECEntityClass>\n </ECSchema>`,\n\n /** v01.00.01 - Adds PropC2 to class C (trivial additive change) */\n v01x00x01AddPropC2: `<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n <ECSchema schemaName=\"TestDomain\" alias=\"td\" version=\"01.00.01\" xmlns=\"http://www.bentley.com/schemas/Bentley.ECXML.3.2\">\n <ECSchemaReference name=\"BisCore\" version=\"01.00.23\" alias=\"bis\"/>\n <ECEntityClass typeName=\"A\">\n <BaseClass>bis:GraphicalElement2d</BaseClass>\n <ECProperty propertyName=\"PropA\" typeName=\"string\"/>\n </ECEntityClass>\n <ECEntityClass typeName=\"C\">\n <BaseClass>A</BaseClass>\n <ECProperty propertyName=\"PropC\" typeName=\"string\"/>\n <ECProperty propertyName=\"PropC2\" typeName=\"string\"/>\n </ECEntityClass>\n <ECEntityClass typeName=\"D\">\n <BaseClass>A</BaseClass>\n <ECProperty propertyName=\"PropD\" typeName=\"string\"/>\n </ECEntityClass>\n </ECSchema>`,\n\n /** v01.00.02 - Adds PropD2 to class D (trivial additive change) */\n v01x00x02AddPropD2: `<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n <ECSchema schemaName=\"TestDomain\" alias=\"td\" version=\"01.00.02\" xmlns=\"http://www.bentley.com/schemas/Bentley.ECXML.3.2\">\n <ECSchemaReference name=\"BisCore\" version=\"01.00.23\" alias=\"bis\"/>\n <ECEntityClass typeName=\"A\">\n <BaseClass>bis:GraphicalElement2d</BaseClass>\n <ECProperty propertyName=\"PropA\" typeName=\"string\"/>\n </ECEntityClass>\n <ECEntityClass typeName=\"C\">\n <BaseClass>A</BaseClass>\n <ECProperty propertyName=\"PropC\" typeName=\"string\"/>\n <ECProperty propertyName=\"PropC2\" typeName=\"string\"/>\n </ECEntityClass>\n <ECEntityClass typeName=\"D\">\n <BaseClass>A</BaseClass>\n <ECProperty propertyName=\"PropD\" typeName=\"string\"/>\n <ECProperty propertyName=\"PropD2\" typeName=\"string\"/>\n </ECEntityClass>\n </ECSchema>`,\n\n /** v01.00.02 - Moves PropC from C to A (requires data transformation) on top of v01.00.01 */\n v01x00x02MovePropCToA: `<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n <ECSchema schemaName=\"TestDomain\" alias=\"td\" version=\"01.00.02\" xmlns=\"http://www.bentley.com/schemas/Bentley.ECXML.3.2\">\n <ECSchemaReference name=\"BisCore\" version=\"01.00.23\" alias=\"bis\"/>\n <ECEntityClass typeName=\"A\">\n <BaseClass>bis:GraphicalElement2d</BaseClass>\n <ECProperty propertyName=\"PropA\" typeName=\"string\"/>\n <ECProperty propertyName=\"PropC\" typeName=\"string\"/>\n </ECEntityClass>\n <ECEntityClass typeName=\"C\">\n <BaseClass>A</BaseClass>\n <ECProperty propertyName=\"PropC2\" typeName=\"string\"/>\n </ECEntityClass>\n <ECEntityClass typeName=\"D\">\n <BaseClass>A</BaseClass>\n <ECProperty propertyName=\"PropD\" typeName=\"string\"/>\n </ECEntityClass>\n </ECSchema>`,\n\n /** v01.00.03 - Builds on top of v01.00.02 and in addition moves PropD to base, so we can have incoming and local transforming changes */\n v01x00x03MovePropCAndD: `<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n <ECSchema schemaName=\"TestDomain\" alias=\"td\" version=\"01.00.03\" xmlns=\"http://www.bentley.com/schemas/Bentley.ECXML.3.2\">\n <ECSchemaReference name=\"BisCore\" version=\"01.00.23\" alias=\"bis\"/>\n <ECEntityClass typeName=\"A\">\n <BaseClass>bis:GraphicalElement2d</BaseClass>\n <ECProperty propertyName=\"PropA\" typeName=\"string\"/>\n <ECProperty propertyName=\"PropC\" typeName=\"string\"/>\n <ECProperty propertyName=\"PropD\" typeName=\"string\"/>\n </ECEntityClass>\n <ECEntityClass typeName=\"C\">\n <BaseClass>A</BaseClass>\n <ECProperty propertyName=\"PropC2\" typeName=\"string\"/>\n </ECEntityClass>\n <ECEntityClass typeName=\"D\">\n <BaseClass>A</BaseClass>\n <ECProperty propertyName=\"PropD2\" typeName=\"string\"/>\n </ECEntityClass>\n </ECSchema>`,\n\n /** v01.00.01 (incompatible variant) - Adds PropC3 instead of PropC2 to class C (same version) */\n v01x00x01AddPropC3Incompatible: `<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n <ECSchema schemaName=\"TestDomain\" alias=\"td\" version=\"01.00.01\" xmlns=\"http://www.bentley.com/schemas/Bentley.ECXML.3.2\">\n <ECSchemaReference name=\"BisCore\" version=\"01.00.23\" alias=\"bis\"/>\n <ECEntityClass typeName=\"A\">\n <BaseClass>bis:GraphicalElement2d</BaseClass>\n <ECProperty propertyName=\"PropA\" typeName=\"string\"/>\n </ECEntityClass>\n <ECEntityClass typeName=\"C\">\n <BaseClass>A</BaseClass>\n <ECProperty propertyName=\"PropC\" typeName=\"string\"/>\n <ECProperty propertyName=\"PropC3\" typeName=\"string\"/>\n </ECEntityClass>\n <ECEntityClass typeName=\"D\">\n <BaseClass>A</BaseClass>\n <ECProperty propertyName=\"PropD\" typeName=\"string\"/>\n </ECEntityClass>\n </ECSchema>`,\n\n /** v01.00.02 (incompatible variant) - Adds PropC3 instead of PropC2 to class C (higher version) */\n v01x00x02AddPropC3Incompatible: `<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n <ECSchema schemaName=\"TestDomain\" alias=\"td\" version=\"01.00.02\" xmlns=\"http://www.bentley.com/schemas/Bentley.ECXML.3.2\">\n <ECSchemaReference name=\"BisCore\" version=\"01.00.23\" alias=\"bis\"/>\n <ECEntityClass typeName=\"A\">\n <BaseClass>bis:GraphicalElement2d</BaseClass>\n <ECProperty propertyName=\"PropA\" typeName=\"string\"/>\n </ECEntityClass>\n <ECEntityClass typeName=\"C\">\n <BaseClass>A</BaseClass>\n <ECProperty propertyName=\"PropC\" typeName=\"string\"/>\n <ECProperty propertyName=\"PropC3\" typeName=\"string\"/>\n </ECEntityClass>\n <ECEntityClass typeName=\"D\">\n <BaseClass>A</BaseClass>\n <ECProperty propertyName=\"PropD\" typeName=\"string\"/>\n </ECEntityClass>\n </ECSchema>`,\n\n /** v01.00.02 (incompatible variant) - Adds PropC2 (higher version, different type) */\n v01x00x02AddPropC2Incompatible: `<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n <ECSchema schemaName=\"TestDomain\" alias=\"td\" version=\"01.00.02\" xmlns=\"http://www.bentley.com/schemas/Bentley.ECXML.3.2\">\n <ECSchemaReference name=\"BisCore\" version=\"01.00.23\" alias=\"bis\"/>\n <ECEntityClass typeName=\"A\">\n <BaseClass>bis:GraphicalElement2d</BaseClass>\n <ECProperty propertyName=\"PropA\" typeName=\"string\"/>\n </ECEntityClass>\n <ECEntityClass typeName=\"C\">\n <BaseClass>A</BaseClass>\n <ECProperty propertyName=\"PropC\" typeName=\"string\"/>\n <ECProperty propertyName=\"PropC2\" typeName=\"int\"/>\n </ECEntityClass>\n <ECEntityClass typeName=\"D\">\n <BaseClass>A</BaseClass>\n <ECProperty propertyName=\"PropD\" typeName=\"string\"/>\n </ECEntityClass>\n </ECSchema>`,\n};\n\ndescribe(\"SquashSchemaAndDataChanges\", () => {\n let imodel: BriefcaseDb;\n let iModelId: string;\n let drawingModelId: string;\n let drawingCategoryId: string;\n\n const createModelAndCategory = async (db: BriefcaseDb) => {\n const modelCode = IModelTestUtils.getUniqueModelCode(db, \"DrawingModel\");\n await db.locks.acquireLocks({ shared: IModel.dictionaryId });\n return withEditTxn(db, (txn) => {\n const [, newDrawingModelId] = IModelTestUtils.createAndInsertDrawingPartitionAndModel(txn, modelCode);\n const newDrawingCategoryId = DrawingCategory.insert(\n txn,\n IModel.dictionaryId,\n \"DrawingCategory\",\n new SubCategoryAppearance()\n );\n return [newDrawingModelId, newDrawingCategoryId] as const;\n });\n };\n\n const insertElement = (\n txn: EditTxn,\n className: string,\n properties: Record<string, any>\n ): Id64String => {\n const elementProps: GeometricElementProps = {\n classFullName: className,\n model: drawingModelId,\n category: drawingCategoryId,\n code: Code.createEmpty(),\n ...properties,\n };\n const element = txn.iModel.elements.createElement(elementProps);\n return txn.insertElement(element.toJSON());\n }\n\n before(async () => {\n HubMock.startup(\"MergeSchemaAndDataChanges\", KnownTestLocations.outputDir);\n await TestUtils.shutdownBackend();\n await TestUtils.startBackend({ useSemanticRebase: true });\n });\n\n beforeEach(async () => {\n iModelId = await HubWrappers.createIModel(\"user1\", HubMock.iTwinId, `Test-${Guid.createValue()}`);\n\n imodel = await HubWrappers.downloadAndOpenBriefcase({ accessToken: \"user1\", iTwinId: HubMock.iTwinId, iModelId });\n\n imodel.channels.addAllowedChannel(ChannelControl.sharedChannelName);\n\n [drawingModelId, drawingCategoryId] = await createModelAndCategory(imodel);\n await imodel.importSchemaStrings([schemas.v01x00x00, schemas.v01x00x01AddPropC2]);\n await imodel.pushChanges({ description: \"create model and category and imported schemas\" });\n });\n\n afterEach(async () => {\n imodel.close();\n await HubMock.deleteIModel({ accessToken: \"user1\", iTwinId: HubMock.iTwinId, iModelId });\n });\n\n after(async () => {\n HubMock.shutdown();\n await TestUtils.shutdownBackend();\n await TestUtils.startBackend(); // restart normal backend so subsequent test suites aren't left without IModelHost\n });\n\n it(\"should allow schema import while an EditTxn is active\", async () => {\n await imodel.locks.acquireLocks({ shared: drawingModelId });\n const txn = new EditTxn(imodel, \"schema and data changes unsaved state\");\n txn.start();\n try {\n txn.saveChanges(\"prepare for schema import\");\n await imodel.importSchemaStrings([schemas.v01x00x02MovePropCToA]);\n chai.assert(imodel.containsClass(\"TestDomain:C\"));\n } finally {\n if (txn.isActive)\n txn.end(\"abandon\");\n }\n });\n\n it(\"should squash schema and data changes if useSemanticRebase flag is on\", async () => {\n await imodel.locks.acquireLocks({ shared: drawingModelId });\n const txn = new EditTxn(imodel, \"squash schema and data changes\");\n txn.start();\n insertElement(txn, \"TestDomain:C\", {\n propA: \"local_value_a\",\n propC: \"local_value_c\",\n });\n txn.saveChanges(\"local data change\");\n await imodel.importSchemaStrings([schemas.v01x00x02MovePropCToA]); // transforming data change\n\n const lastTxnProps = imodel.txns.getLastSavedTxnProps();\n chai.assert(lastTxnProps !== undefined);\n chai.assert(lastTxnProps?.type === \"Schema\");\n chai.assert(lastTxnProps?.prevId !== undefined);\n // both schema and data(migration) changes are merged into single txn\n\n const secondLastTxnProps = imodel.txns.getTxnProps(lastTxnProps.prevId);\n chai.assert(secondLastTxnProps !== undefined);\n chai.assert(secondLastTxnProps?.type === \"Ddl\");\n chai.assert(secondLastTxnProps?.prevId !== undefined);\n\n const thirdLastTxnProps = imodel.txns.getTxnProps(secondLastTxnProps.prevId);\n chai.assert(thirdLastTxnProps !== undefined);\n chai.assert(thirdLastTxnProps?.type === \"Data\");\n chai.assert(thirdLastTxnProps?.prevId === undefined);\n\n if (txn.isActive)\n txn.end(\"abandon\");\n });\n});\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TestChangeSetUtility.d.ts","sourceRoot":"","sources":["../../../src/test/TestChangeSetUtility.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAE9D,OAAO,EAAE,WAAW,EAAmC,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"TestChangeSetUtility.d.ts","sourceRoot":"","sources":["../../../src/test/TestChangeSetUtility.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAE9D,OAAO,EAAE,WAAW,EAAmC,MAAM,iBAAiB,CAAC;AAK/E,oDAAoD;AACpD,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IAE9B,OAAO,EAAG,UAAU,CAAC;IACrB,QAAQ,EAAG,UAAU,CAAC;IAC7B,OAAO,CAAC,OAAO,CAAe;IAC9B,OAAO,CAAC,YAAY,CAAc;IAElC,OAAO,CAAC,QAAQ,CAAU;IAC1B,OAAO,CAAC,WAAW,CAAU;gBAEjB,WAAW,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM;YAK1C,YAAY;YAMZ,eAAe;YAMf,eAAe;IAO7B;;OAEG;IACU,gBAAgB,IAAI,OAAO,CAAC,WAAW,CAAC;IAmBxC,iBAAiB;IAOjB,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC;CAM/C"}
|
|
@@ -6,6 +6,7 @@ import { ColorDef, IModel, SubCategoryAppearance } from "@itwin/core-common";
|
|
|
6
6
|
import { ChannelControl, SpatialCategory } from "../core-backend";
|
|
7
7
|
import { HubMock } from "../internal/HubMock";
|
|
8
8
|
import { HubWrappers, IModelTestUtils } from "./IModelTestUtils";
|
|
9
|
+
import { withEditTxn } from "../EditTxn";
|
|
9
10
|
/** Test utility to push an iModel and ChangeSets */
|
|
10
11
|
export class TestChangeSetUtility {
|
|
11
12
|
_iModelName;
|
|
@@ -20,17 +21,20 @@ export class TestChangeSetUtility {
|
|
|
20
21
|
this._iModelName = IModelTestUtils.generateUniqueName(iModelName); // Generate a unique name for the iModel (so that this test can be run simultaneously by multiple users+hosts simultaneously)
|
|
21
22
|
}
|
|
22
23
|
async addTestModel() {
|
|
23
|
-
|
|
24
|
-
|
|
24
|
+
withEditTxn(this._iModel, "Added test model", (txn) => {
|
|
25
|
+
[, this._modelId] = IModelTestUtils.createAndInsertPhysicalPartitionAndModel(txn, IModelTestUtils.getUniqueModelCode(txn.iModel, "TestPhysicalModel"), true);
|
|
26
|
+
});
|
|
25
27
|
}
|
|
26
28
|
async addTestCategory() {
|
|
27
|
-
|
|
28
|
-
|
|
29
|
+
withEditTxn(this._iModel, "Added test category", (txn) => {
|
|
30
|
+
this._categoryId = SpatialCategory.insert(txn, IModel.dictionaryId, "TestSpatialCategory", new SubCategoryAppearance({ color: ColorDef.fromString("rgb(255,0,0)").toJSON() }));
|
|
31
|
+
});
|
|
29
32
|
}
|
|
30
33
|
async addTestElements() {
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
+
withEditTxn(this._iModel, "Added test elements", (txn) => {
|
|
35
|
+
txn.insertElement(IModelTestUtils.createPhysicalObject(txn.iModel, this._modelId, this._categoryId).toJSON());
|
|
36
|
+
txn.insertElement(IModelTestUtils.createPhysicalObject(txn.iModel, this._modelId, this._categoryId).toJSON());
|
|
37
|
+
});
|
|
34
38
|
}
|
|
35
39
|
/** Create a new iModel, populate it, push the changes and returns the opened db.
|
|
36
40
|
* Uses the iTwinId from HubMock.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TestChangeSetUtility.js","sourceRoot":"","sources":["../../../src/test/TestChangeSetUtility.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAG/F,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAC7E,OAAO,EAAe,cAAc,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAC/E,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"TestChangeSetUtility.js","sourceRoot":"","sources":["../../../src/test/TestChangeSetUtility.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 { AccessToken, GuidString } from \"@itwin/core-bentley\";\nimport { ColorDef, IModel, SubCategoryAppearance } from \"@itwin/core-common\";\nimport { BriefcaseDb, ChannelControl, SpatialCategory } from \"../core-backend\";\nimport { HubMock } from \"../internal/HubMock\";\nimport { HubWrappers, IModelTestUtils } from \"./IModelTestUtils\";\nimport { withEditTxn } from \"../EditTxn\";\n\n/** Test utility to push an iModel and ChangeSets */\nexport class TestChangeSetUtility {\n private readonly _iModelName: string;\n\n public iTwinId!: GuidString;\n public iModelId!: GuidString;\n private _iModel!: BriefcaseDb;\n private _accessToken: AccessToken;\n\n private _modelId!: string;\n private _categoryId!: string;\n\n constructor(accessToken: AccessToken, iModelName: string) {\n this._accessToken = accessToken;\n this._iModelName = IModelTestUtils.generateUniqueName(iModelName); // Generate a unique name for the iModel (so that this test can be run simultaneously by multiple users+hosts simultaneously)\n }\n\n private async addTestModel(): Promise<void> {\n withEditTxn(this._iModel, \"Added test model\", (txn) => {\n [, this._modelId] = IModelTestUtils.createAndInsertPhysicalPartitionAndModel(txn, IModelTestUtils.getUniqueModelCode(txn.iModel, \"TestPhysicalModel\"), true);\n });\n }\n\n private async addTestCategory(): Promise<void> {\n withEditTxn(this._iModel, \"Added test category\", (txn) => {\n this._categoryId = SpatialCategory.insert(txn, IModel.dictionaryId, \"TestSpatialCategory\", new SubCategoryAppearance({ color: ColorDef.fromString(\"rgb(255,0,0)\").toJSON() }));\n });\n }\n\n private async addTestElements(): Promise<void> {\n withEditTxn(this._iModel, \"Added test elements\", (txn) => {\n txn.insertElement(IModelTestUtils.createPhysicalObject(txn.iModel, this._modelId, this._categoryId).toJSON());\n txn.insertElement(IModelTestUtils.createPhysicalObject(txn.iModel, this._modelId, this._categoryId).toJSON());\n });\n }\n\n /** Create a new iModel, populate it, push the changes and returns the opened db.\n * Uses the iTwinId from HubMock.\n */\n public async createTestIModel(): Promise<BriefcaseDb> {\n this.iTwinId = HubMock.iTwinId;\n\n // Re-create iModel on iModelHub\n this.iModelId = await HubWrappers.recreateIModel({ accessToken: this._accessToken, iTwinId: this.iTwinId, iModelName: this._iModelName, noLocks: true });\n\n this._iModel = await HubWrappers.downloadAndOpenBriefcase({ accessToken: this._accessToken, iTwinId: this.iTwinId, iModelId: this.iModelId });\n this._iModel.channels.addAllowedChannel(ChannelControl.sharedChannelName);\n\n // Populate sample data\n await this.addTestModel();\n await this.addTestCategory();\n await this.addTestElements();\n\n // Push changes to the hub\n await this._iModel.pushChanges({ accessToken: this._accessToken, description: \"Setup test model\" });\n return this._iModel;\n }\n\n public async pushTestChangeSet() {\n if (!this._iModel)\n throw new Error(\"Must first call createTestIModel\");\n await this.addTestElements();\n await this._iModel.pushChanges({ accessToken: this._accessToken, description: \"Added test elements\" });\n }\n\n public async deleteTestIModel(): Promise<void> {\n if (!this._iModel)\n throw new Error(\"Must first call createTestIModel\");\n await HubWrappers.closeAndDeleteBriefcaseDb(this._accessToken, this._iModel);\n await HubMock.deleteIModel({ accessToken: this._accessToken, iTwinId: this.iTwinId, iModelId: this.iModelId });\n }\n}\n"]}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { SaveChangesArgs } from "@itwin/core-common";
|
|
2
|
+
import { EditTxn } from "../EditTxn";
|
|
3
|
+
import type { IModelDb } from "../IModelDb";
|
|
4
|
+
export declare function withEditTxn<T>(iModel: IModelDb, fn: (txn: EditTxn) => T): T;
|
|
5
|
+
export declare function withEditTxn<T>(iModel: IModelDb, saveArgs: string | SaveChangesArgs, fn: (txn: EditTxn) => T): T;
|
|
6
|
+
export declare function withEditTxn<T>(iModel: IModelDb, fn: (txn: EditTxn) => Promise<T>): Promise<T>;
|
|
7
|
+
export declare function withEditTxn<T>(iModel: IModelDb, saveArgs: string | SaveChangesArgs, fn: (txn: EditTxn) => Promise<T>): Promise<T>;
|
|
8
|
+
//# sourceMappingURL=TestEditTxn.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TestEditTxn.d.ts","sourceRoot":"","sources":["../../../src/test/TestEditTxn.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACrC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAE5C,wBAAgB,WAAW,CAAC,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC;AAC7E,wBAAgB,WAAW,CAAC,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,GAAG,eAAe,EAAE,EAAE,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC;AACjH,wBAAgB,WAAW,CAAC,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;AAC/F,wBAAgB,WAAW,CAAC,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,GAAG,eAAe,EAAE,EAAE,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/*---------------------------------------------------------------------------------------------
|
|
2
|
+
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
|
|
3
|
+
* See LICENSE.md in the project root for license terms and full copyright notice.
|
|
4
|
+
*--------------------------------------------------------------------------------------------*/
|
|
5
|
+
import { EditTxn } from "../EditTxn";
|
|
6
|
+
export function withEditTxn(iModel, saveArgsOrFn, maybeFn) {
|
|
7
|
+
const saveArgs = "function" === typeof saveArgsOrFn ? undefined : saveArgsOrFn;
|
|
8
|
+
const fn = "function" === typeof saveArgsOrFn ? saveArgsOrFn : maybeFn;
|
|
9
|
+
if (undefined === fn)
|
|
10
|
+
throw new Error("withEditTxn requires a callback");
|
|
11
|
+
const txn = new EditTxn(iModel, "test");
|
|
12
|
+
txn.start();
|
|
13
|
+
try {
|
|
14
|
+
const result = fn(txn);
|
|
15
|
+
if (result instanceof Promise) {
|
|
16
|
+
return result.then((value) => {
|
|
17
|
+
txn.end("save", saveArgs);
|
|
18
|
+
return value;
|
|
19
|
+
}, (err) => {
|
|
20
|
+
if (txn.isActive)
|
|
21
|
+
txn.end("abandon");
|
|
22
|
+
throw err;
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
txn.end("save", saveArgs);
|
|
26
|
+
return result;
|
|
27
|
+
}
|
|
28
|
+
catch (err) {
|
|
29
|
+
if (txn.isActive)
|
|
30
|
+
txn.end("abandon");
|
|
31
|
+
throw err;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=TestEditTxn.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TestEditTxn.js","sourceRoot":"","sources":["../../../src/test/TestEditTxn.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAG/F,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAOrC,MAAM,UAAU,WAAW,CAAI,MAAgB,EAAE,YAA2E,EAAE,OAA0C;IACtK,MAAM,QAAQ,GAAG,UAAU,KAAK,OAAO,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC;IAC/E,MAAM,EAAE,GAAG,UAAU,KAAK,OAAO,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,OAAO,CAAC;IAEvE,IAAI,SAAS,KAAK,EAAE;QAClB,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;IAErD,MAAM,GAAG,GAAG,IAAI,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACxC,GAAG,CAAC,KAAK,EAAE,CAAC;IAEZ,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC;QACvB,IAAI,MAAM,YAAY,OAAO,EAAE,CAAC;YAC9B,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE;gBAC3B,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;gBAC1B,OAAO,KAAK,CAAC;YACf,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE;gBACT,IAAI,GAAG,CAAC,QAAQ;oBACd,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;gBAErB,MAAM,GAAG,CAAC;YACZ,CAAC,CAAC,CAAC;QACL,CAAC;QAED,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QAC1B,OAAO,MAAM,CAAC;IAChB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,GAAG,CAAC,QAAQ;YACd,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAErB,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC","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 { SaveChangesArgs } from \"@itwin/core-common\";\nimport { EditTxn } from \"../EditTxn\";\nimport type { IModelDb } from \"../IModelDb\";\n\nexport function withEditTxn<T>(iModel: IModelDb, fn: (txn: EditTxn) => T): T;\nexport function withEditTxn<T>(iModel: IModelDb, saveArgs: string | SaveChangesArgs, fn: (txn: EditTxn) => T): T;\nexport function withEditTxn<T>(iModel: IModelDb, fn: (txn: EditTxn) => Promise<T>): Promise<T>;\nexport function withEditTxn<T>(iModel: IModelDb, saveArgs: string | SaveChangesArgs, fn: (txn: EditTxn) => Promise<T>): Promise<T>;\nexport function withEditTxn<T>(iModel: IModelDb, saveArgsOrFn: string | SaveChangesArgs | ((txn: EditTxn) => T | Promise<T>), maybeFn?: (txn: EditTxn) => T | Promise<T>): T | Promise<T> {\n const saveArgs = \"function\" === typeof saveArgsOrFn ? undefined : saveArgsOrFn;\n const fn = \"function\" === typeof saveArgsOrFn ? saveArgsOrFn : maybeFn;\n\n if (undefined === fn)\n throw new Error(\"withEditTxn requires a callback\");\n\n const txn = new EditTxn(iModel, \"test\");\n txn.start();\n\n try {\n const result = fn(txn);\n if (result instanceof Promise) {\n return result.then((value) => {\n txn.end(\"save\", saveArgs);\n return value;\n }, (err) => {\n if (txn.isActive)\n txn.end(\"abandon\");\n\n throw err;\n });\n }\n\n txn.end(\"save\", saveArgs);\n return result;\n } catch (err) {\n if (txn.isActive)\n txn.end(\"abandon\");\n\n throw err;\n }\n}\n\n"]}
|
|
@@ -20,6 +20,7 @@ export declare class DisableNativeAssertions implements Disposable {
|
|
|
20
20
|
dispose(): void;
|
|
21
21
|
}
|
|
22
22
|
export declare class TestUtils {
|
|
23
|
+
private static shouldLogToConsole;
|
|
23
24
|
static getCacheDir(fallback?: string | undefined): string | undefined;
|
|
24
25
|
/** Handles the startup of IModelHost.
|
|
25
26
|
* The provided config is used and will override any of the default values used in this method.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TestUtils.d.ts","sourceRoot":"","sources":["../../../src/test/TestUtils.ts"],"names":[],"mappings":"AASA,OAAO,EAAc,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAG9D,mCAAmC;AACnC,qBAAa,KAAK;IAChB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,MAAM,CAAO;gBACT,KAAK,EAAE,MAAM;IAKlB,GAAG;CAMX;AAED;;;;;GAKG;AACH,qBAAa,uBAAwB,YAAW,UAAU;IACxD,OAAO,CAAC,OAAO,CAAqD;;IAM7D,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,IAAI;IAQ/B,qGAAqG;IAC9F,OAAO,IAAI,IAAI;CAGvB;AAED,qBAAa,SAAS;
|
|
1
|
+
{"version":3,"file":"TestUtils.d.ts","sourceRoot":"","sources":["../../../src/test/TestUtils.ts"],"names":[],"mappings":"AASA,OAAO,EAAc,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAG9D,mCAAmC;AACnC,qBAAa,KAAK;IAChB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,MAAM,CAAO;gBACT,KAAK,EAAE,MAAM;IAKlB,GAAG;CAMX;AAED;;;;;GAKG;AACH,qBAAa,uBAAwB,YAAW,UAAU;IACxD,OAAO,CAAC,OAAO,CAAqD;;IAM7D,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,IAAI;IAQ/B,qGAAqG;IAC9F,OAAO,IAAI,IAAI;CAGvB;AAED,qBAAa,SAAS;IACpB,OAAO,CAAC,MAAM,CAAC,kBAAkB;WAInB,WAAW,CAAC,QAAQ,GAAE,MAAM,GAAG,SAAqB;IAOlE;;;;;;OAMG;WACiB,YAAY,CAAC,MAAM,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;WAQvD,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC;WAItC,YAAY;IAQ1B,OAAO,CAAC,MAAM,CAAC,kBAAkB;WAUnB,mBAAmB;WAInB,mBAAmB;CAGlC"}
|
|
@@ -46,6 +46,9 @@ export class DisableNativeAssertions {
|
|
|
46
46
|
}
|
|
47
47
|
}
|
|
48
48
|
export class TestUtils {
|
|
49
|
+
static shouldLogToConsole() {
|
|
50
|
+
return process.env.ITWINJS_CORE_BACKEND_TEST_LOG_TO_CONSOLE === "1";
|
|
51
|
+
}
|
|
49
52
|
static getCacheDir(fallback = undefined) {
|
|
50
53
|
if (ProcessDetector.isMobileAppBackend) {
|
|
51
54
|
return undefined; // Let the native side handle the cache.
|
|
@@ -63,13 +66,17 @@ export class TestUtils {
|
|
|
63
66
|
const cfg = config ?? {};
|
|
64
67
|
cfg.cacheDir = TestUtils.getCacheDir(cfg.cacheDir);
|
|
65
68
|
cfg.allowSharedChannel ??= false; // Override default to test shared channel enforcement. Remove in version 5.0.
|
|
69
|
+
cfg.implicitWriteEnforcement ??= "throw";
|
|
66
70
|
await IModelHost.startup(cfg);
|
|
67
71
|
}
|
|
68
72
|
static async shutdownBackend() {
|
|
69
73
|
return IModelHost.shutdown();
|
|
70
74
|
}
|
|
71
75
|
static setupLogging() {
|
|
72
|
-
|
|
76
|
+
if (TestUtils.shouldLogToConsole())
|
|
77
|
+
Logger.initializeToConsole();
|
|
78
|
+
else
|
|
79
|
+
Logger.initialize();
|
|
73
80
|
Logger.setLevelDefault(LogLevel.Error);
|
|
74
81
|
}
|
|
75
82
|
static initDebugLogLevels(reset) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TestUtils.js","sourceRoot":"","sources":["../../../src/test/TestUtils.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAE/F,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAkB,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAChF,OAAO,EAAE,qBAAqB,EAAE,MAAM,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAC/F,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAE,UAAU,EAAqB,MAAM,eAAe,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAE1D,mCAAmC;AACnC,MAAM,OAAO,KAAK;IACR,MAAM,CAAS;IACf,MAAM,CAAO;IACrB,YAAY,KAAa;QACvB,IAAI,CAAC,MAAM,GAAG,KAAK,KAAK,EAAE,CAAC;QAC3B,IAAI,CAAC,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;IAC3B,CAAC;IAEM,GAAG;QACR,MAAM,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;QACxB,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACvD,sCAAsC;QACtC,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,KAAK,OAAO,IAAI,CAAC,CAAC;IAC9C,CAAC;CACF;AAED;;;;;GAKG;AACH,MAAM,OAAO,uBAAuB;IAC1B,OAAO,CAAqD;IAEpE;QACE,IAAI,CAAC,OAAO,GAAG,IAAI,YAAY,CAAC,QAAQ,CAAC,uBAAuB,EAAE,CAAC;IACrE,CAAC;IAEM,CAAC,MAAM,CAAC,OAAO,CAAC;QACrB,IAAI,CAAC,IAAI,CAAC,OAAO;YACf,OAAO;QAET,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;QACvB,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC;IAC3B,CAAC;IAED,qGAAqG;IAC9F,OAAO;QACZ,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;IACzB,CAAC;CACF;AAED,MAAM,OAAO,SAAS;
|
|
1
|
+
{"version":3,"file":"TestUtils.js","sourceRoot":"","sources":["../../../src/test/TestUtils.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 * as path from \"path\";\nimport { IModelJsNative, NativeLoggerCategory } from \"@bentley/imodeljs-native\";\nimport { BentleyLoggerCategory, Logger, LogLevel, ProcessDetector } from \"@itwin/core-bentley\";\nimport { BackendLoggerCategory } from \"../BackendLoggerCategory\";\nimport { IModelHost, IModelHostOptions } from \"../IModelHost\";\nimport { IModelNative } from \"../internal/NativePlatform\";\n\n/** Class for simple test timing */\nexport class Timer {\n private _label: string;\n private _start: Date;\n constructor(label: string) {\n this._label = `\\t${label}`;\n this._start = new Date();\n }\n\n public end() {\n const stop = new Date();\n const elapsed = stop.getTime() - this._start.getTime();\n // eslint-disable-next-line no-console\n console.log(`${this._label}: ${elapsed}ms`);\n }\n}\n\n/**\n * Disables native code assertions from firing. This can be used by tests that intentionally\n * test failing operations. If those failing operations raise assertions in native code, the test\n * would fail unexpectedly in a debug build. In that case the native code assertions can be disabled with\n * this class.\n */\nexport class DisableNativeAssertions implements Disposable {\n private _native: IModelJsNative.DisableNativeAssertions | undefined;\n\n constructor() {\n this._native = new IModelNative.platform.DisableNativeAssertions();\n }\n\n public [Symbol.dispose](): void {\n if (!this._native)\n return;\n\n this._native.dispose();\n this._native = undefined;\n }\n\n /** @deprecated in 5.0 - will not be removed until after 2026-06-13. Use [Symbol.dispose] instead. */\n public dispose(): void {\n this[Symbol.dispose]();\n }\n}\n\nexport class TestUtils {\n private static shouldLogToConsole(): boolean {\n return process.env.ITWINJS_CORE_BACKEND_TEST_LOG_TO_CONSOLE === \"1\";\n }\n\n public static getCacheDir(fallback: string | undefined = undefined) {\n if (ProcessDetector.isMobileAppBackend) {\n return undefined; // Let the native side handle the cache.\n }\n return fallback ?? path.join(__dirname, \".cache\"); // Set the cache dir to be under the lib directory.\n }\n\n /** Handles the startup of IModelHost.\n * The provided config is used and will override any of the default values used in this method.\n *\n * The default includes:\n * - cacheDir = path.join(__dirname, \".cache\")\n * - allowSharedChannel = false;\n */\n public static async startBackend(config?: IModelHostOptions): Promise<void> {\n const cfg = config ?? {};\n cfg.cacheDir = TestUtils.getCacheDir(cfg.cacheDir);\n cfg.allowSharedChannel ??= false; // Override default to test shared channel enforcement. Remove in version 5.0.\n cfg.implicitWriteEnforcement ??= \"throw\";\n await IModelHost.startup(cfg);\n }\n\n public static async shutdownBackend(): Promise<void> {\n return IModelHost.shutdown();\n }\n\n public static setupLogging() {\n if (TestUtils.shouldLogToConsole())\n Logger.initializeToConsole();\n else\n Logger.initialize();\n Logger.setLevelDefault(LogLevel.Error);\n }\n\n private static initDebugLogLevels(reset?: boolean) {\n Logger.setLevelDefault(reset ? LogLevel.Error : LogLevel.Warning);\n Logger.setLevel(BentleyLoggerCategory.Performance, reset ? LogLevel.Error : LogLevel.Info);\n Logger.setLevel(BackendLoggerCategory.IModelDb, reset ? LogLevel.Error : LogLevel.Trace);\n Logger.setLevel(NativeLoggerCategory.DgnCore, reset ? LogLevel.Error : LogLevel.Trace);\n Logger.setLevel(NativeLoggerCategory.BeSQLite, reset ? LogLevel.Error : LogLevel.Trace);\n }\n\n // Setup typical programmatic log level overrides here\n // Convenience method used to debug specific tests/fixtures\n public static setupDebugLogLevels() {\n TestUtils.initDebugLogLevels(false);\n }\n\n public static resetDebugLogLevels() {\n TestUtils.initDebugLogLevels(true);\n }\n}\n\n// The very first \"before\" run to initially setup the logging and initial backend.\nbefore(async () => {\n TestUtils.setupLogging();\n await TestUtils.startBackend();\n});\n\nafter(async () => {\n await TestUtils.shutdownBackend();\n});\n\n"]}
|