@itwin/presentation-testing
Version:
Testing utilities for iTwin.js Presentation library
57 lines • 2.4 kB
JavaScript
;
/*---------------------------------------------------------------------------------------------
* 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