Clients/Client2018/content/LuaPackages/RoduxImpl/thunkMiddleware.spec.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