Ejemplo n.º 1
0
        public async Task <Result <BackpackItemModel> > Handle(AddBackpackItem request, CancellationToken cancellationToken)
        {
            var isValid = await _validator.IsValidAsync(request);

            if (!isValid)
            {
                return(Result.Failure <BackpackItemModel>("Validation failed"));
            }

            var backpack = await _context.Backpacks.FirstAsync(x => x.Id == request.BackpackId, cancellationToken);

            var backpackItem = new BackpackItem
            {
                Name             = request.BackpackItem.Name,
                BackpackCategory = (BackpackCategoryType)request.BackpackItem.CategoryType,
                Amount           = request.BackpackItem.Amount,
                ExpirationDate   = request.BackpackItem.ExpirationDate,
                Backpack         = backpack
            };
            await _context.AddAsync(backpackItem, cancellationToken);

            await _context.SaveChangesAsync(cancellationToken);

            return(new BackpackItemModel
            {
                Id = backpackItem.Id,
                Name = backpackItem.Name,
                Amount = backpackItem.Amount,
                CategoryType = backpackItem.BackpackCategory,
                ExpirationDate = backpackItem.ExpirationDate
            });
        }
Ejemplo n.º 2
0
        public async Task <ActionResult <BackpackItemModel> > CreateNewBackpackItemAsync([FromRoute] Guid backpackId, [FromBody] BackpackItemRequest backpackItem)
        {
            var sub     = User.Claims.FirstOrDefault(c => c.Type == "sub")?.Value;
            var command = new AddBackpackItem(sub, backpackId, backpackItem);
            var result  = await _mediator.Send(command);

            if (result.IsFailure)
            {
                return(BadRequest());
            }

            return(Ok(result.Value));
        }
Ejemplo n.º 3
0
        public async Task Validate_request_when_backpack_exists_and_user_contributor()
        {
            // Arrange
            var sut = new AddBackpackItemValidator(_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 = "test-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 command = new AddBackpackItem(contributorSub, backpackId, new BackpackItemRequest());

            // Act
            bool isValid = await sut.IsValidAsync(command);

            // Assert
            isValid.ShouldBeTrue();
        }