package org.xmx0632.deliciousfruit.api.v1;
import static org.junit.Assert.assertEquals;
import org.junit.BeforeClass;
import org.junit.Test;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpMethod;
import org.springframework.web.client.RestTemplate;
import org.xmx0632.deliciousfruit.api.v1.bo.FruitStoryBo;
import org.xmx0632.deliciousfruit.api.v1.bo.FruitStoryMaterialBo;
import org.xmx0632.deliciousfruit.api.v1.bo.FruitStoryMenuBo;
import org.xmx0632.deliciousfruit.api.v1.bo.FruitStoryProcedureBo;
import org.xmx0632.deliciousfruit.api.v1.bo.FruitStoryRequest;
import org.xmx0632.deliciousfruit.api.v1.bo.FruitStoryResponse;
import org.xmx0632.deliciousfruit.api.v1.bo.Result;
import org.xmx0632.deliciousfruit.api.v1.bo.TerminalType;
import org.xmx0632.deliciousfruit.functional.BaseControllerTestCase;
public class FruitSroryApiControllerGetOneByIdTest extends
BaseControllerTestCase {
private final RestTemplate restTemplate = new RestTemplate();
private static String url;
@BeforeClass
public static void initUrl() {
url = baseUrl + "/fruitstory/getbyid";
}
@Test
public void testGetOneByIdSuccess() throws Exception {
HttpHeaders requestHeaders = createHttpHeader("user2", "password");
FruitStoryRequest fruitStoryRequest = new FruitStoryRequest();
fruitStoryRequest.setId("1");
fruitStoryRequest.setTerminalType(TerminalType.IOS_NORMAL.name());
HttpEntity<FruitStoryRequest> entity = new HttpEntity<FruitStoryRequest>(
fruitStoryRequest, requestHeaders);
FruitStoryResponse response = restTemplate.postForObject(url, entity,
FruitStoryResponse.class);
assertEquals("0", response.getResult().getValue());
assertEquals(genSucessResFruitStory().toString(), response
.getFruitStory().toString());
formatHttpInfoPrint(HttpMethod.POST, url, requestHeaders,
"获得单个水果故事,成功", jsonMapper.toJson(fruitStoryRequest),
jsonMapper.toJson(response));
}
@Test
public void testFailNoId() throws Exception {
HttpHeaders requestHeaders = createHttpHeader("user2", "password");
FruitStoryRequest fruitStoryRequest = new FruitStoryRequest();
fruitStoryRequest.setId("");
fruitStoryRequest.setTerminalType(TerminalType.IOS_NORMAL.name());
HttpEntity<FruitStoryRequest> entity = new HttpEntity<FruitStoryRequest>(
fruitStoryRequest, requestHeaders);
FruitStoryResponse response = restTemplate.postForObject(url, entity,
FruitStoryResponse.class);
assertEquals("1", response.getResult().getValue());
assertEquals(Result.MSG_ERR_NO_ID, response.getResult().getMsg());
formatHttpInfoPrint(HttpMethod.POST, url, requestHeaders,
"获得单个水果故事,失败,原因:没有水果故事ID",
jsonMapper.toJson(fruitStoryRequest),
jsonMapper.toJson(response));
}
@Test
public void testFailNotValidId() throws Exception {
HttpHeaders requestHeaders = createHttpHeader("user2", "password");
FruitStoryRequest fruitStoryRequest = new FruitStoryRequest();
fruitStoryRequest.setId("aaa");
fruitStoryRequest.setTerminalType(TerminalType.IOS_NORMAL.name());
HttpEntity<FruitStoryRequest> entity = new HttpEntity<FruitStoryRequest>(
fruitStoryRequest, requestHeaders);
FruitStoryResponse response = restTemplate.postForObject(url, entity,
FruitStoryResponse.class);
assertEquals("1", response.getResult().getValue());
assertEquals(Result.MSG_ERR_NOT_VALID_ID, response.getResult().getMsg());
formatHttpInfoPrint(HttpMethod.POST, url, requestHeaders,
"获得单个水果故事,失败,原因:无效的水果故事ID",
jsonMapper.toJson(fruitStoryRequest),
jsonMapper.toJson(response));
}
@Test
public void testFailNotValidTerminalType() throws Exception {
HttpHeaders requestHeaders = createHttpHeader("user2", "password");
FruitStoryRequest fruitStoryRequest = new FruitStoryRequest();
fruitStoryRequest.setId("1");
fruitStoryRequest.setTerminalType("ios");
HttpEntity<FruitStoryRequest> entity = new HttpEntity<FruitStoryRequest>(
fruitStoryRequest, requestHeaders);
FruitStoryResponse response = restTemplate.postForObject(url, entity,
FruitStoryResponse.class);
assertEquals("1", response.getResult().getValue());
assertEquals(Result.MSG_ERR_NOT_VALID_TERMINAL_TYPE, response
.getResult().getMsg());
formatHttpInfoPrint(HttpMethod.POST, url, requestHeaders,
"获得单个水果故事,失败,原因:无效的终端类型", jsonMapper.toJson(fruitStoryRequest),
jsonMapper.toJson(response));
}
@Test
public void testFailNotExist() throws Exception {
HttpHeaders requestHeaders = createHttpHeader("user2", "password");
FruitStoryRequest fruitStoryRequest = new FruitStoryRequest();
fruitStoryRequest.setId("6");
fruitStoryRequest.setTerminalType(TerminalType.IOS_RETINA.name());
HttpEntity<FruitStoryRequest> entity = new HttpEntity<FruitStoryRequest>(
fruitStoryRequest, requestHeaders);
FruitStoryResponse response = restTemplate.postForObject(url, entity,
FruitStoryResponse.class);
assertEquals("1", response.getResult().getValue());
assertEquals(Result.MSG_ERR_NOT_EXIST, response.getResult().getMsg());
formatHttpInfoPrint(HttpMethod.POST, url, requestHeaders,
"获得单个水果故事,失败,原因:水果故事不存在", jsonMapper.toJson(fruitStoryRequest),
jsonMapper.toJson(response));
}
@Test
public void testFailNotOnline() throws Exception {
HttpHeaders requestHeaders = createHttpHeader("user2", "password");
FruitStoryRequest fruitStoryRequest = new FruitStoryRequest();
fruitStoryRequest.setId("2");
fruitStoryRequest.setTerminalType(TerminalType.IOS_RETINA.name());
HttpEntity<FruitStoryRequest> entity = new HttpEntity<FruitStoryRequest>(
fruitStoryRequest, requestHeaders);
FruitStoryResponse response = restTemplate.postForObject(url, entity,
FruitStoryResponse.class);
assertEquals("1", response.getResult().getValue());
assertEquals(Result.MSG_ERR_STORY_NOT_ONLINE, response.getResult()
.getMsg());
formatHttpInfoPrint(HttpMethod.POST, url, requestHeaders,
"获得单个水果故事,失败,原因:水果故事不是上线状态",
jsonMapper.toJson(fruitStoryRequest),
jsonMapper.toJson(response));
}
private FruitStoryBo genSucessResFruitStory() {
FruitStoryBo fruitStoryBo = new FruitStoryBo(Long.valueOf("1"),
"水果故事1", "这是一个上线水果故事", pictureServerRootUrl
+ "/ios_normal/fruit_story/1.png");
FruitStoryMenuBo fruitStoryMenu = new FruitStoryMenuBo("10001",
"第一个果谱,味道鲜美,清爽可口,实在是居家旅行杀人越货的必备良品客官快来尝尝.", pictureServerRootUrl
+ "/ios_normal/fruit_menu/1.png");
fruitStoryBo.setFruitStoryMenu(fruitStoryMenu);
fruitStoryMenu.getMaterials().add(new FruitStoryMaterialBo("苹果", "2个"));
fruitStoryMenu.getMaterials()
.add(new FruitStoryMaterialBo("猕猴桃", "3个"));
fruitStoryMenu.getProcedures().add(
new FruitStoryProcedureBo("苹果去皮,切块", pictureServerRootUrl
+ "/ios_normal/fruit_procedure/1.jpg"));
fruitStoryMenu.getProcedures().add(
new FruitStoryProcedureBo("猕猴桃去皮,榨汁", pictureServerRootUrl
+ "/ios_normal/fruit_procedure/2.jpg"));
return fruitStoryBo;
}
}