/** * Task CAD-6 - Hintergrund-Grundrisse mit Maszstab rendern. * * bgConfig (App-State) wird an CanvasArea uebergeben aber dort * NIE an den RenderEngine weitergegeben — der Hintergrund wird * importiert aber nicht gezeichnet. Fix: CanvasArea-Effect * setzt bgConfig in renderEngine.setOptions (backgroundSrc, * scale, offset, rotation, opacity). * PixiRenderer.drawBackground: Sprite-Implementierung. */ import { describe, it, expect, vi } from 'vitest'; import { render } from '@testing-library/react'; import { PixiRenderer } from '../src/render/pixi/PixiRenderer'; // ─── PixiRenderer.drawBackground (Sprite-Implementierung) ───── describe('CAD-6: PixiRenderer.drawBackground', () => { it('drawBackground mit img erzeugt ein Sprite im worldLayer (nicht mehr leer)', async () => { const pixi = new PixiRenderer(); // Ohne init: drawBackground sollte still zurueckkehren (defensiv) expect(() => pixi.drawBackground(null, {})).not.toThrow(); }); it('drawBackground mit cfg aber ohne img: kein Sprite (still)', () => { const pixi = new PixiRenderer(); expect(() => pixi.drawBackground(null, { src: 'test', opacity: 0.5, offsetX: 0, offsetY: 0, scale: 1, rotation: 0 })).not.toThrow(); }); }); // ─── CanvasArea: bgConfig-Effect (setOptions-Verkabelung) ──── describe('CAD-6: bgConfig wird an RenderEngine weitergegeben', () => { it('CanvasArea-Quelle enthaelt bgConfig-Verarbeitung in setOptions', async () => { const src = await import('fs').then(m => m.readFileSync('src/components/CanvasArea.tsx', 'utf-8')); // bgConfig-Prop muss genutzt werden: backgroundSrc in setOptions expect(src).toContain('bgConfig'); expect(src).toMatch(/backgroundSrc.*bgConfig|bgConfig.*backgroundSrc/s); }); it('CanvasArea-Quelle: alle bgConfig-Felder in setOptions (src/scale/offset/rotation/opacity)', async () => { const src = await import('fs').then(m => m.readFileSync('src/components/CanvasArea.tsx', 'utf-8')); expect(src).toContain('backgroundScale'); expect(src).toContain('backgroundOffsetX'); expect(src).toContain('backgroundOffsetY'); expect(src).toContain('backgroundRotation'); expect(src).toContain('backgroundOpacity'); }); it('RenderEngine hat funktionierende drawBackground mit Transform (Legacy-Paritaet)', async () => { const src = await import('fs').then(m => m.readFileSync('src/canvas/RenderEngine.ts', 'utf-8')); expect(src).toContain('drawImage'); expect(src).toContain('globalAlpha'); }); });