Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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);
        }
Esempio n. 6
0
        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);
        }
Esempio n. 7
0
        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));
        }
Esempio n. 8
0
        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;
            }
        }
Esempio n. 9
0
        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);
        }
Esempio n. 10
0
        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));
        }
Esempio n. 11
0
        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);
        }
Esempio n. 12
0
        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));
        }