public Task <string> DownloadStringAsync(string uri) { var match = WorkItemSummaryRequestCheck.Match(uri); if (match.Success && Summaries != null) { string startNumberValue = match.Groups["StartNumber"].Value; int startNumber = startNumberValue == "" ? 0 : Convert.ToInt32(startNumberValue); PagedWorkItemList returnList = new PagedWorkItemList { TotalItems = Summaries.TotalItems }; int countToGet = (startNumber + PageSize > Summaries.WorkItemSummaries.Count) ? Summaries.WorkItemSummaries.Count - startNumber : PageSize; returnList.WorkItemSummaries = Summaries.WorkItemSummaries.GetRange(startNumber, countToGet); return(Task.FromResult(JsonConvert.SerializeObject(returnList))); } else if (WorkItemDetail != null) { return(Task.FromResult(JsonConvert.SerializeObject(WorkItemDetail))); } throw new HttpRequestFailedException("Some reason to fail"); }
public async Task GetWorkItems_DoesNotIncludeFilteredItems() { // Arrange PagedWorkItemList list = BuildPagedList(2); httpClientMock.Summaries = list; httpClientMock.PageSize = 2; httpClientMock.SetupMock(); // Act IReadOnlyList <WorkItemSummary> readerItems = await codePlexReader.GetWorkItemsAsync( id => { if (id == 0) { return(false); } return(true); }); // Assert Assert.True(readerItems.Count() == 1); WorkItemSummary item = readerItems.First(); Assert.True(item.Id == 1); }
public async Task GetWorkItems_SucceedsLessThanOnePage() { // Arrange PagedWorkItemList list = BuildPagedList(2); httpClientMock.Summaries = list; httpClientMock.SetupMock(); // Act IReadOnlyList <WorkItemSummary> readerItems = await codePlexReader.GetWorkItemsAsync(x => true); // Assert VerifyWorkItemsReturnedAreSameAsSetOnMock(readerItems, list); }
public async Task GetWorkItems_PassesIncludeClosedWhenTrue() { // Arrange PagedWorkItemList list = BuildPagedList(6); httpClientMock.Summaries = list; httpClientMock.PageSize = 2; httpClientMock.SetupMock(); // Act IReadOnlyList <WorkItemSummary> readerItems = await codePlexReader.GetWorkItemsAsync(x => true); // Assert httpClientMock.HttpClient.Verify(x => x.DownloadStringAsync("https://TestProject.codeplex.com/project/api/issues?showClosed=True"), Times.Once); httpClientMock.HttpClient.Verify(x => x.DownloadStringAsync("https://TestProject.codeplex.com/project/api/issues?start=2&showClosed=True"), Times.Once); }
private static PagedWorkItemList BuildPagedList(int numberofItems) { PagedWorkItemList pagedWorkItemListReturn = new PagedWorkItemList(); var items = Enumerable.Range(0, numberofItems) .Select( i => new WorkItemSummary { Id = i, Title = $"Some title for {i}" }); pagedWorkItemListReturn.WorkItemSummaries = items.ToList(); pagedWorkItemListReturn.TotalItems = numberofItems; return(pagedWorkItemListReturn); }
private static void VerifyWorkItemsReturnedAreSameAsSetOnMock(IEnumerable <WorkItemSummary> workItems, PagedWorkItemList mockSetItems) { Assert.True(workItems.Count() == mockSetItems.TotalItems); foreach (WorkItemSummary summary in workItems) { WorkItemSummary sentItem = mockSetItems.WorkItemSummaries.Find(x => x.Id == summary.Id); Assert.NotNull(sentItem); Assert.Equal(sentItem.Title, summary.Title); } }