mirror of
https://github.com/Foundry376/Mailspring.git
synced 2025-01-12 19:23:13 +08:00
a23c68092e
Summary: This commit also fixes snippets for HTML-only messages to strip out HTML tags, and makes us preserve whitespace for plaintext emails by displaying them in <pre class="nylas-plaintext"> tags, and makes us log messages that fail to parse at all to a tempdir. The only issue I found with using <pre> tags for plaintext email was that some lines may trigger scrolling, so there is an associated commit (D3484) that changes the CSS for <pre class="nylas-plaintext"> to wrap lines. In the future, we can add regression tests to this test suite whenever we fix parsing bugs. Test Plan: unit tests included Reviewers: bengotow Reviewed By: bengotow Differential Revision: https://phab.nylas.com/D3483
44 lines
1.6 KiB
JavaScript
44 lines
1.6 KiB
JavaScript
const LocalDatabaseConnector = require('../src/shared/local-database-connector');
|
|
const {parseFromImap} = require('../src/shared/message-factory');
|
|
const {forEachJSONFixture, ACCOUNT_ID} = require('./helpers');
|
|
|
|
describe('MessageFactory', function MessageFactorySpecs() {
|
|
beforeEach(() => {
|
|
waitsForPromise(async () => {
|
|
await LocalDatabaseConnector.ensureAccountDatabase(ACCOUNT_ID);
|
|
const db = await LocalDatabaseConnector.forAccount(ACCOUNT_ID);
|
|
const folder = await db.Folder.create({
|
|
id: 'test-folder-id',
|
|
accountId: ACCOUNT_ID,
|
|
version: 1,
|
|
name: 'Test Folder',
|
|
role: null,
|
|
});
|
|
this.options = { accountId: ACCOUNT_ID, db, folder };
|
|
})
|
|
})
|
|
|
|
afterEach(() => {
|
|
LocalDatabaseConnector.destroyAccountDatabase(ACCOUNT_ID)
|
|
})
|
|
|
|
describe("parseFromImap", () => {
|
|
forEachJSONFixture('MessageFactory/parseFromImap', (filename, json) => {
|
|
it(`should correctly build message properties for ${filename}`, () => {
|
|
const {imapMessage, desiredParts, result} = json;
|
|
// requiring these to match makes it overly arduous to generate test
|
|
// cases from real accounts
|
|
const excludeKeys = new Set(['id', 'accountId', 'folderId', 'folder', 'labels']);
|
|
|
|
waitsForPromise(async () => {
|
|
const actual = await parseFromImap(imapMessage, desiredParts, this.options);
|
|
for (const key of Object.keys(result)) {
|
|
if (!excludeKeys.has(key)) {
|
|
expect(actual[key]).toEqual(result[key]);
|
|
}
|
|
}
|
|
});
|
|
});
|
|
})
|
|
});
|
|
});
|