@apideck/portman
Version:
Port OpenAPI Spec to Postman Collection, with contract & variation tests included
79 lines • 3.7 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.IntegrationTestWriter = void 0;
var postman_collection_1 = require("postman-collection");
var types_1 = require("../types");
var _1 = require("./");
var IntegrationTestWriter = (function () {
function IntegrationTestWriter(options) {
var testSuite = options.testSuite, integrationTestFolderName = options.integrationTestFolderName;
this.testSuite = testSuite;
this.operationFolders = {};
this.integrationTestCollection = new postman_collection_1.Collection();
this.integrationTestFolder = new postman_collection_1.ItemGroup({
name: integrationTestFolderName
});
}
IntegrationTestWriter.prototype.add = function (integrationTest) {
var _this = this;
var testSuite = this.testSuite;
var name = integrationTest.name, operations = integrationTest.operations;
var variationWriter = new _1.VariationWriter({
testSuite: this.testSuite,
variationFolderName: name
});
operations.map(function (operation) {
var variations = ((operation === null || operation === void 0 ? void 0 : operation.variations) || []);
var openApiOperationId = operation.openApiOperationId;
var pmOperation = testSuite.postmanParser.getOperationById(openApiOperationId);
if (!pmOperation) {
_this.testSuite.track.openApiOperationIds.push(openApiOperationId);
return;
}
var folderId = variationWriter.variationFolder.id;
var oaOperation = testSuite.oasParser.getOperationByPath(pmOperation.pathRef);
variations.map(function (variation) {
var variationName = variation.name;
var operationVariation = pmOperation.clone({
newId: "".concat(variationName, "-").concat(Math.random()),
name: variationName
});
_this.testSuite.registerOperationTestType(operationVariation, types_1.PortmanTestTypes.integration);
variationWriter.injectVariations(operationVariation, oaOperation, variation, operation);
_this.addToLocalCollection(operationVariation, folderId, name);
});
});
};
IntegrationTestWriter.prototype.addToLocalCollection = function (operationVariation, folderId, folderName) {
var target;
if (folderId) {
if (this.operationFolders[folderId]) {
target = this.integrationTestCollection.items.one(this.operationFolders[folderId]);
}
else {
var newFolder = new postman_collection_1.ItemGroup({
name: folderName || 'Integrations'
});
this.integrationTestCollection.items.add(newFolder);
this.operationFolders[folderId] = newFolder.id;
target = newFolder;
}
}
else {
target = this.integrationTestCollection;
}
target.items.add(operationVariation.item);
};
IntegrationTestWriter.prototype.mergeToCollection = function (collection) {
var _this = this;
this.integrationTestCollection.items.map(function (item) {
_this.integrationTestFolder.items.add(item);
});
collection.items.add(this.integrationTestFolder);
this.testSuite.postmanParser.collection = collection;
return collection;
};
return IntegrationTestWriter;
}());
exports.IntegrationTestWriter = IntegrationTestWriter;
//# sourceMappingURL=IntegrationTestWriter.js.map