code-equality-assertions
Version:
Test assertion library for checking the contents of strings of Javascript.
41 lines (39 loc) • 1.1 kB
JavaScript
// src/index.ts
import { createPatch } from "diff";
import prettier from "prettier";
import parser from "prettier/parser-babel.js";
import * as babel from "@babel/core";
import TSSyntax from "@babel/plugin-syntax-typescript";
function standardize(code) {
return prettier.format(
babel.transform(code, {
babelrc: false,
configFile: false,
plugins: [TSSyntax]
}).code,
{ parser: "babel", plugins: [parser] }
);
}
function codeEqual(actual, expected) {
let standardActual = standardize(actual);
let standardExpected = standardize(expected);
if (standardActual === standardExpected) {
return { result: true, diff: void 0 };
} else {
return {
result: false,
diff: createPatch("", standardExpected, standardActual).split("\n").slice(4).join("\n"),
standardExpected,
standardActual
};
}
}
function codeContains(actual, expected) {
let standardActual = standardize(actual);
let standardExpected = standardize(expected);
return standardActual.indexOf(standardExpected) !== -1;
}
export {
codeEqual,
codeContains
};