예제 #1
0
        public async Task <bool> CreateAsync(JoinRequestServiceModel model)
        {
            if (!this.IsEntityStateValid(model))
            {
                return(false);
            }

            if (!await this.ridesRepository.All()
                .AnyAsync(r => r.Id == model.RideId))
            {
                return(false);
            }

            var user = await this.usersRepository.All()
                       .SingleOrDefaultAsync(u => u.UserName == model.User.UserName);

            if (user == null)
            {
                return(false);
            }

            var joinRequest = Mapper.Map <JoinRequest>(model);

            joinRequest.User = user;

            await this.joinRequestsRepository.AddAsync(joinRequest);

            await this.joinRequestsRepository.SaveChangesAsync();

            return(true);
        }
예제 #2
0
        public async Task CreateAsync_WithValidModel_WorksCorrectly()
        {
            // Arrange
            var context = new PoolItDbContext(new DbContextOptionsBuilder <PoolItDbContext>()
                                              .UseInMemoryDatabase(Guid.NewGuid().ToString())
                                              .Options);

            var ride = new Ride
            {
                Title = "TestRide"
            };

            await context.Rides.AddAsync(ride);

            var user = new PoolItUser
            {
                UserName = "******"
            };

            await context.Users.AddAsync(user);

            await context.SaveChangesAsync();

            var joinRequestsService = new JoinRequestsService(
                new EfRepository <JoinRequest>(context),
                new EfRepository <Ride>(context),
                new EfRepository <PoolItUser>(context),
                null);

            var serviceModel = new JoinRequestServiceModel
            {
                RideId = ride.Id,
                User   = new PoolItUserServiceModel
                {
                    UserName = user.UserName
                },
                Message = "Test Message"
            };

            // Act
            var result = await joinRequestsService.CreateAsync(serviceModel);

            // Assert
            Assert.True(result);

            var dbModel = await context.JoinRequests.SingleOrDefaultAsync();

            Assert.NotNull(dbModel);

            Assert.Equal(user.Id, dbModel.UserId);
        }
예제 #3
0
        public async Task CreateAsync_WithInvalidModel_ReturnsFalse()
        {
            // Arrange
            var context = new PoolItDbContext(new DbContextOptionsBuilder <PoolItDbContext>()
                                              .UseInMemoryDatabase(Guid.NewGuid().ToString())
                                              .Options);

            var ride = new Ride
            {
                Title = "TestRide"
            };

            await context.Rides.AddAsync(ride);

            var user = new PoolItUser
            {
                UserName = "******"
            };

            await context.Users.AddAsync(user);

            await context.SaveChangesAsync();

            var joinRequestsService = new JoinRequestsService(
                new EfRepository <JoinRequest>(context),
                new EfRepository <Ride>(context),
                new EfRepository <PoolItUser>(context),
                null);

            var serviceModel = new JoinRequestServiceModel
            {
                RideId = ride.Id,
                User   = new PoolItUserServiceModel
                {
                    UserName = user.UserName
                }
            };

            // Act
            var result = await joinRequestsService.CreateAsync(serviceModel);

            // Assert
            Assert.False(result);

            var existsInDb = await context.JoinRequests.AnyAsync();

            Assert.False(existsInDb);
        }