Beispiel #1
0
        public static void Init(IServiceProvider serviceProvider)
        {
            using var mortgageDbContext =
                      new MortgageDbContext(serviceProvider.GetRequiredService <DbContextOptions <MortgageDbContext> >());
            if (mortgageDbContext.Mortgages.Any())
            {
                return;
            }

            mortgageDbContext.Mortgages.AddRange(
                new Core.Mortgage.Mortgage
            {
                Lender      = "Bank A",
                Rate        = 2,
                Type        = "Variable",
                LoanToValue = 60
            },
                new Core.Mortgage.Mortgage
            {
                Lender      = "Bank B",
                Rate        = 3,
                Type        = "Fixed",
                LoanToValue = 60
            },
                new Core.Mortgage.Mortgage
            {
                Lender      = "Bank C",
                Rate        = 4,
                Type        = "Variable",
                LoanToValue = 90
            }
                );
            mortgageDbContext.SaveChanges();
        }
        public void CheckMortgage_MaturityPeriodNotFoundReturnsNull()
        {
            var options   = new DbContextOptionsBuilder <MortgageDbContext>().UseInMemoryDatabase(databaseName: "MortgageDbTest2").Options;
            var dbContext = new MortgageDbContext(options);

            Seed(dbContext);

            var service = new MortgageService(new MortgageRateRepository(dbContext));

            var res = service.CheckMortgage(0, 99, 0, 0);

            Assert.Null(res);
        }
        public void GetMortgageRates_ReturnsRatesList()
        {
            var options   = new DbContextOptionsBuilder <MortgageDbContext>().UseInMemoryDatabase(databaseName: "MortgageDbTest1").Options;
            var dbContext = new MortgageDbContext(options);

            Seed(dbContext);

            var service = new MortgageService(new MortgageRateRepository(dbContext));

            var rates = service.GetMortgageRates();

            Assert.NotEmpty(rates);
            Assert.Equal(12, rates.Count);
        }
        public void CheckMortgage_ReturnsNotFeasibleResult_MortgageMoreThanHome()
        {
            var options   = new DbContextOptionsBuilder <MortgageDbContext>().UseInMemoryDatabase(databaseName: "MortgageDbTest4").Options;
            var dbContext = new MortgageDbContext(options);

            Seed(dbContext);

            var service = new MortgageService(new MortgageRateRepository(dbContext));

            var res = service.CheckMortgage(200000, 10, 150000, 160000);

            Assert.NotNull(res);
            Assert.False(res.IsFeasible);
        }
        public void CheckMortgage_IsFeasible()
        {
            var options   = new DbContextOptionsBuilder <MortgageDbContext>().UseInMemoryDatabase(databaseName: "MortgageDbTest5").Options;
            var dbContext = new MortgageDbContext(options);

            Seed(dbContext);

            var service = new MortgageService(new MortgageRateRepository(dbContext));

            var res = service.CheckMortgage(60000, 10, 200000, 250000);

            Assert.NotNull(res);
            Assert.True(res.IsFeasible);
            Assert.True(Math.Abs(1781.75546 - res.MonthlyCost) < 0.00001);
            //Assert.Equal(1781.7554685308316,res.MonthlyCost);
        }
        void Seed(MortgageDbContext context)
        {
            context.MortgageRates.AddRange(
                new MortgageRate
            {
                InterestRate   = 1.24,
                LastUpdate     = DateTime.Now,
                MaturityPeriod = 1,
            },
                new MortgageRate
            {
                InterestRate   = 1.24,
                LastUpdate     = DateTime.Now,
                MaturityPeriod = 2,
            },
                new MortgageRate
            {
                InterestRate   = 1.24,
                LastUpdate     = DateTime.Now,
                MaturityPeriod = 3,
            },
                new MortgageRate
            {
                InterestRate   = 1.27,
                LastUpdate     = DateTime.Now,
                MaturityPeriod = 5,
            },
                new MortgageRate
            {
                InterestRate   = 1.27,
                LastUpdate     = DateTime.Now,
                MaturityPeriod = 6,
            },
                new MortgageRate
            {
                InterestRate   = 1.28,
                LastUpdate     = DateTime.Now,
                MaturityPeriod = 7,
            },
                new MortgageRate
            {
                InterestRate   = 1.34,
                LastUpdate     = DateTime.Now,
                MaturityPeriod = 10,
            },
                new MortgageRate
            {
                InterestRate   = 1.57,
                LastUpdate     = DateTime.Now,
                MaturityPeriod = 12,
            },
                new MortgageRate
            {
                InterestRate   = 1.65,
                LastUpdate     = DateTime.Now,
                MaturityPeriod = 15,
            },
                new MortgageRate
            {
                InterestRate   = 1.65,
                LastUpdate     = DateTime.Now,
                MaturityPeriod = 17,
            },
                new MortgageRate
            {
                InterestRate   = 1.75,
                LastUpdate     = DateTime.Now,
                MaturityPeriod = 20
            },
                new MortgageRate
            {
                InterestRate   = 1.99,
                LastUpdate     = DateTime.Now,
                MaturityPeriod = 30,
            }
                );

            context.SaveChanges();
        }
 public MortgageRepository(MortgageDbContext context)
 {
     _context = context;
 }