using Omika.Core.Compatibility; namespace Omika.Tests.Compatibility; /// /// Tests de : le code métier peut savoir si une /// fonctionnalité est disponible selon la version de base, sans connaître la /// structure physique. /// 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); } }