public async Task AcceptAsync_WithNullInvitationKey_ReturnsFalse() { // Arrange var context = new PoolItDbContext(new DbContextOptionsBuilder <PoolItDbContext>() .UseInMemoryDatabase(Guid.NewGuid().ToString()) .Options); var user = new PoolItUser { UserName = "******" }; await context.Users.AddAsync(user); context.SaveChanges(); var invitationsService = new InvitationsService( new EfRepository <Invitation>(context), new EfRepository <Ride>(context), new EfRepository <JoinRequest>(context), new EfRepository <PoolItUser>(context), new EfRepository <UserRide>(context), null); // Act var result = await invitationsService.AcceptAsync(user.UserName, null); // Assert Assert.False(result); }
public async Task DeleteAsync_WithNullKey_ReturnsFalse() { var context = new PoolItDbContext(new DbContextOptionsBuilder <PoolItDbContext>() .UseInMemoryDatabase(Guid.NewGuid().ToString()) .Options); await context.Invitations.AddRangeAsync( new Invitation { Key = "key002" }, new Invitation { Key = "key003" }); context.SaveChanges(); var invitationsService = new InvitationsService(new EfRepository <Invitation>(context), null, null, null, null, null); // Act var result = await invitationsService.DeleteAsync(null); // Assert Assert.False(result); var invitationsCount = await context.Invitations.CountAsync(); Assert.Equal(2, invitationsCount); }
public async Task AcceptAsync_WithNonExistentInvitation_ReturnsFalse() { // Arrange const string testKey = "key111"; var context = new PoolItDbContext(new DbContextOptionsBuilder <PoolItDbContext>() .UseInMemoryDatabase(Guid.NewGuid().ToString()) .Options); var ride = new Ride(); await context.Rides.AddAsync(ride); var user = new PoolItUser { UserName = "******" }; await context.Users.AddAsync(user); var invitationsService = new InvitationsService( new EfRepository <Invitation>(context), new EfRepository <Ride>(context), new EfRepository <JoinRequest>(context), new EfRepository <PoolItUser>(context), new EfRepository <UserRide>(context), null); // Act var result = await invitationsService.AcceptAsync(user.UserName, testKey); // Assert Assert.False(result); }
public async Task GenerateAsync_WithCorrectRideId_WorksCorrectly() { // Arrange const string expectedKey = "expkey"; var context = new PoolItDbContext(new DbContextOptionsBuilder <PoolItDbContext>() .UseInMemoryDatabase(Guid.NewGuid().ToString()) .Options); var ride = new Ride { Title = "TestRide" }; await context.Rides.AddAsync(ride); await context.SaveChangesAsync(); var mockRandomStringGeneratorHelper = new Mock <IRandomStringGeneratorHelper>(); mockRandomStringGeneratorHelper.Setup(r => r.GenerateRandomString(It.IsAny <int>())).Returns(expectedKey); var invitationsService = new InvitationsService(new EfRepository <Invitation>(context), new EfRepository <Ride>(context), null, null, null, mockRandomStringGeneratorHelper.Object); // Act var resultKey = await invitationsService.GenerateAsync(ride.Id); // Assert Assert.Equal(expectedKey, resultKey); var invitationExists = await context.Invitations.AnyAsync(i => i.Key == resultKey); Assert.True(invitationExists); }
public async Task GenerateAsync_WithNonExistentRide_ReturnsNull() { // Arrange var testRideId = Guid.NewGuid().ToString(); var context = new PoolItDbContext(new DbContextOptionsBuilder <PoolItDbContext>() .UseInMemoryDatabase(Guid.NewGuid().ToString()) .Options); var mockRandomStringGeneratorHelper = new Mock <IRandomStringGeneratorHelper>(); mockRandomStringGeneratorHelper.Setup(r => r.GenerateRandomString(It.IsAny <int>())).Returns("abcdef"); var invitationsService = new InvitationsService(new EfRepository <Invitation>(context), new EfRepository <Ride>(context), null, null, null, mockRandomStringGeneratorHelper.Object); // Act var resultKey = await invitationsService.GenerateAsync(testRideId); // Assert Assert.Null(resultKey); var invitationCount = await context.Invitations.CountAsync(); Assert.Equal(0, invitationCount); }
public async Task GetAsync_WithCorrectKey_WorksCorrectly() { // Arrange const string testKey = "key111"; var context = new PoolItDbContext(new DbContextOptionsBuilder <PoolItDbContext>() .UseInMemoryDatabase(Guid.NewGuid().ToString()) .Options); var ride = new Ride { Car = new Car { Model = new CarModel { Manufacturer = new CarManufacturer() }, Owner = new PoolItUser() }, Conversation = new Conversation() }; await context.Invitations.AddRangeAsync( new Invitation { Key = testKey, Ride = ride }, new Invitation { Key = "key002", Ride = ride }, new Invitation { Key = "key003", Ride = ride } ); context.SaveChanges(); var invitationsService = new InvitationsService(new EfRepository <Invitation>(context), null, null, null, null, null); // Act var result = await invitationsService.GetAsync(testKey); // Assert Assert.NotNull(result); }
public async Task GetAllAsync_WithNoInvitations_ReturnsEmptyEnumerable() { var context = new PoolItDbContext(new DbContextOptionsBuilder <PoolItDbContext>() .UseInMemoryDatabase(Guid.NewGuid().ToString()) .Options); var invitationsService = new InvitationsService(new EfRepository <Invitation>(context), null, null, null, null, null); // Act var actualResult = (await invitationsService.GetAllAsync()).Count(); // Assert Assert.Equal(0, actualResult); }
public async Task GetAllAsync_WithInvitations_WorksCorrectly() { const int expectedResult = 2; var context = new PoolItDbContext(new DbContextOptionsBuilder <PoolItDbContext>() .UseInMemoryDatabase(Guid.NewGuid().ToString()) .Options); var ride = new Ride { Car = new Car { Model = new CarModel { Manufacturer = new CarManufacturer() }, Owner = new PoolItUser() }, Conversation = new Conversation() }; await context.Invitations.AddRangeAsync( new Invitation { Key = "key001", Ride = ride }, new Invitation { Key = "key002", Ride = ride }); context.SaveChanges(); var invitationsService = new InvitationsService(new EfRepository <Invitation>(context), null, null, null, null, null); // Act var actualResult = (await invitationsService.GetAllAsync()).Count(); // Assert Assert.Equal(expectedResult, actualResult); }
public async Task AcceptAsync_WithNullUserName_ReturnsFalse() { // Arrange const string testKey = "key111"; var context = new PoolItDbContext(new DbContextOptionsBuilder <PoolItDbContext>() .UseInMemoryDatabase(Guid.NewGuid().ToString()) .Options); var ride = new Ride(); await context.Rides.AddAsync(ride); await context.Invitations.AddAsync(new Invitation { Key = testKey, Ride = ride }); context.SaveChanges(); var invitationsService = new InvitationsService( new EfRepository <Invitation>(context), new EfRepository <Ride>(context), new EfRepository <JoinRequest>(context), new EfRepository <PoolItUser>(context), new EfRepository <UserRide>(context), null); // Act var result = await invitationsService.AcceptAsync(null, testKey); // Assert Assert.False(result); var invitationExists = await context.Invitations.AnyAsync(); Assert.True(invitationExists); }
public async Task DeleteAsync_WithCorrectKey_WorksCorrectly() { const string testKey = "key111"; var context = new PoolItDbContext(new DbContextOptionsBuilder <PoolItDbContext>() .UseInMemoryDatabase(Guid.NewGuid().ToString()) .Options); await context.Invitations.AddRangeAsync( new Invitation { Key = testKey }, new Invitation { Key = "key002" }, new Invitation { Key = "key003" }); context.SaveChanges(); var invitationsService = new InvitationsService(new EfRepository <Invitation>(context), null, null, null, null, null); // Act var result = await invitationsService.DeleteAsync(testKey); // Assert Assert.True(result); var invitationExists = await context.Invitations.AnyAsync(i => i.Key == testKey); Assert.False(invitationExists); }
public InvitationsController(InvitationsService invitationsService, ISettings settings) { this._invitationsService = invitationsService; this._settings = settings; }
public async Task AcceptAsync_WithCorrectUserAndInvitation_WorksCorrectly() { // Arrange const string testKey = "key111"; var context = new PoolItDbContext(new DbContextOptionsBuilder <PoolItDbContext>() .UseInMemoryDatabase(Guid.NewGuid().ToString()) .Options); var ride = new Ride(); await context.Rides.AddAsync(ride); var user = new PoolItUser { UserName = "******" }; await context.Users.AddAsync(user); var joinRequest = new JoinRequest { User = user, Ride = ride }; await context.JoinRequests.AddAsync(joinRequest); await context.Invitations.AddAsync(new Invitation { Key = testKey, Ride = ride }); context.SaveChanges(); var invitationsService = new InvitationsService( new EfRepository <Invitation>(context), new EfRepository <Ride>(context), new EfRepository <JoinRequest>(context), new EfRepository <PoolItUser>(context), new EfRepository <UserRide>(context), null); // Act var result = await invitationsService.AcceptAsync(user.UserName, testKey); // Assert Assert.True(result); // - Check for UserRide creation var userRideExists = await context.UserRides.AnyAsync(u => u.UserId == user.Id && u.RideId == ride.Id); Assert.True(userRideExists); // - Check JoinRequest is removed var joinRequestExists = await context.JoinRequests.AnyAsync(); Assert.False(joinRequestExists); // - Check invitation is removed var invitationExists = await context.Invitations.AnyAsync(); Assert.False(invitationExists); }