UNPKG

dts-jest

Version:

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

49 lines (48 loc) 2.62 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.remap = void 0; 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"); var 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 = (0, create_source_file_1.create_source_file)(source_filename, source_content, ts); var triggers = (0, find_triggers_1.find_triggers)(source_file, ts); (0, 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 = (0, get_snapshot_description_1.get_snapshot_description)(trigger); var counter = get_increased_counter(description); var title = "".concat(description, " ").concat(counter); if (!(title in parsed_snapshot)) { throw new Error("Unmatched snapshot title `".concat(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 ".concat(snapshot_display_value)); } var snapshot_value_first_line = snapshot_value.split('\n')[0]; var header = trigger.header; source_line_contents[header.line] += " -> ".concat(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); } }; exports.remap = remap;