59 lines
1.2 KiB
Lua
59 lines
1.2 KiB
Lua
return function()
|
|
local Store = require(script.Parent.Store)
|
|
local thunkMiddleware = require(script.Parent.thunkMiddleware)
|
|
|
|
it("should dispatch thunks", function()
|
|
local function reducer(state, action)
|
|
return state
|
|
end
|
|
|
|
local store = Store.new(reducer, {}, { thunkMiddleware })
|
|
local thunkCount = 0
|
|
|
|
local function thunk(store)
|
|
thunkCount = thunkCount + 1
|
|
end
|
|
|
|
store:dispatch(thunk)
|
|
|
|
expect(thunkCount).to.equal(1)
|
|
end)
|
|
|
|
it("should allow normal actions to pass through", function()
|
|
local reducerCount = 0
|
|
|
|
local function reducer(state, action)
|
|
reducerCount = reducerCount + 1
|
|
return state
|
|
end
|
|
|
|
local store = Store.new(reducer, {}, { thunkMiddleware })
|
|
|
|
store:dispatch({
|
|
type = "test",
|
|
})
|
|
|
|
-- Reducer will be invoked twice:
|
|
-- Once when creating the store (@@INIT action)
|
|
-- Once when the test action is dispatched
|
|
expect(reducerCount).to.equal(2)
|
|
end)
|
|
|
|
it("should return the value from the thunk", function()
|
|
local function reducer(state, action)
|
|
return state
|
|
end
|
|
|
|
local store = Store.new(reducer, {}, { thunkMiddleware })
|
|
local thunkValue = "test"
|
|
|
|
local function thunk(store)
|
|
return thunkValue
|
|
end
|
|
|
|
local result = store:dispatch(thunk)
|
|
|
|
expect(result).to.equal(thunkValue)
|
|
end)
|
|
end
|