Files
2026-10-23 18:46:50 +02:00

48 lines
1.5 KiB
C#

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);
}
}