Rietveld Code Review Tool
Help | Bug tracker | Discussion group | Source code

Side by Side Diff: chrome/content/tests/notification.js

Issue 5654617534758912: Issue 2237 - Added unit tests for notification opt-out (Closed)
Patch Set: Added extra tests Created May 28, 2015, 1:16 p.m.
Left:
Right:
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 module("Notification handling", 9 module("Notification handling",
10 { 10 {
(...skipping 15 matching lines...) Expand all
26 26
27 info.addonName = "adblockpluschrome"; 27 info.addonName = "adblockpluschrome";
28 info.addonVersion = "1.4.1"; 28 info.addonVersion = "1.4.1";
29 info.application = "chrome"; 29 info.application = "chrome";
30 info.applicationVersion = "27.0"; 30 info.applicationVersion = "27.0";
31 info.platform = "chromium"; 31 info.platform = "chromium";
32 info.platformVersion = "12.0"; 32 info.platformVersion = "12.0";
33 33
34 Prefs.notificationurl = "http://example.com/notification.json"; 34 Prefs.notificationurl = "http://example.com/notification.json";
35 Prefs.notificationdata = {}; 35 Prefs.notificationdata = {};
36 Prefs.notifications_ignoredcategories = [];
36 37
37 // Replace Math.random() function 38 // Replace Math.random() function
38 let DownloaderGlobal = Cu.getGlobalForObject(getModuleGlobal("downloader") ); 39 let DownloaderGlobal = Cu.getGlobalForObject(getModuleGlobal("downloader") );
39 this._origRandom = DownloaderGlobal.Math.random; 40 this._origRandom = DownloaderGlobal.Math.random;
40 DownloaderGlobal.Math.random = () => randomResult; 41 DownloaderGlobal.Math.random = () => randomResult;
41 randomResult = 0.5; 42 randomResult = 0.5;
42 }, 43 },
43 44
44 teardown: function() 45 teardown: function()
45 { 46 {
(...skipping 323 matching lines...) Expand 10 before | Expand all | Expand 10 after
369 subdomainURLFilter 370 subdomainURLFilter
370 ]); 371 ]);
371 testRunner.runScheduledTasks(1); 372 testRunner.runScheduledTasks(1);
372 373
373 deepEqual(Notification.getNextToShow(), withoutURLFilter, "URL-specific noti fications are skipped"); 374 deepEqual(Notification.getNextToShow(), withoutURLFilter, "URL-specific noti fications are skipped");
374 deepEqual(Notification.getNextToShow("http://foo.com"), withURLFilterFoo, "U RL-specific notification is retrieved"); 375 deepEqual(Notification.getNextToShow("http://foo.com"), withURLFilterFoo, "U RL-specific notification is retrieved");
375 deepEqual(Notification.getNextToShow("http://foo.com"), null, "URL-specific notification is not retrieved"); 376 deepEqual(Notification.getNextToShow("http://foo.com"), null, "URL-specific notification is not retrieved");
376 deepEqual(Notification.getNextToShow("http://www.example.com"), subdomainURL Filter, "URL-specific notification matches subdomain"); 377 deepEqual(Notification.getNextToShow("http://www.example.com"), subdomainURL Filter, "URL-specific notification matches subdomain");
377 }); 378 });
378 379
380 test("Global opt-out", function()
381 {
382 Notification.toggleIgnoreCategory("*", true);
383 ok(Prefs.notifications_ignoredcategories.indexOf("*") != -1, "Force enable g lobal opt-out");
384 Notification.toggleIgnoreCategory("*", true);
385 ok(Prefs.notifications_ignoredcategories.indexOf("*") != -1, "Force enable g lobal opt-out (again)");
386 Notification.toggleIgnoreCategory("*", false);
387 ok(Prefs.notifications_ignoredcategories.indexOf("*") == -1, "Force disable global opt-out");
388 Notification.toggleIgnoreCategory("*", false);
389 ok(Prefs.notifications_ignoredcategories.indexOf("*") == -1, "Force disable global opt-out (again)");
390 Notification.toggleIgnoreCategory("*");
391 ok(Prefs.notifications_ignoredcategories.indexOf("*") != -1, "Toggle enable global opt-out");
392 Notification.toggleIgnoreCategory("*");
393 ok(Prefs.notifications_ignoredcategories.indexOf("*") == -1, "Toggle disable global opt-out");
394
395 Prefs.notifications_showui = false;
396 Notification.toggleIgnoreCategory("*", false);
397 ok(!Prefs.notifications_showui, "Opt-out UI will not be shown if global opt- out hasn't been enabled yet");
398 Notification.toggleIgnoreCategory("*", true);
399 ok(Prefs.notifications_showui, "Opt-out UI will be shown after enabling glob al opt-out");
400 Notification.toggleIgnoreCategory("*", false);
401 ok(Prefs.notifications_showui, "Opt-out UI will be shown after enabling glob al opt-out even if it got disabled again");
402
403 let information = fixConstructors({
404 id: 1,
405 type: "information"
406 });
407 let critical = fixConstructors({
408 id: 2,
409 type: "critical"
410 });
411
412 Notification.toggleIgnoreCategory("*", true);
413 registerHandler([information]);
414 testRunner.runScheduledTasks(1);
415
416 deepEqual(Notification.getNextToShow(), null, "Information notifications are ignored after enabling global opt-out");
417 Notification.toggleIgnoreCategory("*", false);
418 deepEqual(Notification.getNextToShow(), information, "Information notificati ons are shown after disabling global opt-out");
419
420 Notification.toggleIgnoreCategory("*", true);
421 Prefs.notificationdata = {};
422 registerHandler([critical]);
423 testRunner.runScheduledTasks(1);
424
425 deepEqual(Notification.getNextToShow(), critical, "Critical notifications ar e not ignored");
426 });
427
379 module("Notification localization"); 428 module("Notification localization");
380 429
381 test("Message without localization", function() 430 test("Message without localization", function()
382 { 431 {
383 let notification = {message: "non-localized"}; 432 let notification = {message: "non-localized"};
384 let texts = Notification.getLocalizedTexts(notification, "en-US"); 433 let texts = Notification.getLocalizedTexts(notification, "en-US");
385 equal(texts.message, "non-localized"); 434 equal(texts.message, "non-localized");
386 }); 435 });
387 436
388 test("Language only", function() 437 test("Language only", function()
(...skipping 14 matching lines...) Expand all
403 equal(texts.message, "fr"); 452 equal(texts.message, "fr");
404 }); 453 });
405 454
406 test("Missing translation", function() 455 test("Missing translation", function()
407 { 456 {
408 let notification = {message: {"en-US": "en-US"}}; 457 let notification = {message: {"en-US": "en-US"}};
409 let texts = Notification.getLocalizedTexts(notification, "fr"); 458 let texts = Notification.getLocalizedTexts(notification, "fr");
410 equal(texts.message, "en-US"); 459 equal(texts.message, "en-US");
411 }); 460 });
412 })(); 461 })();
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld