public async ThreadingTask ReturnsTheCountOfInteractorResult() { var syncables = new IDatabaseSyncable[] { new MockTag { Name = "Tag", SyncStatus = SyncStatus.SyncFailed, LastSyncErrorMessage = "Error1" }, new MockTag { Name = "Tag2", SyncStatus = SyncStatus.SyncFailed, LastSyncErrorMessage = "Error1" }, new MockProject { Name = "Project", SyncStatus = SyncStatus.SyncFailed, LastSyncErrorMessage = "Error2" } }; var items = syncables.Select(i => new SyncFailureItem(i)); var interactor = Substitute.For <IInteractor <IObservable <IEnumerable <SyncFailureItem> > > >(); interactor.Execute().Returns(Observable.Return(items)); InteractorFactory.GetItemsThatFailedToSync().Returns(interactor); await ViewModel.Initialize(); ViewModel.NumberOfSyncFailures.Should().Be(3); }
public SyncFailureItem(IDatabaseSyncable model) { Ensure.Argument.IsNotNull(model, nameof(model)); SyncStatus = model.SyncStatus; SyncErrorMessage = model.LastSyncErrorMessage; switch (model) { case IThreadSafeTag tag: Type = ItemType.Tag; Name = tag.Name; break; case IThreadSafeClient client: Type = ItemType.Client; Name = client.Name; break; case IThreadSafeProject project: Type = ItemType.Project; Name = project.Name; break; default: throw new ArgumentException($"Unexpected type: {model.GetType()}"); } }
public async ThreadingTask ReturnsTheCountOfInteractorResult() { var syncables = new IDatabaseSyncable[] { new MockTag { Name = "Tag", SyncStatus = SyncStatus.SyncFailed, LastSyncErrorMessage = "Error1" }, new MockTag { Name = "Tag2", SyncStatus = SyncStatus.SyncFailed, LastSyncErrorMessage = "Error1" }, new MockProject { Name = "Project", SyncStatus = SyncStatus.SyncFailed, LastSyncErrorMessage = "Error2" } }; var items = syncables.Select(i => new SyncFailureItem(i)); var interactor = Substitute.For <IInteractor <IObservable <IEnumerable <SyncFailureItem> > > >(); interactor.Execute().Returns(Observable.Return(items)); InteractorFactory.GetItemsThatFailedToSync().Returns(interactor); await ViewModel.Initialize(); var observer = TestScheduler.CreateObserver <int>(); ViewModel.NumberOfSyncFailures.Subscribe(observer); TestScheduler.AdvanceBy(50); observer.Messages .Last(m => m.Value.Kind == System.Reactive.NotificationKind.OnNext).Value.Value .Should() .Be(syncables.Length); }
public static bool IsLocalOnly(this IDatabaseSyncable syncable) => syncable is IIdentifiable identifiable && identifiable.Id < 0;