コード例 #1
0
        public async Task <ItemTemplate> EditItemTemplateAsync(NaheulbookExecutionContext executionContext, Guid itemTemplateId, ItemTemplateRequest request)
        {
            using (var uow = _unitOfWorkFactory.CreateUnitOfWork())
            {
                var itemTemplate = await uow.ItemTemplates.GetWithModifiersWithRequirementsWithSkillsWithSkillModifiersWithSlotsWithUnSkillsAsync(itemTemplateId);

                if (itemTemplate == null)
                {
                    throw new ItemTemplateNotFoundException(itemTemplateId);
                }

                await _authorizationUtil.EnsureCanEditItemTemplateAsync(executionContext, itemTemplate);

                if (itemTemplate.Source != request.Source)
                {
                    if (request.Source == "official")
                    {
                        await _authorizationUtil.EnsureAdminAccessAsync(executionContext);

                        itemTemplate.SourceUserId = null;
                    }
                    else
                    {
                        itemTemplate.SourceUserId = executionContext.UserId;
                    }
                }
                _itemTemplateUtil.ApplyChangesFromRequest(itemTemplate, request);

                await uow.SaveChangesAsync();

                return((await uow.ItemTemplates.GetWithModifiersWithRequirementsWithSkillsWithSkillModifiersWithSlotsWithUnSkillsAsync(itemTemplateId)) !);
            }
        }
コード例 #2
0
        public void EditItemTemplateAsync_CheckPermissionBeforeEditingItem()
        {
            var itemTemplateId          = Guid.NewGuid();
            var executionContext        = new NaheulbookExecutionContext();
            var fullyLoadedItemTemplate = new ItemTemplate {
                Id = itemTemplateId
            };

            _unitOfWorkFactory.GetUnitOfWork().ItemTemplates.GetWithModifiersWithRequirementsWithSkillsWithSkillModifiersWithSlotsWithUnSkillsAsync(itemTemplateId)
            .Returns(fullyLoadedItemTemplate);
            _authorizationUtil.EnsureCanEditItemTemplateAsync(executionContext, fullyLoadedItemTemplate)
            .Returns(Task.FromException(new TestException()));

            Func <Task <ItemTemplate> > act = () => _service.EditItemTemplateAsync(executionContext, itemTemplateId, new ItemTemplateRequest());

            using (new AssertionScope())
            {
                act.Should().Throw <TestException>();
                _unitOfWorkFactory.GetUnitOfWork().DidNotReceive().SaveChangesAsync();
            }
        }