From 16bd931a93a0283f2b7940daa71831d13bdca9af Mon Sep 17 00:00:00 2001
From: dangered wolf <d@ngeredwolf.me>
Date: Sat, 13 Aug 2022 02:35:51 -0400
Subject: [PATCH] Added multi-video API test

---
 test/index.test.ts | 62 ++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 62 insertions(+)

diff --git a/test/index.test.ts b/test/index.test.ts
index 4c89cd7..8923b8e 100644
--- a/test/index.test.ts
+++ b/test/index.test.ts
@@ -121,6 +121,7 @@ test('API fetch video Tweet', async () => {
   expect(video.thumbnail_url).toEqual('https://pbs.twimg.com/media/C9t-btLVoAEqZI1.jpg');
   expect(video.width).toEqual(1596);
   expect(video.height).toEqual(1600);
+  expect(video.duration).toEqual(65.667);
   expect(video.format).toEqual('video/mp4');
   expect(video.type).toEqual('video');
 });
@@ -179,3 +180,64 @@ test('API fetch multi-photo Tweet', async () => {
     'https://mosaic.fxtwitter.com/webp/1554870933449482240/FZQCeMmXwAAOJTt/FZQCl-lWIAMtoW9/FZQCsQPX0AIbY6H/FZQCxmLXEAMST4q'
   );
 });
+
+test('API fetch multi-video Tweet', async () => {
+  const result = await cacheWrapper(
+    new Request('https://api.fxtwitter.com/dangeredwolf/status/1557914172763127808', {
+      method: 'GET',
+      headers: botHeaders
+    })
+  );
+  expect(result.status).toEqual(200);
+  const response = (await result.json()) as APIResponse;
+  expect(response).toBeTruthy();
+  expect(response.code).toEqual(200);
+  expect(response.message).toEqual('OK');
+
+  const tweet = response.tweet as APITweet;
+  expect(tweet).toBeTruthy();
+  expect(tweet.url).toEqual(
+    'https://twitter.com/dangeredwolf/status/1557914172763127808'
+  );
+  expect(tweet.id).toEqual('1557914172763127808');
+  expect(tweet.text).toEqual('');
+  expect(tweet.author.screen_name?.toLowerCase()).toEqual('dangeredwolf');
+  expect(tweet.author.name).toBeTruthy();
+  expect(tweet.author.avatar_url).toBeTruthy();
+  expect(tweet.author.banner_url).toBeTruthy();
+  expect(tweet.author.avatar_color).toBeTruthy();
+  expect(tweet.twitter_card).toEqual('player');
+  expect(tweet.created_at).toEqual('Fri Aug 12 02:17:38 +0000 2022');
+  expect(tweet.created_timestamp).toEqual(1660270658);
+  expect(tweet.replying_to).toBeNull();
+  expect(tweet.media?.videos).toBeTruthy();
+  const videos = tweet.media?.videos as APIVideo[];
+  expect(videos[0].url).toEqual('https://video.twimg.com/ext_tw_video/1539029945124528130/pu/vid/1662x1080/ZQP4eoQhnGnKcLEb.mp4?tag=14');
+  expect(videos[0].thumbnail_url).toEqual("https://pbs.twimg.com/ext_tw_video_thumb/1539029945124528130/pu/img/6Z1MXMliums60j03.jpg");
+  expect(videos[0].width).toEqual(3548);
+  expect(videos[0].height).toEqual(2304);
+  expect(videos[0].duration).toEqual(37.75);
+  expect(videos[0].format).toEqual('video/mp4');
+  expect(videos[0].type).toEqual('video');
+  expect(videos[1].url).toEqual('https://video.twimg.com/ext_tw_video/1543316856697769984/pu/vid/1920x1080/3fo7b4EnWv2WO8Z1.mp4?tag=14');
+  expect(videos[1].thumbnail_url).toEqual("https://pbs.twimg.com/ext_tw_video_thumb/1543316856697769984/pu/img/eCl67JRWO8r4r8A4.jpg");
+  expect(videos[1].width).toEqual(1920);
+  expect(videos[1].height).toEqual(1080);
+  expect(videos[1].duration).toEqual(71.855);
+  expect(videos[1].format).toEqual('video/mp4');
+  expect(videos[1].type).toEqual('video');
+  expect(videos[2].url).toEqual('https://video.twimg.com/ext_tw_video/1543797953105625088/pu/vid/1920x1080/GHSLxzBrwiDLhLYD.mp4?tag=14');
+  expect(videos[2].thumbnail_url).toEqual("https://pbs.twimg.com/ext_tw_video_thumb/1543797953105625088/pu/img/2eX2QQkd7b2S1YDl.jpg");
+  expect(videos[2].width).toEqual(1920);
+  expect(videos[2].height).toEqual(1080);
+  expect(videos[2].duration).toEqual(22.018);
+  expect(videos[2].format).toEqual('video/mp4');
+  expect(videos[2].type).toEqual('video');
+  expect(videos[3].url).toEqual('https://video.twimg.com/ext_tw_video/1548602342488129536/pu/vid/720x1280/I_D3svYfjBl7_xGS.mp4?tag=14');
+  expect(videos[3].thumbnail_url).toEqual("https://pbs.twimg.com/ext_tw_video_thumb/1548602342488129536/pu/img/V_1u5Nv5BwKBynwv.jpg");
+  expect(videos[3].width).toEqual(720);
+  expect(videos[3].height).toEqual(1280);
+  expect(videos[3].duration).toEqual(25.133);
+  expect(videos[3].format).toEqual('video/mp4');
+  expect(videos[3].type).toEqual('video');
+});
\ No newline at end of file