diff options
Diffstat (limited to 'toolkit/components/satchel/test/unit/test_notify.js')
-rw-r--r-- | toolkit/components/satchel/test/unit/test_notify.js | 158 |
1 files changed, 158 insertions, 0 deletions
diff --git a/toolkit/components/satchel/test/unit/test_notify.js b/toolkit/components/satchel/test/unit/test_notify.js new file mode 100644 index 0000000000..556ecd4b08 --- /dev/null +++ b/toolkit/components/satchel/test/unit/test_notify.js @@ -0,0 +1,158 @@ +/* + * Test suite for satchel notifications + * + * Tests notifications dispatched when modifying form history. + * + */ + +var expectedNotification; +var expectedData; + +var TestObserver = { + QueryInterface : XPCOMUtils.generateQI([Ci.nsIObserver, Ci.nsISupportsWeakReference]), + + observe : function (subject, topic, data) { + do_check_eq(topic, "satchel-storage-changed"); + do_check_eq(data, expectedNotification); + + switch (data) { + case "formhistory-add": + case "formhistory-update": + do_check_true(subject instanceof Ci.nsISupportsString); + do_check_true(isGUID.test(subject.toString())); + break; + case "formhistory-remove": + do_check_eq(null, subject); + break; + default: + do_throw("Unhandled notification: " + data + " / " + topic); + } + + expectedNotification = null; + expectedData = null; + } +}; + +var testIterator = null; + +function run_test() { + do_test_pending(); + testIterator = run_test_steps(); + testIterator.next(); +} + +function next_test() +{ + testIterator.next(); +} + +function* run_test_steps() { + +try { + +var testnum = 0; +var testdesc = "Setup of test form history entries"; + +var entry1 = ["entry1", "value1"]; + +/* ========== 1 ========== */ +testnum = 1; +testdesc = "Initial connection to storage module" + +yield updateEntry("remove", null, null, next_test); +yield countEntries(null, null, function (num) { do_check_false(num, "Checking initial DB is empty"); next_test(); }); + +// Add the observer +var os = Cc["@mozilla.org/observer-service;1"]. + getService(Ci.nsIObserverService); +os.addObserver(TestObserver, "satchel-storage-changed", false); + +/* ========== 2 ========== */ +testnum++; +testdesc = "addEntry"; + +expectedNotification = "formhistory-add"; +expectedData = entry1; + +yield updateEntry("add", entry1[0], entry1[1], next_test); +do_check_eq(expectedNotification, null); // check that observer got a notification + +yield countEntries(entry1[0], entry1[1], function (num) { do_check_true(num > 0); next_test(); }); + +/* ========== 3 ========== */ +testnum++; +testdesc = "modifyEntry"; + +expectedNotification = "formhistory-update"; +expectedData = entry1; +// will update previous entry +yield updateEntry("update", entry1[0], entry1[1], next_test); +yield countEntries(entry1[0], entry1[1], function (num) { do_check_true(num > 0); next_test(); }); + +do_check_eq(expectedNotification, null); + +/* ========== 4 ========== */ +testnum++; +testdesc = "removeEntry"; + +expectedNotification = "formhistory-remove"; +expectedData = entry1; +yield updateEntry("remove", entry1[0], entry1[1], next_test); + +do_check_eq(expectedNotification, null); +yield countEntries(entry1[0], entry1[1], function(num) { do_check_false(num, "doesn't exist after remove"); next_test(); }); + +/* ========== 5 ========== */ +testnum++; +testdesc = "removeAllEntries"; + +expectedNotification = "formhistory-remove"; +expectedData = null; // no data expected +yield updateEntry("remove", null, null, next_test); + +do_check_eq(expectedNotification, null); + +/* ========== 6 ========== */ +testnum++; +testdesc = "removeAllEntries (again)"; + +expectedNotification = "formhistory-remove"; +expectedData = null; +yield updateEntry("remove", null, null, next_test); + +do_check_eq(expectedNotification, null); + +/* ========== 7 ========== */ +testnum++; +testdesc = "removeEntriesForName"; + +expectedNotification = "formhistory-remove"; +expectedData = "field2"; +yield updateEntry("remove", null, "field2", next_test); + +do_check_eq(expectedNotification, null); + +/* ========== 8 ========== */ +testnum++; +testdesc = "removeEntriesByTimeframe"; + +expectedNotification = "formhistory-remove"; +expectedData = [10, 99999999999]; + +yield FormHistory.update({ op: "remove", firstUsedStart: expectedData[0], firstUsedEnd: expectedData[1] }, + { handleCompletion: function(reason) { if (!reason) next_test() }, + handleErrors: function (error) { + do_throw("Error occurred updating form history: " + error); + } + }); + +do_check_eq(expectedNotification, null); + +os.removeObserver(TestObserver, "satchel-storage-changed", false); + +do_test_finished(); + +} catch (e) { + throw "FAILED in test #" + testnum + " -- " + testdesc + ": " + e; +} +} |