Skip to content
Snippets Groups Projects
Commit 09833afc authored by Henry Page's avatar Henry Page :speech_balloon:
Browse files

refactor expensive db reloads to method levels

parent 18b81cee
No related branches found
No related tags found
2 merge requests!711Version 2.2.1,!667Resolve "Divide requests over TAs"
......@@ -17,7 +17,6 @@
*/
package nl.tudelft.queue.dto.util;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
......@@ -32,9 +31,7 @@ import lombok.NoArgsConstructor;
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(callSuper = false)
public class DistributeRequestsDTO implements Serializable {
private static final long serialVersionUID = 2132132178981L;
public class DistributeRequestsDTO {
@Builder.Default
private List<EditionRequestDistributionDTO> editionSelections = new ArrayList<>();
......@@ -50,8 +47,7 @@ public class DistributeRequestsDTO implements Serializable {
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(callSuper = false)
public static class EditionRequestDistributionDTO implements Serializable {
private static final long serialVersionUID = 987654321L;
public static class EditionRequestDistributionDTO {
private List<Long> selectedAssignments = new ArrayList<>();
......
......@@ -191,7 +191,7 @@
th:object="${distributeRequestsDto}"
th:action="@{/lab/{id}/distribute(id=${qSession.id})}"
th:method="POST"
class="flex vertical gap-6">
class="flex vertical gap-5">
<div id="distribute-edition-cards" class="flex vertical space-between">
<th:block th:each="edition, editionItemStat : ${qSession.session.editions}">
<div
......@@ -208,6 +208,7 @@
data-select
multiple
class="textfield"
data-style="variant"
th:id="'assignment-distribute-select-' + ${edition.id}"
data-title="Select assignment(s) to distribute"
th:field="*{editionSelections[__${editionItemStat.index}__].selectedAssignments}">
......@@ -224,6 +225,7 @@
data-select
multiple
class="textfield"
data-style="variant"
th:id="'assistant-distribute-select-' + ${edition.id}"
data-title="Select assistant(s) to distribute among"
th:field="*{editionSelections[__${editionItemStat.index}__].selectedAssistants}">
......
......@@ -72,7 +72,6 @@ import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.boot.test.mock.mockito.SpyBean;
import org.springframework.http.MediaType;
import org.springframework.security.test.context.support.WithUserDetails;
import org.springframework.test.annotation.DirtiesContext;
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.request.MockHttpServletRequestBuilder;
......@@ -86,7 +85,6 @@ import com.fasterxml.jackson.databind.ObjectMapper;
@Transactional
@AutoConfigureMockMvc
@SpringBootTest(classes = TestQueueApplication.class)
@DirtiesContext(classMode = DirtiesContext.ClassMode.BEFORE_CLASS)
class LabControllerTest {
@Autowired
......
......@@ -20,6 +20,7 @@ package nl.tudelft.queue.service;
import static nl.tudelft.queue.model.enums.RequestStatus.*;
import static org.assertj.core.api.Assertions.assertThat;
import static org.junit.jupiter.api.Assertions.assertThrows;
import static org.mockito.AdditionalMatchers.or;
import static org.mockito.ArgumentMatchers.*;
import static org.mockito.Mockito.*;
......@@ -66,7 +67,6 @@ import test.test.TestQueueApplication;
@Transactional
@SpringBootTest(classes = TestQueueApplication.class)
@DirtiesContext(classMode = DirtiesContext.ClassMode.BEFORE_EACH_TEST_METHOD)
public class RequestServiceTest {
private final RoomDetailsDTO room1 = new RoomDetailsDTO()
.id(8932L)
......@@ -367,6 +367,7 @@ public class RequestServiceTest {
}
@Test
@DirtiesContext(methodMode = DirtiesContext.MethodMode.BEFORE_METHOD)
void onlyPendingRequestsWithCorrectAssignmentsGetDistributed() {
pApiMocker.save(new PersonSummaryDTO().id(1L));
pApiMocker.save(new PersonSummaryDTO().id(2L));
......@@ -381,27 +382,34 @@ public class RequestServiceTest {
rs.distributeRequests(List.of(1L), List.of(1L, 2L), Person.builder().build(), oopNowSlottedLab1);
verify(rs, times(1)).forwardRequestToPerson(any(), any(), any(), any());
verify(rs, times(1)).forwardRequestToPerson(eq(oopNowSlottedLab1.getRequests().get(0)), any(), any(),
any());
}
@Test
@DirtiesContext(methodMode = DirtiesContext.MethodMode.BEFORE_METHOD)
void distributingRequestsWithMissingPeopleBehavesAsExpected() {
pApiMocker.save(new PersonSummaryDTO().id(1L));
doNothing().when(rs).forwardRequestToPerson(any(), any(), any(), any());
oopNowSlottedLab1.getRequests().addAll(List.of(LabRequest.builder().assignment(1L).build(),
LabRequest.builder().assignment(1L).build(), LabRequest.builder().assignment(2L).build(),
LabRequest.builder().assignment(3L).build(), LabRequest.builder().assignment(3L).build()));
oopNowSlottedLab1.getRequests().addAll(List.of(LabRequest.builder().assignment(9801L).build(),
LabRequest.builder().assignment(9801L).build(),
LabRequest.builder().assignment(9802L).build(),
LabRequest.builder().assignment(9803L).build(),
LabRequest.builder().assignment(9803L).build()));
oopNowSlottedLab1.getRequests().get(1).getEventInfo().setStatus(APPROVED);
oopNowSlottedLab1.getRequests().get(2).getEventInfo().setStatus(PENDING);
rs.distributeRequests(List.of(1L), List.of(2L), Person.builder().build(), oopNowSlottedLab1);
rs.distributeRequests(List.of(9801L), List.of(2L), Person.builder().build(), oopNowSlottedLab1);
verify(rs, never()).forwardRequestToPerson(any(), any(), any(), any());
verify(rs, never()).forwardRequestToPerson(
or(eq(oopNowSlottedLab1.getRequests().get(0)), eq(oopNowSlottedLab1.getRequests().get(1))),
any(), any(), any());
rs.distributeRequests(List.of(1L, 2L), List.of(1L, 2L), Person.builder().build(), oopNowSlottedLab1);
rs.distributeRequests(List.of(9801L, 9802L), List.of(1L, 2L), Person.builder().build(),
oopNowSlottedLab1);
verify(rs, times(2)).forwardRequestToPerson(any(), any(), any(), any());
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please to comment