Skip to content

Commit

Permalink
Fixed issue with ProjectEventHandler not persisting modifiedDate.
Browse files Browse the repository at this point in the history
  • Loading branch information
ericenns committed Feb 25, 2022
1 parent d27f10e commit fe73f5a
Show file tree
Hide file tree
Showing 3 changed files with 32 additions and 4 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
import ca.corefacility.bioinformatics.irida.events.ProjectEventHandler;
import ca.corefacility.bioinformatics.irida.model.workflow.submission.AnalysisSubmission;
import ca.corefacility.bioinformatics.irida.repositories.ProjectEventRepository;
import ca.corefacility.bioinformatics.irida.repositories.ProjectRepository;
import ca.corefacility.bioinformatics.irida.repositories.analysis.submission.AnalysisSubmissionRepository;
import ca.corefacility.bioinformatics.irida.repositories.joins.project.ProjectSampleJoinRepository;
import ca.corefacility.bioinformatics.irida.repositories.sample.SampleRepository;
Expand All @@ -32,8 +33,10 @@ public ValidMethodParametersAspect validMethodsParametersAspect(Validator valida

@Bean
public ProjectEventAspect projectEventAspect(final ProjectEventRepository eventRepository,
final ProjectSampleJoinRepository psjRepository, final SampleRepository sampleRepository) {
return new ProjectEventAspect(new ProjectEventHandler(eventRepository, psjRepository, sampleRepository));
final ProjectSampleJoinRepository psjRepository, final ProjectRepository projectRepository,
final SampleRepository sampleRepository) {
return new ProjectEventAspect(
new ProjectEventHandler(eventRepository, psjRepository, projectRepository, sampleRepository));
}

@Bean
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@
import ca.corefacility.bioinformatics.irida.model.user.group.UserGroup;
import ca.corefacility.bioinformatics.irida.model.user.group.UserGroupProjectJoin;
import ca.corefacility.bioinformatics.irida.repositories.ProjectEventRepository;
import ca.corefacility.bioinformatics.irida.repositories.ProjectRepository;
import ca.corefacility.bioinformatics.irida.repositories.joins.project.ProjectSampleJoinRepository;
import ca.corefacility.bioinformatics.irida.repositories.sample.SampleRepository;

Expand All @@ -34,12 +35,15 @@ public class ProjectEventHandler {

private final ProjectEventRepository eventRepository;
private final ProjectSampleJoinRepository psjRepository;
private final ProjectRepository projectRepository;
private final SampleRepository sampleRepository;

public ProjectEventHandler(final ProjectEventRepository eventRepository,
final ProjectSampleJoinRepository psjRepository, final SampleRepository sampleRepository) {
final ProjectSampleJoinRepository psjRepository, final ProjectRepository projectRepository,
final SampleRepository sampleRepository) {
this.eventRepository = eventRepository;
this.psjRepository = psjRepository;
this.projectRepository = projectRepository;
this.sampleRepository = sampleRepository;
}

Expand Down Expand Up @@ -104,6 +108,7 @@ private void updateProjectModifiedDate(Project project, Date eventDate) {
// values (i.e. modifiedDate ). Calling save here would cause Hibernate to fully select the object
// before executing the update which is very slow and increases in time as the number of samples
// in the project increase.
project = projectRepository.findById(project.getId()).get();
project.setModifiedDate(eventDate);
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package ca.corefacility.bioinformatics.irida.events;

import java.util.List;
import java.util.Optional;
import java.util.Set;

import org.junit.jupiter.api.BeforeEach;
Expand All @@ -18,6 +19,7 @@
import ca.corefacility.bioinformatics.irida.model.sequenceFile.SingleEndSequenceFile;
import ca.corefacility.bioinformatics.irida.model.user.User;
import ca.corefacility.bioinformatics.irida.repositories.ProjectEventRepository;
import ca.corefacility.bioinformatics.irida.repositories.ProjectRepository;
import ca.corefacility.bioinformatics.irida.repositories.joins.project.ProjectSampleJoinRepository;
import ca.corefacility.bioinformatics.irida.repositories.sample.SampleRepository;

Expand All @@ -31,27 +33,31 @@
public class ProjectEventHandlerTest {
private ProjectEventHandler handler;
private ProjectEventRepository eventRepository;
private ProjectRepository projectRepository;
private ProjectSampleJoinRepository psjRepository;
private SampleRepository sampleRepository;

@BeforeEach
public void setup() {
eventRepository = mock(ProjectEventRepository.class);
psjRepository = mock(ProjectSampleJoinRepository.class);
projectRepository = mock(ProjectRepository.class);
sampleRepository = mock(SampleRepository.class);
handler = new ProjectEventHandler(eventRepository, psjRepository, sampleRepository);
handler = new ProjectEventHandler(eventRepository, psjRepository, projectRepository, sampleRepository);
}

@Test
public void testDelegateSampleAdded() {
Class<? extends ProjectEvent> clazz = SampleAddedProjectEvent.class;
Project project = new Project();
project.setId(1L);
Sample sample = new Sample();
ProjectSampleJoin returnValue = new ProjectSampleJoin(project, sample, true);
Object[] args = { project, sample };
MethodEvent methodEvent = new MethodEvent(clazz, returnValue, args);

when(eventRepository.save(any(ProjectEvent.class))).thenReturn(new SampleAddedProjectEvent(returnValue));
when(projectRepository.findById(1L)).thenReturn(Optional.of(project));

handler.delegate(methodEvent);

Expand All @@ -67,12 +73,14 @@ public void testDelegateSampleAdded() {
public void testDelegateUserRole() {
Class<? extends ProjectEvent> clazz = UserRoleSetProjectEvent.class;
Project project = new Project();
project.setId(1L);
User user = new User();
ProjectUserJoin returnValue = new ProjectUserJoin(project, user, ProjectRole.PROJECT_USER);
Object[] args = { project, user, ProjectRole.PROJECT_USER };
MethodEvent methodEvent = new MethodEvent(clazz, returnValue, args);

when(eventRepository.save(any(ProjectEvent.class))).thenReturn(new UserRoleSetProjectEvent(returnValue));
when(projectRepository.findById(1L)).thenReturn(Optional.of(project));

handler.delegate(methodEvent);

Expand All @@ -88,11 +96,13 @@ public void testDelegateUserRole() {
public void testDelegateUserRemoved() {
Class<? extends ProjectEvent> clazz = UserRemovedProjectEvent.class;
Project project = new Project();
project.setId(1L);
User user = new User();
Object[] args = { project, user };
MethodEvent methodEvent = new MethodEvent(clazz, null, args);

when(eventRepository.save(any(ProjectEvent.class))).thenReturn(new UserRemovedProjectEvent(project, user));
when(projectRepository.findById(1L)).thenReturn(Optional.of(project));

handler.delegate(methodEvent);

Expand All @@ -108,11 +118,14 @@ public void testDelegateUserRemoved() {
public void testHandleSequenceFileAddedEventSingle() {
Class<? extends ProjectEvent> clazz = DataAddedToSampleProjectEvent.class;
Project project = new Project();
project.setId(1L);
Sample sample = new Sample();
SequenceFile file = new SequenceFile();
SingleEndSequenceFile seqObj = new SingleEndSequenceFile(file);
SampleSequencingObjectJoin join = new SampleSequencingObjectJoin(sample, seqObj);

when(projectRepository.findById(1L)).thenReturn(Optional.of(project));

when(psjRepository.getProjectForSample(sample))
.thenReturn(Lists.newArrayList(new ProjectSampleJoin(project, sample, true)));

Expand All @@ -137,13 +150,15 @@ public void testHandleSequenceFileAddedEventSingle() {
public void testHandleSequenceFileAddedEventMultipleReturn() {
Class<? extends ProjectEvent> clazz = DataAddedToSampleProjectEvent.class;
Project project = new Project();
project.setId(1L);
Sample sample = new Sample();
SequenceFile file = new SequenceFile();
SingleEndSequenceFile seqObj1 = new SingleEndSequenceFile(file);
SingleEndSequenceFile seqObj2 = new SingleEndSequenceFile(file);
SampleSequencingObjectJoin join1 = new SampleSequencingObjectJoin(sample, seqObj1);
SampleSequencingObjectJoin join2 = new SampleSequencingObjectJoin(sample, seqObj2);

when(projectRepository.findById(1L)).thenReturn(Optional.of(project));
when(psjRepository.getProjectForSample(sample))
.thenReturn(Lists.newArrayList(new ProjectSampleJoin(project, sample, true)));

Expand All @@ -168,12 +183,16 @@ public void testHandleSequenceFileAddedEventMultipleReturn() {
public void testHandleSequenceFileAddedEventMultipleProjects() {
Class<? extends ProjectEvent> clazz = DataAddedToSampleProjectEvent.class;
Project project = new Project("p1");
project.setId(1L);
Project project2 = new Project("p2");
project2.setId(2L);
Sample sample = new Sample();
SequenceFile file = new SequenceFile();
SingleEndSequenceFile seqObj = new SingleEndSequenceFile(file);
SampleSequencingObjectJoin join = new SampleSequencingObjectJoin(sample, seqObj);

when(projectRepository.findById(1L)).thenReturn(Optional.of(project));
when(projectRepository.findById(2L)).thenReturn(Optional.of(project2));
when(psjRepository.getProjectForSample(sample)).thenReturn(Lists.newArrayList(
new ProjectSampleJoin(project, sample, true), new ProjectSampleJoin(project2, sample, true)));

Expand Down Expand Up @@ -204,6 +223,7 @@ public void testHandleSequenceFileAddedEventMultipleProjects() {
public void testOtherEvent() {
Class<? extends ProjectEvent> clazz = ProjectEvent.class;
Project project = new Project();
project.setId(1L);
User user = new User();
Object[] args = { project, user };
MethodEvent methodEvent = new MethodEvent(clazz, null, args);
Expand Down

0 comments on commit fe73f5a

Please sign in to comment.