public async Task GetItemsFromCart_WhenCalled_WithNoItems_ShouldEventually_ReturnServiceError() { var expected = Some(PagedResult <CartItem> .CreateEmptyResult()); var repositoryMock = new Mock <IRepository <CartItem> >(); repositoryMock.Setup(mock => mock.GetAll(It.IsAny <int>(), It.IsAny <int>())) .Returns(expected); var sut = _fixture.Initialize(repositoryMock.Object); var currPage = 0; var pageSize = 40; await match(sut.GetItemsFromCart(currPage, pageSize), Right : r => Assert.Equal(expected, r), Left : _ => Assert.False(true, "Should't get here!") ); repositoryMock.Verify( mock => mock.GetAll( It.Is <int>(num => num == currPage), It.Is <int>(num => num == pageSize)), Times.Once() ); }
public EitherAsync <Exception, Option <PagedResult <CartItem> > > GetAll( int pageNumber = 0, int pageSize = 200 ) => match(_dbClient.GetDocumentsAsync(pageNumber, pageSize), Some: items => { var totalCount = items.Count(); var totalPages = (long)Math.Ceiling((double)(totalCount / pageSize)); var collection = new PagedResult <CartItem>(items, totalCount, totalPages, pageNumber + 1); return(Right <Exception, Option <PagedResult <CartItem> > >(Some(collection))); }, None: () => Right <Exception, Option <PagedResult <CartItem> > >(Some(PagedResult <CartItem> .CreateEmptyResult())), Fail: ex => Left <Exception, Option <PagedResult <CartItem> > >(ex) ).ToAsync();
public EitherAsync <ServiceError, PagedResult <CartItem> > GetItemsFromCart( int currentPage = 0, int pageSize = 40 ) => match(Repository.GetAll(currentPage, pageSize), Right: option => match(option, Some: items => Right <ServiceError, PagedResult <CartItem> >(items), None: () => Right <ServiceError, PagedResult <CartItem> >(PagedResult <CartItem> .CreateEmptyResult())), Left: ex => Left <ServiceError, PagedResult <CartItem> >(new ServiceError(ex.Message, ServiceErrorCode.UnknownException)) ).ToAsync();