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