fix: harden campaign resume UX and flow verification
This commit is contained in:
@@ -29,9 +29,11 @@ try {
|
||||
acknowledgeCampaignVictoryReward,
|
||||
campaignVictoryRewardPresentation,
|
||||
campaignStorageKey,
|
||||
dismissCampaignVictoryRewardNotice,
|
||||
applyCampBondExp,
|
||||
applyCampVisitReward,
|
||||
getCampaignState,
|
||||
getPendingCampaignVictoryRewardNoticeReport,
|
||||
getPendingCampaignVictoryRewardReport,
|
||||
hasCampaignSave,
|
||||
loadCampaignState,
|
||||
@@ -1087,9 +1089,23 @@ try {
|
||||
assert(
|
||||
pendingVictoryRewardReport?.battleId === firstScenario.id &&
|
||||
pendingVictoryRewardReport.rewardGold === firstBattleReport.rewardGold &&
|
||||
pendingVictoryRewardReport.campaignRewards?.equipment[0] === firstBattleReport.campaignRewards.equipment[0],
|
||||
pendingVictoryRewardReport.campaignRewards?.equipment[0] === firstBattleReport.campaignRewards.equipment[0] &&
|
||||
getPendingCampaignVictoryRewardNoticeReport()?.battleId === firstScenario.id,
|
||||
`Expected an unacknowledged victory to expose its persisted reward report: ${JSON.stringify(pendingVictoryRewardReport)}`
|
||||
);
|
||||
const dismissedVictoryRewardNotice = dismissCampaignVictoryRewardNotice(firstScenario.id);
|
||||
const repeatedVictoryRewardNoticeDismissal = dismissCampaignVictoryRewardNotice(firstScenario.id);
|
||||
const dismissedVictoryRewardNoticeSave = JSON.parse(storage.get(campaignStorageKey));
|
||||
const dismissedVictoryRewardNoticeSlotSave = JSON.parse(storage.get(`${campaignStorageKey}:slot-1`));
|
||||
assert(
|
||||
JSON.stringify(dismissedVictoryRewardNotice.dismissedVictoryRewardNoticeBattleIds) === JSON.stringify([firstScenario.id]) &&
|
||||
JSON.stringify(repeatedVictoryRewardNoticeDismissal.dismissedVictoryRewardNoticeBattleIds) === JSON.stringify([firstScenario.id]) &&
|
||||
dismissedVictoryRewardNoticeSave.dismissedVictoryRewardNoticeBattleIds.includes(firstScenario.id) &&
|
||||
dismissedVictoryRewardNoticeSlotSave.dismissedVictoryRewardNoticeBattleIds.includes(firstScenario.id) &&
|
||||
getPendingCampaignVictoryRewardReport()?.battleId === firstScenario.id &&
|
||||
getPendingCampaignVictoryRewardNoticeReport() === undefined,
|
||||
`Expected notice dismissal to persist idempotently without consuming the underlying reward categories: ${JSON.stringify({ dismissedVictoryRewardNotice, dismissedVictoryRewardNoticeSave })}`
|
||||
);
|
||||
const acknowledgedVictoryReward = acknowledgeCampaignVictoryReward(firstScenario.id);
|
||||
const repeatedVictoryRewardAcknowledgement = acknowledgeCampaignVictoryReward(firstScenario.id);
|
||||
const acknowledgedVictoryRewardSave = JSON.parse(storage.get(campaignStorageKey));
|
||||
@@ -1102,12 +1118,18 @@ try {
|
||||
);
|
||||
const corruptedFutureAcknowledgementSave = JSON.parse(storage.get(campaignStorageKey));
|
||||
corruptedFutureAcknowledgementSave.acknowledgedVictoryRewardBattleIds.push('second-battle-yellow-turban-pursuit');
|
||||
corruptedFutureAcknowledgementSave.dismissedVictoryRewardNoticeBattleIds.push(
|
||||
firstScenario.id,
|
||||
'second-battle-yellow-turban-pursuit',
|
||||
'unknown-battle'
|
||||
);
|
||||
storage.set(campaignStorageKey, JSON.stringify(corruptedFutureAcknowledgementSave));
|
||||
const normalizedFutureAcknowledgementSave = loadCampaignState();
|
||||
assert(
|
||||
normalizedFutureAcknowledgementSave.acknowledgedVictoryRewardBattleIds.includes(firstScenario.id) &&
|
||||
!normalizedFutureAcknowledgementSave.acknowledgedVictoryRewardBattleIds.includes('second-battle-yellow-turban-pursuit'),
|
||||
`Expected acknowledgement normalization to retain recorded victories while rejecting future known battle ids without a victory: ${JSON.stringify(normalizedFutureAcknowledgementSave.acknowledgedVictoryRewardBattleIds)}`
|
||||
!normalizedFutureAcknowledgementSave.acknowledgedVictoryRewardBattleIds.includes('second-battle-yellow-turban-pursuit') &&
|
||||
JSON.stringify(normalizedFutureAcknowledgementSave.dismissedVictoryRewardNoticeBattleIds) === JSON.stringify([firstScenario.id]),
|
||||
`Expected acknowledgement normalization to retain recorded victories while rejecting duplicate, unknown, and future notice dismissals: ${JSON.stringify(normalizedFutureAcknowledgementSave)}`
|
||||
);
|
||||
setFirstBattleReport({
|
||||
...firstBattleReport,
|
||||
|
||||
Reference in New Issue
Block a user