public void Should_not_replace_formatter_if_types_are_different_and_asked_not_to_replace()
        {
            // Arrange
            var formatter = new HealthStatusTextOutputFormatter(new HealthTextOptions {
                Encoding = Encoding.BigEndianUnicode
            });
            var builder = new HealthBuilder()
                          .OutputHealth.Using(formatter)
                          .OutputHealth.Using <HealthStatusJsonOutputFormatter>(false);

            // Act
            var health = builder.Build();

            // Assert
            health.OutputHealthFormatters.Count.Should().Be(2);
        }
        /// <summary>
        ///     Add the <see cref="IHealthOutputFormatter" /> allowing health checks to optionally be reported as plain text.
        /// </summary>
        /// <param name="healthFormattingBuilder">
        ///     The <see cref="IHealthOutputFormattingBuilder" /> used to configure formatting
        ///     options.
        /// </param>
        /// <param name="setupAction">The plain text formatting options to use.</param>
        /// <returns>
        ///     An <see cref="IHealthBuilder" /> that can be used to further configure App Metrics Health.
        /// </returns>
        public static IHealthBuilder AsPlainText(
            this IHealthOutputFormattingBuilder healthFormattingBuilder,
            Action <HealthTextOptions> setupAction = null)
        {
            if (healthFormattingBuilder == null)
            {
                throw new ArgumentNullException(nameof(healthFormattingBuilder));
            }

            var options = new HealthTextOptions();

            setupAction?.Invoke(options);

            var formatter = new HealthStatusTextOutputFormatter();

            return(healthFormattingBuilder.Using(formatter));
        }
        public void Can_keep_existing_formatter_if_registered_more_than_once()
        {
            // Arrange
            var formatter = new HealthStatusTextOutputFormatter(new HealthTextOptions {
                Encoding = Encoding.BigEndianUnicode
            });
            var builder = new HealthBuilder()
                          .OutputHealth.Using(formatter)
                          .OutputHealth.Using <HealthStatusTextOutputFormatter>(false);

            // Act
            var health = builder.Build();

            // Assert
            health.OutputHealthFormatters.Count.Should().Be(1);
            health.OutputHealthFormatters.First().Should().BeSameAs(formatter);
        }