Revision control

Copy as Markdown

Other Tools

/* 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/. */
// Test of chaining copies between the same folders
var { addMessagesToFolder, MessageGenerator, MessageScenarioFactory } =
ChromeUtils.importESModule(
);
var { MailServices } = ChromeUtils.importESModule(
);
var gCopySource;
var gCopyDest;
var gMessages;
var gCurTestNum = 1;
// main test
var gTestArray = [
function copyMsg1() {
gMessages = [...gCopySource.msgDatabase.enumerateMessages()];
CopyNextMessage();
},
function copyMsg2() {
CopyNextMessage();
},
function copyMsg3() {
CopyNextMessage();
},
function copyMsg4() {
CopyNextMessage();
},
];
function CopyNextMessage() {
if (gMessages.length > 0) {
const msgHdr = gMessages.shift();
MailServices.copy.copyMessages(
gCopySource,
[msgHdr],
gCopyDest,
true,
copyListener,
null,
false
);
} else {
do_throw("TEST FAILED - out of messages");
}
}
function run_test() {
localAccountUtils.loadLocalMailAccount();
const messageGenerator = new MessageGenerator();
const scenarioFactory = new MessageScenarioFactory(messageGenerator);
// "Master" do_test_pending(), paired with a do_test_finished() at the end of
// all the operations.
do_test_pending();
gCopyDest = localAccountUtils.inboxFolder.createLocalSubfolder("copyDest");
// build up a diverse list of messages
let messages = [];
messages = messages.concat(scenarioFactory.directReply(10));
gCopySource = localAccountUtils.rootFolder.createLocalSubfolder("copySource");
addMessagesToFolder(messages, gCopySource);
mailTestUtils.updateFolderAndNotify(gCopySource, doTest);
return true;
}
function doTest() {
var test = gCurTestNum;
if (test <= gTestArray.length) {
var testFn = gTestArray[test - 1];
dump("Doing test " + test + " " + testFn.name + "\n");
try {
testFn();
} catch (ex) {
do_throw("TEST FAILED " + ex);
}
} else {
endTest();
}
}
function endTest() {
// Cleanup, null out everything
dump(" Exiting mail tests\n");
gMessages = null;
do_test_finished(); // for the one in run_test()
}
/**
* @implements {nsIMsgCopyServiceListener}
*/
var copyListener = {
onStartCopy() {},
onProgress() {},
setMessageKey() {},
getMessageId() {
return null;
},
onStopCopy(aStatus) {
// Check: message successfully copied.
Assert.equal(aStatus, 0);
++gCurTestNum;
doTest();
},
};