Skip to content

Commit

Permalink
[#11878] Update DeleteAccountRequest to reference by ID (#12997)
Browse files Browse the repository at this point in the history
* Update to delete by id

* fix lint

* fix lint

* fix frontend lint
  • Loading branch information
dishenggg committed Apr 11, 2024
1 parent a36ecf7 commit 6de9607
Show file tree
Hide file tree
Showing 13 changed files with 27 additions and 28 deletions.
3 changes: 2 additions & 1 deletion src/e2e/java/teammates/e2e/cases/AdminHomePageE2ETest.java
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,8 @@ public void testAll() {
"\"invalidemail\" is not acceptable to TEAMMATES as a/an email because it is not in the correct format."));

assertNotNull(BACKDOOR.getAccountRequest(email, institute));
BACKDOOR.deleteAccountRequest(email, institute);
// TODO: delete account request after get
// BACKDOOR.deleteAccountRequest(email, institute);
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -193,7 +193,7 @@ private String getExpectedInstructorManageAccountLink(InstructorAttributes instr
@AfterClass
public void classTeardown() {
for (AccountRequest request : sqlTestData.accountRequests.values()) {
BACKDOOR.deleteAccountRequest(request.getEmail(), request.getInstitute());
BACKDOOR.deleteAccountRequest(request.getId());
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -67,9 +67,9 @@ public void testResetAccountRequest()

______TS("success: test delete account request");

accountRequestsLogic.deleteAccountRequest(email, institute);
accountRequestsLogic.deleteAccountRequest(toReset.getId());

assertNull(accountRequestsLogic.getAccountRequest(email, institute));
assertNull(accountRequestsLogic.getAccountRequest(toReset.getId()));

______TS("failure: reset account request that does not exist");

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -230,7 +230,7 @@ protected void tearDown() {
HibernateUtil.beginTransaction();
List<AccountRequest> accountRequests = logic.getPendingAccountRequests();
for (AccountRequest ar : accountRequests) {
logic.deleteAccountRequest(ar.getEmail(), ar.getInstitute());
logic.deleteAccountRequest(ar.getId());
}
accountRequests = logic.getPendingAccountRequests();
HibernateUtil.commitTransaction();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -227,7 +227,7 @@ protected void tearDown() {
HibernateUtil.beginTransaction();
List<AccountRequest> accountRequests = logic.getAllAccountRequests();
for (AccountRequest ar : accountRequests) {
logic.deleteAccountRequest(ar.getEmail(), ar.getInstitute());
logic.deleteAccountRequest(ar.getId());
}
HibernateUtil.commitTransaction();
}
Expand Down
6 changes: 3 additions & 3 deletions src/main/java/teammates/sqllogic/api/Logic.java
Original file line number Diff line number Diff line change
Expand Up @@ -177,7 +177,7 @@ public AccountRequest resetAccountRequest(String email, String institute)
}

/**
* Deletes account request by email and institute.
* Deletes account request by id.
*
* <ul>
* <li>Fails silently if no such account request.</li>
Expand All @@ -186,8 +186,8 @@ public AccountRequest resetAccountRequest(String email, String institute)
* <p>Preconditions:</p>
* All parameters are non-null.
*/
public void deleteAccountRequest(String email, String institute) {
accountRequestLogic.deleteAccountRequest(email, institute);
public void deleteAccountRequest(UUID id) {
accountRequestLogic.deleteAccountRequest(id);
}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -159,13 +159,13 @@ public AccountRequest resetAccountRequest(String email, String institute)
}

/**
* Deletes account request associated with the {@code email} and {@code institute}.
* Deletes account request associated with the {@code id}.
*
* <p>Fails silently if no account requests with the given email and institute to delete can be found.</p>
* <p>Fails silently if no account requests with the given id to delete can be found.</p>
*
*/
public void deleteAccountRequest(String email, String institute) {
AccountRequest toDelete = accountRequestDb.getAccountRequest(email, institute);
public void deleteAccountRequest(UUID id) {
AccountRequest toDelete = accountRequestDb.getAccountRequest(id);

accountRequestDb.deleteAccountRequest(toDelete);
}
Expand Down
2 changes: 1 addition & 1 deletion src/main/java/teammates/sqllogic/core/DataBundleLogic.java
Original file line number Diff line number Diff line change
Expand Up @@ -351,7 +351,7 @@ public void removeDataBundle(SqlDataBundle dataBundle) throws InvalidParametersE
accountsLogic.deleteAccount(account.getGoogleId());
});
dataBundle.accountRequests.values().forEach(accountRequest -> {
accountRequestsLogic.deleteAccountRequest(accountRequest.getEmail(), accountRequest.getInstitute());
accountRequestsLogic.deleteAccountRequest(accountRequest.getId());
});
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
package teammates.ui.webapi;

import java.util.UUID;

import teammates.common.util.Const;
import teammates.storage.sqlentity.AccountRequest;

Expand All @@ -10,17 +12,16 @@ class DeleteAccountRequestAction extends AdminOnlyAction {

@Override
public JsonResult execute() throws InvalidOperationException {
String email = getNonNullRequestParamValue(Const.ParamsNames.INSTRUCTOR_EMAIL);
String institute = getNonNullRequestParamValue(Const.ParamsNames.INSTRUCTOR_INSTITUTION);
UUID id = getUuidRequestParamValue(Const.ParamsNames.ACCOUNT_REQUEST_ID);

AccountRequest toDelete = sqlLogic.getAccountRequest(email, institute);
AccountRequest toDelete = sqlLogic.getAccountRequest(id);

if (toDelete != null && toDelete.getRegisteredAt() != null) {
// instructor is already registered and cannot be deleted
throw new InvalidOperationException("Account request of a registered instructor cannot be deleted.");
}

sqlLogic.deleteAccountRequest(email, institute);
sqlLogic.deleteAccountRequest(id);

return new JsonResult("Account request successfully deleted.");
}
Expand Down
5 changes: 2 additions & 3 deletions src/test/java/teammates/test/AbstractBackDoor.java
Original file line number Diff line number Diff line change
Expand Up @@ -868,10 +868,9 @@ public String getRegKeyForAccountRequest(String email, String institute) {
/**
* Deletes an account request from the database.
*/
public void deleteAccountRequest(String email, String institute) {
public void deleteAccountRequest(UUID id) {
Map<String, String> params = new HashMap<>();
params.put(Const.ParamsNames.INSTRUCTOR_EMAIL, email);
params.put(Const.ParamsNames.INSTRUCTOR_INSTITUTION, institute);
params.put(Const.ParamsNames.ACCOUNT_REQUEST_ID, id.toString());
executeDeleteRequest(Const.ResourceURIs.ACCOUNT_REQUEST, params);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -129,7 +129,7 @@ export class AccountRequestTableComponent {
`Delete account request for <strong>${accountRequest.name}</strong>?`, SimpleModalType.DANGER, modalContent);

modalRef.result.then(() => {
this.accountService.deleteAccountRequest(accountRequest.email, accountRequest.instituteAndCountry)
this.accountService.deleteAccountRequest(accountRequest.id)
.subscribe({
next: (resp: MessageOutput) => {
this.statusMessageService.showSuccessToast(resp.message);
Expand Down
5 changes: 2 additions & 3 deletions src/web/services/account.service.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -84,10 +84,9 @@ describe('AccountService', () => {
});

it('should execute DELETE on account request endpoint', () => {
service.deleteAccountRequest('testEmail', 'testInstitution');
service.deleteAccountRequest('testId');
const paramMap: Record<string, string> = {
instructoremail: 'testEmail',
instructorinstitution: 'testInstitution',
id: 'testId',
};
expect(spyHttpRequestService.delete).toHaveBeenCalledWith(ResourceEndpoints.ACCOUNT_REQUEST, paramMap);
});
Expand Down
5 changes: 2 additions & 3 deletions src/web/services/account.service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -58,10 +58,9 @@ export class AccountService {
/**
* Deletes an account request by calling API.
*/
deleteAccountRequest(email: string, institute: string): Observable<MessageOutput> {
deleteAccountRequest(id: string): Observable<MessageOutput> {
const paramMap: Record<string, string> = {
instructoremail: email,
instructorinstitution: institute,
id,
};
return this.httpRequestService.delete(ResourceEndpoints.ACCOUNT_REQUEST, paramMap);
}
Expand Down

0 comments on commit 6de9607

Please sign in to comment.