Add specs for missing startDrag options
authorKevin Sawicki <kevinsawicki@gmail.com>
Thu, 26 Jan 2017 18:34:27 +0000 (10:34 -0800)
committerKevin Sawicki <kevinsawicki@gmail.com>
Thu, 26 Jan 2017 23:46:04 +0000 (15:46 -0800)
atom/browser/api/atom_api_web_contents.cc
spec/api-web-contents-spec.js

index afb6f4c..0d52112 100644 (file)
@@ -1327,7 +1327,7 @@ void WebContents::StartDrag(const mate::Dictionary& item,
 
   // Error checking.
   if (icon.IsEmpty()) {
-    args->ThrowError("icon must be set");
+    args->ThrowError("Must specify non-empty 'icon' option");
     return;
   }
 
@@ -1337,7 +1337,7 @@ void WebContents::StartDrag(const mate::Dictionary& item,
         base::MessageLoop::current());
     DragFileItems(files, icon->image(), web_contents()->GetNativeView());
   } else {
-    args->ThrowError("There is nothing to drag");
+    args->ThrowError("Must specify either 'file' or 'files' option");
   }
 }
 
index fb9c171..417b8d5 100644 (file)
@@ -285,4 +285,20 @@ describe('webContents module', function () {
     })
     w.webContents.inspectElement(10, 10)
   })
+
+  describe('startDrag({file, icon})', () => {
+    it('throws errors for a missing file or a missing/empty icon', () => {
+      assert.throws(() => {
+        w.webContents.startDrag({icon: path.join(__dirname, 'fixtures', 'assets', 'logo.png')})
+      }, /Must specify either 'file' or 'files' option/)
+
+      assert.throws(() => {
+        w.webContents.startDrag({file: __filename, icon: __filename})
+      }, /Must specify non-empty 'icon' option/)
+
+      assert.throws(() => {
+        w.webContents.startDrag({file: __filename})
+      }, /Must specify non-empty 'icon' option/)
+    })
+  })
 })