コード例 #1
0
            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);
            }
コード例 #2
0
        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()}");
            }
        }
コード例 #3
0
            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);
            }
コード例 #4
0
 public static bool IsLocalOnly(this IDatabaseSyncable syncable)
 => syncable is IIdentifiable identifiable && identifiable.Id < 0;