Exemple #1
0
            public void SubscribesToCurrentTimeObservableIfParameterDoesNotHaveStopTime(DateTimeOffset now)
            {
                var parameter = DurationParameter.WithStartAndStop(now, null);

                ViewModel.Prepare(parameter);

                TimeService.CurrentDateTimeObservable.Received().Subscribe(Arg.Any <AnonymousObserver <DateTimeOffset> >());
            }
Exemple #2
0
            public void SetsTheStartTime(DateTimeOffset now)
            {
                var start     = now;
                var parameter = DurationParameter.WithStartAndStop(start, null);

                ViewModel.Prepare(parameter);

                ViewModel.StartTime.Should().Be(start);
            }
Exemple #3
0
            public async Task ReturnsTheDefaultParameter()
            {
                var parameter = DurationParameter.WithStartAndStop(DateTimeOffset.UtcNow, null);

                ViewModel.Prepare(parameter);

                await ViewModel.CloseCommand.ExecuteAsync();

                await NavigationService.Received().Close(Arg.Is(ViewModel), Arg.Is(parameter));
            }
Exemple #4
0
            public void SetsTheStopTimeToParameterStopTimeIfParameterHasStopTime(DateTimeOffset now)
            {
                var start     = now.AddHours(-4);
                var stop      = start.AddHours(2);
                var parameter = DurationParameter.WithStartAndStop(start, stop);

                ViewModel.Prepare(parameter);

                ViewModel.StartTime.Should().BeSameDateAs(start);
            }
Exemple #5
0
            public void SetsTheStartTimeToCurrentTimeIfParameterDoesNotHaveStartTime(DateTimeOffset now)
            {
                var start     = now.AddHours(-2);
                var parameter = DurationParameter.WithStartAndStop(start, null);

                TimeService.CurrentDateTime.Returns(now);

                ViewModel.Prepare(parameter);

                ViewModel.StartTime.Should().BeSameDateAs(start);
            }
        private async Task changeDuration()
        {
            IsEditingDuration = true;

            var currentDuration  = DurationParameter.WithStartAndStop(StartTime, null);
            var selectedDuration = await navigationService
                                   .Navigate <EditDurationViewModel, DurationParameter, DurationParameter>(currentDuration)
                                   .ConfigureAwait(false);

            StartTime = selectedDuration.Start;

            IsEditingDuration = false;
        }
            public void SetsTheStopTimeToTheValueReturnedByTheSelectDateTimeDialogViewModelWhenEditingACompletedTimeEntry(DateTimeOffset now)
            {
                var parameterToReturn = DurationParameter.WithStartAndStop(now.AddHours(-4), now.AddHours(-3));

                NavigationService
                .Navigate <DurationParameter, DurationParameter>(typeof(EditDurationViewModel), Arg.Any <DurationParameter>())
                .Returns(parameterToReturn);
                ConfigureEditedTimeEntry(now);
                ViewModel.Prepare(Id);

                ViewModel.EditDurationCommand.ExecuteAsync().Wait();

                ViewModel.StopTime.Should().Be(parameterToReturn.Stop);
            }
Exemple #8
0
            public void WhenChangedWhileUpdatingFinishedTimeEntryTriggersTheUpdateOfTheStopTime(DateTimeOffset now)
            {
                var start     = now.AddHours(-2);
                var parameter = DurationParameter.WithStartAndStop(start, now);

                TimeService.CurrentDateTime.Returns(now);
                ViewModel.Prepare(parameter);

                ViewModel.Duration = TimeSpan.FromHours(4);

                var expectedStop = now.AddHours(2);

                ViewModel.StopTime.Should().BeSameDateAs(expectedStop);
            }
Exemple #9
0
            public async Task SetsTheStartDateToTheValueReturnedByTheSelectDateTimeDialogViewModel()
            {
                var now = DateTimeOffset.UtcNow;
                var parameterToReturn = DurationParameter.WithStartAndStop(now.AddHours(-2), null);

                NavigationService
                .Navigate <DurationParameter, DurationParameter>(typeof(EditDurationViewModel), Arg.Any <DurationParameter>())
                .Returns(parameterToReturn);
                ViewModel.Prepare(now);

                await ViewModel.ChangeDurationCommand.ExecuteAsync();

                ViewModel.StartTime.Should().Be(parameterToReturn.Start);
            }
Exemple #10
0
            public void IsUpdatedAccordingToTimeServiceForRunningTimeEntries(DateTimeOffset now)
            {
                var start          = now.AddHours(-2);
                var parameter      = DurationParameter.WithStartAndStop(start, null);
                var tickSubject    = new Subject <DateTimeOffset>();
                var tickObservable = tickSubject.AsObservable().Publish();

                tickObservable.Connect();
                TimeService.CurrentDateTimeObservable.Returns(tickObservable);
                TimeService.CurrentDateTime.Returns(now);
                ViewModel.Prepare(parameter);

                tickSubject.OnNext(now.AddHours(2));

                ViewModel.Duration.Hours.Should().Be(4);
            }
Exemple #11
0
            public void ReturnsAValueThatReflectsTheChangesToDurationForRunningTimeEntries(DateTimeOffset start, DateTimeOffset now)
            {
                if (start > now)
                {
                    return;
                }
                TimeService.CurrentDateTime.Returns(now);
                ViewModel.Prepare(DurationParameter.WithStartAndStop(start, null));
                ViewModel.Duration = TimeSpan.FromMinutes(10);

                ViewModel.SaveCommand.ExecuteAsync().Wait();

                NavigationService.Received().Close(Arg.Is(ViewModel), Arg.Is <DurationParameter>(
                                                       p => p.Start == ViewModel.StartTime && p.Stop == null
                                                       )).Wait();
            }
Exemple #12
0
            public async Task SetsTheIsEditingDurationDateToTrueWhileTheViewDoesNotReturnAndThenSetsItBackToFalse()
            {
                var now = DateTimeOffset.UtcNow;
                var parameterToReturn = DurationParameter.WithStartAndStop(now.AddHours(-2), null);
                var tcs = new TaskCompletionSource <DurationParameter>();

                NavigationService
                .Navigate <DurationParameter, DurationParameter>(typeof(EditDurationViewModel), Arg.Any <DurationParameter>())
                .Returns(tcs.Task);
                ViewModel.Prepare(now);

                var toWait = ViewModel.ChangeDurationCommand.ExecuteAsync();

                ViewModel.IsEditingDuration.Should().BeTrue();
                tcs.SetResult(parameterToReturn);
                await toWait;

                ViewModel.IsEditingDuration.Should().BeFalse();
            }