add gs
This commit is contained in:
@@ -0,0 +1,86 @@
|
||||
return function()
|
||||
local Workspace = game:GetService("Workspace")
|
||||
|
||||
local PurchaseError = require(script.Parent.PurchaseError)
|
||||
|
||||
local meetsPrerequisites = require(script.Parent.meetsPrerequisites)
|
||||
|
||||
local function getValidProductInfo()
|
||||
return {
|
||||
IsForSale = true,
|
||||
IsPublicDomain = true,
|
||||
IsLimited = false,
|
||||
ContentRatingTypeId = 0,
|
||||
AssetId = 0,
|
||||
-- Assets have ProductType "User Product"
|
||||
ProductType = "User Product",
|
||||
Creator = {
|
||||
CreatorType = "User",
|
||||
CreatorTargetId = 1,
|
||||
}
|
||||
}
|
||||
end
|
||||
|
||||
it("should return true if prerequisites are all met", function()
|
||||
local productInfo = getValidProductInfo()
|
||||
local met, _ = meetsPrerequisites(productInfo, false, false)
|
||||
|
||||
expect(met).to.equal(true)
|
||||
end)
|
||||
|
||||
it("should return true if third party restrictions do not apply", function()
|
||||
local productInfo = getValidProductInfo()
|
||||
Workspace.AllowThirdPartySales = false
|
||||
|
||||
-- Set creator id to game's creator id
|
||||
productInfo.Creator.CreatorTargetId = game.CreatorId
|
||||
|
||||
local met, _ = meetsPrerequisites(productInfo, false, true)
|
||||
|
||||
expect(met).to.equal(true)
|
||||
end)
|
||||
|
||||
it("should return false if the player owns the item already", function()
|
||||
local productInfo = getValidProductInfo()
|
||||
local met, errorReason = meetsPrerequisites(productInfo, true, true)
|
||||
|
||||
expect(met).to.equal(false)
|
||||
expect(errorReason).to.equal(PurchaseError.AlreadyOwn)
|
||||
end)
|
||||
|
||||
it("should return false if the product is not for sale", function()
|
||||
local productInfo = getValidProductInfo()
|
||||
productInfo.IsForSale = false
|
||||
productInfo.IsPublicDomain = false
|
||||
|
||||
local met, errorReason = meetsPrerequisites(productInfo, false, false)
|
||||
|
||||
expect(met).to.equal(false)
|
||||
expect(errorReason).to.equal(PurchaseError.NotForSale)
|
||||
end)
|
||||
|
||||
it("should return false if no copies are available", function()
|
||||
local productInfo = getValidProductInfo()
|
||||
productInfo.IsLimited = true
|
||||
productInfo.Remaining = 0
|
||||
|
||||
local met, errorReason = meetsPrerequisites(productInfo, false, false)
|
||||
|
||||
expect(met).to.equal(false)
|
||||
expect(errorReason).to.equal(PurchaseError.Limited)
|
||||
end)
|
||||
|
||||
it("should return false if third-party sales are restricted", function()
|
||||
local productInfo = getValidProductInfo()
|
||||
Workspace.AllowThirdPartySales = false
|
||||
|
||||
-- Set product creator to a number that is ~= to game.CreatorId and is > 1
|
||||
-- (which is considered ROBLOX, and is never restricted)
|
||||
productInfo.Creator.CreatorTargetId = game.CreatorId + 2
|
||||
|
||||
local met, errorReason = meetsPrerequisites(productInfo, false, true)
|
||||
|
||||
expect(met).to.equal(false)
|
||||
expect(errorReason).to.equal(PurchaseError.ThirdPartyDisabled)
|
||||
end)
|
||||
end
|
||||
Reference in New Issue
Block a user