diff --git a/descriptors/ModuleDescriptor-template.json b/descriptors/ModuleDescriptor-template.json index 4d3883c6..77a97c0d 100644 --- a/descriptors/ModuleDescriptor-template.json +++ b/descriptors/ModuleDescriptor-template.json @@ -29,6 +29,19 @@ "pathPattern": "/_/tenant" } ] + }, + { + "id": "_timer", + "version": "1.0", + "interfaceType": "system", + "handlers": [ + { + "methods": [ "POST" ], + "pathPattern": "/title-level-requests-processing", + "unit": "second", + "delay": "30" + } + ] } ], "permissionSets" : [], diff --git a/src/main/java/org/folio/controller/OpenRequestsProcessingController.java b/src/main/java/org/folio/controller/OpenRequestsProcessingController.java new file mode 100644 index 00000000..88ea4e0e --- /dev/null +++ b/src/main/java/org/folio/controller/OpenRequestsProcessingController.java @@ -0,0 +1,22 @@ +package org.folio.controller; + +import org.folio.service.OpenRequestsProcessingService; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RestController; + +import lombok.RequiredArgsConstructor; +import lombok.extern.log4j.Log4j2; + +@RestController +@RequiredArgsConstructor +@Log4j2 +public class OpenRequestsProcessingController { + + private final OpenRequestsProcessingService openRequestsProcessingService; + + @PostMapping(value = "/title-level-requests-processing") + public void processOpenRequests() { + openRequestsProcessingService.processOpenRequests(); + } + +} \ No newline at end of file diff --git a/src/main/java/org/folio/service/OpenRequestsProcessingService.java b/src/main/java/org/folio/service/OpenRequestsProcessingService.java new file mode 100644 index 00000000..9d026078 --- /dev/null +++ b/src/main/java/org/folio/service/OpenRequestsProcessingService.java @@ -0,0 +1,5 @@ +package org.folio.service; + +public interface OpenRequestsProcessingService { + void processOpenRequests(); +} diff --git a/src/main/java/org/folio/service/impl/OpenRequestsProcessingServiceImpl.java b/src/main/java/org/folio/service/impl/OpenRequestsProcessingServiceImpl.java new file mode 100644 index 00000000..45961ae7 --- /dev/null +++ b/src/main/java/org/folio/service/impl/OpenRequestsProcessingServiceImpl.java @@ -0,0 +1,19 @@ +package org.folio.service.impl; + +import org.folio.service.OpenRequestsProcessingService; +import org.springframework.stereotype.Service; + +import lombok.RequiredArgsConstructor; +import lombok.extern.log4j.Log4j2; + +@Service +@RequiredArgsConstructor +@Log4j2 +public class OpenRequestsProcessingServiceImpl implements OpenRequestsProcessingService { + + @Override + public void processOpenRequests() { + log.info("processOpenRequests:: start"); + } + +} diff --git a/src/test/java/org/folio/api/OpenRequestsProcessingApiTest.java b/src/test/java/org/folio/api/OpenRequestsProcessingApiTest.java new file mode 100644 index 00000000..11aabd7d --- /dev/null +++ b/src/test/java/org/folio/api/OpenRequestsProcessingApiTest.java @@ -0,0 +1,20 @@ +package org.folio.api; + +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; + +import org.junit.jupiter.api.Test; +import org.springframework.http.MediaType; + +class OpenRequestsProcessingApiTest extends BaseIT { + private static final String PROCESS_OPEN_REQUESTS_URL = "/title-level-requests-processing"; + + @Test + void getByIdNotFound() throws Exception { + mockMvc.perform( + post(PROCESS_OPEN_REQUESTS_URL) + .headers(defaultHeaders()) + .contentType(MediaType.APPLICATION_JSON)) + .andExpect(status().is2xxSuccessful()); + } +} diff --git a/src/test/java/org/folio/controller/OpenRequestsProcessingControllerTest.java b/src/test/java/org/folio/controller/OpenRequestsProcessingControllerTest.java new file mode 100644 index 00000000..932cba23 --- /dev/null +++ b/src/test/java/org/folio/controller/OpenRequestsProcessingControllerTest.java @@ -0,0 +1,28 @@ +package org.folio.controller; + +import static org.mockito.Mockito.times; +import static org.mockito.Mockito.verify; + +import org.folio.service.OpenRequestsProcessingService; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.mockito.junit.jupiter.MockitoExtension; + +@ExtendWith(MockitoExtension.class) +class OpenRequestsProcessingControllerTest { + + @Mock + private OpenRequestsProcessingService service; + + @InjectMocks + private OpenRequestsProcessingController controller; + + @Test + void openRequestsProcessingServiceCalledFromController() { + controller.processOpenRequests(); + verify(service, times(1)).processOpenRequests(); + } + +}