Beispiel #1
0
        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();
        }
Beispiel #2
0
        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);
        }
Beispiel #3
0
        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"));
        }
Beispiel #4
0
        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);
        }
Beispiel #6
0
        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();
        }
Beispiel #7
0
        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);
            }
        }
Beispiel #8
0
        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);
        }
Beispiel #9
0
        private void ResetDatabase()
        {
            var options = new DbContextOptionsBuilder <eFlightDbContext>().UseSqlServer(SetupTest._appSettings.ConnectionString).Options;

            _context = new eFlightDbContext(options);
            _seeder  = new TestSeed(_context);
            _seeder.RunSeed();
        }
Beispiel #10
0
        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());
        }
Beispiel #11
0
        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());
        }
Beispiel #12
0
        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();
            }
        }
Beispiel #13
0
        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();
            }
        }
Beispiel #14
0
        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();
            }
        }
Beispiel #15
0
        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);
            }
        }
Beispiel #16
0
        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);
            }
        }
Beispiel #17
0
        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();
            }
        }
Beispiel #18
0
        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);
            }
        }
Beispiel #19
0
        // 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);
        }
Beispiel #20
0
        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);
        }
Beispiel #22
0
        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);
        }
Beispiel #24
0
        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);
            }
        }
Beispiel #25
0
        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();
 }
Beispiel #28
0
        /// <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();
            });
        }
Beispiel #29
0
        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);
        }