From ad6b36e00b1ccd33c54032ed566ce0775aaa1778 Mon Sep 17 00:00:00 2001 From: PradnyaC11 Date: Thu, 24 Apr 2025 11:57:47 -0700 Subject: [PATCH 1/2] [CITE-237] Added delete sync job code --- .../core/service/jobs/ISyncJobManager.java | 2 ++ .../service/jobs/impl/SyncJobManager.java | 15 +++++++++++++ .../web/DeleteSyncJobController.java | 21 +++++++++++++++++++ .../webapp/WEB-INF/views/auth/jobs/list.html | 9 ++++++++ 4 files changed, 47 insertions(+) create mode 100644 citesphere/src/main/java/edu/asu/diging/citesphere/web/DeleteSyncJobController.java diff --git a/citesphere/src/main/java/edu/asu/diging/citesphere/core/service/jobs/ISyncJobManager.java b/citesphere/src/main/java/edu/asu/diging/citesphere/core/service/jobs/ISyncJobManager.java index bb245da6c..9a9165bb7 100644 --- a/citesphere/src/main/java/edu/asu/diging/citesphere/core/service/jobs/ISyncJobManager.java +++ b/citesphere/src/main/java/edu/asu/diging/citesphere/core/service/jobs/ISyncJobManager.java @@ -19,4 +19,6 @@ public interface ISyncJobManager { void cancelJob(String jobId); + void deleteJob(String jobId); + } \ No newline at end of file diff --git a/citesphere/src/main/java/edu/asu/diging/citesphere/core/service/jobs/impl/SyncJobManager.java b/citesphere/src/main/java/edu/asu/diging/citesphere/core/service/jobs/impl/SyncJobManager.java index fa4fb77df..30a2985f0 100644 --- a/citesphere/src/main/java/edu/asu/diging/citesphere/core/service/jobs/impl/SyncJobManager.java +++ b/citesphere/src/main/java/edu/asu/diging/citesphere/core/service/jobs/impl/SyncJobManager.java @@ -89,4 +89,19 @@ public void cancelJob(String jobId) { jobRepo.save(job); } } + + @Override + public void deleteJob(String jobId) { + Optional jobOptional = jobRepo.findById(jobId); + if (jobOptional.isPresent()) { + GroupSyncJob job = currentJobs.get(jobOptional.get().getGroupId()); + if (job == null) { + job = jobOptional.get(); + } +// job.setStatus(JobStatus.CANCELED); + job.setFinishedOn(OffsetDateTime.now()); + jobRepo.delete(job); + } + + } } diff --git a/citesphere/src/main/java/edu/asu/diging/citesphere/web/DeleteSyncJobController.java b/citesphere/src/main/java/edu/asu/diging/citesphere/web/DeleteSyncJobController.java new file mode 100644 index 000000000..0b5c03109 --- /dev/null +++ b/citesphere/src/main/java/edu/asu/diging/citesphere/web/DeleteSyncJobController.java @@ -0,0 +1,21 @@ +package edu.asu.diging.citesphere.web; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; + +import edu.asu.diging.citesphere.core.service.jobs.ISyncJobManager; + +@Controller +public class DeleteSyncJobController { + @Autowired + private ISyncJobManager syncManager; + + @RequestMapping(value = "/auth/jobs/sync/{jobId}/delete", method=RequestMethod.DELETE) + public String cancel(@PathVariable String jobId) { + syncManager.deleteJob(jobId); + return "redirect:/auth/jobs/sync/list"; + } +} diff --git a/citesphere/src/main/webapp/WEB-INF/views/auth/jobs/list.html b/citesphere/src/main/webapp/WEB-INF/views/auth/jobs/list.html index bad98d32e..9c312fed3 100644 --- a/citesphere/src/main/webapp/WEB-INF/views/auth/jobs/list.html +++ b/citesphere/src/main/webapp/WEB-INF/views/auth/jobs/list.html @@ -34,6 +34,7 @@

Jobs

Finished On + [[${job.id}]] @@ -59,6 +60,14 @@

Jobs

+ +
+ +
+ From 3ae2ccf9bd48cc6059d0282b484593529030439a Mon Sep 17 00:00:00 2001 From: PradnyaC11 Date: Fri, 25 Apr 2025 15:52:49 -0700 Subject: [PATCH 2/2] [CITE-237] Resolved error and added test cases --- .../web/DeleteSyncJobController.java | 4 +- .../service/jobs/impl/SyncJobManagerTest.java | 102 ++++++++++++++++++ 2 files changed, 104 insertions(+), 2 deletions(-) create mode 100644 citesphere/src/test/java/edu/asu/diging/citesphere/core/service/jobs/impl/SyncJobManagerTest.java diff --git a/citesphere/src/main/java/edu/asu/diging/citesphere/web/DeleteSyncJobController.java b/citesphere/src/main/java/edu/asu/diging/citesphere/web/DeleteSyncJobController.java index 0b5c03109..64882eabd 100644 --- a/citesphere/src/main/java/edu/asu/diging/citesphere/web/DeleteSyncJobController.java +++ b/citesphere/src/main/java/edu/asu/diging/citesphere/web/DeleteSyncJobController.java @@ -13,8 +13,8 @@ public class DeleteSyncJobController { @Autowired private ISyncJobManager syncManager; - @RequestMapping(value = "/auth/jobs/sync/{jobId}/delete", method=RequestMethod.DELETE) - public String cancel(@PathVariable String jobId) { + @RequestMapping(value = "/auth/jobs/sync/{jobId}/delete", method=RequestMethod.POST) + public String delete(@PathVariable String jobId) { syncManager.deleteJob(jobId); return "redirect:/auth/jobs/sync/list"; } diff --git a/citesphere/src/test/java/edu/asu/diging/citesphere/core/service/jobs/impl/SyncJobManagerTest.java b/citesphere/src/test/java/edu/asu/diging/citesphere/core/service/jobs/impl/SyncJobManagerTest.java new file mode 100644 index 000000000..21a158c98 --- /dev/null +++ b/citesphere/src/test/java/edu/asu/diging/citesphere/core/service/jobs/impl/SyncJobManagerTest.java @@ -0,0 +1,102 @@ +package edu.asu.diging.citesphere.core.service.jobs.impl; + +import static org.mockito.Mockito.doThrow; +import static org.mockito.Mockito.times; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; + +import java.util.ArrayList; +import java.util.List; +import java.util.Optional; + +import org.junit.Before; +import org.junit.Test; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.mockito.Mockito; +import org.mockito.MockitoAnnotations; +import org.springframework.data.domain.PageRequest; + +import edu.asu.diging.citesphere.core.model.jobs.impl.GroupSyncJob; +import edu.asu.diging.citesphere.core.repository.jobs.GroupSyncJobRepository; +import edu.asu.diging.citesphere.core.service.ICitationManager; +import edu.asu.diging.citesphere.model.bib.ICitationGroup; +import edu.asu.diging.citesphere.model.bib.impl.CitationGroup; +import edu.asu.diging.citesphere.user.impl.User; + +public class SyncJobManagerTest { + + @InjectMocks + private SyncJobManager managerToTest; + + @Mock + private GroupSyncJobRepository jobRepo; + + @Mock + private ICitationManager citationManager; + + private int page; + private int pageSize; + private List citationGroupList; + private ICitationGroup citationGroup1; + private ICitationGroup citationGroup2; + private List groupSyncJobList; + private GroupSyncJob groupSyncJob1; + private GroupSyncJob groupSyncJob2; + @Before + public void setUp() { + MockitoAnnotations.initMocks(this); + managerToTest.init(); + new User(); + page = 1; + pageSize = 10; + PageRequest.of(page, pageSize); + + citationGroup1 = new CitationGroup(); + citationGroup1.setGroupId(1L); + citationGroup2 = new CitationGroup(); + groupSyncJob1 = new GroupSyncJob(); + groupSyncJob2 = new GroupSyncJob(); + + citationGroupList = new ArrayList<>(); + citationGroupList.add(citationGroup1); + citationGroupList.add(citationGroup2); + + groupSyncJobList = new ArrayList<>(); + groupSyncJobList.add(groupSyncJob1); + groupSyncJobList.add(groupSyncJob2); + + new ArrayList<>(); + + new ArrayList<>(); + } + + @Test + public void test_deleteJob_success() { + groupSyncJob1.setId("job1"); + groupSyncJob1.setGroupId(String.valueOf(citationGroup1.getGroupId())); + + when(jobRepo.findById("job1")).thenReturn(Optional.of(groupSyncJob1)); + + managerToTest.addJob(groupSyncJob1); + + managerToTest.deleteJob("job1"); + + verify(jobRepo, times(1)).delete(groupSyncJob1); + } + + @Test(expected = IllegalArgumentException.class) + public void test_deleteJob_failed() { + groupSyncJob1.setId("job1"); + groupSyncJob1.setGroupId(String.valueOf(citationGroup1.getGroupId())); + + when(jobRepo.findById("job1")).thenReturn(Optional.of(groupSyncJob1)); + + doThrow(new IllegalArgumentException("entity is null")) + .when(jobRepo).delete(Mockito.any(GroupSyncJob.class)); + + managerToTest.deleteJob("job1"); + } + + +}