public void UsesTheMaximumTotalTrackedTimeToCalculateTheMaximumHoursPerBarAsTheNearestLargerEvenNumber() { Report.Groups.Returns(groups); ReportsSubject.OnNext(Report); TestScheduler.Start(); maximumHoursPerBarObserver.LastEmittedValue().Should().Be(14); }
public void DoesNotEmitNewValuesForWeeksOrMonthsResolution(Resolution resolution) { var legendObserver = TestScheduler.CreateObserver <IImmutableList <DateTimeOffset> >(); ViewModel.HorizontalLegend.Subscribe(legendObserver); Report.Groups.Returns(new ITimeEntriesTotalsGroup[0]); Report.Resolution.Returns(resolution); ReportsSubject.OnNext(Report); TestScheduler.Start(); legendObserver.SingleEmittedValue().Should().BeEmpty(); }
public void CalculatesThePercentagesOfDifferentGroups() { Report.Groups.Returns(groups); ReportsSubject.OnNext(Report); TestScheduler.Start(); barsObserver.SingleEmittedValue() .Should().BeEquivalentTo(new[] { new BarViewModel(3.0 / 14.0, (13.0 - 3.0) / 14.0), new BarViewModel(4.0 / 14.0, (11.0 - 4.0) / 14.0), new BarViewModel(5.0 / 14.0, (10.0 - 5.0) / 14.0), new BarViewModel(6.0 / 14.0, (9.0 - 6.0) / 14.0), new BarViewModel(7.0 / 14.0, (8.0 - 7.0) / 14.0) }); }
public void EmitsASequenceOfDays(int daysCount) { var start = new DateTimeOffset(2018, 09, 13, 14, 15, 16, TimeSpan.Zero); var legendObserver = TestScheduler.CreateObserver <IImmutableList <DateTimeOffset> >(); ViewModel.HorizontalLegend.Subscribe(legendObserver); var groups = Enumerable.Range(0, daysCount) .Select(_ => Substitute.For <ITimeEntriesTotalsGroup>()) .ToArray(); Report.StartDate.Returns(start); Report.Groups.Returns(groups); Report.Resolution.Returns(Resolution.Day); ReportsSubject.OnNext(Report); TestScheduler.Start(); legendObserver.LastEmittedValue().AssertEqual( Enumerable.Range(0, daysCount).Select(n => start.AddDays(n))); }
public void DoesNotEmitNewValuesForMoreThanSevenDays(PositiveInt days) { if (days.Get <= 7) { return; } var legendObserver = TestScheduler.CreateObserver <IImmutableList <DateTimeOffset> >(); var viewModel = CreateViewModel(); viewModel.HorizontalLegend.Subscribe(legendObserver); var groups = Enumerable.Range(0, days.Get) .Select(_ => new TimeEntriesTotalsGroup { Billable = TimeSpan.Zero, Total = TimeSpan.Zero }) .ToArray <ITimeEntriesTotalsGroup>(); Report.Groups.Returns(groups); ReportsSubject.OnNext(Report); TestScheduler.Start(); legendObserver.SingleEmittedValue().Should().BeEmpty(); }