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; } }