public async Task Invalidate_request_when_item_does_not_exist() { // Arrange var contributorSub = Guid.NewGuid().ToString(); var backpackId = Guid.NewGuid(); var contributor = new User { FirstName = "Contributor", LastName = "User", Sub = contributorSub }; var backpack = new Domain.Entities.Backpack { Id = backpackId, Name = "A backpack" }; await _dbContext.Users.AddAsync(contributor); await _dbContext.Backpacks.AddAsync(backpack); await _dbContext.BackpacksToUsers.AddAsync(new BackpackToUser { Backpack = backpack, User = contributor }); await _dbContext.SaveChangesAsync(); var sut = new UpdateBackpackItemValidator(_dbContext); // Act bool isValid = await sut.IsValidAsync(new UpdateBackpackItem(contributorSub, Guid.NewGuid(), new BackpackItemRequest())); // Assert isValid.ShouldBeFalse(); }
public async Task Validate_when_user_is_owner_of_backpack() { // Arrange var sut = new UpdateBackpackValidator(_dbContext); string userSub = Guid.NewGuid().ToString(); var owner = new User { FirstName = "Integration", LastName = "Test", Sub = userSub }; var backpack = new Domain.Entities.Backpack { Name = "my backpack" }; await _dbContext.Users.AddAsync(owner); await _dbContext.Backpacks.AddAsync(backpack); await _dbContext.BackpacksToUsers.AddAsync(new BackpackToUser { Backpack = backpack, User = owner, IsOwner = true }); await _dbContext.SaveChangesAsync(); // Act bool isValid = await sut.IsValidAsync(new UpdateBackpack(userSub, backpack.Id, new BackpackModelRequest())); // Assert isValid.ShouldBeTrue(); }
public async Task Invalidate_when_invited_user_not_found() { // Arrange var sut = new InviteToBackpackContributorsValidator(_dbContext); string userSub = Guid.NewGuid().ToString(); var owner = new User { FirstName = "Integration", LastName = "Test", Sub = userSub }; var backpack = new Domain.Entities.Backpack { Name = "my backpack" }; await _dbContext.Users.AddAsync(owner); await _dbContext.Backpacks.AddAsync(backpack); await _dbContext.BackpacksToUsers.AddAsync(new BackpackToUser { Backpack = backpack, User = owner, IsOwner = true }); await _dbContext.SaveChangesAsync(); // Act bool isValid = await sut.IsValidAsync(new InviteToBackpackContributors(userSub, backpack.Id, Guid.NewGuid())); // Assert isValid.ShouldBeFalse(); }
public async Task <Result <BackpackModel> > Handle(CreateBackpack request, CancellationToken cancellationToken) { var isValid = await _validator.IsValidAsync(request); if (!isValid) { return(Result.Failure <BackpackModel>("Validation failed")); } var user = await _context.Users.FirstAsync(u => u.Sub == request.UserSub, cancellationToken); var backpack = new Domain.Entities.Backpack { Name = request.Backpack.Name }; var backpackToUser = new BackpackToUser { Backpack = backpack, User = user, IsOwner = true }; await _context.Backpacks.AddAsync(backpack, cancellationToken); await _context.BackpacksToUsers.AddAsync(backpackToUser, cancellationToken); await _context.SaveChangesAsync(cancellationToken); return(new BackpackModel { Id = backpack.Id, Name = backpack.Name }); }
public async Task Validate_request_when_backpack_exists_and_user_contributor() { // Arrange var sut = new GetBackpackItemsValidator(_dbContext); var contributorSub = Guid.NewGuid().ToString(); var backpackId = Guid.NewGuid(); var contributor = new User { FirstName = "Contributor", LastName = "User", Sub = contributorSub }; var backpack = new Domain.Entities.Backpack { Id = backpackId, Name = "A backpack" }; await _dbContext.Users.AddAsync(contributor); await _dbContext.Backpacks.AddAsync(backpack); await _dbContext.BackpacksToUsers.AddAsync(new BackpackToUser { Backpack = backpack, User = contributor }); await _dbContext.SaveChangesAsync(); // Act bool isValid = await sut.IsValidAsync(new GetBackpackItems(contributorSub, backpackId)); // Assert isValid.ShouldBeTrue(); }
public async Task Invalidate_when_user_not_contributor_to_backpack() { // Arrange var sut = new RemoveCurrentUserFromContributorsValidator(_dbContext); string userSub = Guid.NewGuid().ToString(); var user = new User { FirstName = "Integration", LastName = "Test", Sub = userSub }; var backpack = new Domain.Entities.Backpack { Name = "my backpack" }; await _dbContext.Users.AddAsync(user); await _dbContext.Backpacks.AddAsync(backpack); await _dbContext.SaveChangesAsync(); // Act bool isValid = await sut.IsValidAsync(new RemoveCurrentUserFromContributors(userSub, backpack.Id)); // Assert isValid.ShouldBeFalse(); }
public async Task Invalidate_when_user_is_already_invited() { // Arrange var sut = new InviteToBackpackContributorsValidator(_dbContext); string userSub = Guid.NewGuid().ToString(); string nonContributorSub = Guid.NewGuid().ToString(); var owner = new User { FirstName = "Integration", LastName = "Test", Sub = userSub }; var invitedContributor = new User { FirstName = "Integration2", LastName = "Test2", Sub = nonContributorSub }; var backpack = new Domain.Entities.Backpack() { Name = "my backpack" }; var backpackInvite = new BackpackInvite { Backpack = backpack, InvitationReceiver = invitedContributor, InvitationSender = owner }; await _dbContext.Users.AddAsync(owner); await _dbContext.Users.AddAsync(invitedContributor); await _dbContext.Backpacks.AddAsync(backpack); await _dbContext.BackpacksToUsers.AddAsync(new BackpackToUser() { Backpack = backpack, User = owner, IsOwner = true }); await _dbContext.BackpackInvites.AddAsync(backpackInvite); await _dbContext.SaveChangesAsync(); // Act bool isValid = await sut.IsValidAsync(new InviteToBackpackContributors(userSub, backpackInvite.Id, invitedContributor.Id)); // Assert isValid.ShouldBeFalse(); }
public async Task Invalidate_when_user_not_contributor_of_related_backpack() { // Arrange var sut = new DeleteBackpackItemValidator(_dbContext); var userSub = Guid.NewGuid().ToString(); var contributorSub = Guid.NewGuid().ToString(); var backpackItemId = Guid.NewGuid(); var backpackId = Guid.NewGuid(); var nonContributor = new User { FirstName = "NonContributor", LastName = "User", Sub = userSub }; var contributor = new User { FirstName = "Contributor", LastName = "User", Sub = contributorSub }; var backpack = new Domain.Entities.Backpack { Id = backpackId, Name = "A backpack" }; await _dbContext.BackpackItems.AddAsync(new BackpackItem { Id = backpackItemId, Name = "test-backpack-item", Backpack = backpack }); await _dbContext.Users.AddAsync(nonContributor); await _dbContext.Users.AddAsync(contributor); await _dbContext.Backpacks.AddAsync(backpack); await _dbContext.BackpacksToUsers.AddAsync(new BackpackToUser { Backpack = backpack, User = contributor }); await _dbContext.SaveChangesAsync(); // Act bool isValid = await sut.IsValidAsync(new DeleteBackpackItem(nonContributor.Sub, backpackItemId)); // Assert isValid.ShouldBeFalse(); }
public async Task Validate_when_user_is_contributor_and_invited_existing_user() { // Arrange var sut = new InviteToBackpackContributorsValidator(_dbContext); string userSub = Guid.NewGuid().ToString(); string nonContributorSub = Guid.NewGuid().ToString(); var contributor = new User { FirstName = "Integration", LastName = "Test", Sub = userSub }; var nonContributor = new User { FirstName = "Integration", LastName = "Test", Sub = nonContributorSub }; var backpack = new Domain.Entities.Backpack { Name = "my backpack" }; await _dbContext.Users.AddAsync(contributor); await _dbContext.Users.AddAsync(nonContributor); await _dbContext.Backpacks.AddAsync(backpack); await _dbContext.BackpacksToUsers.AddAsync(new BackpackToUser { Backpack = backpack, User = contributor, IsOwner = true }); await _dbContext.BackpacksToUsers.AddAsync(new BackpackToUser { Backpack = backpack, User = nonContributor, IsOwner = false }); await _dbContext.SaveChangesAsync(); // Act bool isValid = await sut.IsValidAsync(new InviteToBackpackContributors(userSub, backpack.Id, nonContributor.Id)); // Assert isValid.ShouldBeTrue(); }
public async Task Validate_when_user_is_owner_of_backpack_and_removes_a_member() { // Arrange var sut = new RemoveContributorValidator(_dbContext); string userSub = Guid.NewGuid().ToString(); string backpackContributorSub = Guid.NewGuid().ToString(); var owner = new User { FirstName = "Integration", LastName = "Test", Sub = userSub }; var backpackContributor = new User { FirstName = "Integration", LastName = "Test", Sub = backpackContributorSub }; var backpack = new Domain.Entities.Backpack { Name = "my backpack" }; await _dbContext.Users.AddAsync(owner); await _dbContext.Users.AddAsync(backpackContributor); await _dbContext.Backpacks.AddAsync(backpack); await _dbContext.BackpacksToUsers.AddAsync(new BackpackToUser { Backpack = backpack, User = owner, IsOwner = true }); await _dbContext.BackpacksToUsers.AddAsync(new BackpackToUser { Backpack = backpack, User = backpackContributor, IsOwner = false }); await _dbContext.SaveChangesAsync(); // Act bool isValid = await sut.IsValidAsync(new RemoveContributor(userSub, backpack.Id, backpackContributor.Id)); // Assert isValid.ShouldBeTrue(); }
public async Task Validate_when_user_is_contributor_of_requested_backpack() { // Arrange string userSub = Guid.NewGuid().ToString(); string ownerSub = Guid.NewGuid().ToString(); var user = new User { FirstName = "Integration", LastName = "Test", Sub = userSub }; var owner = new User { FirstName = "Owner", LastName = "User", Sub = ownerSub }; var backpack = new Domain.Entities.Backpack { Name = "A backpack" }; await _dbContext.Users.AddAsync(user); await _dbContext.Backpacks.AddAsync(backpack); await _dbContext.BackpacksToUsers.AddAsync(new BackpackToUser { Backpack = backpack, User = owner, IsOwner = true }); await _dbContext.BackpacksToUsers.AddAsync(new BackpackToUser { Backpack = backpack, User = user, IsOwner = false }); await _dbContext.SaveChangesAsync(); var sut = new GetBackpackContributorsValidator(_dbContext); // Act bool isValid = await sut.IsValidAsync(new GetBackpackContributors(userSub, backpack.Id)); // Assert isValid.ShouldBeTrue(); }
public async Task Invalidate_when_target_user_does_not_exists() { // Arrange var sut = new RemoveContributorValidator(_dbContext); string userSub = Guid.NewGuid().ToString(); var owner = new User { FirstName = "Integration", LastName = "Test", Sub = userSub }; var backpack = new Domain.Entities.Backpack() { Name = "my backpack" }; await _dbContext.Users.AddAsync(owner); await _dbContext.Backpacks.AddAsync(backpack); await _dbContext.BackpacksToUsers.AddAsync(new BackpackToUser() { Backpack = backpack, User = owner }); await _dbContext.SaveChangesAsync(); // Act bool isValid = await sut.IsValidAsync(new RemoveContributor(userSub, backpack.Id, Guid.NewGuid())); // Assert isValid.ShouldBeFalse(); }