46 lines
1.1 KiB
C#
46 lines
1.1 KiB
C#
using System.ComponentModel.DataAnnotations;
|
|
using Freman.Sample.Web.Contracts;
|
|
using Shouldly;
|
|
|
|
namespace Freman.Sample.Web.UnitTests.Contracts;
|
|
|
|
public class CreateNoteRequestTests
|
|
{
|
|
[Fact]
|
|
public void CreateNoteRequest_EmptyText_IsInvalid()
|
|
{
|
|
var model = new CreateNoteRequest { Text = "" };
|
|
|
|
var results = Validate(model);
|
|
|
|
results.Count.ShouldBeGreaterThan(0);
|
|
}
|
|
|
|
[Fact]
|
|
public void CreateNoteRequest_TooLong_IsInvalid()
|
|
{
|
|
var model = new CreateNoteRequest { Text = new string('a', 501) };
|
|
|
|
var results = Validate(model);
|
|
|
|
results.Count.ShouldBeGreaterThan(0);
|
|
}
|
|
|
|
[Fact]
|
|
public void CreateNoteRequest_NormalText_IsValid()
|
|
{
|
|
var model = new CreateNoteRequest { Text = "hello" };
|
|
|
|
var results = Validate(model);
|
|
|
|
results.Count.ShouldBe(0);
|
|
}
|
|
|
|
private static List<ValidationResult> Validate(object model)
|
|
{
|
|
var results = new List<ValidationResult>();
|
|
var ctx = new ValidationContext(model);
|
|
Validator.TryValidateObject(model, ctx, results, validateAllProperties: true);
|
|
return results;
|
|
}
|
|
} |