protected TimeEntryDataSourceObservableTest()
            {
                var startTime = now.AddHours(-2);

                var initialTimeEntries =
                    Enumerable.Range(1, InitialAmountOfTimeEntries)
                    .Select(i =>
                            new MockTimeEntry
                {
                    Id          = i,
                    Start       = startTime.AddHours(i * 2),
                    Duration    = (long)TimeSpan.FromHours(i * 2 + 2).TotalSeconds,
                    UserId      = 11,
                    WorkspaceId = 12,
                    Description = "",
                    At          = now,
                    TagIds      = new long[] { 1, 2, 3 },
                    Workspace   = new MockWorkspace {
                        IsInaccessible = false
                    }
                }
                            );

                TimeEntries = new BehaviorSubject <IEnumerable <IThreadSafeTimeEntry> >(initialTimeEntries);
                InteractorFactory.ObserveAllTimeEntriesVisibleToTheUser().Execute().Returns(TimeEntries);
            }
Ejemplo n.º 2
0
            protected void PrepareTimeEntry()
            {
                var timeEntry = Substitute.For <IThreadSafeTimeEntry>();

                timeEntry.Id.Returns(123);
                timeEntry.Start.Returns(DateTimeOffset.Now);
                timeEntry.Duration.Returns(100);
                InteractorFactory.ObserveAllTimeEntriesVisibleToTheUser().Execute()
                .Returns(Observable.Return(new[] { timeEntry }));
            }
Ejemplo n.º 3
0
            public void EmitsAnEventWhenTimeEntriesChange()
            {
                var itemsChangedSubject = new Subject <Unit>();

                DataSource.Workspaces.ItemsChanged.Returns(itemsChangedSubject);

                var testScheduler = new TestScheduler();
                var observer      = testScheduler.CreateObserver <IEnumerable <IThreadSafeTimeEntry> >();

                InteractorFactory.ObserveAllTimeEntriesVisibleToTheUser()
                .Execute()
                .Subscribe(observer);

                itemsChangedSubject.OnNext(Unit.Default);

                observer.Messages.Should().HaveCount(1);
            }
            public void EmitsAnEventWhenATimeEntryIsDeleted()
            {
                var deleteSubject = new Subject <long>();

                DataSource.TimeEntries.Created.Returns(Observable.Never <IThreadSafeTimeEntry>());
                DataSource.TimeEntries.Updated.Returns(Observable.Never <EntityUpdate <IThreadSafeTimeEntry> >());
                DataSource.TimeEntries.Deleted.Returns(deleteSubject);

                var testScheduler = new TestScheduler();
                var observer      = testScheduler.CreateObserver <IEnumerable <IThreadSafeTimeEntry> >();

                InteractorFactory.ObserveAllTimeEntriesVisibleToTheUser()
                .Execute()
                .Subscribe(observer);

                deleteSubject.OnNext(42);

                observer.Messages.Should().HaveCount(1);
            }
            public void EmitsAnEventWhenAWorkspaceIsUpdated()
            {
                var updateSubject = new Subject <EntityUpdate <IThreadSafeWorkspace> >();

                DataSource.Workspaces.Created.Returns(Observable.Never <IThreadSafeWorkspace>());
                DataSource.Workspaces.Updated.Returns(updateSubject);
                DataSource.Workspaces.Deleted.Returns(Observable.Never <long>());

                var testScheduler = new TestScheduler();
                var observer      = testScheduler.CreateObserver <IEnumerable <IThreadSafeTimeEntry> >();

                InteractorFactory.ObserveAllTimeEntriesVisibleToTheUser()
                .Execute()
                .Subscribe(observer);

                var mockWorkspace = new MockWorkspace {
                    Id = 42
                };

                updateSubject.OnNext(new EntityUpdate <IThreadSafeWorkspace>(mockWorkspace.Id, mockWorkspace));

                observer.Messages.Should().HaveCount(1);
            }