UNPKG

@contract-case/case-core

Version:

Core functionality for the ContractCase contract testing suite

43 lines 1.98 kB
"use strict"; /* eslint-disable no-underscore-dangle */ Object.defineProperty(exports, "__esModule", { value: true }); exports.ContractDownloader = void 0; const case_plugin_base_1 = require("@contract-case/case-plugin-base"); const config_1 = require("../../core/config"); const dependencies_1 = require("../dependencies"); class ContractDownloader { context; broker; writeContract; resultPrinter; constructor(config, printer, parentVersions, dependencies = (0, dependencies_1.writerDependencies)(printer)) { this.context = (0, case_plugin_base_1.constructDataContext)(dependencies.makeLogger, dependencies.resultFormatter, { ...(0, config_1.configToRunContext)({ ...dependencies.defaultConfig, ...(0, config_1.configFromEnv)(), ...config, }), }, dependencies.defaultConfig, parentVersions); this.broker = dependencies.makeBrokerService(this.context); this.writeContract = dependencies.writeContract; this.resultPrinter = dependencies.resultFormatter; } 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:contractsToWrite': ['hash'], '_case:currentRun:context:testRunId': c.contractData._links['pb:pact-version'].name, }); })) .then((filenames) => { filenames.forEach((details) => this.resultPrinter.printDownloadedContract(details.contractPaths.join('; '), this.context)); }); } } exports.ContractDownloader = ContractDownloader; //# sourceMappingURL=ContractDownloader.js.map