< Summary - ZhEaIsNsAaBn.Libraries coverage (affected: 23 packages)

Information
Class: ZhEaIsNsAaBn.IntegrationTestingBases.CustomWebApplicationFactory<T>
Assembly: ZhEaIsNsAaBn.IntegrationTestingBases
File(s): /home/runner/work/ZhEaIsNsAaBn.Libraries.V1/ZhEaIsNsAaBn.Libraries.V1/src/TestPackages/ZhEaIsNsAaBn.IntegrationTestingBases/Factories/CustomWebApplicationFactory.cs
Line coverage
100%
Covered lines: 23
Uncovered lines: 0
Coverable lines: 23
Total lines: 64
Line coverage: 100%
Branch coverage
100%
Covered branches: 2
Total branches: 2
Branch coverage: 100%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
.ctor(...)100%22100%
ConfigureWebHost(...)100%11100%

File(s)

/home/runner/work/ZhEaIsNsAaBn.Libraries.V1/ZhEaIsNsAaBn.Libraries.V1/src/TestPackages/ZhEaIsNsAaBn.IntegrationTestingBases/Factories/CustomWebApplicationFactory.cs

#LineLine coverage
 1#region Usings
 2using Microsoft.AspNetCore.Hosting;
 3#endregion
 4
 5namespace ZhEaIsNsAaBn.IntegrationTestingBases;
 6
 7/// <summary>
 8/// <see cref="WebApplicationFactory{TEntryPoint}"/> that runs the app under test in a given environment and overrides i
 9/// connection string and any other configuration values.
 10/// </summary>
 11/// <typeparam name="TProgram">The <c>Program</c> class of the web application under test.</typeparam>
 12public class CustomWebApplicationFactory< TProgram > : WebApplicationFactory<TProgram>
 13    where TProgram : class
 14{
 15    /// <summary>The connection-string name used when none is given: <c>DefaultConnection</c>.</summary>
 16    public const string DefaultConnectionStringName = "DefaultConnection";
 17
 18
 19    private readonly Dictionary<string, string> _additionalConfiguration;
 20    private readonly string                     _connectionString;
 21    private readonly string                     _connectionStringName;
 22    private readonly string                     _environment;
 23
 24
 25    /// <summary>Creates the factory.</summary>
 26    /// <param name="connectionString">Connection string for the app's database. Not applied when empty.</param>
 27    /// <param name="environment">Hosting environment name. Default: <c>Testing</c>.</param>
 28    /// <param name="additionalConfiguration">Extra configuration values (key = configuration path). Default: none.</par
 29    /// <param name="connectionStringName">
 30    /// The name the app reads with <c>GetConnectionString( name )</c>; the value is set at <c>ConnectionStrings:{name}<
 31    /// Default: <see cref="DefaultConnectionStringName"/>.
 32    /// </param>
 1533    public CustomWebApplicationFactory(
 1534            string                      connectionString,
 1535            string                      environment             = "Testing",
 1536            Dictionary<string, string>? additionalConfiguration = null,
 1537            string                      connectionStringName    = DefaultConnectionStringName
 1538        )
 39    {
 1540        _connectionString        = connectionString;
 1541        _environment             = environment;
 1542        _additionalConfiguration = additionalConfiguration ?? [];
 1543        _connectionStringName    = connectionStringName;
 1544    }
 45
 46
 47    /// <inheritdoc />
 48    protected override void ConfigureWebHost( IWebHostBuilder builder )
 49    {
 1550        builder.UseEnvironment( _environment );
 51
 52
 1553        builder.ConfigureAppConfiguration( ( _, config ) =>
 1554        {
 1555            var values = new Dictionary<string, string?>( _additionalConfiguration! );
 1556
 1557
 1558            if ( !string.IsNullOrEmpty( _connectionString ) ) { values[ $"ConnectionStrings:{_connectionStringName}" ] =
 1559
 1560
 1561            config.AddInMemoryCollection( values );
 1562        } );
 1563    }
 64}