public async Task SuccessfulRequestReturnsCreatedResult()
        {
            var locationDetailsRequestModel = CreateValidLocationDetailsRequestModel();

            var formByteArray = ToByteArray(locationDetailsRequestModel);

            _httpRequest.Setup(x => x.Body).Returns(new MemoryStream(formByteArray));

            var addResult = new WriteRequestResult {
                Status = WriteRequestStatus.Success, ItemId = Guid.NewGuid()
            };

            _locationDetailsService.Setup(x => x.Add(It.IsAny <LocationDetailsDto>())).Returns(Task.FromResult(addResult));
            _mapper.Setup(x => x.Map <LocationDetailsDto>(It.IsAny <LocationDetailsRequestModel>()))
            .Returns((LocationDetailsRequestModel source) =>
            {
                return(new LocationDetailsDto()
                {
                    GameOverviewList = new Dictionary <string, int>()
                });
            });
            Environment.SetEnvironmentVariable("ReadBaseUrl", "testConfigValue");

            var expected = new CreatedResult("", new { });
            var actual   = await _sut.Run(_httpRequest.Object, _log.Object);

            Assert.Equal(expected.GetType(), actual.GetType());
            Environment.SetEnvironmentVariable("ReadBaseUrl", null);
        }
Example #2
0
        public async Task <IActionResult> Run(
            [HttpTrigger(AuthorizationLevel.Function, "post", Route = null)] HttpRequest req,
            ILogger log)
        {
            try
            {
                ValidatableRequestModel <LocationDetailsRequestModel> addLocationRequest = await req.GetJsonBody <LocationDetailsRequestModel, LocationDetailsRequestModelValidator>();

                if (!addLocationRequest.IsValid)
                {
                    return(addLocationRequest.ToBadRequest());
                }

                WriteRequestResult result = await _locationDetailsService.Add(CreateLocationDto(addLocationRequest.Value));

                switch (result.Status)
                {
                case WriteRequestStatus.Success:
                    return(new CreatedResult(GetResourceLocation(result.ItemId, log), new { Id = result.ItemId }));

                case WriteRequestStatus.Duplicate:
                    return(new AcceptedResult(GetResourceLocation(result.ItemId, log), new { Id = result.ItemId }));

                default:
                    return(new StatusCodeResult(StatusCodes.Status500InternalServerError));
                }
            }
            catch (Exception ex)
            {
                log.LogError($"AddLocation had an unexpexpected error: {ex.Message}");
                return(new StatusCodeResult(StatusCodes.Status500InternalServerError));
            }
        }