-
Notifications
You must be signed in to change notification settings - Fork 10.9k
Expand file tree
/
Copy pathValidationMessageStoreTest.cs
More file actions
125 lines (104 loc) · 3.93 KB
/
Copy pathValidationMessageStoreTest.cs
File metadata and controls
125 lines (104 loc) · 3.93 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
// 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]);
}
#nullable enable
[Fact]
public void CanAddMessagesUsingExpressionWithNullableProperty()
{
var model = new TestModel();
var editContext = new EditContext(model);
var messages = new ValidationMessageStore(editContext);
messages.Add(() => model.Text, "This value is not valid");
var fieldIdentifier = FieldIdentifier.Create(() => model.Text);
Assert.Equal(new[] { "This value is not valid" }, messages[fieldIdentifier]);
}
[Fact]
public void CanAddMultipleMessagesUsingExpressionWithNullableProperty()
{
var model = new TestModel();
var editContext = new EditContext(model);
var messages = new ValidationMessageStore(editContext);
var validationMessages = new[] { "First error", "Second error" };
messages.Add(() => model.Text, validationMessages);
var fieldIdentifier = FieldIdentifier.Create(() => model.Text);
Assert.Equal(validationMessages, messages[fieldIdentifier]);
}
private class TestModel
{
public string? Text { get; set; }
}
#nullable disable
}