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)) !); } }
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(); } }