1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
|
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
// This file tests undoing of an local folder message deleted to the trash.
//
// Original Author: David Bienvenu <dbienvenu@mozilla.com>
// Globals
let gMsg1;
let gMessages = [];
let gMsgWindow;
let gCurTestNum;
let gMsgId1;
let gTestFolder;
var { MessageGenerator, SyntheticMessageSet } = ChromeUtils.import(
"resource://testing-common/mailnews/MessageGenerator.jsm"
);
var { MessageInjection } = ChromeUtils.import(
"resource://testing-common/mailnews/MessageInjection.jsm"
);
var { PromiseTestUtils } = ChromeUtils.import(
"resource://testing-common/mailnews/PromiseTestUtils.jsm"
);
var messageInjection = new MessageInjection({ mode: "local" });
add_setup(async function () {
gMsgWindow = Cc["@mozilla.org/messenger/msgwindow;1"].createInstance(
Ci.nsIMsgWindow
);
var messageGenerator = new MessageGenerator();
gMsg1 = messageGenerator.makeMessage();
let msg2 = messageGenerator.makeMessage({ inReplyTo: gMsg1 });
let messages = [];
messages = messages.concat([gMsg1, msg2]);
let msgSet = new SyntheticMessageSet(messages);
gTestFolder = await messageInjection.makeEmptyFolder();
await messageInjection.addSetsToFolders([gTestFolder], [msgSet]);
});
add_task(async function deleteMessage() {
let msgToDelete = mailTestUtils.firstMsgHdr(gTestFolder);
gMsgId1 = msgToDelete.messageId;
gMessages.push(msgToDelete);
let copyListener = new PromiseTestUtils.PromiseCopyListener();
gTestFolder.deleteMessages(
gMessages,
gMsgWindow,
false,
true,
copyListener,
true
);
await copyListener.promise;
});
add_task(async function undoDelete() {
gMsgWindow.transactionManager.undoTransaction();
// There's no listener for this, so we'll just have to wait a little.
await PromiseTestUtils.promiseDelay(1500);
});
add_task(function verifyFolders() {
let msgRestored = gTestFolder.msgDatabase.getMsgHdrForMessageID(gMsgId1);
let msg = mailTestUtils.loadMessageToString(gTestFolder, msgRestored);
Assert.equal(msg, gMsg1.toMboxString());
});
add_task(function endTest() {
// Cleanup, null out everything.
gMessages = [];
gMsgWindow.closeWindow();
gMsgWindow = null;
localAccountUtils.inboxFolder = null;
localAccountUtils.incomingServer = null;
});
|