public async Task ShouldIgnoreThePageIfItsExplicitlyStatedAsync()
        {
            // Arrange
            var pageCallbacks = new List <int>();
            var mockClient    = new Mock <IEdubaseClient>();
            var sut           = new EstablishmentClient(mockClient.Object);

            mockClient.Setup(x => x.FindEstablishmentsAsync(It.IsAny <FindEstablishmentsRequest>())).Returns(GetReponse(2))
            .Callback <FindEstablishmentsRequest>(x => pageCallbacks.Add(x.Filter.Page));

            // Act
            await sut.FindEstablishmentsAsync(new EstablishmentFilter { Page = 1 });

            // Assert
            mockClient.Verify(x => x.FindEstablishmentsAsync(It.IsAny <FindEstablishmentsRequest>()), Times.Exactly(2));
            CollectionAssert.Contains(pageCallbacks, 0);
            CollectionAssert.Contains(pageCallbacks, 1);
        }
        public void ShouldRequestMultiplePagesIfThePageCountIsGreaterThanOne()
        {
            // Arrange
            int pages         = 2;
            var pageCallbacks = new List <int>();
            var mockClient    = new Mock <IEdubaseClient>();
            var sut           = new EstablishmentClient(mockClient.Object);

            mockClient.Setup(x => x.FindEstablishments(It.IsAny <EstablishmentFilter>(), out pages)).Returns(new EstablishmentList())
            .Callback <EstablishmentFilter, int>((x, y) => pageCallbacks.Add(x.Page));

            // Act
            sut.FindEstablishments().ToList();

            // Assert
            mockClient.Verify(x => x.FindEstablishments(It.IsAny <EstablishmentFilter>(), out pages), Times.Exactly(2));
            CollectionAssert.Contains(pageCallbacks, 0);
            CollectionAssert.Contains(pageCallbacks, 1);
        }
        public void ShouldRequestMultiplePagesAsyncIfThePageCountIsGreaterThanOne()
        {
            // Arrange
            var pageCallbacks = new List <int>();
            var mockClient    = new Mock <IEdubaseClient>();
            var sut           = new EstablishmentClient(mockClient.Object);

            mockClient.Setup(x => x.FindEstablishmentsAsync(It.IsAny <FindEstablishmentsRequest>())).Returns(GetReponse(2))
            .Callback <FindEstablishmentsRequest>(x => pageCallbacks.Add(x.Filter.Page));

            // Act
            var task = sut.FindEstablishmentsAsync();

            Task.WaitAll(task);

            // Assert
            mockClient.Verify(x => x.FindEstablishmentsAsync(It.IsAny <FindEstablishmentsRequest>()), Times.Exactly(2));
            CollectionAssert.Contains(pageCallbacks, 0);
            CollectionAssert.Contains(pageCallbacks, 1);
        }
        public void ShouldIgnoreThePageIfItsExplicitlyStated()
        {
            // Arrange
            int pages         = 2;
            var pageCallbacks = new List <int>();
            var mockClient    = new Mock <IEdubaseClient>();
            var sut           = new EstablishmentClient(mockClient.Object);

            mockClient.Setup(x => x.FindEstablishments(It.IsAny <EstablishmentFilter>(), out pages)).Returns(new EstablishmentList())
            .Callback <EstablishmentFilter, int>((x, y) => pageCallbacks.Add(x.Page));
            var filter = new EstablishmentFilter {
                Page = 1
            };

            // Act
            sut.FindEstablishments(filter).ToList();

            // Assert
            mockClient.Verify(x => x.FindEstablishments(It.IsAny <EstablishmentFilter>(), out pages), Times.Exactly(2));
            CollectionAssert.Contains(pageCallbacks, 0);
            CollectionAssert.Contains(pageCallbacks, 1);
        }