Add initial dialog specs
authorKevin Sawicki <kevinsawicki@gmail.com>
Thu, 1 Dec 2016 22:15:05 +0000 (14:15 -0800)
committerKevin Sawicki <kevinsawicki@gmail.com>
Thu, 1 Dec 2016 22:15:34 +0000 (14:15 -0800)
spec/api-dialog-spec.js [new file with mode: 0644]

diff --git a/spec/api-dialog-spec.js b/spec/api-dialog-spec.js
new file mode 100644 (file)
index 0000000..3f8f570
--- /dev/null
@@ -0,0 +1,80 @@
+const assert = require('assert')
+const {dialog} = require('electron').remote
+
+describe('dialog module', () => {
+  describe('showOpenDialog', () => {
+    it('throws errors when the options are invalid', () => {
+      assert.throws(() => {
+        dialog.showOpenDialog({properties: false})
+      }, /Properties must be an array/)
+
+      assert.throws(() => {
+        dialog.showOpenDialog({title: 300})
+      }, /Title must be a string/)
+
+      assert.throws(() => {
+        dialog.showOpenDialog({buttonLabel: []})
+      }, /buttonLabel must be a string/)
+
+      assert.throws(() => {
+        dialog.showOpenDialog({defaultPath: {}})
+      }, /Default path must be a string/)
+    })
+  })
+
+  describe('showSaveDialog', () => {
+    it('throws errors when the options are invalid', () => {
+      assert.throws(() => {
+        dialog.showSaveDialog({title: 300})
+      }, /Title must be a string/)
+
+      assert.throws(() => {
+        dialog.showSaveDialog({buttonLabel: []})
+      }, /buttonLabel must be a string/)
+
+      assert.throws(() => {
+        dialog.showSaveDialog({defaultPath: {}})
+      }, /Default path must be a string/)
+    })
+  })
+
+  describe('showMessageBox', () => {
+    it('throws errors when the options are invalid', () => {
+      assert.throws(() => {
+        dialog.showMessageBox({type: 'not-a-valid-type'})
+      }, /Invalid message box type/)
+
+      assert.throws(() => {
+        dialog.showMessageBox({buttons: false})
+      }, /Buttons must be an array/)
+
+      assert.throws(() => {
+        dialog.showMessageBox({title: 300, buttons: ['OK']})
+      }, /Title must be a string/)
+
+      assert.throws(() => {
+        dialog.showMessageBox({message: [], buttons: ['OK']})
+      }, /Message must be a string/)
+
+      assert.throws(() => {
+        dialog.showMessageBox({detail: 3.14, buttons: ['OK']})
+      }, /Detail must be a string/)
+    })
+  })
+
+  describe('showErrorBox', () => {
+    it('throws errors when the options are invalid', () => {
+      assert.throws(() => {
+        dialog.showErrorBox()
+      }, /Insufficient number of arguments/)
+
+      assert.throws(() => {
+        dialog.showErrorBox(3, 'four')
+      }, /Error processing argument at index 0/)
+
+      assert.throws(() => {
+        dialog.showErrorBox('three', 4)
+      }, /Error processing argument at index 1/)
+    })
+  })
+})