toolkit/mozapps/extensions/test/browser/browser_recentupdates.js

Wed, 31 Dec 2014 06:09:35 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Wed, 31 Dec 2014 06:09:35 +0100
changeset 0
6474c204b198
permissions
-rw-r--r--

Cloned upstream origin tor-browser at tor-browser-31.3.0esr-4.5-1-build1
revision ID fc1c9ff7c1b2defdbc039f12214767608f46423f for hacking purpose.

     1 /* Any copyright is dedicated to the Public Domain.
     2  * http://creativecommons.org/publicdomain/zero/1.0/
     3  */
     5 // Tests the recent updates pane
     7 var gProvider;
     8 var gManagerWindow;
     9 var gCategoryUtilities;
    11 function test() {
    12   waitForExplicitFinish();
    14   gProvider = new MockProvider();
    16   gProvider.createAddons([{
    17     id: "addon1@tests.mozilla.org",
    18     name: "updated 6 hours ago",
    19     version: "1.0",
    20     updateDate: new Date(Date.now() - (1000 * 60 * 60 * 6)),
    21     releaseNotesURI: Services.io.newURI(TESTROOT + "releaseNotes.xhtml", null, null)
    22   }, {
    23     id: "addon2@tests.mozilla.org",
    24     name: "updated 5 seconds ago",
    25     version: "1.0",
    26     updateDate: new Date(Date.now() - (1000 * 5))
    27   }, {
    28     id: "addon3@tests.mozilla.org",
    29     name: "updated 1 month ago",
    30     version: "1.0",
    31     updateDate: new Date(Date.now() - (1000 * 60 * 60 * 25 * 30))
    32   }]);
    34   open_manager("addons://list/extension", function(aWindow) {
    35     gManagerWindow = aWindow;
    36     gCategoryUtilities = new CategoryUtilities(gManagerWindow);
    37     run_next_test();
    38   });
    39 }
    41 function end_test() {
    42   close_manager(gManagerWindow, function() {
    43     finish();
    44   });
    45 }
    48 add_test(function() {
    49   info("Checking menuitem for Recent Updates opens that pane");
    50   var recentCat = gManagerWindow.gCategories.get("addons://updates/recent");
    51   is(gCategoryUtilities.isVisible(recentCat), false, "Recent Updates category should initially be hidden");
    53   var utilsBtn = gManagerWindow.document.getElementById("header-utils-btn");
    54   utilsBtn.addEventListener("popupshown", function() {
    55     utilsBtn.removeEventListener("popupshown", arguments.callee, false);
    56     wait_for_view_load(gManagerWindow, function() {
    57       is(gCategoryUtilities.isVisible(recentCat), true, "Recent Updates category should now be visible");
    58       is(gManagerWindow.document.getElementById("categories").selectedItem.value, "addons://updates/recent", "Recent Updates category should now be selected");
    59       is(gManagerWindow.gViewController.currentViewId, "addons://updates/recent", "Recent Updates view should be the current view");
    60       run_next_test();
    61     }, true);
    62     var menuitem = gManagerWindow.document.getElementById("utils-viewUpdates");
    63     EventUtils.synthesizeMouse(menuitem, 2, 2, { }, gManagerWindow);
    64   }, false);
    65   EventUtils.synthesizeMouse(utilsBtn, 2, 2, { }, gManagerWindow);
    66 });
    69 add_test(function() {
    70   var updatesList = gManagerWindow.document.getElementById("updates-list");
    71   var sorters = gManagerWindow.document.getElementById("updates-sorters");
    72   var dateSorter = gManagerWindow.document.getAnonymousElementByAttribute(sorters, "anonid", "date-btn");
    73   var nameSorter = gManagerWindow.document.getAnonymousElementByAttribute(sorters, "anonid", "name-btn");
    75   function check_order(expected) {
    76     var items = updatesList.getElementsByTagName("richlistitem");
    77     var possible = ["addon1@tests.mozilla.org", "addon2@tests.mozilla.org", "addon3@tests.mozilla.org"];
    78     for (let item of items) {
    79       let itemId = item.mAddon.id;
    80       if (possible.indexOf(itemId) == -1)
    81         continue; // skip over any other addons, such as shipped addons that would update on every build
    82       isnot(expected.length, 0, "Should be expecting more items");
    83       is(itemId, expected.shift(), "Should get expected item based on sort order");
    84       if (itemId == "addon1@tests.mozilla.org")
    85         is_element_visible(item._relNotesToggle, "Release notes toggle should be visible for addon with release notes");
    86       else
    87         is_element_hidden(item._relNotesToggle, "Release notes toggle should be hidden for addon with no release notes");
    88     }
    89   }
    91   is_element_visible(dateSorter);
    92   is_element_visible(nameSorter);
    94   // sorted by date, descending
    95   check_order(["addon2@tests.mozilla.org", "addon1@tests.mozilla.org"]);
    97   // sorted by date, ascending
    98   EventUtils.synthesizeMouseAtCenter(dateSorter, { }, gManagerWindow);
    99   check_order(["addon1@tests.mozilla.org", "addon2@tests.mozilla.org"]);
   101   // sorted by name, ascending
   102   EventUtils.synthesizeMouseAtCenter(nameSorter, { }, gManagerWindow);
   103   check_order(["addon2@tests.mozilla.org", "addon1@tests.mozilla.org"]);
   105   // sorted by name, descending
   106   EventUtils.synthesizeMouseAtCenter(nameSorter, { }, gManagerWindow);
   107   check_order(["addon1@tests.mozilla.org", "addon2@tests.mozilla.org"]);
   109   run_next_test();
   110 });
   113 add_test(function() {
   114   close_manager(gManagerWindow, function() {
   115     open_manager(null, function(aWindow) {
   116       gManagerWindow = aWindow;
   117       gCategoryUtilities = new CategoryUtilities(gManagerWindow);
   119       var recentCat = gManagerWindow.gCategories.get("addons://updates/recent");
   120       is(gCategoryUtilities.isVisible(recentCat), true, "Recent Updates category should still be visible");
   122       run_next_test();
   123     });
   124   });
   125 });

mercurial