@case-contract-testing/case
Version:
Next-generation contract testing suite
38 lines (37 loc) • 1.66 kB
JavaScript
;
/* 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;