public async Task CreateAsync_WhenCalledWithValidBeer_LogsInformation()
        {
            _beerService.CreateAsync(Arg.Any <Beer>()).Returns(_beer);

            await _controller.CreateAsync(_beerRequest);

            _logger.Received(2).Information(Arg.Any <string>());
        }
Example #2
0
        public async Task <ActionResult <Beer> > CreateAsync([FromBody] BeerRequest createBeerRequest)
        {
            if (!ModelState.IsValid)
            {
                _logger.Warning("Request to create beer has been denied. Beer model is invalid");
                return(BadRequest(ModelState));
            }

            try
            {
                _logger.Information($"Creating beer with name: {createBeerRequest.Name}.");
                var beer = new Beer
                {
                    Name    = createBeerRequest.Name,
                    Style   = createBeerRequest.Style,
                    Brewery = createBeerRequest.Brewery,
                    Abv     = createBeerRequest.Abv
                };
                var createdBeer = await _beerService.CreateAsync(beer);

                _logger.Information($"Successfully created beer with name: {createdBeer.Name}.");
                // uses return from db to send in the response; refers to named endpoint
                return(CreatedAtRoute("GetBeer", new { id = createdBeer.BeerId }, createdBeer));
            }
            catch (Exception ex)
            {
                _logger.Error(ex, $"Request to create beer with name: {createBeerRequest.Name} failed.");
                return(StatusCode(500));
            }
        }
Example #3
0
        public async Task <IActionResult> CreateBeer([FromBody] CreateBeer createDTO)
        {
            try
            {
                var userId = HttpContext.User.FindFirst("http://schemas.microsoft.com/identity/claims/objectidentifier").Value;

                if (createDTO == null)
                {
                    return(BadRequest(new ValidationErrorResponse(new ValidationErrorModel("Name", "Beer cannot be null."))));
                }

                var entityToCreate = _mapper.Map <Beer>(createDTO);
                entityToCreate.UserId = userId;
                var entity = await _beerService.CreateAsync(entityToCreate);

                var view = _mapper.Map <ViewBeer>(entity);
                return(Ok(view));
            }
            catch
            {
                return(StatusCode(500));
            }
        }