Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -113,7 +113,7 @@ public Work createWork(User user, String prefix, String workTypeName, String wor
ReleaseRecipient workRequester = findOrCreateRequester(user, workRequesterName);
ReleaseDestination leadDest;
if (nullOrEmpty(facultyLead)) {
leadDest = null;
throw new IllegalArgumentException("No faculty lead specified.");
} else {
leadDest = destinationRepo.getByName(facultyLead);
if (!leadDest.isEnabled()) {
Expand Down
2 changes: 1 addition & 1 deletion src/main/resources/schema.graphqls
Original file line number Diff line number Diff line change
Expand Up @@ -2524,7 +2524,7 @@ type Mutation {
"""Create a new work, which will be allocated a new work number with the given prefix."""
createWork(prefix: String!, workType: String!, workRequester: String!, project: String!, program: String!,
costCode: String!, numBlocks: Int, numSlides: Int, numOriginalSamples: Int, omeroProject: String,
ssStudyId: Int, facultyLead: String): Work!
ssStudyId: Int, facultyLead: String!): Work!
"""Update the status of an existing work."""
updateWorkStatus(workNumber: String!, status: WorkStatus!, commentId: Int): WorkWithComment!
"""Update the number of blocks field in a work."""
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,8 @@ public class TestWorkMutation {
private OmeroProjectRepo omeroProjectRepo;
@Autowired
private DnapStudyRepo dnapStudyRepo;
@Autowired
private ReleaseDestinationRepo releaseDestinationRepo;

@Transactional
@Test
Expand All @@ -57,9 +59,10 @@ public void testWork() throws Exception {
User normaluser = entityCreator.createUser("user1", User.Role.normal);
OmeroProject omero = omeroProjectRepo.save(new OmeroProject("om_proj"));
DnapStudy study = dnapStudyRepo.save(new DnapStudy(123, "S123"));
ReleaseDestination rd = releaseDestinationRepo.save(new ReleaseDestination(null, "Kurt"));

String worksQuery = "query { works(status: [active]) { workNumber, workType {name}, workRequester {username}," +
"project {name}, program {name}, costCode {code}, status, omeroProject {name}, dnapStudy {name} } }";
"project {name}, program {name}, costCode {code}, status, omeroProject {name}, dnapStudy {name}, facultyLead {name} }}";
Object data = tester.post(worksQuery);
List<Map<String,?>> worksData = chainGet(data, "data", "works");
assertNotNull(worksData);
Expand All @@ -78,6 +81,7 @@ public void testWork() throws Exception {
assertEquals(workRequester.getUsername(), chainGet(workData, "workRequester", "username"));
assertEquals(omero.getName(), chainGet(workData, "omeroProject", "name"));
assertEquals(study.getName(), chainGet(workData, "dnapStudy", "name"));
assertEquals(rd.getName(), chainGet(workData, "facultyLead", "name"));
assertEquals("unstarted", workData.get("status"));

String worksCreatedByQuery = "query { worksCreatedBy(username: \"USER\") { workNumber } }";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -96,17 +96,19 @@ public void testCreateWork_numLabware(Integer numBlocks, Integer numSlides, Inte
when(mockWorkRepo.save(any())).then(Matchers.returnArgument());
ReleaseRecipient workRequester = new ReleaseRecipient(30, workRequesterName);
doReturn(workRequester).when(workService).findOrCreateRequester(user, workRequesterName);
ReleaseDestination dest = new ReleaseDestination(40, "Kurt");
when(mockReleaseDestRepo.getByName("Kurt")).thenReturn(dest);

if (expectedErrorMessage==null) {
Work result = workService.createWork(user, prefix, workTypeName, workRequesterName, projectName, progName, code, numBlocks, numSlides, numOriginalSamples, null, null, null);
Work result = workService.createWork(user, prefix, workTypeName, workRequesterName, projectName, progName, code, numBlocks, numSlides, numOriginalSamples, null, null, "Kurt");
verify(workService).checkPrefix(prefix);
verify(mockWorkRepo).createNumber(prefix);
verify(mockWorkRepo).save(result);
verify(mockWorkEventService).recordEvent(user, result, WorkEvent.Type.create, null);
assertEquals(new Work(null, workNumber, workType, workRequester, project, prog, cc, Status.unstarted, numBlocks, numSlides, numOriginalSamples, null, null, null, null), result);
assertEquals(new Work(null, workNumber, workType, workRequester, project, prog, cc, Status.unstarted, numBlocks, numSlides, numOriginalSamples, null, null, null, dest), result);
} else {
assertThat(assertThrows(IllegalArgumentException.class, () -> workService.createWork(user, prefix, workTypeName, workRequesterName, projectName,
progName, code, numBlocks, numSlides, numOriginalSamples, null, null, null))).hasMessage(expectedErrorMessage);
progName, code, numBlocks, numSlides, numOriginalSamples, null, null, "Kurt"))).hasMessage(expectedErrorMessage);
verifyNoInteractions(mockWorkRepo);
}
}
Expand Down Expand Up @@ -145,28 +147,32 @@ public void testCreateWork_omeroProject(Boolean enabled, String expectedErrorMes
when(mockWorkRepo.createNumber(prefix)).thenReturn(workNumber);
User user = new User(1, "user1", User.Role.admin);
when(mockReleaseRecipientRepo.findByUsername(workRequesterName)).thenReturn(Optional.of(new ReleaseRecipient(10, workRequesterName)));
ReleaseDestination dest = new ReleaseDestination(40, "Kurt");
when(mockReleaseDestRepo.getByName("Kurt")).thenReturn(dest);

when(mockWorkRepo.save(any())).then(Matchers.returnArgument());
if (expectedErrorMessage!=null) {
assertThat(assertThrows(RuntimeException.class, () -> workService.createWork(user, prefix, workTypeName, workRequesterName, projectName, progName, code, null, null, null, omeroName, null, null)))
assertThat(assertThrows(RuntimeException.class, () -> workService.createWork(user, prefix, workTypeName, workRequesterName, projectName, progName, code, null, null, null, omeroName, null, "Kurt")))
.hasMessage(expectedErrorMessage);
} else {
Work result = workService.createWork(user, prefix, workTypeName, workRequesterName, projectName, progName, code, null, null, null, omeroName, null, null);
Work result = workService.createWork(user, prefix, workTypeName, workRequesterName, projectName, progName, code, null, null, null, omeroName, null, "Kurt");
verify(mockWorkRepo).save(result);
assertSame(omero, result.getOmeroProject());
}
}

@ParameterizedTest
@CsvSource({
", Release destination not found.",
"true,",
"false, Destination Banana is disabled.",
"Banana,, Release destination not found.",
"Banana,true,",
"Banana,false, Destination Banana is disabled.",
",,No faculty lead specified.",
})
public void testCreateWork_facultyLead(Boolean enabled, String expectedErrorMessage) {
String destName = "Banana";
public void testCreateWork_facultyLead(String destName, Boolean enabled, String expectedErrorMessage) {
ReleaseDestination dest;
if (enabled==null) {
if (destName==null) {
dest = null;
} else if (enabled==null) {
dest = null;
when(mockReleaseDestRepo.getByName(destName)).thenThrow(new EntityNotFoundException(expectedErrorMessage));
} else {
Expand Down Expand Up @@ -238,13 +244,15 @@ public void testCreateWork_dnapStudy(Boolean enabled, String expectedErrorMessag
when(mockWorkRepo.createNumber(prefix)).thenReturn(workNumber);
User user = new User(1, "user1", User.Role.admin);
when(mockReleaseRecipientRepo.findByUsername(workRequesterName)).thenReturn(Optional.of(new ReleaseRecipient(10, workRequesterName)));
ReleaseDestination dest = new ReleaseDestination(40, "Kurt");
when(mockReleaseDestRepo.getByName("Kurt")).thenReturn(dest);

when(mockWorkRepo.save(any())).then(Matchers.returnArgument());
if (expectedErrorMessage!=null) {
assertThat(assertThrows(RuntimeException.class, () -> workService.createWork(user, prefix, workTypeName, workRequesterName, projectName, progName, code, null, null, null, null, ssId, null)))
assertThat(assertThrows(RuntimeException.class, () -> workService.createWork(user, prefix, workTypeName, workRequesterName, projectName, progName, code, null, null, null, null, ssId, "Kurt")))
.hasMessage(expectedErrorMessage);
} else {
Work result = workService.createWork(user, prefix, workTypeName, workRequesterName, projectName, progName, code, null, null, null, null, ssId, null);
Work result = workService.createWork(user, prefix, workTypeName, workRequesterName, projectName, progName, code, null, null, null, null, ssId, "Kurt");
verify(mockWorkRepo).save(result);
assertSame(study, result.getDnapStudy());
}
Expand Down
3 changes: 2 additions & 1 deletion src/test/resources/graphql/createWork.graphql
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
mutation {
createWork(prefix: "SGP", workType: "Drywalling", workRequester: "test1", project: "Stargate", program: "Hello",
costCode: "S666", omeroProject: "OM_PROJ", ssStudyId: 123) {
costCode: "S666", omeroProject: "OM_PROJ", ssStudyId: 123, facultyLead: "Kurt") {
workNumber
workType {name}
workRequester {username}
Expand All @@ -9,6 +9,7 @@ mutation {
costCode {code}
omeroProject {name}
dnapStudy {name}
facultyLead {name}
status
}
}
Loading