@itwin/insights-client
Version:
Insights client for the iTwin platform
86 lines • 3.77 kB
JavaScript
/*---------------------------------------------------------------------------------------------
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
* See LICENSE.md in the project root for license terms and full copyright notice.
*--------------------------------------------------------------------------------------------*/
import * as chaiAsPromised from "chai-as-promised";
import { expect, use } from "chai";
import "reflect-metadata";
import { accessToken, configurationsClient, extractionClient, groupsClient, iTwinId, jobsClient, mappingsClient, testIModel } from "../utils/GlobalSetup";
import { ExtractionState } from "../../grouping-and-mapping/interfaces/Extraction";
import { sleep } from "../utils/imodels-client-test-utils/CommonTestUtils";
use(chaiAsPromised);
describe("EC3JobsClient (extraction schema)", () => {
let configurationId;
let mappingId;
let extractionId;
before(async () => {
const newMapping = {
mappingName: "TestM",
iModelId: testIModel.id,
extractionEnabled: true,
};
const mapping = await mappingsClient.createMapping(accessToken, newMapping);
mappingId = mapping.id;
const newGroup = {
groupName: "TestG",
query: "select * from biscore.element limit 10",
};
const group = await groupsClient.createGroup(accessToken, mapping.id, newGroup);
const extractionRequestDetails = {
iModelId: testIModel.id,
mappings: [
{ id: mappingId },
],
};
const extraction = await extractionClient.runExtraction(accessToken, extractionRequestDetails);
extractionId = extraction.id;
let state = ExtractionState.Queued;
let status;
for (const start = performance.now(); performance.now() - start < 6 * 60 * 1000; await sleep(3000)) {
status = await extractionClient.getExtractionStatus(accessToken, extraction.id);
state = status.state;
// eslint-disable-next-line @typescript-eslint/no-unsafe-enum-comparison
if (state !== ExtractionState.Queued && state.valueOf() !== ExtractionState.Running)
break;
}
expect(state).to.be.eq(ExtractionState.Succeeded);
const material = {
nameColumn: "materialName",
};
const label = {
name: "name",
mappingId,
groupName: group.groupName,
elementNameColumn: "elementName",
elementQuantityColumn: "elementQuantity",
materials: [material],
};
const newConfig = {
iTwinId,
iModelId: testIModel.id,
displayName: "Test",
labels: [label],
};
const config = await configurationsClient.createConfiguration(accessToken, newConfig);
configurationId = config.id;
});
after(async () => {
await mappingsClient.deleteMapping(accessToken, mappingId);
await configurationsClient.deleteConfiguration(accessToken, configurationId);
});
it("jobs - run extraction and get status", async () => {
const newJob = {
projectName: "test",
ec3BearerToken: "no token :(",
configurationId,
extractionId,
};
const job = await jobsClient.createJob(accessToken, newJob);
expect(job).to.not.be.undefined;
expect(job.id).to.not.be.undefined;
const status = await jobsClient.getEC3JobStatus(accessToken, job.id);
expect(status).to.not.be.undefined;
expect(["Failed", "Running", "Queued"]).to.include(status.status);
});
});
//# sourceMappingURL=EC3JobsClientExtraction.test.js.map