Clients/Client2018/content/internal/Chat/Modules/LuaChat/Reducers/UsersAsync.spec.lua

59 lines
1.9 KiB
Lua

return function()
local Modules = game:GetService("CoreGui").RobloxGui.Modules
local LuaApp = Modules.LuaApp
local LuaChat = Modules.LuaChat
local UsersAsyncReducer = require(script.Parent.UsersAsync)
local User = require(LuaApp.Models.User)
local ReceivedAllFriends = require(LuaChat.Actions.ReceivedAllFriends)
local ReceivedUserPresence = require(LuaChat.Actions.ReceivedUserPresence)
local RequestAllFriends = require(LuaChat.Actions.RequestAllFriends)
local RequestUserPresence = require(LuaChat.Actions.RequestUserPresence)
describe("initial state", function()
it("should return an initial table when passed nil", function()
local state = UsersAsyncReducer(nil, {})
expect(state).to.be.a("table")
end)
end)
describe("RequestAllFriends", function()
it("should set the async state to true", function()
local state = UsersAsyncReducer(nil, {})
state = UsersAsyncReducer(state, RequestAllFriends())
expect(state.allFriendsIsFetching).to.equal(true)
end)
end)
describe("ReceivedAllFriends", function()
it("should set the async state to false", function()
local state = UsersAsyncReducer(nil, {})
state = UsersAsyncReducer(state, ReceivedAllFriends())
expect(state.allFriendsIsFetching).to.equal(false)
end)
end)
describe("RequestUserPresence", function()
it("should set the async state to true", function()
local user = User.mock()
local state = UsersAsyncReducer(nil, {})
state = UsersAsyncReducer(state, RequestUserPresence(user.id))
expect(state[user.id].presenceIsFetching).to.equal(true)
end)
end)
describe("ReceivedUserPresence", function()
it("should set the async state to false", function()
local user = User.mock()
local state = UsersAsyncReducer({[user.id] = {presenceIsFetching = true}}, {})
state = UsersAsyncReducer(state, ReceivedUserPresence(user.id))
expect(state[user.id].presenceIsFetching).to.equal(false)
end)
end)
end