Commit a1cb1e67 by yangfangfang

Merge remote-tracking branch 'origin/master'

parents 8c502b01 c6b75dfd
......@@ -188,7 +188,7 @@ public class TestAddMemberReserve extends BaseTestImpl {
ruldId = XMJSONPath.readPath(getGroupRuleScheduleList.getJSONObject(0), "$.ruleId");
Long scheduleEndTime = TimeUtils.getTodayEndTime(1);
try {
Thread.sleep(2500);
Thread.sleep(5000);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
......
......@@ -181,6 +181,11 @@ public class TestAddToQueue extends BaseTestImpl {
reserveCTools.cancelMemberReserve(memberInfo.getString(2),memberInfo.getString(0),true);
// 取消验证课次详情、预约记录、预约详情、B端预约详情内容
checkResult("QUEUE_CANCEL", "QUEUE_CANCEL","取消排队");
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
break;
case "notQueue":
// 预约规则开启允许排队
......@@ -208,7 +213,7 @@ public class TestAddToQueue extends BaseTestImpl {
ruleTools.saveGroupBookingRules(id,true,bookingSeatCount,true,true,random.nextInt(30)+10,false,random.nextInt(100)+10,random.nextInt(5)+1,false,random.nextInt(100)+10,"minutes",false,random.nextInt(100)+10,"minutes");
try {
Thread.sleep(1000);
Thread.sleep(5000);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
......@@ -217,7 +222,7 @@ public class TestAddToQueue extends BaseTestImpl {
memberInfo.set(2,reserveId); //将原来的id替换成新的id
try {
Thread.sleep(1000);
Thread.sleep(5000);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
......
......@@ -39,7 +39,7 @@ public class TestEditStudioAdmin extends BaseTestImpl {
@Test
public void testEditStudioAdmin() {
String body = "{\"size\":10,\"current\":0,\"state\":\"DUTY\"}";
String body = "{\"size\":10,\"current\":0}";
JSONObject adminPage = adminTools.pageStudioAdmin(body);
int total = Integer.parseInt(adminPage.getJSONObject("result").getString("total"));
if (total>1){
......
......@@ -105,6 +105,59 @@ public class CouponTools extends BaseTestImpl {
}
/**
* 创建用于营销活动的优惠券
* @param useThresholdType:"WITHOUT"无门槛,"THRESHOLD"达到条件可用
* @param couponName
* @param allScope 全部商品可用true,指定商品可用false
* @param userInfos
* @return
*/
public String createStudioCoupon(String useThresholdType, String couponName, Boolean allScope,DataUserInfo...userInfos) {
setUP("API_createCoupon",userInfos);
String[] memberStatusLimits = {"POTENTIAL", "NORMAL", "HISTORY"};
JSONObject receiveCondition = new JSONObject();
receiveCondition.put("receiveTimesUpperType","WITHOUT");//每人领取次数不限制
receiveCondition.put("memberStatusLimits",memberStatusLimits);//可领取会员类型
JSONObject body = new JSONObject();
body.put("useThresholdType", useThresholdType);
if (useThresholdType.equals("THRESHOLD")) {//使用门槛是达到条件可用
body.put("useThreshold", 10);//目前没写成动态传参,固定为10元
}
body.put("useForActivity", true);//开启营销活动开关
body.put("quantityLimit", false);//若为true,则填写quantity
body.put("receiveCondition", receiveCondition);
body.put("name",couponName);
body.put("validPeriodType", "RELATIVE");//有效期:领取后生效
body.put("validPeriodStartTime",null);
body.put("validPeriodEndTime",null);
body.put("relativeDay","30");//领取30天内有效
body.put("memo", "自动化脚本生成用于营销活动的优惠券");
body.put("quantity","-1");//发放数量不限制
body.put("brandId", dataApi.getLoginInfo().getBrandId());
body.put("studioId", dataApi.getLoginInfo().getStudioId());
body.put("operatorId", dataApi.getLoginInfo().getAdminId());
body.put("allScope",allScope);//全部可用
if(allScope.equals(false)){
String[] scope = {"MEMBER_CARD", "TRAINING_CAMP", "SINGLE_RESERVE", "EXPERIENCE_CARD"};//指定会员卡、体验卡、训练营、单次约课
body.put("scope",scope);//指定商品范围
body.put("preferentialType","DISCOUNT");//打折
body.put("preferential",8.8);//打8.8折
}else{
body.put("preferentialType","CERTAIN");
body.put("preferential",10);//直减10元
}
dataApi.doRequest(RequestType.JSON, dataparams, body.toString(), dataheadrs);
Assert.assertTrue(Boolean.valueOf(XMJSONPath.readPath(dataApi.getApi_response(),"$.success"))==true,"调用接口返回结果:"+XMJSONPath.readPath(dataApi.getApi_response(),"$.message"));
return XMJSONPath.readPath(dataApi.getApi_response(), "$.result");
}
/**
* 查看优惠券列表
* @param nameLike 全局搜索中 根据优惠券名称搜索
* @param status 列表中根据优惠券状态搜索
......@@ -236,8 +289,8 @@ public class CouponTools extends BaseTestImpl {
* 作废会员已领取/已发放的优惠券
* @param recordId 对应的记录ID
*/
public void abandonMembercouponReceiveRecord(String recordId){
setUP("API_abandonMembercouponReceiveRecord");
public void abandonMembercouponReceiveRecord(String recordId,DataUserInfo...userInfo){
setUP("API_abandonMembercouponReceiveRecord",userInfo);
JSONObject body = new JSONObject();
body.put("operatorId", dataApi.getLoginInfo().getAdminId());
body.put("studioId", dataApi.getLoginInfo().getStudioId());
......@@ -248,6 +301,29 @@ public class CouponTools extends BaseTestImpl {
}
/**
* 会员名下的优惠券
* @param receiverId
* @param status
* @param userInfo
* @return
*/
public JSONObject pageMemberReceivedCoupon(String receiverId,String status,DataUserInfo...userInfo){
setUP("API_pageMemberReceivedCoupon",userInfo);
JSONObject body = new JSONObject();
body.put("current", 0);
body.put("receiverId", receiverId);
body.put("size", 20);
body.put("status", status);
body.put("operatorId", dataApi.getLoginInfo().getAdminId());
body.put("studioId", dataApi.getLoginInfo().getStudioId());
body.put("brandId", dataApi.getLoginInfo().getBrandId());
dataApi.doRequest(RequestType.JSON, dataparams, body.toString(), dataheadrs);
Assert.assertTrue(Boolean.valueOf(XMJSONPath.readPath(dataApi.getApi_response(),"$.success"))==true,"调用接口返回结果:"+XMJSONPath.readPath(dataApi.getApi_response(),"$.message"));
return dataApi.getBodyInJSON();
}
}
\ No newline at end of file
......@@ -11,6 +11,8 @@ import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
/**
* @BelongsProject: xm-sportstest
......@@ -32,21 +34,36 @@ public class TestGetValidBalanceList extends BaseTestImpl {
}
@Test
public void testGetValidBalanceList(){
public void testGetValidBalanceList() {
JSONObject body = new JSONObject();
body.put("tenantId",xmAppApi.getLoginInfo().getStudioId());
body.put("brandId",xmAppApi.getLoginInfo().getBrandId());
body.put("studioId",xmAppApi.getLoginInfo().getStudioId());
body.put("operatorId",xmAppApi.getLoginInfo().getAdminId());
body.put("tenantId", xmAppApi.getLoginInfo().getStudioId());
body.put("brandId", xmAppApi.getLoginInfo().getBrandId());
body.put("studioId", xmAppApi.getLoginInfo().getStudioId());
body.put("operatorId", xmAppApi.getLoginInfo().getAdminId());
xmAppApi.doRequest(RequestType.JSON,params,body.toString(),headers).assetsSuccess(true);
Assert.assertTrue(xmAppApi.getBodyInJSON().getJSONArray("result").size()>0,"获取租户有效余额记录失败");
xmAppApi.doRequest(RequestType.JSON, params, body.toString(), headers).assetsSuccess(true);
Assert.assertTrue(xmAppApi.getBodyInJSON().getJSONArray("result").size() > 0, "获取租户有效余额记录失败");
// 和充值记录的数据对比
String[] keys = {"id","tenantId","productCode","purchaseAmount","startTime","endTime","payChannel"};
for (int i = 0; i < keys.length; i++){
Assert.assertEquals(xmAppApi.getBodyInJSON().getJSONArray("result").getJSONObject(0).getString(keys[i]),eleContractTools.getBalanceList().getJSONObject(0).getString(keys[i]),"获取租户有效余额记录与充值记录列表内容对比");
String[] keys = {"id", "tenantId", "productCode", "purchaseAmount", "startTime", "endTime", "payChannel"};
int total = xmAppApi.getBodyInJSON().getJSONArray("result").size();
List<JSONObject> list1 = new ArrayList<>();
List<JSONObject> list2 = new ArrayList<>();
for (int i = 0; i < total; i++) {
list1.add(eleContractTools.getBalanceList().getJSONObject(i));
list2.add(xmAppApi.getBodyInJSON().getJSONArray("result").getJSONObject(i));
}
}
int flag = 1;
for (int i = 0; i < total; i++) {
for (int j = 0; j < keys.length; j++) {
String expected = list1.get(i).getString(keys[j]);
String actual = list2.get(total - flag).getString(keys[j]);
Assert.assertEquals(actual, expected, "获取租户有效余额记录与充值记录列表内容对比");
}
flag++;
}
}
}
......@@ -81,6 +81,8 @@ public class TestUpdateExperienceCard extends XMBaseTest {
object.put("operatorId", dataApi.getLoginInfo().getAdminId());
object.put("creatorId", dataApi.getLoginInfo().getAdminId());
object.put("maxIdlePeriod", "7");//首次使用生效方式的最晚生效天数
object.put("useForActivity", "false");//不开启用于营销活动
object.put("surfaceCornerMark", "自动化测试");//封面标签
object.put("title", title);
object.put("validPeriod", "10");//有效期
......
......@@ -173,6 +173,8 @@ public class Tools extends XMBaseTest {
object.put("maxIdlePeriod", "7");//首次使用生效方式的最晚生效天数
object.put("surfaceCornerMark", "自动化测试");//封面标签
object.put("title", title);
object.put("useForActivity", false);//不开启用于营销活动
object.put("validPeriod", "30");//有效期
object.put("activatePatternList", activatePatternList);//生效方式
object.put("price", price);//售价
......
package com.xiaomai.cases.polar.luckyDraw;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.xiaomai.basetest.BaseTestImpl;
import com.xiaomai.client.DataUserInfo;
import com.xiaomai.enums.ApiModule;
import com.xiaomai.enums.RequestType;
import com.xiaomai.enums.Terminal;
import com.xiaomai.utils.TimeUtils;
import org.springframework.stereotype.Component;
@Component("luckyDrawTools")
public class LuckyDrawTools extends BaseTestImpl {
/**
* 查看幸运抽奖列表
* @param name 全局搜索中 根据活动名称搜索
*/
public JSONObject getLuckyDrawByPage(String name,DataUserInfo... userInfo){
dataApi.setApiModule(ApiModule.Polar_LuckyDraw)
.setApiName("API_getLuckyDrawByPage")
.setTerminal(Terminal.B);
super.beforeDataRequest(userInfo);
JSONObject body = new JSONObject();
body.put("operatorId", dataApi.getLoginInfo().getAdminId());
body.put("studioId", dataApi.getLoginInfo().getStudioId());
body.put("brandId", dataApi.getLoginInfo().getBrandId());
body.put("current",0);
body.put("size",10);
if (null != name || !name.isEmpty()) {
body.put("name", name);
}
// if (null != status || !status.isEmpty()) {
// body.put("status", status);
// }
dataApi.doRequest(RequestType.JSON, dataparams, body.toString(), dataheadrs).assetsSuccess(true);
return dataApi.getBodyInJSON();
}
/**
* 查看优惠券列表
* @param nameLike 全局搜索中 根据优惠券名称搜索
*/
public JSONObject getStudioCouponList(String nameLike,DataUserInfo...userInfo){
dataApi.setApiModule(ApiModule.Polar_Coupon)
.setApiName("API_getStudioCouponList")
.setTerminal(Terminal.B);
super.beforeDataRequest(userInfo);
JSONObject body = new JSONObject();
body.put("status","CLAIMABLE");//可领取的优惠券
body.put("useForActivity",true);//是否开启用于营销活动
body.put("current",0);
body.put("size",20);
body.put("operatorId", dataApi.getLoginInfo().getAdminId());
body.put("studioId", dataApi.getLoginInfo().getStudioId());
body.put("brandId", dataApi.getLoginInfo().getBrandId());
if (null != nameLike || !nameLike.isEmpty()) {
body.put("nameLike", nameLike);
}
dataApi.doRequest(RequestType.JSON, dataparams, body.toString(), dataheadrs).assetsSuccess(true);
return dataApi.getBodyInJSON();
}
/**
* 查询用于营销活动的体验卡
* @param title
* @param userInfo
* @return
*/
public JSONObject getPageOfMemberCard(String title,DataUserInfo...userInfo) {
dataApi.setApiModule(ApiModule.Polar_Card)
.setApiName("API_fetchPageOfMemberCard")
.setTerminal(Terminal.B);
super.beforeDataRequest(userInfo);
JSONObject body = new JSONObject();
body.put("shelfState","YES");//启用状态
body.put("current", 0);
body.put("size", 20);
body.put("useForActivity", true);//是否开启营销活动
body.put("commodityCardType","EXPERIENCE_CARD");
body.put("brandId", dataApi.getLoginInfo().getBrandId());
body.put("studioId", dataApi.getLoginInfo().getStudioId());
body.put("operatorId", dataApi.getLoginInfo().getAdminId());
if (null != title || !title.isEmpty()) {
body.put("title", title);
}
dataApi.doRequest(RequestType.JSON, dataparams, body.toJSONString(), dataheadrs).assetsSuccess(true);
return dataApi.getBodyInJSON();
}
/**
* 自定义奖品列表
* @param prizeName
* @param userInfo
* @return
*/
public JSONObject getCustomizePrizeByPage(String prizeName,DataUserInfo...userInfo) {
dataApi.setApiModule(ApiModule.Polar_LuckyDraw)
.setApiName("API_getCustomizePrizeByPage")
.setTerminal(Terminal.B);
super.beforeDataRequest(userInfo);
JSONObject body = new JSONObject();
body.put("current", 0);
body.put("size", 20);
body.put("brandId", dataApi.getLoginInfo().getBrandId());
body.put("studioId", dataApi.getLoginInfo().getStudioId());
body.put("operatorId", dataApi.getLoginInfo().getAdminId());
if (null != prizeName || !prizeName.isEmpty()) {
body.put("prizeName", prizeName);
}
dataApi.doRequest(RequestType.JSON, dataparams, body.toJSONString(), dataheadrs).assetsSuccess(true);
return dataApi.getBodyInJSON();
}
/**
* 创建自定义奖品
* @param prizeName
* @param userInfo
* @return
*/
public String addCustomizePrize(String prizeName,DataUserInfo...userInfo) {
dataApi.setApiModule(ApiModule.Polar_LuckyDraw)
.setApiName("API_addCustomizePrize")
.setTerminal(Terminal.B);
super.beforeDataRequest(userInfo);
JSONObject body = new JSONObject();
body.put("prizeName", prizeName);
body.put("brandId", dataApi.getLoginInfo().getBrandId());
body.put("studioId", dataApi.getLoginInfo().getStudioId());
body.put("operatorId", dataApi.getLoginInfo().getAdminId());
dataApi.doRequest(RequestType.JSON, dataparams, body.toJSONString(), dataheadrs).assetsSuccess(true);
return dataApi.getBodyInJSON().getString("result");
}
/**
* 删除自定义奖品
* @param prizeId
* @param userInfo
* @return
*/
public JSONObject delCustomizePrize(String prizeId, DataUserInfo...userInfo) {
dataApi.setApiModule(ApiModule.Polar_LuckyDraw)
.setApiName("API_delCustomizePrize")
.setTerminal(Terminal.B);
super.beforeDataRequest(userInfo);
JSONObject body = new JSONObject();
body.put("id", prizeId);
body.put("brandId", dataApi.getLoginInfo().getBrandId());
body.put("studioId", dataApi.getLoginInfo().getStudioId());
body.put("operatorId", dataApi.getLoginInfo().getAdminId());
dataApi.doRequest(RequestType.JSON, dataparams, body.toJSONString(), dataheadrs);
return dataApi.getBodyInJSON();
}
/**
* 创建幸运抽奖:主要创建活动是未开始的活动,可以通过编辑改活动为进行中
*/
public String addLuckyDraw(String prizeType,String prizeName,String prizeId,boolean publish,String activityName,DataUserInfo...userInfo) {
dataApi.setApiModule(ApiModule.Polar_LuckyDraw)
.setApiName("API_addLuckyDraw")
.setTerminal(Terminal.B);
super.beforeDataRequest(userInfo);
String[] applyMemberStates = {"POTENTIAL", "NORMAL", "HISTORY"};
JSONArray prizeList = new JSONArray();
JSONObject prize = new JSONObject();
switch(prizeType){
case "COUPON":
prize.put("prizeType",prizeType);//优惠券
prize.put("stock","100");//奖品数量
prize.put("probability","100");//中奖概率
prize.put("prizeImgId","1");
prize.put("prizeName",prizeName);
prize.put("prizeId",prizeId);
break;
case "EXPERIENCE_CARD":
prize.put("prizeType",prizeType);//体验卡
prize.put("stock","100");
prize.put("probability","100");
prize.put("prizeImgId","2");
prize.put("prizeName",prizeName);
prize.put("prizeId",prizeId);
break;
case "CUSTOMIZE_GIFT":
prize.put("prizeType",prizeType);//自定义奖品
prize.put("stock","100");
prize.put("probability","100");
prize.put("prizeImgId","3");
prize.put("period","100");//兑奖时效
prize.put("prizeName",prizeName);
prize.put("prizeId",prizeId);
}
prizeList.add(prize);
JSONObject body = new JSONObject();
body.put("actWay", "SUDOKU");
body.put("applyMemberStates", applyMemberStates);
body.put("name", activityName);
body.put("endTime", TimeUtils.getAfterDayDate(30));//活动结束时间:当前时间往后30天
body.put("maxWinNumber","100");//最多可中奖次数
body.put("noWinImgId","0");//未中奖图
body.put("noWinName", "谢谢惠顾");
body.put("publish",publish);//是否发布
body.put("actDescribe","自动化脚本创建幸运抽奖");
body.put("startTime",TimeUtils.getAfterDayDate(1));//活动开始时间:当前时间往后1天
body.put("prizeList",prizeList);
body.put("brandId", dataApi.getLoginInfo().getBrandId());
body.put("studioId", dataApi.getLoginInfo().getStudioId());
body.put("operatorId", dataApi.getLoginInfo().getAdminId());
if(publish==false){
body.put("totalLimit",100);//每人总共抽100次
}else {
body.put("dailyLimit",100);//每人每日抽100次
}
dataApi.doRequest(RequestType.JSON, dataparams, body.toJSONString(), dataheadrs).assetsSuccess(true);
return dataApi.getBodyInJSON().getString("result");
}
/**
* 发布幸运抽奖
* @param activityId
* @param userInfo
*/
public void publishLuckyDraw(String activityId,DataUserInfo...userInfo) {
dataApi.setApiModule(ApiModule.Polar_LuckyDraw)
.setApiName("API_publishLuckyDraw")
.setTerminal(Terminal.B);
super.beforeDataRequest(userInfo);
JSONObject body = new JSONObject();
body.put("id", activityId);
body.put("brandId", dataApi.getLoginInfo().getBrandId());
body.put("studioId", dataApi.getLoginInfo().getStudioId());
body.put("operatorId", dataApi.getLoginInfo().getAdminId());
dataApi.doRequest(RequestType.JSON, dataparams, body.toJSONString(), dataheadrs).assetsSuccess(true);
}
/**
* 编辑幸运抽奖,主要改活动为进行中
* @param prizeType
* @param prizeId
* @param prizeName
* @param userInfo
*/
public void editLuckyDraw(String prizeType,String prizeNo,String prizeName,String prizeId,boolean publish,String activityId,String activityName,DataUserInfo...userInfo) {
dataApi.setApiModule(ApiModule.Polar_LuckyDraw)
.setApiName("API_editLuckyDraw")
.setTerminal(Terminal.B);
super.beforeDataRequest(userInfo);
String[] applyMemberStates = {"POTENTIAL", "NORMAL", "HISTORY"};
JSONArray prizeList = new JSONArray();
JSONObject prize = new JSONObject();
switch(prizeType){
case "COUPON":
prize.put("id",prizeNo);
prize.put("activityId",activityId);
prize.put("prizeType",prizeType);//优惠券
prize.put("stock","100");//奖品数量
prize.put("probability","100");//中奖概率
prize.put("prizeImgId","1");
prize.put("prizeName",prizeName);
prize.put("prizeId",prizeId);
break;
case "EXPERIENCE_CARD":
prize.put("id",prizeNo);
prize.put("activityId",activityId);
prize.put("prizeType",prizeType);//体验卡
prize.put("stock","100");
prize.put("probability","100");
prize.put("prizeImgId","2");
prize.put("prizeName",prizeName);
prize.put("prizeId",prizeId);
break;
case "CUSTOMIZE_GIFT":
prize.put("id",prizeNo);
prize.put("activityId",activityId);
prize.put("prizeType",prizeType);//自定义奖品
prize.put("stock","100");
prize.put("probability","100");
prize.put("prizeImgId","3");
prize.put("period","100");//兑奖时效
prize.put("prizeName",prizeName);
prize.put("prizeId",prizeId);
}
prizeList.add(prize);
JSONObject body = new JSONObject();
body.put("actWay", "SUDOKU");
body.put("applyMemberStates", applyMemberStates);
body.put("name", activityName);
body.put("endTime", TimeUtils.getAfterDayDate(30));//活动结束时间:当前时间往后30天
body.put("maxWinNumber", "100");//最多可中奖次数
body.put("noWinImgId", 0);//未中奖图
body.put("noWinName", "谢谢惠顾");
body.put("publish",publish);//是否发布
body.put("actDescribe","自动化脚本edit幸运抽奖");
body.put("startTime",System.currentTimeMillis());//活动开始时间:当前时间
body.put("prizeList",prizeList);
body.put("id",activityId);
body.put("brandId", dataApi.getLoginInfo().getBrandId());
body.put("studioId", dataApi.getLoginInfo().getStudioId());
body.put("operatorId", dataApi.getLoginInfo().getAdminId());
if(publish==true){
body.put("dailyLimit",100);//每人每日抽100次
}else {
body.put("totalLimit",100);//每人总共抽100次
}
dataApi.doRequest(RequestType.JSON, dataparams, body.toJSONString(), dataheadrs).assetsSuccess(true);
}
/**
* 删除幸运抽奖
* @param activityId
* @param userInfo
*/
public void deleteLuckyDraw(String activityId,DataUserInfo...userInfo) {
dataApi.setApiModule(ApiModule.Polar_LuckyDraw)
.setApiName("API_deleteLuckyDraw")
.setTerminal(Terminal.B);
super.beforeDataRequest(userInfo);
JSONObject body = new JSONObject();
body.put("id", activityId);
body.put("brandId", dataApi.getLoginInfo().getBrandId());
body.put("studioId", dataApi.getLoginInfo().getStudioId());
body.put("operatorId", dataApi.getLoginInfo().getAdminId());
dataApi.doRequest(RequestType.JSON, dataparams, body.toJSONString(), dataheadrs).assetsSuccess(true);
}
/**
* 查看幸运抽奖活动详情
* @param activityId
* @param userInfo
* @return
*/
public JSONObject getLuckyDrawDetail(String activityId,DataUserInfo...userInfo) {
dataApi.setApiModule(ApiModule.Polar_LuckyDraw)
.setApiName("API_getLuckyDrawDetail")
.setTerminal(Terminal.B);
super.beforeDataRequest(userInfo);
JSONObject body = new JSONObject();
body.put("id",activityId);
body.put("brandId", dataApi.getLoginInfo().getBrandId());
body.put("studioId", dataApi.getLoginInfo().getStudioId());
body.put("operatorId", dataApi.getLoginInfo().getAdminId());
dataApi.doRequest(RequestType.JSON, dataparams, body.toJSONString(), dataheadrs).assetsSuccess(true);
return dataApi.getBodyInJSON();
}
/**
* 查看活动数据-奖品消耗
* @param activityId
* @param userInfo
* @return
*/
public JSONObject getLuckyPrizeCount(String activityId,DataUserInfo...userInfo) {
dataApi.setApiModule(ApiModule.Polar_LuckyDraw)
.setApiName("API_getLuckyPrizeCount")
.setTerminal(Terminal.B);
super.beforeDataRequest(userInfo);
JSONObject body = new JSONObject();
body.put("id",activityId);
body.put("brandId", dataApi.getLoginInfo().getBrandId());
body.put("studioId", dataApi.getLoginInfo().getStudioId());
body.put("operatorId", dataApi.getLoginInfo().getAdminId());
dataApi.doRequest(RequestType.JSON, dataparams, body.toJSONString(), dataheadrs).assetsSuccess(true);
return dataApi.getBodyInJSON();
}
/**
* 查看活动数据-参与记录
* @param activityId
* @param userInfo
* @return
*/
public JSONObject getLuckyAttendByPage(String activityId,DataUserInfo...userInfo) {
dataApi.setApiModule(ApiModule.Polar_LuckyDraw)
.setApiName("API_getLuckyAttendByPage")
.setTerminal(Terminal.B);
super.beforeDataRequest(userInfo);
JSONObject body = new JSONObject();
body.put("startCreated",null);
body.put("endCreated",null);
body.put("memberId",null);
body.put("current",0);
body.put("size",10);
body.put("actId",activityId);
body.put("brandId", dataApi.getLoginInfo().getBrandId());
body.put("studioId", dataApi.getLoginInfo().getStudioId());
body.put("operatorId", dataApi.getLoginInfo().getAdminId());
dataApi.doRequest(RequestType.JSON, dataparams, body.toJSONString(), dataheadrs).assetsSuccess(true);
return dataApi.getBodyInJSON();
}
/**
* 小程序获取抽奖次数
* @param activityId
* @return
*/
public int getDrawNum(String activityId,String memberId,DataUserInfo...userInfos) {
dataApi.setApiModule(ApiModule.Lunar_LuckyDraw)
.setApiName("API_getDrawNum")
.setTerminal(Terminal.C);
super.beforeDataRequest(userInfos);
JSONObject body = new JSONObject();
body.put("id",activityId);
body.put("memberId",memberId);
dataApi.doRequest(RequestType.JSON, dataparams, body.toJSONString(), dataheadrs).assetsSuccess(true);
return Integer.parseInt(dataApi.getBodyInJSON().getString("result"));
}
/**
* 小程序查看我的奖品
* @param activityId
* @param memberId
* @return
*/
public JSONObject getMyActPrizeByPage(String activityId,String memberId,DataUserInfo...userInfos) {
dataApi.setApiModule(ApiModule.Lunar_LuckyDraw)
.setApiName("API_getMyActPrizeByPage")
.setTerminal(Terminal.C);
super.beforeDataRequest(userInfos);
JSONObject body = new JSONObject();
body.put("current",0);
body.put("size",20);
body.put("activityType","LUCKY_DRAW");
body.put("activityId",activityId);
body.put("memberId",memberId);
dataApi.doRequest(RequestType.JSON, dataparams, body.toJSONString(), dataheadrs).assetsSuccess(true);
return dataApi.getBodyInJSON();
}
/**
* 小程序我的活动
* @param memberId
* @return
*/
public JSONObject getMyActivityByPage(String memberId,DataUserInfo...userInfos) {
dataApi.setApiModule(ApiModule.Lunar_LuckyDraw)
.setApiName("API_getMyActivityByPage")
.setTerminal(Terminal.C);
super.beforeDataRequest(userInfos);
JSONObject body = new JSONObject();
body.put("current",0);
body.put("size",20);
body.put("activityType","LUCKY_DRAW");
body.put("memberId",memberId);
dataApi.doRequest(RequestType.JSON, dataparams, body.toJSONString(), dataheadrs).assetsSuccess(true);
return dataApi.getBodyInJSON();
}
/**
* 查看小程序我的优惠券
* @param memberId
* @return
*/
public int countMemberReceivedCoupon(String memberId,DataUserInfo...userInfos) {
dataApi.setApiModule(ApiModule.Lunar_Coupon)
.setApiName("API_countMemberReceivedCoupon")
.setTerminal(Terminal.C);
super.beforeDataRequest(userInfos);
JSONObject body = new JSONObject();
body.put("receiverId",memberId);
body.put("status","AVAILABLE");
dataApi.doRequest(RequestType.JSON, dataparams, body.toJSONString(), dataheadrs).assetsSuccess(true);
return Integer.parseInt(dataApi.getBodyInJSON().getString("result"));
}
/**
* 小程序幸运抽奖活动进行抽奖
* @param activityId
* @param memberId
* @param userInfos
* @return
*/
public JSONObject luckyDrawLottery(String activityId,String memberId,DataUserInfo...userInfos) {
dataApi.setApiModule(ApiModule.Lunar_LuckyDraw)
.setApiName("API_luckyDrawLottery")
.setTerminal(Terminal.C);
super.beforeDataRequest(userInfos);
JSONObject body = new JSONObject();
body.put("id",activityId);
body.put("memberId",memberId);
dataApi.doRequest(RequestType.JSON, dataparams, body.toJSONString(), dataheadrs).assetsSuccess(true);
return dataApi.getBodyInJSON();
}
/**
* 兑换自定义奖品
* @param sendRecordId
* @param userInfos
*/
public JSONObject exchangePrize(String sendRecordId,DataUserInfo...userInfos) {
dataApi.setApiModule(ApiModule.Polar_LuckyDraw)
.setApiName("API_exchangePrize")
.setTerminal(Terminal.B);
super.beforeDataRequest(userInfos);
JSONObject body = new JSONObject();
body.put("id",sendRecordId);
body.put("manual",true);
body.put("brandId", dataApi.getLoginInfo().getBrandId());
body.put("studioId", dataApi.getLoginInfo().getStudioId());
body.put("operatorId", dataApi.getLoginInfo().getAdminId());
dataApi.doRequest(RequestType.JSON, dataparams, body.toJSONString(), dataheadrs);
return dataApi.getBodyInJSON();
}
/**
* 核对中奖信息
* @param sendRecordId
* @param userInfos
* @return
*/
public JSONObject getRewardSendDetail(String sendRecordId,DataUserInfo...userInfos) {
dataApi.setApiModule(ApiModule.Polar_LuckyDraw)
.setApiName("API_getRewardSendDetail")
.setTerminal(Terminal.B);
super.beforeDataRequest(userInfos);
JSONObject body = new JSONObject();
body.put("id",sendRecordId);
body.put("brandId", dataApi.getLoginInfo().getBrandId());
body.put("studioId", dataApi.getLoginInfo().getStudioId());
body.put("operatorId", dataApi.getLoginInfo().getAdminId());
dataApi.doRequest(RequestType.JSON, dataparams, body.toJSONString(), dataheadrs).assetsSuccess(true);
return dataApi.getBodyInJSON();
}
}
package com.xiaomai.cases.polar.luckyDraw;
import com.alibaba.fastjson.JSONObject;
import com.xiaomai.enums.ApiModule;
import com.xiaomai.enums.LoginAccount;
import com.xiaomai.enums.RequestType;
import com.xiaomai.enums.Terminal;
import com.xiaomai.utils.RandomStringUtil;
import com.xiaomai.utils.XMBaseTest;
import com.xiaomai.utils.XMJSONPath;
import org.testng.Assert;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
import javax.annotation.Resource;
public class TestAbnormalLuckyDraw extends XMBaseTest {
@Resource(name = "luckyDrawTools")
LuckyDrawTools luckyDrawTools;
@BeforeMethod
public void beforeTest(){
xmAppApi.setApiModule(ApiModule.Polar_LuckyDraw)
.setApiName("API_abnormalLuckyDraw")
.setLoginUser(LoginAccount.GYM_PROD)
.setTerminal(Terminal.B);
dal.setCase_owner("xyy")
.setCase_name(Thread.currentThread().getStackTrace()[1].getFileName().split("\\.")[0]);
super.beforeTest();
}
@Test(description = "创建未发布活动->发布活动->失效活动->删除活动")
public void testAbnormalLuckyDraw()throws InterruptedException{
//获取活动列表数据
int total = Integer.parseInt(XMJSONPath.readPath(luckyDrawTools.getLuckyDrawByPage(""),"$.result.total"));
//创建自定义奖品
String prizeName = "奖品" + RandomStringUtil.randomString(5);
String prizeId = luckyDrawTools.addCustomizePrize(prizeName);
//创建活动名称
String activityName = "每人总共抽100次" + RandomStringUtil.randomString(5);
//创建未发布的活动
String activityId = luckyDrawTools.addLuckyDraw("CUSTOMIZE_GIFT",prizeName,prizeId,false,activityName);
Assert.assertTrue(Integer.parseInt(XMJSONPath.readPath(luckyDrawTools.getLuckyDrawByPage(""),"$.result.total"))==total+1);
Thread.sleep(1000);
//检验活动状态=未发布
Assert.assertEquals(XMJSONPath.readPath(luckyDrawTools.getLuckyDrawDetail(activityId),"$.result.status"),"UNPUBLISHED");
//此时删除自定义奖品,会报错,因为奖品关联着活动
Assert.assertEquals(XMJSONPath.readPath(luckyDrawTools.delCustomizePrize(prizeId),"$.message"),"该奖品已被"+activityName+"活动引用,暂不支持删除。");
//发布活动,并且校验活动状态=未开始
luckyDrawTools.publishLuckyDraw(activityId);
Assert.assertEquals(XMJSONPath.readPath(luckyDrawTools.getLuckyDrawDetail(activityId),"$.result.status"),"WAITING");
//失效活动
JSONObject body = new JSONObject();
body.put("id", activityId);
body.put("brandId", xmAppApi.getLoginInfo().getBrandId());
body.put("studioId", xmAppApi.getLoginInfo().getStudioId());
body.put("operatorId", xmAppApi.getLoginInfo().getAdminId());
xmAppApi.doRequest(RequestType.JSON, params, body.toJSONString(), headers).assetsSuccess(true);
Assert.assertEquals(XMJSONPath.readPath(xmAppApi.getBodyInJSON(),"$.message"),"操作成功!");
//检验活动状态=已失效
Assert.assertEquals(XMJSONPath.readPath(luckyDrawTools.getLuckyDrawDetail(activityId),"$.result.status"),"ABNORMAL");
//删除活动
luckyDrawTools.deleteLuckyDraw(activityId);
//删除自定义奖品
luckyDrawTools.delCustomizePrize(prizeId);
}
}
package com.xiaomai.cases.polar.luckyDraw;
import com.alibaba.fastjson.JSONObject;
import com.xiaomai.enums.ApiModule;
import com.xiaomai.enums.LoginAccount;
import com.xiaomai.enums.RequestType;
import com.xiaomai.enums.Terminal;
import com.xiaomai.utils.RandomStringUtil;
import com.xiaomai.utils.XMBaseTest;
import com.xiaomai.utils.XMJSONPath;
import org.testng.Assert;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
import javax.annotation.Resource;
public class TestAddCustomizePrize extends XMBaseTest {
@Resource(name = "luckyDrawTools")
LuckyDrawTools luckyDrawTools;
@BeforeMethod
public void beforeTest(){
xmAppApi.setApiModule(ApiModule.Polar_LuckyDraw)
.setApiName("API_addCustomizePrize")
.setLoginUser(LoginAccount.GYM_PROD)
.setTerminal(Terminal.B);
dal.setCase_owner("xyy")
.setCase_name(Thread.currentThread().getStackTrace()[1].getFileName().split("\\.")[0]);
super.beforeTest();
}
@DataProvider
public Object[][] dataProvider(){
return new Object[][]{
{"自定义奖品",false},
{"奖品"+ RandomStringUtil.randomString(5),true}
};
}
@Test(description = "创建自定义奖品",dataProvider = "dataProvider")
public void testAddCustomizePrize(String prizeName,boolean success){
//获取当前自定义奖品列表数量
int total = Integer.parseInt(XMJSONPath.readPath(luckyDrawTools.getCustomizePrizeByPage(""),"$.result.total"));
JSONObject body = new JSONObject();
body.put("prizeName", prizeName);
body.put("brandId", xmAppApi.getLoginInfo().getBrandId());
body.put("studioId", xmAppApi.getLoginInfo().getStudioId());
body.put("operatorId", xmAppApi.getLoginInfo().getAdminId());
xmAppApi.doRequest(RequestType.JSON, params, body.toJSONString(), headers);
if(success==false){
Assert.assertEquals(XMJSONPath.readPath(xmAppApi.getBodyInJSON(),"$.message"),"自定义奖品名称重复,请修改");
}else{
String prizeId = XMJSONPath.readPath(xmAppApi.getBodyInJSON(),"$.result");
Assert.assertEquals(XMJSONPath.readPath(xmAppApi.getBodyInJSON(),"$.message"),"操作成功!");
//检查自定奖品列表数据+1
Assert.assertTrue(Integer.parseInt(XMJSONPath.readPath(luckyDrawTools.getCustomizePrizeByPage(""),"$.result.total"))==total+1);
//清理数据
luckyDrawTools.delCustomizePrize(prizeId);
}
}
}
package com.xiaomai.cases.polar.luckyDraw;
import com.alibaba.fastjson.JSONObject;
import com.xiaomai.enums.ApiModule;
import com.xiaomai.enums.LoginAccount;
import com.xiaomai.enums.RequestType;
import com.xiaomai.enums.Terminal;
import com.xiaomai.utils.RandomStringUtil;
import com.xiaomai.utils.XMBaseTest;
import com.xiaomai.utils.XMJSONPath;
import org.testng.Assert;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
import javax.annotation.Resource;
public class TestGetShareDetail extends XMBaseTest {
@Resource(name = "luckyDrawTools")
LuckyDrawTools luckyDrawTools;
@BeforeMethod
public void beforeTest(){
xmAppApi.setApiModule(ApiModule.Polar_LuckyDraw)
.setApiName("API_getShareDetail")
.setLoginUser(LoginAccount.GYM_PROD)
.setTerminal(Terminal.B);
dal.setCase_owner("xyy")
.setCase_name(Thread.currentThread().getStackTrace()[1].getFileName().split("\\.")[0]);
super.beforeTest();
}
@Test(description = "分享幸运抽奖海报")
public void testGetShareDetail()throws InterruptedException{
//创建自定义奖品
String prizeName = "奖品" + RandomStringUtil.randomString(5);
String prizeId = luckyDrawTools.addCustomizePrize(prizeName);
//创建活动名称
String activityName = "每人每日抽100次" + RandomStringUtil.randomString(5);
//创建已发布的活动
Thread.sleep(5000);
String activityId = luckyDrawTools.addLuckyDraw("CUSTOMIZE_GIFT",prizeName,prizeId,true,activityName);
//构建参数
JSONObject body = new JSONObject();
JSONObject extJson = new JSONObject();
extJson.put("brandId", xmAppApi.getLoginInfo().getBrandId());
extJson.put("studioId", xmAppApi.getLoginInfo().getStudioId());
body.put("bizId", activityId);
body.put("shareType", "LUCKY_DRAW");
body.put("extJson", extJson);
body.put("brandId", xmAppApi.getLoginInfo().getBrandId());
body.put("studioId", xmAppApi.getLoginInfo().getStudioId());
body.put("operatorId", xmAppApi.getLoginInfo().getAdminId());
//调用请求
xmAppApi.doRequest(RequestType.JSON, params, body.toJSONString(), headers).assetsSuccess(true);
Assert.assertEquals(XMJSONPath.readPath(xmAppApi.getBodyInJSON(),"$.message"),"操作成功!");
Assert.assertEquals(XMJSONPath.readPath(xmAppApi.getBodyInJSON(),"$.result.studioId"),xmAppApi.getLoginInfo().getStudioId());
//清理数据
//删除活动
luckyDrawTools.deleteLuckyDraw(activityId);
Thread.sleep(2000);
//删除自定义奖品
luckyDrawTools.delCustomizePrize(prizeId);
}
}
package com.xiaomai.cases.polar.luckyDraw;
import com.alibaba.fastjson.JSONObject;
import com.xiaomai.cases.polar.training.TrainingTools;
import com.xiaomai.client.DataUserInfo;
import com.xiaomai.enums.ApiModule;
import com.xiaomai.enums.LoginAccount;
import com.xiaomai.enums.RequestType;
import com.xiaomai.enums.Terminal;
import com.xiaomai.utils.XMBaseTest;
import com.xiaomai.utils.XMJSONPath;
import org.testng.Assert;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
import javax.annotation.Resource;
public class TestGetStudioMemberPrizeByPage extends XMBaseTest {
@Resource(name = "luckyDrawTools")
LuckyDrawTools luckyDrawTools;
@Resource(name = "trainingTools")
TrainingTools trainingTools;
DataUserInfo info = new DataUserInfo();
@BeforeMethod
public void beforeTest(){
xmAppApi.setApiModule(ApiModule.Polar_LuckyDraw)
.setApiName("API_getStudioMemberPrizeByPage")
.setLoginUser(LoginAccount.GYM_PROD)
.setTerminal(Terminal.B);
dal.setCase_owner("xyy")
.setCase_name(Thread.currentThread().getStackTrace()[1].getFileName().split("\\.")[0]);
super.beforeTest();
}
@Test(description = "幸运抽奖-会员中奖列表")
public void testGetStudioMemberPrizeByPage(){
//获取会员信息
String memberId = trainingTools.searchTargerMember("自动化会员");;
//调用请求
JSONObject body = new JSONObject();
body.put("current",0);
body.put("size",10);
body.put("memberId",memberId);
body.put("prizeType","CUSTOMIZE_GIFT");
body.put("brandId", xmAppApi.getLoginInfo().getBrandId());
body.put("studioId", xmAppApi.getLoginInfo().getStudioId());
body.put("operatorId", xmAppApi.getLoginInfo().getAdminId());
xmAppApi.doRequest(RequestType.JSON, params, body.toJSONString(), headers).assetsSuccess(true);
Assert.assertEquals(XMJSONPath.readPath(xmAppApi.getBodyInJSON(),"$.message"),"操作成功!");
//若该会员名下有抽奖记录,则进入手动兑奖流程:
int total = Integer.parseInt(XMJSONPath.readPath(xmAppApi.getBodyInJSON(),"$.result.total"));
if (total>0){
for (int i = 0; i < total-1; i++) {
String sendState = XMJSONPath.readPath(xmAppApi.getBodyInJSON(),"$.result.records["+i+"].sendState");
String sendRecordId = XMJSONPath.readPath(xmAppApi.getBodyInJSON(),"$.result.records["+i+"].id");
String activityId = XMJSONPath.readPath(xmAppApi.getBodyInJSON(),"$.result.records["+i+"].activityId");
//获取到的兑奖记录,暂未兑奖,可进行兑奖:
if(sendState=="NOT_SENT"){
Assert.assertEquals(luckyDrawTools.exchangePrize(sendRecordId),"$.message","操作成功!");
//兑奖状态=已兑换
Assert.assertEquals(XMJSONPath.readPath(luckyDrawTools.getLuckyAttendByPage(activityId),"$.result.records[0].sendState"),"SENT");//已兑奖状态
break;
}else{
//该兑奖记录若已兑奖,则提示兑奖码已兑换!
Assert.assertEquals(XMJSONPath.readPath(luckyDrawTools.exchangePrize(sendRecordId),"$.message"),"该奖品码已兑换");
}
}
}
}
}
package com.xiaomai.cases.polar.luckyDraw;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.xiaomai.cases.lunar.minMemberCard.MinCardTools;
import com.xiaomai.cases.lunar.order.OrderCTools;
import com.xiaomai.cases.lunar.user.UserTools;
import com.xiaomai.cases.polar.coupon.CouponTools;
import com.xiaomai.cases.polar.finance.order.OrderTools;
import com.xiaomai.cases.polar.memberCard.CardTools;
import com.xiaomai.client.DataUserInfo;
import com.xiaomai.enums.ApiModule;
import com.xiaomai.enums.LoginAccount;
import com.xiaomai.enums.RequestType;
import com.xiaomai.enums.Terminal;
import com.xiaomai.utils.RandomStringUtil;
import com.xiaomai.utils.XMBaseTest;
import com.xiaomai.utils.XMJSONPath;
import org.testng.Assert;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
import javax.annotation.Resource;
public class TestLuckyDrawLottery extends XMBaseTest {
@Resource(name = "luckyDrawTools")
LuckyDrawTools luckyDrawTools;
@Resource(name = "userTools")
UserTools userTools;
@Resource(name = "couponTools")
CouponTools couponTools;
@Resource(name = "cardTools")
CardTools cardTools;
@Resource(name = "minCardTools")
MinCardTools minCardTools;
@Resource(name = "orderCTools")
OrderCTools orderCTools;
@Resource(name = "orderTools")
OrderTools orderTools;
DataUserInfo info = new DataUserInfo();
public String prizeId;
public String prizeName;
@BeforeMethod
public void beforeTest(){
xmAppApi.setApiModule(ApiModule.Lunar_LuckyDraw)
.setApiName("API_luckyDrawLottery")
.setLoginUser(LoginAccount.GYM_MINIAPPC)
.setTerminal(Terminal.minApp);
dal.setCase_owner("xyy")
.setCase_name(Thread.currentThread().getStackTrace()[1].getFileName().split("\\.")[0]);
super.beforeTest();
}
@Test(description = "参与抽奖-抽中优惠券")
public void testLuckyDrawLottery_coupon()throws InterruptedException{
info.setTerminal(Terminal.B);
info.setLoginUser(LoginAccount.GYM_PROD);
//查询用于营销的优惠券数量
int total = Integer.parseInt(XMJSONPath.readPath(luckyDrawTools.getStudioCouponList("yx优惠券",info),"$.result.total"));
if(total==0){
//创建1张优惠券
prizeName = "yx优惠券" + RandomStringUtil.randomString(5);
prizeId = couponTools.createStudioCoupon("WITHOUT",prizeName,true,info);
}
prizeId = XMJSONPath.readPath(luckyDrawTools.getStudioCouponList("yx优惠券",info),"$.result.records[0].id");
prizeName = XMJSONPath.readPath(luckyDrawTools.getStudioCouponList("yx优惠券",info),"$.result.records[0].name");
//创建活动名称
String activityName = "每人每天抽优惠券" + RandomStringUtil.randomString(5);
//创建活动=未开始
Thread.sleep(5000);
String activityId = luckyDrawTools.addLuckyDraw("COUPON",prizeName,prizeId,true,activityName,info);
Thread.sleep(1000);
String prizeNo = XMJSONPath.readPath(luckyDrawTools.getLuckyDrawDetail(activityId,info),"$.result.prizeList[0].id");
//编辑活动=进行中(主要是改活动开始时间)
luckyDrawTools.editLuckyDraw("COUPON",prizeNo,prizeName,prizeId,true,activityId,activityName,info);
//获取会员信息
String memberId = userTools.getMemberInfo().getString("memberId");
//当前我的抽奖次数
int drawNum = luckyDrawTools.getDrawNum(activityId,memberId);
//当前我的活动数量
int activityNum = Integer.parseInt(XMJSONPath.readPath(luckyDrawTools.getMyActivityByPage(memberId),"$.result.total"));
//当前我的优惠券数量
int couponNum = luckyDrawTools.countMemberReceivedCoupon(memberId);
JSONObject body = new JSONObject();
body.put("id",activityId);
body.put("memberId",memberId);
xmAppApi.doRequest(RequestType.JSON, params, body.toJSONString(), headers).assetsSuccess(true);
Assert.assertEquals(XMJSONPath.readPath(xmAppApi.getBodyInJSON(),"$.message"),"操作成功!");
//100%中奖
Assert.assertEquals(XMJSONPath.readPath(xmAppApi.getBodyInJSON(),"$.result.winPrize"),"true");
//抽奖次数-1
Assert.assertTrue(luckyDrawTools.getDrawNum(activityId,memberId)==drawNum-1);
//我的奖品+1
Assert.assertTrue(Integer.parseInt(XMJSONPath.readPath(luckyDrawTools.getMyActPrizeByPage(activityId,memberId),"$.result.total"))==1);
//我的活动+1
Assert.assertTrue(Integer.parseInt(XMJSONPath.readPath(luckyDrawTools.getMyActivityByPage(memberId),"$.result.total"))==activityNum+1);
//我的优惠券+1
Assert.assertTrue(luckyDrawTools.countMemberReceivedCoupon(memberId)==couponNum+1);
//app奖品消耗
Assert.assertTrue(Integer.parseInt(XMJSONPath.readPath(luckyDrawTools.getLuckyPrizeCount(activityId,info),"$.result[0].winCount"))==1);//已抽中1个
Assert.assertTrue(Integer.parseInt(XMJSONPath.readPath(luckyDrawTools.getLuckyPrizeCount(activityId,info),"$.result[0].stock"))==99);//剩余99个
//app参与记录
Assert.assertTrue(Integer.parseInt(XMJSONPath.readPath(luckyDrawTools.getLuckyAttendByPage(activityId,info),"$.result.total"))==1);//参与人员1个
//清理数据
//会员详情-优惠券-作废优惠券
String goalRecordId = XMJSONPath.readPath(couponTools.pageMemberReceivedCoupon(memberId,"AVAILABLE",info),"$.result.records[0].id");
Thread.sleep(1000);
couponTools.abandonMembercouponReceiveRecord(goalRecordId,info);
}
@Test(description = "参与抽奖-抽奖体验卡")
public void testLuckyDrawLottery_experienceCard()throws InterruptedException{
info.setTerminal(Terminal.B);
info.setLoginUser(LoginAccount.GYM_PROD);
//查询用于营销的体验卡数量
int total = Integer.parseInt(XMJSONPath.readPath(luckyDrawTools.getPageOfMemberCard("yx体验卡",info),"$.result.total"));
if(total==0){
//创建1张体验卡
prizeName = "yx体验卡" + RandomStringUtil.randomString(5);
JSONObject benefit = new JSONObject();
benefit.put("identifier", RandomStringUtil.randomString(20));
benefit.put("benefitType", "BALANCE");
benefit.put("targetScope","GROUP_CLASS_AND_PERSONAL_COURSE");
benefit.put("balance","3");//使用次数
benefit.put("reserveLimitType","UN_LIMIT");//预约次数限制:不限制
benefit.put("reserveLimitNumber",0);
benefit.put("defaultConsumeBalance",1);//扣除次数
benefit.put("itemList",new JSONArray());
benefit.put("targetType","COURSE");
benefit.put("price","10");
prizeId = cardTools.experienceCardCreate(prizeName,"10",benefit,info);
}
prizeId = XMJSONPath.readPath(luckyDrawTools.getPageOfMemberCard("yx体验卡",info),"$.result.records[0].id");
prizeName = XMJSONPath.readPath(luckyDrawTools.getPageOfMemberCard("yx体验卡",info),"$.result.records[0].name");
//创建活动名称
String activityName = "每人每天抽体验卡" + RandomStringUtil.randomString(5);
//创建活动=未开始
Thread.sleep(5000);
String activityId = luckyDrawTools.addLuckyDraw("EXPERIENCE_CARD",prizeName,prizeId,true,activityName,info);
Thread.sleep(1000);
String prizeNo = XMJSONPath.readPath(luckyDrawTools.getLuckyDrawDetail(activityId,info),"$.result.prizeList[0].id");
//编辑活动=进行中(主要是改活动开始时间)
luckyDrawTools.editLuckyDraw("EXPERIENCE_CARD",prizeNo,prizeName,prizeId,true,activityId,activityName,info);
//获取会员信息
String memberId = userTools.getMemberInfo().getString("memberId");
//当前我的抽奖次数
int drawNum = luckyDrawTools.getDrawNum(activityId,memberId);
//当前我的活动数量
int activityNum = Integer.parseInt(XMJSONPath.readPath(luckyDrawTools.getMyActivityByPage(memberId),"$.result.total"));
//当前我的卡包数量
int cardNum = minCardTools.countMyUsableCard(memberId);
//当前我的订单
int orderNum = Integer.parseInt(XMJSONPath.readPath(orderCTools.pageOrder(memberId),"$.result.total"));
JSONObject body = new JSONObject();
body.put("id",activityId);
body.put("memberId",memberId);
xmAppApi.doRequest(RequestType.JSON, params, body.toJSONString(), headers).assetsSuccess(true);
Assert.assertEquals(XMJSONPath.readPath(xmAppApi.getBodyInJSON(),"$.message"),"操作成功!");
//100%中奖
Assert.assertEquals(XMJSONPath.readPath(xmAppApi.getBodyInJSON(),"$.result.winPrize"),"true");
//抽奖次数-1
Assert.assertTrue(luckyDrawTools.getDrawNum(activityId,memberId)==drawNum-1);
//我的奖品+1
Assert.assertTrue(Integer.parseInt(XMJSONPath.readPath(luckyDrawTools.getMyActPrizeByPage(activityId,memberId),"$.result.total"))==1);
//我的活动+1
Assert.assertTrue(Integer.parseInt(XMJSONPath.readPath(luckyDrawTools.getMyActivityByPage(memberId),"$.result.total"))==activityNum+1);
//我的卡包+1
Assert.assertTrue(minCardTools.countMyUsableCard(memberId)==cardNum+1);
//我的订单+1
String voucherId = XMJSONPath.readPath(orderCTools.pageOrder(memberId),"$.result.records[0].id");
Assert.assertTrue(Integer.parseInt(XMJSONPath.readPath(orderCTools.pageOrder(memberId),"$.result.total"))==orderNum+1);
//app奖品消耗,参与记录
Assert.assertTrue(Integer.parseInt(XMJSONPath.readPath(luckyDrawTools.getLuckyPrizeCount(activityId,info),"$.result[0].winCount"))==1);//已抽中1个
Assert.assertTrue(Integer.parseInt(XMJSONPath.readPath(luckyDrawTools.getLuckyPrizeCount(activityId,info),"$.result[0].stock"))==99);//剩余99个
//app参与记录
Assert.assertTrue(Integer.parseInt(XMJSONPath.readPath(luckyDrawTools.getLuckyAttendByPage(activityId,info),"$.result.total"))==1);//参与人员1个
//清理数据
//作废体验卡订单
orderTools.discard(voucherId,"其他","自动化作废订单",info);
}
}
package com.xiaomai.cases.polar.luckyDraw;
import com.alibaba.fastjson.JSONObject;
import com.xiaomai.cases.lunar.user.UserTools;
import com.xiaomai.client.DataUserInfo;
import com.xiaomai.enums.ApiModule;
import com.xiaomai.enums.LoginAccount;
import com.xiaomai.enums.RequestType;
import com.xiaomai.enums.Terminal;
import com.xiaomai.utils.RandomStringUtil;
import com.xiaomai.utils.XMBaseTest;
import com.xiaomai.utils.XMJSONPath;
import org.testng.Assert;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
import javax.annotation.Resource;
public class TestPrizeScanCode extends XMBaseTest {
@Resource(name = "luckyDrawTools")
LuckyDrawTools luckyDrawTools;
@Resource(name = "userTools")
UserTools userTools;
DataUserInfo info = new DataUserInfo();
public String prizeId;
public String prizeName = "自定义奖品";;
@BeforeMethod
public void beforeTest(){
xmAppApi.setApiModule(ApiModule.Polar_LuckyDraw)
.setApiName("API_prizeScanCode")
.setLoginUser(LoginAccount.GYM_PROD)
.setTerminal(Terminal.B);
dal.setCase_owner("xyy")
.setCase_name(Thread.currentThread().getStackTrace()[1].getFileName().split("\\.")[0]);
super.beforeTest();
}
@Test(description = "扫幸运抽奖活动的兑奖二维码进行兑奖")
public void testPrizeScanCod()throws InterruptedException{
info.setTerminal(Terminal.minApp);
info.setLoginUser(LoginAccount.GYM_MINIAPPC);
//查询自定义奖品数量
int total = Integer.parseInt(XMJSONPath.readPath(luckyDrawTools.getCustomizePrizeByPage("自定义奖品"),"$.result.total"));
if(total==0){
//创建1个自定义奖品
prizeId = luckyDrawTools.addCustomizePrize(prizeName);
}
prizeId = XMJSONPath.readPath(luckyDrawTools.getCustomizePrizeByPage("自定义奖品"),"$.result.records[0].id");
//创建活动名称
String activityName = "每人每天抽自定义奖品" + RandomStringUtil.randomString(5);
//创建活动=未开始
Thread.sleep(5000);
String activityId = luckyDrawTools.addLuckyDraw("CUSTOMIZE_GIFT",prizeName,prizeId,true,activityName);
Thread.sleep(1000);
String prizeNo = XMJSONPath.readPath(luckyDrawTools.getLuckyDrawDetail(activityId),"$.result.prizeList[0].id");
//编辑活动=进行中(主要是改活动开始时间)
luckyDrawTools.editLuckyDraw("CUSTOMIZE_GIFT",prizeNo,prizeName,prizeId,true,activityId,activityName);
//获取会员信息
String memberId = userTools.getMemberInfo(info).getString("memberId");
int drawNum = luckyDrawTools.getDrawNum(activityId,memberId,info);//抽奖次数
//开始抽奖, 总共抽2次,获奖2次:一次手动兑换,一次扫码兑换
for (int i = 0; i < 2; i++) {
//100%中奖
Thread.sleep(5000);
Assert.assertEquals(XMJSONPath.readPath(luckyDrawTools.luckyDrawLottery(activityId,memberId,info),"$.result.winPrize"),"true");
}
//抽奖次数-2
Assert.assertTrue(luckyDrawTools.getDrawNum(activityId,memberId,info)==drawNum-2);
//我的奖品+2
Assert.assertTrue(Integer.parseInt(XMJSONPath.readPath(luckyDrawTools.getMyActPrizeByPage(activityId,memberId,info),"$.result.total"))==2);
//app奖品消耗,参与记录
Assert.assertTrue(Integer.parseInt(XMJSONPath.readPath(luckyDrawTools.getLuckyPrizeCount(activityId),"$.result[0].winCount"))==2);//已抽中2个
Assert.assertTrue(Integer.parseInt(XMJSONPath.readPath(luckyDrawTools.getLuckyPrizeCount(activityId),"$.result[0].stock"))==98);//剩余98个
//app参与记录
Assert.assertTrue(Integer.parseInt(XMJSONPath.readPath(luckyDrawTools.getLuckyAttendByPage(activityId),"$.result.total"))==2);//参与记录2条
Assert.assertEquals(XMJSONPath.readPath(luckyDrawTools.getLuckyAttendByPage(activityId),"$.result.records[0].sendState"),"NOT_SENT");//待兑奖状态
String sendRecordId = XMJSONPath.readPath(luckyDrawTools.getLuckyAttendByPage(activityId),"$.result.records[0].sendRecordId");
//扫兑奖码
JSONObject body = new JSONObject();
body.put("id",sendRecordId);
body.put("brandId", xmAppApi.getLoginInfo().getBrandId());
body.put("studioId", xmAppApi.getLoginInfo().getStudioId());
body.put("operatorId", xmAppApi.getLoginInfo().getAdminId());
//调用请求
xmAppApi.doRequest(RequestType.JSON, params, body.toJSONString(), headers).assetsSuccess(true);
//检验扫码兑换时的状态及兑奖信息准确性
Assert.assertEquals(XMJSONPath.readPath(xmAppApi.getBodyInJSON(),"$.message"),"操作成功!");
Assert.assertEquals(XMJSONPath.readPath(xmAppApi.getBodyInJSON(),"$.result.prizeId"),prizeId);
Assert.assertEquals(XMJSONPath.readPath(xmAppApi.getBodyInJSON(),"$.result.receivedMemberId"),memberId);
//进行兑奖,并且成功
Assert.assertEquals(XMJSONPath.readPath(luckyDrawTools.exchangePrize(sendRecordId),"$.message"),"操作成功!");
//校验兑奖信息状态=已兑奖
Assert.assertEquals(XMJSONPath.readPath(luckyDrawTools.getRewardSendDetail(sendRecordId),"$.result.sendState"),"SENT");//已兑奖状态
Assert.assertEquals(XMJSONPath.readPath(luckyDrawTools.getRewardSendDetail(sendRecordId),"$.result.prizeType"),"CUSTOMIZE_GIFT");//自定义奖品
}
}
......@@ -132,6 +132,55 @@ public class CardTools extends XMBaseTest {
}
/**
* 创建用于营销活动的体验卡
* @param title
* @param price
* @param benefit:自由组合想要的权益
* @param dataUserInfos
* @return
*/
public String experienceCardCreate(String title, String price,JSONObject benefit,DataUserInfo... dataUserInfos) {
dataApi.setApiModule(ApiModule.Polar_Card)
.setApiName("API_tenantMemberCard_create")
.setTerminal(Terminal.B);
super.beforeDataRequest(dataUserInfos);
String[] activatePatternList = {"PURCHASE"};//即时生效
String[] purchaseMemberStateList = {"POTENTIAL", "NORMAL", "HISTORY"};
//构建体验卡权益object
JSONArray benefitList = new JSONArray();
benefitList.add(benefit);
//构建请求
JSONObject jsonObject = new JSONObject();
jsonObject.put("surfaceUrl", "https://image.xiaomaiketang.com/xm/internal/EKDt4bPDBQ.png");//体验卡封面图片
jsonObject.put("surfaceCornerMark", "自动化标签");
jsonObject.put("title", title);//卡名称
jsonObject.put("useForActivity", true);//用于营销活动
jsonObject.put("validPeriod", "10");//有效期-10天
jsonObject.put("activatePatternList", activatePatternList);//生效方式
jsonObject.put("stock", -1);//库存不限
jsonObject.put("price", price);//体验卡售价
jsonObject.put("purchaseNumberLimit", "-1");//购买数量不限
jsonObject.put("purchaseMemberStateList", purchaseMemberStateList);//可购买会员类型
jsonObject.put("purchaseRestriction", "NO");
jsonObject.put("xcxSaleStatus", "YES");
jsonObject.put("creatorId", dataApi.getLoginInfo().getAdminId());
jsonObject.put("shelfState", "YES");//卡启用状态
jsonObject.put("brandId", dataApi.getLoginInfo().getBrandId());
jsonObject.put("studioId", dataApi.getLoginInfo().getStudioId());
jsonObject.put("description", "{\"items\":[{\"content\":\"自动化创建用于营销活动的体验卡\",\"aspect\":\"\",\"type\":\"TEXT\"}]}");
jsonObject.put("operatorId", dataApi.getLoginInfo().getAdminId());
jsonObject.put("benefitList", benefitList);//使用权益
jsonObject.put("commodityCardType","EXPERIENCE_CARD");
dataApi.doRequest(RequestType.JSON, dataparams, jsonObject.toJSONString(), dataheadrs).assetsSuccess(true);
return dataApi.getBodyInJSON().getString("result");
}
/**
* b端购买储值卡
* @param dataUserInfos
* @return 订单id
......
......@@ -90,7 +90,7 @@ public class TestEditCampRuleSchedule extends SelectTargetTrainingCampAndGetInfo
//给会员报名
trainingTools.doSignCampOrder(memberId, this.price, this.campId,"");
orderId = XMJSONPath.readPath(dataApi.getApi_response(), "$.result");
Thread.sleep(2000);
Thread.sleep(5000);
//check 预约记录(训练营预约记录,根据训练营活动筛选)
JSONArray reserverList= reserveTools.getPageByStudio("","","","",null,
......
......@@ -26,6 +26,8 @@ public class ApiModule {
public static String Polar_EleContract="polar_eleContract";//训练营活动
public static String Polar_Coupon="polar_coupon";//优惠券
public static String Polar_LuckyDraw ="polar_luckyDraw";//幸运抽奖
public static String Lunar_LuckyDraw ="lunar_luckyDraw";//小程序幸运抽奖
public static String Lunar_Coupon="lunar_coupon";//小程序优惠券
public static String Polar_Reserve="polar_reserve";//预约
......
......@@ -2,11 +2,11 @@
env=prod
# Dev
dev=https://dev-fit.xiaomai5.com
#rc
# rc
#rc=https://rc-heimdall.xiaomai5.com
# gray
#gray=https://gray-heimdall.xiaomai5.com
#prod
gray=https://canary-fit.xiaomai5.com
# prod
prod=https://prod-fit.xiaomai5.com
# 测试运行环境 本地调试时,可指定调试环境。完成本地调试后,请注释此变量
#runningEnv = gray
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment