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