34 lines
1.2 KiB
Lua
34 lines
1.2 KiB
Lua
describe("Questie item name safety", function()
|
|
local function read(path)
|
|
local f = assert(io.open(path, "r"), "cannot open " .. path)
|
|
local c = f:read("*a")
|
|
f:close()
|
|
return c
|
|
end
|
|
|
|
before_each(function()
|
|
dofile("Tests/wow_api_mock.lua")
|
|
GetItemInfo = function()
|
|
error("GetItemInfo should not be called for invalid item ids")
|
|
end
|
|
dofile("Database/QuestieDB.lua")
|
|
end)
|
|
|
|
it("returns a placeholder instead of calling GetItemInfo for invalid item ids", function()
|
|
local item = Item:CreateFromItemID(nil)
|
|
assert.equals("item:nil", item:GetItemName())
|
|
end)
|
|
|
|
it("also handles non-numeric item ids safely", function()
|
|
local item = Item:CreateFromItemID("bad-id")
|
|
assert.equals("item:bad-id", item:GetItemName())
|
|
end)
|
|
|
|
it("skips malformed item objectives without an item id", function()
|
|
local lib = read("Modules/Libs/QuestieLib.lua")
|
|
assert.is_true(string.find(lib, "local itemId = objectiveDB.Id", 1, true) ~= nil)
|
|
assert.is_true(string.find(lib, "if not itemId then", 1, true) ~= nil)
|
|
assert.is_true(string.find(lib, "QuestieDB.itemDataOverrides[itemId]", 1, true) ~= nil)
|
|
end)
|
|
end)
|