using FluentAssertions; using Marathon.Domain.Enums; using Marathon.UI.Services; namespace Marathon.UI.Tests.Services; public sealed class AddBetFormTests { private static AddBetForm Valid() => new() { EventId = "26456117", Type = BetType.Win, Side = Side.Side1, Rate = 1.90m, Stake = 100m, Notes = "ok", }; [Fact] public void IsValid_ReturnsTrue_ForAWellFormedForm() { Valid().IsValid(out var error).Should().BeTrue(); error.Should().BeNull(); } [Fact] public void IsValid_AllowsNullNotes() { var form = Valid(); form.Notes = null; form.IsValid(out var error).Should().BeTrue(); error.Should().BeNull(); } [Fact] public void IsValid_AllowsNotesAtTheMaxLength() { var form = Valid(); form.Notes = new string('x', AddBetForm.MaxNotesLength); form.IsValid(out var error).Should().BeTrue(); error.Should().BeNull(); } [Fact] public void IsValid_RejectsNotesOverTheMaxLength() { var form = Valid(); form.Notes = new string('x', AddBetForm.MaxNotesLength + 1); form.IsValid(out var error).Should().BeFalse(); error.Should().Contain("Notes"); } }