Skip to content

Commit 5c4b39a

Browse files
committed
test: expand import reimport coverage
1 parent d1ca46e commit 5c4b39a

1 file changed

Lines changed: 76 additions & 20 deletions

File tree

spec/System/TestImportReimport_spec.lua

Lines changed: 76 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,8 @@ describe("TestImportReimport", function()
2525
}
2626
end
2727

28-
-- Build a minimal import payload so the tests stay focused on state, not fixture noise.
29-
local function buildImportPayload(itemTypeLine, inventoryId, socketedItems)
28+
-- Build a minimal import item so the tests stay focused on state, not fixture noise.
29+
local function makeImportItem(itemTypeLine, inventoryId, socketedItems, itemId)
3030
local maxSocketIndex = 0
3131
for _, socketedItem in ipairs(socketedItems) do
3232
maxSocketIndex = math.max(maxSocketIndex, socketedItem.socket + 1)
@@ -35,28 +35,33 @@ describe("TestImportReimport", function()
3535
for index = 1, maxSocketIndex do
3636
sockets[index] = { group = 0, sColour = DEFAULT_SOCKET_COLOR }
3737
end
38+
return {
39+
id = itemId or TEST_IMPORT_ITEM_ID,
40+
frameType = 0,
41+
name = "",
42+
typeLine = itemTypeLine,
43+
inventoryId = inventoryId,
44+
ilvl = DEFAULT_ITEM_LEVEL,
45+
properties = {},
46+
sockets = sockets,
47+
socketedItems = socketedItems,
48+
}
49+
end
50+
51+
-- Build a minimal import payload so the tests stay focused on state, not fixture noise.
52+
local function buildImportPayload(items)
3853
return dkjson.encode({
3954
character = { level = DEFAULT_CHARACTER_LEVEL },
40-
items = {
41-
{
42-
id = TEST_IMPORT_ITEM_ID,
43-
frameType = 0,
44-
name = "",
45-
typeLine = itemTypeLine,
46-
inventoryId = inventoryId,
47-
ilvl = DEFAULT_ITEM_LEVEL,
48-
properties = {},
49-
sockets = sockets,
50-
socketedItems = socketedItems,
51-
}
52-
},
55+
items = items,
5356
})
5457
end
5558

5659
local function reimportSocketedItemsWithOptions(itemTypeLine, inventoryId, socketedItems, clearItems)
5760
build.importTab.controls.charImportItemsClearSkills.state = true
5861
build.importTab.controls.charImportItemsClearItems.state = clearItems
59-
build.importTab:ImportItemsAndSkills(buildImportPayload(itemTypeLine, inventoryId, socketedItems))
62+
build.importTab:ImportItemsAndSkills(buildImportPayload({
63+
makeImportItem(itemTypeLine, inventoryId, socketedItems),
64+
}))
6065
runCallback("OnFrame")
6166
end
6267

@@ -109,10 +114,12 @@ Added Fire Damage 1/0 Default DISABLED 1
109114

110115
build.importTab.controls.charImportItemsClearSkills.state = true
111116
build.importTab.controls.charImportItemsClearItems.state = false
112-
build.importTab:ImportItemsAndSkills(buildImportPayload("Iron Hat", "Helm", {
113-
makeSocketedGemEntry(0, false, "Cleave", 1),
114-
makeSocketedGemEntry(1, false, "Heavy Strike", 1),
115-
makeSocketedGemEntry(2, true, "Added Fire Damage Support", 2),
117+
build.importTab:ImportItemsAndSkills(buildImportPayload({
118+
makeImportItem("Iron Hat", "Helm", {
119+
makeSocketedGemEntry(0, false, "Cleave", 1),
120+
makeSocketedGemEntry(1, false, "Heavy Strike", 1),
121+
makeSocketedGemEntry(2, true, "Added Fire Damage Support", 2),
122+
}),
116123
}))
117124
runCallback("OnFrame")
118125

@@ -152,6 +159,55 @@ Added Fire Damage 1/0 Default DISABLED 1
152159
assert.is_false(socketGroup.gemList[3].enabled)
153160
end)
154161

162+
it("preserves two socket groups when reimporting items and skills", function()
163+
build.skillsTab:PasteSocketGroup([[
164+
Slot: Helmet
165+
Cleave 1/0 Default 1
166+
Heavy Strike 1/0 Default 1
167+
Added Fire Damage 1/0 Default DISABLED 1
168+
]])
169+
runCallback("OnFrame")
170+
171+
build.skillsTab:PasteSocketGroup([[
172+
Slot: Gloves
173+
Blight 20/0 Default 1
174+
]])
175+
runCallback("OnFrame")
176+
177+
local helmetGroup = build.skillsTab.socketGroupList[1]
178+
helmetGroup.includeInFullDPS = true
179+
helmetGroup.mainActiveSkill = 2
180+
local glovesGroup = build.skillsTab.socketGroupList[2]
181+
glovesGroup.enabled = false
182+
runCallback("OnFrame")
183+
184+
build.importTab.controls.charImportItemsClearSkills.state = true
185+
build.importTab.controls.charImportItemsClearItems.state = false
186+
build.importTab:ImportItemsAndSkills(buildImportPayload({
187+
makeImportItem("Iron Hat", "Helm", {
188+
makeSocketedGemEntry(0, false, "Cleave", 1),
189+
makeSocketedGemEntry(1, false, "Heavy Strike", 1),
190+
makeSocketedGemEntry(2, true, "Added Fire Damage Support", 2),
191+
}, "test-import-item-helmet"),
192+
makeImportItem("Rawhide Gloves", "Gloves", {
193+
makeSocketedGemEntry(0, false, "Blight", 20),
194+
}, "test-import-item-gloves"),
195+
}))
196+
runCallback("OnFrame")
197+
198+
local groupsBySlot = {}
199+
for _, socketGroup in ipairs(build.skillsTab.socketGroupList) do
200+
groupsBySlot[socketGroup.slot] = socketGroup
201+
end
202+
203+
assert.are.equal(2, #build.skillsTab.socketGroupList)
204+
assert.is_not_nil(groupsBySlot.Helmet)
205+
assert.is_not_nil(groupsBySlot.Gloves)
206+
assert.is_true(groupsBySlot.Helmet.includeInFullDPS)
207+
assert.are.equal(2, groupsBySlot.Helmet.mainActiveSkill)
208+
assert.is_false(groupsBySlot.Gloves.enabled)
209+
end)
210+
155211
it("preserves skill part selection when reimporting items and skills", function()
156212
assertReimportPreservesSkillSubstate("Helmet", "Iron Hat", "Helm", "Blight", "skillPart", 2)
157213
end)

0 commit comments

Comments
 (0)