UNPKG

@apideck/portman

Version:

Port OpenAPI Spec to Postman Collection, with contract & variation tests included

79 lines 3.7 kB
"use strict"; 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