Premiere commit - Omika
This commit is contained in:
@@ -0,0 +1,54 @@
|
||||
using Omika.App.Local.Abstractions;
|
||||
using Omika.App.Local.Models;
|
||||
|
||||
namespace Omika.Tests.Mobile.Local;
|
||||
|
||||
/// <summary>
|
||||
/// Double de test de <see cref="IPauseDejeunerPreferenceService"/> : 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).
|
||||
/// </summary>
|
||||
public sealed class FakePauseDejeunerPreferenceService : IPauseDejeunerPreferenceService
|
||||
{
|
||||
private PauseDejeunerPreference _preference = PauseDejeunerPreference.ParDefaut;
|
||||
|
||||
/// <summary>Nombre d'appels à <see cref="GetAsync"/>.</summary>
|
||||
public int GetCallCount { get; private set; }
|
||||
|
||||
/// <summary>Horaires effectivement enregistrés.</summary>
|
||||
public List<(TimeSpan Debut, TimeSpan Fin)> Saved { get; } = [];
|
||||
|
||||
/// <summary>Configure la préférence retournée par <see cref="GetAsync"/>.</summary>
|
||||
public void Set(TimeSpan debut, TimeSpan fin)
|
||||
=> _preference = new PauseDejeunerPreference { Debut = debut, Fin = fin };
|
||||
|
||||
/// <summary>Simule un stockage local indisponible (lecture en échec).</summary>
|
||||
public bool ThrowOnGet { get; set; }
|
||||
|
||||
/// <inheritdoc />
|
||||
public Task<PauseDejeunerPreference> GetAsync(CancellationToken cancellationToken = default)
|
||||
{
|
||||
GetCallCount++;
|
||||
|
||||
if (ThrowOnGet)
|
||||
{
|
||||
throw new InvalidOperationException("Stockage local indisponible.");
|
||||
}
|
||||
|
||||
return Task.FromResult(_preference);
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
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;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user