예제 #1
0
        public void CalculateDeifferentCredit()
        {
            var unitOfWork = new Mock <IUnitOfWork>();

            var creditDTO = GetCreditDto();
            var credit    = GetCredit();

            unitOfWork.Setup(repo => repo.Credits.Get(GetCreditDto().Id)).Returns(credit);
            unitOfWork.Setup(repo => repo.SpecialPercentagePeriods.AddRange(new List <SpecialPercentagePeriod>())).Returns(() => null);
            unitOfWork.Setup(repo => repo.MonthPayments.AddRange(new List <MonthPayment>())).Returns(() => null);
            unitOfWork.Setup(repo => repo.Complete()).Returns(() => Task.Run(() => 1));

            var mockMapper = new MapperConfiguration(cfg =>
            {
                cfg.AddProfile(new AutomapperProfile());
            });
            var mapper = mockMapper.CreateMapper();


            var creditService = new CreditService(unitOfWork.Object, mapper);

            var result = creditService.Calculate(creditDTO);

            var firstPersantege = GetCreditDto().SpecialPersentages.Count > 0 ? GetCreditDto().SpecialPersentages.First().MonthPercentage : GetCreditDto().BasePercenteges;

            Assert.True(result.Result.IsSuccess);

            Assert.Equal(GetCreditDto().MonthsCount, result.Result?.ReturnValue?.MonthPayments.Count());

            var percentegePayment = GetCreditDto().Amount *firstPersantege / 100 / 12;

            Assert.Equal(percentegePayment, result.Result.ReturnValue.MonthPayments.FirstOrDefault()?.PersentegesPyment);
        }