Left: | ||
Right: |
OLD | NEW |
---|---|
1 (function() | 1 (function() |
2 { | 2 { |
3 let testRunner = null; | 3 let testRunner = null; |
4 let server = null; | 4 let server = null; |
5 let randomResult = 0.5; | 5 let randomResult = 0.5; |
6 | 6 |
7 let originalApplication; | 7 let originalInfo; |
8 let originalAddonVersion; | |
9 let info = require("info"); | 8 let info = require("info"); |
10 | 9 |
11 module("Notification", | 10 module("Notification", |
12 { | 11 { |
13 setup: function() | 12 setup: function() |
14 { | 13 { |
15 testRunner = this; | 14 testRunner = this; |
16 | 15 |
17 preparePrefs.call(this); | 16 preparePrefs.call(this); |
18 setupVirtualTime.call(this, function(wrapTimer) | 17 setupVirtualTime.call(this, function(wrapTimer) |
19 { | 18 { |
20 let NotificationModule = getModuleGlobal("notification"); | 19 let NotificationModule = getModuleGlobal("notification"); |
21 NotificationModule.downloader._timer = wrapTimer(NotificationModule.down loader._timer); | 20 NotificationModule.downloader._timer = wrapTimer(NotificationModule.down loader._timer); |
22 }, "notification", "downloader"); | 21 }, "notification", "downloader"); |
23 | 22 |
24 server = new nsHttpServer(); | 23 server = new nsHttpServer(); |
25 server.start(1234); | 24 server.start(1234); |
26 | 25 |
27 originalApplication = info.application; | 26 originalInfo = {}; |
27 for (let key in info) | |
28 originalInfo[key] = info[key]; | |
29 | |
30 info.addonName = "adblockpluschrome"; | |
31 info.addonVersion = "1.4.1"; | |
28 info.application = "chrome"; | 32 info.application = "chrome"; |
29 originalAddonVersion = info.addonVersion; | 33 info.applicationVersion = "27.0"; |
30 info.addonVersion = "1.4.1"; | 34 info.platform = "chromium"; |
35 info.platformVersion = "12.0"; | |
31 | 36 |
32 Prefs.notificationurl = "http://127.0.0.1:1234/notification.json"; | 37 Prefs.notificationurl = "http://127.0.0.1:1234/notification.json"; |
33 Prefs.notificationdata = {}; | 38 Prefs.notificationdata = {}; |
34 | 39 |
35 // Replace Math.random() function | 40 // Replace Math.random() function |
36 let DownloaderGlobal = Cu.getGlobalForObject(getModuleGlobal("downloader") ); | 41 let DownloaderGlobal = Cu.getGlobalForObject(getModuleGlobal("downloader") ); |
37 this._origRandom = DownloaderGlobal.Math.random; | 42 this._origRandom = DownloaderGlobal.Math.random; |
38 DownloaderGlobal.Math.random = function() randomResult; | 43 DownloaderGlobal.Math.random = function() randomResult; |
39 randomResult = 0.5; | 44 randomResult = 0.5; |
40 }, | 45 }, |
41 | 46 |
42 teardown: function() | 47 teardown: function() |
43 { | 48 { |
44 restorePrefs.call(this); | 49 restorePrefs.call(this); |
45 restoreVirtualTime.call(this); | 50 restoreVirtualTime.call(this); |
46 | 51 |
47 stop(); | 52 stop(); |
48 server.stop(function() | 53 server.stop(function() |
49 { | 54 { |
50 server = null; | 55 server = null; |
51 start(); | 56 start(); |
52 }); | 57 }); |
53 | 58 |
54 info.application = originalApplication; | 59 for (let key in originalInfo) |
55 info.addonVersion = originalAddonVersion; | 60 info[key] = originalInfo[key]; |
56 | 61 |
57 if (this._origRandom) | 62 if (this._origRandom) |
58 { | 63 { |
59 let DownloaderGlobal = Cu.getGlobalForObject(getModuleGlobal("downloader ")); | 64 let DownloaderGlobal = Cu.getGlobalForObject(getModuleGlobal("downloader ")); |
60 DownloaderGlobal.Math.random = this._origRandom; | 65 DownloaderGlobal.Math.random = this._origRandom; |
61 delete this._origRandom; | 66 delete this._origRandom; |
62 } | 67 } |
63 | 68 |
64 Notification.init(); | 69 Notification.init(); |
65 } | 70 } |
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
138 message: {en: "Information"} | 143 message: {en: "Information"} |
139 }); | 144 }); |
140 | 145 |
141 registerHandler([information]); | 146 registerHandler([information]); |
142 testRunner.runScheduledTasks(1); | 147 testRunner.runScheduledTasks(1); |
143 | 148 |
144 deepEqual(Notification.getNextToShow(), information, "The notification is sh own"); | 149 deepEqual(Notification.getNextToShow(), information, "The notification is sh own"); |
145 equal(Notification.getNextToShow(), null, "Notification is treated as severi ty information"); | 150 equal(Notification.getNextToShow(), null, "Notification is treated as severi ty information"); |
146 }); | 151 }); |
147 | 152 |
148 test("Different platforms", function() | 153 test("Target selection", function() |
149 { | 154 { |
150 let information = fixConstructors({ | 155 let targets = [ |
151 id: 1, | 156 ["extension", "adblockpluschrome", true], |
152 severity: "information", | 157 ["extension", "adblockplus", false], |
153 message: {en: "Information"}, | 158 ["extension", "adblockpluschrome2", false], |
154 platforms: ["chrome", "firefox"] | 159 ["extensionMinVersion", "1.4", true], |
155 }); | 160 ["extensionMinVersion", "1.4.1", true], |
156 let critical = fixConstructors({ | 161 ["extensionMinVersion", "1.5", false], |
157 id: 2, | 162 ["extensionMaxVersion", "1.5", true], |
158 severity: "critical", | 163 ["extensionMaxVersion", "1.4.1", true], |
159 message: {en: "Critical"}, | 164 ["extensionMaxVersion", "1.4.*", true], |
160 platforms: ["firefox"] | 165 ["extensionMaxVersion", "1.4", false], |
161 }); | 166 ["application", "chrome", true], |
167 ["application", "firefox", false], | |
168 ["applicationMinVersion", "27.0", true], | |
169 ["applicationMinVersion", "27", true], | |
170 ["applicationMinVersion", "26", true], | |
171 ["applicationMinVersion", "28", false], | |
172 ["applicationMinVersion", "27.1", false], | |
173 ["applicationMaxVersion", "27.0", true], | |
174 ["applicationMaxVersion", "27", true], | |
175 ["applicationMaxVersion", "28", true], | |
176 ["applicationMaxVersion", "26", false], | |
177 ["platform", "chromium", true], | |
178 ["platform", "gecko", false], | |
179 ["platformMinVersion", "12.0", true], | |
180 ["platformMinVersion", "12", true], | |
181 ["platformMinVersion", "11", true], | |
182 ["platformMinVersion", "13", false], | |
183 ["platformMinVersion", "12.1", false], | |
184 ["platformMaxVersion", "12.0", true], | |
185 ["platformMaxVersion", "12", true], | |
186 ["platformMaxVersion", "13", true], | |
187 ["platformMaxVersion", "11", false], | |
188 ]; | |
162 | 189 |
163 registerHandler([information, critical]); | 190 for each (let [propName, value, result] in targets) |
164 testRunner.runScheduledTasks(1); | 191 { |
192 let targetInfo = {}; | |
193 targetInfo[propName] = value; | |
165 | 194 |
166 deepEqual(Notification.getNextToShow(), information, "Critical notification is ignored if platform doesn't match"); | 195 let information = fixConstructors({ |
167 deepEqual(Notification.getNextToShow(), null, "Critical notification still i gnored even if no other notifications available"); | 196 id: 1, |
168 }); | 197 severity: "information", |
198 message: {en: "Information"}, | |
199 targets: [targetInfo] | |
200 }); | |
169 | 201 |
170 test("Min version", function() | 202 Prefs.notificationdata = {}; |
171 { | 203 registerHandler([information]); |
172 let information = fixConstructors({ | 204 testRunner.runScheduledTasks(1); |
173 id: 1, | |
174 severity: "information", | |
175 message: {en: "Information"}, | |
176 minVersion: "1.4" | |
177 }); | |
178 let critical = fixConstructors({ | |
179 id: 2, | |
180 severity: "critical", | |
181 message: {en: "Critical"}, | |
182 minVersion: "1.5" | |
183 }); | |
184 | 205 |
185 registerHandler([information, critical]); | 206 let expected = (result ? information : null); |
186 testRunner.runScheduledTasks(1); | 207 deepEqual(Notification.getNextToShow(), expected, "Selected notification f or " + JSON.stringify(information.targets)); |
208 deepEqual(Notification.getNextToShow(), null, "No notification on second c all"); | |
209 } | |
187 | 210 |
188 deepEqual(Notification.getNextToShow(), information, "Critical notification is ignored if minVersion doesn't match"); | 211 function allPairs(array) |
189 deepEqual(Notification.getNextToShow(), null, "Critical notification still i gnored even if no other notifications available"); | 212 { |
190 }); | 213 var pairs = []; |
Felix Dahlke
2013/07/25 10:22:04
Why not use let here and below?
Wladimir Palant
2013/07/25 10:58:07
Because that's copy&paste from your code in Chrome
| |
214 for (var i = 0; i < array.length - 1; i++) | |
215 for (var j = i + 1; j < array.length; j++) | |
216 pairs.push([array[i], array[j]]); | |
217 return pairs; | |
218 } | |
219 for each (let [[propName1, value1, result1], [propName2, value2, result2]] i n allPairs(targets)) | |
220 { | |
221 let targetInfo1 = {}; | |
222 targetInfo1[propName1] = value1; | |
223 let targetInfo2 = {}; | |
224 targetInfo2[propName2] = value2; | |
191 | 225 |
192 test("Max version", function() | 226 let information = fixConstructors({ |
193 { | 227 id: 1, |
194 let information = fixConstructors({ | 228 severity: "information", |
195 id: 1, | 229 message: {en: "Information"}, |
196 severity: "information", | 230 targets: [targetInfo1, targetInfo2] |
197 message: {en: "Information"}, | 231 }); |
198 maxVersion: "1.5" | |
199 }); | |
200 let critical = fixConstructors({ | |
201 id: 2, | |
202 severity: "critical", | |
203 message: {en: "Critical"}, | |
204 maxVersion: "1.4" | |
205 }); | |
206 | 232 |
207 registerHandler([information, critical]); | 233 Prefs.notificationdata = {}; |
208 testRunner.runScheduledTasks(1); | 234 registerHandler([information]); |
235 testRunner.runScheduledTasks(1); | |
209 | 236 |
210 deepEqual(Notification.getNextToShow(), information, "Critical notification is ignored if maxVersion doesn't match"); | 237 let expected = (result1 || result2 ? information : null) |
211 deepEqual(Notification.getNextToShow(), null, "Critical notification still i gnored even if no other notifications available"); | 238 deepEqual(Notification.getNextToShow(), expected, "Selected notification f or " + JSON.stringify(information.targets)); |
239 deepEqual(Notification.getNextToShow(), null, "No notification on second c all"); | |
240 | |
241 information = fixConstructors({ | |
242 id: 1, | |
243 severity: "information", | |
244 message: {en: "Information"}, | |
245 targets: [targetInfo1] | |
246 }); | |
247 let critical = fixConstructors({ | |
248 id: 2, | |
249 severity: "critical", | |
250 message: {en: "Critical"}, | |
251 targets: [targetInfo2] | |
252 }); | |
253 | |
254 Prefs.notificationdata = {}; | |
255 registerHandler([information, critical]); | |
256 testRunner.runScheduledTasks(1); | |
257 | |
258 expected = (result2 ? critical : (result1 ? information : null)); | |
259 deepEqual(Notification.getNextToShow(), expected, "Selected notification f or information with " + JSON.stringify(information.targets) + " and critical wit h " + JSON.stringify(critical.targets)); | |
260 } | |
212 }); | 261 }); |
213 })(); | 262 })(); |
OLD | NEW |