public async Task CanDeleteValidActivityAndUpdateBudget() { // Arrange - create the mock repository TestTrekStoriesContext tc = new TestTrekStoriesContext(); Trip trip = new Trip { TripId = 1, Title = "Trip Name", TotalCost = 20, TripOwner = "ABC123" }; tc.Trips.Add(trip); Step step = new Step { StepId = 123, TripId = 1 }; tc.Steps.Add(step); tc.Activities.Add(new LeisureActivity() { ID = 1, Name = "Aquapark", StepId = 123 }); LeisureActivity l2 = new LeisureActivity() { ID = 2, Name = "Test", StepId = 123, Price = 15 }; tc.Activities.Add(l2); // Arrange - create the controller ActivitiesController controller = new ActivitiesController(tc).WithAuthenticatedUser("ABC123"); // Act - delete an activity var result = await controller.Delete(2); // Assert - ensure that the activity is deleted from repository Assert.IsNull(tc.Activities.FirstOrDefault(l => l.ID == l2.ID)); // Assert - ensure that the trip budget was updated Assert.AreEqual(5, trip.TotalCost); }
public async Task CanSaveValidLeisureActivityChanges() { // Arrange - create mock repository TestTrekStoriesContext tc = new TestTrekStoriesContext(); // Arrange - create the controller ActivitiesController controller = new ActivitiesController(tc).WithAuthenticatedUser("ABC123"); // Arrange - create a leisure activity LeisureActivity leisure = new LeisureActivity() { ID = 1, Name = "Boat Trip" }; leisure.Step = new Step { StepId = 123, Trip = new Trip { TripId = 321, TotalCost = 100, TripOwner = "ABC123" } }; tc.Activities.Add(leisure); LeisureActivity updatedLeisure = new LeisureActivity() { ID = 1, Name = "Name Changed", StartTime = new DateTime(2018, 8, 1, 14, 30, 0) }; // Act - try to save the activity ActionResult result = await controller.EditLeisure(leisure); // Assert - check the method result type Assert.IsNotInstanceOfType(result, typeof(ViewResult)); }
public Response Update(LeisureActivity leisureActivity) { _leisureActivityService.Update(leisureActivity); return(new Response { Body = "success" }); }
public LeisureActivityEntity ToEntity(LeisureActivity domain) { LeisureActivityEntity entity = new LeisureActivityEntity { }; _itemMapper.ToEntity(domain, entity); return(entity); }
public LeisureActivity ToDomain(LeisureActivityEntity entity) { LeisureActivity domain = new LeisureActivity { }; _itemMapper.ToDomain(entity, domain); return(domain); }
public async Task CannotEditNonexistentLeisure() { // Arrange - create the mock repository TestTrekStoriesContext tc = new TestTrekStoriesContext(); LeisureActivity leisure1 = new LeisureActivity() { ID = 1, Name = "Boat Trip" }; tc.Activities.Add(leisure1); // Arrange - create the controller ActivitiesController controller = new ActivitiesController(tc); // Act var badResult = await controller.Edit(4) as ViewResult; // Assert Assert.AreEqual("CustomisedError", badResult.ViewName); }
public async Task CannotSaveInvalidChanges() { // Arrange - create mock repository TestTrekStoriesContext tc = new TestTrekStoriesContext(); // Arrange - create the controller ActivitiesController controller = new ActivitiesController(tc); // Arrange - create a leisure activity LeisureActivity leisure = new LeisureActivity() { ID = 1, Name = "Boat Trip" }; // Arrange - add an error to the model state controller.ModelState.AddModelError("error", "error"); // Act - try to save the activity ActionResult result = await controller.EditLeisure(leisure); // Assert - check the method result type Assert.IsInstanceOfType(result, typeof(ViewResult)); }
private async Task UpdateLeisureActivity(LeisureActivity leisureActivity) { LeisureActivity dbEntry = (LeisureActivity)((await db.Activities.FindAsync(leisureActivity.ID))); if (dbEntry.Step.Trip.TripOwner != User.Identity.GetUserId()) { throw new UnauthorizedAccessException("Oops, this activity doesn't seem to be yours, you cannot edit it."); } //update trip budget dbEntry.Step.Trip.TotalCost = dbEntry.Step.Trip.TotalCost - dbEntry.Price + leisureActivity.Price; if (dbEntry != null) { dbEntry.Name = leisureActivity.Name; dbEntry.StartTime = leisureActivity.StartTime; dbEntry.Price = leisureActivity.Price; dbEntry.Notes = leisureActivity.Notes; dbEntry.Address = leisureActivity.Address; dbEntry.LeisureCategory = leisureActivity.LeisureCategory; dbEntry.StepId = leisureActivity.StepId; } }
public async Task CanEditLeisure() { // Arrange - create the mock repository with leisure activities TestTrekStoriesContext tc = new TestTrekStoriesContext(); Step step1 = new Step { StepId = 1, From = "A", To = "B" }; Step step2 = new Step { StepId = 2, From = "B", To = "C" }; LeisureActivity leisure1 = new LeisureActivity() { ID = 1, Name = "Boat Trip", StepId = 1, Step = step1 }; LeisureActivity leisure2 = new LeisureActivity() { ID = 2, Name = "Museum Visit", StepId = 2, Step = step2 }; tc.Steps.Add(step1); tc.Steps.Add(step2); tc.Activities.Add(leisure1); tc.Activities.Add(leisure2); // Arrange - create the controller ActivitiesController controller = new ActivitiesController(tc); // Act var result1 = await controller.Edit(1) as ViewResult; var l1 = (LeisureActivity)result1.ViewData.Model; var result2 = await controller.Edit(2) as ViewResult; var l2 = (LeisureActivity)result2.ViewData.Model; // Assert Assert.AreEqual(1, l1.ID); Assert.AreEqual(2, l2.ID); Assert.AreEqual("Boat Trip", l1.Name); }
public async Task <ActionResult> EditLeisure([Bind(Include = "ID,Name,StartTime,Price,Notes,Address,LeisureCategory, StepId")] LeisureActivity leisureActivity) { if (ModelState.IsValid) { //if new activity, add to db if (leisureActivity.ID == 0) { try { await UpdateTripBudgetIfOwner(leisureActivity); db.Activities.Add(leisureActivity); } catch (UnauthorizedAccessException ex) { return(View("CustomisedError", new HandleErrorInfo(ex, "Trip", "Index"))); } } else { try { await UpdateLeisureActivity(leisureActivity); } catch (UnauthorizedAccessException ex) { return(View("CustomisedError", new HandleErrorInfo(ex, "Trip", "Index"))); } } await db.SaveChangesAsync(); return(RedirectToAction("Details", "Step", new { id = leisureActivity.StepId })); } ViewBag.StepId = leisureActivity.StepId; return(View(leisureActivity)); }
public async Task CanCreateLeisureWithEditMethodAndUpdateBudget() { //Arrange TestTrekStoriesContext tc = new TestTrekStoriesContext(); Step step = new Step { StepId = 2, Trip = new Trip { TripId = 321, TotalCost = 100, TripOwner = "ABC123" } }; tc.Steps.Add(step); LeisureActivity leisureToCreate = new LeisureActivity() { Name = "Boat Trip", StartTime = new DateTime(2018, 7, 16, 9, 30, 0), LeisureCategory = LeisureCategory.aquatic, Price = 20, StepId = 2 }; ActivitiesController controller = new ActivitiesController(tc).WithAuthenticatedUser("ABC123"); // Act var result = await controller.EditLeisure(leisureToCreate) as RedirectToRouteResult; // Assert Assert.AreEqual("Details", result.RouteValues["action"]); Assert.AreEqual("Step", result.RouteValues["controller"]); Assert.AreEqual(120, step.Trip.TotalCost); }
public async Task DetailsReturnsCorrectView() { // Arrange - create the mock repository with leisure activities TestTrekStoriesContext tc = new TestTrekStoriesContext(); Transport transport1 = new Transport() { ID = 1, Name = "Train" }; LeisureActivity leisure1 = new LeisureActivity() { ID = 2, Name = "Boat Trip" }; LeisureActivity leisure2 = new LeisureActivity() { ID = 3, Name = "Museum Visit" }; tc.Activities.Add(transport1); tc.Activities.Add(leisure1); tc.Activities.Add(leisure2); // Arrange - create the controller ActivitiesController controller = new ActivitiesController(tc); // Act var result1 = await controller.Details(1) as ViewResult; var t1 = (Transport)result1.ViewData.Model; var result2 = await controller.Details(3) as ViewResult; var l2 = (LeisureActivity)result2.ViewData.Model; // Assert Assert.AreEqual("DetailsTransport", result1.ViewName); Assert.AreEqual(1, t1.ID); Assert.AreEqual("DetailsLeisure", result2.ViewName); Assert.AreEqual("Museum Visit", l2.Name); }
public void Update(LeisureActivity domain) { _modelServiceTools.UpdateProcessing <LeisureActivityEntity>(domain); _lifeManagerRepository.SaveEntity(_leisureActivityMapper.ToEntity(domain)); }
public void Create(LeisureActivity domain) { _modelServiceTools.InitialiseNewItem(domain); _lifeManagerRepository.SaveEntity(_leisureActivityMapper.ToEntity(domain)); }