Ejemplo n.º 1
0
        public void RentInsuficientBalance()
        {
            //arrange
            var httpContext = new DefaultHttpContext();
            var tempData    = new TempDataDictionary(httpContext, Mock.Of <ITempDataProvider>());

            tempData["Funds"] = "";
            var controller = new RentController(_rents.Object, _games.Object, _broker, _users.Object)
            {
                TempData = tempData
            };
            var testUser = new User {
                Id = 1, UserName = "******", Balance = 10, RentOrders = new List <RentOrder>()
            };
            var testRent = new RentOrder
            {
                Id         = 1,
                GameRented = "God of War",
                user       = testUser,
                RentPeriod = 5
            };
            var testGame = new Game
            {
                Id       = 1,
                Name     = "God of War",
                Quantity = 5,
            };

            _gameList.Add(testGame);
            RentViewModel rentView = new RentViewModel {
                Rent = testRent, RentedGame = testRent.GameRented
            };

            // inject http session variables
            _mockSession["Balance"]  = testUser.Balance;
            _mockSession["Username"] = testUser.UserName;
            _mockHttpContext.Setup(s => s.Session).Returns(_mockSession);
            controller.ControllerContext.HttpContext = _mockHttpContext.Object;

            _usersList.Add(testUser);
            // act
            var result = controller.Rent(rentView);

            //assert
            Assert.AreEqual(0, testUser.RentOrders.Count);
            Assert.AreEqual(0, _rentList.Count);
            Assert.AreEqual("Not enough funds, payment is 15$!", tempData["Funds"]);
            var viewResult = (ViewResult)result.Result;

            Assert.AreEqual("Index", viewResult.ViewName);
        }
Ejemplo n.º 2
0
        public async Task DisplayRents()
        {
            //Arrange
            _broker = new MessageBroker(new ConnectionFactory()
            {
                Uri = new Uri("amqp://*****:*****@reindeer.rmq.cloudamqp.com/zswjrhxx")
            }.CreateConnection());
            var controller = new RentController(_rents.Object, _games.Object, _broker, _users.Object);
            var testUser   = new User {
                Id = 1, UserName = "******", Balance = 120, RentOrders = new List <RentOrder>()
            };
            var testGame = new Game {
                Id = 1, Name = "God of War", Quantity = 4
            };
            var testRent = new RentOrder
            {
                Id               = 1,
                GameRented       = "God of War",
                user             = testUser,
                CurrentRentedDay = DateTime.Today,
                RentPeriod       = 5
            };

            _mockSession["Balance"]  = testUser.Balance;
            _mockSession["Username"] = testUser.UserName;
            _mockHttpContext.Setup(s => s.Session).Returns(_mockSession);

            controller.ControllerContext.HttpContext = _mockHttpContext.Object;
            _gameList.Add(testGame);
            _usersList.Add(testUser);

            RentViewModel rentView = new RentViewModel {
                Rent = testRent, RentedGame = testGame.Name
            };
            //Act
            var firstRent = controller.Rent(rentView);

            //Assert
            Assert.AreEqual(1, _rentList.Count);
            Assert.AreEqual(1, testUser.RentOrders.Count);
            //verify quantity for the games after rent
            Assert.AreEqual(3, testGame.Quantity);
            // verify expiring dates
            Assert.AreEqual(DateTime.Today.AddDays(5), testRent.ExpiringDate);
            // verify user balance
            Assert.AreEqual(105, testUser.Balance);
            _rents.Verify(m => m.GetAllObjects(), Times.Never);
        }