@contract-case/case-core
Version:
Core functionality for the ContractCase contract testing suite
43 lines • 1.98 kB
JavaScript
;
/* 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