/* Any copyright is dedicated to the Public Domain.
   http://creativecommons.org/publicdomain/zero/1.0/ */

_("Rewrite place: URIs.");
Cu.import("resource://gre/modules/PlacesUtils.jsm");
Cu.import("resource://services-sync/engines/bookmarks.js");
Cu.import("resource://services-sync/service.js");
Cu.import("resource://services-sync/util.js");

var engine = new BookmarksEngine(Service);
var store = engine._store;

function run_test() {
  initTestLogging("Trace");
  Log.repository.getLogger("Sync.Engine.Bookmarks").level = Log.Level.Trace;
  Log.repository.getLogger("Sync.Store.Bookmarks").level = Log.Level.Trace;

  let tagRecord = new BookmarkQuery("bookmarks", "abcdefabcdef");
  let uri = "place:folder=499&type=7&queryType=1";
  tagRecord.queryId = "MagicTags";
  tagRecord.parentName = "Bookmarks Toolbar";
  tagRecord.bmkUri = uri;
  tagRecord.title = "tagtag";
  tagRecord.folderName = "bar";

  _("Type: " + tagRecord.type);
  _("Folder name: " + tagRecord.folderName);
  store.preprocessTagQuery(tagRecord);

  _("Verify that the URI has been rewritten.");
  do_check_neq(tagRecord.bmkUri, uri);

  let tags = store._getNode(PlacesUtils.tagsFolderId);
  tags.containerOpen = true;
  let tagID;
  for (let i = 0; i < tags.childCount; ++i) {
    let child = tags.getChild(i);
    if (child.title == "bar")
      tagID = child.itemId;
  }
  tags.containerOpen = false;

  _("Tag ID: " + tagID);
  do_check_eq(tagRecord.bmkUri, uri.replace("499", tagID));

  _("... but not if the type is wrong.");
  let wrongTypeURI = "place:folder=499&type=2&queryType=1";
  tagRecord.bmkUri = wrongTypeURI;
  store.preprocessTagQuery(tagRecord);
  do_check_eq(tagRecord.bmkUri, wrongTypeURI);
}
