public async Task GetNewStories_Allcached_ReturnsStoriesFromCache() { var cachedIds = new List <int> { 3 }; var result = await _storyProvider.GetNewStories(cachedIds); Assert.That(result, Is.Not.Null); Assert.That(result, Has.Exactly(1).Items); _mockStoryService.Verify(x => x.GetItems(It.IsAny <IEnumerable <int> >()), Times.Never); }
public async Task <IActionResult> NewStories([FromQuery] ApiQueryModel query) { var newStoryIds = await _storyProvider.GetNewStoryIds(); if (newStoryIds == null) { return(BadRequest("Error loading new story list")); } var pageOffset = (query.Page - 1) * query.PageSize; if (pageOffset >= newStoryIds.Count()) { return(BadRequest("Invalid requested range")); } var pageList = newStoryIds.Skip(pageOffset).Take(query.PageSize); var stories = await _storyProvider.GetNewStories(pageList); if (stories == null) { return(BadRequest("Error pulling new stories")); } var paginatedResult = pageList.Select(id => stories.GetValueOrDefault(id)); var currentPage = query.Page; var lastPage = (int)Math.Ceiling((double)newStoryIds.Count() / query.PageSize); var result = new ApiPagedList <Item>( paginatedResult, currentPage, lastPage ); return(Ok(result)); }