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
No related branches found
No related tags found
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