using Microsoft.Extensions.Options; using ZB.MOM.WW.Configuration; namespace ZB.MOM.WW.Configuration.Tests; public sealed class OptionsValidatorBaseTests { private sealed class SampleOptions { public int Port { get; set; } public string? Name { get; set; } } private sealed class SampleValidator : OptionsValidatorBase { protected override void Validate(ValidationBuilder v, SampleOptions o) { v.Port(o.Port, "Sample:Port"); v.Required(o.Name, "Sample:Name"); } } [Fact] public void Success_when_clean() { var r = new SampleValidator().Validate(null, new SampleOptions { Port = 8080, Name = "ok" }); Assert.True(r.Succeeded); } [Fact] public void Fails_and_reports_all_failures() { var r = new SampleValidator().Validate(null, new SampleOptions { Port = 0, Name = "" }); Assert.True(r.Failed); Assert.Equal(2, r.Failures!.Count()); } }