Browse Source

throw not found if code is not found

Daniel Bohry 1 năm trước cách đây
mục cha
commit
793318066e

+ 9 - 6
src/main/java/com/danielbohry/stocks/repository/StockRepository.java

@@ -2,6 +2,7 @@ package com.danielbohry.stocks.repository;
 
 import com.danielbohry.stocks.client.StockClient;
 import com.danielbohry.stocks.domain.Quote;
+import com.danielbohry.stocks.exception.NotFoundException;
 import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
 import com.fasterxml.jackson.annotation.JsonProperty;
 import feign.FeignException;
@@ -32,23 +33,25 @@ public class StockRepository {
         this.key = key;
     }
 
-    public List<Quote> findAll() {
-        return repository.findAll();
-    }
-
     public List<Quote> findLike(String query) {
         return repository.findByNameContaining(query);
     }
 
     public Quote findByCode(String code) {
-        Optional<Quote> quote = repository.findLatestByCode(code).stream().findFirst();
-        return quote.orElseGet(() -> repository.save(getStockQuote(code)));
+//        Optional<Quote> quote = repository.findLatestByCode(code).stream().findFirst();
+//        return quote.orElseGet(() -> repository.save(getStockQuote(code)));
+        return repository.findLatestByCode(code).stream().findFirst()
+                .orElseThrow(() -> new NotFoundException("No stock found"));
     }
 
     public List<Quote> update(List<Quote> quote) {
         return repository.saveAll(quote);
     }
 
+    public void deleteAll() {
+        repository.deleteAll();
+    }
+
     public boolean isValid(String code) {
         Quote quote = repository.findLatestByCode(code).stream().findFirst().orElse(null);
 

+ 31 - 0
src/test/java/service/StockServiceTest.java

@@ -0,0 +1,31 @@
+package service;
+
+import com.danielbohry.stocks.App;
+import com.danielbohry.stocks.repository.StockRepository;
+import com.danielbohry.stocks.service.StockService;
+import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.BeforeEach;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.context.ContextConfiguration;
+
+@SpringBootTest
+@ContextConfiguration(classes = {App.class})
+public class StockServiceTest {
+
+    @Autowired
+    private StockRepository repository;
+
+    private StockService service;
+
+    @BeforeEach
+    public void setup() {
+        service = new StockService(repository);
+    }
+
+    @AfterEach
+    public void teardown() {
+        repository.deleteAll();
+    }
+
+}