Files
Questie-X/Tests/QuestieBlizzardObjectivePOISync_spec.lua

57 lines
3.1 KiB
Lua

local function read(path)
local f = assert(io.open(path, "r"), "cannot open " .. path)
local content = f:read("*a")
f:close()
return content
end
local function has(content, needle)
return content:find(needle, 1, true) ~= nil
end
describe("Blizzard objective POI suppression", function()
local compat = read("Compat/Compat.lua")
local init = read("Modules/QuestieInit.lua")
local iconOptions = read("Modules/Options/IconsTab/QuestieOptionsIcons.lua")
local questieMenu = read("Modules/QuestieMenu/QuestieMenu.lua")
it("suppresses native POI buttons that duplicate visible or intentionally hidden Questie quest icons", function()
local helperStart = assert(compat:find("function QuestieCompat.HasVisibleQuestiePOIForQuest", 1, true))
local helperEnd = assert(compat:find("-- https://wowpedia.fandom.com/wiki/API_GetQuestLink", helperStart, true))
local helper = compat:sub(helperStart, helperEnd)
assert.is_true(has(compat, "complete = true"))
assert.is_true(has(compat, "monster = true"))
assert.is_true(has(compat, "object = true"))
assert.is_true(has(compat, "item = true"))
assert.is_true(has(compat, "event = true"))
assert.is_true(has(compat, "frame:ShouldBeHidden()"))
assert.is_true(has(helper, "QuestieMap.questIdFrames and QuestieMap.questIdFrames[questId]"))
assert.is_true(has(helper, "poiButton:Hide()"))
assert.is_true(has(helper, "function QuestieCompat.ShouldSuppressHiddenQuestieAvailablePOI"))
assert.is_true(has(helper, "profile.hideRepeatableBelowMaxLevel"))
assert.is_true(has(helper, "QuestieDB.IsBoardQuest"))
assert.is_true(has(helper, "profile.showDungeonQuests"))
assert.is_true(has(helper, "questTagId == 81"))
assert.is_true(has(helper, "QuestieCompat.HasVisibleQuestiePOIForQuest(questId) or QuestieCompat.ShouldSuppressHiddenQuestieAvailablePOI(questId, poiButton)"))
end)
it("hooks Blizzard POI display without globally disabling native POIs", function()
local helperStart = assert(compat:find("function QuestieCompat.InitializeBlizzardPOISuppression", 1, true))
local helperEnd = assert(compat:find("-- https://wowpedia.fandom.com/wiki/API_GetQuestLink", helperStart, true))
local helper = compat:sub(helperStart, helperEnd)
assert.is_true(has(helper, "hooksecurefunc(\"QuestPOI_DisplayButton\""))
assert.is_true(has(helper, "hooksecurefunc(\"QuestPOI_SelectButton\""))
assert.is_true(has(compat, "\"poi%s%s_%d\""))
assert.is_false(has(compat, "SetCVar(\"questPOI\", useQuestieObjectives and \"0\" or \"1\")"))
end)
it("initializes duplicate suppression but leaves objective toggles in control of Questie icons only", function()
assert.is_true(has(init, "QuestieCompat.InitializeBlizzardPOISuppression()"))
assert.is_false(has(iconOptions, "QuestieCompat.SyncBlizzardObjectivePOIs"))
assert.is_true(has(iconOptions, "QuestieCompat.EnableBlizzardObjectivePOIs()"))
assert.is_false(has(questieMenu, "QuestieCompat.SyncBlizzardObjectivePOIs"))
end)
end)