public void CanUploadPendingEnvelopesWhenConnectionIsAvailable() { //Given connectivityMonitor.Setup(c => c.IsNetworkAvailable()) .Returns(true); var networkAwareService = new NetworkAwareSyncService<object>(connectivityMonitor.Object); var eventRecorder = new EventRecorder( typeof(SyncUpdateEvent<object>), typeof(SyncUpdateEvent<object>), typeof(SyncCompletedEvent<object>)); networkAwareService.StatusUpdate += (e) => { eventRecorder.ActualTypes.Add(e.GetType()); }; var dummyWork = new List<object>() { "one", "two" }; //When networkAwareService.Process(dummyWork, (o, i) => Console.WriteLine(o)); //Then eventRecorder.IsSatisfied(); }
public void CanResumeProcessingWhenNetworkBecomesAvailable() { //Given connectivityMonitor.SetupSequence(c => c.IsNetworkAvailable()) .Returns(true) .Returns(false) // Returns false after network error leading to SyncPausedEvent .Returns(true) .Returns(true); var networkAwareService = new NetworkAwareSyncService<string>(connectivityMonitor.Object); var eventRecorder = new EventRecorder( typeof(SyncUpdateEvent<string>), typeof(SyncUpdateEvent<string>), typeof(SyncPausedEvent<string>), typeof(SyncUpdateEvent<string>), typeof(SyncCompletedEvent<string>)); networkAwareService.StatusUpdate += (e) => { eventRecorder.ActualTypes.Add(e.GetType()); }; var dummyWork = new List<string>(){ "one", "two" }; bool thrown = false; //When networkAwareService.Process(dummyWork, (o, i) => { if (i == 1 && !thrown) { thrown = true; throw new WebException("simulate a network error on processing second item"); } }); //Then eventRecorder.IsSatisfied(); }