public CustomersControllerTests() { // Instantiating the DbContext object. // With each test a new instance of the DbContext object is created. var options = new DbContextOptionsBuilder <CustomersDbContext>() .UseInMemoryDatabase(databaseName: Guid.NewGuid().ToString()) .Options; _context = new CustomersDbContext(options); _context.Database.EnsureCreated(); // The prepopulated customers of our Data Store. var customers = new[] { new Customer { Id = 1, firstName = "Steve", lastName = "Rogers", dateOfBirth = new DateTime(1910, 1, 1) }, new Customer { Id = 2, firstName = "Tony", lastName = "Stark", dateOfBirth = new DateTime(1970, 2, 2) }, new Customer { Id = 3, firstName = "Bruce", lastName = "Banner", dateOfBirth = new DateTime(1975, 3, 3) }, new Customer { Id = 4, firstName = "Peter", lastName = "Parker", dateOfBirth = new DateTime(2002, 4, 4) } }; _context.Customers.AddRange(customers); _context.SaveChanges(); var controller = new CustomersController(_context); var query = new CustomersController(_context); }
/// <summary> /// Initializes a new instace of <seealso cref="CustomersProvider"/> /// </summary> /// <param name="dbContext"></param> /// <param name="logger"></param> /// <param name="mapper"></param> public CustomersProvider(CustomersDbContext dbContext, ILogger <CustomersProvider> logger, IMapper mapper) { _dbContext = dbContext; _logger = logger; _mapper = mapper; SeedData(); }
public PaymentsViewModel(string searchPartOfName = "", DateTime searchDate = new DateTime()) { using (var context = new CustomersDbContext()) { var query = context.Payments.Join(context.Customers, payment => payment.CustomerId, customer => customer.CustomerId, (payment, customer) => new FullPaymentInfo() { Name = customer.CustomerName, Time = payment.PaymentDate, Sum = payment.Sum, }); if (!string.IsNullOrWhiteSpace(searchPartOfName)) { query = query.Where(p => p.Name.Contains(searchPartOfName)); } if (searchDate != DateTime.MinValue) { query = query.Where(p => p.Time.Day == searchDate.Day && p.Time.Month == searchDate.Month && p.Time.Year == searchDate.Year); } Payments = query.ToList(); } }
public CustomersProvider(CustomersDbContext dbContext, ILogger <CustomersProvider> logger, IMapper mapper) { this.dbContext = dbContext; this.logger = logger; this.mapper = mapper; SeedData(); }
public CustomersProvider(CustomersDbContext context, ILogger <CustomersProvider> logger, IMapper mapper) { DataContext = context; Mapper = mapper; Logger = logger; SeedData(); }
public async Task InsertCustomersSampleData(CustomersDbContext db) { var states = GetStates(); db.States.AddRange(states); try { int numAffected = await db.SaveChangesAsync(); _Logger.LogInformation(@"Saved {numAffected} states"); } catch (Exception exp) { _Logger.LogError($"Error in {nameof(CustomersDbSeeder)}: " + exp.Message); throw; } var customers = GetCustomers(states); db.Customers.AddRange(customers); try { int numAffected = await db.SaveChangesAsync(); _Logger.LogInformation($"Saved {numAffected} customers"); } catch (Exception exp) { _Logger.LogError($"Error in {nameof(CustomersDbSeeder)}: " + exp.Message); throw; } }
public async Task InsertCustomersSampleData(CustomersDbContext db) { var states = GetStates(); db.States.AddRange(states); try { await db.SaveChangesAsync(); } catch (Exception exp) { _logger.LogError($"Error in {nameof(CustomersDbSeeder)}: " + exp.Message); throw; } var customers = GetCustomers(states); db.Customers.AddRange(customers); try { await db.SaveChangesAsync(); } catch (Exception exp) { _logger.LogError($"Error in {nameof(CustomersDbSeeder)}: " + exp.Message); throw; } }
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline. public void Configure(IApplicationBuilder app, IWebHostEnvironment env, CustomersDbContext dbContext) { if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); } else { app.UseExceptionHandler("/Home/Error"); } app.UseStaticFiles(); app.UseRouting(); app.UseAuthorization(); app.UseEndpoints(endpoints => { endpoints.MapControllerRoute( name: "default", pattern: "{controller=Home}/{action=Index}/{id?}"); }); var db = dbContext.Database; if (db != null) { db.EnsureCreated(); } }
public CustomersService(CustomersDbContext dbContext, ILogger <CustomersService> logger, IMapper mapper) { this.dbContext = dbContext; this.logger = logger; this.mapper = mapper; SeedData(); }
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline. public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory, CustomersDbContext dbContext) { loggerFactory.AddConsole(Configuration.GetSection("Logging")); loggerFactory.AddDebug(); if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); app.UseBrowserLink(); } else { app.UseExceptionHandler("/Home/Error"); } app.UseStaticFiles(); app.UseMvc(routes => { routes.MapRoute( name: "default", template: "{controller=Home}/{action=Index}/{id?}"); }); var db = dbContext.Database; if (db != null) { db.EnsureCreated(); } }
public async Task TestDeleteCustomerOnMissingCustomer() { using var context = new CustomersDbContext(dbContextOptions); var result = await customersController.DeleteCustomerAsync(3); Assert.That(result, Is.InstanceOf <NotFoundResult>()); Assert.That(context.Customers.Count(), Is.EqualTo(2)); }
public CustomersProvider(CustomersDbContext dbContext, ILogger <CustomersProvider> logger, IMapper mapper) { this.dbContext = dbContext; this.logger = logger; this.mapper = mapper; //Create sample data for microservices SeedData(); }
public CustomersUnitTest() { var context = new CustomersDbContext(dbContextOptions); DummyDataDbInitializer db = new DummyDataDbInitializer(); db.Seed(context, seedRowsCount); customersDAL = new CustomerDataAccessLayer(context); }
public CustomersProvider(CustomersDbContext dbContext, ILogger <CustomersProvider> logger, IMapper mapper, IConfigurationProvider configurationProvider, IEventBus eventBus) { this.dbContext = dbContext; this.logger = logger; this.mapper = mapper; this.configurationProvider = configurationProvider; this.eventBus = eventBus; }
public async Task Setup() { using var context = new CustomersDbContext(dbContextOptions); await context.AddRangeAsync(customers); await context.SaveChangesAsync(); customersController = new CustomersController(new CustomersDbContext(dbContextOptions)); }
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline. public void Configure(IApplicationBuilder app, IWebHostEnvironment env, CustomersDbContext customerDbContext) { if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); } app.UseExceptionHandler(new ExceptionHandlerOptions { ExceptionHandler = (c) => { var exception = c.Features.Get <IExceptionHandlerFeature>(); var message = "There has been some error"; var statusCode = exception.Error.GetType().Name switch { "ArgumentException" => HttpStatusCode.BadRequest, "DbUpdateConcurrencyException" => HttpStatusCode.NotFound, _ => HttpStatusCode.InternalServerError }; switch (statusCode) { case HttpStatusCode.BadRequest: message = "Invalid request"; break; case HttpStatusCode.NotFound: message = "No records found"; break; } c.Response.StatusCode = (int)statusCode; var content = Encoding.UTF8.GetBytes(message); c.Response.Body.WriteAsync(content, 0, content.Length); return(Task.CompletedTask); } }); app.UseHttpsRedirection(); app.UseRouting(); app.UseAuthorization(); app.UseEndpoints(endpoints => { endpoints.MapControllers(); }); customerDbContext.Database.EnsureCreated(); app.UseSwagger(); app.UseSwaggerUI(swaggerUIOptions => { swaggerUIOptions.SwaggerEndpoint("/swagger/Customers/swagger.json", "CustomersApi V1"); }); } }
public async Task GetCustomerByName_NonExistingId_ReturnsNull() { using (var context = new CustomersDbContext(_options)) { var repository = new CustomersRepository(context, _mapper); var result = await repository.GetCustomersAsync("Ned Stark"); result.Should().BeEmpty(); } }
public async Task TestDeleteCustomer() { using var context = new CustomersDbContext(dbContextOptions); var id = 2; var result = await customersController.DeleteCustomerAsync(id); Assert.That(result, Is.InstanceOf <OkResult>()); Assert.That(context.Customers.Any(c => c.Id == id), Is.False); }
public async Task GetCustomer_NonExistingId_ReturnsNull() { using (var context = new CustomersDbContext(_options)) { var repository = new CustomersRepository(context, _mapper); var result = await repository.GetCustomerAsync(999); result.Should().BeNull(); } }
public async Task DeleteCustomer_InvalidParams_ThrowsException() { using (var context = new CustomersDbContext(_options)) { var repository = new CustomersRepository(context, _mapper); Func <Task> result = async() => await repository.DeleteCustomerAsync(99999); await result.Should().ThrowAsync <Exception>(); } }
public CustomerRepository ( CustomersDbContext context, ICacheProvider cacheProvider, IApiIdentity apiIdentity ) { Context = context; this._cacheProvider = cacheProvider; _apiIdentity = apiIdentity; }
public async Task GetOrder_ExistingOrderId_ReturnsOrder() { using (var context = new CustomersDbContext(_options)) { var repository = new CustomersRepository(context, _mapper); var result = await repository.GetOrderAsync(1111, 1234); result.Should().NotBeNull(); result.Id.Should().Be(1234); } }
public async Task GetCustomer_ExistingIdWithIncludeOrders_ReturnsCustomerWithOrders() { using (var context = new CustomersDbContext(_options)) { var repository = new CustomersRepository(context, _mapper); var result = await repository.GetCustomerAsync(1000, true); result.Id.Should().Be(1000); result.Orders.Should().NotBeEmpty(); } }
public async Task GetOrders_ExistingCustomerId_ReturnsOrders() { using (var context = new CustomersDbContext(_options)) { var repository = new CustomersRepository(context, _mapper); var result = (await repository.GetOrdersAsync(1111)).ToList(); result.Should().NotBeEmpty(); result.First().Id.Should().BeGreaterThan(0); } }
public async Task GetCustomers_WithoutIncludeOrders_ReturnsCustomersWithoutOrders() { using (var context = new CustomersDbContext(_options)) { var repository = new CustomersRepository(context, _mapper); var result = (await repository.GetCustomersAsync()).ToList(); result.Should().NotBeEmpty(); result[0].Orders.Should().BeEmpty(); } }
public async Task GetCustomers_WithIncludeOrders_ReturnsCustomersWithOrders() { using (var context = new CustomersDbContext(_options)) { var repository = new CustomersRepository(context, _mapper); var result = (await repository.GetCustomersAsync(includeOrders: true)).ToList(); result.Should().NotBeEmpty(); result.SelectMany(c => c.Orders).Should().NotBeEmpty(); } }
public static CustomersDbContext InitContextWithInMemoryDbSupport() { var options = new DbContextOptionsBuilder <CustomersDbContext>() .UseInMemoryDatabase(Guid.NewGuid().ToString()).Options; var _dbContext = new CustomersDbContext(options); _dbContext.Database.EnsureCreated(); return(_dbContext); }
public static bool HaveDataInDb() { using (var dbContext = new CustomersDbContext()) { if (dbContext.Customers.Any()) { return(true); } } return(false); }
public static void SeedData() { using (var dbContext = new CustomersDbContext()) { if (!dbContext.Customers.Any() && !dbContext.Payments.Any()) { dbContext.Customers.AddRange(CustomersSeedData.GetSeedData()); dbContext.Payments.AddRange(PaymentsSeedData.GetSeedData()); dbContext.SaveChanges(); } } }
public static void SeedTestData(CustomersDbContext dbContext) { for (int i = 1; i <= 10; i++) { dbContext.Customers.Add(new Core.Entities.Customer { Id = i, Address = $"Address {i}", Name = $"Name {i}" }); } dbContext.SaveChanges(); }
public async Task GetCustomerByName_ExistingId_ReturnsCustomerWithoutOrders() { using (var context = new CustomersDbContext(_options)) { var repository = new CustomersRepository(context, _mapper); var result = (await repository.GetCustomersAsync("Elon Musk")).ToArray(); result.Should().NotBeEmpty(); result[0].Id.Should().BeGreaterThan(0); result[0].Name.Should().Be("Elon Musk"); result[0].Orders.Should().BeEmpty(); } }
public CustomersRepository(CustomersDbContext context, ILoggerFactory loggerFactory) { _context = context; _logger = loggerFactory.CreateLogger("CustomersRepository"); }