UNPKG

@case-contract-testing/case

Version:

Next-generation contract testing suite

38 lines (37 loc) 1.66 kB
"use strict"; /* eslint-disable no-underscore-dangle */ Object.defineProperty(exports, "__esModule", { value: true }); exports.ContractDownloader = void 0; const context_1 = require("../../entities/context"); const config_1 = require("../../core/config"); const dependencies_1 = require("../dependencies"); class ContractDownloader { context; broker; writeContract; resultPrinter; constructor(config, dependencies = dependencies_1.writerDependencies) { this.context = (0, context_1.constructDataContext)(dependencies.makeLogger, dependencies.resultPrinter, { ...(0, config_1.configToRunContext)({ ...dependencies.defaultConfig, ...config }), }, dependencies.defaultConfig); this.broker = dependencies.makeBrokerService(this.context); this.writeContract = dependencies.writeContract; this.resultPrinter = dependencies.resultPrinter; } async download(serviceName) { return this.broker .downloadContracts(serviceName, this.context) .then((caseContracts) => caseContracts.map((c) => { this.context.logger.debug(`Writing contract '${c.name}'`); return this.writeContract(c.contractData, { ...this.context, 'case:currentRun:context:overwriteFile': true, 'case:currentRun:context:testRunId': c.contractData._links['pb:pact-version'].name, }); })) .then((filenames) => { filenames.forEach((filename) => this.resultPrinter.printDownloadedContract(filename, this.context)); }); } } exports.ContractDownloader = ContractDownloader;