Index: test/filterClasses.js |
=================================================================== |
--- a/test/filterClasses.js |
+++ b/test/filterClasses.js |
@@ -25,27 +25,29 @@ let CommentFilter = null; |
let ActiveFilter = null; |
let RegExpFilter = null; |
let BlockingFilter = null; |
let WhitelistFilter = null; |
let ElemHideBase = null; |
let ElemHideFilter = null; |
let ElemHideException = null; |
let ElemHideEmulationFilter = null; |
+let FilterNotifier = null; |
exports.setUp = function(callback) |
{ |
let sandboxedRequire = createSandbox(); |
( |
{ |
Filter, InvalidFilter, CommentFilter, ActiveFilter, RegExpFilter, |
BlockingFilter, WhitelistFilter, ElemHideBase, ElemHideFilter, |
ElemHideException, ElemHideEmulationFilter |
} = sandboxedRequire("../lib/filterClasses") |
); |
+ ({FilterNotifier} = sandboxedRequire("../lib/filterNotifier")); |
callback(); |
}; |
exports.testFromText = function(test) |
{ |
let tests = [ |
["!asdf", CommentFilter, "comment"], |
["asdf", BlockingFilter, "blocking"], |
@@ -364,8 +366,66 @@ exports.testElemHideSelector = function( |
for (let [text, selector, selectorDomain] of tests) |
{ |
doTest(text, selector, selectorDomain); |
doTest(text.replace("##", "#@#"), selector, selectorDomain); |
} |
test.done(); |
}; |
+ |
+exports.testNotifications = function(test) |
+{ |
+ function checkNotifications(action, expected, message) |
+ { |
+ let result = null; |
+ let listener = (topic, filter) => |
+ { |
+ if (result) |
+ test.ok(false, "Got more that one notification - " + message); |
+ else |
+ result = [topic, filter.text]; |
+ }; |
+ FilterNotifier.addListener(listener); |
+ action(); |
+ FilterNotifier.removeListener(listener); |
+ test.deepEqual(result, expected, message); |
+ } |
+ |
+ let filter = Filter.fromText("foobar"); |
+ checkNotifications(() => |
+ { |
+ filter.disabled = true; |
+ }, ["filter.disabled", "foobar"], "Disabling filter"); |
+ checkNotifications(() => |
+ { |
+ filter.disabled = true; |
+ }, null, "Disabling already disabled filter"); |
+ checkNotifications(() => |
+ { |
+ filter.disabled = false; |
+ }, ["filter.disabled", "foobar"], "Enabling filter"); |
+ |
+ checkNotifications(() => |
+ { |
+ filter.lastHit = 1234; |
+ }, ["filter.lastHit", "foobar"], "Changing last filter hit"); |
+ checkNotifications(() => |
+ { |
+ filter.lastHit = 1234; |
+ }, null, "Changing last filter hit to same value"); |
+ checkNotifications(() => |
+ { |
+ filter.lastHit = 0; |
+ }, ["filter.lastHit", "foobar"], "Resetting last filter hit"); |
+ |
+ checkNotifications(() => |
+ { |
+ filter.hitCount++; |
+ }, ["filter.hitCount", "foobar"], "Increasing filter hit counts"); |
+ checkNotifications(() => |
+ { |
+ filter.hitCount = 0; |
+ }, ["filter.hitCount", "foobar"], "Resetting filter hit counts"); |
+ |
+ filter.delete(); |
+ test.done(); |
+}; |