diff options
Diffstat (limited to 'comm/mailnews/local/test/unit/test_folderLoaded.js')
-rw-r--r-- | comm/mailnews/local/test/unit/test_folderLoaded.js | 89 |
1 files changed, 89 insertions, 0 deletions
diff --git a/comm/mailnews/local/test/unit/test_folderLoaded.js b/comm/mailnews/local/test/unit/test_folderLoaded.js new file mode 100644 index 0000000000..398aa6bff4 --- /dev/null +++ b/comm/mailnews/local/test/unit/test_folderLoaded.js @@ -0,0 +1,89 @@ +/* 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/. */ + +/** + * The intent of this file is to show a folder loaded event after a load + * with a null database. + */ + +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 testSubjects = [ + "[Bug 397009] A filter will let me tag, but not untag", + "Hello, did you receive my bugmail?", +]; +var gMsgFile1 = do_get_file("../../../data/bugmail1"); +var gMsgFile2 = do_get_file("../../../data/draft1"); + +var gTargetFolder = null; + +add_setup(async function () { + if (typeof localAccountUtils.inboxFolder == "undefined") { + localAccountUtils.loadLocalMailAccount(); + } + localAccountUtils.rootFolder.createSubfolder("target", null); + gTargetFolder = localAccountUtils.rootFolder.getChildNamed("target"); + + let copyListenerFile1 = new PromiseTestUtils.PromiseCopyListener(); + MailServices.copy.copyFileMessage( + gMsgFile1, + gTargetFolder, + null, + false, + 0, + "", + copyListenerFile1, + null + ); + await copyListenerFile1.promise; + + let copyListenerFile2 = new PromiseTestUtils.PromiseCopyListener(); + MailServices.copy.copyFileMessage( + gMsgFile2, + gTargetFolder, + null, + false, + 0, + "", + copyListenerFile2, + null + ); + await copyListenerFile2.promise; +}); + +add_task(async function firstUpdate() { + // Get message headers for the target folder. + var msgCount = 0; + for (let hdr of gTargetFolder.msgDatabase.enumerateMessages()) { + msgCount++; + Assert.equal(hdr.subject, testSubjects[msgCount - 1]); + } + Assert.equal(msgCount, 2); + + let folderAddedListener = PromiseTestUtils.promiseFolderEvent( + gTargetFolder, + "FolderLoaded" + ); + gTargetFolder.updateFolder(null); + await folderAddedListener; +}); + +add_task(async function secondUpdate() { + // If the following executes, the test hangs in bug 787557. + gTargetFolder.msgDatabase = null; + let folderAddedListener = PromiseTestUtils.promiseFolderEvent( + gTargetFolder, + "FolderLoaded" + ); + gTargetFolder.updateFolder(null); + await folderAddedListener; +}); |