From 12e5351fa4309a927e734dc20d231451e7e56af5 Mon Sep 17 00:00:00 2001 From: Jay Aljelo Ting <65202977+jayasting98@users.noreply.github.com> Date: Thu, 28 Mar 2024 00:37:37 +0800 Subject: [PATCH 1/3] Add storage method to get an account request by ID --- .../storage/sqlapi/AccountRequestsDbIT.java | 19 +++++++++++++++++ .../storage/sqlapi/AccountRequestsDb.java | 8 +++++++ .../storage/sqlapi/AccountRequestsDbTest.java | 21 +++++++++++++++++++ 3 files changed, 48 insertions(+) diff --git a/src/it/java/teammates/it/storage/sqlapi/AccountRequestsDbIT.java b/src/it/java/teammates/it/storage/sqlapi/AccountRequestsDbIT.java index a4c25763e40..e989d6fb3cb 100644 --- a/src/it/java/teammates/it/storage/sqlapi/AccountRequestsDbIT.java +++ b/src/it/java/teammates/it/storage/sqlapi/AccountRequestsDbIT.java @@ -1,11 +1,13 @@ package teammates.it.storage.sqlapi; import java.util.List; +import java.util.UUID; import org.testng.annotations.Test; import teammates.common.datatransfer.AccountRequestStatus; import teammates.common.exception.EntityDoesNotExistException; +import teammates.common.exception.InvalidParametersException; import teammates.it.test.BaseTestCaseWithSqlDatabaseAccess; import teammates.storage.sqlapi.AccountRequestsDb; import teammates.storage.sqlentity.AccountRequest; @@ -72,6 +74,23 @@ public void testCreateReadDeleteAccountRequest() throws Exception { assertNull(actualAccountRequest); } + @Test + public void testGetAccountRequest_nonExistentAccountRequest_returnsNull() { + UUID id = UUID.randomUUID(); + AccountRequest actualAccountRequest = accountRequestDb.getAccountRequest(id); + assertNull(actualAccountRequest); + } + + @Test + public void testGetAccountRequest_existingAccountRequest_getsSuccessfully() throws InvalidParametersException { + AccountRequest expectedAccountRequest = + new AccountRequest("test@gmail.com", "name", "institute", AccountRequestStatus.PENDING, "comments"); + UUID id = expectedAccountRequest.getId(); + accountRequestDb.createAccountRequest(expectedAccountRequest); + AccountRequest actualAccountRequest = accountRequestDb.getAccountRequest(id); + assertEquals(expectedAccountRequest, actualAccountRequest); + } + @Test public void testUpdateAccountRequest() throws Exception { ______TS("Update account request, does not exists, exception thrown"); diff --git a/src/main/java/teammates/storage/sqlapi/AccountRequestsDb.java b/src/main/java/teammates/storage/sqlapi/AccountRequestsDb.java index e3ced48d6af..6d9f7312fe4 100644 --- a/src/main/java/teammates/storage/sqlapi/AccountRequestsDb.java +++ b/src/main/java/teammates/storage/sqlapi/AccountRequestsDb.java @@ -55,6 +55,14 @@ public AccountRequest createAccountRequest(AccountRequest accountRequest) throws return accountRequest; } + /** + * Get AccountRequest by {@code id} from the database. + */ + public AccountRequest getAccountRequest(UUID id) { + assert id != null; + return HibernateUtil.get(AccountRequest.class, id); + } + /** * Get AccountRequest by {@code email} and {@code institute} from database. */ diff --git a/src/test/java/teammates/storage/sqlapi/AccountRequestsDbTest.java b/src/test/java/teammates/storage/sqlapi/AccountRequestsDbTest.java index 61f9f8e0d24..31f6cf77873 100644 --- a/src/test/java/teammates/storage/sqlapi/AccountRequestsDbTest.java +++ b/src/test/java/teammates/storage/sqlapi/AccountRequestsDbTest.java @@ -10,6 +10,7 @@ import static org.mockito.Mockito.verify; import java.util.List; +import java.util.UUID; import org.mockito.MockedStatic; import org.testng.annotations.AfterMethod; @@ -70,6 +71,26 @@ public void testCreateAccountRequest_accountRequestAlreadyExists_createsSuccessf mockHibernateUtil.verify(() -> HibernateUtil.persist(accountRequest)); } + @Test + public void testGetAccountRequest_nonExistentAccountRequest_returnsNull() { + UUID id = UUID.randomUUID(); + mockHibernateUtil.when(() -> HibernateUtil.get(AccountRequest.class, id)).thenReturn(null); + AccountRequest actualAccountRequest = accountRequestDb.getAccountRequest(id); + mockHibernateUtil.verify(() -> HibernateUtil.get(AccountRequest.class, id)); + assertNull(actualAccountRequest); + } + + @Test + public void testGetAccountRequest_existingAccountRequest_getsSuccessfully() { + AccountRequest expectedAccountRequest = + new AccountRequest("test@gmail.com", "name", "institute", AccountRequestStatus.PENDING, "comments"); + UUID id = expectedAccountRequest.getId(); + mockHibernateUtil.when(() -> HibernateUtil.get(AccountRequest.class, id)).thenReturn(expectedAccountRequest); + AccountRequest actualAccountRequest = accountRequestDb.getAccountRequest(id); + mockHibernateUtil.verify(() -> HibernateUtil.get(AccountRequest.class, id)); + assertEquals(expectedAccountRequest, actualAccountRequest); + } + @Test public void testUpdateAccountRequest_invalidEmail_throwsInvalidParametersException() { AccountRequest accountRequestWithInvalidEmail = From e3372b256bf0b30da1b692e3bb36a8d6c21aae8b Mon Sep 17 00:00:00 2001 From: Jay Aljelo Ting <65202977+jayasting98@users.noreply.github.com> Date: Thu, 28 Mar 2024 01:09:59 +0800 Subject: [PATCH 2/3] Add logic method to get an account request by ID --- .../sqllogic/core/AccountRequestsLogicIT.java | 18 +++++++ .../sqllogic/core/AccountRequestsLogic.java | 8 +++ .../core/AccountRequestsLogicTest.java | 51 +++++++++++++++++++ 3 files changed, 77 insertions(+) create mode 100644 src/test/java/teammates/sqllogic/core/AccountRequestsLogicTest.java diff --git a/src/it/java/teammates/it/sqllogic/core/AccountRequestsLogicIT.java b/src/it/java/teammates/it/sqllogic/core/AccountRequestsLogicIT.java index f95a6cfa682..566c967a7e7 100644 --- a/src/it/java/teammates/it/sqllogic/core/AccountRequestsLogicIT.java +++ b/src/it/java/teammates/it/sqllogic/core/AccountRequestsLogicIT.java @@ -1,6 +1,7 @@ package teammates.it.sqllogic.core; import java.time.Instant; +import java.util.UUID; import org.testng.annotations.Test; @@ -20,6 +21,23 @@ public class AccountRequestsLogicIT extends BaseTestCaseWithSqlDatabaseAccess { private AccountRequestsLogic accountRequestsLogic = AccountRequestsLogic.inst(); + @Test + public void testGetAccountRequest_nonExistentAccountRequest_returnsNull() { + UUID id = UUID.randomUUID(); + AccountRequest actualAccountRequest = accountRequestsLogic.getAccountRequest(id); + assertNull(actualAccountRequest); + } + + @Test + public void testGetAccountRequest_existingAccountRequest_getsSuccessfully() throws InvalidParametersException { + AccountRequest expectedAccountRequest = + new AccountRequest("test@gmail.com", "name", "institute", AccountRequestStatus.PENDING, "comments"); + UUID id = expectedAccountRequest.getId(); + accountRequestsLogic.createAccountRequest(expectedAccountRequest); + AccountRequest actualAccountRequest = accountRequestsLogic.getAccountRequest(id); + assertEquals(expectedAccountRequest, actualAccountRequest); + } + @Test public void testResetAccountRequest() throws EntityAlreadyExistsException, InvalidParametersException, EntityDoesNotExistException { diff --git a/src/main/java/teammates/sqllogic/core/AccountRequestsLogic.java b/src/main/java/teammates/sqllogic/core/AccountRequestsLogic.java index 6c0f34efb1a..ef46f0b7fc7 100644 --- a/src/main/java/teammates/sqllogic/core/AccountRequestsLogic.java +++ b/src/main/java/teammates/sqllogic/core/AccountRequestsLogic.java @@ -1,6 +1,7 @@ package teammates.sqllogic.core; import java.util.List; +import java.util.UUID; import teammates.common.datatransfer.AccountRequestStatus; import teammates.common.exception.EntityDoesNotExistException; @@ -65,6 +66,13 @@ public AccountRequest createAccountRequest(String name, String email, String ins return accountRequestDb.createAccountRequest(toCreate); } + /** + * Gets the account request associated with the {@code id}. + */ + public AccountRequest getAccountRequest(UUID id) { + return accountRequestDb.getAccountRequest(id); + } + /** * Gets account request associated with the {@code email} and {@code institute}. */ diff --git a/src/test/java/teammates/sqllogic/core/AccountRequestsLogicTest.java b/src/test/java/teammates/sqllogic/core/AccountRequestsLogicTest.java new file mode 100644 index 00000000000..6886acc8007 --- /dev/null +++ b/src/test/java/teammates/sqllogic/core/AccountRequestsLogicTest.java @@ -0,0 +1,51 @@ +package teammates.sqllogic.core; + +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; + +import java.util.UUID; + +import org.testng.annotations.BeforeMethod; +import org.testng.annotations.Test; + +import teammates.common.datatransfer.AccountRequestStatus; +import teammates.storage.sqlapi.AccountRequestsDb; +import teammates.storage.sqlentity.AccountRequest; +import teammates.test.BaseTestCase; + +/** + * SUT: {@link AccountRequestsLogic}. + */ +public class AccountRequestsLogicTest extends BaseTestCase { + + private AccountRequestsLogic accountRequestsLogic = AccountRequestsLogic.inst(); + + private AccountRequestsDb accountRequestsDb; + + @BeforeMethod + public void setUpMethod() { + accountRequestsDb = mock(AccountRequestsDb.class); + accountRequestsLogic.initLogicDependencies(accountRequestsDb); + } + + @Test + public void testGetAccountRequest_nonExistentAccountRequest_returnsNull() { + UUID id = UUID.randomUUID(); + when(accountRequestsDb.getAccountRequest(id)).thenReturn(null); + AccountRequest actualAccountRequest = accountRequestsLogic.getAccountRequest(id); + verify(accountRequestsDb).getAccountRequest(id); + assertNull(actualAccountRequest); + } + + @Test + public void testGetAccountRequest_existingAccountRequest_getsSuccessfully() { + AccountRequest expectedAccountRequest = + new AccountRequest("test@gmail.com", "name", "institute", AccountRequestStatus.PENDING, "comments"); + UUID id = expectedAccountRequest.getId(); + when(accountRequestsDb.getAccountRequest(id)).thenReturn(expectedAccountRequest); + AccountRequest actualAccountRequest = accountRequestsLogic.getAccountRequest(id); + verify(accountRequestsDb).getAccountRequest(id); + assertEquals(expectedAccountRequest, actualAccountRequest); + } +} From 444e7ba85ed24062ff78d06b4e3aceef982db2e5 Mon Sep 17 00:00:00 2001 From: Jay Aljelo Ting <65202977+jayasting98@users.noreply.github.com> Date: Thu, 28 Mar 2024 01:13:11 +0800 Subject: [PATCH 3/3] Add facade logic method to get an account request by ID --- src/main/java/teammates/sqllogic/api/Logic.java | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/main/java/teammates/sqllogic/api/Logic.java b/src/main/java/teammates/sqllogic/api/Logic.java index a6f785e442e..75243340fdd 100644 --- a/src/main/java/teammates/sqllogic/api/Logic.java +++ b/src/main/java/teammates/sqllogic/api/Logic.java @@ -95,6 +95,15 @@ public AccountRequest createAccountRequest(String name, String email, String ins return accountRequestLogic.createAccountRequest(name, email, institute, status, comments); } + /** + * Gets the account request with the given {@code id}. + * + * @return account request with the given {@code id}. + */ + public AccountRequest getAccountRequest(UUID id) { + return accountRequestLogic.getAccountRequest(id); + } + /** * Gets the account request with the given email and institute. *