n8n
Version:
n8n Workflow Automation Tool
97 lines • 4.31 kB
JavaScript
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __metadata = (this && this.__metadata) || function (k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.TestRunRepository = void 0;
const di_1 = require("@n8n/di");
const typeorm_1 = require("@n8n/typeorm");
const test_run_ee_1 = require("../../databases/entities/test-run.ee");
const not_found_error_1 = require("../../errors/response-errors/not-found.error");
const utils_ee_1 = require("../../evaluation.ee/test-runner/utils.ee");
let TestRunRepository = class TestRunRepository extends typeorm_1.Repository {
constructor(dataSource) {
super(test_run_ee_1.TestRun, dataSource.manager);
}
async createTestRun(testDefinitionId) {
const testRun = this.create({
status: 'new',
testDefinition: { id: testDefinitionId },
});
return await this.save(testRun);
}
async markAsRunning(id, totalCases) {
return await this.update(id, {
status: 'running',
runAt: new Date(),
totalCases,
passedCases: 0,
failedCases: 0,
});
}
async markAsCompleted(id, metrics) {
return await this.update(id, { status: 'completed', completedAt: new Date(), metrics });
}
async markAsCancelled(id, trx) {
trx = trx ?? this.manager;
return await trx.update(test_run_ee_1.TestRun, id, { status: 'cancelled' });
}
async markAsError(id, errorCode, errorDetails) {
return await this.update(id, {
status: 'error',
errorCode,
errorDetails,
});
}
async markAllIncompleteAsFailed() {
return await this.update({ status: (0, typeorm_1.In)(['new', 'running']) }, { status: 'error', errorCode: 'INTERRUPTED' });
}
async incrementPassed(id, trx) {
trx = trx ?? this.manager;
return await trx.increment(test_run_ee_1.TestRun, { id }, 'passedCases', 1);
}
async incrementFailed(id, trx) {
trx = trx ?? this.manager;
return await trx.increment(test_run_ee_1.TestRun, { id }, 'failedCases', 1);
}
async getMany(testDefinitionId, options) {
const findManyOptions = {
where: { testDefinition: { id: testDefinitionId } },
order: { createdAt: 'DESC' },
relations: ['testCaseExecutions'],
};
if (options?.take) {
findManyOptions.skip = options.skip;
findManyOptions.take = options.take;
}
const testRuns = await this.find(findManyOptions);
return testRuns.map(({ testCaseExecutions, ...testRun }) => {
const finalResult = testRun.status === 'completed' ? (0, utils_ee_1.getTestRunFinalResult)(testCaseExecutions) : null;
return { ...testRun, finalResult };
});
}
async getTestRunSummaryById(testDefinitionId, testRunId) {
const testRun = await this.findOne({
where: { id: testRunId, testDefinition: { id: testDefinitionId } },
relations: ['testCaseExecutions'],
});
if (!testRun) {
throw new not_found_error_1.NotFoundError('Test run not found');
}
testRun.finalResult =
testRun.status === 'completed' ? (0, utils_ee_1.getTestRunFinalResult)(testRun.testCaseExecutions) : null;
return testRun;
}
};
exports.TestRunRepository = TestRunRepository;
exports.TestRunRepository = TestRunRepository = __decorate([
(0, di_1.Service)(),
__metadata("design:paramtypes", [typeorm_1.DataSource])
], TestRunRepository);
//# sourceMappingURL=test-run.repository.ee.js.map
;