Example #1
0
        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
            });
        }
Example #2
0
        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();
        }
Example #3
0
        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();
        }