SyntaxGameServer/RCCService2018/content/LuaPackages/PurchasePrompt/Test/MockNetwork.lua

91 lines
1.9 KiB
Lua

--[[
Mock network implementation that returns values in the expected
formats, or returns promise rejections if specified
]]
local Promise = require(script.Parent.Parent.Promise)
local function getProductInfo(id, infoType)
return Promise.resolve({
AssetId = 1,
AssetTypeId = 2,
ContentRatingTypeId = 0,
Creator = {
CreatorType = "Group",
CreatorTargetId = 1,
Name = "ROBLOX",
Id = 1,
},
Description = "This item isn't real!",
IconImageAssetId = 1,
IsForSale = true,
IsLimited = false,
IsLimitedUnique = false,
IsNew = false,
IsPublicDomain = false,
MinimumMembershipLevel = 0,
Name = "Test Item",
PriceInRobux = 100,
ProductId = 1,
})
end
local function getPlayerOwns(player, id, infoType)
return Promise.resolve(false)
end
local function performPurchase(infoType, productId, expectedPrice, requestId)
return Promise.resolve({
success = true,
receipt = "fake-receipt-hash",
})
end
local function loadAssetForEquip(assetId)
return Promise.resolve(Instance.new("Tool"))
end
local function getAccountInfo()
return Promise.resolve({
RobuxBalance = 2147483647,
MembershipType = 0,
})
end
local function networkFailure(id, infoType)
return Promise.reject("Failed to access network service")
end
local MockNetwork = {}
MockNetwork.__index = MockNetwork
function MockNetwork.new(shouldFail)
local mockNetworkService
if shouldFail then
mockNetworkService = {
getProductInfo = networkFailure,
getPlayerOwns = networkFailure,
performPurchase = networkFailure,
loadAssetForEquip = networkFailure,
getAccountInfo = networkFailure,
}
else
mockNetworkService = {
getProductInfo = getProductInfo,
getPlayerOwns = getPlayerOwns,
performPurchase = performPurchase,
loadAssetForEquip = loadAssetForEquip,
getAccountInfo = getAccountInfo,
}
end
setmetatable(mockNetworkService, {
__tostring = function()
return "MockService(Network)"
end
})
return mockNetworkService
end
return MockNetwork