/// <summary>
        /// Creates a well formed <see cref="PagedEnumerableNavigation"/> object that can be used without throwing exceptions.
        /// </summary>
        /// <returns>A well formed <see cref="PagedEnumerableNavigation"/> object.</returns>
        internal static PagedEnumerableNavigation WellFormed()
        {
            PagedEnumerableNavigation navigation;

            navigation = PagedEnumerableNavigationBuilder.Create()
                         .WithFirstPageNumber(0)
                         .WithCurrentPageNumber(1)
                         .WithLastPageNumber(1)
                         .Build();
            return(navigation);
        }
Beispiel #2
0
        public void Given_a_positive_input_When_WithCurrentPageNumber_is_called_Then_CurrentPageNumber_should_equal_input()
        {
            // Arrange.
            int input   = 1;
            var builder = PagedEnumerableNavigationBuilder.Create();

            // Act.
            builder = builder.WithCurrentPageNumber(input);

            // Assert.
            builder.CurrentPageNumber.Should().Be(input);
        }
Beispiel #3
0
        public void Given_no_inputs_When_Create_is_called_Then_defaults_are_set()
        {
            // Arrange.
            PagedEnumerableNavigationBuilder builder;

            // Act.
            builder = PagedEnumerableNavigationBuilder.Create();

            // Assert.
            builder.FirstPageNumber.Should().Be(0);
            builder.CurrentPageNumber.Should().Be(0);
            builder.LastPageNumber.Should().Be(0);
        }
        public void Given_a_null_builder_When_Create_is_called_Then_an_ArgumentNullException_should_be_thrown()
        {
            // Arrange.
            PagedEnumerableNavigationBuilder builder = null;

            // Act.
            Action testCode = () => PagedEnumerableNavigation.Create(builder);

            // Assert.
            testCode.Should()
            .Throw <ArgumentNullException>()
            .WithMessage("*cannot be null*builder*");
        }
Beispiel #5
0
        public void Given_a_negative_input_When_WithLastPageNumber_is_called_Then_an_ArgumentOutOfRangeException_should_be_thrown()
        {
            // Arrange.
            int input   = -1;
            var builder = PagedEnumerableNavigationBuilder.Create();

            // Act.
            Action testCode = () => builder.WithLastPageNumber(input);

            // Assert.
            testCode
            .Should()
            .Throw <ArgumentOutOfRangeException>()
            .WithMessage("*lastPageNumber cannot be negative*");
        }
        public void Given_CurrentPageNumber_is_equal_to_FirstPageNumber_Then_HasPreviousPage_should_be_false()
        {
            // Arrange.
            int firstPageNumber   = 0;
            int currentPageNumber = 0;
            int lastPageNumber    = 0;

            var navigation = PagedEnumerableNavigationBuilder
                             .Create()
                             .WithFirstPageNumber(firstPageNumber)
                             .WithCurrentPageNumber(currentPageNumber)
                             .WithLastPageNumber(lastPageNumber)
                             .Build();

            // Assert.
            navigation.HasPreviousPage.Should().BeFalse();
        }
        public void Given_a_builder_with_CurrentPageNumber_greater_than_LastPageNumber_When_Create_is_called_Then_an_ArgumentOutOfRangeException_should_be_thrown()
        {
            // Arrange.
            var builder = PagedEnumerableNavigationBuilder
                          .Create()
                          .WithFirstPageNumber(0)
                          .WithCurrentPageNumber(2)
                          .WithLastPageNumber(1);

            // Act.
            Action testCode = () => PagedEnumerableNavigation.Create(builder);

            // Assert.
            testCode.Should()
            .Throw <ArgumentOutOfRangeException>()
            .WithMessage("*CurrentPageNumber* must be less than *LastPageNumber*");
        }
        public void Given_CurrentPageNumber_is_less_than_LastPageNumber_Then_HasNextPage_should_be_true()
        {
            // Arrange.
            int firstPageNumber   = 0;
            int currentPageNumber = 1;
            int lastPageNumber    = 2;

            var navigation = PagedEnumerableNavigationBuilder
                             .Create()
                             .WithFirstPageNumber(firstPageNumber)
                             .WithCurrentPageNumber(currentPageNumber)
                             .WithLastPageNumber(lastPageNumber)
                             .Build();

            // Assert.
            navigation.HasNextPage.Should().BeTrue();
        }
        public void Given_CurrentPageNumber_is_equal_to_LastPageNumber_Then_NextPageNumber_should_be_null()
        {
            // Arrange.
            int firstPageNumber   = 0;
            int currentPageNumber = 0;
            int lastPageNumber    = 0;

            var navigation = PagedEnumerableNavigationBuilder
                             .Create()
                             .WithFirstPageNumber(firstPageNumber)
                             .WithCurrentPageNumber(currentPageNumber)
                             .WithLastPageNumber(lastPageNumber)
                             .Build();

            // Assert.
            navigation.NextPageNumber.Should().BeNull();
        }
        public void Given_CurrentPageNumber_is_less_than_LastPageNumber_Then_NextPageNumber_should_be_CurrentPageNumber_plus_one()
        {
            // Arrange.
            int firstPageNumber          = 0;
            int currentPageNumber        = 1;
            int lastPageNumber           = 2;
            int currentPageNumberPlusOne = currentPageNumber + 1;

            var navigation = PagedEnumerableNavigationBuilder
                             .Create()
                             .WithFirstPageNumber(firstPageNumber)
                             .WithCurrentPageNumber(currentPageNumber)
                             .WithLastPageNumber(lastPageNumber)
                             .Build();

            // Assert.
            navigation.NextPageNumber.Should().Be(currentPageNumberPlusOne);
        }
        public void Given_CurrentPageNumber_is_greater_than_FirstPageNumber_Then_PreviousPageNumber_should_be_CurrentPageNumber_minus_one()
        {
            // Arrange.
            int firstPageNumber           = 0;
            int currentPageNumber         = 1;
            int lastPageNumber            = 1;
            int currentPageNumberMinusOne = currentPageNumber - 1;

            var navigation = PagedEnumerableNavigationBuilder
                             .Create()
                             .WithFirstPageNumber(firstPageNumber)
                             .WithCurrentPageNumber(currentPageNumber)
                             .WithLastPageNumber(lastPageNumber)
                             .Build();

            // Assert.
            navigation.PreviousPageNumber.Should().Be(currentPageNumberMinusOne);
        }
Beispiel #12
0
        public void Given_valid_inputs_When_Build_is_called_Then_a_matching_PagedEnumerableNavigation_object_should_be_created()
        {
            // Arrange.
            int firstPageNumber   = 0;
            int currentPageNumber = 1;
            int lastPageNumber    = 2;
            PagedEnumerableNavigation navigation;

            // Act.
            navigation = PagedEnumerableNavigationBuilder
                         .Create()
                         .WithFirstPageNumber(firstPageNumber)
                         .WithCurrentPageNumber(currentPageNumber)
                         .WithLastPageNumber(lastPageNumber)
                         .Build();

            // Assert.
            navigation.FirstPageNumber.Should().Be(firstPageNumber);
            navigation.CurrentPageNumber.Should().Be(currentPageNumber);
            navigation.LastPageNumber.Should().Be(lastPageNumber);
        }
        public void Given_valid_input_When_WithNavigation_is_called_Then_Navigation_will_be_set()
        {
            // Arrange.
            PagedEnumerableNavigation validInput;

            validInput = PagedEnumerableNavigationBuilder.Create()
                         .WithCurrentPageNumber(1)
                         .WithLastPageNumber(10)
                         .Build();

            PagedEnumerableMetadataBuilder builder = PagedEnumerableMetadataBuilder.Create();
            PagedEnumerableMetadata        metadata;

            // Act.
            metadata = builder.WithNavigation(validInput)
                       .Build();

            // Assert.
            metadata.Navigation.Should()
            .BeEquivalentTo(validInput);
        }