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);
        }
Exemplo n.º 3
0
 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));
        }
Exemplo n.º 8
0
        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
                });
            }
        }
Exemplo n.º 9
0
        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);
        }
Exemplo n.º 10
0
        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()
                );
        }
Exemplo n.º 11
0
        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);
        }
Exemplo n.º 12
0
        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);
        }
Exemplo n.º 13
0
        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();
        }
Exemplo n.º 14
0
        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()
                );
        }
Exemplo n.º 15
0
 private decimal getOneMonthAmount(PersonalLoan loan) => getOnePercentsAmount(getOneMonthAmountWithoutPercents(loan)) * loan.RatePercents + getOneMonthAmountWithoutPercents(loan);
Exemplo n.º 16
0
 private decimal getTotalAmount(PersonalLoan loan) => getOneMonthAmount(loan) * loan.TermMonths;
Exemplo n.º 17
0
 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]]);
            });
        }