package org.xmx0632.deliciousfruit.api.v1; import static org.junit.Assert.assertEquals; import java.math.BigDecimal; 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.PromotionRuleRequest; import org.xmx0632.deliciousfruit.api.v1.bo.PromotionRuleResponse; import org.xmx0632.deliciousfruit.api.v1.bo.PromotionRuleResponse.PromotionProductBo; import org.xmx0632.deliciousfruit.api.v1.bo.PromotionRuleResponse.PromotionRuleBo; import org.xmx0632.deliciousfruit.api.v1.bo.PromotionRuleResponse.PromotionTotalBo; import org.xmx0632.deliciousfruit.api.v1.bo.Result; import org.xmx0632.deliciousfruit.api.v1.bo.TerminalType; import org.xmx0632.deliciousfruit.functional.BaseControllerTestCase; public class PromotionRuleApiControllerGetAllTest extends BaseControllerTestCase { private final RestTemplate restTemplate = new RestTemplate(); private static String url; @BeforeClass public static void initUrl() { url = baseUrl + "/promotion/getAll"; } @Test public void testGetAllSuccess() throws Exception { HttpHeaders requestHeaders = createHttpHeader("user2", "password1"); PromotionRuleRequest promotionRuleRequest = new PromotionRuleRequest(); promotionRuleRequest.setTerminalType(TerminalType.IOS_RETINA.name()); HttpEntity<PromotionRuleRequest> entity = new HttpEntity<PromotionRuleRequest>( promotionRuleRequest, requestHeaders); PromotionRuleResponse response = restTemplate.postForObject(url, entity, PromotionRuleResponse.class); assertEquals(Result.SUCCESS, response.getResult().getValue()); assertEquals(getSuccessRules().toString(), response.getPromotionRules() .toString()); formatHttpInfoPrint(HttpMethod.POST, url, requestHeaders, "获得所有促销规则, 成功", jsonMapper.toJson(promotionRuleRequest), jsonMapper.toJson(response)); } @Test public void testFailNotValidTerminalType() throws Exception { HttpHeaders requestHeaders = createHttpHeader("user2", "password"); PromotionRuleRequest promotionRuleRequest = new PromotionRuleRequest(); promotionRuleRequest.setTerminalType("windows8"); HttpEntity<PromotionRuleRequest> entity = new HttpEntity<PromotionRuleRequest>( promotionRuleRequest, requestHeaders); PromotionRuleResponse response = restTemplate.postForObject(url, entity, PromotionRuleResponse.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(promotionRuleRequest), jsonMapper.toJson(response)); } private PromotionRuleBo getSuccessRules() { PromotionRuleBo promotionRules = new PromotionRuleBo(); PromotionTotalBo totalPriceoff = new PromotionTotalBo(); totalPriceoff.setContent("全场满1000.00元立减200.00元"); totalPriceoff.setEndTime("2014-06-27 16:00:00+0800"); totalPriceoff.setPicUrl("http://localhost/ios_retina/2.png"); totalPriceoff.setPromotionId("2"); totalPriceoff.setStartTime("2013-01-31 16:00:00+0800"); PromotionTotalBo totalGift = new PromotionTotalBo(); totalGift.setContent("全场满300.00元送新疆葡萄1串"); totalGift.setEndTime("2014-10-30 16:00:00+0800"); totalGift.setPicUrl("http://localhost/ios_retina/1.png"); totalGift.setPromotionId("1"); totalGift.setStartTime("2012-12-31 16:00:00+0800"); promotionRules.getPromotionsTotal().add(totalGift); promotionRules.getPromotionsTotal().add(totalPriceoff); PromotionProductBo productGift = new PromotionProductBo(); productGift.setContent("买红苹果30箱送烟台苹果1个"); productGift.setEndTime("2014-06-27 16:00:00+0800"); productGift.setPicUrl("http://localhost/ios_retina/3.png"); productGift.setProductId("110601"); productGift.setPromotionId("3"); productGift.setStartTime("2013-01-31 16:00:00+0800"); productGift.setProductType("1"); productGift.setProductName("红苹果"); productGift.setE6Price(new BigDecimal("10.00")); productGift.setUnit("个"); promotionRules.getPromotionsProduct().add(productGift); return promotionRules; } }