diff options
Diffstat (limited to 'comm/mailnews/base/test/unit/test_inheritedFolderProperties.js')
-rw-r--r-- | comm/mailnews/base/test/unit/test_inheritedFolderProperties.js | 183 |
1 files changed, 183 insertions, 0 deletions
diff --git a/comm/mailnews/base/test/unit/test_inheritedFolderProperties.js b/comm/mailnews/base/test/unit/test_inheritedFolderProperties.js new file mode 100644 index 0000000000..55fb1da6c8 --- /dev/null +++ b/comm/mailnews/base/test/unit/test_inheritedFolderProperties.js @@ -0,0 +1,183 @@ +/* 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/. */ + +/* + * Testing of inherited folder properties + */ + +function run_test() { + localAccountUtils.loadLocalMailAccount(); + var rootFolder = localAccountUtils.incomingServer.rootMsgFolder; + + // add subfolders to the inbox + const subFolder11 = localAccountUtils.inboxFolder + .createLocalSubfolder("subfolder11") + .QueryInterface(Ci.nsIMsgLocalMailFolder); + const subFolder12 = localAccountUtils.inboxFolder + .createLocalSubfolder("subfolder12") + .QueryInterface(Ci.nsIMsgLocalMailFolder); + const subFolder21 = subFolder11.createLocalSubfolder("subfolder21"); + const subFolder22 = subFolder12.createLocalSubfolder("subfolder22"); + + // add a global preference + const propertyName = "iexist"; + const invalidName = "idontexist"; + const globalPref = "mail.server.default." + propertyName; + const globalValue = "iAmGlobal"; + const folderValue = "iAmFolder"; + const folderValue2 = "iAmFolder2"; + const rootValue = "iAmRoot"; + Services.prefs.setCharPref(globalPref, globalValue); + + // test that the global preference is honored + Assert.equal( + rootFolder.getInheritedStringProperty(propertyName), + globalValue + ); + Assert.equal( + subFolder11.getInheritedStringProperty(propertyName), + globalValue + ); + Assert.equal( + subFolder22.getInheritedStringProperty(propertyName), + globalValue + ); + Assert.equal(rootFolder.getInheritedStringProperty(invalidName), null); + Assert.equal(subFolder11.getInheritedStringProperty(invalidName), null); + Assert.equal(subFolder22.getInheritedStringProperty(invalidName), null); + + // set a value on a subfolder and check + subFolder11.setStringProperty(propertyName, folderValue); + Assert.equal( + rootFolder.getInheritedStringProperty(propertyName), + globalValue + ); + Assert.equal( + subFolder11.getInheritedStringProperty(propertyName), + folderValue + ); + Assert.equal( + subFolder12.getInheritedStringProperty(propertyName), + globalValue + ); + Assert.equal( + subFolder21.getInheritedStringProperty(propertyName), + folderValue + ); + Assert.equal( + subFolder22.getInheritedStringProperty(propertyName), + globalValue + ); + + // set a root folder value and check + localAccountUtils.incomingServer.setCharValue(propertyName, rootValue); + Assert.equal(rootFolder.getInheritedStringProperty(propertyName), rootValue); + Assert.equal( + subFolder11.getInheritedStringProperty(propertyName), + folderValue + ); + Assert.equal(subFolder12.getInheritedStringProperty(propertyName), rootValue); + Assert.equal( + subFolder21.getInheritedStringProperty(propertyName), + folderValue + ); + Assert.equal(subFolder22.getInheritedStringProperty(propertyName), rootValue); + + // force an empty string + subFolder12.setForcePropertyEmpty(propertyName, true); + Assert.equal(rootFolder.getInheritedStringProperty(propertyName), rootValue); + Assert.equal( + subFolder11.getInheritedStringProperty(propertyName), + folderValue + ); + Assert.equal(subFolder12.getInheritedStringProperty(propertyName), ""); + Assert.equal( + subFolder21.getInheritedStringProperty(propertyName), + folderValue + ); + Assert.equal(subFolder22.getInheritedStringProperty(propertyName), ""); + + // reset a folder to allow inheritance + subFolder12.setForcePropertyEmpty(propertyName, false); + subFolder12.setStringProperty(propertyName, ""); + Assert.equal(rootFolder.getInheritedStringProperty(propertyName), rootValue); + Assert.equal( + subFolder11.getInheritedStringProperty(propertyName), + folderValue + ); + Assert.equal(subFolder12.getInheritedStringProperty(propertyName), rootValue); + Assert.equal( + subFolder21.getInheritedStringProperty(propertyName), + folderValue + ); + Assert.equal(subFolder22.getInheritedStringProperty(propertyName), rootValue); + + // force an empty string on the server + localAccountUtils.incomingServer.setForcePropertyEmpty(propertyName, true); + Assert.equal(rootFolder.getInheritedStringProperty(propertyName), ""); + Assert.equal( + subFolder11.getInheritedStringProperty(propertyName), + folderValue + ); + Assert.equal(subFolder12.getInheritedStringProperty(propertyName), ""); + Assert.equal( + subFolder21.getInheritedStringProperty(propertyName), + folderValue + ); + Assert.equal(subFolder22.getInheritedStringProperty(propertyName), ""); + + // reset a server to allow inheritance from the global + localAccountUtils.incomingServer.setCharValue(propertyName, ""); + localAccountUtils.incomingServer.setForcePropertyEmpty(propertyName, false); + Assert.equal( + rootFolder.getInheritedStringProperty(propertyName), + globalValue + ); + Assert.equal( + subFolder11.getInheritedStringProperty(propertyName), + folderValue + ); + Assert.equal( + subFolder12.getInheritedStringProperty(propertyName), + globalValue + ); + Assert.equal( + subFolder21.getInheritedStringProperty(propertyName), + folderValue + ); + Assert.equal( + subFolder22.getInheritedStringProperty(propertyName), + globalValue + ); + + // check with all levels populated + subFolder21.setStringProperty(propertyName, folderValue2); + localAccountUtils.incomingServer.setCharValue(propertyName, rootValue); + Assert.equal(rootFolder.getInheritedStringProperty(propertyName), rootValue); + Assert.equal( + subFolder11.getInheritedStringProperty(propertyName), + folderValue + ); + Assert.equal(subFolder12.getInheritedStringProperty(propertyName), rootValue); + Assert.equal( + subFolder21.getInheritedStringProperty(propertyName), + folderValue2 + ); + Assert.equal(subFolder22.getInheritedStringProperty(propertyName), rootValue); + + // clear the global value and the root value + Services.prefs.clearUserPref(globalPref); + localAccountUtils.incomingServer.setCharValue(propertyName, ""); + Assert.equal(rootFolder.getInheritedStringProperty(propertyName), null); + Assert.equal( + subFolder11.getInheritedStringProperty(propertyName), + folderValue + ); + Assert.equal(subFolder12.getInheritedStringProperty(propertyName), null); + Assert.equal( + subFolder21.getInheritedStringProperty(propertyName), + folderValue2 + ); + Assert.equal(subFolder22.getInheritedStringProperty(propertyName), null); +} |