package org.xmx0632.deliciousfruit.api.v1;
import static org.junit.Assert.assertEquals;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
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.FruitProductBo;
import org.xmx0632.deliciousfruit.api.v1.bo.GetProductsByCategoryRequest;
import org.xmx0632.deliciousfruit.api.v1.bo.GetProductsByCategoryResponse;
import org.xmx0632.deliciousfruit.api.v1.bo.Result;
import org.xmx0632.deliciousfruit.api.v1.bo.TerminalType;
import org.xmx0632.deliciousfruit.functional.BaseControllerTestCase;
public class FruitProductApiGetByCategoryTest extends BaseControllerTestCase {
private final RestTemplate restTemplate = new RestTemplate();
private static String url;
@BeforeClass
public static void initUrl() {
url = baseUrl + "/fruitproduct/getByCategory";
}
@Test
public void testFailNoId() throws Exception {
HttpHeaders requestHeaders = createHttpHeader("user2", "password");
GetProductsByCategoryRequest getProductsByCategoryRequest = new GetProductsByCategoryRequest();
getProductsByCategoryRequest.setTerminalType(TerminalType.IOS_RETINA
.name());
HttpEntity<GetProductsByCategoryRequest> entity = new HttpEntity<GetProductsByCategoryRequest>(
getProductsByCategoryRequest, requestHeaders);
GetProductsByCategoryResponse response = restTemplate.postForObject(
url, entity, GetProductsByCategoryResponse.class);
assertEquals(Result.FAIL, response.getResult().getValue());
assertEquals(Result.MSG_ERR_NO_ID, response.getResult().getMsg());
formatHttpInfoPrint(HttpMethod.POST, url, requestHeaders,
"通过分类获得水果产品, 失败. 原因: 没有分类ID",
jsonMapper.toJson(getProductsByCategoryRequest),
jsonMapper.toJson(response));
}
public void testFailNotValidId() throws Exception {
HttpHeaders requestHeaders = createHttpHeader("user2", "password");
GetProductsByCategoryRequest getProductsByCategoryRequest = new GetProductsByCategoryRequest();
getProductsByCategoryRequest.setFruitCategoryId("a");
getProductsByCategoryRequest.setTerminalType(TerminalType.IOS_RETINA
.name());
HttpEntity<GetProductsByCategoryRequest> entity = new HttpEntity<GetProductsByCategoryRequest>(
getProductsByCategoryRequest, requestHeaders);
GetProductsByCategoryResponse response = restTemplate.postForObject(
url, entity, GetProductsByCategoryResponse.class);
assertEquals(Result.FAIL, response.getResult().getValue());
assertEquals(Result.MSG_ERR_NOT_VALID_ID, response.getResult().getMsg());
formatHttpInfoPrint(HttpMethod.POST, url, requestHeaders,
"通过分类获得水果产品, 失败. 原因: 无效的分类ID",
jsonMapper.toJson(getProductsByCategoryRequest),
jsonMapper.toJson(response));
}
@Test
public void testGetByCategorySuccess() throws Exception {
HttpHeaders requestHeaders = createHttpHeader("user2", "password");
GetProductsByCategoryRequest getProductsByCategoryRequest = new GetProductsByCategoryRequest();
getProductsByCategoryRequest.setFruitCategoryId("C000001");
getProductsByCategoryRequest.setTerminalType(TerminalType.IOS_RETINA
.name());
HttpEntity<GetProductsByCategoryRequest> entity = new HttpEntity<GetProductsByCategoryRequest>(
getProductsByCategoryRequest, requestHeaders);
GetProductsByCategoryResponse response = restTemplate.postForObject(
url, entity, GetProductsByCategoryResponse.class);
assertEquals(Result.SUCCESS, response.getResult().getValue());
assertEquals(genSucessResFruitProducts().toString(), response
.getFruitProducts().toString());
formatHttpInfoPrint(HttpMethod.POST, url, requestHeaders,
"通过分类获得水果产品--水果分类ID, 成功",
jsonMapper.toJson(getProductsByCategoryRequest),
jsonMapper.toJson(response));
GetProductsByCategoryRequest getProductsByCategoryRequest2 = new GetProductsByCategoryRequest();
getProductsByCategoryRequest2.setFruitCategoryId("S001201");
getProductsByCategoryRequest2.setTerminalType(TerminalType.IOS_RETINA
.name());
HttpEntity<GetProductsByCategoryRequest> entity2 = new HttpEntity<GetProductsByCategoryRequest>(
getProductsByCategoryRequest2, requestHeaders);
GetProductsByCategoryResponse response2 = restTemplate.postForObject(
url, entity2, GetProductsByCategoryResponse.class);
assertEquals(Result.SUCCESS, response2.getResult().getValue());
assertEquals(genSucessResFruitProductsSub().toString(), response2
.getFruitProducts().toString());
formatHttpInfoPrint(HttpMethod.POST, url, requestHeaders,
"通过分类获得水果产品--水果分类子类ID, 成功",
jsonMapper.toJson(getProductsByCategoryRequest2),
jsonMapper.toJson(response2));
}
@Test
public void testFailNotValidTerminalType() throws Exception {
HttpHeaders requestHeaders = createHttpHeader("user2", "password");
GetProductsByCategoryRequest getProductsByCategoryRequest = new GetProductsByCategoryRequest();
getProductsByCategoryRequest.setFruitCategoryId("1");
getProductsByCategoryRequest.setTerminalType("ipad");
HttpEntity<GetProductsByCategoryRequest> entity = new HttpEntity<GetProductsByCategoryRequest>(
getProductsByCategoryRequest, requestHeaders);
GetProductsByCategoryResponse response = restTemplate.postForObject(
url, entity, GetProductsByCategoryResponse.class);
assertEquals(Result.FAIL, response.getResult().getValue());
assertEquals(Result.MSG_ERR_NOT_VALID_TERMINAL_TYPE, response
.getResult().getMsg());
formatHttpInfoPrint(HttpMethod.POST, url, requestHeaders,
"通过分类获得水果产品, 失败. 原因: 无效的终端类型",
jsonMapper.toJson(getProductsByCategoryRequest),
jsonMapper.toJson(response));
}
@Test
public void testFailNotExist() throws Exception {
HttpHeaders requestHeaders = createHttpHeader("user2", "password");
GetProductsByCategoryRequest getProductsByCategoryRequest = new GetProductsByCategoryRequest();
getProductsByCategoryRequest.setFruitCategoryId("9");
getProductsByCategoryRequest.setTerminalType(TerminalType.IOS_RETINA
.name());
HttpEntity<GetProductsByCategoryRequest> entity = new HttpEntity<GetProductsByCategoryRequest>(
getProductsByCategoryRequest, requestHeaders);
GetProductsByCategoryResponse response = restTemplate.postForObject(
url, entity, GetProductsByCategoryResponse.class);
assertEquals(Result.FAIL, response.getResult().getValue());
assertEquals(Result.MSG_ERR_NOT_EXIST, response.getResult().getMsg());
formatHttpInfoPrint(HttpMethod.POST, url, requestHeaders,
"通过分类获得水果产品, 失败. 原因: 水果分类不存在",
jsonMapper.toJson(getProductsByCategoryRequest),
jsonMapper.toJson(response));
}
private List<FruitProductBo> genSucessResFruitProducts() {
List<FruitProductBo> products = new ArrayList<FruitProductBo>();
FruitProductBo fruitProductBo1 = new FruitProductBo();
fruitProductBo1.setDescription("很红");
fruitProductBo1.setDescriptionPicUrl(pictureServerRootUrl
+ "/ios_retina/fruit_product/product_desc_1.jpg");
fruitProductBo1.setE6Price(new BigDecimal("10.00"));
fruitProductBo1.setExpirationDate("2013-06-30 00:00:00+0800");
fruitProductBo1.setFruitCategoryId("C000001");
fruitProductBo1.setIntroduction("好吃");
fruitProductBo1.setKeyword("红");
fruitProductBo1.setMarketPrice(new BigDecimal("20.00"));
fruitProductBo1.setMax(10);
fruitProductBo1.setMin(1);
fruitProductBo1.setPlace("新疆");
fruitProductBo1.setProductId("110101");
fruitProductBo1.setProductName("红苹果");
fruitProductBo1.setSpec("好红苹果");
fruitProductBo1.setUnit("个");
fruitProductBo1.setPicUrl(pictureServerRootUrl
+ "/ios_retina/fruit_product/product_1.jpg");
fruitProductBo1.setSeconddiscount(new BigDecimal("0.00"));
FruitProductBo fruitProductBo3 = new FruitProductBo();
fruitProductBo3.setDescription("最好");
fruitProductBo3.setDescriptionPicUrl(pictureServerRootUrl
+ "/ios_retina/fruit_product/product_desc_3.jpg");
fruitProductBo3.setE6Price(new BigDecimal("666.00"));
fruitProductBo3.setExpirationDate("2015-07-30 00:00:00+0800");
fruitProductBo3.setFruitCategoryId("C000001");
fruitProductBo3.setIntroduction("无敌好吃");
fruitProductBo3.setKeyword("烟台");
fruitProductBo3.setMarketPrice(new BigDecimal("888.00"));
fruitProductBo3.setMax(5);
fruitProductBo3.setMin(1);
fruitProductBo3.setPlace("烟台");
fruitProductBo3.setProductId("110103");
fruitProductBo3.setProductName("烟台苹果");
fruitProductBo3.setSpec("最好的苹果");
fruitProductBo3.setUnit("个");
fruitProductBo3.setPicUrl(pictureServerRootUrl
+ "/ios_retina/fruit_product/product_3.jpg");
fruitProductBo3.setSeconddiscount(new BigDecimal("0.00"));
products.add(fruitProductBo1);
products.add(fruitProductBo3);
return products;
}
private List<FruitProductBo> genSucessResFruitProductsSub() {
List<FruitProductBo> products = new ArrayList<FruitProductBo>();
FruitProductBo fruitProductBo1 = new FruitProductBo();
fruitProductBo1.setDescription("不错");
fruitProductBo1.setDescriptionPicUrl(pictureServerRootUrl
+ "/ios_retina/fruit_product/product_desc_4.jpg");
fruitProductBo1.setE6Price(new BigDecimal("20.00"));
fruitProductBo1.setExpirationDate("2014-07-30 00:00:00+0800");
fruitProductBo1.setFruitCategoryId("S001201");
fruitProductBo1.setIntroduction("很甜");
fruitProductBo1.setKeyword("甜");
fruitProductBo1.setMarketPrice(new BigDecimal("30.00"));
fruitProductBo1.setMax(5);
fruitProductBo1.setMin(1);
fruitProductBo1.setPlace("新疆");
fruitProductBo1.setProductId("120101");
fruitProductBo1.setProductName("新疆葡萄");
fruitProductBo1.setSpec("好葡萄");
fruitProductBo1.setUnit("串");
fruitProductBo1.setPicUrl(pictureServerRootUrl
+ "/ios_retina/fruit_product/product_4.jpg");
fruitProductBo1.setSeconddiscount(new BigDecimal("0.00"));
products.add(fruitProductBo1);
return products;
}
}