Example #1
0
            public async Task SubscribesToResumingFromBackgroundSignal()
            {
                AutomaticSyncingService.Start(SyncManager);
                AppResumedFromBackground.OnNext(Foundation.Services.AutomaticSyncingService.MinimumTimeInBackgroundForFullSync);

                await SyncManager.Received().ForceFullSync();
            }
Example #2
0
            public async Task SubscribesToResumingFromBackgroundSignal()
            {
                AutomaticSyncingService.SetupAutomaticSync(UserAccessManager);
                LoggedIn.OnNext(DataSource);
                AppResumedFromBackground.OnNext(MinimumTimeInBackgroundForFullSync);

                await SyncManager.Received().ForceFullSync();
            }
Example #3
0
            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();
            }
Example #4
0
            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);
            }
Example #5
0
 protected BaseAutomaticSyncingServiceTest()
 {
     BackgroundService.AppResumedFromBackground.Returns(AppResumedFromBackground.AsObservable());
     AutomaticSyncingService = new AutomaticSyncingService(BackgroundService, TimeService);
 }