test-media-status.ts 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. import { and, desc, eq, sql } from 'drizzle-orm';
  2. import { getMediaStatus } from '../src/actions/media';
  3. import { db } from '../src/db';
  4. import { media } from '../src/db/schema/media';
  5. async function runTest() {
  6. console.log('Testing media status lookup...');
  7. const [latestCompletedMedia] = await db
  8. .select()
  9. .from(media)
  10. .where(and(eq(media.status, 'completed'), sql`${media.metadata}->>'hlsPath' is not null`))
  11. .orderBy(desc(media.updatedAt))
  12. .limit(1);
  13. if (!latestCompletedMedia) {
  14. console.error('No completed media with HLS output found. Run npm run test:media-pipeline first.');
  15. process.exit(1);
  16. }
  17. const status = await getMediaStatus(latestCompletedMedia.id);
  18. if (!status) {
  19. console.error('getMediaStatus returned null.');
  20. process.exit(1);
  21. }
  22. console.log('Media ID:', status.id);
  23. console.log('Status:', status.status);
  24. console.log('HLS Path:', status.hlsPath);
  25. console.log('HLS URL generated:', Boolean(status.hlsUrl));
  26. if (status.status !== 'completed' || !status.hlsPath || !status.hlsUrl) {
  27. console.error('Media status response is missing completed playback data.');
  28. process.exit(1);
  29. }
  30. console.log('Media status lookup passed.');
  31. process.exit(0);
  32. }
  33. runTest().catch((error) => {
  34. console.error('Test failed with error:', error);
  35. process.exit(1);
  36. });