Browse Source

add callbacks registry spec

Shelley Vohr 7 years ago
parent
commit
e5983eacd6
2 changed files with 58 additions and 17 deletions
  1. 16 17
      lib/common/api/callbacks-registry.js
  2. 42 0
      spec/api-callbacks-registry-spec.js

+ 16 - 17
lib/common/api/callbacks-registry.js

@@ -10,25 +10,25 @@ class CallbacksRegistry {
 
   add (callback) {
     // The callback is already added.
-    var filenameAndLine, id, location, match, ref, regexp, stackString
-    id = v8Util.getHiddenValue(callback, 'callbackId')
-    if (id != null) {
-      return id
-    }
-    id = ++this.nextId
+    let id = v8Util.getHiddenValue(callback, 'callbackId')
+    if (id != null) return id
+
+    id = this.nextId += 1
 
     // Capture the location of the function and put it in the ID string,
     // so that release errors can be tracked down easily.
-    regexp = /at (.*)/gi
-    stackString = (new Error()).stack
+    const regexp = /at (.*)/gi
+    const stackString = (new Error()).stack
+
+    let ref
+    let filenameAndLine
+    let match
+
     while ((match = regexp.exec(stackString)) !== null) {
-      location = match[1]
-      if (location.indexOf('(native)') !== -1) {
-        continue
-      }
-      if (location.indexOf('electron.asar') !== -1) {
-        continue
-      }
+      const location = match[1]
+      if (location.indexOf('(native)') !== -1) continue
+      if (location.indexOf('electron.asar') !== -1) continue
+
       ref = /([^/^)]*)\)?$/gi.exec(location)
       filenameAndLine = ref[1]
       break
@@ -40,8 +40,7 @@ class CallbacksRegistry {
   }
 
   get (id) {
-    var ref
-    return (ref = this.callbacks[id]) != null ? ref : function () {}
+    return this.callbacks[id] != null ? this.callbacks[id] : () => {}
   }
 
   apply (id, ...args) {

+ 42 - 0
spec/api-callbacks-registry-spec.js

@@ -0,0 +1,42 @@
+const assert = require('assert')
+const {CallbacksRegistry} = require('electron')
+
+describe.only('CallbacksRegistry module', () => {
+  let registry = null
+
+  beforeEach(() => {
+    registry = new CallbacksRegistry()
+  })
+
+  it('adds a callback to the registry', () => {
+    const cb = () => [1, 2, 3, 4, 5]
+    const id = registry.add(cb)
+    assert.equal(id, 1)
+  })
+
+  it('returns a specified callback if it is in the registry', () => {
+    const cb = () => [1, 2, 3, 4, 5]
+    registry.add(cb)
+
+    const callback = registry.get(1)
+    assert.equal(callback.toString(), cb.toString())
+  })
+
+  it('returns an empty function if the cb doesnt exist', () => {
+    const callback = registry.get(1)
+    assert.equal(callback.toString(), 'function () {}')
+  })
+
+  it('removes a callback to the registry', () => {
+    const cb = () => [1, 2, 3, 4, 5]
+    const id = registry.add(cb)
+    assert.equal(id, 1)
+
+    const beforeCB = registry.get(1)
+    assert.equal(beforeCB.toString(), cb.toString())
+
+    registry.remove(1)
+    const afterCB = registry.get(1)
+    assert.equal(afterCB.toString(), 'function () {}')
+  })
+})