Premiere commit - Omika
This commit is contained in:
@@ -0,0 +1,61 @@
|
||||
using Omika.Core.Compatibility;
|
||||
|
||||
namespace Omika.Tests.Compatibility;
|
||||
|
||||
/// <summary>
|
||||
/// Tests de <see cref="LegacyEntityReference"/> : conservation de la provenance
|
||||
/// (Batik / Omika) sans exposer les noms HFSQL, et identifiant public stable.
|
||||
/// </summary>
|
||||
public class LegacyEntityReferenceTests
|
||||
{
|
||||
[Fact]
|
||||
public void FromLegacyId_IsBatikAndKeepsNumericId()
|
||||
{
|
||||
var reference = LegacyEntityReference.FromLegacyId(42);
|
||||
|
||||
Assert.Equal(DatabaseSchemaVersion.Batik, reference.Source);
|
||||
Assert.Equal(42, reference.NumericId);
|
||||
Assert.Equal("42", reference.PublicIdentifier);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void FromGuid_KeepsEntityGuidAndSchemaVersion()
|
||||
{
|
||||
var guid = Guid.NewGuid();
|
||||
var reference = LegacyEntityReference.FromGuid(DatabaseSchemaVersion.Omika, guid);
|
||||
|
||||
Assert.Equal(DatabaseSchemaVersion.Omika, reference.Source);
|
||||
Assert.Equal(guid, reference.EntityGuid);
|
||||
Assert.Equal(guid.ToString("D"), reference.PublicIdentifier);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void FromBusinessKey_UsesBusinessKey()
|
||||
{
|
||||
var reference = LegacyEntityReference.FromBusinessKey("BK-2026-01");
|
||||
|
||||
Assert.Equal("BK-2026-01", reference.BusinessKey);
|
||||
Assert.Equal("BK-2026-01", reference.PublicIdentifier);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void PhysicalGuid_IsNotInterpretedAsGuid()
|
||||
{
|
||||
var reference = new LegacyEntityReference(DatabaseSchemaVersion.Batik, PhysicalGuid: "1A2B-étrange");
|
||||
|
||||
Assert.Equal(DatabaseSchemaVersion.Batik, reference.Source);
|
||||
Assert.Null(reference.EntityGuid);
|
||||
Assert.Equal("1A2B-étrange", reference.PhysicalGuid);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Reference_DoesNotCarryConnectionSecret()
|
||||
{
|
||||
var reference = LegacyEntityReference.FromLegacyId(7);
|
||||
|
||||
var publicProperties = reference.GetType().GetProperties();
|
||||
Assert.DoesNotContain(publicProperties, p => p.Name.Contains("Password", StringComparison.Ordinal));
|
||||
Assert.DoesNotContain(publicProperties, p => p.Name.Contains("ConnectionString", StringComparison.Ordinal));
|
||||
Assert.DoesNotContain(publicProperties, p => p.Name.Contains("MotDePasse", StringComparison.Ordinal));
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,47 @@
|
||||
using Omika.Core.Compatibility;
|
||||
|
||||
namespace Omika.Tests.Compatibility;
|
||||
|
||||
/// <summary>
|
||||
/// Tests de <see cref="SchemaCapabilities"/> : le code métier peut savoir si une
|
||||
/// fonctionnalité est disponible selon la version de base, sans connaître la
|
||||
/// structure physique.
|
||||
/// </summary>
|
||||
public class SchemaCapabilitiesTests
|
||||
{
|
||||
[Fact]
|
||||
public void Batik_DoesNotSupportNewAppointmentModel()
|
||||
{
|
||||
SchemaCapabilities batik = SchemaCapabilities.ForBatik();
|
||||
|
||||
Assert.Equal(DatabaseSchemaVersion.Batik, batik.Version);
|
||||
Assert.False(batik.SupportsNewAppointmentModel);
|
||||
Assert.False(batik.SupportsBusinessKeys);
|
||||
Assert.False(batik.SupportsRoles);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Omika_SupportsNewFeatures()
|
||||
{
|
||||
SchemaCapabilities omika = SchemaCapabilities.ForOmika();
|
||||
|
||||
Assert.Equal(DatabaseSchemaVersion.Omika, omika.Version);
|
||||
Assert.True(omika.SupportsNewAppointmentModel);
|
||||
Assert.True(omika.SupportsBusinessKeys);
|
||||
Assert.True(omika.SupportsEntityGuids);
|
||||
Assert.True(omika.SupportsRoles);
|
||||
Assert.True(omika.SupportsModificationTracking);
|
||||
Assert.True(omika.SupportsReportModels);
|
||||
Assert.True(omika.SupportsDocumentFields);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Capabilities_AreConfigurablePerInstance()
|
||||
{
|
||||
var custom = SchemaCapabilities.ForBatik() with { SupportsRoles = true };
|
||||
|
||||
Assert.True(custom.SupportsRoles);
|
||||
// L'instance de base n'est pas mutée (record immutable).
|
||||
Assert.False(SchemaCapabilities.ForBatik().SupportsRoles);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user