Skip to content

Commit 1a31dc1

Browse files
author
Raffaele Marcello
committed
Refactor message entity and add validation for text content length Resolves #4
1 parent daf6b00 commit 1a31dc1

File tree

2 files changed

+53
-6
lines changed

2 files changed

+53
-6
lines changed

src/Application/src/RazorPagesTestSample/Data/Message.cs

Lines changed: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,27 @@
11
using System.ComponentModel.DataAnnotations;
22

3-
namespace RazorPagesTestSample.Data
3+
/// <summary>
4+
/// Represents a message entity with an ID and text content.
5+
/// </summary>
6+
public class Message
7+
{
8+
/// <summary>
9+
/// Gets or sets the unique identifier for the message.
10+
/// </summary>
11+
public int Id { get; set; }
12+
13+
/// <summary>
14+
/// Gets or sets the text content of the message.
15+
/// </summary>
16+
/// <remarks>
17+
/// The text content is required and has a maximum length of 250 characters.
18+
/// </remarks>
19+
[Required]
20+
[DataType(DataType.Text)]
21+
[StringLength(250, ErrorMessage = "There's a 250 character limit on messages. Please shorten your message.")]
22+
public string Text { get; set; }
23+
}
24+
/// /// /// /// /// /// /// namespace RazorPagesTestSample.Data
425
{
526
#region snippet1
627
public class Message
@@ -9,7 +30,7 @@ public class Message
930

1031
[Required]
1132
[DataType(DataType.Text)]
12-
[StringLength(200, ErrorMessage = "There's a 200 character limit on messages. Please shorten your message.")]
33+
[StringLength(250, ErrorMessage = "There's a 250 character limit on messages. Please shorten your message.")]
1334
public string Text { get; set; }
1435
}
1536
#endregion

src/Application/tests/RazorPagesTestSample.Tests/UnitTests/DataAccessLayerTest.cs

Lines changed: 30 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ public async Task GetMessagesAsync_MessagesAreReturned()
2525
// Assert
2626
var actualMessages = Assert.IsAssignableFrom<List<Message>>(result);
2727
Assert.Equal(
28-
expectedMessages.OrderBy(m => m.Id).Select(m => m.Text),
28+
expectedMessages.OrderBy(m => m.Id).Select(m => m.Text),
2929
actualMessages.OrderBy(m => m.Id).Select(m => m.Text));
3030
}
3131
}
@@ -77,7 +77,7 @@ public async Task DeleteMessageAsync_MessageIsDeleted_WhenMessageIsFound()
7777
await db.AddRangeAsync(seedMessages);
7878
await db.SaveChangesAsync();
7979
var recId = 1;
80-
var expectedMessages =
80+
var expectedMessages =
8181
seedMessages.Where(message => message.Id != recId).ToList();
8282
#endregion
8383

@@ -90,7 +90,7 @@ public async Task DeleteMessageAsync_MessageIsDeleted_WhenMessageIsFound()
9090
// Assert
9191
var actualMessages = await db.Messages.AsNoTracking().ToListAsync();
9292
Assert.Equal(
93-
expectedMessages.OrderBy(m => m.Id).Select(m => m.Text),
93+
expectedMessages.OrderBy(m => m.Id).Select(m => m.Text),
9494
actualMessages.OrderBy(m => m.Id).Select(m => m.Text));
9595
#endregion
9696
}
@@ -121,10 +121,36 @@ public async Task DeleteMessageAsync_NoMessageIsDeleted_WhenMessageIsNotFound()
121121
// Assert
122122
var actualMessages = await db.Messages.AsNoTracking().ToListAsync();
123123
Assert.Equal(
124-
expectedMessages.OrderBy(m => m.Id).Select(m => m.Text),
124+
expectedMessages.OrderBy(m => m.Id).Select(m => m.Text),
125125
actualMessages.OrderBy(m => m.Id).Select(m => m.Text));
126126
}
127127
}
128128
#endregion
129+
130+
// This picks up inside the DataAccessLayerTest class.
131+
[Theory]
132+
[InlineData(150, true)]
133+
[InlineData(199, true)]
134+
[InlineData(200, true)]
135+
[InlineData(201, true)]
136+
[InlineData(249, true)]
137+
[InlineData(250, true)]
138+
[InlineData(251, false)]
139+
[InlineData(300, false)]
140+
public async Task AddMessageAsync_TestMessageLength(int messageLength, bool expectedValidMessage)
141+
{
142+
using (var db = new AppDbContext(Utilities.TestDbContextOptions()))
143+
{
144+
// Arrange
145+
var recId = 10;
146+
var expectedMessage = new Message() { Id = recId, Text = new string('X', messageLength) };
147+
148+
// Act
149+
var isValidMessage = Validator.TryValidateObject(expectedMessage, new ValidationContext(expectedMessage), null, validateAllProperties: true);
150+
151+
// Assert
152+
Assert.Equal(expectedValidMessage, isValidMessage);
153+
}
154+
}
129155
}
130156
}

0 commit comments

Comments
 (0)