Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 26 additions & 0 deletions spec/System/TestCompareBuySimilar_spec.lua
Original file line number Diff line number Diff line change
Expand Up @@ -154,6 +154,13 @@ Implicits: 1
return dkjson.decode(queryJson)
end

local function getUniqueQuery(name, baseName)
local item = new("Item", "Rarity: UNIQUE\n" .. name .. "\n" .. baseName .. "\nImplicits: 0")
local query = getQuery(openPopup(item, "Jewel"))
main:ClosePopup()
return query
end

it("rebuilds the URL when league and listed status change", function()
local controls = openPopup()
getQuery(controls)
Expand All @@ -171,6 +178,25 @@ Implicits: 1
assert.equal("any", query.query.status.option)
end)

it("preserves apostrophes in unique names", function()
local item = new("Item", [[
Rarity: UNIQUE
Ralakesh's Impatience
Riveted Boots
Implicits: 0]])
local controls = openPopup(item, "Boots")

assert.equal("Ralakesh's Impatience", getQuery(controls).query.name)
end)

it("removes a trailing unique ID without removing name punctuation", function()
assert.equal("Uul-Netol's Embrace", getUniqueQuery("Uul-Netol's Embrace 1234", "Vaal Axe").query.name)
end)

it("trims whitespace after a unique name", function()
assert.equal("The Hateful Accuser", getUniqueQuery("The Hateful Accuser ", "Ghastly Eye Jewel").query.name)
end)

it("persists league choices by name for each realm", function()
local controls = openPopup()
assert.equal("PC Event", controls.leagueDrop:GetSelValue())
Expand Down
8 changes: 4 additions & 4 deletions src/Classes/CompareBuySimilar.lua
Original file line number Diff line number Diff line change
Expand Up @@ -74,10 +74,10 @@ local function buildURL(item, slotName, controls, modEntries, defenceEntries, is
-- Search by unique name
-- Strip "Foulborn" prefix from unique name for trade search
local tradeName = (item.title or item.name):gsub("^Foulborn%s+", "")
-- only take the first letters and white space to avoid e.g. including
-- timeless jewel ids or other numbers the user might have on the item
local nameMatch = tradeName:match("(%a[%a%s]+).*")
tradeName = (nameMatch and nameMatch:gsub("%s+$", "")) or tradeName
-- only strip a trailing numeric identifier to avoid e.g. including
-- timeless jewel ids or other numbers appended to the item name.
tradeName = tradeName:gsub("%s+$", "")
tradeName = tradeName:match("^(.-)%s+%d+$") or tradeName
queryTable.query.name = tradeName
queryTable.query.type = item.baseName
-- If item is Foulborn, add the foulborn_item filter
Expand Down
Loading