forked from vilelaricardo/mandacarubroker
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
feat: routes for buy and sell stocks (#54)
Co-authored-by: Izaias Machado <[email protected]>
- Loading branch information
1 parent
cc774b8
commit df5f1cd
Showing
6 changed files
with
385 additions
and
88 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
114 changes: 114 additions & 0 deletions
114
src/test/java/com/mandacarubroker/controller/PortfolioControllerIT.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,114 @@ | ||
package com.mandacarubroker.controller; | ||
|
||
import com.fasterxml.jackson.databind.ObjectMapper; | ||
import com.mandacarubroker.domain.auth.RequestAuthUserDTO; | ||
import com.mandacarubroker.domain.auth.ResponseAuthUserDTO; | ||
import com.mandacarubroker.domain.position.RequestStockOwnershipDTO; | ||
import com.mandacarubroker.domain.stock.ResponseStockDTO; | ||
import com.mandacarubroker.domain.user.RequestUserDTO; | ||
import com.mandacarubroker.domain.user.User; | ||
import com.mandacarubroker.service.AuthService; | ||
import com.mandacarubroker.service.PortfolioService; | ||
import com.mandacarubroker.service.StockService; | ||
import org.junit.jupiter.api.AfterEach; | ||
import org.junit.jupiter.api.BeforeEach; | ||
import org.junit.jupiter.api.Test; | ||
import org.springframework.beans.factory.annotation.Autowired; | ||
import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc; | ||
import org.springframework.boot.test.context.SpringBootTest; | ||
import org.springframework.boot.test.mock.mockito.MockBean; | ||
import org.springframework.test.web.servlet.MockMvc; | ||
import org.springframework.test.web.servlet.RequestBuilder; | ||
import org.springframework.test.web.servlet.ResultMatcher; | ||
import java.time.LocalDate; | ||
import java.util.Optional; | ||
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post; | ||
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; | ||
|
||
@SpringBootTest | ||
@AutoConfigureMockMvc() | ||
public class PortfolioControllerIT { | ||
|
||
@MockBean | ||
private PortfolioService portfolioService; | ||
|
||
@Autowired | ||
private MockMvc mockMvc; | ||
|
||
@Autowired | ||
private ObjectMapper objectMapper; | ||
|
||
@Autowired | ||
private StockService stockService; | ||
|
||
@Autowired | ||
private AuthService authService; | ||
|
||
private final RequestUserDTO validRequestUserDTO = new RequestUserDTO( | ||
"[email protected]", | ||
"Marcos22", | ||
"passmarco123", | ||
"Marcos", | ||
"Loiola", | ||
LocalDate.of(2002, 2, 26), | ||
0.25); | ||
private final User validUser = new User(validRequestUserDTO); | ||
private ResponseStockDTO stockToOperate; | ||
private final RequestStockOwnershipDTO shares = new RequestStockOwnershipDTO(2); | ||
private String urlRequestToBuyStock; | ||
private String notFoundStockUrlRequestToBuyStock; | ||
private String urlRequestToSellStock; | ||
|
||
private RequestAuthUserDTO validRequestAuthUserDTO; | ||
|
||
@BeforeEach | ||
void setUp() { | ||
validRequestAuthUserDTO = new RequestAuthUserDTO( | ||
"admin", | ||
"admin" | ||
); | ||
stockToOperate = stockService.getAllStocks().get(0); | ||
|
||
urlRequestToBuyStock = "/portfolio/stock/" + stockToOperate.id() + "/buy"; | ||
urlRequestToSellStock = "/portfolio/stock/" + stockToOperate.id() + "/sell"; | ||
} | ||
|
||
@AfterEach | ||
void tearDown() { | ||
|
||
} | ||
|
||
|
||
@Test | ||
void itShouldReturnOkStatusAfterSucessfulBuyStock() throws Exception{ | ||
|
||
Optional<ResponseAuthUserDTO> user = authService.login(validRequestAuthUserDTO); | ||
String token = user.get().token(); | ||
String sharesJsonString = objectMapper.writeValueAsString(shares); | ||
|
||
RequestBuilder requestBuilder = post(urlRequestToBuyStock) | ||
.contentType("application/json") | ||
.header("Authorization", token) | ||
.content(sharesJsonString); | ||
ResultMatcher matchStatus = status().isOk(); | ||
|
||
mockMvc.perform(requestBuilder).andExpect(matchStatus); | ||
} | ||
|
||
@Test | ||
void itShouldReturnOkStatusAfterSucessfulSellStock() throws Exception{ | ||
|
||
Optional<ResponseAuthUserDTO> user = authService.login(validRequestAuthUserDTO); | ||
String token = user.get().token(); | ||
String sharesJsonString = objectMapper.writeValueAsString(shares); | ||
|
||
RequestBuilder requestBuilder = post(urlRequestToSellStock) | ||
.contentType("application/json") | ||
.header("Authorization", token) | ||
.content(sharesJsonString); | ||
ResultMatcher matchStatus = status().isOk(); | ||
|
||
mockMvc.perform(requestBuilder).andExpect(matchStatus); | ||
} | ||
|
||
} |
Oops, something went wrong.