Commit a1cb1e67 by yangfangfang

Merge remote-tracking branch 'origin/master'

parents 8c502b01 c6b75dfd
...@@ -188,7 +188,7 @@ public class TestAddMemberReserve extends BaseTestImpl { ...@@ -188,7 +188,7 @@ public class TestAddMemberReserve extends BaseTestImpl {
ruldId = XMJSONPath.readPath(getGroupRuleScheduleList.getJSONObject(0), "$.ruleId"); ruldId = XMJSONPath.readPath(getGroupRuleScheduleList.getJSONObject(0), "$.ruleId");
Long scheduleEndTime = TimeUtils.getTodayEndTime(1); Long scheduleEndTime = TimeUtils.getTodayEndTime(1);
try { try {
Thread.sleep(2500); Thread.sleep(5000);
} catch (InterruptedException e) { } catch (InterruptedException e) {
throw new RuntimeException(e); throw new RuntimeException(e);
} }
......
...@@ -181,6 +181,11 @@ public class TestAddToQueue extends BaseTestImpl { ...@@ -181,6 +181,11 @@ public class TestAddToQueue extends BaseTestImpl {
reserveCTools.cancelMemberReserve(memberInfo.getString(2),memberInfo.getString(0),true); reserveCTools.cancelMemberReserve(memberInfo.getString(2),memberInfo.getString(0),true);
// 取消验证课次详情、预约记录、预约详情、B端预约详情内容 // 取消验证课次详情、预约记录、预约详情、B端预约详情内容
checkResult("QUEUE_CANCEL", "QUEUE_CANCEL","取消排队"); checkResult("QUEUE_CANCEL", "QUEUE_CANCEL","取消排队");
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
break; break;
case "notQueue": case "notQueue":
// 预约规则开启允许排队 // 预约规则开启允许排队
...@@ -208,7 +213,7 @@ public class TestAddToQueue extends BaseTestImpl { ...@@ -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"); 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 { try {
Thread.sleep(1000); Thread.sleep(5000);
} catch (InterruptedException e) { } catch (InterruptedException e) {
throw new RuntimeException(e); throw new RuntimeException(e);
} }
...@@ -217,7 +222,7 @@ public class TestAddToQueue extends BaseTestImpl { ...@@ -217,7 +222,7 @@ public class TestAddToQueue extends BaseTestImpl {
memberInfo.set(2,reserveId); //将原来的id替换成新的id memberInfo.set(2,reserveId); //将原来的id替换成新的id
try { try {
Thread.sleep(1000); Thread.sleep(5000);
} catch (InterruptedException e) { } catch (InterruptedException e) {
throw new RuntimeException(e); throw new RuntimeException(e);
} }
......
...@@ -39,7 +39,7 @@ public class TestEditStudioAdmin extends BaseTestImpl { ...@@ -39,7 +39,7 @@ public class TestEditStudioAdmin extends BaseTestImpl {
@Test @Test
public void testEditStudioAdmin() { public void testEditStudioAdmin() {
String body = "{\"size\":10,\"current\":0,\"state\":\"DUTY\"}"; String body = "{\"size\":10,\"current\":0}";
JSONObject adminPage = adminTools.pageStudioAdmin(body); JSONObject adminPage = adminTools.pageStudioAdmin(body);
int total = Integer.parseInt(adminPage.getJSONObject("result").getString("total")); int total = Integer.parseInt(adminPage.getJSONObject("result").getString("total"));
if (total>1){ if (total>1){
......
...@@ -105,6 +105,59 @@ public class CouponTools extends BaseTestImpl { ...@@ -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 nameLike 全局搜索中 根据优惠券名称搜索
* @param status 列表中根据优惠券状态搜索 * @param status 列表中根据优惠券状态搜索
...@@ -236,8 +289,8 @@ public class CouponTools extends BaseTestImpl { ...@@ -236,8 +289,8 @@ public class CouponTools extends BaseTestImpl {
* 作废会员已领取/已发放的优惠券 * 作废会员已领取/已发放的优惠券
* @param recordId 对应的记录ID * @param recordId 对应的记录ID
*/ */
public void abandonMembercouponReceiveRecord(String recordId){ public void abandonMembercouponReceiveRecord(String recordId,DataUserInfo...userInfo){
setUP("API_abandonMembercouponReceiveRecord"); setUP("API_abandonMembercouponReceiveRecord",userInfo);
JSONObject body = new JSONObject(); JSONObject body = new JSONObject();
body.put("operatorId", dataApi.getLoginInfo().getAdminId()); body.put("operatorId", dataApi.getLoginInfo().getAdminId());
body.put("studioId", dataApi.getLoginInfo().getStudioId()); body.put("studioId", dataApi.getLoginInfo().getStudioId());
...@@ -248,6 +301,29 @@ public class CouponTools extends BaseTestImpl { ...@@ -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; ...@@ -11,6 +11,8 @@ import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test; import org.testng.annotations.Test;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
/** /**
* @BelongsProject: xm-sportstest * @BelongsProject: xm-sportstest
...@@ -32,21 +34,36 @@ public class TestGetValidBalanceList extends BaseTestImpl { ...@@ -32,21 +34,36 @@ public class TestGetValidBalanceList extends BaseTestImpl {
} }
@Test @Test
public void testGetValidBalanceList(){ public void testGetValidBalanceList() {
JSONObject body = new JSONObject(); JSONObject body = new JSONObject();
body.put("tenantId",xmAppApi.getLoginInfo().getStudioId()); body.put("tenantId", xmAppApi.getLoginInfo().getStudioId());
body.put("brandId",xmAppApi.getLoginInfo().getBrandId()); body.put("brandId", xmAppApi.getLoginInfo().getBrandId());
body.put("studioId",xmAppApi.getLoginInfo().getStudioId()); body.put("studioId", xmAppApi.getLoginInfo().getStudioId());
body.put("operatorId",xmAppApi.getLoginInfo().getAdminId()); body.put("operatorId", xmAppApi.getLoginInfo().getAdminId());
xmAppApi.doRequest(RequestType.JSON,params,body.toString(),headers).assetsSuccess(true); xmAppApi.doRequest(RequestType.JSON, params, body.toString(), headers).assetsSuccess(true);
Assert.assertTrue(xmAppApi.getBodyInJSON().getJSONArray("result").size()>0,"获取租户有效余额记录失败"); Assert.assertTrue(xmAppApi.getBodyInJSON().getJSONArray("result").size() > 0, "获取租户有效余额记录失败");
// 和充值记录的数据对比 // 和充值记录的数据对比
String[] keys = {"id","tenantId","productCode","purchaseAmount","startTime","endTime","payChannel"}; 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]),"获取租户有效余额记录与充值记录列表内容对比"); 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 { ...@@ -81,6 +81,8 @@ public class TestUpdateExperienceCard extends XMBaseTest {
object.put("operatorId", dataApi.getLoginInfo().getAdminId()); object.put("operatorId", dataApi.getLoginInfo().getAdminId());
object.put("creatorId", dataApi.getLoginInfo().getAdminId()); object.put("creatorId", dataApi.getLoginInfo().getAdminId());
object.put("maxIdlePeriod", "7");//首次使用生效方式的最晚生效天数 object.put("maxIdlePeriod", "7");//首次使用生效方式的最晚生效天数
object.put("useForActivity", "false");//不开启用于营销活动
object.put("surfaceCornerMark", "自动化测试");//封面标签 object.put("surfaceCornerMark", "自动化测试");//封面标签
object.put("title", title); object.put("title", title);
object.put("validPeriod", "10");//有效期 object.put("validPeriod", "10");//有效期
......
...@@ -173,6 +173,8 @@ public class Tools extends XMBaseTest { ...@@ -173,6 +173,8 @@ public class Tools extends XMBaseTest {
object.put("maxIdlePeriod", "7");//首次使用生效方式的最晚生效天数 object.put("maxIdlePeriod", "7");//首次使用生效方式的最晚生效天数
object.put("surfaceCornerMark", "自动化测试");//封面标签 object.put("surfaceCornerMark", "自动化测试");//封面标签
object.put("title", title); object.put("title", title);
object.put("useForActivity", false);//不开启用于营销活动
object.put("validPeriod", "30");//有效期 object.put("validPeriod", "30");//有效期
object.put("activatePatternList", activatePatternList);//生效方式 object.put("activatePatternList", activatePatternList);//生效方式
object.put("price", price);//售价 object.put("price", price);//售价
......
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.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 { ...@@ -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端购买储值卡 * b端购买储值卡
* @param dataUserInfos * @param dataUserInfos
* @return 订单id * @return 订单id
......
...@@ -90,7 +90,7 @@ public class TestEditCampRuleSchedule extends SelectTargetTrainingCampAndGetInfo ...@@ -90,7 +90,7 @@ public class TestEditCampRuleSchedule extends SelectTargetTrainingCampAndGetInfo
//给会员报名 //给会员报名
trainingTools.doSignCampOrder(memberId, this.price, this.campId,""); trainingTools.doSignCampOrder(memberId, this.price, this.campId,"");
orderId = XMJSONPath.readPath(dataApi.getApi_response(), "$.result"); orderId = XMJSONPath.readPath(dataApi.getApi_response(), "$.result");
Thread.sleep(2000); Thread.sleep(5000);
//check 预约记录(训练营预约记录,根据训练营活动筛选) //check 预约记录(训练营预约记录,根据训练营活动筛选)
JSONArray reserverList= reserveTools.getPageByStudio("","","","",null, JSONArray reserverList= reserveTools.getPageByStudio("","","","",null,
......
...@@ -26,6 +26,8 @@ public class ApiModule { ...@@ -26,6 +26,8 @@ public class ApiModule {
public static String Polar_EleContract="polar_eleContract";//训练营活动 public static String Polar_EleContract="polar_eleContract";//训练营活动
public static String Polar_Coupon="polar_coupon";//优惠券 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 Lunar_Coupon="lunar_coupon";//小程序优惠券
public static String Polar_Reserve="polar_reserve";//预约 public static String Polar_Reserve="polar_reserve";//预约
......
...@@ -2,11 +2,11 @@ ...@@ -2,11 +2,11 @@
env=prod env=prod
# Dev # Dev
dev=https://dev-fit.xiaomai5.com dev=https://dev-fit.xiaomai5.com
#rc # rc
#rc=https://rc-heimdall.xiaomai5.com #rc=https://rc-heimdall.xiaomai5.com
# gray # gray
#gray=https://gray-heimdall.xiaomai5.com gray=https://canary-fit.xiaomai5.com
#prod # prod
prod=https://prod-fit.xiaomai5.com prod=https://prod-fit.xiaomai5.com
# 测试运行环境 本地调试时,可指定调试环境。完成本地调试后,请注释此变量 # 测试运行环境 本地调试时,可指定调试环境。完成本地调试后,请注释此变量
#runningEnv = gray #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