Ejemplo n.º 1
0
        public async Task AllNotPaidAsync_ShouldReturn_AllPaidRents_IfArgumentIsTrue()
        {
            var db        = GetDatabase();
            var mapper    = GetMapper();
            var firstRent = new MonthlyPaymentRent {
                Id = 1, DeadLine = new DateTime(2018, 12, 12), IsPaid = false
            };
            var secndRent = new MonthlyPaymentRent {
                Id = 2, DeadLine = new DateTime(2017, 11, 6), IsPaid = false
            };
            var thirdRent = new MonthlyPaymentRent {
                Id = 3, DeadLine = new DateTime(2016, 11, 12), IsPaid = true
            };
            var forthRent = new MonthlyPaymentRent {
                Id = 4, DeadLine = new DateTime(2015, 12, 15), IsPaid = false
            };
            await db.MonthlyPaymentRents.AddRangeAsync(firstRent, secndRent, thirdRent, forthRent);

            await db.SaveChangesAsync();

            var rentPaymentService = new MonthlyRentsService(mapper, db);
            //Act
            var result = await rentPaymentService.AllNotPaidAsync(true);

            //Assert
            result
            .Should()
            .BeOfType <List <MonthlyRentListingModel> >()
            .And
            .HaveCount(1)
            .And
            .Match(x => x.ElementAt(0).Id == 3);
        }
Ejemplo n.º 2
0
        public async Task AllOverdueRentsAsync_ShouldReturn_Collection_WithAllDelayedRents()
        {
            var db        = GetDatabase();
            var mapper    = GetMapper();
            var firstRent = new MonthlyPaymentRent {
                Id = 1, DeadLine = new DateTime(2016, 12, 12), TotalPayment = 200, IsPaid = false, ApplyVAT = true
            };
            var secndRent = new MonthlyPaymentRent {
                Id = 2, DeadLine = new DateTime(2017, 11, 6), TotalPayment = 300, IsPaid = false, ApplyVAT = true
            };
            var thirdRent = new MonthlyPaymentRent {
                Id = 3, DeadLine = new DateTime(2018, 11, 6), TotalPayment = 400, IsPaid = true, ApplyVAT = true
            };
            var fourthRent = new MonthlyPaymentRent {
                Id = 4, DeadLine = new DateTime(2050, 11, 6), TotalPayment = 500, IsPaid = false, ApplyVAT = true
            };
            await db.MonthlyPaymentRents.AddRangeAsync(firstRent, secndRent, thirdRent, fourthRent);

            await db.SaveChangesAsync();

            var rentPaymentService = new MonthlyRentsService(mapper, db);
            //Act
            var result = await rentPaymentService.AllOverdueRentsAsync();

            //Assert
            result
            .Should()
            .HaveCount(2)
            .And
            .Match(x => x.ElementAt(0).TotalPayment == 200 &&
                   x.ElementAt(1).TotalPayment == 300);
        }
Ejemplo n.º 3
0
        public async Task EditAsync_ShouldReturn_false_IfRentAlreadyPaid()
        {
            var db        = GetDatabase();
            var mapper    = GetMapper();
            var firstRent = new MonthlyPaymentRent {
                Id = 1, DeadLine = new DateTime(2018, 12, 12), TotalPayment = 200, IsPaid = true
            };
            var secndRent = new MonthlyPaymentRent {
                Id = 2, DeadLine = new DateTime(2017, 11, 6), TotalPayment = 300, IsPaid = true
            };
            await db.MonthlyPaymentRents.AddRangeAsync(firstRent, secndRent);

            await db.SaveChangesAsync();

            var rentPaymentService = new MonthlyRentsService(mapper, db);
            //Act
            var editModel = new MonthlyRentViewModel
            {
                Id           = 4,
                DeadLine     = new DateTime(2018, 12, 22),
                TotalPayment = 300
            };
            var result = await rentPaymentService.EditAsync(editModel);

            ;
            //Assert
            result
            .Should()
            .BeFalse();
        }
Ejemplo n.º 4
0
        public async Task TerminateAsync_ShouldReturn_True_IfMonthlyRentExistInDbAndIsNotPaid()
        {
            var db        = GetDatabase();
            var mapper    = GetMapper();
            var firstRent = new MonthlyPaymentRent {
                Id = 1, DeadLine = new DateTime(2018, 12, 12), TotalPayment = 200, IsPaid = false, ApplyVAT = true
            };
            var secndRent = new MonthlyPaymentRent {
                Id = 2, DeadLine = new DateTime(2017, 11, 6), TotalPayment = 300, IsPaid = false, ApplyVAT = true
            };
            await db.MonthlyPaymentRents.AddRangeAsync(firstRent, secndRent);

            await db.SaveChangesAsync();

            var rentPaymentService = new MonthlyRentsService(mapper, db);
            //Act
            var result = await rentPaymentService.TerminateAsync(1);

            var termnatedMontlyRent = await db.MonthlyPaymentRents
                                      .FindAsync(1);

            //Assert
            result
            .Should()
            .BeTrue();
            termnatedMontlyRent
            .Should()
            .BeNull();
        }
Ejemplo n.º 5
0
        public async Task GetByIdAsync_ShouldReturn_CorrectModel_IfRentExistInDb()
        {
            var db        = GetDatabase();
            var mapper    = GetMapper();
            var firstRent = new MonthlyPaymentRent {
                Id = 1, DeadLine = new DateTime(2018, 12, 12), TotalPayment = 200, IsPaid = false, ApplyVAT = true
            };
            var secndRent = new MonthlyPaymentRent {
                Id = 2, DeadLine = new DateTime(2017, 11, 6), TotalPayment = 300, IsPaid = false, ApplyVAT = true
            };
            await db.MonthlyPaymentRents.AddRangeAsync(firstRent, secndRent);

            await db.SaveChangesAsync();

            var rentPaymentService = new MonthlyRentsService(mapper, db);
            //Act
            var result = await rentPaymentService.GetByIdAsync(1);

            //Assert
            result
            .Should()
            .BeOfType <MonthlyRentViewModel>()
            .And
            .Match <MonthlyRentViewModel>(x =>
                                          x.TotalPayment == 200 &&
                                          x.DeadLine == new DateTime(2018, 12, 12));
        }
Ejemplo n.º 6
0
        public async Task CreateNextMonthPayment_ShouldReturn_False_IfSuchRentDoNotExist()
        {
            var db        = GetDatabase();
            var mapper    = GetMapper();
            var firstRent = new MonthlyPaymentRent {
                Id = 1, DeadLine = new DateTime(2018, 12, 12), TotalPayment = 200
            };
            var secndRent = new MonthlyPaymentRent {
                Id = 2, DeadLine = new DateTime(2017, 11, 6), TotalPayment = 300
            };
            var thirdRent = new MonthlyPaymentRent {
                Id = 3, DeadLine = new DateTime(2016, 11, 12), TotalPayment = 400
            };
            var forthRent = new MonthlyPaymentRent {
                Id = 4, DeadLine = new DateTime(2015, 12, 15), TotalPayment = 500
            };
            await db.MonthlyPaymentRents.AddRangeAsync(firstRent, secndRent, thirdRent, forthRent);

            await db.SaveChangesAsync();

            var rentPaymentService = new MonthlyRentsService(mapper, db);
            //Act
            var result = await rentPaymentService.CreateNextMonthPayment(5);

            //Assert
            result
            .Should()
            .BeFalse();
        }
Ejemplo n.º 7
0
        public async Task MakePaymentAsync_ShouldReturn_Null_WhenInputIsCorrectButNextMonthPaymentFails()
        {
            var db     = GetDatabase();
            var mapper = GetMapper();

            var firstMonthRent = new MonthlyPaymentRent
            {
                Id           = 1,
                TotalPayment = 2000
            };
            await db.MonthlyPaymentRents.AddRangeAsync(firstMonthRent);

            var firstPayment = new Payment {
                Id = 20, Amount = 500, MonthlyPaymentRentId = 1
            };
            var secndPayment = new Payment {
                Id = 21, Amount = 500, MonthlyPaymentRentId = 1
            };
            await db.Payments.AddRangeAsync(firstPayment, secndPayment);

            var user = new User
            {
                Id = "007"
            };
            await db.Users.AddAsync(user);

            await db.SaveChangesAsync();


            var monthlyRentMock = new Mock <IMonthlyRentsService>();

            monthlyRentMock
            .Setup(mr => mr.CreateNextMonthPayment(It.IsAny <int>()))
            .ReturnsAsync(false);

            var paymentService = new PaymentsService(mapper, db, monthlyRentMock.Object);

            //Act
            var paymentModel = new BindingMonthlyRentModel
            {
                CashPayment   = true,
                MonthlyRentId = 1,
                Payment       = 1000,
                PaidOn        = new DateTime(2018, 12, 12)
            };
            var result = await paymentService.MakePaymentAsync(paymentModel, "007");

            var payment = await db.Payments
                          .FirstOrDefaultAsync(x => x.MonthlyPaymentRentId == 1 && x.Amount == 1000);

            //Assert
            result
            .Should()
            .BeNull();
            payment
            .Should()
            .Match <Payment>(x => x.CashPayment == true &&
                             x.UserId == "007" &&
                             x.Amount == 1000);
        }
Ejemplo n.º 8
0
        public async Task CreateNextMonthPayment_ShouldReturn_True_IfSuchRentExist()
        {
            var db     = GetDatabase();
            var mapper = GetMapper();

            var secndRent = new MonthlyPaymentRent
            {
                Id            = 12,
                DeadLine      = new DateTime(2017, 11, 6),
                TotalPayment  = 240,
                RentAgreement = new RentAgreement {
                    MonthlyPrice = 200, ParkingSlots = new List <ParkingSlot>()
                }
            };
            var thirdRent = new MonthlyPaymentRent {
                Id = 13, DeadLine = new DateTime(2016, 11, 12), TotalPayment = 400
            };
            var forthRent = new MonthlyPaymentRent {
                Id = 14, DeadLine = new DateTime(2015, 12, 15), TotalPayment = 500
            };
            await db.MonthlyPaymentRents.AddRangeAsync(secndRent, thirdRent, forthRent);

            await db.SaveChangesAsync();

            var rentPaymentService = new MonthlyRentsService(mapper, db);

            //Act
            var result = await rentPaymentService.CreateNextMonthPayment(12);

            var createdRent = await db.MonthlyPaymentRents
                              .FirstOrDefaultAsync(x => x.DeadLine == new DateTime(2017, 12, 6) &&
                                                   x.TotalPayment == 240);

            //Assert
            result
            .Should()
            .BeTrue();

            createdRent
            .Should()
            .NotBeNull();
        }
Ejemplo n.º 9
0
        public async Task GetByIdAsync_ShouldReturn_Nulll_IfRentDoNotExistInDb()
        {
            var db        = GetDatabase();
            var mapper    = GetMapper();
            var firstRent = new MonthlyPaymentRent {
                Id = 1, DeadLine = new DateTime(2018, 12, 12), TotalPayment = 200, IsPaid = false, ApplyVAT = true
            };
            var secndRent = new MonthlyPaymentRent {
                Id = 2, DeadLine = new DateTime(2017, 11, 6), TotalPayment = 300, IsPaid = false, ApplyVAT = true
            };
            await db.MonthlyPaymentRents.AddRangeAsync(firstRent, secndRent);

            await db.SaveChangesAsync();

            var rentPaymentService = new MonthlyRentsService(mapper, db);
            //Act
            var result = await rentPaymentService.GetByIdAsync(3);

            //Assert
            result
            .Should()
            .BeNull();
        }
Ejemplo n.º 10
0
        public async Task EditAsync_ShouldReturn_True_IfRentExist()
        {
            var db        = GetDatabase();
            var mapper    = GetMapper();
            var firstRent = new MonthlyPaymentRent {
                Id = 1, DeadLine = new DateTime(2018, 12, 12), TotalPayment = 200, IsPaid = false
            };
            var secndRent = new MonthlyPaymentRent {
                Id = 2, DeadLine = new DateTime(2017, 11, 6), TotalPayment = 300, IsPaid = false
            };
            await db.MonthlyPaymentRents.AddRangeAsync(firstRent, secndRent);

            await db.SaveChangesAsync();

            var rentPaymentService = new MonthlyRentsService(mapper, db);
            //Act
            var editModel = new MonthlyRentViewModel
            {
                Id           = 1,
                DeadLine     = new DateTime(2018, 12, 22),
                TotalPayment = 300
            };
            var result = await rentPaymentService.EditAsync(editModel);

            var createdRent = await db.MonthlyPaymentRents
                              .FirstOrDefaultAsync(x => x.Id == 1);

            //Assert
            result
            .Should()
            .BeTrue();
            createdRent
            .Should()
            .Match <MonthlyPaymentRent>(x =>
                                        x.TotalPayment == 300 &&
                                        x.DeadLine == new DateTime(2018, 12, 22));
        }
Ejemplo n.º 11
0
        public async Task FilterRentsAsync_ShouldReturn_CorrectQueryResult_DependingOnInput()
        {
            var db     = GetDatabase();
            var mapper = GetMapper();

            var firstMonthConsumable = new MonthlyPaymentRent
            {
                Id            = 1,
                RentAgreement = new RentAgreement
                {
                    Id       = 1,
                    ClientId = 1
                }
            };
            var secondMonthConsumable = new MonthlyPaymentRent
            {
                Id            = 2,
                RentAgreement = new RentAgreement
                {
                    Id       = 1,
                    ClientId = 1
                }
            };
            var thirdMonthConsumable = new MonthlyPaymentRent
            {
                Id            = 3,
                RentAgreement = new RentAgreement
                {
                    Id       = 2,
                    ClientId = 2
                }
            };
            var forthMonthConsumable = new MonthlyPaymentRent
            {
                Id            = 4,
                RentAgreement = new RentAgreement
                {
                    Id       = 1,
                    ClientId = 1
                }
            };
            await db.MonthlyPaymentRents.AddRangeAsync(firstMonthConsumable, secondMonthConsumable, thirdMonthConsumable, forthMonthConsumable);

            var firstPayment = new Payment
            {
                Id                   = 1,
                PaidOn               = new DateTime(2018, 12, 12),
                Amount               = 10,
                CashPayment          = false,
                MonthlyPaymentRentId = 1,
            };
            var secndPayment = new Payment
            {
                Id                   = 2,
                PaidOn               = new DateTime(2017, 11, 6),
                Amount               = 20,
                CashPayment          = true,
                MonthlyPaymentRentId = 2,
            };
            var thirdPayment = new Payment
            {
                Id                   = 3,
                PaidOn               = new DateTime(2015, 11, 12),
                Amount               = 30,
                CashPayment          = false,
                MonthlyPaymentRentId = 3
            };
            var forthPayment = new Payment
            {
                Id                   = 4,
                PaidOn               = new DateTime(2015, 12, 15),
                Amount               = 40,
                CashPayment          = false,
                MonthlyPaymentRentId = 4
            };
            var fifthPayment = new Payment
            {
                Id     = 5,
                PaidOn = new DateTime(2017, 12, 15),
                Amount = 50,
                MonthlyPaymentRentId = null,
                CashPayment          = false
            };
            await db.Payments.AddRangeAsync(firstPayment, secndPayment, thirdPayment, forthPayment, fifthPayment);

            await db.SaveChangesAsync();

            var filterModel = new FilterRentBindingModel
            {
                Client    = 1,
                OnlyCash  = true,
                StartDate = new DateTime(2017, 1, 1),
                EndDate   = new DateTime(2018, 12, 30)
            };
            var paymentService = new PaymentsService(mapper, db, null);
            //Act
            var result = await paymentService.FilterRentsAsync(filterModel);

            //Assert
            result
            .Should()
            .BeOfType <FilterRentsViewModel>()
            .And
            .Match <FilterRentsViewModel>(x => x.TotalIncome == 20 &&
                                          x.Payments.Any(y => y.PaidOn == new DateTime(2017, 11, 6)));
        }