コード例 #1
0
        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);
        }
コード例 #2
0
 /// <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();
 }
コード例 #3
0
        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();
            }
        }
コード例 #4
0
 public CustomersProvider(CustomersDbContext dbContext, ILogger <CustomersProvider> logger, IMapper mapper)
 {
     this.dbContext = dbContext;
     this.logger    = logger;
     this.mapper    = mapper;
     SeedData();
 }
コード例 #5
0
 public CustomersProvider(CustomersDbContext context, ILogger <CustomersProvider> logger, IMapper mapper)
 {
     DataContext = context;
     Mapper      = mapper;
     Logger      = logger;
     SeedData();
 }
コード例 #6
0
        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;
            }
        }
コード例 #7
0
        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;
            }

        }
コード例 #8
0
        // 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();
 }
コード例 #10
0
        // 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();
            }
        }
コード例 #11
0
        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));
        }
コード例 #12
0
        public CustomersProvider(CustomersDbContext dbContext, ILogger <CustomersProvider> logger, IMapper mapper)
        {
            this.dbContext = dbContext;
            this.logger    = logger;
            this.mapper    = mapper;

            //Create sample data for microservices
            SeedData();
        }
コード例 #13
0
        public CustomersUnitTest()
        {
            var context = new CustomersDbContext(dbContextOptions);
            DummyDataDbInitializer db = new DummyDataDbInitializer();

            db.Seed(context, seedRowsCount);

            customersDAL = new CustomerDataAccessLayer(context);
        }
コード例 #14
0
 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;
 }
コード例 #15
0
        public async Task Setup()
        {
            using var context = new CustomersDbContext(dbContextOptions);
            await context.AddRangeAsync(customers);

            await context.SaveChangesAsync();

            customersController = new CustomersController(new CustomersDbContext(dbContextOptions));
        }
コード例 #16
0
ファイル: Startup.cs プロジェクト: Deep622063/MicroCredential
        // 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");
            });
        }
    }
コード例 #17
0
        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();
            }
        }
コード例 #18
0
        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);
        }
コード例 #19
0
        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();
            }
        }
コード例 #20
0
        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>();
            }
        }
コード例 #21
0
 public CustomerRepository
 (
     CustomersDbContext context,
     ICacheProvider cacheProvider,
     IApiIdentity apiIdentity
 )
 {
     Context             = context;
     this._cacheProvider = cacheProvider;
     _apiIdentity        = apiIdentity;
 }
コード例 #22
0
        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);
            }
        }
コード例 #23
0
        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();
            }
        }
コード例 #24
0
        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);
            }
        }
コード例 #25
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();
            }
        }
コード例 #26
0
        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();
            }
        }
コード例 #27
0
        public static CustomersDbContext InitContextWithInMemoryDbSupport()
        {
            var options = new DbContextOptionsBuilder <CustomersDbContext>()
                          .UseInMemoryDatabase(Guid.NewGuid().ToString()).Options;

            var _dbContext = new CustomersDbContext(options);

            _dbContext.Database.EnsureCreated();

            return(_dbContext);
        }
コード例 #28
0
ファイル: SeedCreator.cs プロジェクト: lazyppanda/ForCarcade
        public static bool HaveDataInDb()
        {
            using (var dbContext = new CustomersDbContext())
            {
                if (dbContext.Customers.Any())
                {
                    return(true);
                }
            }

            return(false);
        }
コード例 #29
0
ファイル: SeedCreator.cs プロジェクト: lazyppanda/ForCarcade
        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();
                }
            }
        }
コード例 #30
0
 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();
 }
コード例 #31
0
        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();
            }
        }
コード例 #32
0
 public CustomersRepository(CustomersDbContext context, ILoggerFactory loggerFactory) {
   _context = context;
   _logger = loggerFactory.CreateLogger("CustomersRepository");
 }