public void GetFakes_Publishers_ShouldNotContainNullsAndOnlyHaveUniqueItems(int quantity)
        {
            // Arrange & Act
            var publishers = BooksBuilder.GetFakes(quantity).Select(book => book.Publisher);

            // Assert
            publishers.Should().NotContainNulls().And.OnlyHaveUniqueItems();
        }
        public void GetFakes_QuantityLessThanZero_ShouldThrowArgumentException(int quantity)
        {
            // Arrange & Act
            Action act = () => BooksBuilder.GetFakes(quantity);

            // Assert
            act.ShouldThrow <ArgumentOutOfRangeException>();
        }
        public void GetFakes_InStockFlags_ShouldNotContainNullsAndOnlyContainTrueOrFalse(int quantity)
        {
            // Arrange & Act
            var instockFlags = BooksBuilder.GetFakes(quantity).Select(book => book.InStock);

            // Assert
            instockFlags.Should().NotContainNulls().And.OnlyContain(value => value == true || value == false);
        }
        public void GetFakes_Descriptions_ShouldNotContainNullsAndOnlyHaveUniqueItems(int quantity)
        {
            // Arrange & Act
            var descriptions = BooksBuilder.GetFakes(quantity).Select(book => book.Description);

            // Assert
            descriptions.Should().NotContainNulls().And.OnlyHaveUniqueItems();
        }
        public void GetFakes_Pages_ShouldBeOfLenghtLessThanAThousand(int quantity)
        {
            // Arrange & Act
            var pages = BooksBuilder.GetFakes(quantity).Select(book => book.Pages);

            // Assert
            pages.All(length => length < 1000);
        }
        public void GetFakes_Publications_ShouldNotContainNullsAndBeBetweenStartAndToday(int quantity)
        {
            // Arrange
            var start = 1.January(1900);

            // Act
            var books = BooksBuilder.GetFakes(quantity);

            // Assert
            books.Should().NotContainNulls();
            books.All(book => book.Publication > start && book.Publication < DateTime.Today);
        }