File: ValidationMessageStoreTest.cs
Web Access
Project: src\src\Components\Forms\test\Microsoft.AspNetCore.Components.Forms.Tests.csproj (Microsoft.AspNetCore.Components.Forms.Tests)
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
 
namespace Microsoft.AspNetCore.Components.Forms;
 
public class ValidationMessageStoreTest
{
    [Fact]
    public void CannotUseNullEditContext()
    {
        var ex = Assert.Throws<ArgumentNullException>(() => new ValidationMessageStore(null));
        Assert.Equal("editContext", ex.ParamName);
    }
 
    [Fact]
    public void CanCreateForEditContext()
    {
        new ValidationMessageStore(new EditContext(new object()));
    }
 
    [Fact]
    public void CanAddMessages()
    {
        // Arrange
        var messages = new ValidationMessageStore(new EditContext(new object()));
        var field1 = new FieldIdentifier(new object(), "field1");
        var field2 = new FieldIdentifier(new object(), "field2");
        var field3 = new FieldIdentifier(new object(), "field3");
 
        // Act
        messages.Add(field1, "Field 1 message 1");
        messages.Add(field1, "Field 1 message 2");
        messages.Add(field2, "Field 2 message 1");
 
        // Assert
        Assert.Equal(new[] { "Field 1 message 1", "Field 1 message 2" }, messages[field1]);
        Assert.Equal(new[] { "Field 2 message 1" }, messages[field2]);
        Assert.Empty(messages[field3]);
    }
 
    [Fact]
    public void CanAddMessagesMultiple()
    {
        // Arrange
        var messages = new ValidationMessageStore(new EditContext(new object()));
        var field1 = new FieldIdentifier(new object(), "field1");
        var entries = new[] { "A", "B", "C" };
 
        // Act
        messages.Add(field1, entries);
 
        // Assert
        Assert.Equal(entries, messages[field1]);
    }
 
    [Fact]
    public void CanClearMessagesForSingleField()
    {
        // Arrange
        var messages = new ValidationMessageStore(new EditContext(new object()));
        var field1 = new FieldIdentifier(new object(), "field1");
        var field2 = new FieldIdentifier(new object(), "field2");
        messages.Add(field1, "Field 1 message 1");
        messages.Add(field1, "Field 1 message 2");
        messages.Add(field2, "Field 2 message 1");
 
        // Act
        messages.Clear(field1);
 
        // Assert
        Assert.Empty(messages[field1]);
        Assert.Equal(new[] { "Field 2 message 1" }, messages[field2]);
    }
 
    [Fact]
    public void CanClearMessagesForAllFields()
    {
        // Arrange
        var messages = new ValidationMessageStore(new EditContext(new object()));
        var field1 = new FieldIdentifier(new object(), "field1");
        var field2 = new FieldIdentifier(new object(), "field2");
        messages.Add(field1, "Field 1 message 1");
        messages.Add(field2, "Field 2 message 1");
 
        // Act
        messages.Clear();
 
        // Assert
        Assert.Empty(messages[field1]);
        Assert.Empty(messages[field2]);
    }
}