diff --git a/eatgo-api/src/main/java/com/example/eatgo/domain/RestaurantRepository.java b/eatgo-api/src/main/java/com/example/eatgo/domain/RestaurantRepository.java index 0c00e69d..04ce7ecb 100644 --- a/eatgo-api/src/main/java/com/example/eatgo/domain/RestaurantRepository.java +++ b/eatgo-api/src/main/java/com/example/eatgo/domain/RestaurantRepository.java @@ -1,24 +1,9 @@ package com.example.eatgo.domain; -import org.springframework.stereotype.Repository; - -import java.util.ArrayList; import java.util.List; -public class RestaurantRepository { +public interface RestaurantRepository { + List findAll(); - private List restaurantList = new ArrayList<>(); - - public RestaurantRepository() { - restaurantList.add(new Restaurant(1004L, "Bob zip", "Seoul")); - restaurantList.add(new Restaurant(2020L, "Cyber Food", "Seoul")); - } - - public List findAll() { - return restaurantList; - } - - public Restaurant findById(Long id) { - return restaurantList.stream().filter(v -> v.getId().equals(id)).findFirst().orElse(null) ; - } + Restaurant findById(Long id); } diff --git a/eatgo-api/src/main/java/com/example/eatgo/domain/RestaurantRepositoryImpl.java b/eatgo-api/src/main/java/com/example/eatgo/domain/RestaurantRepositoryImpl.java new file mode 100644 index 00000000..2a6207c0 --- /dev/null +++ b/eatgo-api/src/main/java/com/example/eatgo/domain/RestaurantRepositoryImpl.java @@ -0,0 +1,27 @@ +package com.example.eatgo.domain; + +import org.springframework.stereotype.Repository; + +import java.util.ArrayList; +import java.util.List; + +@Repository +public class RestaurantRepositoryImpl implements RestaurantRepository { + + private List restaurantList = new ArrayList<>(); + + public RestaurantRepositoryImpl() { + restaurantList.add(new Restaurant(1004L, "Bob zip", "Seoul")); + restaurantList.add(new Restaurant(2020L, "Cyber Food", "Seoul")); + } + + @Override + public List findAll() { + return restaurantList; + } + + @Override + public Restaurant findById(Long id) { + return restaurantList.stream().filter(v -> v.getId().equals(id)).findFirst().orElse(null) ; + } +} diff --git a/eatgo-api/src/main/java/com/example/eatgo/interfaces/RestaurantController.java b/eatgo-api/src/main/java/com/example/eatgo/interfaces/RestaurantController.java index 2cc768ea..990cb1e4 100644 --- a/eatgo-api/src/main/java/com/example/eatgo/interfaces/RestaurantController.java +++ b/eatgo-api/src/main/java/com/example/eatgo/interfaces/RestaurantController.java @@ -2,18 +2,19 @@ package com.example.eatgo.interfaces; import com.example.eatgo.domain.Restaurant; import com.example.eatgo.domain.RestaurantRepository; +import com.example.eatgo.domain.RestaurantRepositoryImpl; +import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RestController; -import java.util.ArrayList; import java.util.List; -import java.util.Scanner; @RestController +@RequiredArgsConstructor public class RestaurantController { - private final RestaurantRepository repository = new RestaurantRepository(); + private final RestaurantRepository repository; @GetMapping("/restaurants") public List list() { diff --git a/eatgo-api/src/test/java/com/example/eatgo/interfaces/RestaurantControllerTest.java b/eatgo-api/src/test/java/com/example/eatgo/interfaces/RestaurantControllerTest.java index 5740430b..1a0ca455 100644 --- a/eatgo-api/src/test/java/com/example/eatgo/interfaces/RestaurantControllerTest.java +++ b/eatgo-api/src/test/java/com/example/eatgo/interfaces/RestaurantControllerTest.java @@ -1,10 +1,13 @@ package com.example.eatgo.interfaces; +import com.example.eatgo.domain.RestaurantRepository; +import com.example.eatgo.domain.RestaurantRepositoryImpl; import org.hamcrest.core.StringContains; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest; +import org.springframework.boot.test.mock.mockito.SpyBean; import org.springframework.test.context.junit.jupiter.SpringExtension; import org.springframework.test.web.servlet.MockMvc; @@ -16,9 +19,12 @@ import static org.springframework.test.web.servlet.result.MockMvcResultMatchers. @WebMvcTest(RestaurantController.class) class RestaurantControllerTest { - @Autowired + @ Autowired private MockMvc mvc; + @SpyBean(RestaurantRepositoryImpl.class) + private RestaurantRepository restaurantRepository; + @Test public void list() throws Exception { mvc.perform(get("/restaurants"))