public void ApplySearch_NoMatchingSearchValue_ShouldReturnQuery() { //arrange var query = TestSeed.GetQueryableEmployees(); var dtPostModel = new DataTablesOptions { Columns = new List <Column> { new Column { Data = "FirstName", Searchable = true }, new Column { Data = "LastName", Searchable = true } }, Search = new Search { Regex = string.Empty, Value = "Oh my God, zombies!" } }; //act var result = query.ApplySearch(dtPostModel, _propertyMappings).ToList(); //assert result.Should().BeNullOrEmpty(); }
public void ApplySearch_NonStringValue_MatchingSearchValue_ShouldReturnAllMatchingEntities() { //arrange var query = TestSeed.GetQueryableEmployees(); var expectedId = query.First().Id; var dtPostModel = new DataTablesOptions { Columns = new List <Column> { new Column { Data = "Id", Searchable = true } }, Search = new Search { Regex = string.Empty, Value = expectedId.ToString() } }; //act var result = query.ApplySearch(dtPostModel, _propertyMappings).ToList(); //assert result.Should().NotBeNullOrEmpty(); result.Count.Should().Be(1); result.First().Id.Should().Be(expectedId); }
public void ApplySearch_NestedProperty_ShouldReturnAllMatchingEntities() { //arrange var query = TestSeed.GetQueryableEmployees(); var expected = query.Where(e => e.Company.Name.Equals("Microsoft")).ToList(); var dtPostModel = new DataTablesOptions { Columns = new List <Column> { new Column { Data = "Company.Name", Searchable = true } }, Search = new Search { Regex = string.Empty, Value = "Microsoft" } }; //act var result = query.ApplySearch(dtPostModel, _propertyMappings).ToList(); //assert result.Should().NotBeNullOrEmpty(); result.Count.Should().Be(expected.Count); result.Select(e => e.Company.Name.Should().Be("Microsoft")); }
public void ApplySort_NoOrderableColumnsDefined_ShouldReturnQuery() { //arrange var query = TestSeed.GetQueryableEmployees(); var dtPostModel = new DataTablesOptions { Order = new List <Order> { new Order { Column = 0, Dir = "asc" } }, Columns = new List <Column> { new Column { Orderable = false } } }; //act var result = query.ApplySort(dtPostModel, _propertyMappings).ToList(); //assert result.Should().BeEquivalentTo(query.ToList()); }
public void Create_Should_Return_Data_For_The_Last_Page() { //arrange var items = new List <Item>(); for (var i = 0; i <= 5; i++) { items.AddRange(TestSeed.GetItemsForTesting()); } var sourceCount = items.Count; var paginationData = new DataTablesOptions { Length = 5, Start = 15 }; //act var result = PagedList <Item> .Create(items.AsQueryable(), paginationData); //assert result.Count.Should().Be(sourceCount - paginationData.Start); result.PageSize.Should().Be(paginationData.Length); result.PageNumber.Should().Be(4); result.TotalCount.Should().Be(sourceCount); }
public static void Main(string[] args) { var host = CreateHostBuilder(args).Build(); using (var scope = host.Services.CreateScope()) { var services = scope.ServiceProvider; try { var context = services.GetDbContext(); var userManager = services.GetRequiredService <UserManager <User> >(); var roleManager = services.GetRequiredService <RoleManager <Role> >(); TestSeed.SeedIdentity(userManager, roleManager); TestSeed.SeedHardware(context); TestSeed.SeedGames(context); } catch (Exception e) { var logger = services.GetRequiredService <ILogger <Program> >(); logger.LogError(e, "error accured during seeding"); } } host.Run(); }
public async Task CreateAsync_Should_Create_Item() { using (var context = await InMemoryDbContext.GetContext().SeedDabase(TestSeed.GetItemsForTesting())) { //arrange var repository = new ToDoItemRepository(context); //act var itemToAdd = new Item { Name = "Find Princess Leia", AdditionalInformation = "Princess has been abducted, we have to find her!", Completed = false, Deadline = DateTime.Today.AddDays(1), LastUpdated = DateTime.Today, UserId = Guid.NewGuid() }; var totalCount = await context.ToDoItems.CountAsync(); var result = await repository.CreateAsync(itemToAdd); //assert result.Should().NotBeNull(); result.Id.Should().NotBe(Guid.Empty); context.ToDoItems.Count().Should().Be(totalCount + 1); } }
public void ApplySort_SortByDescending_NestedClassProperty_ShouldReturnSortedEntities() { //arrange var query = TestSeed.GetQueryableEmployees(); var dtPostModel = new DataTablesOptions { Columns = new List <Column> { new Column { Data = "Company.Name", Orderable = true } }, Order = new List <Order> { new Order { Column = 0, Dir = "desc" } } }; //act var result = query.ApplySort(dtPostModel, _propertyMappings).ToList(); //assert result.Should().BeInDescendingOrder(e => e.Company.Name); }
private void ResetDatabase() { var options = new DbContextOptionsBuilder <eFlightDbContext>().UseSqlServer(SetupTest._appSettings.ConnectionString).Options; _context = new eFlightDbContext(options); _seeder = new TestSeed(_context); _seeder.RunSeed(); }
public void ApplySearch_NoSearchableColumns_ShouldReturnQuery() { //arrange var query = TestSeed.GetQueryableEmployees(); //act var result = query.ApplySearch(new DataTablesOptions(), _propertyMappings).ToList(); //assert result.Should().BeEquivalentTo(query.ToList()); }
public void ApplySort_NoOrderDefined_ShouldReturnQuery() { //arrange var query = TestSeed.GetQueryableEmployees(); var dtPostModel = new DataTablesOptions(); //act var result = query.ApplySort(dtPostModel, _propertyMappings).ToList(); //assert result.Should().BeEquivalentTo(query.ToList()); }
public async Task ItemExistsAsync_ItemDosNotExist_Should_Return_False() { using (var context = await InMemoryDbContext.GetContext().SeedDabase(TestSeed.GetItemsForTesting())) { //arrange var repository = new ToDoItemRepository(context); //act var result = await repository.ItemExistsAsync(Guid.Empty); //assert result.Should().BeFalse(); } }
public async Task GetSingleAsync_No_Such_Item_Should_Return_Null() { using (var context = await InMemoryDbContext.GetContext().SeedDabase(TestSeed.GetItemsForTesting())) { //arrange var repository = new ToDoItemRepository(context); //act var result = await repository.GetSingleAsync(Guid.NewGuid()); //assert result.Should().BeNull(); } }
public async Task FindByAsync_ItemDosNotExist_Should_Return_EmptyCollection() { using (var context = await InMemoryDbContext.GetContext().SeedDabase(TestSeed.GetItemsForTesting())) { //arrange var repository = new ToDoItemRepository(context); //act var result = await repository.FindByAsync(item => item.Name.Equals("Oh my God, Zombies!")); //assert result.Should().BeNullOrEmpty(); } }
public async Task GetAllAsync_Should_Return_All_Entries() { using (var context = await InMemoryDbContext.GetContext().SeedDabase(TestSeed.GetItemsForTesting())) { //arrange var repository = new ToDoItemRepository(context); //act var result = await repository.GetAllAsync(); //assert result.Should().NotBeNullOrEmpty(); result.Count.Should().BeGreaterOrEqualTo(TestSeed.GetItemsForTesting().Count); } }
public async Task FindByAsync_ItemExists_Should_Return_Item() { using (var context = await InMemoryDbContext.GetContext().SeedDabase(TestSeed.GetItemsForTesting())) { //arrange var repository = new ToDoItemRepository(context); //act var result = await repository.FindByAsync(item => item.Completed); //assert result.Should().NotBeNull(); result.Count.Should().Be(1); } }
public async Task ItemExistsAsync_ItemExists_Should_Return_True() { using (var context = await InMemoryDbContext.GetContext().SeedDabase(TestSeed.GetItemsForTesting())) { //arrange var repository = new ToDoItemRepository(context); //act var item = await context.ToDoItems.FirstAsync(); var result = await repository.ItemExistsAsync(item.Id); //assert result.Should().BeTrue(); } }
public async Task GetSingleAsync_Should_Return_Signle_Item() { using (var context = await InMemoryDbContext.GetContext().SeedDabase(TestSeed.GetItemsForTesting())) { //arrange var repository = new ToDoItemRepository(context); //act var itemToFind = await context.ToDoItems.FirstAsync(); var result = await repository.GetSingleAsync(itemToFind.Id); //assert result.Should().NotBeNull(); result.Should().BeEquivalentTo(itemToFind); } }
// This method gets called by the runtime. Use this method to add services to the container. public void ConfigureServices(IServiceCollection services) { services.Configure <CookiePolicyOptions>(options => { // This lambda determines whether user consent for non-essential cookies is needed for a given request. options.CheckConsentNeeded = context => true; options.MinimumSameSitePolicy = SameSiteMode.None; }); services.AddIdentityServer() .AddInMemoryApiResources(TestSeed.GetApiResources()) .AddInMemoryClients(TestSeed.GetClients()) .AddTestUsers(TestSeed.GetTestUsers().ToList()) .AddDeveloperSigningCredential(); services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2); }
public async Task DeleteAsync_Should_Remove_Item() { using (var context = await InMemoryDbContext.GetContext().SeedDabase(TestSeed.GetItemsForTesting())) { //arrange var repository = new ToDoItemRepository(context); //act var itemToDelete = await context.ToDoItems.FirstAsync(); var totalItems = await context.ToDoItems.CountAsync(); await repository.DeleteAsync(itemToDelete.Id); //assert context.ToDoItems.Count().Should().Be(totalItems - 1); } }
public void Create_Should_Create_PagedList_With_Data_Only_For_The_First_Page() { //arrange var paginationData = new DataTablesOptions { Length = 3, Start = 0 }; var items = TestSeed.GetItemsForTesting(); //act var result = PagedList <Item> .Create(items.AsQueryable(), paginationData); //assert result.Count.Should().Be(paginationData.Length); result.PageSize.Should().Be(paginationData.Length); result.PageNumber.Should().Be(1); result.TotalCount.Should().Be(items.Count); }
public DatabaseFixture() { _appSettings = new ConfigurationBuilder() .AddJsonFile("appsettings.json") .Build(); _connectionString = _appSettings.GetValue <string>("AppSettings:ConnectionString"); var serviceProvider = new ServiceCollection() .AddEntityFrameworkInMemoryDatabase() .BuildServiceProvider(); var options = new DbContextOptionsBuilder <ProjectsPortifolioDbContext>() .UseInMemoryDatabase(_connectionString) .UseInternalServiceProvider(serviceProvider) .Options; Context = new ProjectsPortifolioDbContext(options); Seeder = new TestSeed(Context); Seeder.RunSeed(); }
public void HandleDataTablesRequest_OderBy_Name_Desc_Should_Return_Items_Ordered_By_Name_Desc() { //arrange var queryString = "{" + "\"draw\":1," + "\"columns\":" + "[" + "{\"data\":\"id\",\"name\":\"\",\"searchable\":true,\"orderable\":true,\"search\":{\"value\":\"\",\"regex\":false}}" + ",{\"data\":\"name\",\"name\":\"\",\"searchable\":true,\"orderable\":true,\"search\":{\"value\":\"\",\"regex\":false}}," + "{\"data\":\"deadLine\",\"name\":\"\",\"searchable\":false,\"orderable\":true,\"search\":{\"value\":\"\",\"regex\":false}}," + "{\"data\":\"lastUpdated\",\"name\":\"\",\"searchable\":false,\"orderable\":true,\"search\":{\"value\":\"\",\"regex\":false}}," + "{\"data\":\"completed\",\"name\":\"\",\"searchable\":false,\"orderable\":true,\"search\":{\"value\":\"\",\"regex\":false}}" + "]," + "\"order\":[{\"column\":1,\"dir\":\"desc\"}],\"start\":0,\"length\":10,\"search\":{\"value\":\"\",\"regex\":false}" + "}"; //act var result = TestSeed.GetItemsForTesting().AsQueryable().HandleDataTablesRequest(queryString); //assert result.Should().BeInDescendingOrder(i => i.Name); }
public async Task UpdateAsync_Should_Update_Item() { using (var context = await InMemoryDbContext.GetContext().SeedDabase(TestSeed.GetItemsForTesting())) { //arrange var repository = new ToDoItemRepository(context); //act var item = await context.ToDoItems.FirstAsync(); item.AdditionalInformation = "New Info"; item.Name = "New Name"; await repository.UpdateAsync(item); //assert var updatedItem = await context.ToDoItems.FirstAsync(); updatedItem.AdditionalInformation.Should().Be(item.AdditionalInformation); updatedItem.Name.Should().Be(item.Name); } }
public static void Main(string[] args) { var host = CreateHostBuilder(args).Build(); using (var scope = host.Services.CreateScope()) { var services = scope.ServiceProvider; try { var context = services.GetRequiredService <ApplicationDbContext>(); var userManager = services.GetRequiredService <UserManager <IdentityUser> >(); context.Database.Migrate(); TestSeed.SeedUsers(userManager); } catch (Exception e) { var logger = services.GetRequiredService <ILogger <Program> >(); logger.LogError(e, "An error occured during migration"); } } host.Run(); }
public void HandleDataTablesRequest_Search_Not_Empty_Should_Return_Items_With_Name_Containing_Search_Term() { //arrange var searchTerm = "Luke"; var queryString = "{" + "\"draw\":2," + "\"columns\":" + "[" + "{\"data\":\"id\",\"name\":\"\",\"searchable\":false,\"orderable\":true,\"search\":{\"value\":\"\",\"regex\":false}}," + "{\"data\":\"name\",\"name\":\"\",\"searchable\":true,\"orderable\":true,\"search\":{\"value\":\"\",\"regex\":false}}," + "{\"data\":\"deadLine\",\"name\":\"\",\"searchable\":false,\"orderable\":true,\"search\":{\"value\":\"\",\"regex\":false}}," + "{\"data\":\"lastUpdated\",\"name\":\"\",\"searchable\":false,\"orderable\":true,\"search\":{\"value\":\"\",\"regex\":false}}," + "{\"data\":\"completed\",\"name\":\"\",\"searchable\":false,\"orderable\":true,\"search\":{\"value\":\"\",\"regex\":false}}" + "]," + "\"order\":[{\"column\":0,\"dir\":\"asc\"}],\"start\":0,\"length\":10,\"search\":{\"value\":\"Luke\",\"regex\":false}" + "}"; //act var result = TestSeed.GetItemsForTesting().AsQueryable().HandleDataTablesRequest(queryString); //assert result.Count.Should().BeGreaterOrEqualTo(1); result.First().Name.Should().Contain(searchTerm); }
public void SetUp() { _employees = TestSeed.GetEmployees(); }
/// <summary> /// This method gets called by the runtime. Use this method to configure the HTTP request pipeline. /// </summary> /// <param name="app"></param> /// <param name="env"></param> /// <param name="testSeed"></param> public void Configure(IApplicationBuilder app, IHostingEnvironment env, TestSeed testSeed) { var environment = Configuration.GetSection("DbSettings")["Environment"]; if (environment.ToLower() == _devEnvironmentName.ToLower()) { testSeed.Seed(); } string epApiHealthChecks = $"/healthchecks"; if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); } else { // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts. app.UseHsts() .UseHttpsRedirection(); } if (env.IsLocal()) { epApiHealthChecks = $"{ServiceBaseUrlPrefix}/healthchecks"; } #region Mapper configuration TypeAdapterConfig <Branch, BranchModel> .NewConfig(); TypeAdapterConfig <Company, CompanyModel> .NewConfig(); TypeAdapterConfig <Branch, CreateBranchModel> .NewConfig(); TypeAdapterConfig <CreateBranchModel, Branch> .NewConfig().Ignore(x => x.BranchContacts); TypeAdapterConfig <Company, CreateCompanyModel> .NewConfig(); TypeAdapterConfig <CreateCompanyModel, Company> .NewConfig().Map(dest => dest.GeoLon, src => src.GeoLog); TypeAdapterConfig <BranchContact, BranchContactModel> .NewConfig(); TenantMappingConfigurations.ConfigureTenantMappers(); #endregion app.UseHealthChecks(epApiHealthChecks, 8083, new HealthCheckOptions { Predicate = _ => true, ResponseWriter = UIResponseWriter.WriteHealthCheckUIResponse }) .UseHealthChecksUI(options => options.ApiPath = epApiHealthChecks) .UseCors("dev") .UseResponseCompression() .UseAuthentication() .UseMvc() .UseSwagger(options => { options.PreSerializeFilters.Add((swaggerDoc, httpReq) => swaggerDoc.BasePath = $"{ServiceBaseUrlPrefix}"); options.RouteTemplate = "/swagger/{documentName}/swagger.json"; // }) .UseSwaggerUI(uiOptions => { uiOptions.SwaggerEndpoint("v1/swagger.json", $"v1.0.0"); uiOptions.DisplayRequestDuration(); }); }
public async Task InitializeAsync() { lock (_lock) { var builder = new ConfigurationBuilder() .AddJsonFile("appsettings.json", optional: true); var configuration = builder.Build(); IWebHostBuilder webHostBuild = WebHost.CreateDefaultBuilder() .UseStartup <TestStartUp>() .UseWebRoot(Directory.GetCurrentDirectory()) .UseContentRoot(Directory.GetCurrentDirectory()); var cableDbConnectionString = configuration.GetConnectionString("cpdb"); var dbConnectionString = configuration.GetConnectionString("db"); if (string.IsNullOrWhiteSpace(cableDbConnectionString) || string.IsNullOrWhiteSpace(dbConnectionString)) { throw new ApplicationException("Missing the connection string to database"); } ; webHostBuild.ConfigureServices(service => { service.AddDbContextPool <CablePortalAppDataContext>(ctxOptions => { ctxOptions.UseInMemoryDatabase(cableDbConnectionString).EnableSensitiveDataLogging(); ctxOptions.ConfigureWarnings(x => x.Ignore(InMemoryEventId.TransactionIgnoredWarning)); }); service.AddDbContextPool <AppDataContext>(ctxOptions => { ctxOptions.UseInMemoryDatabase(dbConnectionString).EnableSensitiveDataLogging(); ctxOptions.ConfigureWarnings(x => x.Ignore(InMemoryEventId.TransactionIgnoredWarning)); }); service.Configure <UserLoginOption>(options => configuration.Bind("TestUserCredential", options)); service.AddScoped <IHttpServiceTest, HttpServiceTest>(); string azureStorageConnectionString = configuration["connectionStrings:storageAccount"]; if (!CloudStorageAccount.TryParse(azureStorageConnectionString, out CloudStorageAccount storageAccount)) { throw new ApplicationException("Missing Azure Blob Storage settings"); } var blobStorageClient = storageAccount.CreateCloudBlobClient(); _cloudBlobContainer = blobStorageClient.GetContainerReference(DefaultCompanyId.ToString()); if (_cloudBlobContainer == null) { throw new ApplicationException("Blob container not exist"); } }); TestServer = new TestServer(webHostBuild); CableDbContext = TestServer.Host.Services.GetRequiredService <CablePortalAppDataContext>(); DbContext = TestServer.Host.Services.GetRequiredService <AppDataContext>(); TestSeed = TestServer.Host.Services.GetRequiredService <TestSeed>(); HttpClient = TestServer.CreateClient(); Fixture = new Fixture(); Fixture.Customizations.Add(new IgnoreVirtualMembers()); _userLogin = TestServer.Host.Services.GetRequiredService <IOptions <UserLoginOption> >()?.Value; HttpServiceTest = TestServer.Host.Services.GetRequiredService <IHttpServiceTest>(); } AdminToken = await HttpServiceTest.GetAuthorizationToken(_userLogin); AdminProfile = await HttpServiceTest.GetUserProfile(AdminToken); }