toolkit/components/places/tests/unit/test_utils_getURLsForContainerNode.js

Thu, 22 Jan 2015 13:21:57 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Thu, 22 Jan 2015 13:21:57 +0100
branch
TOR_BUG_9701
changeset 15
b8a032363ba2
permissions
-rw-r--r--

Incorporate requested changes from Mozilla in review:
https://bugzilla.mozilla.org/show_bug.cgi?id=1123480#c6

     1 /* -*- Mode: Java; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
     2 /* vim:set ts=2 sw=2 sts=2 et: */
     3 /* This Source Code Form is subject to the terms of the Mozilla Public
     4  * License, v. 2.0. If a copy of the MPL was not distributed with this
     5  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
     7  /**
     8   * Check for correct functionality of PlacesUtils.getURLsForContainerNode and
     9   * PlacesUtils.hasChildURIs (those helpers share almost all of their code)
    10   */
    12 var PU = PlacesUtils;
    13 var hs = PU.history;
    14 var bs = PU.bookmarks;
    16 var tests = [
    18 function() {
    19   dump("\n\n*** TEST: folder\n");
    20   // This is the folder we will check for children.
    21   var folderId = bs.createFolder(bs.toolbarFolder, "folder", bs.DEFAULT_INDEX);
    23   // Create a folder and a query node inside it, these should not be considered
    24   // uri nodes.
    25   bs.createFolder(folderId, "inside folder", bs.DEFAULT_INDEX);
    26   bs.insertBookmark(folderId, uri("place:sort=1"),
    27                     bs.DEFAULT_INDEX, "inside query");
    29   var query = hs.getNewQuery();
    30   query.setFolders([bs.toolbarFolder], 1);
    31   var options = hs.getNewQueryOptions();
    33   dump("Check folder without uri nodes\n");
    34   check_uri_nodes(query, options, 0);
    36   dump("Check folder with uri nodes\n");
    37   // Add an uri node, this should be considered.
    38   bs.insertBookmark(folderId, uri("http://www.mozilla.org/"),
    39                     bs.DEFAULT_INDEX, "bookmark");
    40   check_uri_nodes(query, options, 1);
    41 },
    43 function() {
    44   dump("\n\n*** TEST: folder in an excludeItems root\n");
    45   // This is the folder we will check for children.
    46   var folderId = bs.createFolder(bs.toolbarFolder, "folder", bs.DEFAULT_INDEX);
    48   // Create a folder and a query node inside it, these should not be considered
    49   // uri nodes.
    50   bs.createFolder(folderId, "inside folder", bs.DEFAULT_INDEX);
    51   bs.insertBookmark(folderId, uri("place:sort=1"), bs.DEFAULT_INDEX, "inside query");
    53   var query = hs.getNewQuery();
    54   query.setFolders([bs.toolbarFolder], 1);
    55   var options = hs.getNewQueryOptions();
    56   options.excludeItems = true;
    58   dump("Check folder without uri nodes\n");
    59   check_uri_nodes(query, options, 0);
    61   dump("Check folder with uri nodes\n");
    62   // Add an uri node, this should be considered.
    63   bs.insertBookmark(folderId, uri("http://www.mozilla.org/"),
    64                     bs.DEFAULT_INDEX, "bookmark");
    65   check_uri_nodes(query, options, 1);
    66 },
    68 function() {
    69   dump("\n\n*** TEST: query\n");
    70   // This is the query we will check for children.
    71   bs.insertBookmark(bs.toolbarFolder, uri("place:folder=BOOKMARKS_MENU&sort=1"),
    72                     bs.DEFAULT_INDEX, "inside query");
    74   // Create a folder and a query node inside it, these should not be considered
    75   // uri nodes.
    76   bs.createFolder(bs.bookmarksMenuFolder, "inside folder", bs.DEFAULT_INDEX);
    77   bs.insertBookmark(bs.bookmarksMenuFolder, uri("place:sort=1"),
    78                     bs.DEFAULT_INDEX, "inside query");
    80   var query = hs.getNewQuery();
    81   query.setFolders([bs.toolbarFolder], 1);
    82   var options = hs.getNewQueryOptions();
    84   dump("Check query without uri nodes\n");
    85   check_uri_nodes(query, options, 0);
    87   dump("Check query with uri nodes\n");
    88   // Add an uri node, this should be considered.
    89   bs.insertBookmark(bs.bookmarksMenuFolder, uri("http://www.mozilla.org/"),
    90                     bs.DEFAULT_INDEX, "bookmark");
    91   check_uri_nodes(query, options, 1);
    92 },
    94 function() {
    95   dump("\n\n*** TEST: excludeItems Query\n");
    96   // This is the query we will check for children.
    97   bs.insertBookmark(bs.toolbarFolder, uri("place:folder=BOOKMARKS_MENU&sort=8"),
    98                     bs.DEFAULT_INDEX, "inside query");
   100   // Create a folder and a query node inside it, these should not be considered
   101   // uri nodes.
   102   bs.createFolder(bs.bookmarksMenuFolder, "inside folder", bs.DEFAULT_INDEX);
   103   bs.insertBookmark(bs.bookmarksMenuFolder, uri("place:sort=1"),
   104                     bs.DEFAULT_INDEX, "inside query");
   106   var query = hs.getNewQuery();
   107   query.setFolders([bs.toolbarFolder], 1);
   108   var options = hs.getNewQueryOptions();
   109   options.excludeItems = true;
   111   dump("Check folder without uri nodes\n");
   112   check_uri_nodes(query, options, 0);
   114   dump("Check folder with uri nodes\n");
   115   // Add an uri node, this should be considered.
   116   bs.insertBookmark(bs.bookmarksMenuFolder, uri("http://www.mozilla.org/"),
   117                     bs.DEFAULT_INDEX, "bookmark");
   118   check_uri_nodes(query, options, 1);
   119 },
   121 function() {
   122   dump("\n\n*** TEST: !expandQueries Query\n");
   123   // This is the query we will check for children.
   124   bs.insertBookmark(bs.toolbarFolder, uri("place:folder=BOOKMARKS_MENU&sort=8"),
   125                     bs.DEFAULT_INDEX, "inside query");
   127   // Create a folder and a query node inside it, these should not be considered
   128   // uri nodes.
   129   bs.createFolder(bs.bookmarksMenuFolder, "inside folder", bs.DEFAULT_INDEX);
   130   bs.insertBookmark(bs.bookmarksMenuFolder, uri("place:sort=1"),
   131                     bs.DEFAULT_INDEX, "inside query");
   133   var query = hs.getNewQuery();
   134   query.setFolders([bs.toolbarFolder], 1);
   135   var options = hs.getNewQueryOptions();
   136   options.expandQueries = false;
   138   dump("Check folder without uri nodes\n");
   139   check_uri_nodes(query, options, 0);
   141   dump("Check folder with uri nodes\n");
   142   // Add an uri node, this should be considered.
   143   bs.insertBookmark(bs.bookmarksMenuFolder, uri("http://www.mozilla.org/"),
   144                     bs.DEFAULT_INDEX, "bookmark");
   145   check_uri_nodes(query, options, 1);
   146 }
   148 ];
   150 /**
   151  * Executes a query and checks number of uri nodes in the first container in 
   152  * query's results.  To correctly test a container ensure that the query will
   153  * return only your container in the first level.
   154  *
   155  * @param  aQuery
   156  *         nsINavHistoryQuery object defining the query
   157  * @param  aOptions
   158  *         nsINavHistoryQueryOptions object defining the query's options
   159  * @param  aExpectedURINodes
   160  *         number of expected uri nodes
   161  */
   162 function check_uri_nodes(aQuery, aOptions, aExpectedURINodes) {
   163   var result = hs.executeQuery(aQuery, aOptions);
   164   var root = result.root;
   165   root.containerOpen = true;
   166   var node = root.getChild(0);
   167   do_check_eq(PU.hasChildURIs(node), aExpectedURINodes > 0);
   168   do_check_eq(PU.getURLsForContainerNode(node).length, aExpectedURINodes);
   169   root.containerOpen = false;
   170 }
   172 function run_test() {
   173   tests.forEach(function(aTest) {
   174                   remove_all_bookmarks();
   175                   aTest();
   176                 });
   177   // Cleanup.
   178   remove_all_bookmarks();
   179 }

mercurial