Skip to content
Snippets Groups Projects
Commit b6006e21 authored by Igor Markin's avatar Igor Markin
Browse files

Implement basic gmail tests using MIME parser

parent 97b6faf7
Branches
Tags
1 merge request!9Eml test cases
......@@ -13,5 +13,5 @@ describe("[HTML] GMail-GMail", () => {
EMAIL_VENDORS.GMAIL
);
describe("One", describeFunction("one", ["sssas"]));
describe("Chrome-Chrome", describeFunction("chrome-chrome", [""]));
});
......@@ -13,5 +13,5 @@ describe("[Pseudo PLAIN] GMail-GMail", () => {
EMAIL_VENDORS.GMAIL
);
describe("One", describeFunction("one"));
describe("Gmail-Gmail", describeFunction("chrome-chrome"));
});
......@@ -8,5 +8,5 @@ const testsPath = path.resolve(__dirname, `.${TESTS_GLOBAL_PATH}`);
describe("[Plain] GMail-GMail", () => {
const describeFunction = createDescribePlainTestCases(testsPath);
describe("One", describeFunction("one", ["04", "17", "18", "20"]));
describe("Chrome-Chrome", describeFunction("chrome-chrome", []));
});
import { JSDOM } from "jsdom";
const fs = require("fs");
import MIMEParser from "@vereign/mime-parser";
const SENT_HTML_NAME = "s_htmlContent.html";
const RECEIVED_HTML_NAME = "r_htmlContent.html";
const SENT_PLAIN_NAME = "s_plainContent.data";
const RECEIVED_PLAIN_NAME = "r_plainContent.data";
const SENT_EML_NAME = "sent.eml";
const RECEIVED_EML_NAME = "received.eml";
import { PlainNormalizer, HTMLNormalizer } from "../src";
import { expect, test } from "@jest/globals";
import { DOM } from "@vereign/dom";
......@@ -14,7 +13,7 @@ expect.extend({
toContainWithDiff(target, source) {
let pass = true;
try {
expect(target).toContain(source);
expect(target).toEqual(source);
} catch (e) {
pass = false;
}
......@@ -26,21 +25,31 @@ expect.extend({
},
});
const mimeCache: { [key: string]: MIMEParser } = {};
const getMime = (path: string): MIMEParser => {
if (!mimeCache[path]) {
const mimeString = fs.readFileSync(path).toString();
mimeCache[path] = new MIMEParser(mimeString);
}
return mimeCache[path];
};
export const getNormalizedPlain = (
testCasePath: string
): {
sentPlain: string;
receivedPlain: string;
} => {
const sentPlain = fs
.readFileSync(`${testCasePath}/${SENT_PLAIN_NAME}`)
.toString();
const receivedPlain = fs
.readFileSync(`${testCasePath}/${RECEIVED_PLAIN_NAME}`)
.toString();
const sentMime = getMime(`${testCasePath}/${SENT_EML_NAME}`);
const receivedMime = getMime(`${testCasePath}/${RECEIVED_EML_NAME}`);
const sentNormalizedPlain = PlainNormalizer.normalizePlain(sentPlain);
const receivedNormalizedPlain = PlainNormalizer.normalizePlain(receivedPlain);
const sentNormalizedPlain = PlainNormalizer.normalizePlain(
sentMime.getPlain()
);
const receivedNormalizedPlain = PlainNormalizer.normalizePlain(
receivedMime.getPlain()
);
return {
sentPlain: sentNormalizedPlain,
......@@ -61,12 +70,11 @@ export const getNormalizedHtml = (
sentHtml: string;
receivedHtml: string;
} => {
const sentHtml = fs
.readFileSync(`${testCasePath}/${SENT_HTML_NAME}`)
.toString();
const receivedHtml = fs
.readFileSync(`${testCasePath}/${RECEIVED_HTML_NAME}`)
.toString();
const sentMime = getMime(`${testCasePath}/${SENT_EML_NAME}`);
const receivedMime = getMime(`${testCasePath}/${RECEIVED_EML_NAME}`);
const sentHtml = sentMime.getHTML();
const receivedHtml = receivedMime.getHTML();
const sentDOM = new DOM(sentHtml);
const receivedDOM = new JSDOM(receivedHtml);
......@@ -125,6 +133,7 @@ export const createDescribeHtmlTestCases = (
// eslint-disable-next-line
// @ts-ignore
// console.log(receivedHtml);
expect(receivedHtml).toContainWithDiff(sentHtml);
});
};
......@@ -152,7 +161,6 @@ export const createDescribePlainTestCases = (testsPath: string) => (
const normalizedPlain = getNormalizedPlain(testCasePath);
const { sentPlain, receivedPlain } = normalizedPlain;
// expect(sentPlain.length).toBeGreaterThan(0);
// expect(receivedPlain.length).toBeGreaterThan(0);
......@@ -211,12 +219,6 @@ export const createDescribePseudoPlainTestCases = (
expect(normalizedReceivedPseudoPlainText).toEqual(
normalizedSentPseudoPlainText
);
// const diff = diffStringsUnified(
// normalizedReceivedPseudoPlainText,
// normalizedSentPseudoPlainText
// );
// console.log(diff);
});
};
......@@ -226,15 +228,11 @@ export const getDOMDocuments = (
sentHtmlDocument: HTMLDocument;
receivedHtmlDocument: HTMLDocument;
} => {
const sentHtml = fs
.readFileSync(`${testCasePath}/${SENT_HTML_NAME}`)
.toString();
const receivedHtml = fs
.readFileSync(`${testCasePath}/${RECEIVED_HTML_NAME}`)
.toString();
const sentMime = getMime(`${testCasePath}/${SENT_EML_NAME}`);
const receivedMime = getMime(`${testCasePath}/${RECEIVED_EML_NAME}`);
const sentDOM = new DOM(sentHtml);
const receivedDOM = new JSDOM(receivedHtml);
const sentDOM = new DOM(sentMime.getHTML());
const receivedDOM = new JSDOM(receivedMime.getHTML());
return {
sentHtmlDocument: sentDOM.window.document,
......
......@@ -1262,6 +1262,10 @@
"@types/parse5" "^5.0.3"
parse5 "^6.0.1"
"@vereign/mime-parser@git+ssh://git@code.vereign.com:code/js-toolbox/mime-parser.git":
version "1.0.0"
resolved "git+ssh://git@code.vereign.com:code/js-toolbox/mime-parser.git#d48073f6910f7c76b12883beecfb4a23721667bc"
abab@^2.0.3:
version "2.0.5"
resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.5.tgz#c0b678fb32d60fc1219c784d6a826fe385aeb79a"
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment