diff --git a/__tests__/files/gmail-outlook/01/r_htmlContent.html b/__tests__/files/gmail-outlook/one/01/r_htmlContent.html similarity index 100% rename from __tests__/files/gmail-outlook/01/r_htmlContent.html rename to __tests__/files/gmail-outlook/one/01/r_htmlContent.html diff --git a/__tests__/files/gmail-outlook/01/r_plainContent.data b/__tests__/files/gmail-outlook/one/01/r_plainContent.data similarity index 100% rename from __tests__/files/gmail-outlook/01/r_plainContent.data rename to __tests__/files/gmail-outlook/one/01/r_plainContent.data diff --git a/__tests__/files/gmail-outlook/01/s_htmlContent.html b/__tests__/files/gmail-outlook/one/01/s_htmlContent.html similarity index 100% rename from __tests__/files/gmail-outlook/01/s_htmlContent.html rename to __tests__/files/gmail-outlook/one/01/s_htmlContent.html diff --git a/__tests__/files/gmail-outlook/01/s_plainContent.data b/__tests__/files/gmail-outlook/one/01/s_plainContent.data similarity index 100% rename from __tests__/files/gmail-outlook/01/s_plainContent.data rename to __tests__/files/gmail-outlook/one/01/s_plainContent.data diff --git a/__tests__/files/gmail-outlook/02/r_htmlContent.html b/__tests__/files/gmail-outlook/one/02/r_htmlContent.html similarity index 100% rename from __tests__/files/gmail-outlook/02/r_htmlContent.html rename to __tests__/files/gmail-outlook/one/02/r_htmlContent.html diff --git a/__tests__/files/gmail-outlook/02/r_plainContent.data b/__tests__/files/gmail-outlook/one/02/r_plainContent.data similarity index 100% rename from __tests__/files/gmail-outlook/02/r_plainContent.data rename to __tests__/files/gmail-outlook/one/02/r_plainContent.data diff --git a/__tests__/files/gmail-outlook/02/s_htmlContent.html b/__tests__/files/gmail-outlook/one/02/s_htmlContent.html similarity index 100% rename from __tests__/files/gmail-outlook/02/s_htmlContent.html rename to __tests__/files/gmail-outlook/one/02/s_htmlContent.html diff --git a/__tests__/files/gmail-outlook/02/s_plainContent.data b/__tests__/files/gmail-outlook/one/02/s_plainContent.data similarity index 100% rename from __tests__/files/gmail-outlook/02/s_plainContent.data rename to __tests__/files/gmail-outlook/one/02/s_plainContent.data diff --git a/__tests__/files/gmail-outlook/03/r_htmlContent.html b/__tests__/files/gmail-outlook/one/03/r_htmlContent.html similarity index 100% rename from __tests__/files/gmail-outlook/03/r_htmlContent.html rename to __tests__/files/gmail-outlook/one/03/r_htmlContent.html diff --git a/__tests__/files/gmail-outlook/03/r_plainContent.data b/__tests__/files/gmail-outlook/one/03/r_plainContent.data similarity index 100% rename from __tests__/files/gmail-outlook/03/r_plainContent.data rename to __tests__/files/gmail-outlook/one/03/r_plainContent.data diff --git a/__tests__/files/gmail-outlook/03/s_htmlContent.html b/__tests__/files/gmail-outlook/one/03/s_htmlContent.html similarity index 100% rename from __tests__/files/gmail-outlook/03/s_htmlContent.html rename to __tests__/files/gmail-outlook/one/03/s_htmlContent.html diff --git a/__tests__/files/gmail-outlook/03/s_plainContent.data b/__tests__/files/gmail-outlook/one/03/s_plainContent.data similarity index 100% rename from __tests__/files/gmail-outlook/03/s_plainContent.data rename to __tests__/files/gmail-outlook/one/03/s_plainContent.data diff --git a/__tests__/files/gmail-outlook/04/r_htmlContent.html b/__tests__/files/gmail-outlook/one/04/r_htmlContent.html similarity index 100% rename from __tests__/files/gmail-outlook/04/r_htmlContent.html rename to __tests__/files/gmail-outlook/one/04/r_htmlContent.html diff --git a/__tests__/files/gmail-outlook/04/r_plainContent.data b/__tests__/files/gmail-outlook/one/04/r_plainContent.data similarity index 100% rename from __tests__/files/gmail-outlook/04/r_plainContent.data rename to __tests__/files/gmail-outlook/one/04/r_plainContent.data diff --git a/__tests__/files/gmail-outlook/04/s_htmlContent.html b/__tests__/files/gmail-outlook/one/04/s_htmlContent.html similarity index 100% rename from __tests__/files/gmail-outlook/04/s_htmlContent.html rename to __tests__/files/gmail-outlook/one/04/s_htmlContent.html diff --git a/__tests__/files/gmail-outlook/04/s_plainContent.data b/__tests__/files/gmail-outlook/one/04/s_plainContent.data similarity index 100% rename from __tests__/files/gmail-outlook/04/s_plainContent.data rename to __tests__/files/gmail-outlook/one/04/s_plainContent.data diff --git a/__tests__/files/gmail-outlook/05/r_htmlContent.html b/__tests__/files/gmail-outlook/one/05/r_htmlContent.html similarity index 100% rename from __tests__/files/gmail-outlook/05/r_htmlContent.html rename to __tests__/files/gmail-outlook/one/05/r_htmlContent.html diff --git a/__tests__/files/gmail-outlook/05/r_plainContent.data b/__tests__/files/gmail-outlook/one/05/r_plainContent.data similarity index 100% rename from __tests__/files/gmail-outlook/05/r_plainContent.data rename to __tests__/files/gmail-outlook/one/05/r_plainContent.data diff --git a/__tests__/files/gmail-outlook/05/s_htmlContent.html b/__tests__/files/gmail-outlook/one/05/s_htmlContent.html similarity index 100% rename from __tests__/files/gmail-outlook/05/s_htmlContent.html rename to __tests__/files/gmail-outlook/one/05/s_htmlContent.html diff --git a/__tests__/files/gmail-outlook/05/s_plainContent.data b/__tests__/files/gmail-outlook/one/05/s_plainContent.data similarity index 100% rename from __tests__/files/gmail-outlook/05/s_plainContent.data rename to __tests__/files/gmail-outlook/one/05/s_plainContent.data diff --git a/__tests__/files/gmail-outlook/06/r_htmlContent.html b/__tests__/files/gmail-outlook/one/06/r_htmlContent.html similarity index 100% rename from __tests__/files/gmail-outlook/06/r_htmlContent.html rename to __tests__/files/gmail-outlook/one/06/r_htmlContent.html diff --git a/__tests__/files/gmail-outlook/06/r_plainContent.data b/__tests__/files/gmail-outlook/one/06/r_plainContent.data similarity index 100% rename from __tests__/files/gmail-outlook/06/r_plainContent.data rename to __tests__/files/gmail-outlook/one/06/r_plainContent.data diff --git a/__tests__/files/gmail-outlook/06/s_htmlContent.html b/__tests__/files/gmail-outlook/one/06/s_htmlContent.html similarity index 100% rename from __tests__/files/gmail-outlook/06/s_htmlContent.html rename to __tests__/files/gmail-outlook/one/06/s_htmlContent.html diff --git a/__tests__/files/gmail-outlook/06/s_plainContent.data b/__tests__/files/gmail-outlook/one/06/s_plainContent.data similarity index 100% rename from __tests__/files/gmail-outlook/06/s_plainContent.data rename to __tests__/files/gmail-outlook/one/06/s_plainContent.data diff --git a/__tests__/files/gmail-outlook/07/r_htmlContent.html b/__tests__/files/gmail-outlook/one/07/r_htmlContent.html similarity index 100% rename from __tests__/files/gmail-outlook/07/r_htmlContent.html rename to __tests__/files/gmail-outlook/one/07/r_htmlContent.html diff --git a/__tests__/files/gmail-outlook/07/r_plainContent.data b/__tests__/files/gmail-outlook/one/07/r_plainContent.data similarity index 100% rename from __tests__/files/gmail-outlook/07/r_plainContent.data rename to __tests__/files/gmail-outlook/one/07/r_plainContent.data diff --git a/__tests__/files/gmail-outlook/07/s_htmlContent.html b/__tests__/files/gmail-outlook/one/07/s_htmlContent.html similarity index 100% rename from __tests__/files/gmail-outlook/07/s_htmlContent.html rename to __tests__/files/gmail-outlook/one/07/s_htmlContent.html diff --git a/__tests__/files/gmail-outlook/07/s_plainContent.data b/__tests__/files/gmail-outlook/one/07/s_plainContent.data similarity index 100% rename from __tests__/files/gmail-outlook/07/s_plainContent.data rename to __tests__/files/gmail-outlook/one/07/s_plainContent.data diff --git a/__tests__/files/gmail-outlook/08/r_htmlContent.html b/__tests__/files/gmail-outlook/one/08/r_htmlContent.html similarity index 100% rename from __tests__/files/gmail-outlook/08/r_htmlContent.html rename to __tests__/files/gmail-outlook/one/08/r_htmlContent.html diff --git a/__tests__/files/gmail-outlook/08/r_plainContent.data b/__tests__/files/gmail-outlook/one/08/r_plainContent.data similarity index 100% rename from __tests__/files/gmail-outlook/08/r_plainContent.data rename to __tests__/files/gmail-outlook/one/08/r_plainContent.data diff --git a/__tests__/files/gmail-outlook/08/s_htmlContent.html b/__tests__/files/gmail-outlook/one/08/s_htmlContent.html similarity index 100% rename from __tests__/files/gmail-outlook/08/s_htmlContent.html rename to __tests__/files/gmail-outlook/one/08/s_htmlContent.html diff --git a/__tests__/files/gmail-outlook/08/s_plainContent.data b/__tests__/files/gmail-outlook/one/08/s_plainContent.data similarity index 100% rename from __tests__/files/gmail-outlook/08/s_plainContent.data rename to __tests__/files/gmail-outlook/one/08/s_plainContent.data diff --git a/__tests__/files/gmail-outlook/10/r_htmlContent.html b/__tests__/files/gmail-outlook/one/10/r_htmlContent.html similarity index 100% rename from __tests__/files/gmail-outlook/10/r_htmlContent.html rename to __tests__/files/gmail-outlook/one/10/r_htmlContent.html diff --git a/__tests__/files/gmail-outlook/10/r_plainContent.data b/__tests__/files/gmail-outlook/one/10/r_plainContent.data similarity index 100% rename from __tests__/files/gmail-outlook/10/r_plainContent.data rename to __tests__/files/gmail-outlook/one/10/r_plainContent.data diff --git a/__tests__/files/gmail-outlook/10/s_htmlContent.html b/__tests__/files/gmail-outlook/one/10/s_htmlContent.html similarity index 100% rename from __tests__/files/gmail-outlook/10/s_htmlContent.html rename to __tests__/files/gmail-outlook/one/10/s_htmlContent.html diff --git a/__tests__/files/gmail-outlook/10/s_plainContent.data b/__tests__/files/gmail-outlook/one/10/s_plainContent.data similarity index 100% rename from __tests__/files/gmail-outlook/10/s_plainContent.data rename to __tests__/files/gmail-outlook/one/10/s_plainContent.data diff --git a/__tests__/files/gmail-outlook/20forward/r_htmlContent.html b/__tests__/files/gmail-outlook/one/20forward/r_htmlContent.html similarity index 100% rename from __tests__/files/gmail-outlook/20forward/r_htmlContent.html rename to __tests__/files/gmail-outlook/one/20forward/r_htmlContent.html diff --git a/__tests__/files/gmail-outlook/20forward/r_plainContent.data b/__tests__/files/gmail-outlook/one/20forward/r_plainContent.data similarity index 100% rename from __tests__/files/gmail-outlook/20forward/r_plainContent.data rename to __tests__/files/gmail-outlook/one/20forward/r_plainContent.data diff --git a/__tests__/files/gmail-outlook/20forward/s_htmlContent.html b/__tests__/files/gmail-outlook/one/20forward/s_htmlContent.html similarity index 100% rename from __tests__/files/gmail-outlook/20forward/s_htmlContent.html rename to __tests__/files/gmail-outlook/one/20forward/s_htmlContent.html diff --git a/__tests__/files/gmail-outlook/20forward/s_plainContent.data b/__tests__/files/gmail-outlook/one/20forward/s_plainContent.data similarity index 100% rename from __tests__/files/gmail-outlook/20forward/s_plainContent.data rename to __tests__/files/gmail-outlook/one/20forward/s_plainContent.data diff --git a/__tests__/files/gmail-outlook/20reply/r_htmlContent.html b/__tests__/files/gmail-outlook/one/20reply/r_htmlContent.html similarity index 100% rename from __tests__/files/gmail-outlook/20reply/r_htmlContent.html rename to __tests__/files/gmail-outlook/one/20reply/r_htmlContent.html diff --git a/__tests__/files/gmail-outlook/20reply/r_plainContent.data b/__tests__/files/gmail-outlook/one/20reply/r_plainContent.data similarity index 100% rename from __tests__/files/gmail-outlook/20reply/r_plainContent.data rename to __tests__/files/gmail-outlook/one/20reply/r_plainContent.data diff --git a/__tests__/files/gmail-outlook/20reply/s_htmlContent.html b/__tests__/files/gmail-outlook/one/20reply/s_htmlContent.html similarity index 100% rename from __tests__/files/gmail-outlook/20reply/s_htmlContent.html rename to __tests__/files/gmail-outlook/one/20reply/s_htmlContent.html diff --git a/__tests__/files/gmail-outlook/20reply/s_plainContent.data b/__tests__/files/gmail-outlook/one/20reply/s_plainContent.data similarity index 100% rename from __tests__/files/gmail-outlook/20reply/s_plainContent.data rename to __tests__/files/gmail-outlook/one/20reply/s_plainContent.data diff --git a/__tests__/files/gmail-outlook/21forward/s_htmlContent.html b/__tests__/files/gmail-outlook/one/21forward/s_htmlContent.html similarity index 100% rename from __tests__/files/gmail-outlook/21forward/s_htmlContent.html rename to __tests__/files/gmail-outlook/one/21forward/s_htmlContent.html diff --git a/__tests__/files/gmail-outlook/21forward/s_plainContent.data b/__tests__/files/gmail-outlook/one/21forward/s_plainContent.data similarity index 100% rename from __tests__/files/gmail-outlook/21forward/s_plainContent.data rename to __tests__/files/gmail-outlook/one/21forward/s_plainContent.data diff --git a/__tests__/files/gmail-outlook/21reply/r_htmlContent.html b/__tests__/files/gmail-outlook/one/21reply/r_htmlContent.html similarity index 100% rename from __tests__/files/gmail-outlook/21reply/r_htmlContent.html rename to __tests__/files/gmail-outlook/one/21reply/r_htmlContent.html diff --git a/__tests__/files/gmail-outlook/21reply/r_plainContent.data b/__tests__/files/gmail-outlook/one/21reply/r_plainContent.data similarity index 100% rename from __tests__/files/gmail-outlook/21reply/r_plainContent.data rename to __tests__/files/gmail-outlook/one/21reply/r_plainContent.data diff --git a/__tests__/files/gmail-outlook/21reply/s_htmlContent.html b/__tests__/files/gmail-outlook/one/21reply/s_htmlContent.html similarity index 100% rename from __tests__/files/gmail-outlook/21reply/s_htmlContent.html rename to __tests__/files/gmail-outlook/one/21reply/s_htmlContent.html diff --git a/__tests__/files/gmail-outlook/21reply/s_plainContent.data b/__tests__/files/gmail-outlook/one/21reply/s_plainContent.data similarity index 100% rename from __tests__/files/gmail-outlook/21reply/s_plainContent.data rename to __tests__/files/gmail-outlook/one/21reply/s_plainContent.data diff --git a/__tests__/files/gmail-outlook/22reply/r_htmlContent.html b/__tests__/files/gmail-outlook/one/22reply/r_htmlContent.html similarity index 100% rename from __tests__/files/gmail-outlook/22reply/r_htmlContent.html rename to __tests__/files/gmail-outlook/one/22reply/r_htmlContent.html diff --git a/__tests__/files/gmail-outlook/22reply/r_plainContent.data b/__tests__/files/gmail-outlook/one/22reply/r_plainContent.data similarity index 100% rename from __tests__/files/gmail-outlook/22reply/r_plainContent.data rename to __tests__/files/gmail-outlook/one/22reply/r_plainContent.data diff --git a/__tests__/files/gmail-outlook/22reply/s_htmlContent.html b/__tests__/files/gmail-outlook/one/22reply/s_htmlContent.html similarity index 100% rename from __tests__/files/gmail-outlook/22reply/s_htmlContent.html rename to __tests__/files/gmail-outlook/one/22reply/s_htmlContent.html diff --git a/__tests__/files/gmail-outlook/22reply/s_plainContent.data b/__tests__/files/gmail-outlook/one/22reply/s_plainContent.data similarity index 100% rename from __tests__/files/gmail-outlook/22reply/s_plainContent.data rename to __tests__/files/gmail-outlook/one/22reply/s_plainContent.data diff --git a/__tests__/files/gmail-outlook/23forward/s_htmlContent.html b/__tests__/files/gmail-outlook/one/23forward/s_htmlContent.html similarity index 100% rename from __tests__/files/gmail-outlook/23forward/s_htmlContent.html rename to __tests__/files/gmail-outlook/one/23forward/s_htmlContent.html diff --git a/__tests__/files/gmail-outlook/23forward/s_plainContent.data b/__tests__/files/gmail-outlook/one/23forward/s_plainContent.data similarity index 100% rename from __tests__/files/gmail-outlook/23forward/s_plainContent.data rename to __tests__/files/gmail-outlook/one/23forward/s_plainContent.data diff --git a/__tests__/files/gmail-outlook/23reply/r_htmlContent.html b/__tests__/files/gmail-outlook/one/23reply/r_htmlContent.html similarity index 100% rename from __tests__/files/gmail-outlook/23reply/r_htmlContent.html rename to __tests__/files/gmail-outlook/one/23reply/r_htmlContent.html diff --git a/__tests__/files/gmail-outlook/23reply/r_plainContent.data b/__tests__/files/gmail-outlook/one/23reply/r_plainContent.data similarity index 100% rename from __tests__/files/gmail-outlook/23reply/r_plainContent.data rename to __tests__/files/gmail-outlook/one/23reply/r_plainContent.data diff --git a/__tests__/files/gmail-outlook/23reply/s_htmlContent.html b/__tests__/files/gmail-outlook/one/23reply/s_htmlContent.html similarity index 100% rename from __tests__/files/gmail-outlook/23reply/s_htmlContent.html rename to __tests__/files/gmail-outlook/one/23reply/s_htmlContent.html diff --git a/__tests__/files/gmail-outlook/23reply/s_plainContent.data b/__tests__/files/gmail-outlook/one/23reply/s_plainContent.data similarity index 100% rename from __tests__/files/gmail-outlook/23reply/s_plainContent.data rename to __tests__/files/gmail-outlook/one/23reply/s_plainContent.data diff --git a/__tests__/files/gmail-outlook/24forward/s_htmlContent.html b/__tests__/files/gmail-outlook/one/24forward/s_htmlContent.html similarity index 100% rename from __tests__/files/gmail-outlook/24forward/s_htmlContent.html rename to __tests__/files/gmail-outlook/one/24forward/s_htmlContent.html diff --git a/__tests__/files/gmail-outlook/24forward/s_plainContent.data b/__tests__/files/gmail-outlook/one/24forward/s_plainContent.data similarity index 100% rename from __tests__/files/gmail-outlook/24forward/s_plainContent.data rename to __tests__/files/gmail-outlook/one/24forward/s_plainContent.data diff --git a/__tests__/files/gmail-outlook/24reply/r_htmlContent.html b/__tests__/files/gmail-outlook/one/24reply/r_htmlContent.html similarity index 100% rename from __tests__/files/gmail-outlook/24reply/r_htmlContent.html rename to __tests__/files/gmail-outlook/one/24reply/r_htmlContent.html diff --git a/__tests__/files/gmail-outlook/24reply/r_plainContent.data b/__tests__/files/gmail-outlook/one/24reply/r_plainContent.data similarity index 100% rename from __tests__/files/gmail-outlook/24reply/r_plainContent.data rename to __tests__/files/gmail-outlook/one/24reply/r_plainContent.data diff --git a/__tests__/files/gmail-outlook/24reply/s_htmlContent.html b/__tests__/files/gmail-outlook/one/24reply/s_htmlContent.html similarity index 100% rename from __tests__/files/gmail-outlook/24reply/s_htmlContent.html rename to __tests__/files/gmail-outlook/one/24reply/s_htmlContent.html diff --git a/__tests__/files/gmail-outlook/24reply/s_plainContent.data b/__tests__/files/gmail-outlook/one/24reply/s_plainContent.data similarity index 100% rename from __tests__/files/gmail-outlook/24reply/s_plainContent.data rename to __tests__/files/gmail-outlook/one/24reply/s_plainContent.data diff --git a/__tests__/files/gmail-outlook/25reply/r_htmlContent.html b/__tests__/files/gmail-outlook/one/25reply/r_htmlContent.html similarity index 100% rename from __tests__/files/gmail-outlook/25reply/r_htmlContent.html rename to __tests__/files/gmail-outlook/one/25reply/r_htmlContent.html diff --git a/__tests__/files/gmail-outlook/25reply/r_plainContent.data b/__tests__/files/gmail-outlook/one/25reply/r_plainContent.data similarity index 100% rename from __tests__/files/gmail-outlook/25reply/r_plainContent.data rename to __tests__/files/gmail-outlook/one/25reply/r_plainContent.data diff --git a/__tests__/files/gmail-outlook/25reply/s_htmlContent.html b/__tests__/files/gmail-outlook/one/25reply/s_htmlContent.html similarity index 100% rename from __tests__/files/gmail-outlook/25reply/s_htmlContent.html rename to __tests__/files/gmail-outlook/one/25reply/s_htmlContent.html diff --git a/__tests__/files/gmail-outlook/25reply/s_plainContent.data b/__tests__/files/gmail-outlook/one/25reply/s_plainContent.data similarity index 100% rename from __tests__/files/gmail-outlook/25reply/s_plainContent.data rename to __tests__/files/gmail-outlook/one/25reply/s_plainContent.data diff --git a/__tests__/files/gmail-outlook/26reply/r_htmlContent.html b/__tests__/files/gmail-outlook/one/26reply/r_htmlContent.html similarity index 100% rename from __tests__/files/gmail-outlook/26reply/r_htmlContent.html rename to __tests__/files/gmail-outlook/one/26reply/r_htmlContent.html diff --git a/__tests__/files/gmail-outlook/26reply/r_plainContent.data b/__tests__/files/gmail-outlook/one/26reply/r_plainContent.data similarity index 100% rename from __tests__/files/gmail-outlook/26reply/r_plainContent.data rename to __tests__/files/gmail-outlook/one/26reply/r_plainContent.data diff --git a/__tests__/files/gmail-outlook/26reply/s_htmlContent.html b/__tests__/files/gmail-outlook/one/26reply/s_htmlContent.html similarity index 100% rename from __tests__/files/gmail-outlook/26reply/s_htmlContent.html rename to __tests__/files/gmail-outlook/one/26reply/s_htmlContent.html diff --git a/__tests__/files/gmail-outlook/26reply/s_plainContent.data b/__tests__/files/gmail-outlook/one/26reply/s_plainContent.data similarity index 100% rename from __tests__/files/gmail-outlook/26reply/s_plainContent.data rename to __tests__/files/gmail-outlook/one/26reply/s_plainContent.data diff --git a/__tests__/files/gmail-outlook/27reply/r_htmlContent.html b/__tests__/files/gmail-outlook/one/27reply/r_htmlContent.html similarity index 100% rename from __tests__/files/gmail-outlook/27reply/r_htmlContent.html rename to __tests__/files/gmail-outlook/one/27reply/r_htmlContent.html diff --git a/__tests__/files/gmail-outlook/27reply/r_plainContent.data b/__tests__/files/gmail-outlook/one/27reply/r_plainContent.data similarity index 100% rename from __tests__/files/gmail-outlook/27reply/r_plainContent.data rename to __tests__/files/gmail-outlook/one/27reply/r_plainContent.data diff --git a/__tests__/files/gmail-outlook/27reply/s_htmlContent.html b/__tests__/files/gmail-outlook/one/27reply/s_htmlContent.html similarity index 100% rename from __tests__/files/gmail-outlook/27reply/s_htmlContent.html rename to __tests__/files/gmail-outlook/one/27reply/s_htmlContent.html diff --git a/__tests__/files/gmail-outlook/27reply/s_plainContent.data b/__tests__/files/gmail-outlook/one/27reply/s_plainContent.data similarity index 100% rename from __tests__/files/gmail-outlook/27reply/s_plainContent.data rename to __tests__/files/gmail-outlook/one/27reply/s_plainContent.data diff --git a/__tests__/html-gmail-outlook.test.ts b/__tests__/html-gmail-outlook.test.ts new file mode 100644 index 0000000000000000000000000000000000000000..d8ca81d2a7b40cb6c96df703020e30fd9f912f2e --- /dev/null +++ b/__tests__/html-gmail-outlook.test.ts @@ -0,0 +1,33 @@ +import { EMAIL_VENDORS } from "../src"; + +const path = require("path"); +import { describe } from "@jest/globals"; +import { createDescribeHtmlTestCases } from "./utils"; + +const TESTS_GLOBAL_PATH = "/files/gmail-outlook"; +const testsPath = path.resolve(__dirname, `.${TESTS_GLOBAL_PATH}`); + +describe("[HTML] GMail-Outlook", () => { + const describeFunction = createDescribeHtmlTestCases( + testsPath, + EMAIL_VENDORS.GMAIL + ); + + describe( + "One", + describeFunction("one", [ + "02", + "03", + "04", + "20forward", + "20reply", + "21reply", + "22reply", + "23reply", + "24reply", + "25reply", + "26reply", + "27reply", + ]) + ); +}); diff --git a/__tests__/html-outlook-outlook.test.ts b/__tests__/html-outlook-outlook.test.ts index 4dd8e4b21fcf8314bb264bb2e907457c7b1dd7e9..0fa3d3a460de421a0894b366391e0481a22345de 100644 --- a/__tests__/html-outlook-outlook.test.ts +++ b/__tests__/html-outlook-outlook.test.ts @@ -1,80 +1,88 @@ -import { describe, test, expect } from "@jest/globals"; -import { JSDOM } from "jsdom"; -import HTMLNormalizer from "../src/HTMLNormalizer"; -import { EMAIL_VENDORS } from "../src/constants"; -const fs = require("fs"); +import { describe } from "@jest/globals"; +import { EMAIL_VENDORS } from "../src"; +import { createDescribeHtmlTestCases } from "./utils"; const path = require("path"); -// Test cases from https://code.vereign.com/alexey.lunin/outlook-files-upload - const TESTS_GLOBAL_PATH = "/files/outlook-outlook"; -const SENT_HTML_NAME = "s_htmlContent.html"; -const RECEIVED_HTML_NAME = "r_htmlContent.html"; - const testsPath = path.resolve(__dirname, `.${TESTS_GLOBAL_PATH}`); -const getTestCasesDirs = (testCasesPath: string) => { - return fs.readdirSync(testCasesPath).filter(function (file) { - return fs.statSync(testCasesPath + "/" + file).isDirectory(); - }); -}; - -const getNormalizedHtml = ( - testCasePath: string -): { - sentHtml: string; - receivedHtml: string; -} => { - const sentHtml = fs - .readFileSync(`${testCasePath}/${SENT_HTML_NAME}`) - .toString(); - const receivedHtml = fs - .readFileSync(`${testCasePath}/${RECEIVED_HTML_NAME}`) - .toString(); - - const sentDOM = new JSDOM(sentHtml); - const receivedDOM = new JSDOM(receivedHtml); - const sentNormalizedHtml = HTMLNormalizer.normalizeVendorHtml( - sentDOM.window.document, - EMAIL_VENDORS.OUTLOOK - ); - const receivedNormalizedHtml = HTMLNormalizer.normalizeVendorHtml( - receivedDOM.window.document, +describe("Outlook emails HTML normalization", () => { + const describeFunction = createDescribeHtmlTestCases( + testsPath, EMAIL_VENDORS.OUTLOOK ); - return { - sentHtml: sentNormalizedHtml, - receivedHtml: receivedNormalizedHtml, - }; -}; - -describe("Outlook emails HTML normalization", () => { - const describeTestCases = (casesName: string) => () => { - const testsCasesPath = testsPath + "/" + casesName; - const testCasesDirs = getTestCasesDirs(testsCasesPath); - - test.each(testCasesDirs)("Case %s", (dirName: string) => { - const testCasePath = testsCasesPath + "/" + dirName; - let normalizedHtmls; - try { - normalizedHtmls = getNormalizedHtml(testCasePath); - } catch (e) { - console.log(`Invalid test case: ${casesName}/${dirName}`); - return; - } - - const { sentHtml, receivedHtml } = normalizedHtmls; - - expect(receivedHtml.length).toBeGreaterThan(0); - expect(sentHtml.length).toBeGreaterThan(0); - expect(receivedHtml).toContain(sentHtml); - }); - }; + describe( + "Emails Chrome", + describeFunction("chrome", [ + "20", + "20forward", + "20reply", + "21", + "21forward", + "21reply", + "22", + "23", + "24", + "25", + "26", + "28", + ]) + ); - describe("Emails Chrome", describeTestCases("chrome")); - describe("Emails Edge", describeTestCases("edge")); - describe("Emails Safari", describeTestCases("safari")); - describe("Emails MacOS", describeTestCases("macos")); - describe("Emails Windows", describeTestCases("windows")); + describe( + "Emails Edge", + describeFunction("edge", [ + "20", + "20forward", + "20reply", + "21", + "22", + "23", + "24", + "25", + "26", + "28", + ]) + ); + describe( + "Emails Safari", + describeFunction("safari", [ + "04", + "20", + "20forward", + "20reply", + "21", + "21forward", + "21reply", + "22", + "23", + "24", + "25", + "26", + "28", + ]) + ); + // describe( + // "Emails MacOS", + // describeFunction("macos", ["20", "21", "22", "23", "24", "25", "26"]) + // ); + describe( + "Emails Windows", + describeFunction("windows", [ + "06", + "20", + "20forward", + "20reply", + "21", + "21forward", + "21reply", + "22", + "23", + "24", + "25", + "26", + "28", + ]) + ); }); diff --git a/__tests__/plain-gmail-outlook.test.ts b/__tests__/plain-gmail-outlook.test.ts new file mode 100644 index 0000000000000000000000000000000000000000..f40d1f6a3c6c22ed1eff002e7ac9d4fa21a36f91 --- /dev/null +++ b/__tests__/plain-gmail-outlook.test.ts @@ -0,0 +1,27 @@ +import { describe } from "@jest/globals"; +import { createDescribePlainTestCases } from "./utils"; +const path = require("path"); + +const TESTS_GLOBAL_PATH = "/files/gmail-outlook"; + +const testsPath = path.resolve(__dirname, `.${TESTS_GLOBAL_PATH}`); + +describe("[Plain] Gmail-Outlook normalization", () => { + const describeFunction = createDescribePlainTestCases(testsPath); + describe( + "One", + describeFunction("one", [ + "02", + "04", + "20forward", + "20reply", + "21reply", + "22reply", + "23reply", + "24reply", + "25reply", + "26reply", + "27reply", + ]) + ); +}); diff --git a/__tests__/plain-outlook-outlook.test.ts b/__tests__/plain-outlook-outlook.test.ts index f8063d74580c909f9161e740c4f7cdadd902529e..b4d729e076f256e96a4f2fead44ae4f98c944d4e 100644 --- a/__tests__/plain-outlook-outlook.test.ts +++ b/__tests__/plain-outlook-outlook.test.ts @@ -1,69 +1,16 @@ -import { describe, test, expect } from "@jest/globals"; -import { PlainNormalizer } from "../src"; -const fs = require("fs"); +import { describe } from "@jest/globals"; +import { createDescribePlainTestCases } from "./utils"; const path = require("path"); -// Test cases from https://code.vereign.com/alexey.lunin/outlook-files-upload - const TESTS_GLOBAL_PATH = "/files/outlook-outlook"; -const SENT_HTML_NAME = "s_plainContent.data"; -const RECEIVED_HTML_NAME = "r_plainContent.data"; const testsPath = path.resolve(__dirname, `.${TESTS_GLOBAL_PATH}`); -const getTestCasesDirs = (testCasesPath: string) => { - return fs.readdirSync(testCasesPath).filter(function (file) { - return fs.statSync(testCasesPath + "/" + file).isDirectory(); - }); -}; - -const getNormalizedHtml = ( - testCasePath: string -): { - sentPlain: string; - receivedPlain: string; -} => { - const sentPlain = fs - .readFileSync(`${testCasePath}/${SENT_HTML_NAME}`) - .toString(); - const receivedPlain = fs - .readFileSync(`${testCasePath}/${RECEIVED_HTML_NAME}`) - .toString(); - - const sentNormalizedPlain = PlainNormalizer.normalizePlain(sentPlain); - const receivedNormalizedPlain = PlainNormalizer.normalizePlain(receivedPlain); - - return { - sentPlain: sentNormalizedPlain, - receivedPlain: receivedNormalizedPlain, - }; -}; describe("Outlook emails Plain normalization", () => { - const describeTestCases = (casesName: string) => () => { - const testsCasesPath = testsPath + "/" + casesName; - const testCasesDirs = getTestCasesDirs(testsCasesPath); - - test.each(testCasesDirs)("Case %s", (dirName: string) => { - const testCasePath = testsCasesPath + "/" + dirName; - let normalizedHtmls; - try { - normalizedHtmls = getNormalizedHtml(testCasePath); - } catch (e) { - console.log(`Invalid test case: ${casesName}/${dirName}`); - return; - } - - const { sentPlain, receivedPlain } = normalizedHtmls; - - expect(sentPlain.length).toBeGreaterThan(0); - expect(receivedPlain.length).toBeGreaterThan(0); - expect(receivedPlain).toContain(sentPlain); - }); - }; - - describe("Emails Chrome", describeTestCases("chrome")); - describe("Emails Edge", describeTestCases("edge")); - describe("Emails Safari", describeTestCases("safari")); - describe("Emails MacOS", describeTestCases("macos")); - describe("Emails Windows", describeTestCases("windows")); + const describeFunction = createDescribePlainTestCases(testsPath); + describe("Emails Chrome", describeFunction("chrome")); + describe("Emails Edge", describeFunction("edge", ["21"])); + describe("Emails Safari", describeFunction("safari")); + describe("Emails MacOS", describeFunction("macos", ["21", "23", "25"])); + describe("Emails Windows", describeFunction("windows", ["25"])); }); diff --git a/__tests__/utils.ts b/__tests__/utils.ts new file mode 100644 index 0000000000000000000000000000000000000000..decebccb08e0119dc3e46dd76d2301795e927821 --- /dev/null +++ b/__tests__/utils.ts @@ -0,0 +1,123 @@ +import { JSDOM } from "jsdom"; +const fs = require("fs"); + +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"; +import { PlainNormalizer, HTMLNormalizer } from "../src"; +import { expect, test } from "@jest/globals"; + +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 sentNormalizedPlain = PlainNormalizer.normalizePlain(sentPlain); + const receivedNormalizedPlain = PlainNormalizer.normalizePlain(receivedPlain); + + return { + sentPlain: sentNormalizedPlain, + receivedPlain: receivedNormalizedPlain, + }; +}; + +export const getTestCasesDirs = (testCasesPath: string): Array<string> => { + return fs.readdirSync(testCasesPath).filter(function (file) { + return fs.statSync(testCasesPath + "/" + file).isDirectory(); + }); +}; + +export const getNormalizedHtml = ( + testCasePath: string, + vendor: string +): { + sentHtml: string; + receivedHtml: string; +} => { + const sentHtml = fs + .readFileSync(`${testCasePath}/${SENT_HTML_NAME}`) + .toString(); + const receivedHtml = fs + .readFileSync(`${testCasePath}/${RECEIVED_HTML_NAME}`) + .toString(); + + const sentDOM = new JSDOM(sentHtml); + const receivedDOM = new JSDOM(receivedHtml); + + const sentNormalizedHtml = HTMLNormalizer.normalizeVendorHtml( + sentDOM.window.document, + vendor + ); + const receivedNormalizedHtml = HTMLNormalizer.normalizeVendorHtml( + receivedDOM.window.document, + vendor + ); + + return { + sentHtml: sentNormalizedHtml, + receivedHtml: receivedNormalizedHtml, + }; +}; + +export const createDescribeHtmlTestCases = ( + testsPath: string, + vendor: string +) => (casesGroupName: string, failingCases: Array<string> = []) => (): void => { + const testsCasesPath = testsPath + "/" + casesGroupName; + const testCasesDirs = getTestCasesDirs(testsCasesPath).filter( + (dir) => !failingCases.includes(dir) + ); + + test.each(testCasesDirs)("Case %s", (dirName: string) => { + const testCasePath = testsCasesPath + "/" + dirName; + let normalizedHtmls; + try { + normalizedHtmls = getNormalizedHtml(testCasePath, vendor); + } catch (e) { + console.log(`Invalid test case: ${casesGroupName}/${dirName}`); + return; + } + + const { sentHtml, receivedHtml } = normalizedHtmls; + + expect(receivedHtml.length).toBeGreaterThan(0); + expect(sentHtml.length).toBeGreaterThan(0); + expect(receivedHtml).toContain(sentHtml); + }); +}; + +export const createDescribePlainTestCases = (testsPath: string) => ( + casesName: string, + failingCases: Array<string> = [] +) => (): void => { + const testsCasesPath = testsPath + "/" + casesName; + const testCasesDirs = getTestCasesDirs(testsCasesPath).filter( + (dir) => !failingCases.includes(dir) + ); + + test.each(testCasesDirs)("Case %s", (dirName: string) => { + const testCasePath = testsCasesPath + "/" + dirName; + let normalizedPlain; + try { + normalizedPlain = getNormalizedPlain(testCasePath); + } catch (e) { + console.log(`Invalid test case: ${casesName}/${dirName}`); + return; + } + + const { sentPlain, receivedPlain } = normalizedPlain; + + expect(sentPlain.length).toBeGreaterThan(0); + expect(receivedPlain.length).toBeGreaterThan(0); + expect(receivedPlain).toContain(sentPlain); + }); +}; diff --git a/jest.config.js b/jest.config.js index 36404fa586704e71e467945335b40fc3304a5457..216e02ed6b0bfb29264c3d559ea89249c600c2df 100644 --- a/jest.config.js +++ b/jest.config.js @@ -82,7 +82,7 @@ module.exports = { // moduleNameMapper: {}, // An array of regexp pattern strings, matched against all module paths before considered 'visible' to the module loader - modulePathIgnorePatterns: ["testData.ts"], + modulePathIgnorePatterns: ["__tests__/utils.ts"], // Activates notifications for test results // notify: false, diff --git a/src/HTMLNormalizer/strategies/outlook.ts b/src/HTMLNormalizer/strategies/outlook.ts index f2c72f51177eadcd64a5c974915af70e500a8030..b67248f1f9651bd3c91b66e231badace6f589664 100644 --- a/src/HTMLNormalizer/strategies/outlook.ts +++ b/src/HTMLNormalizer/strategies/outlook.ts @@ -34,18 +34,18 @@ export const amendOutlookNodes = (document: HTMLDocument): void => { */ // Quoted text in web apps - const appendOnSend = document.querySelector( - "[id*='appendonsend']" - ) as Node; - - if (appendOnSend) { - let child = appendOnSend; - while (child) { - const nextSibling = child.nextSibling; - child.parentNode.removeChild(child); - child = nextSibling as Node; - } - } + // const appendOnSend = document.querySelector( + // "[id*='appendonsend']" + // ) as Node; + // + // if (appendOnSend) { + // let child = appendOnSend; + // while (child) { + // const nextSibling = child.nextSibling; + // child.parentNode.removeChild(child); + // child = nextSibling as Node; + // } + // } // Quoted text in desktop apps // let mailOriginal = document.querySelector("[name*='_MailOriginal']") as HTMLElement;