public async Task GetAllAsync_WithRequests_WorksCorrectly() { // Arrange const int expectedCount = 2; var context = new PoolItDbContext(new DbContextOptionsBuilder <PoolItDbContext>() .UseInMemoryDatabase(Guid.NewGuid().ToString()) .Options); var ride = new Ride { Title = "Test Ride", Car = new Car { Owner = new PoolItUser { UserName = "******" }, Model = new CarModel { Manufacturer = new CarManufacturer() } }, Conversation = new Conversation() }; await context.Rides.AddAsync(ride); await context.JoinRequests.AddRangeAsync( new JoinRequest { Ride = ride, User = new PoolItUser { UserName = "******" } }, new JoinRequest { Ride = ride, User = new PoolItUser { UserName = "******" } } ); await context.SaveChangesAsync(); var joinRequestsService = new JoinRequestsService(new EfRepository <JoinRequest>(context), null, null, null); // Act var actualCount = (await joinRequestsService.GetAllAsync()).Count(); // Assert Assert.Equal(expectedCount, actualCount); }
public async Task AcceptAsync_WithCorrectId_WorksCorrectly() { // Arrange var context = new PoolItDbContext(new DbContextOptionsBuilder <PoolItDbContext>() .UseInMemoryDatabase(Guid.NewGuid().ToString()) .Options); var ride = new Ride { Title = "Test Ride", Car = new Car { Owner = new PoolItUser { UserName = "******" }, Model = new CarModel { Manufacturer = new CarManufacturer() } }, Conversation = new Conversation() }; var user = new PoolItUser { UserName = "******" }; var request = new JoinRequest { Ride = ride, User = user, Message = "Test Message" }; await context.JoinRequests.AddAsync(request); await context.SaveChangesAsync(); var joinRequestsService = new JoinRequestsService(new EfRepository <JoinRequest>(context), null, null, new EfRepository <UserRide>(context)); // Act var result = await joinRequestsService.AcceptAsync(request.Id); // Assert Assert.True(result); var joinRequestExists = await context.JoinRequests.AnyAsync(); Assert.False(joinRequestExists); var userRideExists = await context.UserRides.AnyAsync(u => u.UserId == user.Id && u.RideId == ride.Id); Assert.True(userRideExists); }
public void CanUserSendJoinRequest_WithUserAlreadyParticipating_ReturnsFalse() { // Arrange const string testUser = "******"; var ride = new RideServiceModel { Date = DateTime.UtcNow.AddDays(1), Participants = new[] { new UserRideServiceModel { User = new PoolItUserServiceModel { UserName = "******" } }, new UserRideServiceModel { User = new PoolItUserServiceModel { UserName = "******" } }, new UserRideServiceModel { User = new PoolItUserServiceModel { UserName = testUser } } }, AvailableSeats = 2, JoinRequests = new[] { new JoinRequestServiceModel { User = new PoolItUserServiceModel { UserName = "******" } } } }; var joinRequestsService = new JoinRequestsService(null, null, null, null); // Act var result = joinRequestsService.CanUserSendJoinRequest(ride, testUser); // Assert Assert.False(result); }
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); }
public async Task DeleteAsync_WithNullRequestId_ReturnsFalse() { // Arrange var context = new PoolItDbContext(new DbContextOptionsBuilder <PoolItDbContext>() .UseInMemoryDatabase(Guid.NewGuid().ToString()) .Options); var joinRequestsService = new JoinRequestsService(new EfRepository <JoinRequest>(context), null, null, null); // Act var result = await joinRequestsService.DeleteAsync(null); // Assert Assert.False(result); }
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); }
public async Task AcceptAsync_WithNonExistentRequestRequest_ReturnsFalse() { // Arrange var testRequestId = Guid.NewGuid().ToString(); var context = new PoolItDbContext(new DbContextOptionsBuilder <PoolItDbContext>() .UseInMemoryDatabase(Guid.NewGuid().ToString()) .Options); var joinRequestsService = new JoinRequestsService(new EfRepository <JoinRequest>(context), null, null, new EfRepository <UserRide>(context)); // Act var result = await joinRequestsService.AcceptAsync(testRequestId); // Assert Assert.False(result); }
public async Task GetAsync_WithNonExistentRequest_ReturnsNull() { // Arrange var testId = Guid.NewGuid().ToString(); var context = new PoolItDbContext(new DbContextOptionsBuilder <PoolItDbContext>() .UseInMemoryDatabase(Guid.NewGuid().ToString()) .Options); await context.JoinRequests.AddAsync( new JoinRequest { Ride = new Ride { Title = "Test Ride", Car = new Car { Owner = new PoolItUser { UserName = "******" }, Model = new CarModel { Manufacturer = new CarManufacturer() } }, Conversation = new Conversation() }, User = new PoolItUser { UserName = "******" }, Message = "Test Message" } ); await context.SaveChangesAsync(); var joinRequestsService = new JoinRequestsService(new EfRepository <JoinRequest>(context), null, null, null); // Act var result = await joinRequestsService.GetAsync(testId); // Assert Assert.Null(result); }
public async Task GetAllAsync_WithNoRequests_ReturnsEmptyCollection() { // Arrange const int expectedCount = 0; var context = new PoolItDbContext(new DbContextOptionsBuilder <PoolItDbContext>() .UseInMemoryDatabase(Guid.NewGuid().ToString()) .Options); var joinRequestsService = new JoinRequestsService(new EfRepository <JoinRequest>(context), null, null, null); // Act var actualCount = (await joinRequestsService.GetAllAsync()).Count(); // Assert Assert.Equal(expectedCount, actualCount); }
public async Task CanUserAccessRequestAsync_WithOtherUserOrganiser_ReturnsFalse() { // Arrange const string testUser = "******"; var context = new PoolItDbContext(new DbContextOptionsBuilder <PoolItDbContext>() .UseInMemoryDatabase(Guid.NewGuid().ToString()) .Options); var request = new JoinRequest { User = new PoolItUser { UserName = testUser }, Ride = new Ride { Title = "Test Ride", Car = new Car { Owner = new PoolItUser { UserName = "******" }, Model = new CarModel { Manufacturer = new CarManufacturer() } }, Conversation = new Conversation() } }; await context.JoinRequests.AddAsync(request); await context.SaveChangesAsync(); var joinRequestsService = new JoinRequestsService(new EfRepository <JoinRequest>(context), null, null, null); // Act var result = await joinRequestsService.CanUserAccessRequestAsync(request.Id, testUser); // Assert Assert.False(result); }
public async Task GetReceivedForUserAsync_WithNoRequests_ReturnsEmptyCollection() { // Arrange const int expectedCount = 0; const string testUser = "******"; var context = new PoolItDbContext(new DbContextOptionsBuilder <PoolItDbContext>() .UseInMemoryDatabase(Guid.NewGuid().ToString()) .Options); await context.JoinRequests.AddAsync(new JoinRequest { User = new PoolItUser { UserName = "******" }, Ride = new Ride { Title = "Other Ride", Car = new Car { Owner = new PoolItUser { UserName = "******" }, Model = new CarModel { Manufacturer = new CarManufacturer() } }, Conversation = new Conversation() } }); await context.SaveChangesAsync(); var joinRequestsService = new JoinRequestsService(new EfRepository <JoinRequest>(context), null, null, null); // Act var actualCount = (await joinRequestsService.GetReceivedForUserAsync(testUser)).Count(); // Assert Assert.Equal(expectedCount, actualCount); }
public async Task GetReceivedForUserAsync_WithNullUser_ReturnsNull() { // Arrange var context = new PoolItDbContext(new DbContextOptionsBuilder <PoolItDbContext>() .UseInMemoryDatabase(Guid.NewGuid().ToString()) .Options); await context.JoinRequests.AddAsync(new JoinRequest { User = new PoolItUser { UserName = "******" }, Ride = new Ride { Title = "Other Ride", Car = new Car { Owner = new PoolItUser { UserName = "******" }, Model = new CarModel { Manufacturer = new CarManufacturer() } }, Conversation = new Conversation() } }); await context.SaveChangesAsync(); var joinRequestsService = new JoinRequestsService(new EfRepository <JoinRequest>(context), null, null, null); // Act var result = await joinRequestsService.GetReceivedForUserAsync(null); // Assert Assert.Null(result); }
public async Task GetAsync_WithCorrectId_WorksCorrectly() { // Arrange var context = new PoolItDbContext(new DbContextOptionsBuilder <PoolItDbContext>() .UseInMemoryDatabase(Guid.NewGuid().ToString()) .Options); var ride = new Ride { Title = "Test Ride", Car = new Car { Owner = new PoolItUser { UserName = "******" }, Model = new CarModel { Manufacturer = new CarManufacturer() } }, Conversation = new Conversation() }; await context.Rides.AddAsync(ride); var request = new JoinRequest { Ride = ride, User = new PoolItUser { UserName = "******" }, Message = "Test Message 1" }; await context.JoinRequests.AddRangeAsync( request, new JoinRequest { Ride = ride, User = new PoolItUser { UserName = "******" }, Message = "Test Message 2" } ); await context.SaveChangesAsync(); var joinRequestsService = new JoinRequestsService(new EfRepository <JoinRequest>(context), null, null, null); // Act var result = await joinRequestsService.GetAsync(request.Id); // Assert Assert.NotNull(result); Assert.Equal(request.Message, result.Message); }