예제 #1
0
        public void ChargeAccounts()
        {
            var cashAccount = new Account(Session)
            {
                Type = AccountTypeEnum.Cash
            };

            Session.CommitChanges();
            Andrew.DepositAmount(30);
            Session.CommitChanges();
            Alex.DepositAmount(30);
            Session.CommitChanges();
            Assert.IsTrue(cashAccount.Balance == -60);
            VideoRentDateTime.AddMonths(1);
            Andrew.DebitMembershipFee(30);
            Session.CommitChanges();
            VideoRentDateTime.AddMonths(1);
            Andrew.DepositAmount(30);
            Session.CommitChanges();
            Andrew.DebitMembershipFee(30);
            Session.CommitChanges();
            VideoRentDateTime.AddMonths(1);
            Andrew.DebitMembershipFee(30);
            Session.CommitChanges();
            Assert.IsTrue(Andrew.IsMembershipDebter);
            Assert.IsTrue(GetMonths(VideoRentDateTime.Now - Andrew.LastPayDate()) == 3);
            Assert.IsFalse(Alex.IsMembershipDebter);
            Assert.IsTrue(cashAccount.Balance == 0);
            Assert.IsTrue(Andrew.Accounts[0].Balance == -30);
        }
예제 #2
0
        public void AllowDelete()
        {
            var movie = new Movie(Session, "1");
            var item  = movie.AddItem(MovieItemFormat.DVD, 10);

            Andrew.DoRent(new RentInfo(item));
            Session.CommitChanges();
            Assert.IsFalse(movie.AllowDelete);
        }
예제 #3
0
        public void Rent_And_ReturnMovie()
        {
            var rent = Andrew.DoRent(new RentInfo(Avatar)).Rents[0];

            Assert.IsFalse(Avatar.IsAvailableForRent);
            Assert.IsTrue(rent.Active);
            rent.Return();
            Assert.IsFalse(rent.Active);
            Assert.IsTrue(Avatar.IsAvailableForRent);
        }
예제 #4
0
        public void RentOn_And_DateReturned()
        {
            VideoRentDateTime.AddDays(-2);
            var rent = Andrew.DoRent(new RentInfo(Avatar)).Rents[0];

            Assert.IsNull(rent.ReturnedOn);
            VideoRentDateTime.AddDays(2);
            rent.Return();
            Assert.AreEqual(VideoRentDateTime.Now.Date, rent.ReturnedOn.Value.Date);
            Assert.AreEqual(VideoRentDateTime.Now.AddDays(-2).Date, rent.RentedOn.Date);
        }
예제 #5
0
        public void CustomerIsDebter()
        {
            var antonReceipt = Anton.DoRent(new RentInfo(Postal, 1));

            VideoRentDateTime.AddDays(5);
            Andrew.DoRent(new RentInfo(Avatar, 3));
            Session.CommitChanges();
            Assert.IsTrue(Anton.IsDebter);
            Assert.IsFalse(Andrew.IsDebter);
            Anton.ReturnRent(antonReceipt.Rents[0]);
            Session.CommitChanges();
            Assert.IsFalse(Anton.IsDebter);
        }
예제 #6
0
        public void TryDeleteItemWasInRent()
        {
            var item    = Avatar.AddItem();
            var receipt = Andrew.DoRent(new RentInfo(item));

            VideoRentDateTime.AddDays(3);
            Andrew.ReturnRents(receipt.Rents);
            SessionHelper.CommitSession(Session, null);
            if (item.AllowDelete)
            {
                item.Delete();
            }
            SessionHelper.CommitSession(Session, null);
        }
예제 #7
0
        public void CheckAccountBalance()
        {
            var cashAccount = new Account(Session)
            {
                Debit = 300, Type = AccountTypeEnum.Cash
            };

            Session.CommitChanges();
            Andrew.DepositAmount(30);
            Session.CommitChanges();
            Alex.DepositAmount(30);
            Session.CommitChanges();
            Assert.IsTrue(cashAccount.Balance == -360);
        }
예제 #8
0
        public void CreateCustomerAndCheckBalance()
        {
            var cashAccount = new Account(Session)
            {
                Type = AccountTypeEnum.Cash
            };

            Session.CommitChanges();
            Andrew.DepositAmount(300);
            Andrew.DepositAmount(100);
            Andrew.DepositAmount(150);
            Session.CommitChanges();

            Assert.IsTrue(cashAccount.Balance == -550);
        }
예제 #9
0
        public void RentStatus()
        {
            var rent       = Andrew.DoRent(new RentInfo(Avatar)).Rents[0];
            var avatarItem = rent.Item;

            Assert.IsTrue(rent.Active);
            Assert.AreEqual(MovieItemStatus.Rented, avatarItem.Status);
            rent.Return();
            Assert.IsFalse(rent.Active);
            Assert.AreEqual(MovieItemStatus.Active, avatarItem.Status);
            var newRent = Anton.DoRent(new RentInfo(avatarItem)).Rents[0];

            Assert.IsTrue(newRent.Active);
            Assert.AreEqual(MovieItemStatus.Rented, avatarItem.Status);
            Assert.IsFalse(rent.Active);
        }
예제 #10
0
        public void CheckDayOffset()
        {
            var cashAccount = new Account(Session)
            {
                Debit = 300, Type = AccountTypeEnum.Cash
            };

            Session.CommitChanges();
            Andrew.DepositAmount(30);
            Session.CommitChanges();
            VideoRentDateTime.AddDays(2);
            Alex.DepositAmount(30);
            Session.CommitChanges();
            VideoRentDateTime.AddDays(2);
            Andrew.DepositAmount(30);
            Session.CommitChanges();
            Assert.IsTrue((VideoRentDateTime.Now - Andrew.LastPayDate()).Days == 4);
            Assert.IsTrue((VideoRentDateTime.Now - Alex.LastPayDate()).Days == 2);
        }