diff --git a/apps/web/src/app/features/combat/combat-page/combat-page.component.html b/apps/web/src/app/features/combat/combat-page/combat-page.component.html index 72c221b..29bd2c1 100644 --- a/apps/web/src/app/features/combat/combat-page/combat-page.component.html +++ b/apps/web/src/app/features/combat/combat-page/combat-page.component.html @@ -140,10 +140,6 @@

Belohnungen

-
-
Erfahrung
-
+{{ rewards.experience }} XP
-
Silber
+{{ rewards.silver }}
diff --git a/apps/web/src/app/features/combat/combat-page/combat-page.component.spec.ts b/apps/web/src/app/features/combat/combat-page/combat-page.component.spec.ts index 880c1ad..8b92845 100644 --- a/apps/web/src/app/features/combat/combat-page/combat-page.component.spec.ts +++ b/apps/web/src/app/features/combat/combat-page/combat-page.component.spec.ts @@ -426,7 +426,7 @@ describe('CombatPageComponent', () => { ...activeCombat, status: 'WON', monster: { ...activeCombat.monster, currentHp: 0 }, - rewards: { experience: 8, silver: 6, items: [] }, + rewards: { silver: 6, items: [] }, events: [ ...activeCombat.events, { round: 2, sequence: 3, type: 'DAMAGE', source: 'PLAYER', target: 'MONSTER', amount: 31 }, @@ -526,16 +526,18 @@ describe('CombatPageComponent', () => { ...activeCombat, status: 'WON', monster: { ...activeCombat.monster, currentHp: 0 }, - rewards: { experience: 8, silver: 6, items: [] }, + rewards: { silver: 6, items: [] }, }; - it('shows the granted XP and silver on the victory screen', async () => { + it('shows the granted silver on the victory screen', async () => { const fixture = await setup(wonWithRewards); const element = fixture.nativeElement as HTMLElement; expect(element.querySelector('[data-combat-rewards]')).toBeTruthy(); - expect(element.querySelector('[data-reward-experience]')?.textContent).toContain('8'); expect(element.querySelector('[data-reward-silver]')?.textContent).toContain('6'); + // R16: the XP block is removed entirely, not hidden -- guard against it + // reappearing in the markup. + expect(element.querySelector('[data-reward-experience]')).toBeNull(); }); it('renders a dropped item with its icon, name, and rarity', async () => { @@ -543,7 +545,6 @@ describe('CombatPageComponent', () => { ...wonWithRewards, monster: { ...activeCombat.monster, key: 'road-bandit', name: 'Straßenräuber', currentHp: 0 }, rewards: { - experience: 16, silver: 12, items: [ { @@ -577,8 +578,6 @@ describe('CombatPageComponent', () => { 'Keine besondere Beute gefunden.', ); expect(element.querySelector('[role="alert"]')).toBeNull(); - // XP and silver still carry the screen. - expect(element.querySelector('[data-reward-experience]')).toBeTruthy(); }); it('renders the persisted rewards of an already-won combat loaded from the server', async () => { @@ -586,12 +585,11 @@ describe('CombatPageComponent', () => { // exactly what the server persisted, without rerolling anything. const fixture = await setup({ ...wonWithRewards, - rewards: { experience: 16, silver: 12, items: [] }, + rewards: { silver: 12, items: [] }, }); const element = fixture.nativeElement as HTMLElement; expect(combatStore.loadCombat).toHaveBeenCalledWith('combat-1'); - expect(element.querySelector('[data-reward-experience]')?.textContent).toContain('16'); expect(element.querySelector('[data-reward-silver]')?.textContent).toContain('12'); }); diff --git a/apps/web/src/app/features/combat/combat-page/combat-page.component.ts b/apps/web/src/app/features/combat/combat-page/combat-page.component.ts index e4cea29..66e7907 100644 --- a/apps/web/src/app/features/combat/combat-page/combat-page.component.ts +++ b/apps/web/src/app/features/combat/combat-page/combat-page.component.ts @@ -105,7 +105,7 @@ export class CombatPageComponent implements OnInit { } if (after.status === 'WON') { - // The server already granted XP and silver; pull the authoritative + // The server already granted silver and renown; pull the authoritative // character so the HUD matches (spec §35). void this.worldStore.refreshCharacter(); }