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 Validate(object model) { var results = new List(); var ctx = new ValidationContext(model); Validator.TryValidateObject(model, ctx, results, validateAllProperties: true); return results; } }