using Omika.App.Local.Abstractions; using Omika.App.Local.Models; namespace Omika.Tests.Mobile.Local; /// /// Double de test de : conserve les /// horaires en mémoire, sans écriture disque ni appel réseau. Le défaut est la /// préférence par défaut (12:00 → 13:00). /// public sealed class FakePauseDejeunerPreferenceService : IPauseDejeunerPreferenceService { private PauseDejeunerPreference _preference = PauseDejeunerPreference.ParDefaut; /// Nombre d'appels à . public int GetCallCount { get; private set; } /// Horaires effectivement enregistrés. public List<(TimeSpan Debut, TimeSpan Fin)> Saved { get; } = []; /// Configure la préférence retournée par . public void Set(TimeSpan debut, TimeSpan fin) => _preference = new PauseDejeunerPreference { Debut = debut, Fin = fin }; /// Simule un stockage local indisponible (lecture en échec). public bool ThrowOnGet { get; set; } /// public Task GetAsync(CancellationToken cancellationToken = default) { GetCallCount++; if (ThrowOnGet) { throw new InvalidOperationException("Stockage local indisponible."); } return Task.FromResult(_preference); } /// public Task SaveAsync(TimeSpan debut, TimeSpan fin, CancellationToken cancellationToken = default) { if (fin <= debut) { throw new ArgumentException( "L'heure de fin doit être postérieure à l'heure de début.", nameof(fin)); } Saved.Add((debut, fin)); Set(debut, fin); return Task.CompletedTask; } }