spring boot test husky
@DataJpaTest public class KundeRepositoryTest { @Autowired private KundeRepository kundeRepository; @Test void findBestellungByKundeId(){ Kunde kunde = new Kunde(); kunde.setId(1L); kunde.setVorname("Max"); kunde.setNachname("Mustermann"); kunde.setEmail("maxmustermann@gmail.com"); kunde.setAlter(39); Bestellung b1 = new Bestellung(); b1.setId(1L); b1.setBestelldatum("28-05-2025"); b1.setBetrag(10.0); b1.setKunde(kunde); Bestellung b2 = new Bestellung(); b1.setId(2L); b2.setBestelldatum("30-05-2025"); b2.setBetrag(20.0); b2.setKunde(kunde); kunde.setBestellungList(List.of(b1,b2)); kundeRepository.save(kunde); List bestellungs = kundeRepository.findBestellungenByKundeId(kunde.getId()); assertEquals(2, bestellungs.size()); } @ExtendWith(MockitoExtension.class) public class KundeServiceTest { @Mock private KundeRepository kundeRepository; private KundeCriteriaRepository kundeCriteriaRepository; @InjectMocks private KundeService kundeService; @Test void testGetAllKunde() { List kundeList = List.of( new Kunde(1L, "Anna", "Meier", 28, "anna@example.com", null), new Kunde(2L, "Tom", "Muster", 38, "tom@example.com", null) ); when(kundeRepository.findAll()).thenReturn(kundeList); List result = kundeService.getAllKunde(); assertEquals(2, result.size()); assertEquals("Anna", result.get(0).vorname()); } @Test void testAddKunde() { Bestellung bestellung = new Bestellung(); KundeDto dto = new KundeDto(null, "Lisa", "Huber", "lisa@example.com", 30, List.of(bestellung)); Kunde gespeicherterKunde = new Kunde(1L, "Lisa", "Huber", 30, "lisa@example.com", List.of(bestellung)); when(kundeRepository.save(org.mockito.ArgumentMatchers.any(Kunde.class))).thenReturn(gespeicherterKunde); Kunde result = kundeService.addKunde(dto); assertEquals("Lisa", result.getVorname()); } @Test void testGetKundeById() { Kunde kunde = new Kunde(1L, "Max", "Muster", 40, "max@example.com", null); when(kundeRepository.findById(1L)).thenReturn(java.util.Optional.of(kunde)); KundeDto dto = kundeService.getKundeById(1L); assertEquals("Max", dto.vorname()); assertEquals("Muster", dto.nachname()); assertEquals(40, dto.alter()); assertEquals(null, dto.email()); } @Test void testGetKundeByCriteria() { Kunde kunde = new Kunde(1L, "Sarah", "Winter", 25, "sarah@example.com", null); when(kundeCriteriaRepository.getKundeByCriteria(org.mockito.ArgumentMatchers.any())) .thenReturn(List.of(kunde)); KundeDto criteria = new KundeDto(null, "Sarah", "Winter", "sarah@example.com", 25, null); List result = kundeService.getKundeByCriteria(criteria); assertEquals(1, result.size()); } } @WebMvcTest(controllers = KundeController.class) @AutoConfigureMockMvc(addFilters = false) public class KundeControllerTest { @Autowired private MockMvc mockMvc; @MockBean private KundeService kundeService; @Autowired private ObjectMapper objectMapper; @Test void getAllKunde() throws Exception{ KundeDto kundeDto = new KundeDto(1L, "Tibor", "Focu", null, 45, null); KundeDto kundeDto2 = new KundeDto(2L, "Lady", "Gaga", null, 43, null); List kundeDtoList = Arrays.asList(kundeDto, kundeDto2); when(kundeService.getAllKunde()).thenReturn(kundeDtoList); ResultActions result = mockMvc.perform(get("/kunde") .contentType(MediaType.APPLICATION_JSON)); result.andExpect(status().isOk()) .andExpect(jsonPath("$[0].vorname", CoreMatchers.is("Tibor"))) .andExpect(jsonPath("$[1].vorname", CoreMatchers.is("Lady"))); } } @Repository public class KundeCriteriaRepository { @Autowired private EntityManager entityManager; public List getKundeByCriteria(Kunde kunde){ CriteriaBuilder criteriaBuilder = entityManager.getCriteriaBuilder(); CriteriaQuery criteriaQuery = criteriaBuilder.createQuery(Kunde.class); Root kundeRoot = criteriaQuery.from(Kunde.class); Predicate vornamePredicate = criteriaBuilder.like(kundeRoot.get("vorname"), kunde.getVorname()); Predicate nachnamePredicate = criteriaBuilder.like(kundeRoot.get("nachname"), kunde.getNachname()); Predicate alterPredicate = criteriaBuilder.equal(kundeRoot.get("alter"), kunde.getAlter()); Predicate vornameAndAlterPredicate = criteriaBuilder.and(vornamePredicate, alterPredicate); Predicate nachnameAndAlterPredicate = criteriaBuilder.and(nachnamePredicate, alterPredicate); Predicate orPredicate = criteriaBuilder.or(vo

@DataJpaTest
public class KundeRepositoryTest {
@Autowired
private KundeRepository kundeRepository;
@Test
void findBestellungByKundeId(){
Kunde kunde = new Kunde();
kunde.setId(1L);
kunde.setVorname("Max");
kunde.setNachname("Mustermann");
kunde.setEmail("maxmustermann@gmail.com");
kunde.setAlter(39);
Bestellung b1 = new Bestellung();
b1.setId(1L);
b1.setBestelldatum("28-05-2025");
b1.setBetrag(10.0);
b1.setKunde(kunde);
Bestellung b2 = new Bestellung();
b1.setId(2L);
b2.setBestelldatum("30-05-2025");
b2.setBetrag(20.0);
b2.setKunde(kunde);
kunde.setBestellungList(List.of(b1,b2));
kundeRepository.save(kunde);
List bestellungs = kundeRepository.findBestellungenByKundeId(kunde.getId());
assertEquals(2, bestellungs.size());
}
@ExtendWith(MockitoExtension.class)
public class KundeServiceTest {
@Mock
private KundeRepository kundeRepository;
private KundeCriteriaRepository kundeCriteriaRepository;
@InjectMocks
private KundeService kundeService;
@Test
void testGetAllKunde() {
List kundeList = List.of(
new Kunde(1L, "Anna", "Meier", 28, "anna@example.com", null),
new Kunde(2L, "Tom", "Muster", 38, "tom@example.com", null)
);
when(kundeRepository.findAll()).thenReturn(kundeList);
List result = kundeService.getAllKunde();
assertEquals(2, result.size());
assertEquals("Anna", result.get(0).vorname());
}
@Test
void testAddKunde() {
Bestellung bestellung = new Bestellung();
KundeDto dto = new KundeDto(null, "Lisa", "Huber", "lisa@example.com", 30, List.of(bestellung));
Kunde gespeicherterKunde = new Kunde(1L, "Lisa", "Huber", 30, "lisa@example.com", List.of(bestellung));
when(kundeRepository.save(org.mockito.ArgumentMatchers.any(Kunde.class))).thenReturn(gespeicherterKunde);
Kunde result = kundeService.addKunde(dto);
assertEquals("Lisa", result.getVorname());
}
@Test
void testGetKundeById() {
Kunde kunde = new Kunde(1L, "Max", "Muster", 40, "max@example.com", null);
when(kundeRepository.findById(1L)).thenReturn(java.util.Optional.of(kunde));
KundeDto dto = kundeService.getKundeById(1L);
assertEquals("Max", dto.vorname());
assertEquals("Muster", dto.nachname());
assertEquals(40, dto.alter());
assertEquals(null, dto.email());
}
@Test
void testGetKundeByCriteria() {
Kunde kunde = new Kunde(1L, "Sarah", "Winter", 25, "sarah@example.com", null);
when(kundeCriteriaRepository.getKundeByCriteria(org.mockito.ArgumentMatchers.any()))
.thenReturn(List.of(kunde));
KundeDto criteria = new KundeDto(null, "Sarah", "Winter", "sarah@example.com", 25, null);
List result = kundeService.getKundeByCriteria(criteria);
assertEquals(1, result.size());
}
}
@WebMvcTest(controllers = KundeController.class)
@AutoConfigureMockMvc(addFilters = false)
public class KundeControllerTest {
@Autowired
private MockMvc mockMvc;
@MockBean
private KundeService kundeService;
@Autowired
private ObjectMapper objectMapper;
@Test
void getAllKunde() throws Exception{
KundeDto kundeDto = new KundeDto(1L, "Tibor", "Focu", null, 45, null);
KundeDto kundeDto2 = new KundeDto(2L, "Lady", "Gaga", null, 43, null);
List kundeDtoList = Arrays.asList(kundeDto, kundeDto2);
when(kundeService.getAllKunde()).thenReturn(kundeDtoList);
ResultActions result = mockMvc.perform(get("/kunde")
.contentType(MediaType.APPLICATION_JSON));
result.andExpect(status().isOk())
.andExpect(jsonPath("$[0].vorname", CoreMatchers.is("Tibor")))
.andExpect(jsonPath("$[1].vorname", CoreMatchers.is("Lady")));
}
}
@Repository
public class KundeCriteriaRepository {
@Autowired
private EntityManager entityManager;
public List getKundeByCriteria(Kunde kunde){
CriteriaBuilder criteriaBuilder = entityManager.getCriteriaBuilder();
CriteriaQuery criteriaQuery = criteriaBuilder.createQuery(Kunde.class);
Root kundeRoot = criteriaQuery.from(Kunde.class);
Predicate vornamePredicate = criteriaBuilder.like(kundeRoot.get("vorname"), kunde.getVorname());
Predicate nachnamePredicate = criteriaBuilder.like(kundeRoot.get("nachname"), kunde.getNachname());
Predicate alterPredicate = criteriaBuilder.equal(kundeRoot.get("alter"), kunde.getAlter());
Predicate vornameAndAlterPredicate = criteriaBuilder.and(vornamePredicate, alterPredicate);
Predicate nachnameAndAlterPredicate = criteriaBuilder.and(nachnamePredicate, alterPredicate);
Predicate orPredicate = criteriaBuilder.or(vornameAndAlterPredicate, nachnameAndAlterPredicate);
criteriaQuery.where(orPredicate);
return entityManager.createQuery(criteriaQuery).getResultList();
}
}