diff --git a/tests/integration/server.test.js b/tests/integration/server.test.js index 8436aac..3530653 100644 --- a/tests/integration/server.test.js +++ b/tests/integration/server.test.js @@ -4,11 +4,12 @@ import { tmpdir } from 'os' import { join } from 'path' import { createApp } from '../../server.js' -// Usiamo una dist temporanea con file marcatori, così il test non dipende da -// una build reale ed è deterministico. +// Usiamo una dist e una cartella spot temporanee con file marcatori, così il +// test non dipende da una build reale ed è deterministico. let server let baseUrl let distDir +let spotDir beforeAll(async () => { distDir = mkdtempSync(join(tmpdir(), 'segnapunti-dist-')) @@ -16,7 +17,12 @@ beforeAll(async () => { writeFileSync(join(distDir, 'controller.html'), 'CONTROLLER_MARKER') writeFileSync(join(distDir, 'app.js'), 'ASSET_MARKER') - const app = createApp(distDir) + spotDir = mkdtempSync(join(tmpdir(), 'segnapunti-spot-')) + writeFileSync(join(spotDir, 'b.mp4'), 'VIDEO_B') + writeFileSync(join(spotDir, 'a.mp4'), 'VIDEO_A') + writeFileSync(join(spotDir, 'note.txt'), 'NON_VIDEO') + + const app = createApp(distDir, spotDir) await new Promise((resolve) => { server = app.listen(0, () => { baseUrl = `http://127.0.0.1:${server.address().port}` @@ -28,6 +34,7 @@ beforeAll(async () => { afterAll(async () => { await new Promise((resolve) => server.close(resolve)) rmSync(distDir, { recursive: true, force: true }) + rmSync(spotDir, { recursive: true, force: true }) }) async function get(path) { @@ -63,4 +70,30 @@ describe('Routing server (server.js)', () => { expect(status).toBe(200) expect(body).toBe('ASSET_MARKER') }) + + it('GET /spot/list elenca i soli .mp4 in ordine alfabetico', async () => { + const res = await fetch(baseUrl + '/spot/list') + expect(res.status).toBe(200) + expect(await res.json()).toEqual(['a.mp4', 'b.mp4']) + }) + + it('serve i video staticamente da /spot/', async () => { + const { status, body } = await get('/spot/a.mp4') + expect(status).toBe(200) + expect(body).toBe('VIDEO_A') + }) + + it('GET /spot/list ritorna [] se la cartella spot non esiste', async () => { + const app = createApp(distDir, join(spotDir, 'inesistente')) + const srv = await new Promise((resolve) => { + const s = app.listen(0, () => resolve(s)) + }) + try { + const res = await fetch(`http://127.0.0.1:${srv.address().port}/spot/list`) + expect(res.status).toBe(200) + expect(await res.json()).toEqual([]) + } finally { + await new Promise((resolve) => srv.close(resolve)) + } + }) })