test-media-status.ts 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. import { getMediaStatus } from '../src/actions/media';
  2. import { db } from '../src/db';
  3. import { media } from '../src/db/schema/media';
  4. import { resources } from '../src/db/schema/resource';
  5. import { cleanupMediaRecord } from './helpers/media-cleanup';
  6. async function runTest() {
  7. console.log('Testing media status lookup...');
  8. const suffix = Date.now();
  9. const [resource] = await db.insert(resources).values({
  10. name: `media-status-${suffix}.mp4`,
  11. path: `/media-status/${suffix}.mp4`,
  12. type: 'file',
  13. }).returning();
  14. const [createdMedia] = await db.insert(media).values({
  15. resourceId: resource.id,
  16. filename: `media-status-${suffix}.mp4`,
  17. storageKey: `uploads/media-status-${suffix}.mp4`,
  18. mimeType: 'video/mp4',
  19. size: BigInt(1),
  20. status: 'completed',
  21. metadata: {
  22. hlsPath: `hls/media-status-${suffix}/index.m3u8`,
  23. processedAt: new Date().toISOString(),
  24. },
  25. }).returning();
  26. try {
  27. const status = await getMediaStatus(createdMedia.id);
  28. if (!status) {
  29. throw new Error('getMediaStatus returned null.');
  30. }
  31. console.log('Media ID:', status.id);
  32. console.log('Status:', status.status);
  33. console.log('HLS Path:', status.hlsPath);
  34. console.log('HLS URL generated:', Boolean(status.hlsUrl));
  35. if (status.status !== 'completed' || !status.hlsPath || !status.hlsUrl) {
  36. throw new Error('Media status response is missing completed playback data.');
  37. }
  38. } finally {
  39. await cleanupMediaRecord(createdMedia.id);
  40. }
  41. console.log('Media status lookup passed.');
  42. process.exit(0);
  43. }
  44. runTest().catch((error) => {
  45. console.error('Test failed with error:', error);
  46. process.exit(1);
  47. });