public async Task AddSingleUserToSingleRole() { var testContextBuilder = TestContextBuilder.CreateDefault(builder => builder .AddDatabase() .SeedDefaults() .SeedDataset(Datasets.Dataset1)); await using var testContext = await testContextBuilder.BuildAsync(); var command = new AddUsersToRolesCommand { UserNames = new[] { "JohnDoe", }, RoleNames = new[] { nameof(RoleEnum.Administators) }, }; var commandContext = new CommandContext(command, testContext.Services); var handler = ActivatorUtilities.CreateInstance <AddUsersToRolesCommandHandler>(testContext.Services); await handler.HandleAsync(command, commandContext, default); await using (var dbContext = testContext.CreateReadOnlyDbContext()) { var user = await dbContext.Users .Include(user => user.Roles).ThenInclude(userRole => userRole.Role) .FirstAsync(user => user.UserName == command.UserNames[0]); Assert.Equal(1, user.Roles?.Count); Assert.Contains(user.Roles, userRole => userRole.Role.RoleName == command.RoleNames[0]); } }
public async Task FilterByNamePagedAndSorted() { var testContextBuilder = TestContextBuilder.CreateDefault(builder => builder .AddDatabase() .SeedDefaults() .SeedDataset(Datasets.Dataset1)); await using var testContext = await testContextBuilder.BuildAsync(); var query = new ListUsersQuery { // TODO: SQLite doesn't respect case insensitivity when matching parts of strings UserNamePattern = "Doe", PageSize = 1, OrderColumns = new[] { "+UserName" } }; var queryContext = new QueryContext(query, testContext.Services); var handler = ActivatorUtilities.CreateInstance <ListUsersQueryHandler>(testContext.Services); var result = await handler.HandleAsync(query, queryContext, default); Assert.Equal(1, result.Items?.Length); Assert.Equal(2, result.TotalItemCount); Assert.Contains(result.Items !, item => item.UserId == 12 && item.UserName == "JaneDoe"); }
public async Task QueryDataAnnotationsValidatorInterceptorTest() { var testContextBuilder = TestContextBuilder.CreateDefault(builder => builder .AddServices(services => { services.AddSingleton <IHostApplicationLifetime>(NullHostApplicationLifetime.Instance); services.AddServiceLayer(new OptionsProvider(builder.CreateDataAccessOptions())); }) .AddDatabase(addDataAccessServices: false)); await using var testContext = await testContextBuilder.BuildAsync(); var query = new GetUserQuery { }; var queryDispatcher = testContext.Services.GetRequiredService <IQueryDispatcher>(); var ex = await Assert.ThrowsAsync <ServiceErrorException>( async() => await queryDispatcher.DispatchAsync(query, default)); Assert.Equal(ServiceErrorCode.ParamNotSpecified, ex.ErrorCode); Assert.Equal(new[] { nameof(query.Identifier) }, ex.Args); }
public async Task CommandDataAnnotationsValidatorInterceptorTest() { var testContextBuilder = TestContextBuilder.CreateDefault(builder => builder .AddServices(services => { services.AddSingleton <IHostApplicationLifetime>(NullHostApplicationLifetime.Instance); services.AddServiceLayer(new OptionsProvider(builder.CreateDataAccessOptions())); }) .AddDatabase(addDataAccessServices: false)); await using var testContext = await testContextBuilder.BuildAsync(); var command = new AddUsersToRolesCommand { UserNames = new string[] { }, RoleNames = new string[] { "x" } }; var commandDispatcher = testContext.Services.GetRequiredService <ICommandDispatcher>(); var ex = await Assert.ThrowsAsync <ServiceErrorException>( async() => await commandDispatcher.DispatchAsync(command, default)); Assert.Equal(ServiceErrorCode.ParamNotValid, ex.ErrorCode); Assert.Equal(new[] { nameof(command.UserNames) }, ex.Args); }
public async Task NoParams() { var testContextBuilder = TestContextBuilder.CreateDefault(builder => builder .AddDatabase() .SeedDefaults() .SeedDataset(Datasets.Dataset1)); await using var testContext = await testContextBuilder.BuildAsync(); var query = new ListUsersQuery { }; var queryContext = new QueryContext(query, testContext.Services); var handler = ActivatorUtilities.CreateInstance <ListUsersQueryHandler>(testContext.Services); var result = await handler.HandleAsync(query, queryContext, default); Assert.Equal(3, result.Items?.Length); Assert.Contains(result.Items !, item => item.UserId == 1 && item.UserName == ApplicationConstants.BuiltInRootUserName); Assert.Contains(result.Items !, item => item.UserId == 11 && item.UserName == "JohnDoe"); Assert.Contains(result.Items !, item => item.UserId == 12 && item.UserName == "JaneDoe"); }