Commit f43df321 by xuyamei

新增训练营活动case

parent 23a17183
package com.xiaomai.cases.lunar.training;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.xiaomai.basetest.BaseTestImpl;
import com.xiaomai.cases.lunar.order.OrderCTools;
import com.xiaomai.cases.lunar.user.UserTools;
import com.xiaomai.cases.polar.finance.order.OrderTools;
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 org.testng.Assert;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
import javax.annotation.Resource;
/**
* @BelongsProject: xm-sportstest
* @BelongsPackage: com.xiaomai.cases.lunar.training
* @Author: xuyamei
* @CreateTime: 2024-07-31 14:55
* @Description: 购买存量的训练营
* @Version: 1.0
*/
public class TestPurchaseCamp extends BaseTestImpl {
@Resource(name = "trainingCTools")
TrainingCTools trainTools;
@Resource(name = "userTools")
UserTools userTools;
OrderCTools orderCTools = new OrderCTools();
@Resource(name = "orderTools")
OrderTools orderTools;
private String orderId = "";
@BeforeMethod
@Override
public void beforeTest(){
setTestInfo(ApiModule.Lunar_Training,"API_purchaseCamp", LoginAccount.GYM_MINIAPPC, Terminal.minApp,"xym");
super.beforeTest();
}
@Test
public void testPurchaseCamp(){
// 获取存量训练营活动
String id = trainTools.getAppliableCampList("存量训练营C端报名活动").getJSONObject(0).getString("id");
// 获取的微信用户
String memberId = userTools.getMemberInfo().getString("memberId");
JSONObject body = new JSONObject();
body.put("campId", id);
body.put("memberId", memberId);
body.put("memo", "");
body.put("receivableAmount", "0.00");
body.put("studioId", xmAppApi.getLoginInfo().getStudioId());
body.put("objectId", RandomStringUtil.randomString(16));
xmAppApi.doRequest(RequestType.JSON,params, body.toString(), headers).assetsSuccess(true);
orderId = xmAppApi.getBodyInJSON().getString("result");
// check 1:订单详情
JSONArray voucherItems = orderCTools.getDetail(orderId).getJSONObject("result").getJSONArray("voucherItems");
String[] keys = new String[]{"skuId","skuType"};
String[] expect = new String[]{id,"TRAINING_CAMP"};
for (int i = 0; i < keys.length; i++) {
Assert.assertTrue(voucherItems.getJSONObject(0).getString(keys[i]).equals(expect[i]) );
}
// check 2:查询我的训练营列表
JSONArray listMyTrainingCamp = trainTools.listMyTrainingCamp(memberId);
keys = new String[]{"tradeOrderId","accountType"};
expect = new String[]{orderId,"TRAINING"};
// 生成训练营账户的id
String accountId = "";
for (int i = 0; i < listMyTrainingCamp.size(); i++){
if (listMyTrainingCamp.getJSONObject(i).getString("tenantMemberCardId").equals(id)){
for (int j = 0; j < keys.length; j++){
Assert.assertTrue(listMyTrainingCamp.getJSONObject(i).getString(keys[j]).equals(expect[j]));
accountId = listMyTrainingCamp.getJSONObject(i).getString("id");
}
}
}
// check 3:获取我的训练营详情 以及和购买的训练营内容是否一致
JSONObject findMyTrainingCampDetailById =trainTools.findMyTrainingCampDetailById(accountId);
JSONObject findDetailById = trainTools.findDetailById(id,memberId);
keys = new String[]{"id","studioId","title","courseId","openStartDate","openEndDate","totalClassHour","price","trainerIds"};
for (int i = 0; i < keys.length; i++){
Assert.assertTrue(findMyTrainingCampDetailById.getJSONObject("trainingCampInfo").getString(keys[i]).equals(findDetailById.getString(keys[i])));
}
// check 3.2 验证我的训练营订单id
Assert.assertTrue(findMyTrainingCampDetailById.getString("tradeOrderId").equals(orderId));
}
@Test(description = "作废订单数据,为了下次再购买",priority = 2)
public void delOrderData(){
DataUserInfo dataUserInfo = new DataUserInfo();
dataUserInfo.setTerminal(Terminal.B);
dataUserInfo.setLoginUser(LoginAccount.GYM_PROD);
orderTools.discard(orderId,"重复录入","作废训练营订单",dataUserInfo);
}
}
package com.xiaomai.cases.lunar.training;
import com.alibaba.fastjson.JSONObject;
import com.xiaomai.basetest.BaseTestImpl;
import com.xiaomai.cases.lunar.user.UserTools;
import com.xiaomai.cases.polar.training.TrainingTools;
import com.xiaomai.enums.ApiModule;
import com.xiaomai.enums.LoginAccount;
import com.xiaomai.enums.Terminal;
import org.testng.Assert;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
import javax.annotation.Resource;
/**
* @BelongsProject: xm-sportstest
* @BelongsPackage: com.xiaomai.cases.lunar.training
* @Author: xuyamei
* @CreateTime: 2024-07-31 15:03
* @Description: 小程序训练营详情
* @Version: 1.0
*/
public class TestTrainingFindDetailById extends BaseTestImpl {
@Resource(name = "trainingCTools")
TrainingCTools trainingCTools;
@Resource(name = "userTools")
UserTools userTools;
@Resource(name = "trainingTools")
TrainingTools trainingTools;
@BeforeMethod
@Override
public void beforeTest(){
setTestInfo(ApiModule.Lunar_Training,"API_findDetailById", LoginAccount.GYM_MINIAPPC, Terminal.minApp,"xym");
super.beforeTest();
}
@Test
public void testTrainingFindDetailById(){
// 获取微信学员
String memberId = userTools.getMemberInfo().getString("memberId");
// 获取训练营活动
String id = trainingCTools.getAppliableCampList("量训练营C端报名活动").getJSONObject(0).getString("id");
JSONObject findDetailById = trainingCTools.findDetailById(id,memberId);
String[] keys = {"id","studioId","state","title","courseId","openStartDate","openEndDate","totalClassHour","price","trainerIds"};
trainingTools.findTrainingDetailById(id);
JSONObject findTrainingDetailById = dataApi.getBodyInJSON().getJSONObject("result");
for (int i = 0; i < keys.length; i++){
Assert.assertEquals(findDetailById.getString(keys[i]),findTrainingDetailById.getString(keys[i]),"训练营详情返回值与B端对比内容不一致");
}
}
}
package com.xiaomai.cases.lunar.training;
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 org.springframework.stereotype.Component;
/**
* @BelongsProject: xm-sportstest
* @BelongsPackage: com.xiaomai.cases.lunar.training
* @Author: xuyamei
* @CreateTime: 2024-07-31 14:48
* @Description: 训练营相关接口
* @Version: 1.0
*/
@Component("trainingCTools")
public class TrainingCTools extends BaseTestImpl {
public void setUP(String apiName, DataUserInfo... userInfo) {
dataApi.setApiModule(ApiModule.Lunar_Training)
.setApiName(apiName)
.setTerminal(Terminal.minApp);
super.beforeDataRequest(userInfo);
}
/**
* @description: 查询在售训练营
* @author: xuyamei
* @date: 2024/7/31 16:55
* @param title:训练营名称
* @return: com.alibaba.fastjson.JSONArray
**/
public JSONArray getAppliableCampList(String title) {
setUP("API_fetchAppliableCampList");
JSONObject body = new JSONObject();
body.put("current",0);
body.put("size",10);
body.put("title",title);
body.put("brandId",dataApi.getLoginInfo().getBrandId());
body.put("studioId",dataApi.getLoginInfo().getStudioId());
dataApi.doRequest(RequestType.JSON,dataparams,body.toString(),dataheadrs).assetsSuccess(true);
return dataApi.getBodyInJSON().getJSONObject("result").getJSONArray("records");
}
/**
* @description:查询训练营详情
* @author: xuyamei
* @date: 2024/7/31 16:55
* @param trainingCampId 训练营活动id
* @param memberId 会员id
* @return: com.alibaba.fastjson.JSONObject
**/
public JSONObject findDetailById(String trainingCampId,String memberId) {
setUP("API_findDetailById");
JSONObject body = new JSONObject();
body.put("trainingCampId",trainingCampId);
body.put("memberId",memberId);
dataApi.doRequest(RequestType.JSON,dataparams,body.toString(),dataheadrs).assetsSuccess(true);
return dataApi.getBodyInJSON().getJSONObject("result");
}
/**
* @description:我的训练营列表
* @author: xuyamei
* @date: 2024/7/31 16:56
* @param memberId 会员id
* @return: com.alibaba.fastjson.JSONArray
**/
public JSONArray listMyTrainingCamp(String memberId) {
setUP("API_listMyTrainingCamp");
JSONObject body = new JSONObject();
body.put("memberId",memberId);
body.put("usable",true);
dataApi.doRequest(RequestType.JSON,dataparams,body.toString(),dataheadrs).assetsSuccess(true);
return dataApi.getBodyInJSON().getJSONArray("result");
}
/**
* @description:获取我的训练营详情
* @author: xuyamei
* @date: 2024/7/31 17:06
* @param id
* @return: com.alibaba.fastjson.JSONArray
**/
public JSONObject findMyTrainingCampDetailById(String id) {
setUP("API_findMyTrainingCampDetailById");
JSONObject body = new JSONObject();
body.put("id",id);
dataApi.doRequest(RequestType.JSON,dataparams,body.toString(),dataheadrs).assetsSuccess(true);
return dataApi.getBodyInJSON().getJSONObject("result");
}
}
......@@ -201,6 +201,33 @@ public class CampScheduleTools extends XMBaseTest {
}
/**
* @description: 查询训练营排课课表
* @author: xuyamei
* @date: 2024/7/31 10:48
* @param startDate 开始日期
* @param endDate 结束日期
* @param campId :训练营活动id
* @return: com.alibaba.fastjson.JSONArray
**/
public JSONArray getCampScheduleTable(Long startDate, Long endDate,String campId) {
setUP("API_getCampScheduleTable");
JSONObject body = new JSONObject();
body.put("operatorId", dataApi.getLoginInfo().getAdminId());
body.put("studioId", dataApi.getLoginInfo().getStudioId());
body.put("brandId", dataApi.getLoginInfo().getBrandId());
body.put("startDate", startDate);
body.put("endDate", endDate);
body.put("campId", campId);
dataApi.doRequest(RequestType.JSON, dataparams, body.toString(), dataheadrs).assetsSuccess(true);
if (Integer.valueOf(XMJSONPath.readPath(dataApi.getApi_response(), "$.result.totalCount")) > 0) {
return dataApi.getBodyInJSON().getJSONObject("result").getJSONArray("timetableGroups").getJSONObject(0).getJSONArray("timetableList");
}
else {
return null;
}
}
/**
* 根据时间和星期查询有效循环次数
* @param startDate
* @param endDate
......
package com.xiaomai.cases.polar.schedule.camp;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.xiaomai.basetest.BaseTestImpl;
import com.xiaomai.cases.polar.memberCard.CardTools;
import com.xiaomai.cases.polar.reserve.ReserveTools;
import com.xiaomai.enums.ApiModule;
import com.xiaomai.enums.LoginAccount;
import com.xiaomai.enums.RequestType;
import com.xiaomai.enums.Terminal;
import com.xiaomai.utils.TimeUtils;
import org.testng.Assert;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
import javax.annotation.Resource;
/**
* @BelongsProject: xm-sportstest
* @BelongsPackage: com.xiaomai.cases.polar.training
* @Author: xuyamei
* @CreateTime: 2024-07-31 10:39
* @Description: 训练营签到、请假、补签到、无需补课、请假已补
* @Version: 1.0
*/
public class TestTrainingSign extends BaseTestImpl {
@Resource(name = "campScheduleTools")
CampScheduleTools campScheduleTools;
@Resource(name = "reserveTools")
ReserveTools reserveTools;
CardTools cardTools = new CardTools();
private String scheduleId;
@BeforeMethod
@Override
public void beforeTest() {
setTestInfo(ApiModule.Polar_Reserve,"API_remedial", LoginAccount.GYM_PROD, Terminal.B,"xuyamei");
super.beforeTest();
}
@Test(description = "训练营签到")
public void testTrainingSign() {
// 训练营课表查询存量的训练营课次
JSONArray getCampScheduleTable = campScheduleTools.getCampScheduleTable(TimeUtils.getTodayTime(), TimeUtils.getTodayEndTime(), "1818220193259798530");
scheduleId = getCampScheduleTable.getJSONObject(0).getString("scheduleId");
// 训练营课次详情
campScheduleTools.getCampScheduleItemDetail(scheduleId);
JSONArray memberRserveList = dataApi.getBodyInJSON().getJSONObject("result").getJSONArray("memberReserveList");
String reserveId = ""; // 约课id
String memberId = "";
String benefitId = ""; // 权益id
String memberCardId = ""; // 卡id
// 查到需要操作签到的学员id
boolean hasData = false; // 是否找到需要操作的学员
for (int i = 0; i < memberRserveList.size(); i++) {
System.out.println("-------------i"+i);
System.out.println("-------------i"+i);
if (memberRserveList.getJSONObject(i).getJSONObject("member").getString("name").contains("微信用户") && memberRserveList.getJSONObject(i).getString("signInState").equals("UN_SIGNED")) {
reserveId = memberRserveList.getJSONObject(i).getString("id");
memberId = memberRserveList.getJSONObject(i).getString("memberId");
benefitId = memberRserveList.getJSONObject(i).getString("benefitId");
memberCardId = memberRserveList.getJSONObject(i).getString("memberCardId");
hasData = true;
break;
}
}
Assert.assertTrue(hasData, "没有找到需要操作的学员,课次今日可能没有可操作的学员,请手动在页面回归签到");
// 操作签到
reserveTools.signIn(true, reserveId, false);
try {
Thread.sleep(2500);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
// check 1: 课次详情到课状态为签到
campScheduleTools.getCampScheduleItemDetail(scheduleId);
memberRserveList = dataApi.getBodyInJSON().getJSONObject("result").getJSONArray("memberReserveList");
for (int i = 0; i < memberRserveList.size(); i++) {
if (memberRserveList.getJSONObject(i).getString("id").equals(reserveId)) {
Assert.assertEquals(memberRserveList.getJSONObject(i).getString("signInState"), "SIGNED");
}
}
// check 2: 预约记录是否包含该预约
String[] result = new String[]{"id", "benefitId", "reserveMemberNum", "courseType", "reserveState", "scheduleId", "signInState"};
String[] resultData = new String[]{reserveId, benefitId, "1", "TRAINING_CAMP", "SUCCESS", scheduleId, "SIGNED"};
// check 2.1 预约记录列表
JSONArray getPageByStudio = reserveTools.getPageByStudio("", "SUCCESS", "SIGNED", "", TimeUtils.getTodayTime(), TimeUtils.getTodayEndTime(), memberId, "TRAINING_CAMP", "1818220193259798530");
boolean success = false;
for (int i = 0; i < getPageByStudio.size(); i++) {
if (getPageByStudio.getJSONObject(i).getString("id").equals(reserveId)) {
success = true;
for (int j = 0; j < result.length; j++) {
Assert.assertEquals(getPageByStudio.getJSONObject(i).getString(result[j]), resultData[j], "训练营签到产生的数据与实际数据不符合" + result[j] + ":" + resultData[j]);
}
Assert.assertEquals(getPageByStudio.getJSONObject(i).getString("memberId"), memberId, "查询的训练营签到产生数据不是同一个会员");
}
}
Assert.assertTrue(success, "训练营签到产生约课记录没有查询到相关信息");
// check 2.3 预约记录详情
JSONObject getDetailById = reserveTools.getDetailById(reserveId);
for (int j = 0; j < result.length; j++) {
Assert.assertEquals(getDetailById.getString(result[j]), resultData[j], "训练营签到产生的数据与实际数据不符合" + result[j] + ":" + resultData[j]);
}
Assert.assertEquals(getDetailById.getString("memberId"), memberId, "查询的约课数据不是同一个会员");
// check 3: 会员卡消耗记录中包含该记录签到消耗
JSONArray consumeRecord = cardTools.fetchPageOfConsumeRecord(benefitId, memberCardId).getJSONObject("result").getJSONArray("records");
String[] result2 = new String[]{"resourceId", "consumeType", "changeOfPurchaseBalance"};
String[] respect = new String[]{reserveId, "SIGN_IN", "-1.00"};
String[] message = new String[]{"训练营消耗记录中记录的资源id与实际约课记录id不符合", "训练营消耗记录中记录的资源id与实际约课记录类型不符合", "训练营消耗记录中记录的资源id与实际约课记录余额不符合"};
for (int i = 0; i < result2.length; i++) {
Assert.assertEquals(consumeRecord.getJSONObject(0).getString(result2[i]), respect[i], message[i]);
}
}
@Test(description = "训练营请假", priority = 1)
public void testTrainingSign_Leave() {
// 训练营课表查询存量的训练营课次
JSONArray getCampScheduleTable = campScheduleTools.getCampScheduleTable(TimeUtils.getTodayTime(), TimeUtils.getTodayEndTime(),"1818220193259798530");
scheduleId = getCampScheduleTable.getJSONObject(0).getString("scheduleId");
// 训练营课次详情
campScheduleTools.getCampScheduleItemDetail(scheduleId);
JSONArray memberRserveList = dataApi.getBodyInJSON().getJSONObject("result").getJSONArray("memberReserveList");
String reserveId = ""; // 约课id
String memberId = "";
String benefitId = ""; // 权益id
String memberCardId = ""; // 卡id
// 查到需要操作签到的学员id
boolean hasData = false; // 是否找到需要操作的学员
for (int i = 0; i < memberRserveList.size(); i++){
if (memberRserveList.getJSONObject(i).getJSONObject("member").getString("name").contains("训练营请假学员") && memberRserveList.getJSONObject(i).getString("signInState").equals("UN_SIGNED")){
reserveId = memberRserveList.getJSONObject(i).getString("id");
memberId = memberRserveList.getJSONObject(i).getString("memberId");
benefitId = memberRserveList.getJSONObject(i).getString("benefitId");
memberCardId = memberRserveList.getJSONObject(i).getString("memberCardId");
hasData = true;
break;
}
}
Assert.assertTrue(hasData, "没有找到需要操作的学员,课次今日可能没有可操作的学员,请手动在页面回归请假");
// 操作请假
reserveTools.signIn(true,reserveId,true);
try {
Thread.sleep(2500);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
// check 1: 课次详情到课状态为签到
campScheduleTools.getCampScheduleItemDetail(scheduleId);
memberRserveList = dataApi.getBodyInJSON().getJSONObject("result").getJSONArray("memberReserveList");
for (int i = 0; i < memberRserveList.size(); i++){
if (memberRserveList.getJSONObject(i).getString("id").equals(reserveId)){
Assert.assertEquals(memberRserveList.getJSONObject(i).getString("signInState"),"LEAVE");
}
}
// check 2: 预约记录是否包含该预约
String[] result = new String[] {"id","benefitId","reserveMemberNum","courseType","reserveState","scheduleId","signInState"};
String[] resultData = new String[] {reserveId,benefitId,"1","TRAINING_CAMP","SUCCESS",scheduleId,"LEAVE"};
// check 2.1 预约记录列表
JSONArray getPageByStudio = reserveTools.getPageByStudio("","SUCCESS","LEAVE","",TimeUtils.getTodayTime(),TimeUtils.getTodayEndTime(), memberId,"TRAINING_CAMP","1818220193259798530");
boolean success = false;
for(int i =0;i<getPageByStudio.size();i++){
if (getPageByStudio.getJSONObject(i).getString("id").equals(reserveId)){
success = true;
for(int j = 0;j<result.length;j++){
Assert.assertEquals(getPageByStudio.getJSONObject(i).getString(result[j]),resultData[j],"训练营请假产生的数据与实际数据不符合"+result[j]+":"+resultData[j]);
}
Assert.assertEquals(getPageByStudio.getJSONObject(i).getString("memberId"), memberId,"查询的约课数据不是同一个会员");
}
}
Assert.assertTrue(success,"训练营请假产生约课记录没有查询到相关信息");
// check 2.3 预约记录详情
JSONObject getDetailById = reserveTools.getDetailById(reserveId);
for(int j = 0;j<result.length;j++){
Assert.assertEquals(getDetailById.getString(result[j]),resultData[j],"训练营请假产生的数据与实际数据不符合"+result[j]+":"+resultData[j]);
}
Assert.assertEquals(getDetailById.getString("memberId"), memberId,"查询的约课数据不是同一个会员");
// check 3: 会员卡消耗记录中包含该记录签到消耗
JSONArray consumeRecord = cardTools.fetchPageOfConsumeRecord(benefitId,memberCardId).getJSONObject("result").getJSONArray("records");
String[] result2 = new String[] {"resourceId","consumeType","changeOfPurchaseBalance"};
String[] respect = new String[] {reserveId,"LEAVE","-1.00"};
String[] message = new String[] {"训练营消耗记录中记录的资源id与实际约课记录id不符合","训练营消耗记录中记录的资源id与实际约课记录类型不符合","训练营消耗记录中记录的资源id与实际约课记录余额不符合"};
for (int i = 0; i < result2.length; i++){
Assert.assertEquals(consumeRecord.getJSONObject(0).getString(result2[i]),respect[i],message[i]);
}
}
@Test(description = "训练营请假补签到", priority = 2)
public void testTrainingSign_SIGNED() {
// 训练营课表查询存量的训练营课次
JSONArray getCampScheduleTable = campScheduleTools.getCampScheduleTable(TimeUtils.getTodayTime(), TimeUtils.getTodayEndTime(),"1818220193259798530");
scheduleId = getCampScheduleTable.getJSONObject(0).getString("scheduleId");
// 训练营课次详情
campScheduleTools.getCampScheduleItemDetail(scheduleId);
JSONArray memberRserveList = dataApi.getBodyInJSON().getJSONObject("result").getJSONArray("memberReserveList");
String reserveId = ""; // 约课id
String memberId = "";
String benefitId = ""; // 权益id
String memberCardId = ""; // 卡id
// 查到需要操作签到的学员id
boolean hasData = false; // 是否找到需要操作的学员
for (int i = 0; i < memberRserveList.size(); i++){
if (memberRserveList.getJSONObject(i).getJSONObject("member").getString("name").contains("训练营请假补签到") && memberRserveList.getJSONObject(i).getString("signInState").equals("UN_SIGNED")){
reserveId = memberRserveList.getJSONObject(i).getString("id");
memberId = memberRserveList.getJSONObject(i).getString("memberId");
benefitId = memberRserveList.getJSONObject(i).getString("benefitId");
memberCardId = memberRserveList.getJSONObject(i).getString("memberCardId");
hasData = true;
break;
}
}
Assert.assertTrue(hasData, "没有找到需要操作的学员,课次今日可能没有可操作的学员,请手动在页面回归请假补签到");
// 操作请假
reserveTools.signIn(true,reserveId,true);
try {
Thread.sleep(2500);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
// 操作补签到
reserveTools.signIn(true,reserveId,false);
try {
Thread.sleep(2500);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
// check 1: 课次详情到课状态为签到
campScheduleTools.getCampScheduleItemDetail(scheduleId);
memberRserveList = dataApi.getBodyInJSON().getJSONObject("result").getJSONArray("memberReserveList");
for (int i = 0; i < memberRserveList.size(); i++){
if (memberRserveList.getJSONObject(i).getString("id").equals(reserveId)){
Assert.assertEquals(memberRserveList.getJSONObject(i).getString("signInState"),"SIGNED");
}
}
// check 2: 预约记录是否包含该预约
String[] result = new String[] {"id","benefitId","reserveMemberNum","courseType","reserveState","scheduleId","signInState"};
String[] resultData = new String[] {reserveId,benefitId,"1","TRAINING_CAMP","SUCCESS",scheduleId,"SIGNED"};
// check 2.1 预约记录列表
JSONArray getPageByStudio = reserveTools.getPageByStudio("","SUCCESS","SIGNED","",TimeUtils.getTodayTime(),TimeUtils.getTodayEndTime(), memberId,"TRAINING_CAMP","1818220193259798530");
boolean success = false;
for(int i =0;i<getPageByStudio.size();i++){
if (getPageByStudio.getJSONObject(i).getString("id").equals(reserveId)){
success = true;
for(int j = 0;j<result.length;j++){
Assert.assertEquals(getPageByStudio.getJSONObject(i).getString(result[j]),resultData[j],"训练营补签到产生的数据与实际数据不符合"+result[j]+":"+resultData[j]);
}
Assert.assertEquals(getPageByStudio.getJSONObject(i).getString("memberId"), memberId,"查询的约课数据不是同一个会员");
}
}
Assert.assertTrue(success,"约课后在约课记录没有查询到相关信息");
// check 2.3 预约记录详情
JSONObject getDetailById = reserveTools.getDetailById(reserveId);
for(int j = 0;j<result.length;j++){
Assert.assertEquals(getDetailById.getString(result[j]),resultData[j],"训练营补签到产生产生的数据与实际数据不符合"+result[j]+":"+resultData[j]);
}
Assert.assertEquals(getDetailById.getString("memberId"), memberId,"查询的约课数据不是同一个会员");
// check 3: 会员卡消耗记录中包含该记录签到消耗还是请假,请假已经扣除补签到不会再扣
JSONArray consumeRecord = cardTools.fetchPageOfConsumeRecord(benefitId,memberCardId).getJSONObject("result").getJSONArray("records");
String[] result2 = new String[] {"resourceId","consumeType","changeOfPurchaseBalance"};
String[] respect = new String[] {reserveId,"LEAVE","-1.00"};
String[] message = new String[] {"训练营消耗记录中记录的资源id与实际约课记录id不符合","训练营消耗记录中记录的资源id与实际约课记录类型不符合","训练营消耗记录中记录的资源id与实际约课记录余额不符合"};
for (int i = 0; i < result2.length; i++){
Assert.assertEquals(consumeRecord.getJSONObject(0).getString(result2[i]),respect[i],message[i]);
}
}
@Test(description = "训练营请假标记已补", priority = 3)
public void testTrainingSign_MARK_REMEDIAL() {
// 训练营课表查询存量的训练营课次
JSONArray getCampScheduleTable = campScheduleTools.getCampScheduleTable(TimeUtils.getTodayTime(), TimeUtils.getTodayEndTime(),"1818220193259798530");
scheduleId = getCampScheduleTable.getJSONObject(0).getString("scheduleId");
// 训练营课次详情
campScheduleTools.getCampScheduleItemDetail(scheduleId);
JSONArray memberRserveList = dataApi.getBodyInJSON().getJSONObject("result").getJSONArray("memberReserveList");
String reserveId = ""; // 约课id
String memberId = "";
String benefitId = ""; // 权益id
String memberCardId = ""; // 卡id
// 查到需要操作签到的学员id
boolean hasData = false; // 是否找到需要操作的学员
for (int i = 0; i < memberRserveList.size(); i++){
if (memberRserveList.getJSONObject(i).getJSONObject("member").getString("name").contains("训练营请假标记已补") && memberRserveList.getJSONObject(i).getString("signInState").equals("UN_SIGNED")){
reserveId = memberRserveList.getJSONObject(i).getString("id");
memberId = memberRserveList.getJSONObject(i).getString("memberId");
benefitId = memberRserveList.getJSONObject(i).getString("benefitId");
memberCardId = memberRserveList.getJSONObject(i).getString("memberCardId");
hasData = true;
break;
}
}
Assert.assertTrue(hasData, "没有找到需要操作的学员,课次今日可能没有可操作的学员,请手动在页面回归请假标记已补");
// 操作请假
reserveTools.signIn(true,reserveId,true);
try {
Thread.sleep(2500);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
// 操作标记已补
JSONObject body = new JSONObject();
body.put("operatorId", xmAppApi.getLoginInfo().getAdminId());
body.put("remedialSignState", "MARK_REMEDIAL");
body.put("reserveId", reserveId);
body.put("brandId", xmAppApi.getLoginInfo().getBrandId());
body.put("studioId", xmAppApi.getLoginInfo().getStudioId());
xmAppApi.doRequest(RequestType.JSON,params,body.toString(),headers).assetsSuccess(true);
try {
Thread.sleep(2500);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
// check 1: 课次详情到课状态为请假 标记已补
campScheduleTools.getCampScheduleItemDetail(scheduleId);
memberRserveList = dataApi.getBodyInJSON().getJSONObject("result").getJSONArray("memberReserveList");
for (int i = 0; i < memberRserveList.size(); i++){
if (memberRserveList.getJSONObject(i).getString("id").equals(reserveId)){
Assert.assertEquals(memberRserveList.getJSONObject(i).getString("signInState"),"LEAVE");
Assert.assertEquals(memberRserveList.getJSONObject(i).getString("remedialSignState"),"MARK_REMEDIAL");
}
}
// check 2: 预约记录是否包含该预约
String[] result = new String[] {"id","benefitId","reserveMemberNum","courseType","reserveState","scheduleId","signInState","remedialSignState"};
String[] resultData = new String[] {reserveId,benefitId,"1","TRAINING_CAMP","SUCCESS",scheduleId,"LEAVE","MARK_REMEDIAL"};
// check 2.1 预约记录列表
JSONArray getPageByStudio = reserveTools.getPageByStudio("","SUCCESS","LEAVE","",TimeUtils.getTodayTime(),TimeUtils.getTodayEndTime(), memberId,"TRAINING_CAMP","1818220193259798530");
boolean success = false;
for(int i =0;i<getPageByStudio.size();i++){
if (getPageByStudio.getJSONObject(i).getString("id").equals(reserveId)){
success = true;
for(int j = 0;j<result.length;j++){
Assert.assertEquals(getPageByStudio.getJSONObject(i).getString(result[j]),resultData[j],"训练营请假标记已补产生的数据与实际数据不符合"+result[j]+":"+resultData[j]);
}
Assert.assertEquals(getPageByStudio.getJSONObject(i).getString("memberId"), memberId,"查询的约课数据不是同一个会员");
}
}
Assert.assertTrue(success,"约课后在约课记录没有查询到相关信息");
// check 2.3 预约记录详情
JSONObject getDetailById = reserveTools.getDetailById(reserveId);
for(int j = 0;j<result.length;j++){
Assert.assertEquals(getDetailById.getString(result[j]),resultData[j],"训练营请假标记已补产生的数据与实际数据不符合"+result[j]+":"+resultData[j]);
}
Assert.assertEquals(getDetailById.getString("memberId"), memberId,"查询的约课数据不是同一个会员");
// check 3: 会员卡消耗记录中包含该记录签到消耗还是请假,请假已经扣除不会再扣
JSONArray consumeRecord = cardTools.fetchPageOfConsumeRecord(benefitId,memberCardId).getJSONObject("result").getJSONArray("records");
String[] result2 = new String[] {"resourceId","consumeType","changeOfPurchaseBalance"};
String[] respect = new String[] {reserveId,"LEAVE","-1.00"};
String[] message = new String[] {"训练营消耗记录中记录的资源id与实际约课记录id不符合","训练营消耗记录中记录的资源id与实际约课记录类型不符合","训练营消耗记录中记录的资源id与实际约课记录余额不符合"};
for (int i = 0; i < result2.length; i++){
Assert.assertEquals(consumeRecord.getJSONObject(0).getString(result2[i]),respect[i],message[i]);
}
}
@Test(description = "训练营请假无需补课", priority = 3)
public void testTrainingSign_NEED_NOT_REMEDIAL() {
// 训练营课表查询存量的训练营课次
JSONArray getCampScheduleTable = campScheduleTools.getCampScheduleTable(TimeUtils.getTodayTime(), TimeUtils.getTodayEndTime(),"1818220193259798530");
scheduleId = getCampScheduleTable.getJSONObject(0).getString("scheduleId");
// 训练营课次详情
campScheduleTools.getCampScheduleItemDetail(scheduleId);
JSONArray memberRserveList = dataApi.getBodyInJSON().getJSONObject("result").getJSONArray("memberReserveList");
String reserveId = ""; // 约课id
String memberId = "";
String benefitId = ""; // 权益id
String memberCardId = ""; // 卡id
// 查到需要操作签到的学员id
boolean hasData = false; // 是否找到需要操作的学员
for (int i = 0; i < memberRserveList.size(); i++){
if (memberRserveList.getJSONObject(i).getJSONObject("member").getString("name").contains("训练营请假无需") && memberRserveList.getJSONObject(i).getString("signInState").equals("UN_SIGNED")){
reserveId = memberRserveList.getJSONObject(i).getString("id");
memberId = memberRserveList.getJSONObject(i).getString("memberId");
benefitId = memberRserveList.getJSONObject(i).getString("benefitId");
memberCardId = memberRserveList.getJSONObject(i).getString("memberCardId");
hasData = true;
break;
}
}
Assert.assertTrue(hasData, "没有找到需要操作的学员,课次今日可能没有可操作的学员,请手动在页面回归请假无需补课");
// 操作请假
reserveTools.signIn(true,reserveId,true);
try {
Thread.sleep(2500);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
// 操作标记已补
JSONObject body = new JSONObject();
body.put("operatorId", xmAppApi.getLoginInfo().getAdminId());
body.put("remedialSignState", "NEED_NOT_REMEDIAL");
body.put("reserveId", reserveId);
body.put("brandId", xmAppApi.getLoginInfo().getBrandId());
body.put("studioId", xmAppApi.getLoginInfo().getStudioId());
xmAppApi.doRequest(RequestType.JSON,params,body.toString(),headers).assetsSuccess(true);
try {
Thread.sleep(2500);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
// check 1: 课次详情到课状态为请假-无需补课
campScheduleTools.getCampScheduleItemDetail(scheduleId);
memberRserveList = dataApi.getBodyInJSON().getJSONObject("result").getJSONArray("memberReserveList");
for (int i = 0; i < memberRserveList.size(); i++){
if (memberRserveList.getJSONObject(i).getString("id").equals(reserveId)){
Assert.assertEquals(memberRserveList.getJSONObject(i).getString("signInState"),"LEAVE");
Assert.assertEquals(memberRserveList.getJSONObject(i).getString("remedialSignState"),"NEED_NOT_REMEDIAL");
}
}
// check 2: 预约记录是否包含该预约
String[] result = new String[] {"id","benefitId","reserveMemberNum","courseType","reserveState","scheduleId","signInState","remedialSignState"};
String[] resultData = new String[] {reserveId,benefitId,"1","TRAINING_CAMP","SUCCESS",scheduleId,"LEAVE","NEED_NOT_REMEDIAL"};
// check 2.1 预约记录列表
JSONArray getPageByStudio = reserveTools.getPageByStudio("","SUCCESS","LEAVE","",TimeUtils.getTodayTime(),TimeUtils.getTodayEndTime(), memberId,"TRAINING_CAMP","1818220193259798530");
boolean success = false;
for(int i =0;i<getPageByStudio.size();i++){
if (getPageByStudio.getJSONObject(i).getString("id").equals(reserveId)){
success = true;
for(int j = 0;j<result.length;j++){
Assert.assertEquals(getPageByStudio.getJSONObject(i).getString(result[j]),resultData[j],"训练营请假无需补课产生的数据与实际数据不符合"+result[j]+":"+resultData[j]);
}
Assert.assertEquals(getPageByStudio.getJSONObject(i).getString("memberId"), memberId,"查询的约课数据不是同一个会员");
}
}
Assert.assertTrue(success,"约课后在约课记录没有查询到相关信息");
// check 2.3 预约记录详情
JSONObject getDetailById = reserveTools.getDetailById(reserveId);
for(int j = 0;j<result.length;j++){
Assert.assertEquals(getDetailById.getString(result[j]),resultData[j],"训练营请假无需补课产生的数据与实际数据不符合"+result[j]+":"+resultData[j]);
}
Assert.assertEquals(getDetailById.getString("memberId"), memberId,"查询的约课数据不是同一个会员");
// check 3: 会员卡消耗记录中包含该记录签到消耗还是请假,请假已经扣除不会再扣
JSONArray consumeRecord = cardTools.fetchPageOfConsumeRecord(benefitId,memberCardId).getJSONObject("result").getJSONArray("records");
String[] result2 = new String[] {"resourceId","consumeType","changeOfPurchaseBalance"};
String[] respect = new String[] {reserveId,"LEAVE","-1.00"};
String[] message = new String[] {"训练营消耗记录中记录的资源id与实际约课记录id不符合","训练营消耗记录中记录的资源id与实际约课记录类型不符合","训练营消耗记录中记录的资源id与实际约课记录余额不符合"};
for (int i = 0; i < result2.length; i++){
Assert.assertEquals(consumeRecord.getJSONObject(0).getString(result2[i]),respect[i],message[i]);
}
}
}
......@@ -33,6 +33,7 @@ public class ApiModule {
public static String Polar_Data ="polar_data";//数据中心
public static String Lunar_Order="lunar_order";//C端订单
public static String Lunar_Training="lunar_training";//C端订单
......
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