public async Task SubscribesToResumingFromBackgroundSignal() { AutomaticSyncingService.Start(SyncManager); AppResumedFromBackground.OnNext(Foundation.Services.AutomaticSyncingService.MinimumTimeInBackgroundForFullSync); await SyncManager.Received().ForceFullSync(); }
public async Task SubscribesToResumingFromBackgroundSignal() { AutomaticSyncingService.SetupAutomaticSync(UserAccessManager); LoggedIn.OnNext(DataSource); AppResumedFromBackground.OnNext(MinimumTimeInBackgroundForFullSync); await SyncManager.Received().ForceFullSync(); }
public async Task SubscribesToTheMidnightObservable() { var errors = new Subject <Exception>(); SyncManager.Errors.Returns(errors); errors.OnNext(new Exception()); AppResumedFromBackground.OnNext(TimeSpan.FromHours(1)); await SyncManager.DidNotReceive().ForceFullSync(); }
public async Task TracksHowManyEntitiesChangeDuringAutomaticSyncWhenResumingFromBackground() { var syncedTimeEntry = new MockTimeEntry { SyncStatus = SyncStatus.InSync }; var unsyncedTimeEntry = new MockTimeEntry { SyncStatus = SyncStatus.SyncNeeded }; var createdSubject = new Subject <IThreadSafeTimeEntry>(); var updatedSubject = new Subject <EntityUpdate <IThreadSafeTimeEntry> >(); var deletedSubject = new Subject <long>(); var fullSyncSubject = new Subject <SyncState>(); TimeEntriesSource.Created.Returns(createdSubject); TimeEntriesSource.Updated.Returns(updatedSubject); TimeEntriesSource.Deleted.Returns(deletedSubject); SyncManager.ForceFullSync().Returns(fullSyncSubject); SyncManager.Errors.Returns(Observable.Never <Exception>()); AutomaticSyncingService.SetupAutomaticSync(UserAccessManager); LoggedIn.OnNext(DataSource); AppResumedFromBackground.OnNext(MinimumTimeInBackgroundForFullSync); createdSubject.OnNext(syncedTimeEntry); createdSubject.OnNext(unsyncedTimeEntry); updatedSubject.OnNext(new EntityUpdate <IThreadSafeTimeEntry>(123, syncedTimeEntry)); updatedSubject.OnNext(new EntityUpdate <IThreadSafeTimeEntry>(123, unsyncedTimeEntry)); deletedSubject.OnNext(123); fullSyncSubject.OnNext(SyncState.Sleep); fullSyncSubject.OnCompleted(); bool wasCalled; do { await Task.Delay(TimeSpan.FromSeconds(0.5)); wasCalled = AnalyticsService.NumberOfSyncedTimeEntriesWhenResumingTheAppFromBackground .ReceivedCalls() .Any(); }while (!wasCalled); AnalyticsService.NumberOfSyncedTimeEntriesWhenResumingTheAppFromBackground.Received().Track(3); }
protected BaseAutomaticSyncingServiceTest() { BackgroundService.AppResumedFromBackground.Returns(AppResumedFromBackground.AsObservable()); AutomaticSyncingService = new AutomaticSyncingService(BackgroundService, TimeService); }