예제 #1
0
        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());
        }
예제 #2
0
        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
        }
예제 #3
0
        public ActionResult Index(int page = 1, int pageSize = 10)
        {
            RoomUsageDetailsViewModel objRoomUsageDetailsViewModel = new RoomUsageDetailsViewModel();

            objRoomUsageDetailsViewModel.Page     = page;
            objRoomUsageDetailsViewModel.PageSize = pageSize;
            return(View(objRoomUsageDetailsViewModel));
        }
예제 #4
0
        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());
        }
예제 #5
0
        //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));
        }