SyntaxGameServer/RCCService2018/content/LuaPackages/PurchasePrompt/Thunks/purchaseItem.spec.lua

53 lines
1.5 KiB
Lua

return function()
local CorePackages = game:GetService("CorePackages")
local Rodux = require(CorePackages.Rodux)
local Reducer = require(script.Parent.Parent.Reducers.Reducer)
local MockNetwork = require(script.Parent.Parent.Test.MockNetwork)
local MockAnalytics = require(script.Parent.Parent.Test.MockAnalytics)
local Network = require(script.Parent.Parent.Services.Network)
local Analytics = require(script.Parent.Parent.Services.Analytics)
local PromptState = require(script.Parent.Parent.PromptState)
local Thunk = require(script.Parent.Parent.Thunk)
local purchaseItem = require(script.Parent.purchaseItem)
it("should run without errors", function()
local store = Rodux.Store.new(Reducer)
local thunk = purchaseItem()
local network = MockNetwork.new()
local analytics = MockAnalytics.new()
Thunk.test(thunk, store, {
[Network] = network,
[Analytics] = analytics,
})
local state = store:getState()
expect(analytics.signalPurchaseSuccess_callCount).to.equal(1)
expect(state.promptState).to.equal(PromptState.PurchaseInProgress)
end)
it("should resolve to an error state if a network error occurs", function()
local store = Rodux.Store.new(Reducer)
local thunk = purchaseItem()
local network = MockNetwork.new(true)
local analytics = MockAnalytics.new()
Thunk.test(thunk, store, {
[Network] = network,
[Analytics] = analytics,
})
local state = store:getState()
expect(analytics.signalPurchaseSuccess_callCount).to.equal(0)
expect(state.promptState).to.equal(PromptState.Error)
end)
end