import { getMediaStatus } from '../src/actions/media'; import { db } from '../src/db'; import { media } from '../src/db/schema/media'; import { resources } from '../src/db/schema/resource'; import { cleanupMediaRecord } from './helpers/media-cleanup'; async function runTest() { console.log('Testing media status lookup...'); const suffix = Date.now(); const [resource] = await db.insert(resources).values({ name: `media-status-${suffix}.mp4`, path: `/media-status/${suffix}.mp4`, type: 'file', }).returning(); const [createdMedia] = await db.insert(media).values({ resourceId: resource.id, filename: `media-status-${suffix}.mp4`, storageKey: `uploads/media-status-${suffix}.mp4`, mimeType: 'video/mp4', size: BigInt(1), status: 'completed', metadata: { hlsPath: `hls/media-status-${suffix}/index.m3u8`, processedAt: new Date().toISOString(), }, }).returning(); try { const status = await getMediaStatus(createdMedia.id); if (!status) { throw new Error('getMediaStatus returned null.'); } console.log('Media ID:', status.id); console.log('Status:', status.status); console.log('HLS Path:', status.hlsPath); console.log('HLS URL generated:', Boolean(status.hlsUrl)); if (status.status !== 'completed' || !status.hlsPath || !status.hlsUrl) { throw new Error('Media status response is missing completed playback data.'); } } finally { await cleanupMediaRecord(createdMedia.id); } console.log('Media status lookup passed.'); process.exit(0); } runTest().catch((error) => { console.error('Test failed with error:', error); process.exit(1); });