UNPKG

dts-jest

Version:

A preprocessor for Jest to snapshot test TypeScript declaration (.d.ts) files

47 lines (46 loc) 2.49 kB
"use strict"; 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); } };