53 lines
2.0 KiB
Lua
53 lines
2.0 KiB
Lua
return function()
|
|
local CorePackages = game:GetService("CorePackages")
|
|
local UpdateFetchingStatus = require(CorePackages.AppTempCommon.LuaApp.Actions.UpdateFetchingStatus)
|
|
local FetchingStatusReducer = require(CorePackages.AppTempCommon.LuaApp.Reducers.FetchingStatus)
|
|
local RetrievalStatus = require(CorePackages.AppTempCommon.LuaApp.Enum.RetrievalStatus)
|
|
local TableUtilities = require(CorePackages.AppTempCommon.LuaApp.TableUtilities)
|
|
|
|
local KEY_1 = "key_1"
|
|
local KEY_2 = "key_2"
|
|
|
|
describe("FetchingStatus", function()
|
|
it("should be empty by default", function()
|
|
local state = FetchingStatusReducer(nil, {})
|
|
|
|
expect(TableUtilities.FieldCount(state)).to.equal(0)
|
|
end)
|
|
|
|
it("should not be modified by other actions", function()
|
|
local oldState = FetchingStatusReducer(nil, {})
|
|
local newState = FetchingStatusReducer(oldState, { type = "not a real action" })
|
|
|
|
expect(newState).to.equal(oldState)
|
|
end)
|
|
|
|
it("should be changed using UpdateFetchingStatus", function()
|
|
local state = FetchingStatusReducer(nil, {})
|
|
|
|
state = FetchingStatusReducer(state, UpdateFetchingStatus(KEY_1, RetrievalStatus.Fetching))
|
|
expect(state[KEY_1]).to.equal(RetrievalStatus.Fetching)
|
|
|
|
state = FetchingStatusReducer(state, UpdateFetchingStatus(KEY_1, RetrievalStatus.Failed))
|
|
expect(state[KEY_1]).to.equal(RetrievalStatus.Failed)
|
|
end)
|
|
|
|
it("should store different values for different keys", function()
|
|
local state = FetchingStatusReducer(nil, {})
|
|
|
|
state = FetchingStatusReducer(state, UpdateFetchingStatus(KEY_1, RetrievalStatus.Failed))
|
|
state = FetchingStatusReducer(state, UpdateFetchingStatus(KEY_2, RetrievalStatus.Done))
|
|
|
|
expect(state[KEY_1]).to.equal(RetrievalStatus.Failed)
|
|
expect(state[KEY_2]).to.equal(RetrievalStatus.Done)
|
|
end)
|
|
|
|
it("should clear values for nil keys", function()
|
|
local state = { [KEY_1] = RetrievalStatus.Fetching }
|
|
|
|
state = FetchingStatusReducer(state, UpdateFetchingStatus(KEY_1, nil))
|
|
expect(state[KEY_1]).to.equal(nil)
|
|
end)
|
|
end)
|
|
end
|