Skip to content
Snippets Groups Projects
Commit 7abf48a2 authored by Blersch Lara's avatar Blersch Lara
Browse files

implemented WishListServiceTest; not finished yet

parent 2d3dcd5b
No related branches found
No related tags found
1 merge request!51Wishlist unittests
Checking pipeline status
...@@ -9,7 +9,6 @@ import org.junit.jupiter.api.Test; ...@@ -9,7 +9,6 @@ import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest; import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest;
import org.springframework.boot.test.autoconfigure.orm.jpa.TestEntityManager; import org.springframework.boot.test.autoconfigure.orm.jpa.TestEntityManager;
import org.springframework.security.web.access.channel.RetryWithHttpEntryPoint;
import org.springframework.test.context.ActiveProfiles; import org.springframework.test.context.ActiveProfiles;
import java.util.List; import java.util.List;
......
package hdm.mi.growbros.service;
import hdm.mi.growbros.config.UserTestData;
import hdm.mi.growbros.exceptions.PlantNotFoundException;
import hdm.mi.growbros.models.WishListEntry;
import hdm.mi.growbros.models.plant.Plant;
import hdm.mi.growbros.models.user.Role;
import hdm.mi.growbros.models.user.User;
import hdm.mi.growbros.repositories.PlantRepository;
import hdm.mi.growbros.repositories.WishListRepository;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.orm.jpa.TestEntityManager;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.boot.test.mock.mockito.MockBean;
import org.springframework.data.domain.Sort;
import org.springframework.test.context.ActiveProfiles;
import java.util.List;
import java.util.Optional;
import static org.junit.jupiter.api.Assertions.*;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.when;
@SpringBootTest
@ActiveProfiles("test")
public class WishListServiceTest {
@MockBean
private WishListRepository wishListRepository;
@MockBean
private PlantRepository plantRepository;
@Autowired
private WishListService wishListService;
@MockBean
private TestEntityManager entityManager;
private User user1;
@BeforeEach
void setupEach() {
user1 = User.builder()
.email("user1@gmail.com")
.role(Role.USER)
.password("safePassword123!")
.build();
entityManager.persist(user1);
}
@Test
void shouldThrow_whenAddingPlant_thatDoesNotExist() {
//setup
when(plantRepository.findById(100L)).thenReturn(Optional.empty());
assertThrows(PlantNotFoundException.class, () -> wishListService.addPlantToWishList(100L, UserTestData.getUser1()));
}
@Test
void shouldReturn_whenAddingExistingPlant() {
//setup
Plant plant = Plant.builder().name("Plant!").build();
when(plantRepository.findById(1L)).thenReturn(Optional.of(plant));
/*when(wishListRepository.save(
any(WishListEntry.class))
).thenReturn(WishListEntry.builder().plant(plant).build());
*/
//assert
wishListService.addPlantToWishList(1L, user1);
assertEquals(1, wishListService.countByUser(user1));
}
@Test
void shouldReturnEntries_inCorrectOrder() {
//setup
Plant p1 = Plant.builder().name("AAA").build();
Plant p2 = Plant.builder().name("BBB").build();
Plant p3 = Plant.builder().name("CCC").build();
var orderedByNameMock = List.of(p1, p2, p3);
var orderedByCreatedMock = List.of(p2, p1, p3);
var orderedByPlantDateMock = List.of(p3, p2, p1);
//var orderedByCurrentPlantDateMock = List.of();
User user = UserTestData.getUser1();
when(wishListRepository.findByUser(user, Sort.by("createdAt").descending())).thenReturn(mapPlantsToWishListEntries(orderedByCreatedMock, user));
when(wishListRepository.findByUser(user, Sort.by("plant.name"))).thenReturn(mapPlantsToWishListEntries(orderedByNameMock, user));
when(wishListRepository.findAllByNearestPlantingWeek(eq(user), any(int.class))).thenReturn(mapPlantsToWishListEntries(orderedByPlantDateMock, user));
assertAll(
() -> assertEquals(orderedByNameMock, wishListService.getWishedPlants(user, null)),
() -> assertEquals(orderedByNameMock, wishListService.getWishedPlants(user, "random stuff")),
() -> assertEquals(orderedByCreatedMock, wishListService.getWishedPlants(user, "createdAt")),
() -> assertEquals(orderedByPlantDateMock, wishListService.getWishedPlants(user, "plantDate"))
);
}
private List<WishListEntry> mapPlantsToWishListEntries(List<Plant> plants, User user) {
return plants.stream()
.map(plant -> WishListEntry.builder().plant(plant).id(0L).user(user).build())
.toList();
}
}
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment