Bläddra i källkod

Merge pull request #77 from ryangjchandler/feature/store-callbacks

feature: closure generated stores
Ryan Chandler 4 år sedan
förälder
incheckning
a1f9d6687a
8 ändrade filer med 26 tillägg och 0 borttagningar
  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. 4 0
      src/index.js
  8. 22 0
      tests/store.spec.js

Filskillnaden har hållts tillbaka eftersom den är för stor
+ 0 - 0
dist/spruce.js


Filskillnaden har hållts tillbaka eftersom den är för stor
+ 0 - 0
dist/spruce.js.map


Filskillnaden har hållts tillbaka eftersom den är för stor
+ 0 - 0
dist/spruce.module.js


Filskillnaden har hållts tillbaka eftersom den är för stor
+ 0 - 0
dist/spruce.module.js.map


Filskillnaden har hållts tillbaka eftersom den är för stor
+ 0 - 0
dist/spruce.umd.js


Filskillnaden har hållts tillbaka eftersom den är för stor
+ 0 - 0
dist/spruce.umd.js.map


+ 4 - 0
src/index.js

@@ -53,6 +53,10 @@ const Spruce = {
     },
 
     store(name, state, persist = false) {
+        if (typeof state === 'function') {
+            state = state()
+        }
+        
         if (persist) {
             try {
                 this.stores[name] = this.retrieveFromLocalStorage(name, getMethods(state))

+ 22 - 0
tests/store.spec.js

@@ -29,6 +29,28 @@ test('Spruce.store() > existing namespace will not be overwritten', () => {
         bob: 'car'
     })
 
+    expect(Spruce.store('testing')).toEqual({
+        foo: 'bar'
+    })
+})
+
+test('Spruce.store() > can be used with functions that generate stores', () => {
+    Spruce.store('testing', function () {
+        return {
+            foo: 'bar'
+        }
+    })
+
+    expect(Spruce.store('testing')).toEqual({
+        foo: 'bar'
+    })
+
+    Spruce.store('testing', function () {
+        return {
+            bar: 'car'
+        }
+    })
+
     expect(Spruce.store('testing')).toEqual({
         foo: 'bar'
     })

Vissa filer visades inte eftersom för många filer har ändrats