public async Task <Result <SafeLocationResponseModel> > Handle(AddSafeLocation request, CancellationToken cancellationToken) { var isValid = await _validator.IsValidAsync(request); if (!isValid) { return(Result.Failure <SafeLocationResponseModel>("Validation failed")); } var group = await _context .Groups .FirstOrDefaultAsync(g => g.Id == request.GroupId, cancellationToken); var groupSafeLocation = new GroupSafeLocation { Latitude = request.SafeLocation.Latitude, Longitude = request.SafeLocation.Longitude, Name = request.SafeLocation.Name, Group = group }; var newLocation = await _context.GroupsSafeLocations.AddAsync(groupSafeLocation, cancellationToken); await _context.SaveChangesAsync(cancellationToken); return(new SafeLocationResponseModel { Latitude = newLocation.Entity.Latitude, Longitude = newLocation.Entity.Longitude, Name = newLocation.Entity.Name, Id = newLocation.Entity.Id, GroupId = newLocation.Entity.Group.Id }); }
public async Task Invalidate_request_when_user_is_not_admin_of_group() { // Arrange string userSub = Guid.NewGuid().ToString(); string adminSub = Guid.NewGuid().ToString(); var user = new User { FirstName = "Integration", LastName = "Test", Sub = userSub }; var adminUser = new User { FirstName = "Admin", LastName = "User", Sub = adminSub }; var group = new Domain.Entities.Group { Admin = adminUser, Name = "a group" }; var groupSafeLocation = new GroupSafeLocation { Group = group, Name = "A safe location" }; await _dbContext.Users.AddAsync(user); await _dbContext.Users.AddAsync(adminUser); await _dbContext.Groups.AddAsync(group); await _dbContext.GroupsSafeLocations.AddAsync(groupSafeLocation); await _dbContext.SaveChangesAsync(); var sut = new UpdateSafeLocationValidator(_dbContext); // Act bool isValid = await sut.IsValidAsync(new UpdateSafeLocation(userSub, groupSafeLocation.Id, new SafeLocationRequest())); // Assert isValid.ShouldBeFalse(); }
public async Task Validate_when_user_is_admin_of_requested_group() { // Arrange var sut = new DeleteSafeLocationValidator(_dbContext); string userSub = Guid.NewGuid().ToString(); var user = new User { FirstName = "Integration", LastName = "Test", Sub = userSub }; var group = new Domain.Entities.Group { Admin = user, Name = "my group" }; var groupSafeLocation = new GroupSafeLocation { Group = group, Name = "A safe location" }; await _dbContext.Users.AddAsync(user); await _dbContext.Groups.AddAsync(group); await _dbContext.GroupsSafeLocations.AddAsync(groupSafeLocation); await _dbContext.SaveChangesAsync(); // Act bool isValid = await sut.IsValidAsync(new DeleteSafeLocation(userSub, groupSafeLocation.Id)); // Assert isValid.ShouldBeTrue(); }