Skip to content

Instantly share code, notes, and snippets.

View atesibrahim's full-sized avatar

Ibrahim Ates atesibrahim

View GitHub Profile
@RestController
@RequestMapping("/products")
@RequiredArgsConstructor
public class ProductController {
private final ProductService productService;
@PostMapping
public ProductDispenseResponse dispense(@Valid @RequestBody ProductRequest productRequest) {
return productService.dispense(productRequest);
@ExtendWith(SpringExtension.class)
class ProductControllerTest {
@InjectMocks
private ProductController productController;
@Mock
private ProductService productService;
private MockMvc mockMvc;
@ExtendWith(SpringExtension.class)
class ProductServiceImplTest {
@InjectMocks
private ProductServiceImpl productService;
@Mock
private ProductRepository productRepository;
@Mock
@Service
public class ProductServiceImpl implements ProductService {
@Autowired
ProductRepository productRepository;
@Autowired
CoinAmount coinAmount;
@Override
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
@Repository
public interface ProductRepository extends JpaRepository<Product, Integer> {
@Transactional
@Modifying
@Query(value = "update product " +
"set name = :name " +
"where id = :productId", nativeQuery = true)
void updateName(@Param("productId") Integer productId, @Param("name") String name);
}
@ExtendWith(SpringExtension.class)
public class ProductRepositoryTest {
@Autowired
private ProductRepository productRepository;
@Autowired
private TestEntityManager testEntityManager;
@Test
@Test
public void it_should_save_number_when_flag_is_true() {
//Given
ArgumentCaptor<Product> productArgumentCaptor = ArgumentCaptor.forClass(Product.class);
Product product = Product.builder().isFlag(true).build();
//When
productService.save(product);
//Then
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<scope>test</scope>
</dependency>
@Test
public void it_should_test_when_product_id_is_valid() throws Exception {
//given
ProductRequest productRequest = ProductRequest.builder().id(1).build();
ArgumentCaptor<ProductRequest> argumentCaptor = ArgumentCaptor.forClass(ProductRequest.class);
//when
ResultActions result = mockMvc.perform(post("/products")
.content(objectMapper.writeValueAsString(productRequest))
.contentType(MediaType.APPLICATION_JSON));
//then