diff --git a/src/test/java/ntnu/idatt2016/v233/SmartMat/repository/ProductRepositoryTest.java b/src/test/java/ntnu/idatt2016/v233/SmartMat/repository/ProductRepositoryTest.java new file mode 100644 index 0000000000000000000000000000000000000000..86a120ff7fa094f9bd8fd08dc78161a1b63430b9 --- /dev/null +++ b/src/test/java/ntnu/idatt2016/v233/SmartMat/repository/ProductRepositoryTest.java @@ -0,0 +1,89 @@ +package ntnu.idatt2016.v233.SmartMat.repository; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertTrue; + +import java.util.List; +import java.util.Optional; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; +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 ntnu.idatt2016.v233.SmartMat.entity.product.Product; + +@DataJpaTest +public class ProductRepositoryTest { + + @Autowired + private ProductRepository productRepository; + + @Autowired + private TestEntityManager entityManager; + + private Product product; + + @BeforeEach + public void setUp() { + product = Product.builder() + .ean(1234567890123L) + .name("Test Product") + .description("This is a test product") + .category_name("TestCategory") + .build(); + entityManager.persist(product); + } + + @Test + @DisplayName("Test getProductByName") + public void testGetProductByName() { + Optional<Product> foundProduct = productRepository.getByName(product.getName()); + assertTrue(foundProduct.isPresent()); + assertEquals(product.getName(), foundProduct.get().getName()); + } + + @Test + @DisplayName("Test getProductByNameNotFound") + public void testGetProductByNameNotFound() { + Optional<Product> foundProduct = productRepository.getByName("Nonexistent Product"); + assertFalse(foundProduct.isPresent()); + } + + @Test + @DisplayName("Test getAllProducts") + public void testGetAllProducts() { + List<Product> products = productRepository.findAll(); + assertNotNull(products); + assertEquals(1, products.size()); + } + + @Test + @DisplayName("Test saveProduct") + public void testSaveProduct() { + Product newProduct = Product.builder() + .ean(1234567890124L) + .name("New Product") + .description("This is a new product") + .category_name("TestCategory") + .build(); + productRepository.save(newProduct); + List<Product> products = productRepository.findAll(); + assertNotNull(products); + assertEquals(2, products.size()); + } + + @Test + @DisplayName("Test deleteProduct") + public void testDeleteProduct() { + productRepository.delete(product); + List<Product> products = productRepository.findAll(); + assertNotNull(products); + assertEquals(0, products.size()); + } + +}