public void Insert_Execute_ReturnsTrue() { // Arrange var entities = new List <PersonalLoan>() { new PersonalLoan { Name = "Test1", CarryoverAmount = 1000, EarlyRepaymentFee = 300, InterestAmount = 10, IsClosed = false, PrincipalAmount = 1200 }, new PersonalLoan { Name = "Test2", CarryoverAmount = 2000, EarlyRepaymentFee = 400, InterestAmount = 10, IsClosed = true, PrincipalAmount = 1500 }, new PersonalLoan { Name = "Test3", CarryoverAmount = 3000, EarlyRepaymentFee = 500, InterestAmount = 10, IsClosed = false, PrincipalAmount = 2000 } }; var newEntity = new PersonalLoan { Name = "Test4", CarryoverAmount = 4000, EarlyRepaymentFee = 1500, InterestAmount = 1000, IsClosed = false, PrincipalAmount = 4000 }; _mockDataSourceProvider.Setup(s => s.GetAll()).Returns(entities.AsQueryable()); _mockDataSourceProvider.Setup(s => s.SaveAll(entities)).Verifiable(); var expectedResult = new List <PersonalLoan>(entities) { newEntity }; // Act var actualResult = _personalLoanProvider.Insert(newEntity); // Assert Assert.True(actualResult); _mockDataSourceProvider.Verify(x => x.SaveAll(expectedResult)); }
public async Task <bool> ApplyFor(PersonalLoan personalLoan) { var fault = new IOException(); var chaos = MonkeyPolicy .InjectExceptionAsync(with => with.Fault(fault) .InjectionRate(1) .Enabled() ); var path = Path.Combine( Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), Environment.CurrentDirectory + @"/downstream.txt"); using StreamWriter outputFile = new StreamWriter(path, true); await chaos.ExecuteAsync(async() => await outputFile.WriteAsync( $"\n{JsonSerializer.Serialize(personalLoan)}\n" ) ); return(true); }
public LoanCalculations Calculate(PersonalLoan loan) { return(new LoanCalculations( getOneMonthAmount(loan), getTotalAmount(loan), getOneMonthAmount(loan) * loan.TermMonths - loan.Amount )); }
public bool Insert(PersonalLoan personalLoan) { var entities = GetAll().ToList(); entities.Add(personalLoan); SaveAll(entities); return(true); }
public JsonResult Post([FromBody] PersonalLoan personalLoan) { var result = _personalLoanService.Add(personalLoan); return(new JsonResult(new { IsSuccess = result })); }
public bool Add(PersonalLoan personalLoan) { try { _personalLoanProvider.Insert(personalLoan); } catch (Exception ex) { var log = _logProvider.Format(ex); _logProvider.Append(log); return(false); } return(true); }
public void Insert_SaveAllThrowsException_ThrowsException() { // Arrange var newEntity = new PersonalLoan { Name = "Test4", CarryoverAmount = 4000, EarlyRepaymentFee = 1500, InterestAmount = 1000, IsClosed = false, PrincipalAmount = 4000 }; _mockDataSourceProvider.Setup(s => s.GetAll()).Returns((new List <PersonalLoan>()).AsQueryable()); _mockDataSourceProvider.Setup(s => s.SaveAll(It.IsAny <IEnumerable <PersonalLoan> >())).Throws(new Exception()); // Act & Assert Assert.Throws <Exception>(() => _personalLoanProvider.Insert(newEntity)); }
public IActionResult Create([FromBody] PersonalLoanModel loan) { if (IsModelValid(out var errors)) { PersonalLoan addedLoan = loansRepository.Add(mapper.Map <PersonalLoan>(loan)); return(new CreatedResult(nameof(LoansController.Get), new ResponseModel <PersonalLoanModel> { Data = mapper.Map <PersonalLoanModel>(addedLoan) })); } else { return(new ObjectResult(new ResponseModel { Errors = errors }) { StatusCode = (int?)HttpStatusCode.BadRequest }); } }
public void Get_WithValidIdParameter_ReturnsValidLoanDetail() { // Arrange var expectedResult = new PersonalLoan { Name = "Test", CarryoverAmount = 1000, EarlyRepaymentFee = 300, InterestAmount = 10, IsClosed = false, PrincipalAmount = 1200, IsTopUp = true }; _mockPersonalLoanService.Setup(s => s.Get(It.IsAny <string>())).Returns(expectedResult); // Act var actualResult = _personalLoanController.Get("Test"); // Assert Assert.NotNull(actualResult); Assert.Equal("Test", actualResult.Name); Assert.Equal(1000, actualResult.CarryoverAmount); Assert.Equal(300, actualResult.EarlyRepaymentFee); Assert.Equal(10, actualResult.InterestAmount); Assert.False(actualResult.IsClosed); Assert.Equal(1200, actualResult.PrincipalAmount); }
public void CreateTest() { PersonalLoanModel personalLoanModel = CreatePersonalLoanModel(); var personalLoan = new PersonalLoan(PersonalLoanName, 1, 1, 1, Payback.EveryMonth, PersonalLoanId); mapperMock.Setup(m => m.Map <PersonalLoan>(personalLoanModel)).Returns(personalLoan); loansRepositoryMock.Setup(m => m.Add(personalLoan)).Returns(personalLoan); mapperMock.Setup(m => m.Map <PersonalLoanModel>(personalLoan)).Returns(personalLoanModel); var expectedResponse = new ResponseModel <PersonalLoanModel>() { Data = personalLoanModel }; var expected = new CreatedResult(nameof(LoansController.Get), expectedResponse); var actual = loansController.Create(expectedResponse.Data); Assert.Equal( expected, (CreatedResult)actual, GetActionResultResponsePersonalLoanModelComparer() ); }
public ILoan Create(LoanType loanType) { ILoan loan = null; switch (loanType) { case LoanType.HomeLoan: loan = new HomeLoan(); break; case LoanType.CarLoan: loan = new CarLoan(); break; case LoanType.PersonalLoan: loan = new PersonalLoan(); break; default: break; } return(loan); }
public void CalculateLoanTest() { PersonalLoanModel personalLoanModel = CreatePersonalLoanModel(); var personalLoan = new PersonalLoan(PersonalLoanName, 1, 1, 1, Payback.EveryMonth); mapperMock.Setup(m => m.Map <PersonalLoan>(personalLoanModel)).Returns(personalLoan); var loanCalculations = new LoanCalculations(1, 1, 1); var expectedLoanValue = new LoanCalculationsModel { Total = 100 }; mapperMock.Setup(m => m.Map <LoanCalculationsModel>(loanCalculations)).Returns(expectedLoanValue); calculatorMock.Setup(c => c.Calculate(personalLoan)).Returns(loanCalculations); var response = loansController.Calculate(personalLoanModel); var actual = (ResponseModel <LoanCalculationsModel>)((ObjectResult)response).Value; var expected = new ResponseModel <LoanCalculationsModel> { Data = expectedLoanValue }; Assert.Equal(expected.Data, actual.Data); }
private static void TemplatePattern() { AutoLoan autoLoan = new AutoLoan(); HomeLoan homeLoan = new HomeLoan(); PersonalLoan personalLoan = new PersonalLoan(); autoLoan.ProcessLoan(); homeLoan.ProcessLoan(); personalLoan.ProcessLoan(); //Template.CarTemplate audi = new Template.Audi(); //Template.CarTemplate bmw = new Template.BMW(); //Template.CarTemplate benz = new Template.Benz(); //audi.BuildCare(); //bmw.BuildCare(); //benz.BuildCare(); //HouseTemplate woodenHouse = new WoodenHouse(); //woodenHouse.BuildHouse(); //HouseTemplate glassHouse = new GlassHouse(); //glassHouse.BuildHouse(); }
public void GetTest() { PersonalLoanModel personalLoanModel = CreatePersonalLoanModel(); var personalLoan = new PersonalLoan(PersonalLoanName, 1, 1, 1, Payback.EveryMonth, PersonalLoanId); mapperMock.Setup(m => m.Map <PersonalLoanModel>(personalLoan)).Returns(personalLoanModel); loansRepositoryMock.Setup(m => m.Get(PersonalLoanId)).Returns(personalLoan); var expectedResponse = new ResponseModel <PersonalLoanModel>() { Data = personalLoanModel }; var expected = new ObjectResult(expectedResponse) { StatusCode = (int)HttpStatusCode.OK }; var actual = loansController.Get(PersonalLoanId); Assert.Equal( expected, (ObjectResult)actual, GetActionResultResponsePersonalLoanModelComparer() ); }
private decimal getOneMonthAmount(PersonalLoan loan) => getOnePercentsAmount(getOneMonthAmountWithoutPercents(loan)) * loan.RatePercents + getOneMonthAmountWithoutPercents(loan);
private decimal getTotalAmount(PersonalLoan loan) => getOneMonthAmount(loan) * loan.TermMonths;
private decimal getOneMonthAmountWithoutPercents(PersonalLoan loan) => loan.Amount / loan.TermMonths;
public MemberModule() { Get("/members", args => { var db = new LibraryContext(); var memberz = db.Members.Include(m => m.Loans).ToList(); return(View["MemberIndex", memberz]); }); Get("/members/page/{size}/{pg}", args => { var db = new LibraryContext(); var nummembers = db.Members.Count(); var memberz = db.Members.ToArray(); ArrayList subset = new ArrayList(); if (args.size * (args.pg - 1) < nummembers) { if (args.size * args.pg < nummembers) { for (var i = args.size * (args.pg - 1); i < args.size * args.pg; i++) { subset.Add(memberz[i]); } } else { for (var i = args.size * (args.pg - 1); i < nummembers; i++) { subset.Add(memberz[i]); } } } else { subset.Add(new Member { FirstMidName = null, LastName = null }); } return(View["MemberIndex", subset]); }); Get("/members/new", args => View["NewMemberForm"]); Get("/members/new/confirmnewmember/{fname}/{lname}", args => { Member newM = new Member() { FirstMidName = args.fname, LastName = args.lname, }; return(View["NewMember", newM]); }); Get("/members/{id}", args => { var db = new LibraryContext(); var member = db.Members.Find((int)args.id); return(View["SingleMember", member]); }); Get("/members/{id}/confirmDelete", args => { var db = new LibraryContext(); var member = db.Members.Find((int)args.id); return(View["DeleteMember", member]); }); Get("/deletemember/{id}", args => { var db = new LibraryContext(); Member memberToBeDeleted = db.Members.Find((int)args.id); db.Members.Remove(memberToBeDeleted); db.SaveChanges(); var memberz = db.Members.ToList(); return(View["MemberIndex", memberz]); }); Post("/deletemember", args => { var db = new LibraryContext(); Member memberToBeDeleted = db.Members.Find((int)args.id); db.Members.Remove(memberToBeDeleted); db.SaveChanges(); return(this.Context.GetRedirect("/members/")); }); Post("/members", args => { var db = new LibraryContext(); Member newM = new Member() { FirstMidName = this.Request.Form.newFirstMidName, LastName = this.Request.Form.newLastName, }; db.Members.Add(newM); db.SaveChanges(); return(this.Context.GetRedirect("/members/" + newM.MemberID)); }); Get("/addtestmember", args => { var db = new LibraryContext(); ArrayList names = new ArrayList { "Jack", "John", "Peter", "Nils", "Will", "Harris", "Adam", "William", "Johan" }; Member newM = new Member { FirstMidName = names[new Random().Next(0, names.Count)].ToString(), LastName = names[new Random().Next(0, names.Count)].ToString() + "son", }; db.Members.Add(newM); db.SaveChanges(); var memberz = db.Members.ToList(); return(this.Context.GetRedirect("/members/" + newM.MemberID)); }); Get("/addmember/{fname}/{lname}", args => { var db = new LibraryContext(); Member newM = new Member() { FirstMidName = args.fname, LastName = args.lname, }; db.Members.Add(newM); db.SaveChanges(); return(View["singlemember", newM]); }); Get("/members/{id}/edit", args => { var db = new LibraryContext(); int id = args.id; Member memberToBeEdited = db.Members.Find(id); return(View["EditMemberForm", memberToBeEdited]); }); Post("/updatemember/", args => { var db = new LibraryContext(); int id = this.Request.Form.IDtobeupdated; var member = db.Members.Find(id); member.FirstMidName = this.Request.Form.newFirstMidName; member.LastName = this.Request.Form.newLastName; db.Members.Update(member); db.SaveChanges(); return(this.Context.GetRedirect("/members/" + member.MemberID)); }); Get("/members/{id}/editpersonalloans", args => { var db = new LibraryContext(); var member = db.Members.Find((int)args.id); var bookz = db.Books.ToList(); var loanz = db.Loans.Where(l => l.Member.Equals(member)).ToList(); PersonalLoan newList = new PersonalLoan { Books = bookz, Member = member, Loans = loanz }; db.Loans.Include(l => l.Copy.Book).ToList(); return(View["EditPersonalLoans", newList]); }); Delete("/members/{id}/removepersonalloan/{bookid}", args => { var db = new LibraryContext(); var bookz = db.Books.ToList(); var member = db.Members.Find((int)args.id); ArrayList newList = new ArrayList { bookz, member }; return(View["EditPersonalLoans", newList[0]]); }); }