From 5948cceaf8fc86d75e34b85d241cbb08e828b3d0 Mon Sep 17 00:00:00 2001
From: EuichanJeong <dmlcks5791@ajou.ac.kr>
Date: Wed, 2 Apr 2025 16:16:46 +0900
Subject: [PATCH] add test

---
 .../demo/repository/ItemRepository.java       |   7 ++
 .../demo/repository/ItemRepositoryTest.java   | 100 +++++++++++++++---
 2 files changed, 94 insertions(+), 13 deletions(-)

diff --git a/src/main/java/com/example/demo/repository/ItemRepository.java b/src/main/java/com/example/demo/repository/ItemRepository.java
index 01bcca8..8767608 100644
--- a/src/main/java/com/example/demo/repository/ItemRepository.java
+++ b/src/main/java/com/example/demo/repository/ItemRepository.java
@@ -11,5 +11,12 @@ import com.example.demo.entity.Item;
 
 // @NoRepositoryBean
 public interface ItemRepository extends JpaRepository<Item, Long>{
+    List<Item> findByItemNm(String itemNm);
+    List<Item> findByItemNmOrItemDetail(String itemNm, String itemDetail);
+    List<Item> findByPriceLessThan(Integer price);
+    List<Item> findByPriceLessThanOrderByPriceDesc(Integer price);
     
+    @Query("select i from Item i where i.itemDetail like %:itemDetail% order by i.price desc")
+    List<Item> findByItemDetail(@Param("itemDetail") String itemDetail);
+
 }
diff --git a/src/test/java/com/example/demo/repository/ItemRepositoryTest.java b/src/test/java/com/example/demo/repository/ItemRepositoryTest.java
index 0000ba4..6b56585 100644
--- a/src/test/java/com/example/demo/repository/ItemRepositoryTest.java
+++ b/src/test/java/com/example/demo/repository/ItemRepositoryTest.java
@@ -6,6 +6,8 @@ import org.springframework.boot.test.context.SpringBootTest;
 import org.springframework.test.context.TestPropertySource;
 import com.example.demo.entity.Item;
 import com.example.demo.entity.QItem;
+
+//import com.example.demo.entity.QItem;
 import org.junit.jupiter.api.DisplayName;
 import java.time.LocalDateTime;
 import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
@@ -26,20 +28,92 @@ public class ItemRepositoryTest {
     @Autowired
     ItemRepository itemRepository;
 
+    @PersistenceContext
+    EntityManager em;
+
+    public void createItemList(){
+
+        for (int i = 0; i <= 10; i++)
+        {
+            Item item = new Item();
+            item.setItemNm(("테스트 상품") + i);
+            item.setPrice(10000 + i);
+            item.setItemDetail("테스트 상품 상세 설명" + i);
+            item.setItemSellStatus(ItemSellStatus.SELL);
+            item.setStockNumber(100);
+            item.setRegTime(LocalDateTime.now());
+            item.setUpdateTime(LocalDateTime.now());            
+            Item savedItem = itemRepository.save(item);
+        }
+    }
+
+    @Test
+    @DisplayName("상품명 조회 테스트")
+    public void findByItemNmTest() {
+        this.createItemList();
+        List<Item> itemList = itemRepository.findByItemNm("테스트 상품1");
+        for (Item item : itemList) {
+            System.out.println(item.toString());
+        }
+    }
+
+    @Test
+    @DisplayName("상품명, 상품상세 설명 OR 테스트")
+    public void findByItemNmOrItemDetailTest() {
+        this.createItemList();
+        List<Item> itemList = itemRepository.findByItemNmOrItemDetail("테스트 상품1", "테스트 상품 상세 설명5");
+        for (Item item : itemList) {
+            System.out.println(item.toString());
+        }
+    }
+
     @Test
-    @DisplayName("상품 저장 테스트")
-    public void createItemTest(){
-        Item item = new Item();
-        item.setItemNm("테스트 상품");
-        item.setPrice(100000);
-        item.setItemDetail("테스트 상품 상세 설명");
-        item.setStockNumber(100);
-        item.setRegTime(LocalDateTime.now());
-        item.setUpdateTime(LocalDateTime.now());
-        
-        Item savedItem = itemRepository.save(item);
-        System.out.println(savedItem.toString());
+    @DisplayName("가격 LessThan 테스트")
+    public void findByPriceLessThanTest() {
+        this.createItemList();
+        List<Item> itemList = itemRepository.findByPriceLessThan(10005);
+        for (Item item : itemList) {
+            System.out.println(item.toString());
+        }
+    }
+
+    @Test
+    @DisplayName("가격 내람차순 조회 테스트")
+    public void findByPriceLessThanOrderByPriceDesc() {
+        this.createItemList();
+        List<Item> itemList =  itemRepository.findByPriceLessThanOrderByPriceDesc(10005);
+        for (Item item : itemList) {
+            System.out.println(item.toString());
+        }
+    }
+
+    @Test
+    @DisplayName("@Query를 이용한 상품 조회 테스트")
+    public void findByItemDetailTest(){
+        this.createItemList();
+        List<Item> itemList = itemRepository.findByItemDetail("테스트 상품 상세 설명");
+        for(Item item : itemList){
+            System.out.println(item.toString());
+        }
+    }
+
+    @Test
+    @DisplayName("Querydsl 조회테스트1")
+    public void queryDslTest(){
+        this.createItemList();
+        JPAQueryFactory queryFactory = new JPAQueryFactory(em);
+        QItem qItem = QItem.item;
+        JPAQuery<Item> query = queryFactory.selectFrom(qItem)
+                .where(qItem.itemSellStatus.eq(ItemSellStatus.SELL))
+                .where(qItem.itemDetail.like("%" + "테스트 상품 상세 설명" + "%"))
+                .orderBy(qItem.price.desc());
+
+        List<Item> itemList = query.fetch();
+
+        for(Item item : itemList){
+            System.out.println(item.toString());
+        }
+
     }
 
-      
 }
-- 
GitLab