< Summary

Information
Class: MyNet.Observable.Validation.ValidationLanguageManager
Assembly: MyNet.Observable
File(s): https://raw.githubusercontent.com/sandre58/MyNet/85372080fe102cd9ee155ceab49ae000e7f66103/src/MyNet.Observable/Validation/ValidationLanguageManager.cs
Tag: 323_28699572109
Line coverage
100%
Covered lines: 24
Uncovered lines: 0
Coverable lines: 24
Total lines: 88
Line coverage: 100%
Branch coverage
75%
Covered branches: 3
Total branches: 4
Branch coverage: 75%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
.ctor()100%11100%
GetString(...)50%22100%
AdaptTemplate(...)100%22100%
RegisterCulture(...)100%11100%
Register(...)100%11100%

File(s)

https://raw.githubusercontent.com/sandre58/MyNet/85372080fe102cd9ee155ceab49ae000e7f66103/src/MyNet.Observable/Validation/ValidationLanguageManager.cs

#LineLine coverage
 1// -----------------------------------------------------------------------
 2// <copyright file="ValidationLanguageManager.cs" company="Stéphane ANDRE">
 3// Copyright (c) Stéphane ANDRE. All rights reserved.
 4// </copyright>
 5// -----------------------------------------------------------------------
 6
 7using System;
 8using System.Globalization;
 9using FluentValidation.Resources;
 10using MyNet.Globalization.Culture;
 11using MyNet.Observable.Localization;
 12
 13namespace MyNet.Observable.Validation;
 14
 15/// <summary>
 16/// FluentValidation <see cref="LanguageManager"/> backed by <see cref="ValidationResources"/>.
 17/// </summary>
 18public sealed class ValidationLanguageManager : LanguageManager
 19{
 20    /// <summary>
 21    /// Initializes a new instance of the <see cref="ValidationLanguageManager"/> class.
 22    /// </summary>
 923    public ValidationLanguageManager()
 24    {
 925        RegisterCulture(SupportedCultures.English.TwoLetterISOLanguageName, SupportedCultures.English);
 926        RegisterCulture(SupportedCultures.French.TwoLetterISOLanguageName, SupportedCultures.French);
 927    }
 28
 29    /// <summary>
 30    /// Gets the localized string for the specified resource name and culture.
 31    /// </summary>
 32    /// <param name="resourceName">The name of the resource.</param>
 33    /// <param name="culture">The culture for which to retrieve the resource.</param>
 34    /// <returns>The localized string.</returns>
 19835    private static new string GetString(string resourceName, CultureInfo culture) => ValidationResources.ResourceManager
 36
 37    /// <summary>
 38    /// Adapts a resource template by replacing the standard FluentValidation placeholders with the ones expected by the
 39    /// </summary>
 40    /// <param name="resourceTemplate">The resource template to adapt.</param>
 41    /// <param name="placeholderReplacements">An array of placeholder replacements, where each pair of elements represen
 42    /// <returns>The adapted resource template.</returns>
 43    private static string AdaptTemplate(string resourceTemplate, params string[] placeholderReplacements)
 44    {
 19845        var message = resourceTemplate.Replace("{0}", "{PropertyName}", StringComparison.Ordinal);
 46
 61247        for (var i = 0; i < placeholderReplacements.Length; i += 2)
 48        {
 10849            message = message.Replace(placeholderReplacements[i], placeholderReplacements[i + 1], StringComparison.Ordin
 50        }
 51
 19852        return message;
 53    }
 54
 55    /// <summary>
 56    /// Registers the validation messages for a specific language code and resource culture. This method maps FluentVali
 57    /// </summary>
 58    /// <param name="languageCode">The language code for which to register the validation messages.</param>
 59    /// <param name="resourceCulture">The culture of the resource from which to retrieve the validation messages.</param
 60    private void RegisterCulture(string languageCode, CultureInfo resourceCulture)
 61    {
 1862        Register(languageCode, "NotNullValidator", GetString(nameof(ValidationResources.FieldIsRequired), resourceCultur
 1863        Register(languageCode, "NotEmptyValidator", GetString(nameof(ValidationResources.FieldIsRequired), resourceCultu
 1864        Register(languageCode, "EmailValidator", GetString(nameof(ValidationResources.FieldInvalidEmail), resourceCultur
 1865        Register(languageCode, "MaximumLengthValidator", GetString(nameof(ValidationResources.FieldExceedsMaxLength), re
 1866        Register(languageCode, "MaximumLength_Simple", GetString(nameof(ValidationResources.FieldExceedsMaxLength), reso
 1867        Register(languageCode, "InclusiveBetweenValidator", GetString(nameof(ValidationResources.FieldMustBeBetween), re
 1868        Register(languageCode, "InclusiveBetween_Simple", GetString(nameof(ValidationResources.FieldMustBeBetween), reso
 1869        Register(languageCode, "GreaterThanOrEqualValidator", GetString(nameof(ValidationResources.FieldMustBeGreaterTha
 1870        Register(languageCode, "LessThanOrEqualValidator", GetString(nameof(ValidationResources.FieldMustBeLessThanOrEqu
 1871        Register(languageCode, "GreaterThanValidator", GetString(nameof(ValidationResources.FieldMustBeGreaterThan), res
 1872        Register(languageCode, "LessThanValidator", GetString(nameof(ValidationResources.FieldMustBeLessThan), resourceC
 1873    }
 74
 75    /// <summary>
 76    /// Registers a validation message for a specific language code and validator key, using the provided resource templ
 77    /// </summary>
 78    /// <param name="languageCode">The language code for which to register the validation message.</param>
 79    /// <param name="validatorKey">The key of the validator for which to register the message.</param>
 80    /// <param name="resourceTemplate">The resource template to use for the validation message.</param>
 81    /// <param name="placeholderReplacements">An array of placeholder replacements, where each pair of elements represen
 82    private void Register(string languageCode, string validatorKey, string resourceTemplate, params string[] placeholder
 83    {
 19884        var message = AdaptTemplate(resourceTemplate, placeholderReplacements);
 19885        AddTranslation(languageCode, validatorKey, message);
 19886    }
 87}
 88