summaryrefslogtreecommitdiffstats
path: root/browser/components/places/tests/browser/browser_library_delete.js
diff options
context:
space:
mode:
Diffstat (limited to 'browser/components/places/tests/browser/browser_library_delete.js')
-rw-r--r--browser/components/places/tests/browser/browser_library_delete.js116
1 files changed, 116 insertions, 0 deletions
diff --git a/browser/components/places/tests/browser/browser_library_delete.js b/browser/components/places/tests/browser/browser_library_delete.js
new file mode 100644
index 0000000000..17c8b0948a
--- /dev/null
+++ b/browser/components/places/tests/browser/browser_library_delete.js
@@ -0,0 +1,116 @@
+/* Any copyright is dedicated to the Public Domain.
+ http://creativecommons.org/publicdomain/zero/1.0/ */
+
+/**
+ * Tests that Library correctly handles deletes.
+ */
+
+const TEST_URL = "http://www.batch.delete.me/";
+
+var gLibrary;
+
+add_task(async function test_setup() {
+ gLibrary = await promiseLibrary();
+
+ registerCleanupFunction(async () => {
+ await PlacesUtils.bookmarks.eraseEverything();
+ // Close Library window.
+ gLibrary.close();
+ });
+});
+
+add_task(async function test_create_and_remove_bookmarks() {
+ let bmChildren = [];
+ for (let i = 0; i < 10; i++) {
+ bmChildren.push({
+ title: `bm${i}`,
+ url: TEST_URL,
+ });
+ }
+
+ await PlacesUtils.bookmarks.insertTree({
+ guid: PlacesUtils.bookmarks.unfiledGuid,
+ children: [
+ {
+ title: "deleteme",
+ type: PlacesUtils.bookmarks.TYPE_FOLDER,
+ children: bmChildren,
+ },
+ {
+ title: "keepme",
+ type: PlacesUtils.bookmarks.TYPE_FOLDER,
+ },
+ ],
+ });
+
+ // Select and open the left pane "History" query.
+ let PO = gLibrary.PlacesOrganizer;
+ PO.selectLeftPaneBuiltIn("UnfiledBookmarks");
+ Assert.notEqual(PO._places.selectedNode, null, "Selected unsorted bookmarks");
+
+ let unsortedNode = PlacesUtils.asContainer(PO._places.selectedNode);
+ Assert.equal(unsortedNode.childCount, 2, "Unsorted node has 2 children");
+ let folderNode = unsortedNode.getChild(0);
+ Assert.equal(
+ folderNode.title,
+ "deleteme",
+ "Folder found in unsorted bookmarks"
+ );
+
+ // Check delete command is available.
+ PO._places.selectNode(folderNode);
+ Assert.equal(
+ PO._places.selectedNode.title,
+ "deleteme",
+ "Folder node selected"
+ );
+ Assert.ok(
+ PO._places.controller.isCommandEnabled("cmd_delete"),
+ "Delete command is enabled"
+ );
+ let promiseItemRemovedNotification = PlacesTestUtils.waitForNotification(
+ "bookmark-removed",
+ events => events.some(event => event.guid == folderNode.bookmarkGuid)
+ );
+
+ // Press the delete key and check that the bookmark has been removed.
+ gLibrary.document.getElementById("placesList").focus();
+ EventUtils.synthesizeKey("VK_DELETE", {}, gLibrary);
+
+ await promiseItemRemovedNotification;
+
+ Assert.ok(
+ !(await PlacesUtils.bookmarks.fetch({ url: TEST_URL })),
+ "Bookmark has been correctly removed"
+ );
+ // Test live update.
+ Assert.equal(unsortedNode.childCount, 1, "Unsorted node has 1 child");
+ Assert.equal(PO._places.selectedNode.title, "keepme", "Folder node selected");
+});
+
+add_task(async function test_ensure_correct_selection_and_functionality() {
+ let PO = gLibrary.PlacesOrganizer;
+ let ContentTree = gLibrary.ContentTree;
+ // Move selection forth and back.
+ PO.selectLeftPaneBuiltIn("History");
+ PO.selectLeftPaneBuiltIn("UnfiledBookmarks");
+ // Now select the "keepme" folder in the right pane and delete it.
+ ContentTree.view.selectNode(ContentTree.view.result.root.getChild(0));
+ Assert.equal(
+ ContentTree.view.selectedNode.title,
+ "keepme",
+ "Found folder in content pane"
+ );
+
+ await PlacesUtils.bookmarks.insert({
+ parentGuid: PlacesUtils.bookmarks.unfiledGuid,
+ title: "bm",
+ url: TEST_URL,
+ });
+
+ Assert.equal(
+ ContentTree.view.result.root.childCount,
+ 2,
+ "Right pane was correctly updated"
+ );
+});