Left: | ||
Right: |
LEFT | RIGHT |
---|---|
1 (function() | 1 (function() |
2 { | 2 { |
3 let testRunner = null; | 3 let testRunner = null; |
4 let randomResult = 0.5; | 4 let randomResult = 0.5; |
5 | 5 |
6 let originalInfo; | 6 let originalInfo; |
7 let info = require("info"); | 7 let info = require("info"); |
8 | 8 |
9 function showNotifications(url) | 9 function showNotifications(url) |
10 { | 10 { |
11 let shownNotifications = []; | 11 let shownNotifications = []; |
12 function showListener(notification) | 12 function showListener(notification) |
13 { | 13 { |
14 shownNotifications.push(notification); | 14 shownNotifications.push(notification); |
15 Notification.markAsShown(notification.id); | |
15 } | 16 } |
16 Notification.addShowListener(showListener); | 17 Notification.addShowListener(showListener); |
17 Notification.showNext(url); | 18 Notification.showNext(url); |
18 Notification.removeShowListener(showListener); | 19 Notification.removeShowListener(showListener); |
19 shownNotifications.forEach(function(notification) | |
20 { | |
21 Notification.markAsShown(notification.id); | |
Wladimir Palant
2015/06/08 11:45:21
Shouldn't this be called in showListener above?
Felix Dahlke
2015/06/08 19:36:53
Done.
| |
22 }); | |
23 return shownNotifications; | 20 return shownNotifications; |
24 } | 21 } |
25 | 22 |
26 module("Notification handling", | 23 module("Notification handling", |
27 { | 24 { |
28 setup: function() | 25 setup: function() |
29 { | 26 { |
30 testRunner = this; | 27 testRunner = this; |
31 | 28 |
32 preparePrefs.call(this); | 29 preparePrefs.call(this); |
(...skipping 18 matching lines...) Expand all Loading... | |
51 Prefs.notificationurl = "http://example.com/notification.json"; | 48 Prefs.notificationurl = "http://example.com/notification.json"; |
52 Prefs.notificationdata = {}; | 49 Prefs.notificationdata = {}; |
53 Prefs.notifications_ignoredcategories = []; | 50 Prefs.notifications_ignoredcategories = []; |
54 | 51 |
55 // Replace Math.random() function | 52 // Replace Math.random() function |
56 let DownloaderGlobal = Cu.getGlobalForObject(getModuleGlobal("downloader") ); | 53 let DownloaderGlobal = Cu.getGlobalForObject(getModuleGlobal("downloader") ); |
57 this._origRandom = DownloaderGlobal.Math.random; | 54 this._origRandom = DownloaderGlobal.Math.random; |
58 DownloaderGlobal.Math.random = () => randomResult; | 55 DownloaderGlobal.Math.random = () => randomResult; |
59 randomResult = 0.5; | 56 randomResult = 0.5; |
60 | 57 |
61 Notification.removeAllShowListeners(); | 58 let NotificationGlobal = getModuleGlobal("notification"); |
Wladimir Palant
2015/06/08 11:45:21
Better save the old listeners and restore them in
Felix Dahlke
2015/06/08 19:36:53
Done.
| |
59 this._origShowListeners = NotificationGlobal.showListeners; | |
60 NotificationGlobal.showListeners = []; | |
62 }, | 61 }, |
63 | 62 |
64 teardown: function() | 63 teardown: function() |
65 { | 64 { |
66 restorePrefs.call(this); | 65 restorePrefs.call(this); |
67 restoreVirtualTime.call(this); | 66 restoreVirtualTime.call(this); |
68 restoreVirtualXMLHttp.call(this); | 67 restoreVirtualXMLHttp.call(this); |
69 | 68 |
70 for (let key in originalInfo) | 69 for (let key in originalInfo) |
71 info[key] = originalInfo[key]; | 70 info[key] = originalInfo[key]; |
72 | 71 |
73 if (this._origRandom) | 72 if (this._origRandom) |
74 { | 73 { |
75 let DownloaderGlobal = Cu.getGlobalForObject(getModuleGlobal("downloader ")); | 74 let DownloaderGlobal = Cu.getGlobalForObject(getModuleGlobal("downloader ")); |
76 DownloaderGlobal.Math.random = this._origRandom; | 75 DownloaderGlobal.Math.random = this._origRandom; |
77 delete this._origRandom; | 76 delete this._origRandom; |
77 } | |
78 | |
79 if (this._origShowListeners) | |
80 { | |
81 let NotificationGlobal = getModuleGlobal("notification"); | |
82 NotificationGlobal.showListeners = this._origShowListeners; | |
83 delete this._origShowListeners; | |
78 } | 84 } |
79 | 85 |
80 Notification.init(); | 86 Notification.init(); |
81 } | 87 } |
82 }); | 88 }); |
83 | 89 |
84 function registerHandler(notifications, checkCallback) | 90 function registerHandler(notifications, checkCallback) |
85 { | 91 { |
86 testRunner.registerHandler("/notification.json", function(metadata) | 92 testRunner.registerHandler("/notification.json", function(metadata) |
87 { | 93 { |
(...skipping 337 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
425 }); | 431 }); |
426 let critical = fixConstructors({ | 432 let critical = fixConstructors({ |
427 id: 2, | 433 id: 2, |
428 type: "critical" | 434 type: "critical" |
429 }); | 435 }); |
430 | 436 |
431 Notification.toggleIgnoreCategory("*", true); | 437 Notification.toggleIgnoreCategory("*", true); |
432 registerHandler([information]); | 438 registerHandler([information]); |
433 testRunner.runScheduledTasks(1); | 439 testRunner.runScheduledTasks(1); |
434 | 440 |
435 deepEqual(Notification.getNextToShow(), null, "Information notifications are ignored after enabling global opt-out"); | 441 deepEqual(showNotifications(), [], "Information notifications are ignored af ter enabling global opt-out"); |
Felix Dahlke
2015/06/08 19:36:53
This and the following changes are the result of r
| |
436 Notification.toggleIgnoreCategory("*", false); | 442 Notification.toggleIgnoreCategory("*", false); |
437 deepEqual(Notification.getNextToShow(), information, "Information notificati ons are shown after disabling global opt-out"); | 443 deepEqual(showNotifications(), [information], "Information notifications are shown after disabling global opt-out"); |
438 | 444 |
439 Notification.toggleIgnoreCategory("*", true); | 445 Notification.toggleIgnoreCategory("*", true); |
440 Prefs.notificationdata = {}; | 446 Prefs.notificationdata = {}; |
441 registerHandler([critical]); | 447 registerHandler([critical]); |
442 testRunner.runScheduledTasks(1); | 448 testRunner.runScheduledTasks(1); |
443 | 449 |
444 deepEqual(Notification.getNextToShow(), critical, "Critical notifications ar e not ignored"); | 450 deepEqual(showNotifications(), [critical], "Critical notifications are not i gnored"); |
445 }); | 451 }); |
446 | 452 |
447 module("Notification localization"); | 453 module("Notification localization"); |
448 | 454 |
449 test("Message without localization", function() | 455 test("Message without localization", function() |
450 { | 456 { |
451 let notification = {message: "non-localized"}; | 457 let notification = {message: "non-localized"}; |
452 let texts = Notification.getLocalizedTexts(notification, "en-US"); | 458 let texts = Notification.getLocalizedTexts(notification, "en-US"); |
453 equal(texts.message, "non-localized"); | 459 equal(texts.message, "non-localized"); |
454 }); | 460 }); |
(...skipping 16 matching lines...) Expand all Loading... | |
471 equal(texts.message, "fr"); | 477 equal(texts.message, "fr"); |
472 }); | 478 }); |
473 | 479 |
474 test("Missing translation", function() | 480 test("Missing translation", function() |
475 { | 481 { |
476 let notification = {message: {"en-US": "en-US"}}; | 482 let notification = {message: {"en-US": "en-US"}}; |
477 let texts = Notification.getLocalizedTexts(notification, "fr"); | 483 let texts = Notification.getLocalizedTexts(notification, "fr"); |
478 equal(texts.message, "en-US"); | 484 equal(texts.message, "en-US"); |
479 }); | 485 }); |
480 })(); | 486 })(); |
LEFT | RIGHT |