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); }
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); }
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(); }
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(); }
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)); }
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(); }
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); }
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(); }
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(); }
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)); }
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))); }