public void ExerciseTrackerService_ExerciseFinished_RaisesDailyExerciseTrackerChangedEvent() { // Arrange var stubDataService = Substitute.For <IExerciseTrackerDataService>(); var stubTimeProvider = Substitute.For <ITimeProvider>(); var stubExercise = new TestableExercise(new ExerciseConfiguration()); var unitUnderTest = new ExerciseTrackerService(stubDataService, stubTimeProvider); var eventRaised = new AutoResetEvent(false); unitUnderTest.DailyExerciseTrackerChanged += (sender, args) => eventRaised.Set(); // Act unitUnderTest.ExerciseFinished(stubExercise); // Assert Assert.IsTrue(eventRaised.WaitOne(5000), "Expected event to be raised"); }
public void ExerciseTrackerService_ExerciseFinished_AddsExerciseToRepository() { // Arrange var mockDataService = Substitute.For <IExerciseTrackerDataService>(); var stubTimeProvider = Substitute.For <ITimeProvider>(); var unitUnderTest = new ExerciseTrackerService(mockDataService, stubTimeProvider); var stubExercise = new TestableExercise(new ExerciseConfiguration()); stubTimeProvider.Today.Returns(DateTime.Parse("2017/10/17 12:15:30")); // Act unitUnderTest.ExerciseFinished(stubExercise); // Assert mockDataService.Received(1) .Add(Arg.Is <ExersiseExecution>(ee => ee.ExecutionTime.Equals(DateTime.Parse("2017/10/17 12:15:30")) && ee.PercentageCompleted == 21)); }