public void Create_WhenSavingValidWorkout_ThenWorkoutIsSaved() { // Arrange var dbContext = new FakeShoeTrackerDbContext() .WithShoe("Some show", _currentUserId); var controller = new WorkoutController(dbContext) .WithAuthenticatedUser("some user", _currentUserId) .WithValidModelState(); var workoutOnView = controller.Create().CastModel<EditWorkoutViewModel>(); workoutOnView.Distance = 1.2m; workoutOnView.Name = "my name"; workoutOnView.WorkoutDate = DateTime.Today.AddDays(-4); workoutOnView.ShoeUsedId = long.Parse(workoutOnView.AvailableShoes.First().Value); // Act controller.Create(workoutOnView); // Assert Assert.That(dbContext.Workouts.Count(), Is.EqualTo(1)); Assert.That(dbContext.Workouts.First().UserId, Is.EqualTo(_currentUserId)); Assert.That(dbContext.Workouts.First().Distance, Is.EqualTo(workoutOnView.Distance)); Assert.That(dbContext.Workouts.First().Name, Is.EqualTo(workoutOnView.Name)); Assert.That(dbContext.Workouts.First().ShoeUsed.ShoeId, Is.EqualTo(workoutOnView.ShoeUsedId)); Assert.That(dbContext.Workouts.First().WorkoutDate, Is.EqualTo(workoutOnView.WorkoutDate)); }
public void All_WhenShowingView_ThenAllWorkoutsAreDisplayed() { // Arrange var dbContext = new FakeShoeTrackerDbContext(); var controller = new WorkoutController(dbContext); IndexSetup(dbContext, controller); // Act var result = controller.All(); // Assert var viewModels = result.CastModel<ICollection<Workout>>(); Assert.That(viewModels.Count, Is.EqualTo(dbContext.Workouts.Count())); foreach (var viewModel in viewModels) { var matchingWorkout = dbContext.Workouts.First(s => s.WorkoutId == viewModel.WorkoutId); Assert.That(matchingWorkout.Distance, Is.EqualTo(matchingWorkout.Distance)); Assert.That(matchingWorkout.Name, Is.EqualTo(matchingWorkout.Name)); Assert.That(matchingWorkout.WorkoutDate, Is.EqualTo(matchingWorkout.WorkoutDate)); Assert.That(matchingWorkout.ShoeUsed, Is.SameAs(matchingWorkout.ShoeUsed)); } }
public void Create_WhenSavingInValidWorkout_ThenWorkoutIsNotSaved() { // Arrange var dbContext = new FakeShoeTrackerDbContext(); var controller = new WorkoutController(dbContext) .WithAuthenticatedUser("some user", _currentUserId) .WithInvalidModelState(); var workoutOnView = controller.Create().CastModel<EditWorkoutViewModel>(); // Act controller.Create(workoutOnView); // Assert Assert.That(dbContext.Workouts.Count(), Is.EqualTo(0)); }
private void IndexSetup(ShoeTrackerDbContext dbContext, WorkoutController controller) { const string username = "******"; dbContext .WithShoe("Bar", _currentUserId); dbContext .WithWorkout("Workout 1", _currentUserId, shoeName: "Bar") .WithWorkout("Workout 2", _currentUserId, shoeName: "Bar") .WithWorkout("Workout 3", _currentUserId, shoeName: "Bar") .WithWorkout("Workout 4", _currentUserId) .WithWorkout("Workout 5", _currentUserId) .WithWorkout("Workout 6", _currentUserId) .WithWorkout("Workout 7", _currentUserId) .WithWorkout("Workout 8", _currentUserId) .WithWorkout("Workout 9", _currentUserId) .WithWorkout("Workout 10", _currentUserId, shoeName: "Bar") .WithWorkout("Workout 11", _currentUserId, shoeName: "Bar") ; controller .WithAuthenticatedUser(username, _currentUserId) .WithValidModelState(); }
public void Edit_WhenShowingView_ThenTheMatchingWorkoutIsShown() { // Arrange var dbContext = new FakeShoeTrackerDbContext() .WithShoe("Foo", _currentUserId) .WithShoe("Bar", _currentUserId) .WithShoe("Other", "some other user") .WithWorkout("some workout", _currentUserId,shoeName:"Foo"); var controller = new WorkoutController(dbContext) .WithAuthenticatedUser("some user", _currentUserId); var workout = dbContext.Workouts.First(); var workoutId = workout.WorkoutId; // Act var result = controller.Edit(workoutId); // Assert var viewResult = (ViewResult)result; var workoutViewModel = viewResult.CastModel<EditWorkoutViewModel>(); Assert.That(workoutViewModel.WorkoutId, Is.EqualTo(workoutId)); Assert.That(workoutViewModel.Name, Is.EqualTo(workout.Name)); Assert.That(workoutViewModel.WorkoutDate, Is.EqualTo(workout.WorkoutDate)); Assert.That(workoutViewModel.Distance, Is.EqualTo(workout.Distance)); Assert.That(workoutViewModel.ShoeUsedId, Is.EqualTo(workout.ShoeUsed.ShoeId)); }
public void Edit_WhenSavingValidWorkflow_ThenWorkflowIsSaved() { // Arrange var dbContext = new FakeShoeTrackerDbContext(); dbContext .WithShoe("foo", _currentUserId) .WithWorkout("some workout", _currentUserId, shoeName: "foo"); var controller = new WorkoutController(dbContext) .WithAuthenticatedUser("some user", _currentUserId) .WithValidModelState(); var workoutId = dbContext.Workouts.Select(s => s.WorkoutId).First(); var workoutOnView = ((ViewResult)controller.Edit(workoutId)).CastModel<EditWorkoutViewModel>(); workoutOnView.Name = "some other name"; workoutOnView.Distance = 55m; workoutOnView.WorkoutDate = DateTime.Today.AddDays(5); // Act controller.Edit(workoutOnView); // Assert Assert.That(dbContext.NumerOfTimesSaveChangesCalled, Is.EqualTo(1)); var savedWorkout = dbContext.Workouts.First(w => w.WorkoutId == workoutId); Assert.That(savedWorkout.Name,Is.EqualTo(workoutOnView.Name)); Assert.That(savedWorkout.Distance,Is.EqualTo(workoutOnView.Distance)); Assert.That(savedWorkout.WorkoutDate,Is.EqualTo(workoutOnView.WorkoutDate)); }
public void Edit_WhenShowingViewWithInvalidWorkoutId_ThenNotFoundResult() { // Arrange var dbContext = new FakeShoeTrackerDbContext(); var controller = new WorkoutController(dbContext) .WithAuthenticatedUser("some user", _currentUserId); const int workoutId = -1; // Act var result = controller.Edit(workoutId); // Assert Assert.That(result, Is.InstanceOf<HttpNotFoundResult>()); }
public void Edit_WhenSavingInValidWorkout_ThenWorkoutIsNotSaved() { // Arrange var dbContext = new FakeShoeTrackerDbContext(); dbContext .WithShoe("foo", _currentUserId) .WithWorkout("some workout", _currentUserId, shoeName: "foo"); var controller = new WorkoutController(dbContext) .WithAuthenticatedUser("some user", _currentUserId) .WithInvalidModelState(); var workoutId = dbContext.Workouts.Select(s => s.WorkoutId).First(); var workoutOnView = ((ViewResult)controller.Edit(workoutId)).CastModel<EditWorkoutViewModel>(); // Act controller.Edit(workoutOnView); // Assert Assert.That(dbContext.NumerOfTimesSaveChangesCalled, Is.EqualTo(0)); }
public void Delete_WhenShowingView_ThenTheMatchingWorkoutIsShown() { // Arrange var dbContext = new FakeShoeTrackerDbContext() .WithWorkout("some run", _currentUserId); var controller = new WorkoutController(dbContext) .WithAuthenticatedUser("some user", _currentUserId); var workoutId = dbContext.Workouts.Select(s => s.WorkoutId).First(); // Act var result = controller.Delete(workoutId); // Assert var viewResult = (ViewResult)result; var workout = viewResult.CastModel<Workout>(); Assert.That(workout.WorkoutId, Is.EqualTo(workoutId)); }
public void DeleteConfirmed_WhenDeleting_ThenTheWorkoutIsRemovedFromTheDatabase() { // Arrange var dbContext = new FakeShoeTrackerDbContext(); dbContext .WithWorkout("foo", _currentUserId) .WithWorkout("other", _currentUserId); var controller = new WorkoutController(dbContext) .WithAuthenticatedUser("some user", _currentUserId) .WithValidModelState(); var workoutId = dbContext.Workouts.Select(s => s.WorkoutId).First(); // Act controller.DeleteConfirmed(workoutId); // Assert Assert.That(dbContext.Workouts.Count(), Is.EqualTo(1)); Assert.That(dbContext.Workouts.First().Name, Is.EqualTo("other")); Assert.That(dbContext.NumerOfTimesSaveChangesCalled, Is.EqualTo(1)); }
public void DeleteConfirmed_WhenDeletingInValidWorkout_ThenNothingHappes() { // Arrange var dbContext = new FakeShoeTrackerDbContext(); var controller = new WorkoutController(dbContext) .WithAuthenticatedUser("some user", _currentUserId) .WithValidModelState(); const int workoutId = -1; // Act controller.DeleteConfirmed(workoutId); // Assert Assert.That(dbContext.Workouts.Count(), Is.EqualTo(0)); Assert.That(dbContext.NumerOfTimesSaveChangesCalled, Is.EqualTo(1)); }
public void Create_WhenShowingView_ThenNewWorkoutHasDefaults() { // Arrange var dbContext = new FakeShoeTrackerDbContext() .WithShoe("Foo", _currentUserId) .WithShoe("Bar", _currentUserId) .WithShoe("Other", "some other user"); var controller = new WorkoutController(dbContext) .WithAuthenticatedUser("some user", _currentUserId); // Act var result = controller.Create(); // Assert var modelData = result.CastModel<EditWorkoutViewModel>(); Assert.That(modelData.WorkoutDate, Is.EqualTo(DateTime.Today)); Assert.That(modelData.AvailableShoes.Count(), Is.EqualTo(2)); }