Browse Source

tests(on and emit tests)

Ryan Chandler 5 years ago
parent
commit
e7196d2c49
8 changed files with 68 additions and 1 deletions
  1. 0 0
      dist/spruce.js
  2. 0 0
      dist/spruce.js.map
  3. 0 0
      dist/spruce.module.js
  4. 0 0
      dist/spruce.module.js.map
  5. 0 0
      dist/spruce.umd.js
  6. 0 0
      dist/spruce.umd.js.map
  7. 1 1
      src/bus.js
  8. 67 0
      tests/bus.spec.js

File diff suppressed because it is too large
+ 0 - 0
dist/spruce.js


File diff suppressed because it is too large
+ 0 - 0
dist/spruce.js.map


File diff suppressed because it is too large
+ 0 - 0
dist/spruce.module.js


File diff suppressed because it is too large
+ 0 - 0
dist/spruce.module.js.map


File diff suppressed because it is too large
+ 0 - 0
dist/spruce.umd.js


File diff suppressed because it is too large
+ 0 - 0
dist/spruce.umd.js.map


+ 1 - 1
src/bus.js

@@ -17,7 +17,7 @@ export default {
         }
 
         window.dispatchEvent(new CustomEvent(`spruce:${name}`, {
-            data,
+            detail: data,
             bubbles: true
         }))
     }

+ 67 - 0
tests/bus.spec.js

@@ -0,0 +1,67 @@
+import Spruce from '../dist/spruce'
+import Alpine from 'alpinejs'
+import { waitFor } from '@testing-library/dom'
+
+beforeEach(() => {
+    Spruce.subscribers = []
+})
+
+beforeAll(() => {
+    window.Spruce = Spruce
+})
+
+/* Spruce.on() */
+
+test('.on() > can be used to register event listeners', () => {
+    Spruce.on('example', (event) => {})
+
+    expect(Spruce.events.events.hasOwnProperty('example')).toBeTruthy()
+})
+
+test('.on() > listener can access store', () => {
+    Spruce.store('foo', {
+        bar: 'bob'
+    })
+
+    let fixture = undefined;
+
+    Spruce.on('example', (detail) => {
+        fixture = detail
+    })
+
+    Spruce.emit('example')
+
+    expect(fixture.store).toEqual(Spruce.stores)
+})
+
+/* Spruce.emit() */
+
+test('.emit() > will run registered listeners', () => {
+    let fixture = 0;
+
+    Spruce.on('example', (detail) => {
+        fixture =+ detail.inc
+    })
+
+    Spruce.emit('example', { inc: 10 })
+
+    expect(fixture).toEqual(10)
+})
+
+test('.emit() > will dispatch browser event to window with spruce: prefix', async () => {
+    document.body.innerHTML = `
+        <div x-data="{ foo: 'bar' }" @spruce:example.window="foo = $event.detail.foo">
+            <span x-text="foo"></span>
+        </div>
+    `
+
+    Alpine.start()
+
+    expect(document.querySelector('span').innerText).toEqual('bar')
+
+    Spruce.emit('example', { foo: 'car' })
+
+    await waitFor(() => {
+        expect(document.querySelector('span').innerText).toEqual('car')
+    })
+})

Some files were not shown because too many files changed in this diff