Skip to content

Commit 4b5375f

Browse files
authored
Merge pull request #389 from josdem/feature/377
[small]Feature/377
2 parents 2dde6d3 + 98aacd3 commit 4b5375f

File tree

6 files changed

+34
-12
lines changed

6 files changed

+34
-12
lines changed

build.gradle

+1-1
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ ext {
2424
}
2525

2626
group = 'com.josdem.vetlog'
27-
version = '1.9.4'
27+
version = '2.0.0'
2828

2929
configurations {
3030
compileOnly {

src/main/java/com/josdem/vetlog/controller/PetController.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import com.josdem.vetlog.command.PetCommand;
2121
import com.josdem.vetlog.enums.PetStatus;
2222
import com.josdem.vetlog.enums.PetType;
23+
import com.josdem.vetlog.enums.VaccinationStatus;
2324
import com.josdem.vetlog.model.User;
2425
import com.josdem.vetlog.service.BreedService;
2526
import com.josdem.vetlog.service.LocaleService;
@@ -182,7 +183,7 @@ public ModelAndView delete(@RequestParam("uuid") String uuid) {
182183
private ModelAndView fillPetAndImageUrl(ModelAndView modelAndView) {
183184
var user = userService.getCurrentUser();
184185
var pets = petService.getPetsByUser(user);
185-
pets.forEach(pet -> pet.setVaccines(vaccinationService.getVaccinationsByPet(pet)));
186+
pets.forEach(pet -> pet.setVaccines(vaccinationService.getVaccinesByStatus(pet, VaccinationStatus.PENDING)));
186187
modelAndView.addObject("pets", pets);
187188
modelAndView.addObject(GCP_IMAGE_URL, gcpUrl + imageBucket + "/");
188189
modelAndView.addObject("defaultImage", defaultImage);

src/main/java/com/josdem/vetlog/controller/VetController.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
package com.josdem.vetlog.controller;
1818

1919
import com.josdem.vetlog.command.UsernameCommand;
20+
import com.josdem.vetlog.enums.VaccinationStatus;
2021
import com.josdem.vetlog.service.PetService;
2122
import com.josdem.vetlog.service.UserService;
2223
import com.josdem.vetlog.service.VaccinationService;
@@ -63,7 +64,7 @@ ModelAndView search(@Valid UsernameCommand command) {
6364
var modelAndView = new ModelAndView("vet/list");
6465
var user = userService.getByUsername(command.getUsername());
6566
var pets = petService.getPetsByUser(user);
66-
pets.forEach(pet -> pet.setVaccines(vaccinationService.getVaccinationsByPet(pet)));
67+
pets.forEach(pet -> pet.setVaccines(vaccinationService.getVaccinesByStatus(pet, VaccinationStatus.PENDING)));
6768
modelAndView.addObject("pets", pets);
6869
modelAndView.addObject("gcpImageUrl", gcpUrl + imageBucket + "/");
6970
modelAndView.addObject("defaultImage", defaultImage);

src/main/java/com/josdem/vetlog/service/VaccinationService.java

+3
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616

1717
package com.josdem.vetlog.service;
1818

19+
import com.josdem.vetlog.enums.VaccinationStatus;
1920
import com.josdem.vetlog.model.Pet;
2021
import com.josdem.vetlog.model.Vaccination;
2122
import java.util.List;
@@ -24,4 +25,6 @@ public interface VaccinationService {
2425
void save(Pet pet);
2526

2627
List<Vaccination> getVaccinationsByPet(Pet pet);
28+
29+
List<Vaccination> getVaccinesByStatus(Pet pet, VaccinationStatus status);
2730
}

src/main/java/com/josdem/vetlog/service/impl/VaccinationServiceImpl.java

+8
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
package com.josdem.vetlog.service.impl;
1818

1919
import com.josdem.vetlog.enums.PetType;
20+
import com.josdem.vetlog.enums.VaccinationStatus;
2021
import com.josdem.vetlog.exception.BusinessException;
2122
import com.josdem.vetlog.model.Pet;
2223
import com.josdem.vetlog.model.Vaccination;
@@ -54,4 +55,11 @@ public void save(Pet pet) {
5455
public List<Vaccination> getVaccinationsByPet(Pet pet) {
5556
return vaccinationRepository.findAllByPet(pet);
5657
}
58+
59+
@Override
60+
public List<Vaccination> getVaccinesByStatus(Pet pet, VaccinationStatus status) {
61+
return getVaccinationsByPet(pet).stream()
62+
.filter(vaccination -> vaccination.getStatus().equals(status))
63+
.toList();
64+
}
5765
}

src/test/java/com/josdem/vetlog/service/VaccinationServiceTest.java

+18-9
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,13 @@
1616

1717
package com.josdem.vetlog.service;
1818

19+
import static org.junit.jupiter.api.Assertions.assertEquals;
1920
import static org.junit.jupiter.api.Assertions.assertThrows;
2021
import static org.mockito.ArgumentMatchers.any;
2122
import static org.mockito.Mockito.never;
2223
import static org.mockito.Mockito.times;
2324
import static org.mockito.Mockito.verify;
25+
import static org.mockito.Mockito.when;
2426

2527
import com.josdem.vetlog.enums.PetType;
2628
import com.josdem.vetlog.enums.VaccinationStatus;
@@ -36,6 +38,7 @@
3638
import java.time.LocalDate;
3739
import java.time.LocalDateTime;
3840
import java.util.HashMap;
41+
import java.util.List;
3942
import java.util.Map;
4043
import lombok.extern.slf4j.Slf4j;
4144
import org.junit.jupiter.api.BeforeEach;
@@ -55,22 +58,16 @@ class VaccinationServiceTest {
5558
@Mock
5659
private VaccinationRepository vaccinationRepository;
5760

58-
private DogVaccinationStrategy dogVaccinationStrategy;
59-
60-
private CatVaccinationStrategy catVaccinationStrategy;
61-
62-
private Map<PetType, VaccinationStrategy> vaccinationStrategies;
63-
6461
private final Pet pet = new Pet();
6562

6663
@BeforeEach
6764
void setup() {
6865
MockitoAnnotations.openMocks(this);
6966

70-
dogVaccinationStrategy = new DogVaccinationStrategy(vaccinationRepository);
71-
catVaccinationStrategy = new CatVaccinationStrategy(vaccinationRepository);
67+
DogVaccinationStrategy dogVaccinationStrategy = new DogVaccinationStrategy(vaccinationRepository);
68+
CatVaccinationStrategy catVaccinationStrategy = new CatVaccinationStrategy(vaccinationRepository);
7269

73-
vaccinationStrategies = new HashMap<>();
70+
Map<PetType, VaccinationStrategy> vaccinationStrategies = new HashMap<>();
7471
vaccinationStrategies.put(PetType.DOG, dogVaccinationStrategy);
7572
vaccinationStrategies.put(PetType.CAT, catVaccinationStrategy);
7673

@@ -108,4 +105,16 @@ void shouldNotSaveVaccinationDueToNotOldEnough(TestInfo testInfo) {
108105
verify(vaccinationRepository, never())
109106
.save(new Vaccination(null, any(), LocalDate.now(), VaccinationStatus.PENDING, pet));
110107
}
108+
109+
@Test
110+
@DisplayName("getting vaccines in Pending status")
111+
void shouldGetVaccinesInPendingStatus(TestInfo testInfo) {
112+
log.info("Test: {}", testInfo.getDisplayName());
113+
when(vaccinationRepository.findAllByPet(pet))
114+
.thenReturn(List.of(
115+
new Vaccination(1L, "DA2PP", LocalDate.now(), VaccinationStatus.PENDING, pet),
116+
new Vaccination(2L, "Deworming", LocalDate.now(), VaccinationStatus.APPLIED, pet)));
117+
final var vaccinesInPendingStatus = vaccinationService.getVaccinesByStatus(pet, VaccinationStatus.PENDING);
118+
assertEquals(1, vaccinesInPendingStatus.size());
119+
}
111120
}

0 commit comments

Comments
 (0)