public async Task NextPage_WhenAlreadyCompleted_ThrowsExceptionAsync() { // arrange A.CallTo(() => _isLastPage(_firstPage)).Returns(true); var iterator = new TwitterPageIterator <ITwitterResult <long>, string>(null, _getNextPage, _extractNextCursor, _isLastPage); // 1st iteration await iterator.NextPageAsync(); // act - assert await Assert.ThrowsAsync <TwitterIteratorAlreadyCompletedException>(async() => await iterator.NextPageAsync()); Assert.Equal("cursor_for_page_2", iterator.NextCursor); Assert.True(iterator.Completed); }
public async Task NextPageFromPage2_ShouldReturnSecondPageAsync() { // arrange var iterator = new TwitterPageIterator <ITwitterResult <long>, string>("cursor_for_page_2", _getNextPage, _extractNextCursor, _isLastPage); // act var result = await iterator.NextPageAsync(); // assert Assert.Equal("cursor_for_page_3", result.NextCursor); Assert.Equal("cursor_for_page_3", iterator.NextCursor); Assert.True(result.IsLastPage); Assert.True(iterator.Completed); Assert.Same(result.Content, _secondPage); }
public async Task NextPage_ReturnsPageFromLambdaAsync() { // arrange var iterator = new TwitterPageIterator <ITwitterResult <long>, string>(null, _getNextPage, _extractNextCursor, _isLastPage); // act var result = await iterator.NextPageAsync(); // assert Assert.Equal("cursor_for_page_2", result.NextCursor); Assert.Equal("cursor_for_page_2", iterator.NextCursor); Assert.False(result.IsLastPage); Assert.False(iterator.Completed); Assert.Same(result.Content, _firstPage); }
public ITwitterPageIterator <ITwitterResult <IIdsCursorQueryResultDTO> > GetFollowerIdsIterator(IGetFollowerIdsParameters parameters, ITwitterRequest request) { var twitterCursorResult = new TwitterPageIterator <ITwitterResult <IIdsCursorQueryResultDTO> >( parameters.Cursor, cursor => { var cursoredParameters = new GetFollowerIdsParameters(parameters) { Cursor = cursor }; return(_userQueryExecutor.GetFollowerIds(cursoredParameters, new TwitterRequest(request))); }, page => page.DataTransferObject.NextCursorStr, page => page.DataTransferObject.NextCursorStr == "0"); return(twitterCursorResult); }
// Friend Ids public ITwitterPageIterator <ITwitterResult <IIdsCursorQueryResultDTO> > GetFriendIdsIterator(IGetFriendIdsParameters parameters, ITwitterRequest request) { var twitterCursorResult = new TwitterPageIterator <ITwitterResult <IIdsCursorQueryResultDTO> >( parameters.Cursor, cursor => { var cursoredParameters = new GetFriendIdsParameters(parameters) { Cursor = cursor }; return(_userQueryExecutor.GetFriendIdsAsync(cursoredParameters, new TwitterRequest(request))); }, page => page.Model.NextCursorStr, page => page.Model.NextCursorStr == "0"); return(twitterCursorResult); }
public ITwitterPageIterator <ITwitterResult <SearchTweetsV2Response>, string> GetSearchTweetsV2Iterator(ISearchTweetsV2Parameters parameters, ITwitterRequest request) { Func <string, Task <ITwitterResult <SearchTweetsV2Response> > > getNext = nextToken => { var cursoredParameters = new SearchTweetsV2Parameters(parameters) { NextToken = nextToken }; return(_searchQueryExecutor.SearchTweetsAsync(cursoredParameters, new TwitterRequest(request))); }; var twitterCursorResult = new TwitterPageIterator <ITwitterResult <SearchTweetsV2Response>, string>( parameters.NextToken, getNext, page => { if (page.Model.Tweets.Length == 0) { return(null); } return(page.Model.SearchMetadata.NextToken); }, page => { if (page.Model.Tweets.Length == 0) { return(true); } return(page.Model.SearchMetadata.NextToken == null); }); return(twitterCursorResult); }