OLD | NEW |
1 /* | 1 /* |
2 * This file is part of Adblock Plus <https://adblockplus.org/>, | 2 * This file is part of Adblock Plus <https://adblockplus.org/>, |
3 * Copyright (C) 2006-present eyeo GmbH | 3 * Copyright (C) 2006-present eyeo GmbH |
4 * | 4 * |
5 * Adblock Plus is free software: you can redistribute it and/or modify | 5 * Adblock Plus is free software: you can redistribute it and/or modify |
6 * it under the terms of the GNU General Public License version 3 as | 6 * it under the terms of the GNU General Public License version 3 as |
7 * published by the Free Software Foundation. | 7 * published by the Free Software Foundation. |
8 * | 8 * |
9 * Adblock Plus is distributed in the hope that it will be useful, | 9 * Adblock Plus is distributed in the hope that it will be useful, |
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of | 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of |
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
12 * GNU General Public License for more details. | 12 * GNU General Public License for more details. |
13 * | 13 * |
14 * You should have received a copy of the GNU General Public License | 14 * You should have received a copy of the GNU General Public License |
15 * along with Adblock Plus. If not, see <http://www.gnu.org/licenses/>. | 15 * along with Adblock Plus. If not, see <http://www.gnu.org/licenses/>. |
16 */ | 16 */ |
17 | 17 |
18 "use strict"; | 18 "use strict"; |
19 | 19 |
| 20 const assert = require("assert"); |
20 const {createSandbox} = require("./_common"); | 21 const {createSandbox} = require("./_common"); |
21 | 22 |
22 let Filter = null; | 23 let Filter = null; |
23 let filterNotifier = null; | 24 let filterNotifier = null; |
24 let filterStorage = null; | 25 let filterStorage = null; |
25 let Subscription = null; | 26 let Subscription = null; |
26 | 27 |
27 exports.setUp = function(callback) | 28 describe("Filter Storage", () => |
28 { | 29 { |
29 let sandboxedRequire = createSandbox(); | 30 beforeEach(() => |
30 | 31 { |
31 sandboxedRequire("../lib/filterListener"); | 32 let sandboxedRequire = createSandbox(); |
32 ( | 33 |
33 {Filter} = sandboxedRequire("../lib/filterClasses"), | 34 sandboxedRequire("../lib/filterListener"); |
34 {filterNotifier} = sandboxedRequire("../lib/filterNotifier"), | 35 ( |
35 {filterStorage} = sandboxedRequire("../lib/filterStorage"), | 36 {Filter} = sandboxedRequire("../lib/filterClasses"), |
36 {Subscription} = sandboxedRequire("../lib/subscriptionClasses") | 37 {filterNotifier} = sandboxedRequire("../lib/filterNotifier"), |
37 ); | 38 {filterStorage} = sandboxedRequire("../lib/filterStorage"), |
38 | 39 {Subscription} = sandboxedRequire("../lib/subscriptionClasses") |
39 callback(); | 40 ); |
40 }; | 41 }); |
41 | 42 |
42 function addListener(listener) | 43 function addListener(listener) |
43 { | 44 { |
44 let makeWrapper = name => (...args) => listener(name, ...args); | 45 let makeWrapper = name => (...args) => listener(name, ...args); |
45 | 46 |
46 filterNotifier.on("subscription.added", makeWrapper("subscription.added")); | 47 filterNotifier.on("subscription.added", makeWrapper("subscription.added")); |
47 filterNotifier.on("subscription.removed", | 48 filterNotifier.on("subscription.removed", |
48 makeWrapper("subscription.removed")); | 49 makeWrapper("subscription.removed")); |
49 | 50 |
50 filterNotifier.on("filter.added", makeWrapper("filter.added")); | 51 filterNotifier.on("filter.added", makeWrapper("filter.added")); |
51 filterNotifier.on("filter.removed", makeWrapper("filter.removed")); | 52 filterNotifier.on("filter.removed", makeWrapper("filter.removed")); |
52 filterNotifier.on("filter.moved", makeWrapper("filter.moved")); | 53 filterNotifier.on("filter.moved", makeWrapper("filter.moved")); |
53 | 54 |
54 filterNotifier.on("filter.hitCount", makeWrapper("filter.hitCount")); | 55 filterNotifier.on("filter.hitCount", makeWrapper("filter.hitCount")); |
55 filterNotifier.on("filter.lastHit", makeWrapper("filter.lastHit")); | 56 filterNotifier.on("filter.lastHit", makeWrapper("filter.lastHit")); |
56 } | |
57 | |
58 function compareSubscriptionList(test, testMessage, list, | |
59 knownSubscriptions = null) | |
60 { | |
61 let result = [...filterStorage.knownSubscriptions.keys()]; | |
62 let expected = list.map(subscription => subscription.url); | |
63 test.deepEqual(result, expected, testMessage); | |
64 | |
65 if (knownSubscriptions) | |
66 { | |
67 test.deepEqual([...Subscription.knownSubscriptions.values()], | |
68 knownSubscriptions, testMessage); | |
69 } | 57 } |
70 } | 58 |
71 | 59 function compareSubscriptionList(testMessage, list, |
72 function compareFiltersList(test, testMessage, list) | 60 knownSubscriptions = null) |
73 { | 61 { |
74 let result = [...filterStorage.subscriptions()].map( | 62 let result = [...filterStorage.knownSubscriptions.keys()]; |
75 subscription => [...subscription.filterText()]); | 63 let expected = list.map(subscription => subscription.url); |
76 test.deepEqual(result, list, testMessage); | 64 assert.deepEqual(result, expected, testMessage); |
77 } | 65 |
78 | 66 if (knownSubscriptions) |
79 function compareFilterSubscriptions(test, testMessage, filter, list) | 67 { |
80 { | 68 assert.deepEqual([...Subscription.knownSubscriptions.values()], |
81 let result = [...filterStorage.subscriptions(filter.text)].map(subscription =>
subscription.url); | 69 knownSubscriptions, testMessage); |
82 let expected = list.map(subscription => subscription.url); | 70 } |
83 test.deepEqual(result, expected, testMessage); | |
84 } | |
85 | |
86 exports.testAddingSubscriptions = function(test) | |
87 { | |
88 let subscription1 = Subscription.fromURL("http://test1/"); | |
89 let subscription2 = Subscription.fromURL("http://test2/"); | |
90 | |
91 let changes = []; | |
92 function listener(action, subscription) | |
93 { | |
94 if (action.indexOf("subscription.") == 0) | |
95 changes.push(action + " " + subscription.url); | |
96 } | 71 } |
97 addListener(listener); | 72 |
98 | 73 function compareFiltersList(testMessage, list) |
99 compareSubscriptionList(test, "Initial state", []); | 74 { |
100 test.deepEqual(changes, [], "Received changes"); | 75 let result = [...filterStorage.subscriptions()].map( |
101 | 76 subscription => [...subscription.filterText()]); |
102 changes = []; | 77 assert.deepEqual(result, list, testMessage); |
103 filterStorage.addSubscription(subscription1); | |
104 compareSubscriptionList(test, "Adding first subscription", [subscription1]); | |
105 test.deepEqual(changes, ["subscription.added http://test1/"], "Received change
s"); | |
106 | |
107 changes = []; | |
108 filterStorage.addSubscription(subscription1); | |
109 compareSubscriptionList(test, "Adding already added subscription", [subscripti
on1]); | |
110 test.deepEqual(changes, [], "Received changes"); | |
111 | |
112 changes = []; | |
113 filterStorage.addSubscription(subscription2); | |
114 compareSubscriptionList(test, "Adding second", [subscription1, subscription2])
; | |
115 test.deepEqual(changes, ["subscription.added http://test2/"], "Received change
s"); | |
116 | |
117 filterStorage.removeSubscription(subscription1); | |
118 compareSubscriptionList(test, "Remove", [subscription2]); | |
119 | |
120 changes = []; | |
121 filterStorage.addSubscription(subscription1); | |
122 compareSubscriptionList(test, "Re-adding previously removed subscription", [su
bscription2, subscription1]); | |
123 test.deepEqual(changes, ["subscription.added http://test1/"], "Received change
s"); | |
124 | |
125 test.done(); | |
126 }; | |
127 | |
128 exports.testRemovingSubscriptions = function(test) | |
129 { | |
130 let subscription1 = Subscription.fromURL("http://test1/"); | |
131 let subscription2 = Subscription.fromURL("http://test2/"); | |
132 | |
133 test.equal(Subscription.fromURL(subscription1.url), subscription1, | |
134 "Subscription known before addition"); | |
135 | |
136 filterStorage.addSubscription(subscription1); | |
137 filterStorage.addSubscription(subscription2); | |
138 | |
139 let changes = []; | |
140 function listener(action, subscription) | |
141 { | |
142 if (action.indexOf("subscription.") == 0) | |
143 changes.push(action + " " + subscription.url); | |
144 } | 78 } |
145 addListener(listener); | 79 |
146 | 80 function compareFilterSubscriptions(testMessage, filter, list) |
147 compareSubscriptionList(test, "Initial state", [subscription1, subscription2], | 81 { |
148 [subscription1, subscription2]); | 82 let result = [...filterStorage.subscriptions(filter.text)].map(subscription
=> subscription.url); |
149 test.deepEqual(changes, [], "Received changes"); | 83 let expected = list.map(subscription => subscription.url); |
150 | 84 assert.deepEqual(result, expected, testMessage); |
151 test.equal(Subscription.fromURL(subscription1.url), subscription1, | |
152 "Subscription known after addition"); | |
153 | |
154 changes = []; | |
155 filterStorage.removeSubscription(subscription1); | |
156 compareSubscriptionList(test, "Removing first subscription", [subscription2], | |
157 [subscription2]); | |
158 test.deepEqual(changes, ["subscription.removed http://test1/"], "Received chan
ges"); | |
159 | |
160 // Once a subscription has been removed, it is forgotten; a new object is | |
161 // created for the previously known subscription URL. | |
162 test.notEqual(Subscription.fromURL(subscription1.url), subscription1, | |
163 "Subscription forgotten upon removal"); | |
164 Subscription.knownSubscriptions.delete(subscription1.url); | |
165 | |
166 changes = []; | |
167 filterStorage.removeSubscription(subscription1); | |
168 compareSubscriptionList(test, "Removing already removed subscription", [subscr
iption2], | |
169 [subscription2]); | |
170 test.deepEqual(changes, [], "Received changes"); | |
171 | |
172 changes = []; | |
173 filterStorage.removeSubscription(subscription2); | |
174 compareSubscriptionList(test, "Removing remaining subscription", [], []); | |
175 test.deepEqual(changes, ["subscription.removed http://test2/"], "Received chan
ges"); | |
176 | |
177 filterStorage.addSubscription(subscription1); | |
178 compareSubscriptionList(test, "Add", [subscription1], []); | |
179 | |
180 changes = []; | |
181 filterStorage.removeSubscription(subscription1); | |
182 compareSubscriptionList(test, "Re-removing previously added subscription", [],
[]); | |
183 test.deepEqual(changes, ["subscription.removed http://test1/"], "Received chan
ges"); | |
184 | |
185 test.done(); | |
186 }; | |
187 | |
188 exports.testMovingSubscriptions = function(test) | |
189 { | |
190 let subscription1 = Subscription.fromURL("http://test1/"); | |
191 let subscription2 = Subscription.fromURL("http://test2/"); | |
192 let subscription3 = Subscription.fromURL("http://test3/"); | |
193 | |
194 filterStorage.addSubscription(subscription1); | |
195 filterStorage.addSubscription(subscription2); | |
196 filterStorage.addSubscription(subscription3); | |
197 | |
198 let changes = []; | |
199 function listener(action, subscription) | |
200 { | |
201 if (action.indexOf("subscription.") == 0) | |
202 changes.push(action + " " + subscription.url); | |
203 } | 85 } |
204 addListener(listener); | 86 |
205 | 87 it("Adding Subscriptions", () => |
206 compareSubscriptionList(test, "Initial state", [subscription1, subscription2,
subscription3]); | 88 { |
207 test.deepEqual(changes, [], "Received changes"); | 89 let subscription1 = Subscription.fromURL("http://test1/"); |
208 | 90 let subscription2 = Subscription.fromURL("http://test2/"); |
209 filterStorage.removeSubscription(subscription2); | 91 |
210 compareSubscriptionList(test, "Remove", [subscription1, subscription3]); | 92 let changes = []; |
211 | 93 function listener(action, subscription) |
212 test.done(); | 94 { |
213 }; | 95 if (action.indexOf("subscription.") == 0) |
214 | 96 changes.push(action + " " + subscription.url); |
215 exports.testAddingFilters = function(test) | 97 } |
216 { | 98 addListener(listener); |
217 let subscription1 = Subscription.fromURL("~blocking"); | 99 |
218 subscription1.defaults = ["blocking"]; | 100 compareSubscriptionList("Initial state", []); |
219 | 101 assert.deepEqual(changes, [], "Received changes"); |
220 let subscription2 = Subscription.fromURL("~exceptions"); | 102 |
221 subscription2.defaults = ["whitelist", "elemhide"]; | 103 changes = []; |
222 | 104 filterStorage.addSubscription(subscription1); |
223 let subscription3 = Subscription.fromURL("~other"); | 105 compareSubscriptionList("Adding first subscription", [subscription1]); |
224 | 106 assert.deepEqual(changes, ["subscription.added http://test1/"], "Received ch
anges"); |
225 filterStorage.addSubscription(subscription1); | 107 |
226 filterStorage.addSubscription(subscription2); | 108 changes = []; |
227 filterStorage.addSubscription(subscription3); | 109 filterStorage.addSubscription(subscription1); |
228 | 110 compareSubscriptionList("Adding already added subscription", [subscription1]
); |
229 let changes = []; | 111 assert.deepEqual(changes, [], "Received changes"); |
230 function listener(action, filter) | 112 |
231 { | 113 changes = []; |
232 if (action.indexOf("filter.") == 0) | 114 filterStorage.addSubscription(subscription2); |
233 changes.push(action + " " + filter.text); | 115 compareSubscriptionList("Adding second", [subscription1, subscription2]); |
234 } | 116 assert.deepEqual(changes, ["subscription.added http://test2/"], "Received ch
anges"); |
235 addListener(listener); | 117 |
236 | 118 filterStorage.removeSubscription(subscription1); |
237 compareFiltersList(test, "Initial state", [[], [], []]); | 119 compareSubscriptionList("Remove", [subscription2]); |
238 test.deepEqual(changes, [], "Received changes"); | 120 |
239 | 121 changes = []; |
240 changes = []; | 122 filterStorage.addSubscription(subscription1); |
241 filterStorage.addFilter(Filter.fromText("foo")); | 123 compareSubscriptionList("Re-adding previously removed subscription", [subscr
iption2, subscription1]); |
242 compareFiltersList(test, "Adding blocking filter", [["foo"], [], []]); | 124 assert.deepEqual(changes, ["subscription.added http://test1/"], "Received ch
anges"); |
243 test.deepEqual(changes, ["filter.added foo"], "Received changes"); | 125 }); |
244 | 126 |
245 changes = []; | 127 it("Removing Subscriptions", () => |
246 filterStorage.addFilter(Filter.fromText("@@bar")); | 128 { |
247 compareFiltersList(test, "Adding exception rule", [["foo"], ["@@bar"], []]); | 129 let subscription1 = Subscription.fromURL("http://test1/"); |
248 test.deepEqual(changes, ["filter.added @@bar"], "Received changes"); | 130 let subscription2 = Subscription.fromURL("http://test2/"); |
249 | 131 |
250 changes = []; | 132 assert.equal(Subscription.fromURL(subscription1.url), subscription1, |
251 filterStorage.addFilter(Filter.fromText("foo##bar")); | 133 "Subscription known before addition"); |
252 compareFiltersList(test, "Adding hiding rule", [["foo"], ["@@bar", "foo##bar"]
, []]); | 134 |
253 test.deepEqual(changes, ["filter.added foo##bar"], "Received changes"); | 135 filterStorage.addSubscription(subscription1); |
254 | 136 filterStorage.addSubscription(subscription2); |
255 changes = []; | 137 |
256 filterStorage.addFilter(Filter.fromText("foo#@#bar")); | 138 let changes = []; |
257 compareFiltersList(test, "Adding hiding exception", [["foo"], ["@@bar", "foo##
bar", "foo#@#bar"], []]); | 139 function listener(action, subscription) |
258 test.deepEqual(changes, ["filter.added foo#@#bar"], "Received changes"); | 140 { |
259 | 141 if (action.indexOf("subscription.") == 0) |
260 changes = []; | 142 changes.push(action + " " + subscription.url); |
261 filterStorage.addFilter(Filter.fromText("example.com#$#foobar")); | 143 } |
262 compareFiltersList(test, "Adding snippet filter", [["foo"], ["@@bar", "foo##ba
r", "foo#@#bar"], ["example.com#$#foobar"]]); | 144 addListener(listener); |
263 test.deepEqual(changes, ["filter.added example.com#$#foobar"], "Received chang
es"); | 145 |
264 | 146 compareSubscriptionList("Initial state", [subscription1, subscription2], |
265 changes = []; | 147 [subscription1, subscription2]); |
266 filterStorage.addFilter(Filter.fromText("!foobar")); | 148 assert.deepEqual(changes, [], "Received changes"); |
267 compareFiltersList(test, "Adding comment", [["foo", "!foobar"], ["@@bar", "foo
##bar", "foo#@#bar"], ["example.com#$#foobar"]]); | 149 |
268 test.deepEqual(changes, ["filter.added !foobar"], "Received changes"); | 150 assert.equal(Subscription.fromURL(subscription1.url), subscription1, |
269 | 151 "Subscription known after addition"); |
270 changes = []; | 152 |
271 filterStorage.addFilter(Filter.fromText("foo")); | 153 changes = []; |
272 compareFiltersList(test, "Adding already added filter", [["foo", "!foobar"], [
"@@bar", "foo##bar", "foo#@#bar"], ["example.com#$#foobar"]]); | 154 filterStorage.removeSubscription(subscription1); |
273 test.deepEqual(changes, [], "Received changes"); | 155 compareSubscriptionList("Removing first subscription", [subscription2], |
274 | 156 [subscription2]); |
275 subscription1.disabled = true; | 157 assert.deepEqual(changes, ["subscription.removed http://test1/"], "Received
changes"); |
276 | 158 |
277 changes = []; | 159 // Once a subscription has been removed, it is forgotten; a new object is |
278 filterStorage.addFilter(Filter.fromText("foo")); | 160 // created for the previously known subscription URL. |
279 compareFiltersList(test, "Adding filter already in a disabled subscription", [
["foo", "!foobar"], ["@@bar", "foo##bar", "foo#@#bar"], ["example.com#$#foobar",
"foo"]]); | 161 assert.notEqual(Subscription.fromURL(subscription1.url), subscription1, |
280 test.deepEqual(changes, ["filter.added foo"], "Received changes"); | 162 "Subscription forgotten upon removal"); |
281 | 163 Subscription.knownSubscriptions.delete(subscription1.url); |
282 changes = []; | 164 |
283 filterStorage.addFilter(Filter.fromText("foo"), subscription1); | 165 changes = []; |
284 compareFiltersList(test, "Adding filter to an explicit subscription", [["foo",
"!foobar", "foo"], ["@@bar", "foo##bar", "foo#@#bar"], ["example.com#$#foobar",
"foo"]]); | 166 filterStorage.removeSubscription(subscription1); |
285 test.deepEqual(changes, ["filter.added foo"], "Received changes"); | 167 compareSubscriptionList("Removing already removed subscription", [subscripti
on2], |
286 | 168 [subscription2]); |
287 changes = []; | 169 assert.deepEqual(changes, [], "Received changes"); |
288 filterStorage.addFilter(Filter.fromText("example.com#$#foobar"), subscription2
, 0); | 170 |
289 compareFiltersList(test, "Adding filter to an explicit subscription with posit
ion", [["foo", "!foobar", "foo"], ["example.com#$#foobar", "@@bar", "foo##bar",
"foo#@#bar"], ["example.com#$#foobar", "foo"]]); | 171 changes = []; |
290 test.deepEqual(changes, ["filter.added example.com#$#foobar"], "Received chang
es"); | 172 filterStorage.removeSubscription(subscription2); |
291 | 173 compareSubscriptionList("remaining subscription", [], []); |
292 test.done(); | 174 assert.deepEqual(changes, ["subscription.removed http://test2/"], "Received
changes"); |
293 }; | 175 |
294 | 176 filterStorage.addSubscription(subscription1); |
295 exports.testRemovingFilters = function(test) | 177 compareSubscriptionList("Add", [subscription1], []); |
296 { | 178 |
297 let subscription1 = Subscription.fromURL("~foo"); | 179 changes = []; |
298 subscription1.addFilter(Filter.fromText("foo")); | 180 filterStorage.removeSubscription(subscription1); |
299 subscription1.addFilter(Filter.fromText("foo")); | 181 compareSubscriptionList("Re-removing previously added subscription", [], [])
; |
300 subscription1.addFilter(Filter.fromText("bar")); | 182 assert.deepEqual(changes, ["subscription.removed http://test1/"], "Received
changes"); |
301 | 183 }); |
302 let subscription2 = Subscription.fromURL("~bar"); | 184 |
303 subscription2.addFilter(Filter.fromText("foo")); | 185 it("Moving Subscriptions", () => |
304 subscription2.addFilter(Filter.fromText("bar")); | 186 { |
305 subscription2.addFilter(Filter.fromText("foo")); | 187 let subscription1 = Subscription.fromURL("http://test1/"); |
306 | 188 let subscription2 = Subscription.fromURL("http://test2/"); |
307 let subscription3 = Subscription.fromURL("http://test/"); | 189 let subscription3 = Subscription.fromURL("http://test3/"); |
308 subscription3.addFilter(Filter.fromText("foo")); | 190 |
309 subscription3.addFilter(Filter.fromText("bar")); | 191 filterStorage.addSubscription(subscription1); |
310 | 192 filterStorage.addSubscription(subscription2); |
311 filterStorage.addSubscription(subscription1); | 193 filterStorage.addSubscription(subscription3); |
312 filterStorage.addSubscription(subscription2); | 194 |
313 filterStorage.addSubscription(subscription3); | 195 let changes = []; |
314 | 196 function listener(action, subscription) |
315 let changes = []; | 197 { |
316 function listener(action, filter) | 198 if (action.indexOf("subscription.") == 0) |
317 { | 199 changes.push(action + " " + subscription.url); |
318 if (action.indexOf("filter.") == 0) | 200 } |
319 changes.push(action + " " + filter.text); | 201 addListener(listener); |
320 } | 202 |
321 addListener(listener); | 203 compareSubscriptionList("Initial state", [subscription1, subscription2, subs
cription3]); |
322 | 204 assert.deepEqual(changes, [], "Received changes"); |
323 compareFiltersList(test, "Initial state", [["foo", "foo", "bar"], ["foo", "bar
", "foo"], ["foo", "bar"]]); | 205 |
324 test.deepEqual(changes, [], "Received changes"); | 206 filterStorage.removeSubscription(subscription2); |
325 | 207 compareSubscriptionList("Remove", [subscription1, subscription3]); |
326 changes = []; | 208 }); |
327 filterStorage.removeFilter(Filter.fromText("foo"), subscription2, 0); | 209 |
328 compareFiltersList(test, "Remove with explicit subscription and position", [["
foo", "foo", "bar"], ["bar", "foo"], ["foo", "bar"]]); | 210 it("Adding Filters", () => |
329 test.deepEqual(changes, ["filter.removed foo"], "Received changes"); | 211 { |
330 | 212 let subscription1 = Subscription.fromURL("~blocking"); |
331 changes = []; | 213 subscription1.defaults = ["blocking"]; |
332 filterStorage.removeFilter(Filter.fromText("foo"), subscription2, 0); | 214 |
333 compareFiltersList(test, "Remove with explicit subscription and wrong position
", [["foo", "foo", "bar"], ["bar", "foo"], ["foo", "bar"]]); | 215 let subscription2 = Subscription.fromURL("~exceptions"); |
334 test.deepEqual(changes, [], "Received changes"); | 216 subscription2.defaults = ["whitelist", "elemhide"]; |
335 | 217 |
336 changes = []; | 218 let subscription3 = Subscription.fromURL("~other"); |
337 filterStorage.removeFilter(Filter.fromText("foo"), subscription1); | 219 |
338 compareFiltersList(test, "Remove with explicit subscription", [["bar"], ["bar"
, "foo"], ["foo", "bar"]]); | 220 filterStorage.addSubscription(subscription1); |
339 test.deepEqual(changes, ["filter.removed foo", "filter.removed foo"], "Receive
d changes"); | 221 filterStorage.addSubscription(subscription2); |
340 | 222 filterStorage.addSubscription(subscription3); |
341 changes = []; | 223 |
342 filterStorage.removeFilter(Filter.fromText("foo"), subscription1); | 224 let changes = []; |
343 compareFiltersList(test, "Remove from subscription not having the filter", [["
bar"], ["bar", "foo"], ["foo", "bar"]]); | 225 function listener(action, filter) |
344 test.deepEqual(changes, [], "Received changes"); | 226 { |
345 | 227 if (action.indexOf("filter.") == 0) |
346 changes = []; | 228 changes.push(action + " " + filter.text); |
347 filterStorage.removeFilter(Filter.fromText("bar")); | 229 } |
348 compareFiltersList(test, "Remove everywhere", [[], ["foo"], ["foo", "bar"]]); | 230 addListener(listener); |
349 test.deepEqual(changes, ["filter.removed bar", "filter.removed bar"], "Receive
d changes"); | 231 |
350 | 232 compareFiltersList("Initial state", [[], [], []]); |
351 changes = []; | 233 assert.deepEqual(changes, [], "Received changes"); |
352 filterStorage.removeFilter(Filter.fromText("bar")); | 234 |
353 compareFiltersList(test, "Remove of unknown filter", [[], ["foo"], ["foo", "ba
r"]]); | 235 changes = []; |
354 test.deepEqual(changes, [], "Received changes"); | 236 filterStorage.addFilter(Filter.fromText("foo")); |
355 | 237 compareFiltersList("Adding blocking filter", [["foo"], [], []]); |
356 test.done(); | 238 assert.deepEqual(changes, ["filter.added foo"], "Received changes"); |
357 }; | 239 |
358 | 240 changes = []; |
359 exports.testMovingFilters = function(test) | 241 filterStorage.addFilter(Filter.fromText("@@bar")); |
360 { | 242 compareFiltersList("Adding exception rule", [["foo"], ["@@bar"], []]); |
361 let subscription1 = Subscription.fromURL("~foo"); | 243 assert.deepEqual(changes, ["filter.added @@bar"], "Received changes"); |
362 subscription1.addFilter(Filter.fromText("foo")); | 244 |
363 subscription1.addFilter(Filter.fromText("bar")); | 245 changes = []; |
364 subscription1.addFilter(Filter.fromText("bas")); | 246 filterStorage.addFilter(Filter.fromText("foo##bar")); |
365 subscription1.addFilter(Filter.fromText("foo")); | 247 compareFiltersList("Adding hiding rule", [["foo"], ["@@bar", "foo##bar"], []
]); |
366 | 248 assert.deepEqual(changes, ["filter.added foo##bar"], "Received changes"); |
367 let subscription2 = Subscription.fromURL("http://test/"); | 249 |
368 subscription2.addFilter(Filter.fromText("foo")); | 250 changes = []; |
369 subscription2.addFilter(Filter.fromText("bar")); | 251 filterStorage.addFilter(Filter.fromText("foo#@#bar")); |
370 | 252 compareFiltersList("Adding hiding exception", [["foo"], ["@@bar", "foo##bar"
, "foo#@#bar"], []]); |
371 filterStorage.addSubscription(subscription1); | 253 assert.deepEqual(changes, ["filter.added foo#@#bar"], "Received changes"); |
372 filterStorage.addSubscription(subscription2); | 254 |
373 | 255 changes = []; |
374 let changes = []; | 256 filterStorage.addFilter(Filter.fromText("example.com#$#foobar")); |
375 function listener(action, filter) | 257 compareFiltersList("Adding snippet filter", [["foo"], ["@@bar", "foo##bar",
"foo#@#bar"], ["example.com#$#foobar"]]); |
376 { | 258 assert.deepEqual(changes, ["filter.added example.com#$#foobar"], "Received c
hanges"); |
377 if (action.indexOf("filter.") == 0) | 259 |
378 changes.push(action + " " + filter.text); | 260 changes = []; |
379 } | 261 filterStorage.addFilter(Filter.fromText("!foobar")); |
380 addListener(listener); | 262 compareFiltersList("Adding comment", [["foo", "!foobar"], ["@@bar", "foo##ba
r", "foo#@#bar"], ["example.com#$#foobar"]]); |
381 | 263 assert.deepEqual(changes, ["filter.added !foobar"], "Received changes"); |
382 compareFiltersList(test, "Initial state", [["foo", "bar", "bas", "foo"], ["foo
", "bar"]]); | 264 |
383 test.deepEqual(changes, [], "Received changes"); | 265 changes = []; |
384 | 266 filterStorage.addFilter(Filter.fromText("foo")); |
385 changes = []; | 267 compareFiltersList("Adding already added filter", [["foo", "!foobar"], ["@@b
ar", "foo##bar", "foo#@#bar"], ["example.com#$#foobar"]]); |
386 filterStorage.moveFilter(Filter.fromText("foo"), subscription1, 0, 1); | 268 assert.deepEqual(changes, [], "Received changes"); |
387 compareFiltersList(test, "Regular move", [["bar", "foo", "bas", "foo"], ["foo"
, "bar"]]); | 269 |
388 test.deepEqual(changes, ["filter.moved foo"], "Received changes"); | 270 subscription1.disabled = true; |
389 | 271 |
390 changes = []; | 272 changes = []; |
391 filterStorage.moveFilter(Filter.fromText("foo"), subscription1, 0, 3); | 273 filterStorage.addFilter(Filter.fromText("foo")); |
392 compareFiltersList(test, "Invalid move", [["bar", "foo", "bas", "foo"], ["foo"
, "bar"]]); | 274 compareFiltersList("Adding filter already in a disabled subscription", [["fo
o", "!foobar"], ["@@bar", "foo##bar", "foo#@#bar"], ["example.com#$#foobar", "fo
o"]]); |
393 test.deepEqual(changes, [], "Received changes"); | 275 assert.deepEqual(changes, ["filter.added foo"], "Received changes"); |
394 | 276 |
395 changes = []; | 277 changes = []; |
396 filterStorage.moveFilter(Filter.fromText("foo"), subscription2, 0, 1); | 278 filterStorage.addFilter(Filter.fromText("foo"), subscription1); |
397 compareFiltersList(test, "Invalid subscription", [["bar", "foo", "bas", "foo"]
, ["foo", "bar"]]); | 279 compareFiltersList("Adding filter to an explicit subscription", [["foo", "!f
oobar", "foo"], ["@@bar", "foo##bar", "foo#@#bar"], ["example.com#$#foobar", "fo
o"]]); |
398 test.deepEqual(changes, [], "Received changes"); | 280 assert.deepEqual(changes, ["filter.added foo"], "Received changes"); |
399 | 281 |
400 changes = []; | 282 changes = []; |
401 filterStorage.moveFilter(Filter.fromText("foo"), subscription1, 1, 1); | 283 filterStorage.addFilter(Filter.fromText("example.com#$#foobar"), subscriptio
n2, 0); |
402 compareFiltersList(test, "Move to current position", [["bar", "foo", "bas", "f
oo"], ["foo", "bar"]]); | 284 compareFiltersList("Adding filter to an explicit subscription with position"
, [["foo", "!foobar", "foo"], ["example.com#$#foobar", "@@bar", "foo##bar", "foo
#@#bar"], ["example.com#$#foobar", "foo"]]); |
403 test.deepEqual(changes, [], "Received changes"); | 285 assert.deepEqual(changes, ["filter.added example.com#$#foobar"], "Received c
hanges"); |
404 | 286 }); |
405 changes = []; | 287 |
406 filterStorage.moveFilter(Filter.fromText("bar"), subscription1, 0, 1); | 288 it("Removing Filters", () => |
407 compareFiltersList(test, "Regular move", [["foo", "bar", "bas", "foo"], ["foo"
, "bar"]]); | 289 { |
408 test.deepEqual(changes, ["filter.moved bar"], "Received changes"); | 290 let subscription1 = Subscription.fromURL("~foo"); |
409 | 291 subscription1.addFilter(Filter.fromText("foo")); |
410 test.done(); | 292 subscription1.addFilter(Filter.fromText("foo")); |
411 }; | 293 subscription1.addFilter(Filter.fromText("bar")); |
412 | 294 |
413 exports.testHitCounts = function(test) | 295 let subscription2 = Subscription.fromURL("~bar"); |
414 { | 296 subscription2.addFilter(Filter.fromText("foo")); |
415 let changes = []; | 297 subscription2.addFilter(Filter.fromText("bar")); |
416 function listener(action, filter) | 298 subscription2.addFilter(Filter.fromText("foo")); |
417 { | 299 |
418 if (action.indexOf("filter.") == 0) | 300 let subscription3 = Subscription.fromURL("http://test/"); |
419 changes.push(action + " " + filter.text); | 301 subscription3.addFilter(Filter.fromText("foo")); |
420 } | 302 subscription3.addFilter(Filter.fromText("bar")); |
421 addListener(listener); | 303 |
422 | 304 filterStorage.addSubscription(subscription1); |
423 let filter1 = Filter.fromText("filter1"); | 305 filterStorage.addSubscription(subscription2); |
424 let filter2 = Filter.fromText("filter2"); | 306 filterStorage.addSubscription(subscription3); |
425 | 307 |
426 filterStorage.addFilter(filter1); | 308 let changes = []; |
427 | 309 function listener(action, filter) |
428 test.equal(filter1.hitCount, 0, "filter1 initial hit count"); | 310 { |
429 test.equal(filter2.hitCount, 0, "filter2 initial hit count"); | 311 if (action.indexOf("filter.") == 0) |
430 test.equal(filter1.lastHit, 0, "filter1 initial last hit"); | 312 changes.push(action + " " + filter.text); |
431 test.equal(filter2.lastHit, 0, "filter2 initial last hit"); | 313 } |
432 | 314 addListener(listener); |
433 changes = []; | 315 |
434 filterStorage.increaseHitCount(filter1); | 316 compareFiltersList("Initial state", [["foo", "foo", "bar"], ["foo", "bar", "
foo"], ["foo", "bar"]]); |
435 test.equal(filter1.hitCount, 1, "Hit count after increase (filter in list)"); | 317 assert.deepEqual(changes, [], "Received changes"); |
436 test.ok(filter1.lastHit > 0, "Last hit changed after increase"); | 318 |
437 test.deepEqual(changes, ["filter.hitCount filter1", "filter.lastHit filter1"],
"Received changes"); | 319 changes = []; |
438 | 320 filterStorage.removeFilter(Filter.fromText("foo"), subscription2, 0); |
439 changes = []; | 321 compareFiltersList("Remove with explicit subscription and position", [["foo"
, "foo", "bar"], ["bar", "foo"], ["foo", "bar"]]); |
440 filterStorage.increaseHitCount(filter2); | 322 assert.deepEqual(changes, ["filter.removed foo"], "Received changes"); |
441 test.equal(filter2.hitCount, 1, "Hit count after increase (filter not in list)
"); | 323 |
442 test.ok(filter2.lastHit > 0, "Last hit changed after increase"); | 324 changes = []; |
443 test.deepEqual(changes, ["filter.hitCount filter2", "filter.lastHit filter2"],
"Received changes"); | 325 filterStorage.removeFilter(Filter.fromText("foo"), subscription2, 0); |
444 | 326 compareFiltersList("Remove with explicit subscription and wrong position", [
["foo", "foo", "bar"], ["bar", "foo"], ["foo", "bar"]]); |
445 changes = []; | 327 assert.deepEqual(changes, [], "Received changes"); |
446 filterStorage.resetHitCounts([filter1]); | 328 |
447 test.equal(filter1.hitCount, 0, "Hit count after reset"); | 329 changes = []; |
448 test.equal(filter1.lastHit, 0, "Last hit after reset"); | 330 filterStorage.removeFilter(Filter.fromText("foo"), subscription1); |
449 test.deepEqual(changes, ["filter.hitCount filter1", "filter.lastHit filter1"],
"Received changes"); | 331 compareFiltersList("Remove with explicit subscription", [["bar"], ["bar", "f
oo"], ["foo", "bar"]]); |
450 | 332 assert.deepEqual(changes, ["filter.removed foo", "filter.removed foo"], "Rec
eived changes"); |
451 changes = []; | 333 |
452 filterStorage.resetHitCounts(null); | 334 changes = []; |
453 test.equal(filter2.hitCount, 0, "Hit count after complete reset"); | 335 filterStorage.removeFilter(Filter.fromText("foo"), subscription1); |
454 test.equal(filter2.lastHit, 0, "Last hit after complete reset"); | 336 compareFiltersList("Remove from subscription not having the filter", [["bar"
], ["bar", "foo"], ["foo", "bar"]]); |
455 test.deepEqual(changes, ["filter.hitCount filter2", "filter.lastHit filter2"],
"Received changes"); | 337 assert.deepEqual(changes, [], "Received changes"); |
456 | 338 |
457 test.done(); | 339 changes = []; |
458 }; | 340 filterStorage.removeFilter(Filter.fromText("bar")); |
459 | 341 compareFiltersList("Remove everywhere", [[], ["foo"], ["foo", "bar"]]); |
460 exports.testFilterSubscriptionRelationship = function(test) | 342 assert.deepEqual(changes, ["filter.removed bar", "filter.removed bar"], "Rec
eived changes"); |
461 { | 343 |
462 let filter1 = Filter.fromText("filter1"); | 344 changes = []; |
463 let filter2 = Filter.fromText("filter2"); | 345 filterStorage.removeFilter(Filter.fromText("bar")); |
464 let filter3 = Filter.fromText("filter3"); | 346 compareFiltersList("Remove of unknown filter", [[], ["foo"], ["foo", "bar"]]
); |
465 | 347 assert.deepEqual(changes, [], "Received changes"); |
466 let subscription1 = Subscription.fromURL("http://test1/"); | 348 }); |
467 subscription1.addFilter(filter1); | 349 |
468 subscription1.addFilter(filter2); | 350 it("Moving Filters", () => |
469 | 351 { |
470 let subscription2 = Subscription.fromURL("http://test2/"); | 352 let subscription1 = Subscription.fromURL("~foo"); |
471 subscription2.addFilter(filter2); | 353 subscription1.addFilter(Filter.fromText("foo")); |
472 subscription2.addFilter(filter3); | 354 subscription1.addFilter(Filter.fromText("bar")); |
473 | 355 subscription1.addFilter(Filter.fromText("bas")); |
474 let subscription3 = Subscription.fromURL("http://test3/"); | 356 subscription1.addFilter(Filter.fromText("foo")); |
475 subscription3.addFilter(filter1); | 357 |
476 subscription3.addFilter(filter2); | 358 let subscription2 = Subscription.fromURL("http://test/"); |
477 subscription3.addFilter(filter3); | 359 subscription2.addFilter(Filter.fromText("foo")); |
478 | 360 subscription2.addFilter(Filter.fromText("bar")); |
479 compareFilterSubscriptions(test, "Initial filter1 subscriptions", filter1, [])
; | 361 |
480 compareFilterSubscriptions(test, "Initial filter2 subscriptions", filter2, [])
; | 362 filterStorage.addSubscription(subscription1); |
481 compareFilterSubscriptions(test, "Initial filter3 subscriptions", filter3, [])
; | 363 filterStorage.addSubscription(subscription2); |
482 | 364 |
483 filterStorage.addSubscription(subscription1); | 365 let changes = []; |
484 | 366 function listener(action, filter) |
485 compareFilterSubscriptions(test, "filter1 subscriptions after adding http://te
st1/", filter1, [subscription1]); | 367 { |
486 compareFilterSubscriptions(test, "filter2 subscriptions after adding http://te
st1/", filter2, [subscription1]); | 368 if (action.indexOf("filter.") == 0) |
487 compareFilterSubscriptions(test, "filter3 subscriptions after adding http://te
st1/", filter3, []); | 369 changes.push(action + " " + filter.text); |
488 | 370 } |
489 filterStorage.addSubscription(subscription2); | 371 addListener(listener); |
490 | 372 |
491 compareFilterSubscriptions(test, "filter1 subscriptions after adding http://te
st2/", filter1, [subscription1]); | 373 compareFiltersList("Initial state", [["foo", "bar", "bas", "foo"], ["foo", "
bar"]]); |
492 compareFilterSubscriptions(test, "filter2 subscriptions after adding http://te
st2/", filter2, [subscription1, subscription2]); | 374 assert.deepEqual(changes, [], "Received changes"); |
493 compareFilterSubscriptions(test, "filter3 subscriptions after adding http://te
st2/", filter3, [subscription2]); | 375 |
494 | 376 changes = []; |
495 filterStorage.removeSubscription(subscription1); | 377 filterStorage.moveFilter(Filter.fromText("foo"), subscription1, 0, 1); |
496 | 378 compareFiltersList("Regular move", [["bar", "foo", "bas", "foo"], ["foo", "b
ar"]]); |
497 compareFilterSubscriptions(test, "filter1 subscriptions after removing http://
test1/", filter1, []); | 379 assert.deepEqual(changes, ["filter.moved foo"], "Received changes"); |
498 compareFilterSubscriptions(test, "filter2 subscriptions after removing http://
test1/", filter2, [subscription2]); | 380 |
499 compareFilterSubscriptions(test, "filter3 subscriptions after removing http://
test1/", filter3, [subscription2]); | 381 changes = []; |
500 | 382 filterStorage.moveFilter(Filter.fromText("foo"), subscription1, 0, 3); |
501 filterStorage.updateSubscriptionFilters(subscription3, [filter3.text]); | 383 compareFiltersList("Invalid move", [["bar", "foo", "bas", "foo"], ["foo", "b
ar"]]); |
502 | 384 assert.deepEqual(changes, [], "Received changes"); |
503 compareFilterSubscriptions(test, "filter1 subscriptions after updating http://
test3/ filters", filter1, []); | 385 |
504 compareFilterSubscriptions(test, "filter2 subscriptions after updating http://
test3/ filters", filter2, [subscription2]); | 386 changes = []; |
505 compareFilterSubscriptions(test, "filter3 subscriptions after updating http://
test3/ filters", filter3, [subscription2]); | 387 filterStorage.moveFilter(Filter.fromText("foo"), subscription2, 0, 1); |
506 | 388 compareFiltersList("Invalid subscription", [["bar", "foo", "bas", "foo"], ["
foo", "bar"]]); |
507 filterStorage.addSubscription(subscription3); | 389 assert.deepEqual(changes, [], "Received changes"); |
508 | 390 |
509 compareFilterSubscriptions(test, "filter1 subscriptions after adding http://te
st3/", filter1, []); | 391 changes = []; |
510 compareFilterSubscriptions(test, "filter2 subscriptions after adding http://te
st3/", filter2, [subscription2]); | 392 filterStorage.moveFilter(Filter.fromText("foo"), subscription1, 1, 1); |
511 compareFilterSubscriptions(test, "filter3 subscriptions after adding http://te
st3/", filter3, [subscription2, subscription3]); | 393 compareFiltersList("Move to current position", [["bar", "foo", "bas", "foo"]
, ["foo", "bar"]]); |
512 | 394 assert.deepEqual(changes, [], "Received changes"); |
513 filterStorage.updateSubscriptionFilters(subscription3, [filter1.text, filter2.
text]); | 395 |
514 | 396 changes = []; |
515 compareFilterSubscriptions(test, "filter1 subscriptions after updating http://
test3/ filters", filter1, [subscription3]); | 397 filterStorage.moveFilter(Filter.fromText("bar"), subscription1, 0, 1); |
516 compareFilterSubscriptions(test, "filter2 subscriptions after updating http://
test3/ filters", filter2, [subscription2, subscription3]); | 398 compareFiltersList("Regular move", [["foo", "bar", "bas", "foo"], ["foo", "b
ar"]]); |
517 compareFilterSubscriptions(test, "filter3 subscriptions after updating http://
test3/ filters", filter3, [subscription2]); | 399 assert.deepEqual(changes, ["filter.moved bar"], "Received changes"); |
518 | 400 }); |
519 filterStorage.removeSubscription(subscription3); | 401 |
520 | 402 it("Hit Counts", () => |
521 compareFilterSubscriptions(test, "filter1 subscriptions after removing http://
test3/", filter1, []); | 403 { |
522 compareFilterSubscriptions(test, "filter2 subscriptions after removing http://
test3/", filter2, [subscription2]); | 404 let changes = []; |
523 compareFilterSubscriptions(test, "filter3 subscriptions after removing http://
test3/", filter3, [subscription2]); | 405 function listener(action, filter) |
524 | 406 { |
525 test.done(); | 407 if (action.indexOf("filter.") == 0) |
526 }; | 408 changes.push(action + " " + filter.text); |
| 409 } |
| 410 addListener(listener); |
| 411 |
| 412 let filter1 = Filter.fromText("filter1"); |
| 413 let filter2 = Filter.fromText("filter2"); |
| 414 |
| 415 filterStorage.addFilter(filter1); |
| 416 |
| 417 assert.equal(filter1.hitCount, 0, "filter1 initial hit count"); |
| 418 assert.equal(filter2.hitCount, 0, "filter2 initial hit count"); |
| 419 assert.equal(filter1.lastHit, 0, "filter1 initial last hit"); |
| 420 assert.equal(filter2.lastHit, 0, "filter2 initial last hit"); |
| 421 |
| 422 changes = []; |
| 423 filterStorage.increaseHitCount(filter1); |
| 424 assert.equal(filter1.hitCount, 1, "Hit count after increase (filter in list)
"); |
| 425 assert.ok(filter1.lastHit > 0, "Last hit changed after increase"); |
| 426 assert.deepEqual(changes, ["filter.hitCount filter1", "filter.lastHit filter
1"], "Received changes"); |
| 427 |
| 428 changes = []; |
| 429 filterStorage.increaseHitCount(filter2); |
| 430 assert.equal(filter2.hitCount, 1, "Hit count after increase (filter not in l
ist)"); |
| 431 assert.ok(filter2.lastHit > 0, "Last hit changed after increase"); |
| 432 assert.deepEqual(changes, ["filter.hitCount filter2", "filter.lastHit filter
2"], "Received changes"); |
| 433 |
| 434 changes = []; |
| 435 filterStorage.resetHitCounts([filter1]); |
| 436 assert.equal(filter1.hitCount, 0, "Hit count after reset"); |
| 437 assert.equal(filter1.lastHit, 0, "Last hit after reset"); |
| 438 assert.deepEqual(changes, ["filter.hitCount filter1", "filter.lastHit filter
1"], "Received changes"); |
| 439 |
| 440 changes = []; |
| 441 filterStorage.resetHitCounts(null); |
| 442 assert.equal(filter2.hitCount, 0, "Hit count after complete reset"); |
| 443 assert.equal(filter2.lastHit, 0, "Last hit after complete reset"); |
| 444 assert.deepEqual(changes, ["filter.hitCount filter2", "filter.lastHit filter
2"], "Received changes"); |
| 445 }); |
| 446 |
| 447 it("Subscription Relationship", () => |
| 448 { |
| 449 let filter1 = Filter.fromText("filter1"); |
| 450 let filter2 = Filter.fromText("filter2"); |
| 451 let filter3 = Filter.fromText("filter3"); |
| 452 |
| 453 let subscription1 = Subscription.fromURL("http://test1/"); |
| 454 subscription1.addFilter(filter1); |
| 455 subscription1.addFilter(filter2); |
| 456 |
| 457 let subscription2 = Subscription.fromURL("http://test2/"); |
| 458 subscription2.addFilter(filter2); |
| 459 subscription2.addFilter(filter3); |
| 460 |
| 461 let subscription3 = Subscription.fromURL("http://test3/"); |
| 462 subscription3.addFilter(filter1); |
| 463 subscription3.addFilter(filter2); |
| 464 subscription3.addFilter(filter3); |
| 465 |
| 466 compareFilterSubscriptions("Initial filter1 subscriptions", filter1, []); |
| 467 compareFilterSubscriptions("Initial filter2 subscriptions", filter2, []); |
| 468 compareFilterSubscriptions("Initial filter3 subscriptions", filter3, []); |
| 469 |
| 470 filterStorage.addSubscription(subscription1); |
| 471 |
| 472 compareFilterSubscriptions("filter1 subscriptions after adding http://test1/
", filter1, [subscription1]); |
| 473 compareFilterSubscriptions("filter2 subscriptions after adding http://test1/
", filter2, [subscription1]); |
| 474 compareFilterSubscriptions("filter3 subscriptions after adding http://test1/
", filter3, []); |
| 475 |
| 476 filterStorage.addSubscription(subscription2); |
| 477 |
| 478 compareFilterSubscriptions("filter1 subscriptions after adding http://test2/
", filter1, [subscription1]); |
| 479 compareFilterSubscriptions("filter2 subscriptions after adding http://test2/
", filter2, [subscription1, subscription2]); |
| 480 compareFilterSubscriptions("filter3 subscriptions after adding http://test2/
", filter3, [subscription2]); |
| 481 |
| 482 filterStorage.removeSubscription(subscription1); |
| 483 |
| 484 compareFilterSubscriptions("filter1 subscriptions after removing http://test
1/", filter1, []); |
| 485 compareFilterSubscriptions("filter2 subscriptions after removing http://test
1/", filter2, [subscription2]); |
| 486 compareFilterSubscriptions("filter3 subscriptions after removing http://test
1/", filter3, [subscription2]); |
| 487 |
| 488 filterStorage.updateSubscriptionFilters(subscription3, [filter3.text]); |
| 489 |
| 490 compareFilterSubscriptions("filter1 subscriptions after updating http://test
3/ filters", filter1, []); |
| 491 compareFilterSubscriptions("filter2 subscriptions after updating http://test
3/ filters", filter2, [subscription2]); |
| 492 compareFilterSubscriptions("filter3 subscriptions after updating http://test
3/ filters", filter3, [subscription2]); |
| 493 |
| 494 filterStorage.addSubscription(subscription3); |
| 495 |
| 496 compareFilterSubscriptions("filter1 subscriptions after adding http://test3/
", filter1, []); |
| 497 compareFilterSubscriptions("filter2 subscriptions after adding http://test3/
", filter2, [subscription2]); |
| 498 compareFilterSubscriptions("filter3 subscriptions after adding http://test3/
", filter3, [subscription2, subscription3]); |
| 499 |
| 500 filterStorage.updateSubscriptionFilters(subscription3, [filter1.text, filter
2.text]); |
| 501 |
| 502 compareFilterSubscriptions("filter1 subscriptions after updating http://test
3/ filters", filter1, [subscription3]); |
| 503 compareFilterSubscriptions("filter2 subscriptions after updating http://test
3/ filters", filter2, [subscription2, subscription3]); |
| 504 compareFilterSubscriptions("filter3 subscriptions after updating http://test
3/ filters", filter3, [subscription2]); |
| 505 |
| 506 filterStorage.removeSubscription(subscription3); |
| 507 |
| 508 compareFilterSubscriptions("filter1 subscriptions after removing http://test
3/", filter1, []); |
| 509 compareFilterSubscriptions("filter2 subscriptions after removing http://test
3/", filter2, [subscription2]); |
| 510 compareFilterSubscriptions("filter3 subscriptions after removing http://test
3/", filter3, [subscription2]); |
| 511 }); |
| 512 }); |
OLD | NEW |