Exemple #1
0
        public async Task CreateLootAsync_CreateALootInDb_AndReturnIt()
        {
            const int groupId           = 42;
            var       createLootRequest = new CreateLootRequest {
                Name = "some-name"
            };
            var naheulbookExecutionContext = new NaheulbookExecutionContext();
            var group = new Group {
                Id = groupId
            };

            _unitOfWorkFactory.GetUnitOfWork().Groups.GetAsync(groupId)
            .Returns(group);

            var actualLoot = await _service.CreateLootAsync(naheulbookExecutionContext, groupId, createLootRequest);

            Received.InOrder(() =>
            {
                _unitOfWorkFactory.GetUnitOfWork().Loots.Add(actualLoot);
                _unitOfWorkFactory.GetUnitOfWork().SaveChangesAsync();
            });

            actualLoot.Name.Should().Be("some-name");
            actualLoot.Group.Should().BeSameAs(group);
        }
Exemple #2
0
        public void PostCreateLootAsync_ShouldReturnExpectedHttpStatusCodeOnKnownErrors(Exception exception, int expectedStatusCode)
        {
            const int groupId           = 8;
            var       createLootRequest = new CreateLootRequest();

            _lootService.CreateLootAsync(_executionContext, groupId, createLootRequest)
            .Returns(Task.FromException <Loot>(exception));

            Func <Task> act = () => _controller.PostCreateLootAsync(_executionContext, groupId, createLootRequest);

            act.Should().Throw <HttpErrorException>().Which.StatusCode.Should().Be(expectedStatusCode);
        }
Exemple #3
0
        public async Task PostCreateLootAsync_ShouldCreateLoot_ThenReturnLootResponse()
        {
            const int groupId           = 8;
            var       createLootRequest = new CreateLootRequest();
            var       createdLoot       = new Loot();
            var       lootResponse      = new LootResponse();

            _lootService.CreateLootAsync(_executionContext, groupId, createLootRequest)
            .Returns(createdLoot);
            _mapper.Map <LootResponse>(createdLoot)
            .Returns(lootResponse);

            var result = await _controller.PostCreateLootAsync(_executionContext, groupId, createLootRequest);

            result.Value.Should().BeSameAs(lootResponse);
            result.StatusCode.Should().Be(StatusCodes.Status201Created);
        }
        public async Task <CreatedActionResult <LootResponse> > PostCreateLootAsync(
            [FromServices] NaheulbookExecutionContext executionContext,
            [FromRoute] int groupId,
            CreateLootRequest request
            )
        {
            try
            {
                var loot = await _lootService.CreateLootAsync(executionContext, groupId, request);

                return(_mapper.Map <LootResponse>(loot));
            }
            catch (ForbiddenAccessException ex)
            {
                throw new HttpErrorException(StatusCodes.Status403Forbidden, ex);
            }
            catch (GroupNotFoundException ex)
            {
                throw new HttpErrorException(StatusCodes.Status404NotFound, ex);
            }
        }
        public async Task <Loot> CreateLootAsync(NaheulbookExecutionContext executionContext, int groupId, CreateLootRequest request)
        {
            using (var uow = _unitOfWorkFactory.CreateUnitOfWork())
            {
                var group = await uow.Groups.GetAsync(groupId);

                if (group == null)
                {
                    throw new GroupNotFoundException(groupId);
                }

                _authorizationUtil.EnsureIsGroupOwner(executionContext, group);

                var loot = new Loot
                {
                    Group = group,
                    Name  = request.Name,
                    IsVisibleForPlayer = false
                };

                uow.Loots.Add(loot);
                await uow.SaveChangesAsync();

                return(loot);
            }
        }