exchanger/tests/Exchanger.Tests/BrandingSettingsValidatorTests.cs

104 lines
3.8 KiB
C#
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using Exchanger.Core.Configuration;
using NUnit.Framework;
using System.Linq;
namespace Exchanger.Tests;
[TestFixture]
public sealed class BrandingSettingsValidatorTests
{
[Test]
public void Validate_DefaultBranding_IsValid()
{
BrandingValidationResult result = BrandingSettingsValidator.Validate(new BrandingSettings());
Assert.That(result.IsValid, Is.True);
}
[TestCase(BrandingValidationField.ApplicationName)]
[TestCase(BrandingValidationField.ShortText)]
[TestCase(BrandingValidationField.SupportPhone)]
public void Validate_EmptyRequiredField_IsRejected(BrandingValidationField field)
{
var settings = new BrandingSettings();
SetField(settings, field, " ");
BrandingValidationResult result = BrandingSettingsValidator.Validate(settings);
Assert.That(result.Issues, Has.Some.Property("Field").EqualTo(field));
}
[TestCase(BrandingValidationField.ApplicationName, BrandingSettingsValidator.MaximumApplicationNameLength)]
[TestCase(BrandingValidationField.ShortText, BrandingSettingsValidator.MaximumShortTextLength)]
[TestCase(BrandingValidationField.SupportPhone, BrandingSettingsValidator.MaximumSupportPhoneLength)]
public void Validate_OverMaximumLength_IsRejected(BrandingValidationField field, int maximumLength)
{
var settings = new BrandingSettings();
SetField(settings, field, new string('А', maximumLength + 1));
BrandingValidationResult result = BrandingSettingsValidator.Validate(settings);
Assert.That(result.Issues, Has.Some.Property("Field").EqualTo(field));
}
[Test]
public void Validate_ControlCharacter_IsRejected()
{
var settings = new BrandingSettings { ShortText = "Первая строка\nВторая строка" };
BrandingValidationResult result = BrandingSettingsValidator.Validate(settings);
Assert.That(result.Issues, Has.Some.Property("Field").EqualTo(BrandingValidationField.ShortText));
}
[Test]
public void Validate_EmptyShortText_UsesOwnerFacingCaption()
{
var settings = new BrandingSettings { ShortText = "" };
BrandingValidationResult result = BrandingSettingsValidator.Validate(settings);
string message = result.Issues.Single(issue => issue.Field == BrandingValidationField.ShortText).Message;
Assert.That(message, Does.Contain("Свой текст").And.Not.Contain("Короткий текст"));
}
[Test]
public void Normalize_BrandingCollapsesWhitespaceAndLimitsLength()
{
var settings = new AppSettings
{
Branding = new BrandingSettings
{
ApplicationName = " НОВЫЙ\nАВТОМАТ ",
ShortText = new string('С', BrandingSettingsValidator.MaximumShortTextLength + 10),
SupportPhone = " +7 900 000-00-00 ",
},
};
settings.Normalize();
using (Assert.EnterMultipleScope())
{
Assert.That(settings.Branding.ApplicationName, Is.EqualTo("НОВЫЙ АВТОМАТ"));
Assert.That(settings.Branding.ShortText.Length, Is.EqualTo(BrandingSettingsValidator.MaximumShortTextLength));
Assert.That(settings.Branding.SupportPhone, Is.EqualTo("+7 900 000-00-00"));
}
}
private static void SetField(BrandingSettings settings, BrandingValidationField field, string value)
{
switch (field)
{
case BrandingValidationField.ApplicationName:
settings.ApplicationName = value;
break;
case BrandingValidationField.ShortText:
settings.ShortText = value;
break;
case BrandingValidationField.SupportPhone:
settings.SupportPhone = value;
break;
}
}
}