< Summary

Information
Class: MyNet.UI.Notifications.ValidationNotificationExtensions
Assembly: MyNet.UI
File(s): https://raw.githubusercontent.com/sandre58/MyNet/85372080fe102cd9ee155ceab49ae000e7f66103/src/MyNet.UI/Notifications/Extensions/ValidationNotificationExtensions.cs
Tag: 323_28699572109
Line coverage
100%
Covered lines: 5
Uncovered lines: 0
Coverable lines: 5
Total lines: 47
Line coverage: 100%
Branch coverage
62%
Covered branches: 5
Total branches: 8
Branch coverage: 62.5%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
TryValidateAndNotify(...)66.66%66100%
GetValidationErrors(...)50%22100%

File(s)

https://raw.githubusercontent.com/sandre58/MyNet/85372080fe102cd9ee155ceab49ae000e7f66103/src/MyNet.UI/Notifications/Extensions/ValidationNotificationExtensions.cs

#LineLine coverage
 1// -----------------------------------------------------------------------
 2// <copyright file="ValidationNotificationExtensions.cs" company="Stéphane ANDRE">
 3// Copyright (c) Stéphane ANDRE. All rights reserved.
 4// </copyright>
 5// -----------------------------------------------------------------------
 6
 7using System.Collections.Generic;
 8using MyNet.Observable;
 9using MyNet.Observable.Behaviors;
 10
 11#pragma warning disable IDE0130
 12namespace MyNet.UI.Notifications;
 13#pragma warning restore IDE0130
 14
 15/// <summary>
 16/// Bridges <see cref="IValidationBehavior"/> with <see cref="INotificationPublisher"/>.
 17/// </summary>
 18public static class ValidationNotificationExtensions
 19{
 20    extension(ObservableObject owner)
 21    {
 22        /// <summary>
 23        /// Validates the object and publishes validation errors when validation fails.
 24        /// </summary>
 25        /// <param name="notificationPublisher">Optional publisher; when null, validation still runs but no notification
 26        /// <param name="errors">Optional explicit errors; when null, uses errors from <see cref="IValidationBehavior"/>
 27        /// <returns><see langword="true"/> when validation succeeds; otherwise <see langword="false"/>.</returns>
 28        public bool TryValidateAndNotify(
 29            INotificationPublisher? notificationPublisher,
 30            IEnumerable<string>? errors = null)
 31        {
 2132            if (owner.Validate())
 1233                return true;
 34
 935            notificationPublisher?.PublishErrors(errors ?? owner.GetValidationErrors());
 36
 937            return false;
 38        }
 39
 40        /// <summary>
 41        /// Gets validation error messages from the registered <see cref="IValidationBehavior"/>, if any.
 42        /// </summary>
 43        public IReadOnlyCollection<string> GetValidationErrors() =>
 944            owner.Behaviors.TryGet<IValidationBehavior>(out var behavior) ? behavior.Errors : [];
 45    }
 46}
 47