예제 #1
0
        public void Test_Put_UnauthorizedUser()
        {
            // Arrange: set UserMaria as currently logged in user
            TestingUtils.AssignCurrentUserForController(
                this.eventsController, this.testDb.UserMaria);

            // Get the "OpenFest" event with owner GuestUser
            var openFestEvent = this.testDb.EventOpenFest;

            // Create an event binding model
            var changedEvent = new EventBindingModel();;

            // Act: invoke the controller method with invalid id and cast the result
            var result = this.eventsController
                         .PutEvent(openFestEvent.Id, changedEvent) as UnauthorizedObjectResult;

            Assert.IsNotNull(result);

            // Assert an "Unauthorized" result with an error message is returned
            Assert.AreEqual((int)HttpStatusCode.Unauthorized, result.StatusCode);

            var resultValue = result.Value as ResponseMsg;

            Assert.AreEqual($"Cannot edit event, when not an owner.", resultValue.Message);
        }
예제 #2
0
        public void OneTimeSetUp()
        {
            // Instantiate the controller class with the testing database
            this.controller = new EventsController(this.dbContext);

            // Set UserMaria as current logged user
            TestingUtils.AssignCurrentUserForController(this.controller, this.testDb.UserMaria);
        }
예제 #3
0
        public void Test_Events_Create()
        {
            // Arrange: get the events count before the creation
            int eventsCountBefore = this.dbContext.Events.Count();

            // Set UserMaria as a currently logged in user
            TestingUtils.AssignCurrentUserForController(
                this.eventsController, this.testDb.UserMaria);

            // Create a new event binding model
            var newEventData = new EventBindingModel()
            {
                Name           = "New Event " + DateTime.Now.Ticks,
                Place          = "Sofia",
                Start          = DateTime.Now.AddMonths(3),
                End            = DateTime.Now.AddMonths(3).AddDays(1),
                TotalTickets   = 500,
                PricePerTicket = 20
            };

            // Act: invoke the controller method and cast the result
            var result = this.eventsController.CreateEvent(newEventData)
                         as CreatedAtActionResult;

            Assert.IsNotNull(result);

            // Assert a "Created" result with the correct event data is returned
            Assert.AreEqual((int)HttpStatusCode.Created, result.StatusCode);

            var resultValue = result.Value as EventListingModel;

            Assert.IsTrue(resultValue.Id > 0);
            Assert.AreEqual(newEventData.Name, resultValue.Name);
            Assert.AreEqual(newEventData.Place, resultValue.Place);
            Assert.AreEqual(newEventData.Start.ToString("dd/MM/yyyy HH:mm"), resultValue.Start);
            Assert.AreEqual(newEventData.End.ToString("dd/MM/yyyy HH:mm"), resultValue.End);
            Assert.AreEqual(newEventData.PricePerTicket, resultValue.PricePerTicket);
            Assert.AreEqual(newEventData.TotalTickets, resultValue.TotalTickets);

            // Assert the new event is added to the db correctly
            int eventsCountAfter = this.dbContext.Events.Count();

            Assert.That(eventsCountAfter == eventsCountBefore + 1);

            var newEventFromDb =
                this.dbContext.Events.FirstOrDefault(e => e.Name == newEventData.Name);

            Assert.IsTrue(newEventFromDb.Id > 0);
            Assert.AreEqual(newEventData.Place, newEventFromDb.Place);
            Assert.AreEqual(newEventData.Start, newEventFromDb.Start);
            Assert.AreEqual(newEventData.End, newEventFromDb.End);
            Assert.AreEqual(newEventData.PricePerTicket, newEventFromDb.PricePerTicket);
            Assert.AreEqual(newEventData.TotalTickets, newEventFromDb.TotalTickets);
        }
예제 #4
0
        public void Test_Put_ValidId()
        {
            // Arrange: set UserMaria as a currently logged in user
            TestingUtils.AssignCurrentUserForController(
                this.eventsController, this.testDb.UserMaria);

            // Create a new event in the database for editing
            var newEvent = new Event()
            {
                Name           = "Beach Party" + DateTime.Now.Ticks,
                Place          = "Ibiza",
                Start          = DateTime.Now.AddMonths(3),
                End            = DateTime.Now.AddMonths(3),
                TotalTickets   = 20,
                PricePerTicket = 120.00m,
                OwnerId        = this.testDb.UserMaria.Id
            };

            this.dbContext.Add(newEvent);
            this.dbContext.SaveChanges();

            // Create an event binding model with changed event name
            var changedEvent = new EventBindingModel()
            {
                Name           = "House Party" + DateTime.Now.Ticks,
                Place          = newEvent.Place,
                Start          = newEvent.Start,
                End            = newEvent.End,
                TotalTickets   = newEvent.TotalTickets,
                PricePerTicket = newEvent.PricePerTicket
            };

            // Act: invoke the controller method and cast the result
            var result = this.eventsController.PutEvent(newEvent.Id, changedEvent)
                         as NoContentResult;

            Assert.IsNotNull(result);

            // Assert a "NoContent" result is returned
            Assert.AreEqual((int)HttpStatusCode.NoContent, result.StatusCode);

            // Assert the event in the database has a changed name
            var newEventFromDb = this.dbContext.Events.Find(newEvent.Id);

            Assert.AreEqual(newEventFromDb.Name, changedEvent.Name);
        }
예제 #5
0
        public void Test_Delete_ValidId()
        {
            // Arrange: set UserMaria as currently logged in user
            TestingUtils.AssignCurrentUserForController(this.eventsController, this.testDb.UserMaria);

            // Create a new event in the database for deleting
            var newEvent = new Event()
            {
                Name           = "Beach Party" + DateTime.Now.Ticks,
                Place          = "Ibiza",
                Start          = DateTime.Now.AddMonths(3),
                End            = DateTime.Now.AddMonths(3),
                TotalTickets   = 20,
                PricePerTicket = 120.00m,
                OwnerId        = this.testDb.UserMaria.Id
            };

            this.dbContext.Add(newEvent);
            this.dbContext.SaveChanges();

            // Get events count before the deletion
            int eventsCountBefore = this.dbContext.Events.Count();

            // Act: invoke the controller method and cast the result
            var result = this.eventsController.DeleteEvent(newEvent.Id) as OkObjectResult;

            Assert.IsNotNull(result);

            // Assert an "OK" result with the deleted event is returned
            Assert.AreEqual((int)HttpStatusCode.OK, result.StatusCode);

            var resultValue = result.Value as EventListingModel;

            Assert.IsNotNull(resultValue);
            Assert.AreEqual(resultValue.Id, newEvent.Id);
            Assert.AreEqual(resultValue.Name, newEvent.Name);
            Assert.AreEqual(resultValue.Place, newEvent.Place);

            // Assert the event is deleted from the database
            int eventsCountAfter = this.dbContext.Events.Count();

            Assert.AreEqual(eventsCountBefore - 1, eventsCountAfter);
            Assert.IsNull(this.dbContext.Events.Find(newEvent.Id));
        }
예제 #6
0
        public void Test_Delete_InvalidId()
        {
            // Set UserMaria as currently logged in user
            TestingUtils.AssignCurrentUserForController(this.eventsController, this.testDb.UserMaria);

            int invalidId = -1;

            // Act: invoke the controller method with an invalid id and cast the result
            var result = this.eventsController.DeleteEvent(invalidId) as NotFoundObjectResult;

            Assert.IsNotNull(result);

            // Assert a "NotFound" result with an error message is returned
            Assert.AreEqual((int)HttpStatusCode.NotFound, result.StatusCode);

            var resultValue = result.Value as ResponseMsg;

            Assert.AreEqual($"Event #{invalidId} not found.", resultValue.Message);
        }
예제 #7
0
        public void Test_Index()
        {
            // Arrange: assign UserMaria to the controller
            TestingUtils.AssignCurrentUserForController(
                this.controller, this.testDb.UserMaria);

            // Act: invoke the controller method
            var result = this.controller.Index();

            // Assert a view is returned
            var viewResult = result as ViewResult;

            Assert.IsNotNull(viewResult);

            // Assert the returned model is correct
            var resultModel = viewResult.Model as HomeViewModel;

            // Assert the returned events count is correct
            Assert.AreEqual(this.dbContext.Events.Count(),
                            resultModel.AllEventsCount);
        }
예제 #8
0
        public void Test_Delete_UnauthorizedUser()
        {
            // Arrange: get the "OpenFest" event with owner GuestUser
            var openFestEvent = this.testDb.EventOpenFest;

            // Set UserMaria as currently logged in user
            TestingUtils.AssignCurrentUserForController(this.eventsController, this.testDb.UserMaria);

            // Act: invoke the controller method and cast the result
            var result = this.eventsController.DeleteEvent(openFestEvent.Id) as UnauthorizedObjectResult;

            Assert.IsNotNull(result);

            // Assert an "Unauthorized" result with an error message is returned
            Assert.AreEqual((int)HttpStatusCode.Unauthorized, result.StatusCode);

            var resultValue = result.Value as ResponseMsg;

            Assert.AreEqual($"Cannot delete event, when not an owner.", resultValue.Message);

            // Assert the event is not deleted from the database
            Assert.IsNotNull(this.dbContext.Events.Find(openFestEvent.Id));
        }