dts-jest
Version:
A preprocessor for Jest to snapshot test TypeScript declaration (.d.ts) files
47 lines (46 loc) • 2.49 kB
JavaScript
;
exports.__esModule = true;
var jest_snapshot_parser = require("jest-snapshot-parser");
var _ts = require("typescript");
var definitions_1 = require("./definitions");
var create_source_file_1 = require("./utils/create-source-file");
var find_triggers_1 = require("./utils/find-triggers");
var get_snapshot_description_1 = require("./utils/get-snapshot-description");
var normalize_trigger_header_methods_1 = require("./utils/normalize-trigger-header-methods");
exports.remap = function (source_content, snapshot_content, options) {
if (options === void 0) { options = {}; }
var _a = options.typescript, ts = _a === void 0 ? _ts : _a, _b = options.source_filename, source_filename = _b === void 0 ? '' : _b;
var parsed_snapshot = typeof snapshot_content === 'string'
? jest_snapshot_parser.parse(snapshot_content)
: snapshot_content;
var source_file = create_source_file_1.create_source_file(source_filename, source_content, ts);
var triggers = find_triggers_1.find_triggers(source_file, ts);
normalize_trigger_header_methods_1.normalize_trigger_header_methods(triggers.map(function (trigger) { return trigger.header; }));
var source_line_contents = source_content.split('\n');
var counters = {};
triggers
.filter(function (trigger) {
return trigger.header.method === definitions_1.TestMethod.Test &&
trigger.header.flags & definitions_1.TriggerHeaderFlags[':snap'];
})
.forEach(function (trigger) {
var description = get_snapshot_description_1.get_snapshot_description(trigger);
var counter = get_increased_counter(description);
var title = description + " " + counter;
if (!(title in parsed_snapshot)) {
throw new Error("Unmatched snapshot title `" + title + "`");
}
var snapshot_value = parsed_snapshot[title];
if (typeof snapshot_value !== 'string') {
var snapshot_display_value = JSON.stringify(snapshot_value);
throw new Error("Snapshot value should be a string, but got " + snapshot_display_value);
}
var snapshot_value_first_line = snapshot_value.split('\n')[0];
var header = trigger.header;
source_line_contents[header.line] += " -> " + snapshot_value_first_line;
});
return source_line_contents.join('\n');
function get_increased_counter(title) {
return (counters[title] = title in counters ? counters[title] + 1 : 1);
}
};