UNPKG

@conjoon/extjs-dev-webmailsim

Version:

This Sencha Ext JS NPM package contains mock data for development of @conjoon/extjs-app-webmail]

305 lines (194 loc) 11.5 kB
/** * conjoon * extjs-dev-webmailsim * Copyright (C) 2020-2022 Thorsten Suckow-Homberg https://github.com/conjoon/extjs-dev-webmailsim * * Permission is hereby granted, free of charge, to any person * obtaining a copy of this software and associated documentation * files (the "Software"), to deal in the Software without restriction, * including without limitation the rights to use, copy, modify, merge, * publish, distribute, sublicense, and/or sell copies of the Software, * and to permit persons to whom the Software is furnished to do so, * subject to the following conditions: * * The above copyright notice and this permission notice shall be included * in all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE * USE OR OTHER DEALINGS IN THE SOFTWARE. */ StartTest(t => { t.requireOk("conjoon.dev.cn_mailsim.data.table.MessageTable", function () { const MessageTable = conjoon.dev.cn_mailsim.data.table.MessageTable, AttachmentTable = conjoon.dev.cn_mailsim.data.table.AttachmentTable; MessageTable.ITEM_LENGTH = 5; let environmentSpy; t.spyOn(coon.core.Environment, "getPathForResource").and.callFake( (url, pckg) => `../../../../../../../../resources/${url}` ); t.beforeEach(() => { MessageTable.resetAll(); environmentSpy = t.spyOn(coon.core.Environment, "getPathForResource").and.callFake( (resource, pckg) => "path" ); }); t.afterEach(() => { environmentSpy.remove(); }); t.it("buildBaseMessageItems()", t => { const ITEM_LENGTH = MessageTable.ITEM_LENGTH; let items = MessageTable.buildBaseMessageItems(), i; t.expect(items.length).toBe(ITEM_LENGTH); for (i = 0; i < ITEM_LENGTH; i++) { if (!items[i].mailAccountId || !items[i].mailFolderId || !items[i].id) { t.fail("Compound key information missing"); } if (items[i].localId || items[i].messageBodyId) { t.fail("client side key information available, though it should get created at the client."); } } t.expect(i).toBe(ITEM_LENGTH); }); t.it("updateMessageDraft() - triggers new id", t => { MessageTable.buildBaseMessageItems(); let data = { subject: "foo" }; let draft = MessageTable.createMessageDraft("dev", "INBOX", data); let attachment = AttachmentTable.createAttachment(draft.mailAccountId, draft.mailFolderId, draft.id, {text: "foo"}); let mailAccountId = draft.mailAccountId, mailFolderId = draft.mailFolderId, id = draft.id; let newDraft = MessageTable.updateMessageDraft( draft.mailAccountId, draft.mailFolderId, draft.id, {subject: "bar"}, true ); t.expect(draft).toBe(newDraft); t.expect(mailAccountId).toBe(newDraft.mailAccountId); t.expect(mailFolderId).toBe(newDraft.mailFolderId); t.expect(id).not.toBe(newDraft.id); t.expect(attachment.mailAccountId).toBe(newDraft.mailAccountId); t.expect(attachment.mailFolderId).toBe(newDraft.mailFolderId); t.expect(attachment.parentMessageItemId).toBe(newDraft.id); t.expect(MessageTable.peekMessageBody(mailAccountId, mailFolderId, id)).toBe(false); t.expect(MessageTable.peekMessageBody(draft.mailAccountId, draft.mailFolderId, draft.id)).toBe(true); t.expect(MessageTable.getMessageDraft(mailAccountId, mailFolderId, id)).toBe(null); t.expect(MessageTable.getMessageDraft(draft.mailAccountId, draft.mailFolderId, draft.id)).not.toBe(null); t.expect(MessageTable.getMessageItem(mailAccountId, mailFolderId, id)).toBe(null); t.expect(MessageTable.getMessageItem(draft.mailAccountId, draft.mailFolderId, draft.id)).not.toBe(null); }); t.it("updateMessageBody() - triggers new id", t => { MessageTable.buildBaseMessageItems(); let data = { subject: "foo" }; let draft = MessageTable.createMessageDraft("dev", "INBOX", data); let attachment = AttachmentTable.createAttachment(draft.mailAccountId, draft.mailFolderId, draft.id, {text: "foo"}); let mailAccountId = draft.mailAccountId, mailFolderId = draft.mailFolderId, id = draft.id; let messageBody = MessageTable.updateMessageBody(mailAccountId, mailFolderId, id, {textHtml: "html"}); t.expect(attachment.parentMessageItemId).toBe(messageBody.id); t.expect(mailAccountId).toBe(messageBody.mailAccountId); t.expect(mailFolderId).toBe(messageBody.mailFolderId); t.expect(id).not.toBe(messageBody.id); t.expect(MessageTable.peekMessageBody(mailAccountId, mailFolderId, id)).toBe(false); t.expect(MessageTable.peekMessageBody(messageBody.mailAccountId, messageBody.mailFolderId, messageBody.id)).toBe(true); t.expect(MessageTable.getMessageDraft(mailAccountId, mailFolderId, id)).toBe(null); t.expect(MessageTable.getMessageDraft(messageBody.mailAccountId, messageBody.mailFolderId, messageBody.id)).toBe(draft); t.expect(MessageTable.getMessageItem(mailAccountId, mailFolderId, id)).toBe(null); t.expect(MessageTable.getMessageItem(messageBody.mailAccountId, messageBody.mailFolderId, messageBody.id)).not.toBe(null); }); t.it("createAttachment() - triggers new id", t => { MessageTable.buildBaseMessageItems(); let data = { subject: "foo" }; let draft = MessageTable.createMessageDraft("dev", "INBOX", data); let mailAccountId = draft.mailAccountId, mailFolderId = draft.mailFolderId, id = draft.id; let attachment = AttachmentTable.createAttachment(mailAccountId, mailFolderId, id, {text: "foo"}); t.expect(attachment.text).toBe("foo"); t.expect(mailAccountId).toBe(attachment.mailAccountId); t.expect(mailFolderId).toBe(attachment.mailFolderId); t.expect(id).not.toBe(attachment.parentMessageItemId); t.expect(MessageTable.peekMessageBody(mailAccountId, mailFolderId, id)).toBe(false); t.expect(MessageTable.peekMessageBody(attachment.mailAccountId, attachment.mailFolderId, attachment.parentMessageItemId)).toBe(true); t.expect(MessageTable.getMessageDraft(mailAccountId, mailFolderId, id)).toBe(null); t.expect(MessageTable.getMessageDraft(attachment.mailAccountId, attachment.mailFolderId, attachment.parentMessageItemId)).toBe(draft); t.expect(MessageTable.getMessageItem(mailAccountId, mailFolderId, id)).toBe(null); t.expect(MessageTable.getMessageItem(attachment.mailAccountId, attachment.mailFolderId, attachment.parentMessageItemId)).not.toBe(null); mailAccountId = attachment.mailAccountId; mailFolderId = attachment.mailFolderId; id = attachment.parentMessageItemId; t.expect(mailAccountId).toBe(draft.mailAccountId); t.expect(mailFolderId).toBe(draft.mailFolderId); t.expect(id).toBe(draft.id); let attachment2 = AttachmentTable.createAttachment(mailAccountId, mailFolderId, id, {text: "bar"}); t.expect(attachment2.text).toBe("bar"); t.expect(id).not.toBe(attachment2.parentMessageItemId); let attachments = AttachmentTable.getAttachments(mailAccountId, mailFolderId, id); t.expect(attachments).toBe(null); attachments = AttachmentTable.getAttachments(attachment2.mailAccountId, attachment2.mailFolderId, attachment2.parentMessageItemId); t.expect(attachments[1]).toBe(attachment2); t.expect(attachments[0]).toBe(attachment); }); t.it("deleteAttachment() - triggers new id", t => { MessageTable.buildBaseMessageItems(); let data = { subject: "foo" }; let draft = MessageTable.createMessageDraft("dev", "INBOX", data); let mailAccountId = draft.mailAccountId, mailFolderId = draft.mailFolderId, id = draft.id; let attachment = AttachmentTable.createAttachment(mailAccountId, mailFolderId, id, {text: "foo"}), attachment2 = AttachmentTable.createAttachment(mailAccountId, mailFolderId, attachment.parentMessageItemId, {text: "bar"}); t.expect(mailAccountId).toBe(draft.mailAccountId); t.expect(mailFolderId).toBe(draft.mailFolderId); t.expect(id).not.toBe(draft.id); t.expect(draft.mailAccountId).toBe(attachment.mailAccountId); t.expect(draft.mailFolderId).toBe(attachment.mailFolderId); t.expect(draft.id).toBe(attachment.parentMessageItemId); t.expect(attachment2.mailAccountId).toBe(attachment.mailAccountId); t.expect(attachment2.mailFolderId).toBe(attachment.mailFolderId); t.expect(attachment2.parentMessageItemId).toBe(attachment.parentMessageItemId); let newId = attachment.parentMessageItemId; t.expect(newId).toBe(draft.id); let found = AttachmentTable.deleteAttachment(mailAccountId, mailFolderId, newId, attachment.id); t.expect(found).toEqual({"parentMessageItemId": "18", "mailAccountId": "dev", "mailFolderId": "INBOX"}); t.expect(newId).not.toBe(draft.id); t.expect(newId).not.toBe(attachment2.parentMessageItemId); t.expect(draft.id).toBe(attachment2.parentMessageItemId); let attachments = AttachmentTable.getAttachments(mailAccountId, mailFolderId, draft.id); t.expect(attachments.length).toBe(1); t.expect(attachments[0]).toBe(attachment2); }); t.it("correct date format for MessageDraft", t => { MessageTable.buildBaseMessageItems(); let data = { subject: "foo" }; let draft = MessageTable.createMessageDraft("dev", "INBOX", data); let regex = /^\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2} \+\d{4}/; t.expect(regex.test(draft.date)).toBe(true); let newDraft = MessageTable.updateMessageDraft( draft.mailAccountId, draft.mailFolderId, draft.id, {subject: "bar"}, true ); t.expect(regex.test(newDraft.date)).toBe(true); }); });});