using Microsoft.Extensions.Options; using Omika.Data.Configuration; namespace Omika.Tests.Connection; public class HfsqlOptionsValidatorTests { private static HfsqlOptions CreateValidOptions() => new() { Driver = "HFSQL Client/Server", Server = "hfsql-serveur", Port = 4900, DatabaseName = "Omika", ConnectionName = "ConnexionLocale" }; [Fact] public void Validate_ValidOptions_ReturnsSuccess() { var result = HfsqlOptionsValidator.Validate(CreateValidOptions()); Assert.True(result.IsSuccess); } [Fact] public void Validate_MissingDriver_ReturnsFailure() { var options = CreateValidOptions(); options.Driver = null!; var result = HfsqlOptionsValidator.Validate(options); Assert.True(result.IsFailure); Assert.Contains(result.Errors, e => e.Contains("driver", StringComparison.OrdinalIgnoreCase)); } [Fact] public void Validate_InvalidTimeout_ReturnsFailure() { var options = CreateValidOptions(); options.ConnectionTimeoutSeconds = 0; var result = HfsqlOptionsValidator.Validate(options); Assert.True(result.IsFailure); Assert.Contains(result.Errors, e => e.Contains("délai", StringComparison.OrdinalIgnoreCase)); } [Fact] public void Validate_ImplementsIValidateOptions() { var validator = new HfsqlOptionsValidator(); Assert.IsAssignableFrom>(validator); } [Fact] public void ValidateOptions_Valid_ReturnsSuccess() { IValidateOptions validator = new HfsqlOptionsValidator(); var result = validator.Validate(null, CreateValidOptions()); Assert.Equal(ValidateOptionsResult.Success, result); } [Fact] public void ValidateOptions_Invalid_ReturnsFailure() { IValidateOptions validator = new HfsqlOptionsValidator(); var options = CreateValidOptions(); options.Server = null; var result = validator.Validate(null, options); Assert.True(result.Failed); Assert.Contains(result.Failures, e => e.Contains("serveur", StringComparison.OrdinalIgnoreCase)); } [Fact] public void CreateDefault_ProvidesDriver() { var options = HfsqlOptionsValidator.CreateDefault(); Assert.Equal(HfsqlOptions.DefaultOdbcDriver, options.Driver); } }