diff --git a/slp-backend/pom.xml b/slp-backend/pom.xml index da5f948..ca99b5a 100644 --- a/slp-backend/pom.xml +++ b/slp-backend/pom.xml @@ -136,6 +136,11 @@ 6.2.2 test + + junit + junit + test + diff --git a/slp-backend/src/main/java/agh/edu/pl/slpbackend/controller/AddressController.java b/slp-backend/src/main/java/agh/edu/pl/slpbackend/controller/AddressController.java index 56029c6..99d1618 100644 --- a/slp-backend/src/main/java/agh/edu/pl/slpbackend/controller/AddressController.java +++ b/slp-backend/src/main/java/agh/edu/pl/slpbackend/controller/AddressController.java @@ -4,7 +4,6 @@ import agh.edu.pl.slpbackend.dto.AddressDto; import agh.edu.pl.slpbackend.service.AddressService; import lombok.AllArgsConstructor; -import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.CrossOrigin; import org.springframework.web.bind.annotation.GetMapping; @@ -15,7 +14,7 @@ @RestController @AllArgsConstructor -@RequestMapping("/address") //TODO odpowiedni rooting jeszcze nie wiem XDD +@RequestMapping("/address") @CrossOrigin(origins = "http://localhost:3000") public class AddressController extends AbstractController { @@ -23,15 +22,6 @@ public class AddressController extends AbstractController { @GetMapping("/list") public ResponseEntity> list() { - try { - List list = addressService.selectAll(); - - if (list.isEmpty()) { - return new ResponseEntity<>(HttpStatus.NO_CONTENT); - } - return new ResponseEntity<>(list, HttpStatus.OK); - } catch (Exception e) { - return new ResponseEntity<>(null, HttpStatus.INTERNAL_SERVER_ERROR); - } + return ResponseEntity.ok(addressService.selectAll()); } } diff --git a/slp-backend/src/main/java/agh/edu/pl/slpbackend/controller/DataController.java b/slp-backend/src/main/java/agh/edu/pl/slpbackend/controller/DataController.java index 016cd5a..4f8df90 100644 --- a/slp-backend/src/main/java/agh/edu/pl/slpbackend/controller/DataController.java +++ b/slp-backend/src/main/java/agh/edu/pl/slpbackend/controller/DataController.java @@ -20,6 +20,6 @@ public class DataController { @GetMapping("/filters") public ResponseEntity getFilters() { - return new ResponseEntity<>(dataService.getFilters(), HttpStatus.OK); + return ResponseEntity.ok(dataService.getFilters()); } } diff --git a/slp-backend/src/main/java/agh/edu/pl/slpbackend/controller/dictionary/ExaminationController.java b/slp-backend/src/main/java/agh/edu/pl/slpbackend/controller/ExaminationController.java similarity index 89% rename from slp-backend/src/main/java/agh/edu/pl/slpbackend/controller/dictionary/ExaminationController.java rename to slp-backend/src/main/java/agh/edu/pl/slpbackend/controller/ExaminationController.java index e9ee50b..0bcf3bb 100644 --- a/slp-backend/src/main/java/agh/edu/pl/slpbackend/controller/dictionary/ExaminationController.java +++ b/slp-backend/src/main/java/agh/edu/pl/slpbackend/controller/ExaminationController.java @@ -1,4 +1,4 @@ -package agh.edu.pl.slpbackend.controller.dictionary; +package agh.edu.pl.slpbackend.controller; import agh.edu.pl.slpbackend.controller.iface.AbstractController; import agh.edu.pl.slpbackend.dto.ExaminationDto; @@ -19,7 +19,7 @@ public class ExaminationController extends AbstractController { private final ExaminationService examinationService; @PostMapping("/save") - public ResponseEntity add(@RequestBody ExaminationDto examinationDto) throws Exception { + public ResponseEntity add(@RequestBody ExaminationDto examinationDto) { return add(examinationDto, examinationService); } @@ -36,12 +36,12 @@ public ResponseEntity> getExaminationForSample(@PathVariabl } @PutMapping("/update") - public ResponseEntity insertExaminationResults(@RequestBody ExaminationDto updatedExaminationDto) throws Exception { + public ResponseEntity insertExaminationResults(@RequestBody ExaminationDto updatedExaminationDto) { return edit(updatedExaminationDto, examinationService); } @DeleteMapping("/delete/{examinationId}") - public ResponseEntity deleteExamination(@PathVariable final Long examinationId) throws Exception { + public ResponseEntity deleteExamination(@PathVariable final Long examinationId) { return delete(ExaminationDto.builder().id(examinationId).build(), examinationService); } diff --git a/slp-backend/src/main/java/agh/edu/pl/slpbackend/controller/ReportDataController.java b/slp-backend/src/main/java/agh/edu/pl/slpbackend/controller/ReportDataController.java index b9bc535..8824459 100644 --- a/slp-backend/src/main/java/agh/edu/pl/slpbackend/controller/ReportDataController.java +++ b/slp-backend/src/main/java/agh/edu/pl/slpbackend/controller/ReportDataController.java @@ -2,9 +2,6 @@ import agh.edu.pl.slpbackend.controller.iface.AbstractController; import agh.edu.pl.slpbackend.dto.ReportDataDto; -import agh.edu.pl.slpbackend.dto.SampleDto; -import agh.edu.pl.slpbackend.model.ReportData; -import agh.edu.pl.slpbackend.model.Sample; import agh.edu.pl.slpbackend.service.ReportDataService; import lombok.AllArgsConstructor; import org.springframework.http.HttpStatus; @@ -15,7 +12,7 @@ @RestController @AllArgsConstructor -@RequestMapping("/report-data") //TODO odpowiedni rooting jeszcze nie wiem XDD +@RequestMapping("/report-data") @CrossOrigin(origins = "http://localhost:3000") public class ReportDataController extends AbstractController { @@ -23,34 +20,25 @@ public class ReportDataController extends AbstractController { @GetMapping("/list") public ResponseEntity> list() { - try { - List list = reportDataService.selectAll(); - - if (list.isEmpty()) { - return new ResponseEntity<>(HttpStatus.NO_CONTENT); - } - return new ResponseEntity<>(list, HttpStatus.OK); - } catch (Exception e) { - return new ResponseEntity<>(null, HttpStatus.INTERNAL_SERVER_ERROR); - } + return ResponseEntity.ok(reportDataService.selectAll()); } @PostMapping("/save") - public ResponseEntity add(@RequestBody final ReportDataDto reportData) throws Exception { + public ResponseEntity add(@RequestBody final ReportDataDto reportData) { return add(reportData, reportDataService); } @DeleteMapping("/{reportDataId}") - public ResponseEntity delete(@PathVariable final Long reportDataId) throws Exception { + public ResponseEntity delete(@PathVariable final Long reportDataId) { return delete(ReportDataDto.builder().id(reportDataId).build(), reportDataService); } @PutMapping("/") - public ResponseEntity update(@RequestBody ReportDataDto reportDataDto) throws Exception { + public ResponseEntity update(@RequestBody ReportDataDto reportDataDto) { return edit(reportDataDto, reportDataService); } @GetMapping("/sample/{sampleId}") - public ResponseEntity getReportBySampleId(@PathVariable final Long sampleId) throws Exception { + public ResponseEntity getReportBySampleId(@PathVariable final Long sampleId) { return new ResponseEntity<>(reportDataService.selectBySampleId(sampleId), HttpStatus.OK); } diff --git a/slp-backend/src/main/java/agh/edu/pl/slpbackend/controller/SampleController.java b/slp-backend/src/main/java/agh/edu/pl/slpbackend/controller/SampleController.java index 49245d0..a16c116 100644 --- a/slp-backend/src/main/java/agh/edu/pl/slpbackend/controller/SampleController.java +++ b/slp-backend/src/main/java/agh/edu/pl/slpbackend/controller/SampleController.java @@ -8,7 +8,6 @@ import agh.edu.pl.slpbackend.model.Sample; import agh.edu.pl.slpbackend.service.SampleService; import lombok.AllArgsConstructor; -import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; @@ -16,7 +15,7 @@ @RestController @AllArgsConstructor -@RequestMapping("/sample") //TODO odpowiedni rooting jeszcze nie wiem XDD +@RequestMapping("/sample") @CrossOrigin(origins = "http://localhost:3000") public class SampleController extends AbstractController { @@ -24,52 +23,42 @@ public class SampleController extends AbstractController { @GetMapping("/list") public ResponseEntity> list() { - try { - List list = sampleService.selectAll(); - - if (list.isEmpty()) { - return new ResponseEntity<>(HttpStatus.NO_CONTENT); - } - return new ResponseEntity<>(list, HttpStatus.OK); - } catch (Exception e) { - return new ResponseEntity<>(null, HttpStatus.INTERNAL_SERVER_ERROR); - } + return ResponseEntity.ok(sampleService.selectAll()); } @GetMapping("/count") public ResponseEntity count() { - return new ResponseEntity<>(sampleService.count(), HttpStatus.OK); + return ResponseEntity.ok(sampleService.count()); } @GetMapping("/{sampleId}") public ResponseEntity getOne(@PathVariable final Long sampleId) { - SampleDto sampleDto = sampleService.selectOne(sampleId); - return new ResponseEntity<>(sampleDto, HttpStatus.OK); + return ResponseEntity.ok(sampleService.selectOne(sampleId)); } @PutMapping("status/{sampleId}/{status}") public ResponseEntity updateStatus(@PathVariable final Long sampleId, @PathVariable final String status) { - return new ResponseEntity<>(sampleService.updateStatus(sampleId, ProgressStatusEnum.convertEnum(status)), HttpStatus.OK); + return ResponseEntity.ok(sampleService.updateStatus(sampleId, ProgressStatusEnum.convertEnum(status))); } @PostMapping("/save") - public ResponseEntity add(@RequestBody SampleDto sampleDto) throws Exception { + public ResponseEntity add(@RequestBody SampleDto sampleDto) { return add(sampleDto, sampleService); } @DeleteMapping("/{sampleId}") - public ResponseEntity delete(@PathVariable final Long sampleId) throws Exception { + public ResponseEntity delete(@PathVariable final Long sampleId) { return delete(SampleDto.builder().id(sampleId).build(), sampleService); } @PutMapping("/{sampleId}") - public ResponseEntity update(@PathVariable final Long sampleId, @RequestBody SampleDto sampleDto) throws Exception { + public ResponseEntity update(@PathVariable final Long sampleId, @RequestBody SampleDto sampleDto) { return edit(sampleDto, sampleService); } @PutMapping("list/filtered") public ResponseEntity filter(@RequestBody FilterRequest request) { - return new ResponseEntity<>(sampleService.filter(request), HttpStatus.OK); + return ResponseEntity.ok(sampleService.filter(request)); } } diff --git a/slp-backend/src/main/java/agh/edu/pl/slpbackend/controller/UserController.java b/slp-backend/src/main/java/agh/edu/pl/slpbackend/controller/UserController.java index 1737f95..a60a7cf 100644 --- a/slp-backend/src/main/java/agh/edu/pl/slpbackend/controller/UserController.java +++ b/slp-backend/src/main/java/agh/edu/pl/slpbackend/controller/UserController.java @@ -38,8 +38,8 @@ public ResponseEntity login(@RequestBody LoginRequest request) { @PreAuthorize("hasRole('ADMIN')") @PostMapping("/change-password/{email}") - public ResponseEntity changePasswordForAdmin(@RequestBody ChangePasswordRequest request, @PathVariable String email) { - userService.changePasswordForAdmin(request, email); + public ResponseEntity changePasswordByAdmin(@RequestBody ChangePasswordRequest request, @PathVariable String email) { + userService.changePasswordByAdmin(request, email); return ResponseEntity.ok().build(); } diff --git a/slp-backend/src/main/java/agh/edu/pl/slpbackend/controller/dictionary/AssortmentController.java b/slp-backend/src/main/java/agh/edu/pl/slpbackend/controller/dictionary/AssortmentController.java index a874192..c0ac246 100644 --- a/slp-backend/src/main/java/agh/edu/pl/slpbackend/controller/dictionary/AssortmentController.java +++ b/slp-backend/src/main/java/agh/edu/pl/slpbackend/controller/dictionary/AssortmentController.java @@ -4,7 +4,6 @@ import agh.edu.pl.slpbackend.dto.AssortmentDto; import agh.edu.pl.slpbackend.service.dictionary.AssortmentService; import lombok.AllArgsConstructor; -import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; @@ -20,30 +19,21 @@ public class AssortmentController extends AbstractController { @GetMapping("/list") public ResponseEntity> list() { - try { - List list = assortmentService.selectAll(); - - if (list.isEmpty()) { - return new ResponseEntity<>(HttpStatus.NO_CONTENT); - } - return new ResponseEntity<>(list, HttpStatus.OK); - } catch (Exception e) { - return new ResponseEntity<>(null, HttpStatus.INTERNAL_SERVER_ERROR); - } + return ResponseEntity.ok(assortmentService.selectAll()); } @PostMapping("/save") - public ResponseEntity add(@RequestBody AssortmentDto assortmentDto) throws Exception { + public ResponseEntity add(@RequestBody AssortmentDto assortmentDto) { return add(assortmentDto, assortmentService); } @PutMapping("/update") - public ResponseEntity edit(@RequestBody AssortmentDto assortmentDto) throws Exception { + public ResponseEntity edit(@RequestBody AssortmentDto assortmentDto) { return edit(assortmentDto, assortmentService); } @DeleteMapping("/delete/{id}") - public ResponseEntity delete(@PathVariable Long id) throws Exception { + public ResponseEntity delete(@PathVariable Long id) { return delete(AssortmentDto.builder().id(id).build(), assortmentService); } } diff --git a/slp-backend/src/main/java/agh/edu/pl/slpbackend/controller/dictionary/ClientController.java b/slp-backend/src/main/java/agh/edu/pl/slpbackend/controller/dictionary/ClientController.java index 86905ca..9f2c725 100644 --- a/slp-backend/src/main/java/agh/edu/pl/slpbackend/controller/dictionary/ClientController.java +++ b/slp-backend/src/main/java/agh/edu/pl/slpbackend/controller/dictionary/ClientController.java @@ -4,7 +4,6 @@ import agh.edu.pl.slpbackend.dto.ClientDto; import agh.edu.pl.slpbackend.service.dictionary.ClientService; import lombok.AllArgsConstructor; -import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; @@ -12,7 +11,7 @@ @RestController @AllArgsConstructor -@RequestMapping("/client") //TODO odpowiedni rooting jeszcze nie wiem XDD +@RequestMapping("/client") @CrossOrigin(origins = "http://localhost:3000") public class ClientController extends AbstractController { @@ -20,30 +19,21 @@ public class ClientController extends AbstractController { @GetMapping("/list") public ResponseEntity> list() { - try { - List list = clientService.selectAll(); - - if (list.isEmpty()) { - return new ResponseEntity<>(HttpStatus.NO_CONTENT); - } - return new ResponseEntity<>(list, HttpStatus.OK); - } catch (Exception e) { - return new ResponseEntity<>(null, HttpStatus.INTERNAL_SERVER_ERROR); - } + return ResponseEntity.ok(clientService.selectAll()); } @PostMapping("/save") - public ResponseEntity add(@RequestBody ClientDto clientDto) throws Exception { + public ResponseEntity add(@RequestBody ClientDto clientDto) { return add(clientDto, clientService); } @PutMapping("/update") - public ResponseEntity edit(@RequestBody ClientDto clientDto) throws Exception { + public ResponseEntity edit(@RequestBody ClientDto clientDto) { return edit(clientDto, clientService); } @DeleteMapping("/delete/{id}") - public ResponseEntity delete(@PathVariable Long id) throws Exception { + public ResponseEntity delete(@PathVariable Long id) { return delete(ClientDto.builder().id(id).build(), clientService); } } diff --git a/slp-backend/src/main/java/agh/edu/pl/slpbackend/controller/dictionary/CodeController.java b/slp-backend/src/main/java/agh/edu/pl/slpbackend/controller/dictionary/CodeController.java index 01ee94f..0ab5484 100644 --- a/slp-backend/src/main/java/agh/edu/pl/slpbackend/controller/dictionary/CodeController.java +++ b/slp-backend/src/main/java/agh/edu/pl/slpbackend/controller/dictionary/CodeController.java @@ -4,7 +4,6 @@ import agh.edu.pl.slpbackend.dto.CodeDto; import agh.edu.pl.slpbackend.service.dictionary.CodeService; import lombok.AllArgsConstructor; -import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; @@ -20,30 +19,21 @@ public class CodeController extends AbstractController { @GetMapping("/list") public ResponseEntity> list() { - try { - List list = codeService.selectAll(); - - if (list.isEmpty()) { - return new ResponseEntity<>(HttpStatus.NO_CONTENT); - } - return new ResponseEntity<>(list, HttpStatus.OK); - } catch (Exception e) { - return new ResponseEntity<>(null, HttpStatus.INTERNAL_SERVER_ERROR); - } + return ResponseEntity.ok(codeService.selectAll()); } @PostMapping("/save") - public ResponseEntity add(@RequestBody CodeDto codeDto) throws Exception { + public ResponseEntity add(@RequestBody CodeDto codeDto) { return add(codeDto, codeService); } @PutMapping("/update") - public ResponseEntity edit(@RequestBody CodeDto codeDto) throws Exception { + public ResponseEntity edit(@RequestBody CodeDto codeDto) { return edit(codeDto, codeService); } @DeleteMapping("/delete/{id}") - public ResponseEntity delete(@PathVariable String id) throws Exception { + public ResponseEntity delete(@PathVariable String id) { return delete(CodeDto.builder().id(id).build(), codeService); } } diff --git a/slp-backend/src/main/java/agh/edu/pl/slpbackend/controller/dictionary/IndicationController.java b/slp-backend/src/main/java/agh/edu/pl/slpbackend/controller/dictionary/IndicationController.java index feaa54c..bf81567 100644 --- a/slp-backend/src/main/java/agh/edu/pl/slpbackend/controller/dictionary/IndicationController.java +++ b/slp-backend/src/main/java/agh/edu/pl/slpbackend/controller/dictionary/IndicationController.java @@ -21,16 +21,7 @@ public class IndicationController extends AbstractController { @GetMapping("/list") public ResponseEntity> list() { - try { - List list = indicationService.selectAll(); - - if (list.isEmpty()) { - return new ResponseEntity<>(HttpStatus.NO_CONTENT); - } - return new ResponseEntity<>(list, HttpStatus.OK); - } catch (Exception e) { - return new ResponseEntity<>(null, HttpStatus.INTERNAL_SERVER_ERROR); - } + return ResponseEntity.ok(indicationService.selectAll()); } @GetMapping("/{indicationId}") @@ -46,17 +37,17 @@ public ResponseEntity> getIndicationsForSample(@PathVariable } @PostMapping("/save") - public ResponseEntity add(@RequestBody IndicationDto indicationDto) throws Exception { + public ResponseEntity add(@RequestBody IndicationDto indicationDto) { return add(indicationDto, indicationService); } @PutMapping("/update") - public ResponseEntity edit(@RequestBody IndicationDto indicationDto) throws Exception { + public ResponseEntity edit(@RequestBody IndicationDto indicationDto) { return edit(indicationDto, indicationService); } @DeleteMapping("/delete/{id}") - public ResponseEntity delete(@PathVariable Long id) throws Exception { + public ResponseEntity delete(@PathVariable Long id) { return delete(IndicationDto.builder().id(id).build(), indicationService); } diff --git a/slp-backend/src/main/java/agh/edu/pl/slpbackend/controller/dictionary/InspectionController.java b/slp-backend/src/main/java/agh/edu/pl/slpbackend/controller/dictionary/InspectionController.java index 1c1f622..48ac756 100644 --- a/slp-backend/src/main/java/agh/edu/pl/slpbackend/controller/dictionary/InspectionController.java +++ b/slp-backend/src/main/java/agh/edu/pl/slpbackend/controller/dictionary/InspectionController.java @@ -2,10 +2,8 @@ import agh.edu.pl.slpbackend.controller.iface.AbstractController; import agh.edu.pl.slpbackend.dto.InspectionDto; -import agh.edu.pl.slpbackend.model.Inspection; import agh.edu.pl.slpbackend.service.dictionary.InspectionService; import lombok.AllArgsConstructor; -import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; @@ -13,7 +11,7 @@ @RestController @AllArgsConstructor -@RequestMapping("/inspection") //TODO odpowiedni rooting jeszcze nie wiem XDD +@RequestMapping("/inspection") @CrossOrigin(origins = "http://localhost:3000") public class InspectionController extends AbstractController { @@ -21,30 +19,21 @@ public class InspectionController extends AbstractController { @GetMapping("/list") public ResponseEntity> list() { - try { - List list = inspectionService.selectAll(); - - if (list.isEmpty()) { - return new ResponseEntity<>(HttpStatus.NO_CONTENT); - } - return new ResponseEntity<>(list, HttpStatus.OK); - } catch (Exception e) { - return new ResponseEntity<>(null, HttpStatus.INTERNAL_SERVER_ERROR); - } + return ResponseEntity.ok(inspectionService.selectAll()); } @PostMapping("/save") - public ResponseEntity add(@RequestBody InspectionDto inspectionDto) throws Exception { - return new ResponseEntity<>(add(inspectionDto, inspectionService).getStatusCode()); //TODO nie wiem, trzeba przetestować + public ResponseEntity add(@RequestBody InspectionDto inspectionDto) { + return add(inspectionDto, inspectionService); } @PutMapping("/update") - public ResponseEntity edit(@RequestBody InspectionDto inspectionDto) throws Exception { + public ResponseEntity edit(@RequestBody InspectionDto inspectionDto) { return edit(inspectionDto, inspectionService); } @DeleteMapping("/delete/{id}") - public ResponseEntity delete(@PathVariable Long id) throws Exception { + public ResponseEntity delete(@PathVariable Long id) { return delete(InspectionDto.builder().id(id).build(), inspectionService); } } diff --git a/slp-backend/src/main/java/agh/edu/pl/slpbackend/controller/dictionary/ProductGroupController.java b/slp-backend/src/main/java/agh/edu/pl/slpbackend/controller/dictionary/ProductGroupController.java index 8529250..4c99c5d 100644 --- a/slp-backend/src/main/java/agh/edu/pl/slpbackend/controller/dictionary/ProductGroupController.java +++ b/slp-backend/src/main/java/agh/edu/pl/slpbackend/controller/dictionary/ProductGroupController.java @@ -5,7 +5,6 @@ import agh.edu.pl.slpbackend.dto.productGroup.ProductGroupSaveDto; import agh.edu.pl.slpbackend.service.dictionary.ProductGroupService; import lombok.AllArgsConstructor; -import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; @@ -21,30 +20,21 @@ public class ProductGroupController extends AbstractController { @GetMapping("/list") public ResponseEntity> list() { - try { - List list = productGroupService.selectAll(); - - if (list.isEmpty()) { - return new ResponseEntity<>(HttpStatus.NO_CONTENT); - } - return new ResponseEntity<>(list, HttpStatus.OK); - } catch (Exception e) { - return new ResponseEntity<>(null, HttpStatus.INTERNAL_SERVER_ERROR); - } + return ResponseEntity.ok(productGroupService.selectAll()); } @PostMapping("/save") - public ResponseEntity add(@RequestBody ProductGroupSaveDto productGroupSaveDto) throws Exception { + public ResponseEntity add(@RequestBody ProductGroupSaveDto productGroupSaveDto) { return add(productGroupSaveDto, productGroupService); } @PutMapping("/update") - public ResponseEntity edit(@RequestBody ProductGroupSaveDto productGroupSaveDto) throws Exception { + public ResponseEntity edit(@RequestBody ProductGroupSaveDto productGroupSaveDto) { return edit(productGroupSaveDto, productGroupService); } @DeleteMapping("/delete/{id}") - public ResponseEntity delete(@PathVariable Long id) throws Exception { + public ResponseEntity delete(@PathVariable Long id) { return delete(ProductGroupDto.builder().id(id).build(), productGroupService); } } diff --git a/slp-backend/src/main/java/agh/edu/pl/slpbackend/controller/dictionary/SamplingStandardController.java b/slp-backend/src/main/java/agh/edu/pl/slpbackend/controller/dictionary/SamplingStandardController.java index d1a4fc0..6fcb351 100644 --- a/slp-backend/src/main/java/agh/edu/pl/slpbackend/controller/dictionary/SamplingStandardController.java +++ b/slp-backend/src/main/java/agh/edu/pl/slpbackend/controller/dictionary/SamplingStandardController.java @@ -4,7 +4,6 @@ import agh.edu.pl.slpbackend.dto.SamplingStandardDto; import agh.edu.pl.slpbackend.service.dictionary.SamplingStandardService; import lombok.AllArgsConstructor; -import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; @@ -12,7 +11,7 @@ @RestController @AllArgsConstructor -@RequestMapping("/sampling-standard") //TODO odpowiedni rooting jeszcze nie wiem XDD +@RequestMapping("/sampling-standard") @CrossOrigin(origins = "http://localhost:3000") public class SamplingStandardController extends AbstractController { @@ -20,31 +19,22 @@ public class SamplingStandardController extends AbstractController { @GetMapping("/list") public ResponseEntity> list() { - try { - List list = samplingStandardService.selectAll(); - - if (list.isEmpty()) { - return new ResponseEntity<>(HttpStatus.NO_CONTENT); - } - return new ResponseEntity<>(list, HttpStatus.OK); - } catch (Exception e) { - return new ResponseEntity<>(null, HttpStatus.INTERNAL_SERVER_ERROR); - } + return ResponseEntity.ok(samplingStandardService.selectAll()); } @PostMapping("/save") - public ResponseEntity add(@RequestBody SamplingStandardDto samplingStandardDto) throws Exception { + public ResponseEntity add(@RequestBody SamplingStandardDto samplingStandardDto) { return add(samplingStandardDto, samplingStandardService); } @PutMapping("/update") - public ResponseEntity edit(@RequestBody SamplingStandardDto samplingStandardDto) throws Exception { + public ResponseEntity edit(@RequestBody SamplingStandardDto samplingStandardDto) { return edit(samplingStandardDto, samplingStandardService); } @DeleteMapping("/delete/{id}") - public ResponseEntity delete(@PathVariable Long id) throws Exception { + public ResponseEntity delete(@PathVariable Long id) { return delete(SamplingStandardDto.builder().id(id).build(), samplingStandardService); } } diff --git a/slp-backend/src/main/java/agh/edu/pl/slpbackend/controller/iface/AbstractController.java b/slp-backend/src/main/java/agh/edu/pl/slpbackend/controller/iface/AbstractController.java index 79fa1e1..7e079bf 100644 --- a/slp-backend/src/main/java/agh/edu/pl/slpbackend/controller/iface/AbstractController.java +++ b/slp-backend/src/main/java/agh/edu/pl/slpbackend/controller/iface/AbstractController.java @@ -2,35 +2,22 @@ import agh.edu.pl.slpbackend.service.iface.AbstractService; import agh.edu.pl.slpbackend.service.iface.IModel; -import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; public abstract class AbstractController { - protected ResponseEntity add(final IModel model, final AbstractService service) throws Exception { - try { - service.insert(model); - return ResponseEntity.status(HttpStatus.OK).build(); - } catch (Exception e) { - throw new Exception(e); - } + protected ResponseEntity add(final IModel model, final AbstractService service) { + service.insert(model); + return ResponseEntity.ok().build(); } - protected ResponseEntity edit(final IModel model, final AbstractService service) throws Exception { - try { - service.update(model); - return ResponseEntity.status(HttpStatus.OK).build(); - } catch (Exception e) { - throw new Exception(e); - } + protected ResponseEntity edit(final IModel model, final AbstractService service) { + service.update(model); + return ResponseEntity.ok().build(); } - protected ResponseEntity delete(final IModel model, final AbstractService service) throws Exception { - try { - service.delete(model); - return ResponseEntity.status(HttpStatus.OK).build(); - } catch (Exception e) { - throw new Exception(e); - } + protected ResponseEntity delete(final IModel model, final AbstractService service) { + service.delete(model); + return ResponseEntity.ok().build(); } } diff --git a/slp-backend/src/main/java/agh/edu/pl/slpbackend/converter/PasswordConverter.java b/slp-backend/src/main/java/agh/edu/pl/slpbackend/converter/PasswordConverter.java index 141c2d9..e98eef9 100644 --- a/slp-backend/src/main/java/agh/edu/pl/slpbackend/converter/PasswordConverter.java +++ b/slp-backend/src/main/java/agh/edu/pl/slpbackend/converter/PasswordConverter.java @@ -13,17 +13,11 @@ public class PasswordConverter implements AttributeConverter { @Override public String convertToDatabaseColumn(String password) { - if (password == null || password.isEmpty()) { - return null; - } return textEncryptor.encrypt(password); } @Override public String convertToEntityAttribute(String password) { - if (password == null || password.isEmpty()) { - return null; - } return textEncryptor.decrypt(password); } } diff --git a/slp-backend/src/main/java/agh/edu/pl/slpbackend/database/backup/BackupController.java b/slp-backend/src/main/java/agh/edu/pl/slpbackend/database/backup/BackupController.java index 459f35a..deeb3dc 100644 --- a/slp-backend/src/main/java/agh/edu/pl/slpbackend/database/backup/BackupController.java +++ b/slp-backend/src/main/java/agh/edu/pl/slpbackend/database/backup/BackupController.java @@ -3,7 +3,6 @@ import lombok.AllArgsConstructor; import org.springframework.core.io.InputStreamResource; -import org.springframework.http.HttpStatus; import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.CrossOrigin; @@ -11,6 +10,8 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +import java.io.IOException; + @RestController @AllArgsConstructor @RequestMapping("/backup") @@ -20,14 +21,9 @@ public class BackupController { private BackupService backupService; @GetMapping("/") - public ResponseEntity backup() { - try { - return ResponseEntity.ok() - .contentType(MediaType.APPLICATION_OCTET_STREAM) - .body(backupService.backupExecutor()); - - } catch (Exception e) { - return new ResponseEntity<>(null, HttpStatus.INTERNAL_SERVER_ERROR); - } + public ResponseEntity backup() throws IOException { + return ResponseEntity.ok() + .contentType(MediaType.APPLICATION_OCTET_STREAM) + .body(backupService.backupExecutor()); } } diff --git a/slp-backend/src/main/java/agh/edu/pl/slpbackend/database/backup/BackupService.java b/slp-backend/src/main/java/agh/edu/pl/slpbackend/database/backup/BackupService.java index 8bb19fa..ab69f32 100644 --- a/slp-backend/src/main/java/agh/edu/pl/slpbackend/database/backup/BackupService.java +++ b/slp-backend/src/main/java/agh/edu/pl/slpbackend/database/backup/BackupService.java @@ -111,9 +111,8 @@ private static void exportTableToCSVInMemory(Connection conn, String tableName, } - public InputStreamResource backupExecutor() throws IOException, InterruptedException { + public InputStreamResource backupExecutor() throws IOException { return exportDatabaseToCSV(); - } diff --git a/slp-backend/src/main/java/agh/edu/pl/slpbackend/service/AddressService.java b/slp-backend/src/main/java/agh/edu/pl/slpbackend/service/AddressService.java index 9c27083..d5d2107 100644 --- a/slp-backend/src/main/java/agh/edu/pl/slpbackend/service/AddressService.java +++ b/slp-backend/src/main/java/agh/edu/pl/slpbackend/service/AddressService.java @@ -4,8 +4,6 @@ import agh.edu.pl.slpbackend.mapper.AddressMapper; import agh.edu.pl.slpbackend.model.Address; import agh.edu.pl.slpbackend.repository.AddressRepository; -import agh.edu.pl.slpbackend.service.iface.AbstractService; -import agh.edu.pl.slpbackend.service.iface.IModel; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; @@ -16,28 +14,12 @@ @Service @Slf4j @AllArgsConstructor -public class AddressService extends AbstractService implements AddressMapper { +public class AddressService implements AddressMapper { + private final AddressRepository addressRepository; public List selectAll() { List
addressesList = addressRepository.findAll(); return addressesList.stream().map(this::toDto).collect(Collectors.toList()); } - - @Override - public Object insert(IModel model) { - final AddressDto addressDto = (AddressDto) model; - final Address address = toModel(addressDto); - return addressRepository.save(address); - } - - @Override - public Object update(IModel model) { - return null; - } - - - @Override - public void delete(IModel model) { - } } diff --git a/slp-backend/src/main/java/agh/edu/pl/slpbackend/service/ExaminationService.java b/slp-backend/src/main/java/agh/edu/pl/slpbackend/service/ExaminationService.java index 21dba6e..5d4db0e 100644 --- a/slp-backend/src/main/java/agh/edu/pl/slpbackend/service/ExaminationService.java +++ b/slp-backend/src/main/java/agh/edu/pl/slpbackend/service/ExaminationService.java @@ -24,26 +24,6 @@ public class ExaminationService extends AbstractService implements ExaminationMa private final ExaminationRepository examinationRepository; private final SampleRepository sampleRepository; - public List selectAll() { - List examinationList = examinationRepository.findAll(); - return examinationList.stream().map(this::toDto).collect(Collectors.toList()); - } - - public void insertExaminationResults(Long examinationId, ExaminationDto updatedExaminationDto) { - final Examination updatedExamination = toModel(updatedExaminationDto); - - Examination existingExamination = examinationRepository.getReferenceById(examinationId); - existingExamination.setResult(updatedExamination.getResult()); - existingExamination.setStartDate(updatedExamination.getStartDate()); - existingExamination.setEndDate(updatedExamination.getEndDate()); - existingExamination.setMethodStatus(updatedExamination.getMethodStatus()); - existingExamination.setUncertainty(updatedExamination.getUncertainty()); - existingExamination.setLod(updatedExaminationDto.getLod()); - existingExamination.setLoq(updatedExaminationDto.getLoq()); - - examinationRepository.save(existingExamination); - } - public List selectExaminationsForSample(final Long sampleId) { List examinations = examinationRepository.findBySampleId(sampleId); return examinations.stream().map(this::toDto).collect(Collectors.toList()); diff --git a/slp-backend/src/main/java/agh/edu/pl/slpbackend/service/ReportDataService.java b/slp-backend/src/main/java/agh/edu/pl/slpbackend/service/ReportDataService.java index 8f47cc2..d522e4b 100644 --- a/slp-backend/src/main/java/agh/edu/pl/slpbackend/service/ReportDataService.java +++ b/slp-backend/src/main/java/agh/edu/pl/slpbackend/service/ReportDataService.java @@ -40,14 +40,6 @@ public ReportDataDto selectBySampleId(Long sampleId) { } return toDto(reportData); } -// @Override -// public ResponseEntity insert(IModel model) { -// final ReportDataDto reportDataDto = (ReportDataDto) model; -// final ReportData reportData = toModel(reportDataDto); -// final ReportData saveResult = reportDataRepository.save(reportData); -// -// return new ResponseEntity<>(saveResult, HttpStatus.CREATED); -// } @Override public Object insert(IModel model) { diff --git a/slp-backend/src/main/java/agh/edu/pl/slpbackend/service/UserService.java b/slp-backend/src/main/java/agh/edu/pl/slpbackend/service/UserService.java index 5593ac4..7d441bd 100644 --- a/slp-backend/src/main/java/agh/edu/pl/slpbackend/service/UserService.java +++ b/slp-backend/src/main/java/agh/edu/pl/slpbackend/service/UserService.java @@ -2,7 +2,6 @@ import agh.edu.pl.slpbackend.auth.JwtUtil; import agh.edu.pl.slpbackend.dto.UserDto; -import agh.edu.pl.slpbackend.dto.users.ChangePasswordForAdminRequest; import agh.edu.pl.slpbackend.dto.users.ChangePasswordRequest; import agh.edu.pl.slpbackend.dto.users.LoginRequest; import agh.edu.pl.slpbackend.dto.users.LoginResponse; @@ -75,7 +74,7 @@ public void changePassword(ChangePasswordRequest request, String email) { userRepository.save(user); } - public void changePasswordForAdmin(ChangePasswordRequest request, String email) { + public void changePasswordByAdmin(ChangePasswordRequest request, String email) { User user = userRepository.findByEmail(email) .orElseThrow(UserNotFoundException::new); diff --git a/slp-backend/src/main/java/agh/edu/pl/slpbackend/service/dictionary/IndicationService.java b/slp-backend/src/main/java/agh/edu/pl/slpbackend/service/dictionary/IndicationService.java index 61af767..a1abbcf 100644 --- a/slp-backend/src/main/java/agh/edu/pl/slpbackend/service/dictionary/IndicationService.java +++ b/slp-backend/src/main/java/agh/edu/pl/slpbackend/service/dictionary/IndicationService.java @@ -1,6 +1,8 @@ package agh.edu.pl.slpbackend.service.dictionary; +import agh.edu.pl.slpbackend.dto.AssortmentDto; import agh.edu.pl.slpbackend.dto.IndicationDto; +import agh.edu.pl.slpbackend.exception.DataDependencyException; import agh.edu.pl.slpbackend.exception.SampleNotFoundException; import agh.edu.pl.slpbackend.mapper.IndicationMapper; import agh.edu.pl.slpbackend.model.Indication; @@ -11,6 +13,7 @@ import agh.edu.pl.slpbackend.service.iface.IModel; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.springframework.dao.DataIntegrityViolationException; import org.springframework.stereotype.Service; import java.util.List; @@ -61,7 +64,10 @@ public Object update(IModel model) { @Override public void delete(IModel model) { final IndicationDto indicationDto = (IndicationDto) model; - indicationRepository.deleteById(indicationDto.getId()); + try { + indicationRepository.deleteById(indicationDto.getId()); + } catch (DataIntegrityViolationException e) { + throw new DataDependencyException(); + } } - } diff --git a/slp-backend/src/test/java/agh/edu/pl/slpbackend/auth/JwtAuthFilterTest.java b/slp-backend/src/test/java/agh/edu/pl/slpbackend/auth/JwtAuthFilterTest.java new file mode 100644 index 0000000..0795e3d --- /dev/null +++ b/slp-backend/src/test/java/agh/edu/pl/slpbackend/auth/JwtAuthFilterTest.java @@ -0,0 +1,108 @@ +package agh.edu.pl.slpbackend.auth; + +import agh.edu.pl.slpbackend.auth.JwtAuthFilter; +import agh.edu.pl.slpbackend.auth.JwtUtil; +import agh.edu.pl.slpbackend.auth.MyUserDetailsService; +import agh.edu.pl.slpbackend.repository.UserRepository; +import io.jsonwebtoken.Jwts; +import io.jsonwebtoken.SignatureAlgorithm; +import jakarta.servlet.FilterChain; +import jakarta.servlet.ServletException; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.Mock; +import org.mockito.junit.jupiter.MockitoExtension; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; + +import java.io.IOException; +import java.util.Date; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.mockito.Mockito.*; + +@ExtendWith(MockitoExtension.class) +@SpringBootTest +public class JwtAuthFilterTest { + + @Autowired + private UserRepository userRepository; + + @Mock + private HttpServletRequest request; + @Mock + private HttpServletResponse response; + @Mock + private FilterChain filterChain; + + + private final JwtUtil jwtUtil = new JwtUtil(); + + private MyUserDetailsService myUserDetailsService; + + @BeforeEach + void setUp() { + myUserDetailsService = new MyUserDetailsService(userRepository); + } + + @Test + void should_not_filter() { + JwtAuthFilter jwtAuthFilter = new JwtAuthFilter(jwtUtil, myUserDetailsService); + + when(request.getServletPath()).thenReturn("/users/login"); + + assertThat(jwtAuthFilter.shouldNotFilter(request)).isTrue(); + } + + @Test + void should_filter() { + JwtAuthFilter jwtAuthFilter = new JwtAuthFilter(jwtUtil, myUserDetailsService); + + when(request.getServletPath()).thenReturn("/sample"); + + assertThat(jwtAuthFilter.shouldNotFilter(request)).isFalse(); + } + + @Test + void do_filter_internal() throws ServletException, IOException { + String email = "worker@gmail.com"; + String token = jwtUtil.generateToken(email); + when(request.getHeader("Authorization")).thenReturn("Bearer " + token); + + JwtAuthFilter jwtAuthFilter = new JwtAuthFilter(jwtUtil, myUserDetailsService); + jwtAuthFilter.doFilterInternal(request, response, filterChain); + + verify(filterChain).doFilter(request, response); + } + + @Test + void permission_denied() throws ServletException, IOException { + String email = "unauthorized"; + String token = jwtUtil.generateToken(email); + when(request.getHeader("Authorization")).thenReturn("Bearer " + token); + + JwtAuthFilter jwtAuthFilter = new JwtAuthFilter(jwtUtil, myUserDetailsService); + jwtAuthFilter.doFilterInternal(request, response, filterChain); + + verify(response).sendError(403, "Permission denied"); + } + + @Test + void token_expired() throws ServletException, IOException { + String email = "worker@gmail.com"; + String token = Jwts.builder() + .setSubject(email) + .setExpiration(new Date(System.currentTimeMillis() - 1000)) + .signWith(SignatureAlgorithm.HS512, "SecretKey") + .compact(); + when(request.getHeader("Authorization")).thenReturn("Bearer " + token); + + JwtAuthFilter jwtAuthFilter = new JwtAuthFilter(jwtUtil, myUserDetailsService); + jwtAuthFilter.doFilterInternal(request, response, filterChain); + + verify(response).sendError(401, "Token expired"); + } +} diff --git a/slp-backend/src/test/java/agh/edu/pl/slpbackend/controller/AssortmentControllerTest.java b/slp-backend/src/test/java/agh/edu/pl/slpbackend/controller/AssortmentControllerTest.java new file mode 100644 index 0000000..68f10de --- /dev/null +++ b/slp-backend/src/test/java/agh/edu/pl/slpbackend/controller/AssortmentControllerTest.java @@ -0,0 +1,30 @@ +package agh.edu.pl.slpbackend.controller; + +import agh.edu.pl.slpbackend.controller.dictionary.AssortmentController; +import agh.edu.pl.slpbackend.dto.AssortmentDto; +import agh.edu.pl.slpbackend.service.dictionary.AssortmentService; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.Mock; +import org.mockito.junit.jupiter.MockitoExtension; +import org.springframework.http.HttpStatus; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.mockito.Mockito.verify; + +@ExtendWith(MockitoExtension.class) +public class AssortmentControllerTest { + + @Mock + private AssortmentService service; + + @Test + void delete() { + var controller = new AssortmentController(service); + Long id = 1L; + var response = controller.delete(id); + + verify(service).delete(AssortmentDto.builder().id(id).build()); + assertThat(response.getStatusCode()).isEqualTo(HttpStatus.OK); + } +} diff --git a/slp-backend/src/test/java/agh/edu/pl/slpbackend/controller/ClientControllerTest.java b/slp-backend/src/test/java/agh/edu/pl/slpbackend/controller/ClientControllerTest.java new file mode 100644 index 0000000..99d3d47 --- /dev/null +++ b/slp-backend/src/test/java/agh/edu/pl/slpbackend/controller/ClientControllerTest.java @@ -0,0 +1,30 @@ +package agh.edu.pl.slpbackend.controller; + +import agh.edu.pl.slpbackend.controller.dictionary.ClientController; +import agh.edu.pl.slpbackend.dto.ClientDto; +import agh.edu.pl.slpbackend.service.dictionary.ClientService; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.Mock; +import org.mockito.junit.jupiter.MockitoExtension; +import org.springframework.http.HttpStatus; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.mockito.Mockito.verify; + +@ExtendWith(MockitoExtension.class) +public class ClientControllerTest { + + @Mock + private ClientService service; + + @Test + void delete() { + var controller = new ClientController(service); + Long id = 1L; + var response = controller.delete(id); + + verify(service).delete(ClientDto.builder().id(id).build()); + assertThat(response.getStatusCode()).isEqualTo(HttpStatus.OK); + } +} diff --git a/slp-backend/src/test/java/agh/edu/pl/slpbackend/controller/CodeControllerTest.java b/slp-backend/src/test/java/agh/edu/pl/slpbackend/controller/CodeControllerTest.java new file mode 100644 index 0000000..16f00ee --- /dev/null +++ b/slp-backend/src/test/java/agh/edu/pl/slpbackend/controller/CodeControllerTest.java @@ -0,0 +1,30 @@ +package agh.edu.pl.slpbackend.controller; + +import agh.edu.pl.slpbackend.controller.dictionary.CodeController; +import agh.edu.pl.slpbackend.dto.CodeDto; +import agh.edu.pl.slpbackend.service.dictionary.CodeService; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.Mock; +import org.mockito.junit.jupiter.MockitoExtension; +import org.springframework.http.HttpStatus; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.mockito.Mockito.verify; + +@ExtendWith(MockitoExtension.class) +public class CodeControllerTest { + + @Mock + private CodeService service; + + @Test + void delete() { + var controller = new CodeController(service); + String id = "Kp"; + var response = controller.delete(id); + + verify(service).delete(CodeDto.builder().id(id).build()); + assertThat(response.getStatusCode()).isEqualTo(HttpStatus.OK); + } +} diff --git a/slp-backend/src/test/java/agh/edu/pl/slpbackend/controller/IndicationControllerTest.java b/slp-backend/src/test/java/agh/edu/pl/slpbackend/controller/IndicationControllerTest.java new file mode 100644 index 0000000..033577c --- /dev/null +++ b/slp-backend/src/test/java/agh/edu/pl/slpbackend/controller/IndicationControllerTest.java @@ -0,0 +1,30 @@ +package agh.edu.pl.slpbackend.controller; + +import agh.edu.pl.slpbackend.controller.dictionary.IndicationController; +import agh.edu.pl.slpbackend.dto.IndicationDto; +import agh.edu.pl.slpbackend.service.dictionary.IndicationService; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.Mock; +import org.mockito.junit.jupiter.MockitoExtension; +import org.springframework.http.HttpStatus; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.mockito.Mockito.verify; + +@ExtendWith(MockitoExtension.class) +public class IndicationControllerTest { + + @Mock + private IndicationService service; + + @Test + void delete() { + var controller = new IndicationController(service); + Long id = 1L; + var response = controller.delete(id); + + verify(service).delete(IndicationDto.builder().id(id).build()); + assertThat(response.getStatusCode()).isEqualTo(HttpStatus.OK); + } +} diff --git a/slp-backend/src/test/java/agh/edu/pl/slpbackend/controller/InspectionControllerTest.java b/slp-backend/src/test/java/agh/edu/pl/slpbackend/controller/InspectionControllerTest.java new file mode 100644 index 0000000..2095771 --- /dev/null +++ b/slp-backend/src/test/java/agh/edu/pl/slpbackend/controller/InspectionControllerTest.java @@ -0,0 +1,30 @@ +package agh.edu.pl.slpbackend.controller; + +import agh.edu.pl.slpbackend.controller.dictionary.InspectionController; +import agh.edu.pl.slpbackend.dto.InspectionDto; +import agh.edu.pl.slpbackend.service.dictionary.InspectionService; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.Mock; +import org.mockito.junit.jupiter.MockitoExtension; +import org.springframework.http.HttpStatus; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.mockito.Mockito.verify; + +@ExtendWith(MockitoExtension.class) +public class InspectionControllerTest { + + @Mock + private InspectionService service; + + @Test + void delete() { + var controller = new InspectionController(service); + Long id = 1L; + var response = controller.delete(id); + + verify(service).delete(InspectionDto.builder().id(id).build()); + assertThat(response.getStatusCode()).isEqualTo(HttpStatus.OK); + } +} diff --git a/slp-backend/src/test/java/agh/edu/pl/slpbackend/controller/MethodControllerTest.java b/slp-backend/src/test/java/agh/edu/pl/slpbackend/controller/MethodControllerTest.java new file mode 100644 index 0000000..0375679 --- /dev/null +++ b/slp-backend/src/test/java/agh/edu/pl/slpbackend/controller/MethodControllerTest.java @@ -0,0 +1,52 @@ +package agh.edu.pl.slpbackend.controller; + +import agh.edu.pl.slpbackend.service.MethodService; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.Mock; +import org.mockito.junit.jupiter.MockitoExtension; +import org.springframework.http.HttpStatus; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.io.InputStream; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.mockito.Mockito.*; + +@ExtendWith(MockitoExtension.class) +public class MethodControllerTest { + + @Mock + private MethodService service; + + @Mock + private MultipartFile file; + + @Mock + private InputStream inputStream; + + @BeforeEach + void setUp() throws IOException { + when(file.getInputStream()).thenReturn(inputStream); + } + + @Test + void import_methods() throws IOException { + var controller = new MethodController(service); + var response = controller.importMethods(file); + + verify(service).importMethods(inputStream); + assertThat(response.getStatusCode()).isEqualTo(HttpStatus.OK); + } + + @Test + void import_methods_fails_when_exception() throws IOException { + var controller = new MethodController(service); + doThrow(IOException.class).when(service).importMethods(inputStream); + var response = controller.importMethods(file); + + assertThat(response.getStatusCode()).isEqualTo(HttpStatus.BAD_REQUEST); + } +} diff --git a/slp-backend/src/test/java/agh/edu/pl/slpbackend/controller/ProductGroupControllerTest.java b/slp-backend/src/test/java/agh/edu/pl/slpbackend/controller/ProductGroupControllerTest.java new file mode 100644 index 0000000..ca316a5 --- /dev/null +++ b/slp-backend/src/test/java/agh/edu/pl/slpbackend/controller/ProductGroupControllerTest.java @@ -0,0 +1,30 @@ +package agh.edu.pl.slpbackend.controller; + +import agh.edu.pl.slpbackend.controller.dictionary.ProductGroupController; +import agh.edu.pl.slpbackend.dto.productGroup.ProductGroupDto; +import agh.edu.pl.slpbackend.service.dictionary.ProductGroupService; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.Mock; +import org.mockito.junit.jupiter.MockitoExtension; +import org.springframework.http.HttpStatus; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.mockito.Mockito.verify; + +@ExtendWith(MockitoExtension.class) +public class ProductGroupControllerTest { + + @Mock + private ProductGroupService service; + + @Test + void delete() { + var controller = new ProductGroupController(service); + Long id = 1L; + var response = controller.delete(id); + + verify(service).delete(ProductGroupDto.builder().id(id).build()); + assertThat(response.getStatusCode()).isEqualTo(HttpStatus.OK); + } +} diff --git a/slp-backend/src/test/java/agh/edu/pl/slpbackend/controller/SampleControllerTest.java b/slp-backend/src/test/java/agh/edu/pl/slpbackend/controller/SampleControllerTest.java deleted file mode 100644 index f3428da..0000000 --- a/slp-backend/src/test/java/agh/edu/pl/slpbackend/controller/SampleControllerTest.java +++ /dev/null @@ -1,56 +0,0 @@ -package agh.edu.pl.slpbackend.controller; - -import agh.edu.pl.slpbackend.dto.SampleDto; -import jakarta.transaction.Transactional; -import org.junit.jupiter.api.Test; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.http.HttpStatus; -import org.springframework.http.ResponseEntity; - -import java.time.LocalDate; -import java.util.List; -import java.util.Objects; - -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertFalse; - -@Transactional -@SpringBootTest -public class SampleControllerTest { - - @Autowired - private SampleController sampleController; - - private SampleDto getSaveExample() { - //@formatter:off - return SampleDto.builder() - .code(null) - .client(null) - .assortment(null) - .admissionDate(LocalDate.now()) - .expirationComment("test") - .examinationExpectedEndDate(LocalDate.now()) - .size("test") - .state("test") - .analysis(Boolean.TRUE) - .inspection(null) - .samplingStandard(null) - .reportData(null) - .build(); - //@formatter:on - } - - @Test - public void add() throws Exception { - final ResponseEntity response = this.sampleController.add(getSaveExample()); - assertEquals(HttpStatus.OK, response.getStatusCode()); - } - - @Test - public void list() { - final ResponseEntity> list = this.sampleController.list(); - assertEquals(HttpStatus.OK, list.getStatusCode()); - assertFalse(Objects.requireNonNull(list.getBody()).isEmpty()); - } -} diff --git a/slp-backend/src/test/java/agh/edu/pl/slpbackend/controller/SamplingStandardControllerTest.java b/slp-backend/src/test/java/agh/edu/pl/slpbackend/controller/SamplingStandardControllerTest.java new file mode 100644 index 0000000..55d1f60 --- /dev/null +++ b/slp-backend/src/test/java/agh/edu/pl/slpbackend/controller/SamplingStandardControllerTest.java @@ -0,0 +1,30 @@ +package agh.edu.pl.slpbackend.controller; + +import agh.edu.pl.slpbackend.controller.dictionary.SamplingStandardController; +import agh.edu.pl.slpbackend.dto.SamplingStandardDto; +import agh.edu.pl.slpbackend.service.dictionary.SamplingStandardService; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.Mock; +import org.mockito.junit.jupiter.MockitoExtension; +import org.springframework.http.HttpStatus; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.mockito.Mockito.verify; + +@ExtendWith(MockitoExtension.class) +public class SamplingStandardControllerTest { + + @Mock + private SamplingStandardService service; + + @Test + void delete() { + var controller = new SamplingStandardController(service); + Long id = 1L; + var response = controller.delete(id); + + verify(service).delete(SamplingStandardDto.builder().id(id).build()); + assertThat(response.getStatusCode()).isEqualTo(HttpStatus.OK); + } +} diff --git a/slp-backend/src/test/java/agh/edu/pl/slpbackend/integration/AddressTest.java b/slp-backend/src/test/java/agh/edu/pl/slpbackend/integration/AddressTest.java new file mode 100644 index 0000000..5f0274a --- /dev/null +++ b/slp-backend/src/test/java/agh/edu/pl/slpbackend/integration/AddressTest.java @@ -0,0 +1,33 @@ +package agh.edu.pl.slpbackend.integration; + +import agh.edu.pl.slpbackend.controller.AddressController; +import agh.edu.pl.slpbackend.repository.AddressRepository; +import jakarta.transaction.Transactional; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.http.HttpStatus; + +import static org.assertj.core.api.Assertions.assertThat; + +@Transactional +@SpringBootTest +public class AddressTest { + + @Autowired + private AddressController controller; + + @Autowired + private AddressRepository repository; + + @Test + void get_all() { + var response = controller.list(); + + assertThat(response.getStatusCode()).isEqualTo(HttpStatus.OK); + + var addresses = response.getBody(); + assertThat(addresses).isNotNull(); + assertThat(addresses.size()).isEqualTo(repository.count()); + } +} diff --git a/slp-backend/src/test/java/agh/edu/pl/slpbackend/integration/AssortmentTest.java b/slp-backend/src/test/java/agh/edu/pl/slpbackend/integration/AssortmentTest.java new file mode 100644 index 0000000..7bd0512 --- /dev/null +++ b/slp-backend/src/test/java/agh/edu/pl/slpbackend/integration/AssortmentTest.java @@ -0,0 +1,61 @@ +package agh.edu.pl.slpbackend.integration; + +import agh.edu.pl.slpbackend.controller.dictionary.AssortmentController; +import agh.edu.pl.slpbackend.dto.AssortmentDto; +import agh.edu.pl.slpbackend.mapper.AssortmentMapper; +import agh.edu.pl.slpbackend.repository.AssortmentRepository; +import jakarta.transaction.Transactional; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.http.HttpStatus; + +import static org.assertj.core.api.Assertions.assertThat; + +@Transactional +@SpringBootTest +public class AssortmentTest implements AssortmentMapper { + + @Autowired + private AssortmentController controller; + + @Autowired + private AssortmentRepository repository; + + @Test + void get_all() { + var response = controller.list(); + + assertThat(response.getStatusCode()).isEqualTo(HttpStatus.OK); + + var assortments = response.getBody(); + assertThat(assortments).isNotNull(); + assertThat(assortments.size()).isEqualTo(repository.count()); + } + + @Test + void add() { + var count = repository.count(); + + var assortment = AssortmentDto.builder() + .name("test") + .build(); + var response = controller.add(assortment); + + assertThat(response.getStatusCode()).isEqualTo(HttpStatus.OK); + assertThat(repository.count()).isEqualTo(count + 1); + } + + @Test + void update() { + var assortment = repository.findAll().get(0); + var request = toDto(assortment); + String name = "test"; + request.setName(name); + + var response = controller.edit(request); + + assertThat(response.getStatusCode()).isEqualTo(HttpStatus.OK); + assertThat(assortment.getName()).isEqualTo(name); + } +} diff --git a/slp-backend/src/test/java/agh/edu/pl/slpbackend/integration/BackupTest.java b/slp-backend/src/test/java/agh/edu/pl/slpbackend/integration/BackupTest.java new file mode 100644 index 0000000..52b66bb --- /dev/null +++ b/slp-backend/src/test/java/agh/edu/pl/slpbackend/integration/BackupTest.java @@ -0,0 +1,25 @@ +package agh.edu.pl.slpbackend.integration; + +import agh.edu.pl.slpbackend.database.backup.BackupController; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.http.HttpStatus; + +import java.io.IOException; + +import static org.assertj.core.api.Assertions.assertThat; + +@SpringBootTest +public class BackupTest { + + @Autowired + private BackupController controller; + + @Test + void csv_backup() throws IOException { + var response = controller.backup(); + + assertThat(response.getStatusCode()).isEqualTo(HttpStatus.OK); + } +} diff --git a/slp-backend/src/test/java/agh/edu/pl/slpbackend/integration/ClientTest.java b/slp-backend/src/test/java/agh/edu/pl/slpbackend/integration/ClientTest.java new file mode 100644 index 0000000..a72f734 --- /dev/null +++ b/slp-backend/src/test/java/agh/edu/pl/slpbackend/integration/ClientTest.java @@ -0,0 +1,61 @@ +package agh.edu.pl.slpbackend.integration; + +import agh.edu.pl.slpbackend.controller.dictionary.ClientController; +import agh.edu.pl.slpbackend.dto.ClientDto; +import agh.edu.pl.slpbackend.mapper.ClientMapper; +import agh.edu.pl.slpbackend.repository.ClientRepository; +import jakarta.transaction.Transactional; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.http.HttpStatus; + +import static org.assertj.core.api.Assertions.assertThat; + +@Transactional +@SpringBootTest +public class ClientTest implements ClientMapper { + + @Autowired + private ClientController controller; + + @Autowired + private ClientRepository repository; + + @Test + void get_all() { + var response = controller.list(); + + assertThat(response.getStatusCode()).isEqualTo(HttpStatus.OK); + + var clients = response.getBody(); + assertThat(clients).isNotNull(); + assertThat(clients.size()).isEqualTo(repository.count()); + } + + @Test + void add() { + var count = repository.count(); + + var client = ClientDto.builder() + .name("test") + .build(); + var response = controller.add(client); + + assertThat(response.getStatusCode()).isEqualTo(HttpStatus.OK); + assertThat(repository.count()).isEqualTo(count + 1); + } + + @Test + void update() { + var client = repository.findAll().get(0); + var request = toDto(client); + String name = "test"; + request.setName(name); + + var response = controller.edit(request); + + assertThat(response.getStatusCode()).isEqualTo(HttpStatus.OK); + assertThat(client.getName()).isEqualTo(name); + } +} diff --git a/slp-backend/src/test/java/agh/edu/pl/slpbackend/integration/CodeTest.java b/slp-backend/src/test/java/agh/edu/pl/slpbackend/integration/CodeTest.java new file mode 100644 index 0000000..55829b7 --- /dev/null +++ b/slp-backend/src/test/java/agh/edu/pl/slpbackend/integration/CodeTest.java @@ -0,0 +1,59 @@ +package agh.edu.pl.slpbackend.integration; + +import agh.edu.pl.slpbackend.controller.dictionary.CodeController; +import agh.edu.pl.slpbackend.dto.CodeDto; +import agh.edu.pl.slpbackend.mapper.CodeMapper; +import agh.edu.pl.slpbackend.repository.CodeRepository; +import jakarta.transaction.Transactional; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.http.HttpStatus; + +import static org.assertj.core.api.Assertions.assertThat; + +@Transactional +@SpringBootTest +public class CodeTest implements CodeMapper { + + @Autowired + private CodeController controller; + + @Autowired + private CodeRepository repository; + + @Test + void get_all() { + var response = controller.list(); + + assertThat(response.getStatusCode()).isEqualTo(HttpStatus.OK); + + var codes = response.getBody(); + assertThat(codes).isNotNull(); + assertThat(codes.size()).isEqualTo(repository.count()); + } + + @Test + void add() { + var code = CodeDto.builder() + .id("test") + .build(); + var response = controller.add(code); + + assertThat(response.getStatusCode()).isEqualTo(HttpStatus.OK); + assertThat(repository.existsById(code.getId())).isTrue(); + } + + @Test + void update() { + var code = repository.findAll().get(0); + var request = toDto(code); + String name = "test"; + request.setName(name); + + var response = controller.edit(request); + + assertThat(response.getStatusCode()).isEqualTo(HttpStatus.OK); + assertThat(code.getName()).isEqualTo(name); + } +} diff --git a/slp-backend/src/test/java/agh/edu/pl/slpbackend/integration/ExaminationTest.java b/slp-backend/src/test/java/agh/edu/pl/slpbackend/integration/ExaminationTest.java new file mode 100644 index 0000000..0b9c677 --- /dev/null +++ b/slp-backend/src/test/java/agh/edu/pl/slpbackend/integration/ExaminationTest.java @@ -0,0 +1,86 @@ +package agh.edu.pl.slpbackend.integration; + +import agh.edu.pl.slpbackend.controller.ExaminationController; +import agh.edu.pl.slpbackend.dto.ExaminationDto; +import agh.edu.pl.slpbackend.mapper.ExaminationMapper; +import agh.edu.pl.slpbackend.repository.ExaminationRepository; +import agh.edu.pl.slpbackend.repository.SampleRepository; +import jakarta.transaction.Transactional; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.http.HttpStatus; + +import static org.assertj.core.api.Assertions.assertThat; + +@Transactional +@SpringBootTest +public class ExaminationTest implements ExaminationMapper { + + @Autowired + private ExaminationController controller; + + @Autowired + private ExaminationRepository repository; + + @Autowired + private SampleRepository sampleRepository; + + + @Test + void add() { + var count = repository.count(); + var sample = sampleRepository.findAll().get(0); + var examination = ExaminationDto.builder() + .sample(sample) + .build(); + var response = controller.add(examination); + + assertThat(response.getStatusCode()).isEqualTo(HttpStatus.OK); + assertThat(repository.count()).isEqualTo(count + 1); + } + + @Test + void update() { + var examination = repository.findAll().get(0); + var request = toDto(examination); + String result = "test"; + request.setResult(result); + + var response = controller.insertExaminationResults(request); + + assertThat(response.getStatusCode()).isEqualTo(HttpStatus.OK); + assertThat(examination.getResult()).isEqualTo(result); + } + + @Test + void delete() { + var examination = repository.findAll().get(0); + var response = controller.deleteExamination(examination.getId()); + + assertThat(response.getStatusCode()).isEqualTo(HttpStatus.OK); + assertThat(repository.existsById(examination.getId())).isFalse(); + } + + @Test + void get_one() { + var examination = repository.findAll().get(0); + var response = controller.getExaminationById(examination.getId()); + + assertThat(response.getStatusCode()).isEqualTo(HttpStatus.OK); + assertThat(response.getBody()).isEqualTo(toDto(examination)); + } + + @Test + void get_for_sample() { + var sample = sampleRepository.findAll().get(0); + + var response = controller.getExaminationForSample(sample.getId()); + + assertThat(response.getStatusCode()).isEqualTo(HttpStatus.OK); + + var examinations = response.getBody(); + assertThat(examinations).isNotNull(); + assertThat(examinations.size()).isEqualTo(sample.getAssortment().getIndications().size()); + } +} diff --git a/slp-backend/src/test/java/agh/edu/pl/slpbackend/integration/IndicationTest.java b/slp-backend/src/test/java/agh/edu/pl/slpbackend/integration/IndicationTest.java new file mode 100644 index 0000000..51bb0dc --- /dev/null +++ b/slp-backend/src/test/java/agh/edu/pl/slpbackend/integration/IndicationTest.java @@ -0,0 +1,96 @@ +package agh.edu.pl.slpbackend.integration; + +import agh.edu.pl.slpbackend.controller.dictionary.IndicationController; +import agh.edu.pl.slpbackend.dto.IndicationDto; +import agh.edu.pl.slpbackend.exception.SampleNotFoundException; +import agh.edu.pl.slpbackend.mapper.IndicationMapper; +import agh.edu.pl.slpbackend.repository.IndicationRepository; +import agh.edu.pl.slpbackend.repository.SampleRepository; +import jakarta.transaction.Transactional; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.http.HttpStatus; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.assertThatThrownBy; + +@Transactional +@SpringBootTest +public class IndicationTest implements IndicationMapper { + + @Autowired + private IndicationController controller; + + @Autowired + private IndicationRepository repository; + + @Autowired + private SampleRepository sampleRepository; + + @Test + void get_all() { + var response = controller.list(); + + assertThat(response.getStatusCode()).isEqualTo(HttpStatus.OK); + + var indications = response.getBody(); + assertThat(indications).isNotNull(); + assertThat(indications.size()).isEqualTo(repository.count()); + } + + @Test + void add() { + var count = repository.count(); + + var indication = IndicationDto.builder() + .name("test") + .build(); + var response = controller.add(indication); + + assertThat(response.getStatusCode()).isEqualTo(HttpStatus.OK); + assertThat(repository.count()).isEqualTo(count + 1); + } + + @Test + void update() { + var indication = repository.findAll().get(0); + var request = toDto(indication); + String name = "test"; + request.setName(name); + + var response = controller.edit(request); + + assertThat(response.getStatusCode()).isEqualTo(HttpStatus.OK); + assertThat(indication.getName()).isEqualTo(name); + } + + @Test + void get_one() { + var indication = repository.findAll().get(0); + + var response = controller.getIndicationById(indication.getId()); + + assertThat(response.getStatusCode()).isEqualTo(HttpStatus.OK); + assertThat(response.getBody()).isEqualTo(toDto(indication)); + } + + @Test + void get_for_sample() { + var sample = sampleRepository.findAll().get(0); + + var response = controller.getIndicationsForSample(sample.getId()); + + assertThat(response.getStatusCode()).isEqualTo(HttpStatus.OK); + + var indications = response.getBody(); + assertThat(indications).isNotNull(); + assertThat(indications.size()).isEqualTo(sample.getAssortment().getIndications().size()); + } + + @Test + void get_for_sample_fails_when_sample_not_found() { + assertThatThrownBy(() -> controller.getIndicationsForSample(8634685L)) + .isInstanceOf(SampleNotFoundException.class); + } +} diff --git a/slp-backend/src/test/java/agh/edu/pl/slpbackend/integration/InspectionTest.java b/slp-backend/src/test/java/agh/edu/pl/slpbackend/integration/InspectionTest.java new file mode 100644 index 0000000..f0d45f6 --- /dev/null +++ b/slp-backend/src/test/java/agh/edu/pl/slpbackend/integration/InspectionTest.java @@ -0,0 +1,61 @@ +package agh.edu.pl.slpbackend.integration; + +import agh.edu.pl.slpbackend.controller.dictionary.InspectionController; +import agh.edu.pl.slpbackend.dto.InspectionDto; +import agh.edu.pl.slpbackend.mapper.InspectionMapper; +import agh.edu.pl.slpbackend.repository.InspectionRepository; +import jakarta.transaction.Transactional; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.http.HttpStatus; + +import static org.assertj.core.api.Assertions.assertThat; + +@Transactional +@SpringBootTest +public class InspectionTest implements InspectionMapper { + + @Autowired + private InspectionController controller; + + @Autowired + private InspectionRepository repository; + + @Test + void get_all() { + var response = controller.list(); + + assertThat(response.getStatusCode()).isEqualTo(HttpStatus.OK); + + var inspections = response.getBody(); + assertThat(inspections).isNotNull(); + assertThat(inspections.size()).isEqualTo(repository.count()); + } + + @Test + void add() { + var count = repository.count(); + + var inspection = InspectionDto.builder() + .name("test") + .build(); + var response = controller.add(inspection); + + assertThat(response.getStatusCode()).isEqualTo(HttpStatus.OK); + assertThat(repository.count()).isEqualTo(count + 1); + } + + @Test + void update() { + var inspection = repository.findAll().get(0); + var request = toDto(inspection); + String name = "test"; + request.setName(name); + + var response = controller.edit(request); + + assertThat(response.getStatusCode()).isEqualTo(HttpStatus.OK); + assertThat(inspection.getName()).isEqualTo(name); + } +} diff --git a/slp-backend/src/test/java/agh/edu/pl/slpbackend/integration/ProductGroupTest.java b/slp-backend/src/test/java/agh/edu/pl/slpbackend/integration/ProductGroupTest.java new file mode 100644 index 0000000..52cd782 --- /dev/null +++ b/slp-backend/src/test/java/agh/edu/pl/slpbackend/integration/ProductGroupTest.java @@ -0,0 +1,67 @@ +package agh.edu.pl.slpbackend.integration; + +import agh.edu.pl.slpbackend.controller.dictionary.ProductGroupController; +import agh.edu.pl.slpbackend.dto.productGroup.ProductGroupSaveDto; +import agh.edu.pl.slpbackend.mapper.ProductGroupMapper; +import agh.edu.pl.slpbackend.repository.ProductGroupRepository; +import jakarta.transaction.Transactional; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.http.HttpStatus; + +import java.util.List; + +import static org.assertj.core.api.Assertions.assertThat; + +@Transactional +@SpringBootTest +public class ProductGroupTest implements ProductGroupMapper { + + @Autowired + private ProductGroupController controller; + + @Autowired + private ProductGroupRepository repository; + + @Test + void get_all() { + var response = controller.list(); + + assertThat(response.getStatusCode()).isEqualTo(HttpStatus.OK); + + var groups = response.getBody(); + assertThat(groups).isNotNull(); + assertThat(groups.size()).isEqualTo(repository.count()); + } + + @Test + void add() { + var count = repository.count(); + + var group = ProductGroupSaveDto.builder() + .samplingStandards(List.of()) + .name("test") + .build(); + var response = controller.add(group); + + assertThat(response.getStatusCode()).isEqualTo(HttpStatus.OK); + assertThat(repository.count()).isEqualTo(count + 1); + } + + @Test + void update() { + var group = repository.findAll().get(0); + String name = "test"; + var request = ProductGroupSaveDto.builder() + .id(group.getId()) + .name(name) + .samplingStandards(List.of()) + .build(); + + var response = controller.edit(request); + + assertThat(response.getStatusCode()).isEqualTo(HttpStatus.OK); + assertThat(group.getName()).isEqualTo(name); + } +} diff --git a/slp-backend/src/test/java/agh/edu/pl/slpbackend/integration/ReportDataTest.java b/slp-backend/src/test/java/agh/edu/pl/slpbackend/integration/ReportDataTest.java new file mode 100644 index 0000000..91d0b18 --- /dev/null +++ b/slp-backend/src/test/java/agh/edu/pl/slpbackend/integration/ReportDataTest.java @@ -0,0 +1,87 @@ +package agh.edu.pl.slpbackend.integration; + +import agh.edu.pl.slpbackend.controller.ReportDataController; +import agh.edu.pl.slpbackend.dto.ReportDataDto; +import agh.edu.pl.slpbackend.mapper.ReportDataMapper; +import agh.edu.pl.slpbackend.model.Sample; +import agh.edu.pl.slpbackend.repository.ReportDataRepository; +import agh.edu.pl.slpbackend.repository.SampleRepository; +import jakarta.transaction.Transactional; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.http.HttpStatus; + +import static org.assertj.core.api.Assertions.assertThat; + +@Transactional +@SpringBootTest +public class ReportDataTest implements ReportDataMapper { + + @Autowired + private ReportDataController controller; + + @Autowired + private ReportDataRepository repository; + + @Autowired + private SampleRepository sampleRepository; + + @Test + void get_all() { + var response = controller.list(); + + assertThat(response.getStatusCode()).isEqualTo(HttpStatus.OK); + + var reportData = response.getBody(); + assertThat(reportData).isNotNull(); + assertThat(reportData.size()).isEqualTo(repository.count()); + } + + @Test + void add() { + var count = repository.count(); + + Sample sample = sampleRepository.findAll().get(0); + var request = ReportDataDto.builder() + .sampleId(sample.getId()) + .build(); + var response = controller.add(request); + + assertThat(response.getStatusCode()).isEqualTo(HttpStatus.OK); + assertThat(repository.count()).isEqualTo(count + 1); + } + + @Test + void update() { + var reportData = repository.findAll().get(0); + var request = toDto(reportData); + String mechanism = "test"; + request.setMechanism(mechanism); + + var response = controller.update(request); + + assertThat(response.getStatusCode()).isEqualTo(HttpStatus.OK); + assertThat(reportData.getMechanism()).isEqualTo(mechanism); + } + + @Test + void delete() { + var reportData = repository.findAll().get(0); + var response = controller.delete(reportData.getId()); + + assertThat(response.getStatusCode()).isEqualTo(HttpStatus.OK); + assertThat(repository.existsById(reportData.getId())).isFalse(); + } + + @Test + void get_by_sample_id() { + var sample = sampleRepository.findAll().get(0); + var response = controller.getReportBySampleId(sample.getId()); + + assertThat(response.getStatusCode()).isEqualTo(HttpStatus.OK); + var reportData = response.getBody(); + assertThat(reportData).isNotNull(); + assertThat(toModel(reportData)).isEqualTo(sample.getReportData()); + } +} diff --git a/slp-backend/src/test/java/agh/edu/pl/slpbackend/integration/ReportTest.java b/slp-backend/src/test/java/agh/edu/pl/slpbackend/integration/ReportTest.java new file mode 100644 index 0000000..b4f3128 --- /dev/null +++ b/slp-backend/src/test/java/agh/edu/pl/slpbackend/integration/ReportTest.java @@ -0,0 +1,111 @@ +package agh.edu.pl.slpbackend.integration; + +import agh.edu.pl.slpbackend.exception.SampleNotFoundException; +import agh.edu.pl.slpbackend.reports.kzwa.KZWAReportGeneratorController; +import agh.edu.pl.slpbackend.reports.samplereport.SampleReportGeneratorController; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.http.HttpStatus; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.assertThatThrownBy; + +@SpringBootTest +public class ReportTest { + + @Autowired + private KZWAReportGeneratorController KZWAReportController; + + @Autowired + private SampleReportGeneratorController sampleReportController; + + @Test + void generate_KZWA_report() { + var response = KZWAReportController.generate(1L); + + assertThat(response.getStatusCode()).isEqualTo(HttpStatus.OK); + } + + @Test + void generate_KZWA_report_fails_when_unknown_sample_id() { + assertThatThrownBy(() -> KZWAReportController.generate(34895L)) + .isInstanceOf(SampleNotFoundException.class); + } + + @Test + void generate_sample_report_fails_when_unknown_sample_id() { + assertThatThrownBy(() -> sampleReportController.generate(34895L, "")) + .isInstanceOf(SampleNotFoundException.class); + } + + @Test + void generate_F4_report0() { + var response = sampleReportController.generate(1L, "F4"); + + assertThat(response.getStatusCode()).isEqualTo(HttpStatus.OK); + } + + @Test + void generate_F5_report0() { + var response = sampleReportController.generate(1L, "F5"); + + assertThat(response.getStatusCode()).isEqualTo(HttpStatus.OK); + } + + @Test + void generate_F4_report1() { + var response = sampleReportController.generate(4L, "F4"); + + assertThat(response.getStatusCode()).isEqualTo(HttpStatus.OK); + } + + @Test + void generate_F4_report2() { + var response = sampleReportController.generate(5L, "F4"); + + assertThat(response.getStatusCode()).isEqualTo(HttpStatus.OK); + } + + @Test + void generate_F4_report3() { + var response = sampleReportController.generate(6L, "F4"); + + assertThat(response.getStatusCode()).isEqualTo(HttpStatus.OK); + } + + @Test + void generate_F4_report4() { + var response = sampleReportController.generate(7L, "F4"); + + assertThat(response.getStatusCode()).isEqualTo(HttpStatus.OK); + } + + @Test + void generate_F5_report1() { + var response = sampleReportController.generate(4L, "F5"); + + assertThat(response.getStatusCode()).isEqualTo(HttpStatus.OK); + } + + @Test + void generate_F5_report2() { + var response = sampleReportController.generate(5L, "F5"); + + assertThat(response.getStatusCode()).isEqualTo(HttpStatus.OK); + } + + @Test + void generate_F5_report3() { + var response = sampleReportController.generate(6L, "F5"); + + assertThat(response.getStatusCode()).isEqualTo(HttpStatus.OK); + } + + @Test + void generate_F5_report4() { + var response = sampleReportController.generate(7L, "F5"); + + assertThat(response.getStatusCode()).isEqualTo(HttpStatus.OK); + } +} diff --git a/slp-backend/src/test/java/agh/edu/pl/slpbackend/integration/SampleTest.java b/slp-backend/src/test/java/agh/edu/pl/slpbackend/integration/SampleTest.java new file mode 100644 index 0000000..9f8a3b1 --- /dev/null +++ b/slp-backend/src/test/java/agh/edu/pl/slpbackend/integration/SampleTest.java @@ -0,0 +1,127 @@ +package agh.edu.pl.slpbackend.integration; + +import agh.edu.pl.slpbackend.controller.SampleController; +import agh.edu.pl.slpbackend.dto.SampleDto; +import agh.edu.pl.slpbackend.dto.filters.FilterRequest; +import agh.edu.pl.slpbackend.dto.filters.Filters; +import agh.edu.pl.slpbackend.dto.filters.SummarySample; +import agh.edu.pl.slpbackend.enums.ProgressStatusEnum; +import agh.edu.pl.slpbackend.mapper.SampleMapper; +import agh.edu.pl.slpbackend.repository.SampleRepository; +import jakarta.transaction.Transactional; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.http.HttpStatus; + +import java.util.List; + +import static org.assertj.core.api.Assertions.assertThat; + +@Transactional +@SpringBootTest +public class SampleTest implements SampleMapper { + + @Autowired + private SampleController controller; + + @Autowired + private SampleRepository repository; + + @Test + void get_all() { + var response = controller.list(); + + assertThat(response.getStatusCode()).isEqualTo(HttpStatus.OK); + + var samples = response.getBody(); + assertThat(samples).isNotNull(); + assertThat(samples.size()).isEqualTo(repository.count()); + } + + @Test + void add() { + var count = repository.count(); + + var sample = SampleDto.builder() + .state("") + .expirationComment("") + .build(); + var response = controller.add(sample); + + assertThat(response.getStatusCode()).isEqualTo(HttpStatus.OK); + assertThat(repository.count()).isEqualTo(count + 1); + } + + @Test + void update() { + var sample = repository.findAll().get(0); + var request = toDto(sample); + String state = "test"; + request.setState(state); + + var response = controller.update(sample.getId(), request); + + assertThat(response.getStatusCode()).isEqualTo(HttpStatus.OK); + assertThat(sample.getState()).isEqualTo(state); + } + + @Test + void count() { + var response = controller.count(); + + assertThat(response.getStatusCode()).isEqualTo(HttpStatus.OK); + assertThat(response.getBody()).isEqualTo(repository.count()); + } + + @Test + void get_one() { + var sample = repository.findAll().get(0); + var response = controller.getOne(sample.getId()); + + assertThat(response.getStatusCode()).isEqualTo(HttpStatus.OK); + assertThat(response.getBody()).isEqualTo(toDto(sample)); + } + + @Test + void update_status() { + var sample = repository.findAll().get(0); + var response = controller.updateStatus(sample.getId(), "IN_PROGRESS"); + + assertThat(response.getStatusCode()).isEqualTo(HttpStatus.OK); + assertThat(sample.getProgressStatus()).isEqualTo(ProgressStatusEnum.IN_PROGRESS); + + response = controller.updateStatus(sample.getId(), "DONE"); + + assertThat(response.getStatusCode()).isEqualTo(HttpStatus.OK); + assertThat(sample.getProgressStatus()).isEqualTo(ProgressStatusEnum.DONE); + } + + @Test + void delete() { + var sample = repository.findAll().get(0); + var response = controller.delete(sample.getId()); + + assertThat(response.getStatusCode()).isEqualTo(HttpStatus.OK); + assertThat(repository.existsById(sample.getId())).isFalse(); + } + + @Test + void filter() { + var filters = new Filters(List.of("Kd", "O"), List.of("WIJHARS Kraków"), List.of(), List.of()); + var request = new FilterRequest("id", true, 1, 1, filters, ""); + var response = controller.filter(request); + + assertThat(response.getStatusCode()).isEqualTo(HttpStatus.OK); + var filterResult = response.getBody(); + assertThat(filterResult).isNotNull(); + assertThat(filterResult.totalPages()).isEqualTo(2); + var sample = repository.findById(3L) + .orElseThrow(); + assertThat(filterResult.samples()).isEqualTo(List.of( + new SummarySample(sample.getId(), sample.getCode().getId(), sample.getAssortment().getGroup().getName(), + sample.getAssortment().getName(), sample.getClient().getName(), sample.getAdmissionDate(), + sample.getProgressStatus()) + )); + } +} diff --git a/slp-backend/src/test/java/agh/edu/pl/slpbackend/integration/SamplingStandardTest.java b/slp-backend/src/test/java/agh/edu/pl/slpbackend/integration/SamplingStandardTest.java new file mode 100644 index 0000000..a3e6700 --- /dev/null +++ b/slp-backend/src/test/java/agh/edu/pl/slpbackend/integration/SamplingStandardTest.java @@ -0,0 +1,61 @@ +package agh.edu.pl.slpbackend.integration; + +import agh.edu.pl.slpbackend.controller.dictionary.SamplingStandardController; +import agh.edu.pl.slpbackend.dto.SamplingStandardDto; +import agh.edu.pl.slpbackend.mapper.SamplingStandardMapper; +import agh.edu.pl.slpbackend.repository.SamplingStandardRepository; +import jakarta.transaction.Transactional; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.http.HttpStatus; + +import static org.assertj.core.api.Assertions.assertThat; + +@Transactional +@SpringBootTest +public class SamplingStandardTest implements SamplingStandardMapper { + + @Autowired + private SamplingStandardController controller; + + @Autowired + private SamplingStandardRepository repository; + + @Test + void get_all() { + var response = controller.list(); + + assertThat(response.getStatusCode()).isEqualTo(HttpStatus.OK); + + var samplingStandards = response.getBody(); + assertThat(samplingStandards).isNotNull(); + assertThat(samplingStandards.size()).isEqualTo(repository.count()); + } + + @Test + void add() { + var count = repository.count(); + + var samplingStandard = SamplingStandardDto.builder() + .name("test") + .build(); + var response = controller.add(samplingStandard); + + assertThat(response.getStatusCode()).isEqualTo(HttpStatus.OK); + assertThat(repository.count()).isEqualTo(count + 1); + } + + @Test + void update() { + var samplingStandard = repository.findAll().get(0); + var request = toDto(samplingStandard); + String name = "test"; + request.setName(name); + + var response = controller.edit(request); + + assertThat(response.getStatusCode()).isEqualTo(HttpStatus.OK); + assertThat(samplingStandard.getName()).isEqualTo(name); + } +} diff --git a/slp-backend/src/test/java/agh/edu/pl/slpbackend/integration/UserTest.java b/slp-backend/src/test/java/agh/edu/pl/slpbackend/integration/UserTest.java index 589136b..b134829 100644 --- a/slp-backend/src/test/java/agh/edu/pl/slpbackend/integration/UserTest.java +++ b/slp-backend/src/test/java/agh/edu/pl/slpbackend/integration/UserTest.java @@ -2,6 +2,7 @@ import agh.edu.pl.slpbackend.controller.UserController; import agh.edu.pl.slpbackend.dto.UserDto; +import agh.edu.pl.slpbackend.dto.users.ChangePasswordRequest; import agh.edu.pl.slpbackend.dto.users.LoginRequest; import agh.edu.pl.slpbackend.enums.RoleEnum; import agh.edu.pl.slpbackend.exception.AccountAlreadyExistsException; @@ -28,6 +29,8 @@ public class UserTest { @Autowired private UserRepository repository; + private static final String WORKER_EMAIL = "worker@gmail.com"; + @Test @WithMockUser(roles = "ADMIN") void register() { @@ -59,7 +62,7 @@ void register_fails_when_email_taken() { var userCount = repository.count(); var userDto = UserDto.builder() .name("Adam Nowak") - .email("worker@gmail.com") + .email(WORKER_EMAIL) .role(RoleEnum.WORKER) .build(); @@ -70,7 +73,7 @@ void register_fails_when_email_taken() { @Test void login() { - var loginRequest = new LoginRequest("worker@gmail.com", "worker"); + var loginRequest = new LoginRequest(WORKER_EMAIL, "worker"); var response = controller.login(loginRequest); assertThat(response.getStatusCode()).isEqualTo(HttpStatus.OK); @@ -95,7 +98,7 @@ void login_fails_when_unknown_email() { @Test void login_fails_when_wrong_password() { - var loginRequest = new LoginRequest("worker@gmail.com", ""); + var loginRequest = new LoginRequest(WORKER_EMAIL, ""); assertThatThrownBy(() -> controller.login(loginRequest)) .isInstanceOf(WrongPasswordException.class); @@ -103,7 +106,7 @@ void login_fails_when_wrong_password() { @Test @WithMockUser(roles = "ADMIN") - void getAll() { + void get_all() { var response = controller.getUsers(); assertThat(response.getStatusCode()).isEqualTo(HttpStatus.OK); @@ -115,13 +118,13 @@ void getAll() { @Test @WithMockUser(roles = "ADMIN") void delete() { - var email = "worker@gmail.com"; - assertThat(repository.existsByEmail(email)).isTrue(); + assertThat(repository.existsByEmail(WORKER_EMAIL)).isTrue(); var count = repository.count(); - controller.deleteUser(email); + var response = controller.deleteUser(WORKER_EMAIL); - assertThat(repository.existsByEmail(email)).isFalse(); + assertThat(response.getStatusCode()).isEqualTo(HttpStatus.OK); + assertThat(repository.existsByEmail(WORKER_EMAIL)).isFalse(); assertThat(repository.count()).isEqualTo(count - 1); } @@ -131,4 +134,61 @@ void delete_fails_when_unknown_email() { assertThatThrownBy(() -> controller.deleteUser("")) .isInstanceOf(UserNotFoundException.class); } + + @Test + void change_password() { + var user = repository.findByEmail(WORKER_EMAIL) + .orElseThrow(); + var newPassword = "test"; + var request = new ChangePasswordRequest(user.getPassword(), newPassword); + + var response = controller.changePassword(request, WORKER_EMAIL); + + assertThat(response.getStatusCode()).isEqualTo(HttpStatus.OK); + assertThat(user.getPassword()).isEqualTo(newPassword); + } + + @Test + void change_password_fails_when_unknown_email() { + var user = repository.findByEmail(WORKER_EMAIL) + .orElseThrow(); + var newPassword = "test"; + var request = new ChangePasswordRequest(user.getPassword(), newPassword); + + assertThatThrownBy(() -> controller.changePassword(request, "")) + .isInstanceOf(UserNotFoundException.class); + } + + @Test + void change_password_fails_when_wrong_password() { + var newPassword = "test"; + var request = new ChangePasswordRequest("", newPassword); + + assertThatThrownBy(() -> controller.changePassword(request, WORKER_EMAIL)) + .isInstanceOf(WrongPasswordException.class); + } + + @Test + @WithMockUser(roles = "ADMIN") + void change_password_by_admin() { + var user = repository.findByEmail(WORKER_EMAIL) + .orElseThrow(); + var newPassword = "test"; + var request = new ChangePasswordRequest("", newPassword); + + var response = controller.changePasswordByAdmin(request, WORKER_EMAIL); + + assertThat(response.getStatusCode()).isEqualTo(HttpStatus.OK); + assertThat(user.getPassword()).isEqualTo(newPassword); + } + + @Test + @WithMockUser(roles = "ADMIN") + void change_password_by_admin_fails_when_unknown_email() { + var newPassword = "test"; + var request = new ChangePasswordRequest("", newPassword); + + assertThatThrownBy(() -> controller.changePasswordByAdmin(request, "")) + .isInstanceOf(UserNotFoundException.class); + } } diff --git a/slp-backend/src/test/java/agh/edu/pl/slpbackend/repository/SampleRepositoryTest.java b/slp-backend/src/test/java/agh/edu/pl/slpbackend/repository/SampleRepositoryTest.java deleted file mode 100644 index f8a4618..0000000 --- a/slp-backend/src/test/java/agh/edu/pl/slpbackend/repository/SampleRepositoryTest.java +++ /dev/null @@ -1,60 +0,0 @@ -package agh.edu.pl.slpbackend.repository; - -import agh.edu.pl.slpbackend.model.Sample; -import jakarta.transaction.Transactional; -import org.junit.jupiter.api.Test; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.context.SpringBootTest; - -import java.time.LocalDate; -import java.util.List; - -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertFalse; - -@Transactional -@SpringBootTest -public class SampleRepositoryTest { - - @Autowired - private SampleRepository sampleRepository; - - private Sample getSaveExample() { - //@formatter:off - return Sample.builder() - .code(null) - .client(null) - .assortment(null) - .admissionDate(LocalDate.now()) - .expirationComment("test") - .examinationExpectedEndDate(LocalDate.now()) - .size("test") - .state("test") - .analysis(Boolean.TRUE) - .inspection(null) - .samplingStandard(null) - .reportData(null) - .build(); - //@formatter:on - } - - - @Test - public void findAll() { - final List list = sampleRepository.findAll(); - assertFalse(list.isEmpty()); - } - - @Test - public void save() { - - final long count1 = this.sampleRepository.count(); - - final Sample response = this.sampleRepository.save(getSaveExample()); - - final long count2 = this.sampleRepository.count(); - assertEquals(count1 + 1, count2); - - } - -} diff --git a/slp-backend/src/test/java/agh/edu/pl/slpbackend/service/AssortmentServiceTest.java b/slp-backend/src/test/java/agh/edu/pl/slpbackend/service/AssortmentServiceTest.java new file mode 100644 index 0000000..f868135 --- /dev/null +++ b/slp-backend/src/test/java/agh/edu/pl/slpbackend/service/AssortmentServiceTest.java @@ -0,0 +1,44 @@ +package agh.edu.pl.slpbackend.service; + +import agh.edu.pl.slpbackend.dto.AssortmentDto; +import agh.edu.pl.slpbackend.exception.DataDependencyException; +import agh.edu.pl.slpbackend.repository.AssortmentRepository; +import agh.edu.pl.slpbackend.service.dictionary.AssortmentService; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.Mock; +import org.mockito.junit.jupiter.MockitoExtension; +import org.springframework.dao.DataIntegrityViolationException; + +import static org.assertj.core.api.Assertions.assertThatThrownBy; +import static org.mockito.Mockito.doThrow; +import static org.mockito.Mockito.verify; + +@ExtendWith(MockitoExtension.class) +public class AssortmentServiceTest { + + @Mock + private AssortmentRepository repository; + + @Test + void delete() { + var service = new AssortmentService(repository); + Long id = 1L; + + service.delete(AssortmentDto.builder().id(id).build()); + + verify(repository).deleteById(id); + } + + @Test + void delete_fails_when_data_integrity_violation_exception() { + var service = new AssortmentService(repository); + Long id = 1L; + + doThrow(DataIntegrityViolationException.class) + .when(repository).deleteById(id); + + assertThatThrownBy(() -> service.delete(AssortmentDto.builder().id(id).build())) + .isInstanceOf(DataDependencyException.class); + } +} diff --git a/slp-backend/src/test/java/agh/edu/pl/slpbackend/service/ClientServiceTest.java b/slp-backend/src/test/java/agh/edu/pl/slpbackend/service/ClientServiceTest.java new file mode 100644 index 0000000..5e3c666 --- /dev/null +++ b/slp-backend/src/test/java/agh/edu/pl/slpbackend/service/ClientServiceTest.java @@ -0,0 +1,44 @@ +package agh.edu.pl.slpbackend.service; + +import agh.edu.pl.slpbackend.dto.ClientDto; +import agh.edu.pl.slpbackend.exception.DataDependencyException; +import agh.edu.pl.slpbackend.repository.ClientRepository; +import agh.edu.pl.slpbackend.service.dictionary.ClientService; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.Mock; +import org.mockito.junit.jupiter.MockitoExtension; +import org.springframework.dao.DataIntegrityViolationException; + +import static org.assertj.core.api.Assertions.assertThatThrownBy; +import static org.mockito.Mockito.doThrow; +import static org.mockito.Mockito.verify; + +@ExtendWith(MockitoExtension.class) +public class ClientServiceTest { + + @Mock + private ClientRepository repository; + + @Test + void delete() { + var service = new ClientService(repository); + Long id = 1L; + + service.delete(ClientDto.builder().id(id).build()); + + verify(repository).deleteById(id); + } + + @Test + void delete_fails_when_data_integrity_violation_exception() { + var service = new ClientService(repository); + Long id = 1L; + + doThrow(DataIntegrityViolationException.class) + .when(repository).deleteById(id); + + assertThatThrownBy(() -> service.delete(ClientDto.builder().id(id).build())) + .isInstanceOf(DataDependencyException.class); + } +} diff --git a/slp-backend/src/test/java/agh/edu/pl/slpbackend/service/CodeServiceTest.java b/slp-backend/src/test/java/agh/edu/pl/slpbackend/service/CodeServiceTest.java new file mode 100644 index 0000000..ba9e33f --- /dev/null +++ b/slp-backend/src/test/java/agh/edu/pl/slpbackend/service/CodeServiceTest.java @@ -0,0 +1,44 @@ +package agh.edu.pl.slpbackend.service; + +import agh.edu.pl.slpbackend.dto.CodeDto; +import agh.edu.pl.slpbackend.exception.DataDependencyException; +import agh.edu.pl.slpbackend.repository.CodeRepository; +import agh.edu.pl.slpbackend.service.dictionary.CodeService; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.Mock; +import org.mockito.junit.jupiter.MockitoExtension; +import org.springframework.dao.DataIntegrityViolationException; + +import static org.assertj.core.api.Assertions.assertThatThrownBy; +import static org.mockito.Mockito.doThrow; +import static org.mockito.Mockito.verify; + +@ExtendWith(MockitoExtension.class) +public class CodeServiceTest { + + @Mock + private CodeRepository repository; + + @Test + void delete() { + var service = new CodeService(repository); + String id = "Kp"; + + service.delete(CodeDto.builder().id(id).build()); + + verify(repository).deleteById(id); + } + + @Test + void delete_fails_when_data_integrity_violation_exception() { + var service = new CodeService(repository); + String id = "Kp"; + + doThrow(DataIntegrityViolationException.class) + .when(repository).deleteById(id); + + assertThatThrownBy(() -> service.delete(CodeDto.builder().id(id).build())) + .isInstanceOf(DataDependencyException.class); + } +} diff --git a/slp-backend/src/test/java/agh/edu/pl/slpbackend/service/IndicationServiceTest.java b/slp-backend/src/test/java/agh/edu/pl/slpbackend/service/IndicationServiceTest.java new file mode 100644 index 0000000..5482e41 --- /dev/null +++ b/slp-backend/src/test/java/agh/edu/pl/slpbackend/service/IndicationServiceTest.java @@ -0,0 +1,48 @@ +package agh.edu.pl.slpbackend.service; + +import agh.edu.pl.slpbackend.dto.IndicationDto; +import agh.edu.pl.slpbackend.exception.DataDependencyException; +import agh.edu.pl.slpbackend.repository.IndicationRepository; +import agh.edu.pl.slpbackend.repository.SampleRepository; +import agh.edu.pl.slpbackend.service.dictionary.IndicationService; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.Mock; +import org.mockito.junit.jupiter.MockitoExtension; +import org.springframework.dao.DataIntegrityViolationException; + +import static org.assertj.core.api.Assertions.assertThatThrownBy; +import static org.mockito.Mockito.doThrow; +import static org.mockito.Mockito.verify; + +@ExtendWith(MockitoExtension.class) +public class IndicationServiceTest { + + @Mock + private IndicationRepository repository; + + @Mock + private SampleRepository sampleRepository; + + @Test + void delete() { + var service = new IndicationService(repository, sampleRepository); + Long id = 1L; + + service.delete(IndicationDto.builder().id(id).build()); + + verify(repository).deleteById(id); + } + + @Test + void delete_fails_when_data_integrity_violation_exception() { + var service = new IndicationService(repository, sampleRepository); + Long id = 1L; + + doThrow(DataIntegrityViolationException.class) + .when(repository).deleteById(id); + + assertThatThrownBy(() -> service.delete(IndicationDto.builder().id(id).build())) + .isInstanceOf(DataDependencyException.class); + } +} diff --git a/slp-backend/src/test/java/agh/edu/pl/slpbackend/service/InspectionServiceTest.java b/slp-backend/src/test/java/agh/edu/pl/slpbackend/service/InspectionServiceTest.java new file mode 100644 index 0000000..e9fe569 --- /dev/null +++ b/slp-backend/src/test/java/agh/edu/pl/slpbackend/service/InspectionServiceTest.java @@ -0,0 +1,44 @@ +package agh.edu.pl.slpbackend.service; + +import agh.edu.pl.slpbackend.dto.InspectionDto; +import agh.edu.pl.slpbackend.exception.DataDependencyException; +import agh.edu.pl.slpbackend.repository.InspectionRepository; +import agh.edu.pl.slpbackend.service.dictionary.InspectionService; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.Mock; +import org.mockito.junit.jupiter.MockitoExtension; +import org.springframework.dao.DataIntegrityViolationException; + +import static org.assertj.core.api.Assertions.assertThatThrownBy; +import static org.mockito.Mockito.doThrow; +import static org.mockito.Mockito.verify; + +@ExtendWith(MockitoExtension.class) +public class InspectionServiceTest { + + @Mock + private InspectionRepository repository; + + @Test + void delete() { + var service = new InspectionService(repository); + Long id = 1L; + + service.delete(InspectionDto.builder().id(id).build()); + + verify(repository).deleteById(id); + } + + @Test + void delete_fails_when_data_integrity_violation_exception() { + var service = new InspectionService(repository); + Long id = 1L; + + doThrow(DataIntegrityViolationException.class) + .when(repository).deleteById(id); + + assertThatThrownBy(() -> service.delete(InspectionDto.builder().id(id).build())) + .isInstanceOf(DataDependencyException.class); + } +} diff --git a/slp-backend/src/test/java/agh/edu/pl/slpbackend/service/ProductGroupServiceTest.java b/slp-backend/src/test/java/agh/edu/pl/slpbackend/service/ProductGroupServiceTest.java new file mode 100644 index 0000000..40e339a --- /dev/null +++ b/slp-backend/src/test/java/agh/edu/pl/slpbackend/service/ProductGroupServiceTest.java @@ -0,0 +1,48 @@ +package agh.edu.pl.slpbackend.service; + +import agh.edu.pl.slpbackend.dto.productGroup.ProductGroupDto; +import agh.edu.pl.slpbackend.exception.DataDependencyException; +import agh.edu.pl.slpbackend.repository.ProductGroupRepository; +import agh.edu.pl.slpbackend.repository.SamplingStandardRepository; +import agh.edu.pl.slpbackend.service.dictionary.ProductGroupService; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.Mock; +import org.mockito.junit.jupiter.MockitoExtension; +import org.springframework.dao.DataIntegrityViolationException; + +import static org.assertj.core.api.Assertions.assertThatThrownBy; +import static org.mockito.Mockito.doThrow; +import static org.mockito.Mockito.verify; + +@ExtendWith(MockitoExtension.class) +public class ProductGroupServiceTest { + + @Mock + private ProductGroupRepository repository; + + @Mock + private SamplingStandardRepository samplingStandardRepository; + + @Test + void delete() { + var service = new ProductGroupService(repository, samplingStandardRepository); + Long id = 1L; + + service.delete(ProductGroupDto.builder().id(id).build()); + + verify(repository).deleteById(id); + } + + @Test + void delete_fails_when_data_integrity_violation_exception() { + var service = new ProductGroupService(repository, samplingStandardRepository); + Long id = 1L; + + doThrow(DataIntegrityViolationException.class) + .when(repository).deleteById(id); + + assertThatThrownBy(() -> service.delete(ProductGroupDto.builder().id(id).build())) + .isInstanceOf(DataDependencyException.class); + } +} diff --git a/slp-backend/src/test/java/agh/edu/pl/slpbackend/service/SamplingStandardServiceTest.java b/slp-backend/src/test/java/agh/edu/pl/slpbackend/service/SamplingStandardServiceTest.java new file mode 100644 index 0000000..137d897 --- /dev/null +++ b/slp-backend/src/test/java/agh/edu/pl/slpbackend/service/SamplingStandardServiceTest.java @@ -0,0 +1,67 @@ +package agh.edu.pl.slpbackend.service; + +import agh.edu.pl.slpbackend.dto.SamplingStandardDto; +import agh.edu.pl.slpbackend.exception.DataDependencyException; +import agh.edu.pl.slpbackend.model.ProductGroup; +import agh.edu.pl.slpbackend.model.SamplingStandard; +import agh.edu.pl.slpbackend.repository.ProductGroupRepository; +import agh.edu.pl.slpbackend.repository.SamplingStandardRepository; +import agh.edu.pl.slpbackend.service.dictionary.SamplingStandardService; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.Mock; +import org.mockito.junit.jupiter.MockitoExtension; +import org.springframework.dao.DataIntegrityViolationException; + +import java.util.ArrayList; +import java.util.List; +import java.util.Optional; + +import static org.assertj.core.api.Assertions.assertThatThrownBy; +import static org.mockito.Mockito.*; + +@ExtendWith(MockitoExtension.class) +public class SamplingStandardServiceTest { + + @Mock + private SamplingStandardRepository repository; + + @Mock + private ProductGroupRepository groupRepository; + + @Test + void delete() { + var service = new SamplingStandardService(repository, groupRepository); + Long id = 1L; + + var group = new ProductGroup(id, "name", List.of(), List.of()); + var samplingStandard = new SamplingStandard(id, "name", new ArrayList<>(List.of(group))); + group.setSamplingStandards(new ArrayList<>(List.of(samplingStandard))); + + when(repository.findById(id)) + .thenReturn(Optional.of(samplingStandard)); + + service.delete(SamplingStandardDto.builder().id(id).build()); + + verify(groupRepository).save(group); + verify(repository).save(samplingStandard); + verify(repository).deleteById(id); + } + + @Test + void delete_fails_when_data_integrity_violation_exception() { + var service = new SamplingStandardService(repository, groupRepository); + Long id = 1L; + + var samplingStandard = new SamplingStandard(id, "name", new ArrayList<>()); + + when(repository.findById(id)) + .thenReturn(Optional.of(samplingStandard)); + + doThrow(DataIntegrityViolationException.class) + .when(repository).deleteById(id); + + assertThatThrownBy(() -> service.delete(SamplingStandardDto.builder().id(id).build())) + .isInstanceOf(DataDependencyException.class); + } +}