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); }
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); }
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); }
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); }
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)); }
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); }
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); }
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)); }