public async Task DownloadDataAndTransformUnitTest()

in Facebook/ConnectorTest/JobProcessorFBTest.cs [49:86]


        public async Task DownloadDataAndTransformUnitTest()
        {
            ConnectorTask taskInfo = new ConnectorTask();
            taskInfo.StartTime = DateTime.Parse("2018-01-09");
            taskInfo.EndTime = DateTime.Parse("2018-01-11");
            taskInfo.JobId = "job1";
            taskInfo.TaskId = "task1";
            taskInfo.TenantId = "tenant1";
            
            var mockDownloader = new Mock<IDownloader>();
            mockDownloader.SetupSequence(x => x.GetWebContent<PostListFB, ErrorsFB>(It.IsAny<string>(), It.IsAny<AuthenticationHeaderValue>()))
                .ReturnsAsync(JsonConvert.DeserializeObject<PostListFB>(File.ReadAllText(@"FakeData\FakeData.json")))
                .ReturnsAsync(JsonConvert.DeserializeObject<PostListFB>("{\"data\": []}"));
            
            mockDownloader.Setup(x => x.DownloadFileAsBase64EncodedString(It.IsAny<string>()))
                .ReturnsAsync(Convert.ToBase64String(File.ReadAllBytes(@"FakeData\FakeImage.jpg")));

            FakeUploader uploader = new FakeUploader();
            JobProcessorFB job = new JobProcessorFB(mockDownloader.Object, uploader);

            string sourceInfo = "{\"PageId\":\"123\",\"AccessToken\":\"Fake\",\"PageName\":\"Fake123\"}";

            await job.FetchData(taskInfo, sourceInfo);

            // Assert 1 item of each type - post, comment, reply
            int assertItemsCount = 0;
            foreach (var entry in uploader.fakeStorage)
            {
                if (File.Exists($@"FakeData\{entry.Key}.json"))
                {
                    assertItemsCount++;
                    string expectedJson = File.ReadAllText($@"FakeData\{entry.Key}.json");
                    Item expectedItem = JsonConvert.DeserializeObject<Item>(expectedJson);
                    AssertItemsAreEqual(expectedItem, entry.Value);
                }
            }
            Assert.AreEqual(assertItemsCount, 3);
        }