< Summary

Information
Class: MyNet.UI.Navigation.NavigationRequestBuilder
Assembly: MyNet.UI
File(s): https://raw.githubusercontent.com/sandre58/MyNet/85372080fe102cd9ee155ceab49ae000e7f66103/src/MyNet.UI/Navigation/NavigationRequestBuilder.cs
Tag: 323_28699572109
Line coverage
40%
Covered lines: 8
Uncovered lines: 12
Coverable lines: 20
Total lines: 72
Line coverage: 40%
Branch coverage
37%
Covered branches: 3
Total branches: 8
Branch coverage: 37.5%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
With(...)100%210%
With(...)100%11100%
WithParameter(...)0%2040%
GoAsync(...)100%11100%
NormalizeParameters()75%4483.33%

File(s)

https://raw.githubusercontent.com/sandre58/MyNet/85372080fe102cd9ee155ceab49ae000e7f66103/src/MyNet.UI/Navigation/NavigationRequestBuilder.cs

#LineLine coverage
 1// -----------------------------------------------------------------------
 2// <copyright file="NavigationRequestBuilder.cs" company="Stéphane ANDRE">
 3// Copyright (c) Stéphane ANDRE. All rights reserved.
 4// </copyright>
 5// -----------------------------------------------------------------------
 6
 7using System;
 8using System.Threading;
 9using System.Threading.Tasks;
 10using MyNet.UI.Navigation.Models;
 11
 12namespace MyNet.UI.Navigation;
 13
 14/// <summary>
 15/// Default fluent builder for navigation requests.
 16/// </summary>
 17public sealed class NavigationRequestBuilder(Func<INavigationPage> pageFactory, INavigationService navigationService) : 
 18{
 19    private object? _parameters;
 20
 21    /// <inheritdoc />
 22    public INavigationRequestBuilder With(INavigationParameters? parameters)
 23    {
 024        _parameters = parameters;
 025        return this;
 26    }
 27
 28    /// <inheritdoc />
 29    public INavigationRequestBuilder With(object? parameters)
 30    {
 1231        _parameters = parameters;
 1232        return this;
 33    }
 34
 35    /// <inheritdoc />
 36    public INavigationRequestBuilder WithParameter(string key, object? value)
 37    {
 038        var parameters = _parameters as NavigationParameters;
 39
 040        if (_parameters is null)
 41        {
 042            parameters = new();
 043            _parameters = parameters;
 44        }
 045        else if (parameters is null)
 46        {
 047            parameters = NavigationParameters.From(_parameters);
 48
 049            _parameters = parameters;
 50        }
 51
 052        parameters.Set(key, value);
 053        return this;
 54    }
 55
 56    /// <inheritdoc />
 57    public Task<NavigationResult> GoAsync(CancellationToken cancellationToken = default)
 1258        => navigationService.NavigateToAsync(pageFactory(), NormalizeParameters(), cancellationToken);
 59
 60    /// <summary>
 61    /// Normalizes the current parameter payload into an INavigationParameters instance, if necessary.
 62    /// </summary>
 63    /// <returns>The normalized parameter payload.</returns>
 64    private INavigationParameters? NormalizeParameters()
 1265        => _parameters switch
 1266        {
 667            null => null,
 068            INavigationParameters navigationParameters => navigationParameters,
 669            _ => NavigationParameters.From(_parameters)
 1270        };
 71}
 72