From 5b498e5c6f9f56c26a91935bd0bb746304b7ec57 Mon Sep 17 00:00:00 2001 From: Matyas Wollner Date: Fri, 27 Sep 2024 12:46:57 +0200 Subject: [PATCH] LPD-34383 - fixing patch methods, adding tests for request without name --- .../AccountGroupResourceDTOConverter.java | 1 + .../v1_0/AccountGroupResourceImpl.java | 48 ++++++ .../v1_0/test/AccountGroupResourceTest.java | 140 ++++++++++++++++++ 3 files changed, 189 insertions(+) diff --git a/modules/apps/headless/headless-admin-user/headless-admin-user-impl/src/main/java/com/liferay/headless/admin/user/internal/dto/v1_0/converter/AccountGroupResourceDTOConverter.java b/modules/apps/headless/headless-admin-user/headless-admin-user-impl/src/main/java/com/liferay/headless/admin/user/internal/dto/v1_0/converter/AccountGroupResourceDTOConverter.java index 5d51114f65327..bd235b756b7e6 100644 --- a/modules/apps/headless/headless-admin-user/headless-admin-user-impl/src/main/java/com/liferay/headless/admin/user/internal/dto/v1_0/converter/AccountGroupResourceDTOConverter.java +++ b/modules/apps/headless/headless-admin-user/headless-admin-user-impl/src/main/java/com/liferay/headless/admin/user/internal/dto/v1_0/converter/AccountGroupResourceDTOConverter.java @@ -70,6 +70,7 @@ public AccountGroup toDTO( accountGroup.getAccountGroupId(), accountGroup.getCompanyId(), dtoConverterContext.getLocale())); + setDescription(accountGroup::getDescription); setExternalReferenceCode( accountGroup::getExternalReferenceCode); setId(accountGroup::getAccountGroupId); diff --git a/modules/apps/headless/headless-admin-user/headless-admin-user-impl/src/main/java/com/liferay/headless/admin/user/internal/resource/v1_0/AccountGroupResourceImpl.java b/modules/apps/headless/headless-admin-user/headless-admin-user-impl/src/main/java/com/liferay/headless/admin/user/internal/resource/v1_0/AccountGroupResourceImpl.java index 17284a337c419..0b7618c927a53 100644 --- a/modules/apps/headless/headless-admin-user/headless-admin-user-impl/src/main/java/com/liferay/headless/admin/user/internal/resource/v1_0/AccountGroupResourceImpl.java +++ b/modules/apps/headless/headless-admin-user/headless-admin-user-impl/src/main/java/com/liferay/headless/admin/user/internal/resource/v1_0/AccountGroupResourceImpl.java @@ -6,6 +6,7 @@ package com.liferay.headless.admin.user.internal.resource.v1_0; import com.liferay.account.constants.AccountActionKeys; +import com.liferay.account.exception.NoSuchGroupException; import com.liferay.account.model.AccountEntry; import com.liferay.account.model.AccountGroupRel; import com.liferay.account.service.AccountGroupRelService; @@ -175,6 +176,33 @@ public EntityModel getEntityModel(MultivaluedMap multivaluedMap) return _entityModel; } + @Override + public AccountGroup patchAccountGroup( + Long accountGroupId, AccountGroup accountGroup) + throws Exception { + + com.liferay.account.model.AccountGroup serviceBuilderAccountGroup = + _accountGroupService.getAccountGroup(accountGroupId); + + return _updateAccountGroup(accountGroup, serviceBuilderAccountGroup); + } + + @Override + public AccountGroup patchAccountGroupByExternalReferenceCode( + String externalReferenceCode, AccountGroup accountGroup) + throws Exception { + + com.liferay.account.model.AccountGroup serviceBuilderAccountGroup = + _accountGroupService.fetchAccountGroupByExternalReferenceCode( + externalReferenceCode, contextCompany.getCompanyId()); + + if (serviceBuilderAccountGroup == null) { + throw new NoSuchGroupException(); + } + + return _updateAccountGroup(accountGroup, serviceBuilderAccountGroup); + } + @Override public AccountGroup postAccountGroup(AccountGroup accountGroup) throws Exception { @@ -361,6 +389,26 @@ private AccountGroup _toAccountGroup( _getDTOConverterContext(accountGroup.getAccountGroupId())); } + private AccountGroup _updateAccountGroup( + AccountGroup accountGroup, + com.liferay.account.model.AccountGroup serviceBuilderAccountGroup) + throws Exception { + + serviceBuilderAccountGroup = _accountGroupService.updateAccountGroup( + serviceBuilderAccountGroup.getAccountGroupId(), + GetterUtil.getString( + accountGroup.getDescription(), + serviceBuilderAccountGroup.getDescription()), + GetterUtil.getString( + accountGroup.getName(), serviceBuilderAccountGroup.getName()), + _createServiceContext(accountGroup)); + + return _toAccountGroup( + _accountGroupService.updateExternalReferenceCode( + serviceBuilderAccountGroup.getAccountGroupId(), + accountGroup.getExternalReferenceCode())); + } + @Reference( target = "(model.class.name=com.liferay.account.model.AccountGroup)" ) diff --git a/modules/apps/headless/headless-admin-user/headless-admin-user-test/src/testIntegration/java/com/liferay/headless/admin/user/resource/v1_0/test/AccountGroupResourceTest.java b/modules/apps/headless/headless-admin-user/headless-admin-user-test/src/testIntegration/java/com/liferay/headless/admin/user/resource/v1_0/test/AccountGroupResourceTest.java index 0edbc407286c4..c904545f76ed5 100644 --- a/modules/apps/headless/headless-admin-user/headless-admin-user-test/src/testIntegration/java/com/liferay/headless/admin/user/resource/v1_0/test/AccountGroupResourceTest.java +++ b/modules/apps/headless/headless-admin-user/headless-admin-user-test/src/testIntegration/java/com/liferay/headless/admin/user/resource/v1_0/test/AccountGroupResourceTest.java @@ -12,12 +12,15 @@ import com.liferay.account.service.AccountGroupRelLocalServiceUtil; import com.liferay.arquillian.extension.junit.bridge.junit.Arquillian; import com.liferay.headless.admin.user.client.dto.v1_0.AccountGroup; +import com.liferay.headless.admin.user.client.problem.Problem; import com.liferay.portal.kernel.service.ServiceContext; +import com.liferay.portal.kernel.test.rule.DataGuard; import com.liferay.portal.kernel.test.util.RandomTestUtil; import com.liferay.portal.kernel.test.util.ServiceContextTestUtil; import com.liferay.portal.kernel.workflow.WorkflowConstants; import com.liferay.portal.test.rule.Inject; +import org.junit.Assert; import org.junit.Before; import org.junit.Ignore; import org.junit.Test; @@ -26,6 +29,7 @@ /** * @author Javier Gamarra */ +@DataGuard(scope = DataGuard.Scope.METHOD) @RunWith(Arquillian.class) public class AccountGroupResourceTest extends BaseAccountGroupResourceTestCase { @@ -77,6 +81,24 @@ public void testGraphQLGetAccountGroupNotFound() throws Exception { public void testGraphQLGetAccountGroupsPage() throws Exception { } + @Override + @Test + public void testPatchAccountGroup() throws Exception { + super.testPatchAccountGroup(); + + _testPatchAccountGroupWithoutName(); + } + + @Override + @Test + public void testPatchAccountGroupByExternalReferenceCode() + throws Exception { + + super.testPatchAccountGroupByExternalReferenceCode(); + + _testPatchAccountGroupByExternalReferenceCodeWithoutName(); + } + @Ignore @Override @Test @@ -84,6 +106,27 @@ public void testPostAccountGroupByExternalReferenceCodeAccountByExternalReferenc throws Exception { } + @Override + @Test + public void testPutAccountGroup() throws Exception { + super.testPutAccountGroup(); + + _testPutAccountGroupWithoutName(); + } + + @Override + @Test + public void testPutAccountGroupByExternalReferenceCode() throws Exception { + super.testPutAccountGroupByExternalReferenceCode(); + + _testPutAccountGroupByExternalReferenceWithoutName(); + } + + @Override + protected String[] getAdditionalAssertFieldNames() { + return new String[] {"description", "externalReferenceCode", "name"}; + } + @Override protected AccountGroup testDeleteAccountGroup_addAccountGroup() throws Exception { @@ -241,6 +284,103 @@ private AccountGroup _postAccountGroup(AccountGroup accountGroup) return accountGroupResource.postAccountGroup(accountGroup); } + private void _testPatchAccountGroupByExternalReferenceCodeWithoutName() + throws Exception { + + AccountGroup postAccountGroup = _postAccountGroup(randomAccountGroup()); + + AccountGroup randomPatchAccountGroup = randomPatchAccountGroup(); + + randomPatchAccountGroup.setName(() -> null); + + AccountGroup patchAccountGroup = + accountGroupResource.patchAccountGroupByExternalReferenceCode( + postAccountGroup.getExternalReferenceCode(), + randomPatchAccountGroup); + + AccountGroup expectedPatchAccountGroup = postAccountGroup.clone(); + + BeanTestUtil.copyProperties( + randomPatchAccountGroup, expectedPatchAccountGroup); + + expectedPatchAccountGroup.setName(postAccountGroup.getName()); + + AccountGroup getAccountGroup = accountGroupResource.getAccountGroup( + patchAccountGroup.getId()); + + assertEquals(expectedPatchAccountGroup, getAccountGroup); + assertValid(getAccountGroup); + } + + private void _testPatchAccountGroupWithoutName() throws Exception { + AccountGroup postAccountGroup = _postAccountGroup(randomAccountGroup()); + + AccountGroup randomPatchAccountGroup = randomPatchAccountGroup(); + + randomPatchAccountGroup.setName(() -> null); + + AccountGroup patchAccountGroup = accountGroupResource.patchAccountGroup( + postAccountGroup.getId(), randomPatchAccountGroup); + + AccountGroup expectedPatchAccountGroup = postAccountGroup.clone(); + + BeanTestUtil.copyProperties( + randomPatchAccountGroup, expectedPatchAccountGroup); + + expectedPatchAccountGroup.setName(postAccountGroup.getName()); + + AccountGroup getAccountGroup = accountGroupResource.getAccountGroup( + patchAccountGroup.getId()); + + assertEquals(expectedPatchAccountGroup, getAccountGroup); + assertValid(getAccountGroup); + } + + private void _testPutAccountGroupByExternalReferenceWithoutName() + throws Exception { + + AccountGroup postAccountGroup = _postAccountGroup(randomAccountGroup()); + + AccountGroup randomAccountGroup = randomAccountGroup(); + + randomAccountGroup.setName(() -> null); + + try { + accountGroupResource.putAccountGroupByExternalReferenceCode( + postAccountGroup.getExternalReferenceCode(), + randomAccountGroup); + + Assert.fail(); + } + catch (Problem.ProblemException problemException) { + Problem problem = problemException.getProblem(); + + Assert.assertEquals( + "The account group name is invalid", problem.getTitle()); + } + } + + private void _testPutAccountGroupWithoutName() throws Exception { + AccountGroup postAccountGroup = _postAccountGroup(randomAccountGroup()); + + AccountGroup randomAccountGroup = randomAccountGroup(); + + randomAccountGroup.setName(() -> null); + + try { + accountGroupResource.putAccountGroup( + postAccountGroup.getId(), randomAccountGroup); + + Assert.fail(); + } + catch (Problem.ProblemException problemException) { + Problem problem = problemException.getProblem(); + + Assert.assertEquals( + "The account group name is invalid", problem.getTitle()); + } + } + private AccountEntry _accountEntry; @Inject