public GfyCatVideoUploaderTests()
 {
     DeleteTestFiles();
     _fakeGfyCatApi              = A.Fake <IGfyCatApi>();
     _fakeGfyCatFileDropApi      = A.Fake <IGfyCatFileDropApi>();
     _fakeGfyCatApiConfiguration = A.Fake <IGfyCatApiConfiguration>();
     A.CallTo(() => _fakeGfyCatApiConfiguration.GetUploadTimeoutInMs()).Returns(500);
     A.CallTo(() => _fakeGfyCatApiConfiguration.GetUploadStatusPollingPeriodInMs()).Returns(10);
     _gfyCatVideoUploader = new GfyCatVideoUploader(_fakeGfyCatApi, _fakeGfyCatFileDropApi, _fakeGfyCatApiConfiguration);
 }
        private async Task <string> UploadVideoAndReturnMp4Url(string gfyName)
        {
            Console.WriteLine($"Gfyname: {gfyName}");
            RenameRotatedVideoFileToGfyName(gfyName);
            await UploadVideoToFileDrop(gfyName);

            var task = GetWaitForVideoUploadToCompleteTask(gfyName);

            if (task.Wait(_gfyCatApiConfiguration.GetUploadTimeoutInMs()))
            {
                DeleteVideoFile(gfyName);
                return(await GetMp4UrlForGfyName(gfyName));
            }
            else
            {
                throw new VideoUploadTimeOutException("Timed-out while waiting for video upload and encode to complete");
            }
        }