tutanota/test/client/mail/MailModelTest.js

91 lines
3 KiB
JavaScript
Raw Normal View History

2018-10-22 12:02:13 +02:00
//@flow
2019-09-13 13:49:11 +02:00
import o from "ospec"
2018-10-22 12:02:13 +02:00
import {Notifications} from "../../../src/gui/Notifications"
import type {Spy} from "../../api/TestUtils"
import {spy} from "../../api/TestUtils"
2021-02-03 17:13:38 +01:00
import type {MailboxDetail} from "../../../src/mail/model/MailModel"
import {MailModel} from "../../../src/mail/model/MailModel"
2018-10-22 12:02:13 +02:00
import {downcast} from "../../../src/api/common/utils/Utils"
import type {OperationTypeEnum} from "../../../src/api/common/TutanotaConstants"
import {MailFolderType, OperationType} from "../../../src/api/common/TutanotaConstants"
import {MailTypeRef} from "../../../src/api/entities/tutanota/Mail"
import {createMailFolder} from "../../../src/api/entities/tutanota/MailFolder"
2019-01-21 10:48:07 +01:00
import type {EntityUpdateData} from "../../../src/api/main/EventController"
2019-09-13 13:49:11 +02:00
import {EntityClient} from "../../../src/api/common/EntityClient"
import {EntityRestClientMock} from "../../api/worker/EntityRestClientMock"
import nodemocker from "../nodemocker"
2018-10-22 12:02:13 +02:00
o.spec("MailModelTest", function () {
let notifications: $Shape<Notifications>
let showSpy: Spy
let model: MailModel
const inboxFolder = createMailFolder()
inboxFolder.mails = "instanceListId"
inboxFolder.folderType = MailFolderType.INBOX
const anotherFolder = createMailFolder()
anotherFolder.mails = "anotherListId"
anotherFolder.folderType = MailFolderType.ARCHIVE
const mailboxDetails: $Shape<MailboxDetail>[] = [
{
folders: [inboxFolder]
}
]
o.beforeEach(function () {
notifications = {}
showSpy = notifications.showNotification = spy()
const restClient = new EntityRestClientMock()
const workerClient = nodemocker.mock("worker", {}).set()
const mailFacade = nodemocker.mock("mailFacade", {}).set()
model = new MailModel(downcast(notifications), downcast({}), workerClient, mailFacade, new EntityClient(restClient))
2018-10-22 12:02:13 +02:00
// not pretty, but works
model.mailboxDetails(mailboxDetails)
})
// FIXME No way to inject entityRestClient for now
// o("sends notification on new email in inbox", function () {
// model.entityEventsReceived([
// makeUpdate({
// instanceListId: inboxFolder.mails,
// operation: OperationType.CREATE
// })
// ])
// o(showSpy.invocations.length).equals(1)
// })
2018-10-22 12:02:13 +02:00
o("doesn't send notification for another folder", async function () {
await model.entityEventsReceived([
2018-10-22 12:02:13 +02:00
makeUpdate({
instanceListId: anotherFolder.mails,
operation: OperationType.CREATE
})
])
o(showSpy.invocations.length).equals(0)
})
o("doesn't send notification for move operation", async function () {
await model.entityEventsReceived([
2018-10-22 12:02:13 +02:00
makeUpdate({
instanceListId: anotherFolder.mails,
operation: OperationType.DELETE
}),
makeUpdate({
instanceListId: inboxFolder.mails,
operation: OperationType.CREATE
})
])
o(showSpy.invocations.length).equals(0)
})
function makeUpdate(arg: {instanceListId: string, operation: OperationTypeEnum}): EntityUpdateData {
return Object.assign({}, {
type: MailTypeRef.type,
application: MailTypeRef.app,
instanceId: "instanceId",
}, arg)
}
})