Beispiel #1
0
        public void WhenPageRangeRequested_ItsDataIsReturned(PageRangeDto pageRange, int expectedCardsCount)
        {
            var sut                = new CardsInfoRetriever();
            var maxPageProvider    = Mock.Of <IMaxPageProvider>(provider => provider.GetMaxPage() == 3);
            var cardDetailsFetcher = Mock.Of <ICardDetailsFetcher>(fetcher => fetcher.GetCardDetails(1) == new List <CardInfoDto> {
                new CardInfoDto(), new CardInfoDto()
            } &&
                                                                   fetcher.GetCardDetails(2) == new List <CardInfoDto> {
                new CardInfoDto()
            } &&
                                                                   fetcher.GetCardDetails(3) == new List <CardInfoDto> {
                new CardInfoDto(), new CardInfoDto(), new CardInfoDto()
            });

            Assert.AreEqual(expectedCardsCount, sut.GetCardsInfo(maxPageProvider, cardDetailsFetcher, pageRange).Count);
        }
Beispiel #2
0
        public List <CardInfoDto> GetCardsInfo(IMaxPageProvider maxPageProvider, ICardDetailsFetcher cardDetailsFetcher, PageRangeDto pageRange)
        {
            if (maxPageProvider == null)
            {
                throw new ArgumentNullException(nameof(maxPageProvider));
            }
            if (cardDetailsFetcher == null)
            {
                throw new ArgumentNullException(nameof(cardDetailsFetcher));
            }
            if (pageRange == null)
            {
                throw new ArgumentNullException(nameof(pageRange));
            }

            int actualMaxPage = maxPageProvider.GetMaxPage();
            int minRange      = pageRange.Min.HasValue && pageRange.Min.Value >= MinPage ? pageRange.Min.Value : MinPage;
            int maxRange      = pageRange.Max.HasValue && pageRange.Max.Value <= actualMaxPage ? pageRange.Max.Value : actualMaxPage;

            var cards = new List <CardInfoDto>();

            for (int pageNumber = minRange; pageNumber <= maxRange; pageNumber++)
            {
                cards.AddRange(cardDetailsFetcher.GetCardDetails(pageNumber));
            }

            return(cards);
        }