public void Item6_ViewAllBookingswithAdmin() { var context = new Mock <ControllerContext>(); var session = new MockHttpSession(); context.Setup(m => m.HttpContext.Session).Returns(session); RoomUsageController rc = new RoomUsageController(); rc.ControllerContext = context.Object; rc.Session["UserName"] = "******"; // this is the login account to obs. RoomUsageDetailsViewModel roomUsage = new RoomUsageDetailsViewModel() { Page = 1, PageSize = 999 }; var result = rc.GetAllBookingHistory(roomUsage) as PartialViewResult; IEnumerable <RoomUsageDetailsViewModel> mds = result.Model as IEnumerable <RoomUsageDetailsViewModel>; //the count value may be diferent. At the time for testing this function, there are total 29 MyBookings /* Use below query to know the exact booking number in database: * * select count(*) * from RoomUsages * where IsActive = 1 * */ Assert.AreEqual(20, mds.Count()); }
public void Item7_ForceCancelButton() { //Inject the configurations value - no need to change values in this block var config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); config.AppSettings.Settings.Clear(); config.AppSettings.Settings.Add("FromEmailAddress", "*****@*****.**"); config.AppSettings.Settings.Add("FromEmailDisplayName", "Booking Admin"); config.AppSettings.Settings.Add("FromEmailPassWord", "obsg11s2"); config.AppSettings.Settings.Add("SMTPHost", "smtp.gmail.com"); config.AppSettings.Settings.Add("SMTPPort", "587"); config.AppSettings.Settings.Add("EnableSSL", "true"); config.Save(ConfigurationSaveMode.Modified); ConfigurationManager.RefreshSection("appSettings"); //End Injection var context = new Mock <ControllerContext>(); var session = new MockHttpSession(); var serverMock = new Mock <HttpServerUtilityBase>(MockBehavior.Loose); //NOTE: you need to change the parameter in below Returns function to the path on your machine. //The path should be "Your Project Foder Path\Views\Shared\_TemplateSendEmail.cshtml" serverMock.Setup(x => x.MapPath("~/Views/Shared/_TemplateSendEmail.cshtml")). Returns(@"D:\Webapp\OBS\Views\Shared\_TemplateSendEmail.cshtml"); context.Setup(m => m.HttpContext.Session).Returns(session); context.Setup(x => x.HttpContext.Server).Returns(serverMock.Object); RoomUsageController rc = new RoomUsageController(); rc.ControllerContext = context.Object; rc.Session["UserName"] = "******"; // this is the login account to obs. RoomUsageDetailsViewModel roomUsage = new RoomUsageDetailsViewModel() { Page = 1, PageSize = 999 }; var bookingHis = rc.GetAllBookingHistory(roomUsage) as PartialViewResult; IEnumerable <RoomUsageDetailsViewModel> mds = bookingHis.Model as IEnumerable <RoomUsageDetailsViewModel>; int beforeCancel = mds.Count(); // get number of booking before clicking force cancel rc.DeleteRoomUsageDetails(61); // Force Cancel one booking, value 62 is the parameter of a booking on 16Sep. /* Use below query to know the exact booking id in database: * * select ID,* * from RoomUsages * where IsActive = 1 * */ var currentBooking = rc.GetAllBookingHistory(roomUsage) as PartialViewResult; IEnumerable <RoomUsageDetailsViewModel> currB = currentBooking.Model as IEnumerable <RoomUsageDetailsViewModel>; int afterCancel = currB.Count(); // get number of booking after clicking force cancel Assert.AreEqual(beforeCancel - 1, afterCancel); // compare number of bookings before and after cancel }
public ActionResult Index(int page = 1, int pageSize = 10) { RoomUsageDetailsViewModel objRoomUsageDetailsViewModel = new RoomUsageDetailsViewModel(); objRoomUsageDetailsViewModel.Page = page; objRoomUsageDetailsViewModel.PageSize = pageSize; return(View(objRoomUsageDetailsViewModel)); }
public void Item5_MyBookings() { var context = new Mock <ControllerContext>(); var session = new MockHttpSession(); context.Setup(m => m.HttpContext.Session).Returns(session); RoomUsageController rc = new RoomUsageController(); rc.ControllerContext = context.Object; rc.Session["UserName"] = "******"; RoomUsageDetailsViewModel roomUsage = new RoomUsageDetailsViewModel() { Page = 1, PageSize = 999 }; var result = rc.GetAllBookingHistory(roomUsage) as PartialViewResult; IEnumerable <RoomUsageDetailsViewModel> mds = result.Model as IEnumerable <RoomUsageDetailsViewModel>; //the count value may be diferent. At the time for testing this function, there are total 2 MyBookings for 'student' user Assert.AreEqual(1, mds.Count()); }
//Get all booking history for user login public PartialViewResult GetAllBookingHistory(RoomUsageDetailsViewModel objRoomUsageViewModel) { int Page = (objRoomUsageViewModel.Page == 0) ? 1 : objRoomUsageViewModel.Page; int PageSize = (objRoomUsageViewModel.PageSize == 0) ? 10 : objRoomUsageViewModel.PageSize; ViewBag.PageSize = objRoomUsageViewModel.PageSize; #region Get user login //Get user based on user's login on the system. string userName = (string)Session["UserName"]; User u = objBookingDBEntities.Users.Single(model => model.UserName == userName && model.IsActive == true); #endregion #region Permission user // Permission for user, if user has the role is Admin, // system will load all booked rooms of all user // Otherwise if the user has another role, // system will load all booked rooms of that user. IEnumerable <RoomUsageDetailsViewModel> listofRoomUsageDetailsViewModel = null; if (u.Role != null && u.Role.Name == "Admin") { listofRoomUsageDetailsViewModel = (from objRoomUsage in objBookingDBEntities.RoomUsages join objBookingHours in objBookingDBEntities.BookingHours on objRoomUsage.BookingHoursID equals objBookingHours.Id join objRoom in objBookingDBEntities.Rooms on objRoomUsage.RoomId equals objRoom.Id join objUser in objBookingDBEntities.Users on objRoomUsage.UserID equals objUser.Id where objRoomUsage.IsActive == true orderby objRoomUsage.Id descending select new RoomUsageDetailsViewModel() { Id = objRoomUsage.Id, Room = objRoom.RoomNumber, User = objUser.FullName, BookingDate = objRoomUsage.BookingDate, BookingHours = objBookingHours.Name, NumberOfMembers = objRoomUsage.NumberOfMembers, TotalAmount = objRoom.RoomPrice, }).OrderByDescending(x => x.Id).ToPagedList(Page, PageSize); } else { listofRoomUsageDetailsViewModel = (from objRoomUsage in objBookingDBEntities.RoomUsages join objBookingHours in objBookingDBEntities.BookingHours on objRoomUsage.BookingHoursID equals objBookingHours.Id join objRoom in objBookingDBEntities.Rooms on objRoomUsage.RoomId equals objRoom.Id join objUser in objBookingDBEntities.Users on objRoomUsage.UserID equals objUser.Id where objRoomUsage.IsActive == true && objUser.Id == u.Id orderby objRoomUsage.Id descending select new RoomUsageDetailsViewModel() { Id = objRoomUsage.Id, Room = objRoom.RoomNumber, User = objUser.FullName, BookingDate = objRoomUsage.BookingDate, BookingHours = objBookingHours.Name, NumberOfMembers = objRoomUsage.NumberOfMembers, TotalAmount = objRoom.RoomPrice, }).OrderByDescending(x => x.Id).ToPagedList(Page, PageSize); } #endregion return(PartialView("_BookingHistoryPartial", listofRoomUsageDetailsViewModel)); }