UNPKG

@itwin/presentation-testing

Version:

Testing utilities for iTwin.js Presentation library

57 lines 2.4 kB
"use strict"; /*--------------------------------------------------------------------------------------------- * Copyright (c) Bentley Systems, Incorporated. All rights reserved. * See LICENSE.md in the project root for license terms and full copyright notice. *--------------------------------------------------------------------------------------------*/ /** @packageDocumentation * @module IModel */ Object.defineProperty(exports, "__esModule", { value: true }); exports.TestIModelConnection = void 0; exports.buildTestIModel = buildTestIModel; const core_backend_1 = require("@itwin/core-backend"); const core_frontend_1 = require("@itwin/core-frontend"); const FilenameUtils_js_1 = require("./FilenameUtils.js"); const IModelBuilderImpl_js_1 = require("./IModelBuilderImpl.js"); async function buildTestIModel(nameParam, cb) { const name = typeof nameParam === "string" ? nameParam : (0, FilenameUtils_js_1.createFileNameFromString)(nameParam.test.fullTitle()); const outputFile = (0, FilenameUtils_js_1.setupOutputFileLocation)(`${name}.bim`); const db = core_backend_1.SnapshotDb.createEmpty(outputFile, { rootSubject: { name } }); const builder = new IModelBuilderImpl_js_1.TestIModelBuilderImpl(db); try { await cb(builder); } finally { db.saveChanges("Created test IModel"); db.close(); } return TestIModelConnection.openFile(outputFile); } /** * Implementation of `IModelConnection` that allows opening local files in tests. * @beta */ /* c8 ignore start */ class TestIModelConnection extends core_frontend_1.IModelConnection { _db; // This was added based on this: https://github.com/iTwin/itwinjs-core/pull/7171/files#diff-9d26b04e7ae074b911fb87be3425360d7bd55a7c9f947f5aed1ba36d359f01eb constructor(_db) { // eslint-disable-next-line @itwin/no-internal super(_db.getConnectionProps()); this._db = _db; core_frontend_1.IModelConnection.onOpen.raiseEvent(this); } get isClosed() { // eslint-disable-next-line @itwin/no-internal return !this._db.isOpen; } async close() { this._db.close(); } static openFile(filePath) { return new TestIModelConnection(core_backend_1.SnapshotDb.openFile(filePath)); } } exports.TestIModelConnection = TestIModelConnection; /* c8 ignore end */ //# sourceMappingURL=IModelUtilities.js.map