Premiere commit - Omika
This commit is contained in:
@@ -0,0 +1,64 @@
|
||||
using Omika.App.Local.Abstractions;
|
||||
using Omika.App.Local.Services;
|
||||
using Omika.Core.Contracts.Mobile.Sync;
|
||||
|
||||
namespace Omika.Tests.Mobile.Local;
|
||||
|
||||
/// <summary>
|
||||
/// Vérifie que chaque écriture locale (Outbox) réveille la surveillance de fond :
|
||||
/// c'est ce qui garantit qu'une saisie part automatiquement dès que le réseau est
|
||||
/// disponible, sans que l'utilisateur appuie sur « Synchroniser ».
|
||||
/// </summary>
|
||||
public class OutboxServiceBackgroundSyncTests : LocalTestBase
|
||||
{
|
||||
private sealed class StubBackgroundSync : IBackgroundSyncService
|
||||
{
|
||||
private int _requests;
|
||||
|
||||
public int Requests => Volatile.Read(ref _requests);
|
||||
|
||||
public void Start(
|
||||
Func<CancellationToken, Task<int>> pendingCountProvider,
|
||||
Func<CancellationToken, Task> synchronizationCycle,
|
||||
CancellationToken cancellationToken = default)
|
||||
{
|
||||
}
|
||||
|
||||
public void RequestSync() => Interlocked.Increment(ref _requests);
|
||||
|
||||
public Task StopAsync() => Task.CompletedTask;
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task EnqueueAsync_ReveilleLaSurveillanceDeFond()
|
||||
{
|
||||
var signal = new StubBackgroundSync();
|
||||
var service = new OutboxService(OutboxRepository, signal);
|
||||
|
||||
await service.EnqueueAsync(
|
||||
"CompteRendu",
|
||||
SyncOperationType.Create,
|
||||
Guid.NewGuid(),
|
||||
"{}");
|
||||
|
||||
// Écriture locale effective + réveil de la surveillance (aucun appel réseau ici).
|
||||
Assert.Equal(1, await service.CountPendingAsync());
|
||||
Assert.Equal(1, signal.Requests);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task EnqueueAsync_SansSurveillance_ResteFonctionnel()
|
||||
{
|
||||
// Écran d'activation / tests : aucune surveillance installée, la file
|
||||
// locale doit continuer de fonctionner (envoi manuel uniquement).
|
||||
var service = new OutboxService(OutboxRepository);
|
||||
|
||||
await service.EnqueueAsync(
|
||||
"CompteRendu",
|
||||
SyncOperationType.Create,
|
||||
Guid.NewGuid(),
|
||||
"{}");
|
||||
|
||||
Assert.Equal(1, await service.CountPendingAsync());
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user