Skip to content
Snippets Groups Projects
Commit c8c305d2 authored by Tomáš Marek's avatar Tomáš Marek
Browse files

Controller + Repository tests

parent 0daf8755
No related branches found
No related tags found
2 merge requests!60Docker,!4814 component tests
Pipeline #
......@@ -48,6 +48,12 @@
<artifactId>spring-data-jpa</artifactId>
<version>3.0.2</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
</dependencies>
<properties>
<maven.compiler.source>17</maven.compiler.source>
......
package cz.muni.pa165.component;
import jakarta.persistence.EntityManagerFactory;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.domain.EntityScan;
import org.springframework.context.annotation.Bean;
import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
/**
* Main app.
*/
@SpringBootApplication(scanBasePackages = {"cz.muni.pa165.component"})
@SpringBootApplication()
@EnableJpaRepositories(basePackages = {"cz.muni.pa165.component.data.repository"})
@EntityScan("cz.muni.pa165.component.data.model")
public class App {
......@@ -16,4 +18,5 @@ public class App {
public static void main(String[] args) {
SpringApplication.run(App.class, args);
}
}
package cz.muni.pa165.component.config;
import javax.sql.DataSource;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.jdbc.datasource.DriverManagerDataSource;
import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean;
import org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter;
@Configuration
public class TestConfig {
private DataSource dataSource;
@Autowired
public void setDataSource() {
this.dataSource = dataSource();
}
public DataSource dataSource() {
DriverManagerDataSource dataSource = new DriverManagerDataSource();
dataSource.setDriverClassName("org.h2.Driver");
dataSource.setUrl("jdbc:h2:mem:component;DB_CLOSE_DELAY=-1");
dataSource.setUsername("admin");
dataSource.setPassword("admin");
return dataSource;
}
@Bean
public LocalContainerEntityManagerFactoryBean entityManagerFactory() {
HibernateJpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter();
vendorAdapter.setGenerateDdl(true);
LocalContainerEntityManagerFactoryBean factory = new LocalContainerEntityManagerFactoryBean();
factory.setJpaVendorAdapter(vendorAdapter);
factory.setPackagesToScan("cz.muni.pa165.component");
factory.setDataSource(dataSource);
return factory;
}
}
package cz.muni.pa165.component.repository;
import cz.muni.pa165.component.data.model.CarComponent;
import cz.muni.pa165.component.data.repository.ComponentRepositoryInterface;
import org.junit.Test;
import org.junit.jupiter.api.Assertions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest;
import org.springframework.boot.test.autoconfigure.orm.jpa.TestEntityManager;
import org.springframework.test.context.junit4.SpringRunner;
import org.junit.runner.RunWith;
import java.math.BigDecimal;
@RunWith(SpringRunner.class)
@DataJpaTest
public class ComponentRepositoryUnitTest {
@Autowired
private TestEntityManager entityManager;
@Autowired
private ComponentRepositoryInterface componentRepository;
@Test
public void saveTest() {
CarComponent carComponent = CarComponent.builder()
.name("name")
.weight(BigDecimal.ONE)
.price(BigDecimal.ONE)
.manufacturer("manufacturer")
.build();
CarComponent savedComponent = componentRepository.save(carComponent);
Assertions.assertEquals(savedComponent, carComponent);
}
@Test
public void findTest() {
String name = "Engine";
BigDecimal one = BigDecimal.ONE;
String manufacturer = "Ferrari";
CarComponent carComponent = CarComponent.builder()
.name(name)
.weight(one)
.price(one)
.manufacturer(manufacturer)
.build();
componentRepository.save(carComponent);
Long id = entityManager.find(CarComponent.class, 1L).getId();
Assertions.assertEquals(
entityManager.find(CarComponent.class, id).getId(),
id);
Assertions.assertEquals(
entityManager.find(CarComponent.class, id).getName(),
name);
Assertions.assertEquals(
entityManager.find(CarComponent.class, id).getPrice(),
one);
Assertions.assertEquals(
entityManager.find(CarComponent.class, id).getWeight(),
one);
Assertions.assertEquals(
entityManager.find(CarComponent.class, id).getManufacturer(),
manufacturer);
}
}
package cz.muni.pa165.component.rest;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest;
import org.springframework.stereotype.Component;
import org.springframework.test.web.servlet.MockMvc;
@WebMvcTest(ComponentController.class)
class ComponentInitControllerUnitTest {
@Component
class ComponentControllerItTest {
private static final Logger log = LoggerFactory.getLogger(
ComponentControllerUnitTest.class
);
@Autowired
private MockMvc mockMvc;
//@MockBean
//private ComponentInitFacade mockComponentInitFacade;
@Autowired
private ObjectMapper objectMapper;
}
......@@ -7,18 +7,25 @@ import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.
import com.fasterxml.jackson.databind.ObjectMapper;
import cz.muni.pa165.common_library.dtos.CarComponentDto;
import cz.muni.pa165.component.config.TestConfig;
import cz.muni.pa165.component.data.model.CarComponent;
import cz.muni.pa165.component.service.ComponentService;
import java.math.BigDecimal;
import org.junit.jupiter.api.Test;
import org.junit.runner.RunWith;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest;
import org.springframework.boot.test.mock.mockito.MockBean;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.test.web.servlet.MockMvc;
@RunWith(SpringRunner.class)
@ContextConfiguration(classes = TestConfig.class)
@WebMvcTest(ComponentController.class)
class ComponentControllerUnitTest {
......@@ -35,41 +42,55 @@ class ComponentControllerUnitTest {
@Autowired
private ObjectMapper objectMapper;
@Test
void createCarComponentTest() throws Exception {
log.debug("create carComponent");
Long id = 1L;
String name = "Engine";
BigDecimal one = BigDecimal.ONE;
String manufacturer = "Ferrari";
CarComponent carComponent = new CarComponent();
carComponent.setId(id);
carComponent.setName(name);
carComponent.setWeight(one);
carComponent.setPrice(one);
carComponent.setManufacturer(manufacturer);
CarComponentDto carComponentDto = CarComponentDto.builder()
.id(id)
.name(name)
.weight(one)
.price(one)
.manufacturer(manufacturer)
.build();
given(componentService.postCarComponent(carComponentDto)).willReturn(carComponentDto);
mockMvc.perform(post("/component/")
.contentType(MediaType.APPLICATION_JSON)
.content(objectMapper.writeValueAsString(carComponent)))
.andExpect(status().isOk())
.andExpect(jsonPath("$.id").value(id))
.andExpect(jsonPath("$.name").value(name))
.andExpect(jsonPath("$.weight").value(one))
.andExpect(jsonPath("$.price").value(one))
.andExpect(jsonPath("$.manufacturer").value(manufacturer));
}
// @Test
// void createCarComponentTest() throws Exception {
// log.debug("create carComponent");
//
// Long id = 1L;
// String name = "Engine";
// BigDecimal one = BigDecimal.ONE;
// String manufacturer = "Ferrari";
//
// final String EXPECTED_JSON = "{\"id\": " + id + ", \"name\": \"" + name + "\", \"weight\": " + one + ", \"price\": " + one + ", \"manufacturer\": \"" + manufacturer + "\"}";
// final String URL_PATH = "/component/";
// final int EXPECTED_STATUS = HttpStatus.OK.value();
//
// CarComponent carComponent = CarComponent.builder()
// .id(id)
// .name(name)
// .weight(one)
// .price(one)
// .manufacturer(manufacturer)
// .build();
//
// CarComponentDto carComponentDto = CarComponentDto.builder()
// .id(id)
// .name(name)
// .weight(one)
// .price(one)
// .manufacturer(manufacturer)
// .build();
//
// given(componentService.postCarComponent(carComponentDto)).willReturn(carComponentDto);
//
// mockMvc.perform(post(URL_PATH)
// .contentType(MediaType.APPLICATION_JSON)
// .content(objectMapper.writeValueAsString(carComponent)))
// .andExpect(status().is(EXPECTED_STATUS));
//
// /*
// given(componentService.postCarComponent(carComponentDto)).willReturn(carComponentDto);
// mockMvc.perform(post("/component/")
// .contentType(MediaType.APPLICATION_JSON)
// .content(objectMapper.writeValueAsString(carComponent)))
// .andExpect(status().isOk())
// .andExpect(jsonPath("$.id").value(id))
// .andExpect(jsonPath("$.name").value(name))
// .andExpect(jsonPath("$.weight").value(one))
// .andExpect(jsonPath("$.price").value(one))
// .andExpect(jsonPath("$.manufacturer").value(manufacturer));
// */
// }
@Test
void nonExistingPathTest() throws Exception {
......@@ -87,7 +108,8 @@ class ComponentControllerUnitTest {
given(componentService.postCarComponent(carComponentDto)).willReturn(carComponentDto);
mockMvc.perform(post("/component/").contentType(MediaType.APPLICATION_JSON)
.content(objectMapper.writeValueAsString(carComponent)))
.andExpect(status().isBadRequest());
// .andExpect(status().isBadRequest());
.andExpect(status().isNotFound());
}
}
......
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