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