diff --git a/spec/System/TestImport_spec.lua b/spec/System/TestImport_spec.lua index 2ea158148e..52e05d8a00 100644 --- a/spec/System/TestImport_spec.lua +++ b/spec/System/TestImport_spec.lua @@ -16,7 +16,9 @@ describe("TestImport", function() build.importTab:ImportPassiveTreeAndJewels(sampleData, true) runCallback("OnFrame") - assert.equals(build.bandit, "None") + assert.equals(build.configTab.input.bandit, "None") + assert.equals(build.configTab.input.pantheonMajorGod, "TheBrineKing") + assert.equals(build.configTab.input.pantheonMinorGod, "Yugul") assert.equals(build.characterLevel, 99) -- iron will and CI assert.equals(build.spec.allocatedKeystoneCount, 2) @@ -39,6 +41,41 @@ describe("TestImport", function() assert.equals(build.spec.allocatedNotableCount, 29) end) + + it("preserves quest choices only for account-name imports", function() + build.configTab.varControls.bandit:SetSel(2) + build.configTab.varControls.pantheonMajorGod:SetSel(4) + build.configTab.varControls.pantheonMinorGod:SetSel(9) + + local importData = copyTable(sampleData) + importData.passives.bandit_choice = nil + importData.passives.pantheon_major = nil + importData.passives.pantheon_minor = nil + build.importTab.controls.siteAccountName.buf = "Test#0000" + build.importTab.controls.siteCharSelect.list = { { char = importData } } + build.importTab.controls.siteCharSelect.selIndex = 1 + build.importTab.lastLeague = importData.league + + local downloadPage = launch.DownloadPage + launch.DownloadPage = function(_, _, callback) + callback({ body = dkjson.encode(importData.passives) }) + end + build.importTab:DownloadPassiveTree({ hostName = "", realmCode = "pc" }) + launch.DownloadPage = downloadPage + runCallback("OnFrame") + + assert.equals(build.configTab.input.bandit, "Oak") + assert.equals(build.configTab.input.pantheonMajorGod, "Solaris") + assert.equals(build.configTab.input.pantheonMinorGod, "Shakari") + + build.importTab:ImportPassiveTreeAndJewels(importData, true) + runCallback("OnFrame") + + assert.equals(build.configTab.input.bandit, "None") + assert.equals(build.configTab.input.pantheonMajorGod, "None") + assert.equals(build.configTab.input.pantheonMinorGod, "None") + end) + it("imports with correct jewels", function() build.importTab:ImportPassiveTreeAndJewels(sampleData, true) runCallback("OnFrame") diff --git a/src/Classes/ImportTab.lua b/src/Classes/ImportTab.lua index 21e7d2adfa..8000c16015 100644 --- a/src/Classes/ImportTab.lua +++ b/src/Classes/ImportTab.lua @@ -835,6 +835,10 @@ function ImportTabClass:DownloadPassiveTree(realm) self.lastLeague = self.controls.siteCharSelectLeague:GetSelValueByKey("league") end local responseLua = dkjson.decode(response.body) + -- Account-name imports omit quest choices, so keep the build's current values. + responseLua.bandit_choice = responseLua.bandit_choice or self.build.configTab.input.bandit + responseLua.pantheon_major = responseLua.pantheon_major or self.build.configTab.input.pantheonMajorGod + responseLua.pantheon_minor = responseLua.pantheon_minor or self.build.configTab.input.pantheonMinorGod -- modify response to be like the oauth API response local charData = copyTable(charListData) charData.passives = responseLua