コード例 #1
0
        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();
        }
コード例 #2
0
        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();
        }
コード例 #3
0
        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();
        }
コード例 #4
0
        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
            });
        }
コード例 #5
0
        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();
        }
コード例 #6
0
        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();
        }
コード例 #7
0
        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();
        }
コード例 #8
0
        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();
        }
コード例 #9
0
        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();
        }
コード例 #10
0
        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();
        }
コード例 #11
0
        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();
        }
コード例 #12
0
        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();
        }