using Omika.Data.Configuration; using Omika.Data.Connection; namespace Omika.Tests.Connection; public class HfsqlOdbcConnectionStringBuilderTests { private static HfsqlOptions CreateOptions() => new() { Driver = "HFSQL Client/Server", Server = "hfsql-serveur", Port = 4900, DatabaseName = "Omika", Login = "tech", Password = "secret" }; [Fact] public void Build_ContainsDriver() { var connectionString = HfsqlOdbcConnectionStringBuilder.Build(CreateOptions()); Assert.Contains("HFSQL Client/Server", connectionString); } [Fact] public void Build_ContainsServer() { var connectionString = HfsqlOdbcConnectionStringBuilder.Build(CreateOptions()); Assert.Contains("hfsql-serveur", connectionString); } [Fact] public void Build_ContainsPort() { var connectionString = HfsqlOdbcConnectionStringBuilder.Build(CreateOptions()); Assert.Contains("4900", connectionString); } [Fact] public void Build_ContainsDatabase() { var connectionString = HfsqlOdbcConnectionStringBuilder.Build(CreateOptions()); Assert.Contains("Omika", connectionString); } [Fact] public void Build_ContainsLogin() { var connectionString = HfsqlOdbcConnectionStringBuilder.Build(CreateOptions()); Assert.Contains("tech", connectionString); } [Fact] public void Build_ContainsPassword() { // Le mot de passe est transmis au provider via la chaƮne de connexion. var connectionString = HfsqlOdbcConnectionStringBuilder.Build(CreateOptions()); Assert.Contains("secret", connectionString); } [Fact] public void Build_OmitsLoginAndPasswordWhenAbsent() { var options = CreateOptions(); options.Login = null; options.Password = null; var connectionString = HfsqlOdbcConnectionStringBuilder.Build(options); Assert.DoesNotContain("UID", connectionString); Assert.DoesNotContain("PWD", connectionString); } [Fact] public void Build_NullOptions_Throws() { Assert.Throws(() => HfsqlOdbcConnectionStringBuilder.Build(null!)); } }