c6eb493f25
Aggiunge un'icona nera (nuovo asset serv-nero.png, più visibile del serv.png bianco su sfondo chiaro) accanto al nome della squadra che serviva all'inizio di ogni set nel referto stampabile. Corregge inoltre generaReferto: la stampa partiva subito dopo document.close(), prima che l'icona (risorsa esterna asincrona) finisse di caricare, risultando in un riquadro vuoto. Ora attende l'evento 'load' della finestra popup prima di chiamare print().
37 lines
1.4 KiB
JavaScript
37 lines
1.4 KiB
JavaScript
// @vitest-environment happy-dom
|
|
import { describe, it, expect, vi, afterEach } from 'vitest'
|
|
import { generaReferto } from '../../src/referto.js'
|
|
import { createInitialState } from '../../src/gameState.js'
|
|
|
|
// generaReferto è l'unico punto con effetti collaterali di referto.js (window.open
|
|
// + stampa): qui verifichiamo che orchestri correttamente le API del browser,
|
|
// mockando window.open per non aprire davvero una finestra durante i test.
|
|
describe('generaReferto (referto.js)', () => {
|
|
afterEach(() => {
|
|
vi.restoreAllMocks()
|
|
})
|
|
|
|
it('apre una nuova scheda, scrive il referto e avvia la stampa dopo il caricamento', () => {
|
|
const listeners = {}
|
|
const popup = {
|
|
document: { write: vi.fn(), close: vi.fn() },
|
|
print: vi.fn(),
|
|
addEventListener: vi.fn((evt, cb) => { listeners[evt] = cb }),
|
|
}
|
|
const openSpy = vi.spyOn(window, 'open').mockReturnValue(popup)
|
|
|
|
const state = createInitialState()
|
|
state.sp.nomi = { home: 'Antoniana', guest: 'Rivali' }
|
|
generaReferto(state)
|
|
|
|
expect(openSpy).toHaveBeenCalledWith('', '_blank')
|
|
expect(popup.document.write).toHaveBeenCalledTimes(1)
|
|
expect(popup.document.write.mock.calls[0][0]).toContain('Antoniana')
|
|
expect(popup.document.close).toHaveBeenCalledTimes(1)
|
|
expect(popup.print).not.toHaveBeenCalled()
|
|
|
|
listeners.load()
|
|
expect(popup.print).toHaveBeenCalledTimes(1)
|
|
})
|
|
})
|