package sample.controller;
import static org.mockito.BDDMockito.*;
import java.util.*;
import org.junit.Test;
import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest;
import org.springframework.boot.test.mock.mockito.MockBean;
import sample.WebTestSupport;
import sample.model.asset.CashInOut;
import sample.model.asset.CashInOut.RegCashOut;
import sample.usecase.AssetService;
/**
* AssetController の単体検証です。
* <p>low: 簡易な正常系検証が中心
*/
@WebMvcTest(AssetController.class)
public class AssetControllerTest extends WebTestSupport {
@MockBean
private AssetService service;
@Override
protected String prefix() {
return "/api/asset";
}
@Test
public void 未処理の振込依頼情報を検索します() {
given(service.findUnprocessedCashOut()).willReturn(resultCashOuts());
performGet("/cio/unprocessedOut/",
JsonExpects.success()
.match("$[0].currency", "JPY")
.match("$[0].absAmount", 3000)
.match("$[1].absAmount", 4000));
}
private List<CashInOut> resultCashOuts() {
return Arrays.asList(
fixtures.cio("sample", "3000", true),
fixtures.cio("sample", "4000", true));
}
@Test
public void 振込出金依頼をします() {
given(service.withdraw(any(RegCashOut.class))).willReturn(1L);
performPost(
uriBuilder("/cio/withdraw")
.queryParam("accountId", "sample")
.queryParam("currency", "JPY")
.queryParam("absAmount", "1000")
.build(),
JsonExpects.success()
);
}
}