Commit 292db45b by xuyamei

修改报错

parent c1cfdb04
...@@ -409,5 +409,49 @@ public class CourseTools extends XMBaseTest { ...@@ -409,5 +409,49 @@ public class CourseTools extends XMBaseTest {
} }
/**
* @description: 编辑私教课程
* @author: xuyamei
* @date: 2024/7/26 11:57
* @param categoryId 课程类型
* @param courseId 课程id
* @param courseName 课程名称
* @param duration 时长
* @param coachId 教练
* @param capacity 容量
* @param dataUserInfo
* @return: void
**/
public void editPersonalCourse(String categoryId,String courseId,String courseName,int duration,String coachId,String capacity,DataUserInfo...dataUserInfo){
dataApi.setApiModule(ApiModule.Polar_Course)
.setApiName("API_editPersonalCourse")
.setTerminal(Terminal.B);
super.beforeDataRequest(dataUserInfo);
JSONObject body = new JSONObject();
body.put("categoryId", categoryId);
body.put("courseName", courseName);
body.put("duration", duration); // 时长
body.put("difficulty", 3); // 难度
body.put("color", "#AACF53");
body.put("coverId", "0");
body.put("timeUnit", "MINUTE");
body.put("operatorId", dataApi.getLoginInfo().getAdminId());
body.put("sourceId", dataApi.getLoginInfo().getStudioId()); // 来源:场馆、品牌
body.put("sourceType", "STUDIO"); // 来源类型:场馆、品牌
body.put("brandId", dataApi.getLoginInfo().getBrandId()); // 品牌
body.put("studioId", dataApi.getLoginInfo().getStudioId());
body.put("sizeType", "ONE_TO_MANY"); // 私教模式
body.put("allArea", false); // 场地
JSONArray coachIds = new JSONArray();
coachIds.add(coachId);
body.put("coachIds", coachIds);
body.put("capacity", capacity); // 课容量
body.put("minCapacity", 1); // 开课人数
body.put("brandCourseId", courseId);
dataApi.doRequest(RequestType.JSON, dataparams, body.toString(), dataheadrs).assetsSuccess(true);
}
} }
...@@ -296,7 +296,7 @@ public class CardTools extends XMBaseTest { ...@@ -296,7 +296,7 @@ public class CardTools extends XMBaseTest {
/** /**
* @param courseId:课程id * @param courseId:课程id
* @param courseType:课程类型 GROUP_CLASS * @param courseType:课程类型 GROUP_CLASS
* @param accountType:账户类型 MEMBER * @param accountType:账户类型 MEMBER:EXPERIENCE
* @param memberId 会员id * @param memberId 会员id
* @param reserveDate:约课时间 * @param reserveDate:约课时间
* @param dataUserInfos * @param dataUserInfos
......
...@@ -8,6 +8,7 @@ import com.xiaomai.enums.RequestType; ...@@ -8,6 +8,7 @@ import com.xiaomai.enums.RequestType;
import com.xiaomai.enums.Terminal; import com.xiaomai.enums.Terminal;
import com.xiaomai.utils.TimeUtils; import com.xiaomai.utils.TimeUtils;
import com.xiaomai.utils.XMBaseTest; import com.xiaomai.utils.XMBaseTest;
import com.xiaomai.utils.XMJSONPath;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
/** /**
...@@ -79,6 +80,58 @@ public class ReserveTools extends XMBaseTest { ...@@ -79,6 +80,58 @@ public class ReserveTools extends XMBaseTest {
} }
/** /**
* @description: 预约私教课
* @author: xuyamei
* @date: 2024/7/26 17:34
* @param areaId 场地id
* @param courseId 课程id
* @param chiefCoachId 教练id
* @param memberId 会员id
* @param benefitId 权益id
* @param spanMinutes 上课时长
* @param reserveMemberNum 预约人数
* @param scheduleId 课次id
* @param scheduleStartTime 上课开始时间
* @param success
* @param dataUserInfos
* @return: java.lang.String
**/
public String addPersonalReserve(String areaId,String courseId,String chiefCoachId,String memberId,String benefitId,int spanMinutes,int reserveMemberNum,String scheduleId,long scheduleStartTime,boolean success,DataUserInfo...dataUserInfos) {
dataApi.setApiModule(ApiModule.Polar_Reserve)
.setApiName("API_addPersonalReserve")
.setTerminal(Terminal.B);
super.beforeDataRequest(dataUserInfos);
JSONObject body = new JSONObject();
JSONArray areaIds = new JSONArray(); // 场地,私教约课会用到
if (!areaId.equals("")){
areaIds.add(areaId);
}
body.put("courseId",courseId);
body.put("benefitId",benefitId); //会员卡权益Id
body.put("chiefCoachId", chiefCoachId); // 主教id
body.put("memberId", memberId); // 会员id
body.put("planCheckBalance", 1); // 计划扣除额度
body.put("reserveMemberNum", reserveMemberNum); // 预约人数
body.put("spanMinutes",spanMinutes); // 上课时长
body.put("brandId", dataApi.getLoginInfo().getBrandId());
body.put("operatorId", dataApi.getLoginInfo().getAdminId()); // 操作人id
body.put("studioId", dataApi.getLoginInfo().getStudioId());
if (!scheduleId.equals("")){
body.put("scheduleId", scheduleId); // 课次id
}
body.put("scheduleStartTime", scheduleStartTime); // 课次id
body.put("memo","自动化添加预约备注"+TimeUtils.getCurrentTime());
dataApi.doRequest(RequestType.JSON,dataparams,body.toString(),dataheadrs).assetsSuccess(success);
if (success){
return dataApi.getBodyInJSON().getJSONObject("result").getString("reserveId");
}
return dataApi.getBodyInJSON().toString();
}
/**
* @description:获取会员预约记录列表 * @description:获取会员预约记录列表
* @author: xuyamei * @author: xuyamei
* @date: 2024/6/12 15:26 * @date: 2024/6/12 15:26
...@@ -565,8 +618,32 @@ public class ReserveTools extends XMBaseTest { ...@@ -565,8 +618,32 @@ public class ReserveTools extends XMBaseTest {
} }
/**
* @param startDate
* @param endDate
* @description:查询私教课表
* @author: xuyamei
* @date: 2024/6/23 17:46
* @return: com.alibaba.fastjson.JSONArray
**/
public JSONArray getPersonalScheduleTable(Long startDate, Long endDate,String courseId) {
setUp("API_getPersonalScheduleTable");
JSONObject body = new JSONObject();
body.put("operatorId", dataApi.getLoginInfo().getAdminId());
body.put("studioId", dataApi.getLoginInfo().getStudioId());
body.put("brandId", dataApi.getLoginInfo().getBrandId());
if (courseId.equals("")){
body.put("courseId", courseId);
}
body.put("startDate", startDate);
body.put("endDate", endDate);
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;
}
}
} }
...@@ -3,6 +3,7 @@ package com.xiaomai.cases.polar.reserve.group; ...@@ -3,6 +3,7 @@ package com.xiaomai.cases.polar.reserve.group;
import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.xiaomai.basetest.BaseTestImpl; import com.xiaomai.basetest.BaseTestImpl;
import com.xiaomai.cases.polar.clue.MemberTools;
import com.xiaomai.cases.polar.course.CourseTools; import com.xiaomai.cases.polar.course.CourseTools;
import com.xiaomai.cases.polar.finance.order.OrderTools; import com.xiaomai.cases.polar.finance.order.OrderTools;
import com.xiaomai.cases.polar.member.Tools; import com.xiaomai.cases.polar.member.Tools;
...@@ -15,11 +16,13 @@ import com.xiaomai.enums.ApiModule; ...@@ -15,11 +16,13 @@ import com.xiaomai.enums.ApiModule;
import com.xiaomai.enums.LoginAccount; import com.xiaomai.enums.LoginAccount;
import com.xiaomai.enums.Terminal; import com.xiaomai.enums.Terminal;
import com.xiaomai.utils.CommUtil; import com.xiaomai.utils.CommUtil;
import com.xiaomai.utils.RandomStringUtil;
import com.xiaomai.utils.TimeUtils; import com.xiaomai.utils.TimeUtils;
import com.xiaomai.utils.XMJSONPath; import com.xiaomai.utils.XMJSONPath;
import org.springframework.core.annotation.Order; import org.springframework.core.annotation.Order;
import org.testng.Assert; import org.testng.Assert;
import org.testng.annotations.BeforeClass; import org.testng.annotations.BeforeClass;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.DataProvider; import org.testng.annotations.DataProvider;
import org.testng.annotations.Test; import org.testng.annotations.Test;
...@@ -51,6 +54,9 @@ public class TestAddMemberReserve extends BaseTestImpl { ...@@ -51,6 +54,9 @@ public class TestAddMemberReserve extends BaseTestImpl {
@Resource(name = "ruleTools") @Resource(name = "ruleTools")
RuleTools ruleTools; RuleTools ruleTools;
MemberTools memberTools = new MemberTools();
OrderTools orderTools = new OrderTools(); OrderTools orderTools = new OrderTools();
CardTools cardTools = new CardTools(); CardTools cardTools = new CardTools();
...@@ -69,7 +75,9 @@ public class TestAddMemberReserve extends BaseTestImpl { ...@@ -69,7 +75,9 @@ public class TestAddMemberReserve extends BaseTestImpl {
private String courseId; private String courseId;
private String reserveId; private String reserveId;
@BeforeClass private String memberCardId;
@BeforeMethod
@Override @Override
public void beforeTest(){ public void beforeTest(){
setTestInfo(ApiModule.Polar_Reserve,"API_addReserve", LoginAccount.GYM_PROD, Terminal.B,"xym"); setTestInfo(ApiModule.Polar_Reserve,"API_addReserve", LoginAccount.GYM_PROD, Terminal.B,"xym");
...@@ -86,22 +94,23 @@ public class TestAddMemberReserve extends BaseTestImpl { ...@@ -86,22 +94,23 @@ public class TestAddMemberReserve extends BaseTestImpl {
int[] minuteOffset = {60, 120, 180, 240, 300, 360, 420, 480, 540, 600, 660, 720, 780, 840, 900, 960, 1020, 1080, 1140, 1200, 1260}; int[] minuteOffset = {60, 120, 180, 240, 300, 360, 420, 480, 540, 600, 660, 720, 780, 840, 900, 960, 1020, 1080, 1140, 1200, 1260};
Random random = new Random(); Random random = new Random();
//1.1-创建排课日程 //1.1-创建排课日程
groupScheduleTools.createGroupRuleSchedule(courseId, xmAppApi.getLoginInfo().getAdminId(), todayStartTimeTamp, todayEndDateTimeTamp, new ArrayList(), new ArrayList(), false, 1,minuteOffset[random.nextInt(20)]); groupScheduleTools.createGroupRuleSchedule(courseId, xmAppApi.getLoginInfo().getAdminId(), todayStartTimeTamp, todayEndDateTimeTamp, new ArrayList(), new ArrayList(), true, 1,minuteOffset[random.nextInt(20)]);
//1.2-查询排课日程 //1.2-查询排课日程
JSONArray getGroupRuleScheduleList = groupScheduleTools.getGroupRuleScheduleList(courseId, xmAppApi.getLoginInfo().getAdminId()); JSONArray getGroupRuleScheduleList = groupScheduleTools.getGroupRuleScheduleList(courseId, xmAppApi.getLoginInfo().getAdminId());
//统计查询到的目标日程数量 //统计查询到的目标日程数量
ruldId = XMJSONPath.readPath(getGroupRuleScheduleList.getJSONObject(0), "$.ruleId"); ruldId = XMJSONPath.readPath(getGroupRuleScheduleList.getJSONObject(0), "$.ruleId");
System.out.println("----------ruldId---------"+ ruldId);
Long scheduleStartTime = TimeUtils.getTodayTime(); Long scheduleStartTime = TimeUtils.getTodayTime();
Long scheduleEndTime = TimeUtils.getTodayEndTime(); Long scheduleEndTime = TimeUtils.getTodayEndTime();
try { try {
Thread.sleep(2500); Thread.sleep(3000);
} catch (InterruptedException e) { } catch (InterruptedException e) {
throw new RuntimeException(e); throw new RuntimeException(e);
} }
// 查询课次id // 查询课次id
JSONArray getGroupScheduleTable = groupScheduleTools.getGroupScheduleTable(scheduleStartTime, scheduleEndTime,courseId); JSONArray getGroupScheduleTable = groupScheduleTools.getGroupScheduleTable(scheduleStartTime, scheduleEndTime,courseId);
for (int i = 0; i < getGroupScheduleTable.size(); i++){ for (int i = 0; i < getGroupScheduleTable.size(); i++){
if (getGroupScheduleTable.getJSONObject(i).getString("ruleId").equals(ruldId)){ if (getGroupScheduleTable.getJSONObject(i).containsKey("ruleId") && getGroupScheduleTable.getJSONObject(i).getString("ruleId").equals(ruldId)){
scheduleId = getGroupScheduleTable.getJSONObject(i).getString("scheduleId"); scheduleId = getGroupScheduleTable.getJSONObject(i).getString("scheduleId");
break; break;
} }
...@@ -112,13 +121,18 @@ public class TestAddMemberReserve extends BaseTestImpl { ...@@ -112,13 +121,18 @@ public class TestAddMemberReserve extends BaseTestImpl {
throw new RuntimeException(e); throw new RuntimeException(e);
} }
// 查询存量的学员没有则创建学员,// todo 先手动新建 // 查询存量的学员没有则创建学员
if (tools.commonSearch("约课学员sandy","NORMAL").getJSONArray("result").size()>0){ if (tools.commonSearch("约课学员sandy","NORMAL").getJSONArray("result").size()>0){
memberId = tools.commonSearch("约课学员sandy","NORMAL").getJSONArray("result").getJSONObject(0).getString("id"); memberId = tools.commonSearch("约课学员sandy","NORMAL").getJSONArray("result").getJSONObject(0).getString("id");
}else if (tools.commonSearch("约课学员sandy","HISTORY").getJSONArray("result").size()>0){ }else if (tools.commonSearch("约课学员sandy","HISTORY").getJSONArray("result").size()>0){
memberId = tools.commonSearch("约课学员sandy","HISTORY").getJSONArray("result").getJSONObject(0).getString("id"); memberId = tools.commonSearch("约课学员sandy","HISTORY").getJSONArray("result").getJSONObject(0).getString("id");
}else if (tools.commonSearch("约课学员sandy","POTENTIAL").getJSONArray("result").size()>0){
memberId = tools.commonSearch("约课学员sandy","POTENTIAL").getJSONArray("result").getJSONObject(0).getString("id");
}else{
memberId = memberTools.create("约课学员sandy", RandomStringUtil.randomMobile("203")).getString("result");
} }
// 查询是否有可用的会员卡,没有则购买 // 查询是否有可用的会员卡,没有则购买
JSONArray listUserReservableBenefit = cardTools.listUserReservableBenefit(courseId, "GROUP_CLASS", "MEMBER", memberId, TimeUtils.getTodayTime()); JSONArray listUserReservableBenefit = cardTools.listUserReservableBenefit(courseId, "GROUP_CLASS", "MEMBER", memberId, TimeUtils.getTodayTime());
if (listUserReservableBenefit.size() == 0) { if (listUserReservableBenefit.size() == 0) {
...@@ -133,6 +147,7 @@ public class TestAddMemberReserve extends BaseTestImpl { ...@@ -133,6 +147,7 @@ public class TestAddMemberReserve extends BaseTestImpl {
} }
// 查询权益 // 查询权益
benefitId = listUserReservableBenefit.getJSONObject(0).getString("benefitId"); benefitId = listUserReservableBenefit.getJSONObject(0).getString("benefitId");
memberCardId = listUserReservableBenefit.getJSONObject(0).getString("memberCardId");
// 查询课次详情 查课次的开始时间 // 查询课次详情 查课次的开始时间
JSONObject getScheduleItemDetail = groupScheduleTools.getScheduleItemDetail(scheduleId); JSONObject getScheduleItemDetail = groupScheduleTools.getScheduleItemDetail(scheduleId);
...@@ -191,11 +206,18 @@ public class TestAddMemberReserve extends BaseTestImpl { ...@@ -191,11 +206,18 @@ public class TestAddMemberReserve extends BaseTestImpl {
} }
Assert.assertEquals(getDetailById.getString("memberId"),memberId,"查询的约课数据不是同一个会员"); Assert.assertEquals(getDetailById.getString("memberId"),memberId,"查询的约课数据不是同一个会员");
// check 4: 会员卡消耗记录中包含该记录锁定 // check 3: 会员卡消耗记录中包含该记录锁定
JSONArray consumeRecord = cardTools.fetchPageOfConsumeRecord(benefitId,memberCardId).getJSONObject("result").getJSONArray("records");
String[] result2 = {"resourceId","consumeType","changeOfUsablePurchaseBalance"};
String[] respect = {reserveId,"RESERVE","-1.00"};
String[] message = {"会员卡消耗记录中记录的资源id与实际约课记录id不符合","会员卡消耗记录中记录的资源id与实际约课记录类型不符合","会员卡消耗记录中记录的资源id与实际约课记录余额不符合"};
for (int i = 0; i < result2.length; i++){
Assert.assertEquals(consumeRecord.getJSONObject(0).getString(result2[i]),respect[i],message[i]);
}
} }
// todo 补充修改会员卡有效期然后继续预约
@Test(priority = 1,description = "学员已经在课次中,无需重复添加") @Test(priority = 1,description = "学员已经在课次中,无需重复添加")
public void testAddMemberReserve2(){ public void testAddMemberReserve2(){
...@@ -217,13 +239,15 @@ public class TestAddMemberReserve extends BaseTestImpl { ...@@ -217,13 +239,15 @@ public class TestAddMemberReserve extends BaseTestImpl {
// 新学员 购买卡 // 新学员 购买卡
String memberId2 = ""; String memberId2 = "";
// 查询存量的学员没有则创建学员,// todo 先手动新建 // 查询存量的学员没有则创建学员
if (tools.commonSearch("约课学员susan","NORMAL").getJSONArray("result").size()>0){ if (tools.commonSearch("约课学员susan","NORMAL").getJSONArray("result").size()>0){
memberId2 = tools.commonSearch("约课学员susan","NORMAL").getJSONArray("result").getJSONObject(0).getString("id"); memberId2 = tools.commonSearch("约课学员susan","NORMAL").getJSONArray("result").getJSONObject(0).getString("id");
}else if (tools.commonSearch("约课学员susan","HISTORY").getJSONArray("result").size()>0){ }else if (tools.commonSearch("约课学员susan","HISTORY").getJSONArray("result").size()>0){
memberId2 = tools.commonSearch("约课学员susan","HISTORY").getJSONArray("result").getJSONObject(0).getString("id"); memberId2 = tools.commonSearch("约课学员susan","HISTORY").getJSONArray("result").getJSONObject(0).getString("id");
}else{ }else if (tools.commonSearch("约课学员susan","POTENTIAL").getJSONArray("result").size()>0){
memberId2 = tools.commonSearch("约课学员susan","POTENTIAL").getJSONArray("result").getJSONObject(0).getString("id"); memberId2 = tools.commonSearch("约课学员susan","POTENTIAL").getJSONArray("result").getJSONObject(0).getString("id");
}else{
memberId2 = memberTools.create("约课学员susan", RandomStringUtil.randomMobile("203")).getString("result");
} }
// 查询是否有可用的会员卡,没有则购买 // 查询是否有可用的会员卡,没有则购买
...@@ -294,7 +318,14 @@ public class TestAddMemberReserve extends BaseTestImpl { ...@@ -294,7 +318,14 @@ public class TestAddMemberReserve extends BaseTestImpl {
} }
Assert.assertTrue(success,"取消约课后在约课记录查询取消状态没有查询到相关信息"); Assert.assertTrue(success,"取消约课后在约课记录查询取消状态没有查询到相关信息");
// todo 查询会员卡取消后释放锁定次数 // check 3: 会员卡消耗记录中包含该记录锁定的次数释放
JSONArray consumeRecord = cardTools.fetchPageOfConsumeRecord(benefitId,memberCardId).getJSONObject("result").getJSONArray("records");
String[] result2 = new String[] {"resourceId","consumeType","changeOfUsablePurchaseBalance"};
String[] respect = new String[] {reserveId,"CANCEL_RESERVE","1.00"};
String[] message1 = new String[] {"会员卡消耗记录中记录的资源id与实际约课记录id不符合","会员卡消耗记录中记录的资源id与实际约课记录类型不符合","会员卡消耗记录中记录的资源id与实际约课记录余额不符合"};
for (int i = 0; i < consumeRecord.size(); i++){
Assert.assertEquals(consumeRecord.getJSONObject(0).getString(result2[i]),respect[i],message1[i]);
}
} }
} }
......
...@@ -3,6 +3,7 @@ package com.xiaomai.cases.polar.reserve.group; ...@@ -3,6 +3,7 @@ package com.xiaomai.cases.polar.reserve.group;
import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.xiaomai.basetest.BaseTestImpl; import com.xiaomai.basetest.BaseTestImpl;
import com.xiaomai.cases.polar.clue.MemberTools;
import com.xiaomai.cases.polar.course.CourseTools; import com.xiaomai.cases.polar.course.CourseTools;
import com.xiaomai.cases.polar.finance.order.OrderTools; import com.xiaomai.cases.polar.finance.order.OrderTools;
import com.xiaomai.cases.polar.member.Tools; import com.xiaomai.cases.polar.member.Tools;
...@@ -15,10 +16,12 @@ import com.xiaomai.enums.ApiModule; ...@@ -15,10 +16,12 @@ import com.xiaomai.enums.ApiModule;
import com.xiaomai.enums.LoginAccount; import com.xiaomai.enums.LoginAccount;
import com.xiaomai.enums.Terminal; import com.xiaomai.enums.Terminal;
import com.xiaomai.utils.CommUtil; import com.xiaomai.utils.CommUtil;
import com.xiaomai.utils.RandomStringUtil;
import com.xiaomai.utils.TimeUtils; import com.xiaomai.utils.TimeUtils;
import com.xiaomai.utils.XMJSONPath; import com.xiaomai.utils.XMJSONPath;
import org.testng.Assert; import org.testng.Assert;
import org.testng.annotations.BeforeClass; import org.testng.annotations.BeforeClass;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.DataProvider; import org.testng.annotations.DataProvider;
import org.testng.annotations.Test; import org.testng.annotations.Test;
...@@ -49,6 +52,8 @@ public class TestAddToQueue extends BaseTestImpl { ...@@ -49,6 +52,8 @@ public class TestAddToQueue extends BaseTestImpl {
@Resource(name = "ruleTools") @Resource(name = "ruleTools")
RuleTools ruleTools; RuleTools ruleTools;
MemberTools memberTools = new MemberTools();
OrderTools orderTools = new OrderTools(); OrderTools orderTools = new OrderTools();
CardTools cardTools = new CardTools(); CardTools cardTools = new CardTools();
...@@ -69,7 +74,7 @@ public class TestAddToQueue extends BaseTestImpl { ...@@ -69,7 +74,7 @@ public class TestAddToQueue extends BaseTestImpl {
private Long startTime; private Long startTime;
private String courseId; private String courseId;
@BeforeClass @BeforeMethod
@Override @Override
public void beforeTest(){ public void beforeTest(){
setTestInfo(ApiModule.Polar_Reserve,"API_addReserve", LoginAccount.GYM_PROD, Terminal.B,"xym"); setTestInfo(ApiModule.Polar_Reserve,"API_addReserve", LoginAccount.GYM_PROD, Terminal.B,"xym");
...@@ -125,7 +130,14 @@ public class TestAddToQueue extends BaseTestImpl { ...@@ -125,7 +130,14 @@ public class TestAddToQueue extends BaseTestImpl {
// check 1: 预约记录、会员详情预约记录、预约详情数据check // check 1: 预约记录、会员详情预约记录、预约详情数据check
checkReserve(memberId2.getString(0),reserveId,"QUEUE_PROCESS",memberId2.getString(1),"排队"); checkReserve(memberId2.getString(0),reserveId,"QUEUE_PROCESS",memberId2.getString(1),"排队");
// todo check 4: 会员卡消耗记录中包含该记录锁定 // check 2: 会员卡消耗记录中包含该记录锁定
JSONArray consumeRecord = cardTools.fetchPageOfConsumeRecord(memberId2.getString(1),memberId2.getString(2)).getJSONObject("result").getJSONArray("records");
String[] result2 = {"resourceId","consumeType","changeOfUsablePurchaseBalance"};
String[] respect = {reserveId,"RESERVE","-1.00"};
String[] message = {"会员卡消耗记录中记录的资源id与实际约课记录id不符合","会员卡消耗记录中记录的资源id与实际约课记录类型不符合","会员卡消耗记录中记录的资源id与实际约课记录余额不符合"};
for (int i = 0; i < result2.length; i++){
Assert.assertEquals(consumeRecord.getJSONObject(0).getString(result2[i]),respect[i],message[i]);
}
} }
...@@ -173,14 +185,22 @@ public class TestAddToQueue extends BaseTestImpl { ...@@ -173,14 +185,22 @@ public class TestAddToQueue extends BaseTestImpl {
Assert.assertEquals(getDetailById.getString("queueSort"),"2","排队后排队名次应该是第二位"); Assert.assertEquals(getDetailById.getString("queueSort"),"2","排队后排队名次应该是第二位");
// 操作2:将第一位"排队学员Amy"的排队取消 // 操作2:将第一位"排队学员Amy"的排队取消
reserveTools.cancelMemberReserve(memberId2.getString(2),true); reserveTools.cancelMemberReserve(memberId2.getString(3),true);
try { try {
Thread.sleep(2500); Thread.sleep(2500);
} catch (InterruptedException e) { } catch (InterruptedException e) {
throw new RuntimeException(e); throw new RuntimeException(e);
} }
// check 2.1: 排队学员Amy 排队记录已取消 // check 2.1: 排队学员Amy 排队记录已取消
checkReserve(memberId2.getString(0),memberId2.getString(2),"QUEUE_CANCEL",memberId2.getString(1),"排队"); checkReserve(memberId2.getString(0),memberId2.getString(3),"QUEUE_CANCEL",memberId2.getString(1),"排队");
// check 2.2 排队学员Amy 会员卡消耗记录中包含该记录释放
JSONArray consumeRecord = cardTools.fetchPageOfConsumeRecord(memberId2.getString(1),memberId2.getString(2)).getJSONObject("result").getJSONArray("records");
String[] result2 = new String[] {"resourceId","consumeType","changeOfUsablePurchaseBalance"};
String[] respect = new String[] {reserveId,"CANCEL_QUEUE","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]);
}
//check 2.2 排队学员yaya 排在第一位 //check 2.2 排队学员yaya 排在第一位
getDetailById = reserveTools.getDetailById(reserveId); getDetailById = reserveTools.getDetailById(reserveId);
...@@ -265,7 +285,7 @@ public class TestAddToQueue extends BaseTestImpl { ...@@ -265,7 +285,7 @@ public class TestAddToQueue extends BaseTestImpl {
int[] minuteOffset = {60, 120, 180, 240, 300, 360, 420, 480, 540, 600, 660, 720, 780, 840, 900, 960, 1020, 1080, 1140, 1200, 1260}; int[] minuteOffset = {60, 120, 180, 240, 300, 360, 420, 480, 540, 600, 660, 720, 780, 840, 900, 960, 1020, 1080, 1140, 1200, 1260};
Random random = new Random(); Random random = new Random();
//1.1-创建排课日程 //1.1-创建排课日程
groupScheduleTools.createGroupRuleSchedule(courseId, xmAppApi.getLoginInfo().getAdminId(), todayStartTimeTamp, todayEndDateTimeTamp, new ArrayList(), new ArrayList(), false, 1,minuteOffset[random.nextInt(20)]); groupScheduleTools.createGroupRuleSchedule(courseId, xmAppApi.getLoginInfo().getAdminId(), todayStartTimeTamp, todayEndDateTimeTamp, new ArrayList(), new ArrayList(), true, 1,minuteOffset[random.nextInt(20)]);
//1.2-查询排课日程 //1.2-查询排课日程
JSONArray getGroupRuleScheduleList = groupScheduleTools.getGroupRuleScheduleList(courseId, xmAppApi.getLoginInfo().getAdminId()); JSONArray getGroupRuleScheduleList = groupScheduleTools.getGroupRuleScheduleList(courseId, xmAppApi.getLoginInfo().getAdminId());
//统计查询到的目标日程数量 //统计查询到的目标日程数量
...@@ -279,7 +299,7 @@ public class TestAddToQueue extends BaseTestImpl { ...@@ -279,7 +299,7 @@ public class TestAddToQueue extends BaseTestImpl {
// 查询课次id // 查询课次id
JSONArray getGroupScheduleTable = groupScheduleTools.getGroupScheduleTable(Long.valueOf(todayStartTimeTamp), scheduleEndTime,courseId); JSONArray getGroupScheduleTable = groupScheduleTools.getGroupScheduleTable(Long.valueOf(todayStartTimeTamp), scheduleEndTime,courseId);
for (int i = 0; i < getGroupScheduleTable.size(); i++){ for (int i = 0; i < getGroupScheduleTable.size(); i++){
if (getGroupScheduleTable.getJSONObject(i).getString("ruleId").equals(ruldId)){ if (getGroupScheduleTable.getJSONObject(i).containsKey("ruleId") && getGroupScheduleTable.getJSONObject(i).getString("ruleId").equals(ruldId)){
scheduleId = getGroupScheduleTable.getJSONObject(i).getString("scheduleId"); scheduleId = getGroupScheduleTable.getJSONObject(i).getString("scheduleId");
break; break;
} }
...@@ -295,13 +315,15 @@ public class TestAddToQueue extends BaseTestImpl { ...@@ -295,13 +315,15 @@ public class TestAddToQueue extends BaseTestImpl {
**/ **/
public JSONArray createMember(String memberName){ public JSONArray createMember(String memberName){
String memberId = ""; String memberId = "";
// 查询存量的学员没有则创建学员,// todo 先手动新建 // 查询存量的学员没有则创建学员
if (tools.commonSearch(memberName,"NORMAL").getJSONArray("result").size()>0){ if (tools.commonSearch(memberName,"NORMAL").getJSONArray("result").size()>0){
memberId = tools.commonSearch(memberName,"NORMAL").getJSONArray("result").getJSONObject(0).getString("id"); memberId = tools.commonSearch(memberName,"NORMAL").getJSONArray("result").getJSONObject(0).getString("id");
}else if (tools.commonSearch(memberName,"HISTORY").getJSONArray("result").size()>0){ }else if (tools.commonSearch(memberName,"HISTORY").getJSONArray("result").size()>0){
memberId = tools.commonSearch(memberName,"HISTORY").getJSONArray("result").getJSONObject(0).getString("id"); memberId = tools.commonSearch(memberName,"HISTORY").getJSONArray("result").getJSONObject(0).getString("id");
}else{ }else if (tools.commonSearch(memberName,"POTENTIAL").getJSONArray("result").size()>0){
memberId = tools.commonSearch(memberName,"POTENTIAL").getJSONArray("result").getJSONObject(0).getString("id"); memberId = tools.commonSearch(memberName,"POTENTIAL").getJSONArray("result").getJSONObject(0).getString("id");
}else{
memberId = memberTools.create(memberName, RandomStringUtil.randomMobile("203")).getString("result");
} }
// 查询是否有可用的会员卡,没有则购买 // 查询是否有可用的会员卡,没有则购买
...@@ -318,10 +340,12 @@ public class TestAddToQueue extends BaseTestImpl { ...@@ -318,10 +340,12 @@ public class TestAddToQueue extends BaseTestImpl {
} }
// 查询权益 // 查询权益
String benefitId = listUserReservableBenefit.getJSONObject(0).getString("benefitId"); String benefitId = listUserReservableBenefit.getJSONObject(0).getString("benefitId");
String memberCardId = listUserReservableBenefit.getJSONObject(0).getString("memberCardId");
JSONArray members = new JSONArray(); JSONArray members = new JSONArray();
members.add(memberId); members.add(memberId);
members.add(benefitId); members.add(benefitId);
members.add(memberCardId);
return members; return members;
} }
......
...@@ -3,6 +3,7 @@ package com.xiaomai.cases.polar.reserve.group; ...@@ -3,6 +3,7 @@ package com.xiaomai.cases.polar.reserve.group;
import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.xiaomai.basetest.BaseTestImpl; import com.xiaomai.basetest.BaseTestImpl;
import com.xiaomai.cases.polar.clue.MemberTools;
import com.xiaomai.cases.polar.course.CourseTools; import com.xiaomai.cases.polar.course.CourseTools;
import com.xiaomai.cases.polar.finance.order.OrderTools; import com.xiaomai.cases.polar.finance.order.OrderTools;
import com.xiaomai.cases.polar.member.Tools; import com.xiaomai.cases.polar.member.Tools;
...@@ -14,10 +15,12 @@ import com.xiaomai.enums.ApiModule; ...@@ -14,10 +15,12 @@ import com.xiaomai.enums.ApiModule;
import com.xiaomai.enums.LoginAccount; import com.xiaomai.enums.LoginAccount;
import com.xiaomai.enums.Terminal; import com.xiaomai.enums.Terminal;
import com.xiaomai.utils.CommUtil; import com.xiaomai.utils.CommUtil;
import com.xiaomai.utils.RandomStringUtil;
import com.xiaomai.utils.TimeUtils; import com.xiaomai.utils.TimeUtils;
import com.xiaomai.utils.XMJSONPath; import com.xiaomai.utils.XMJSONPath;
import org.testng.Assert; import org.testng.Assert;
import org.testng.annotations.BeforeClass; import org.testng.annotations.BeforeClass;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.DataProvider; import org.testng.annotations.DataProvider;
import org.testng.annotations.Test; import org.testng.annotations.Test;
...@@ -47,6 +50,7 @@ public class TestSignIn extends BaseTestImpl { ...@@ -47,6 +50,7 @@ public class TestSignIn extends BaseTestImpl {
@Resource(name = "groupScheduleTools") @Resource(name = "groupScheduleTools")
GroupScheduleTools groupScheduleTools; GroupScheduleTools groupScheduleTools;
MemberTools memberTools = new MemberTools();
OrderTools orderTools = new OrderTools(); OrderTools orderTools = new OrderTools();
CardTools cardTools = new CardTools(); CardTools cardTools = new CardTools();
...@@ -66,7 +70,7 @@ public class TestSignIn extends BaseTestImpl { ...@@ -66,7 +70,7 @@ public class TestSignIn extends BaseTestImpl {
private String courseId; private String courseId;
@BeforeClass @BeforeMethod
@Override @Override
public void beforeTest(){ public void beforeTest(){
setTestInfo(ApiModule.Polar_Reserve,"API_signIn", LoginAccount.GYM_PROD, Terminal.B,"xym"); setTestInfo(ApiModule.Polar_Reserve,"API_signIn", LoginAccount.GYM_PROD, Terminal.B,"xym");
...@@ -96,7 +100,7 @@ public class TestSignIn extends BaseTestImpl { ...@@ -96,7 +100,7 @@ public class TestSignIn extends BaseTestImpl {
throw new RuntimeException(e); throw new RuntimeException(e);
} }
// 操作签到 // 操作签到
reserveTools.signIn(true, memberInfo.getString(2),false); reserveTools.signIn(true, memberInfo.getString(3),false);
try { try {
Thread.sleep(2000); Thread.sleep(2000);
} catch (InterruptedException e) { } catch (InterruptedException e) {
...@@ -150,8 +154,14 @@ public class TestSignIn extends BaseTestImpl { ...@@ -150,8 +154,14 @@ public class TestSignIn extends BaseTestImpl {
} }
Assert.assertEquals(getDetailById.getString("memberId"), memberInfo.getString(0),"查询的约课数据不是同一个会员"); Assert.assertEquals(getDetailById.getString("memberId"), memberInfo.getString(0),"查询的约课数据不是同一个会员");
// check 4: 会员卡消耗记录中包含该记录锁定 // check 3: 会员卡消耗记录中包含该记录签到消耗
JSONArray consumeRecord = cardTools.fetchPageOfConsumeRecord(memberInfo.getString(1),memberInfo.getString(2)).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]);
}
} }
@DataProvider(name = "dataProvider") @DataProvider(name = "dataProvider")
...@@ -165,11 +175,11 @@ public class TestSignIn extends BaseTestImpl { ...@@ -165,11 +175,11 @@ public class TestSignIn extends BaseTestImpl {
@Test(description = "签到",priority = 1,dataProvider = "dataProvider") @Test(description = "签到",priority = 1,dataProvider = "dataProvider")
public void testSignIn2(String type,String message) { public void testSignIn2(String type,String message) {
if (type.equals("signIn")){ if (type.equals("signIn")){
reserveTools.signIn(false, memberInfo.getString(2),false); reserveTools.signIn(false, memberInfo.getString(3),false);
JSONObject response = dataApi.getBodyInJSON(); JSONObject response = dataApi.getBodyInJSON();
Assert.assertEquals(response.getString("message"),message,"已经操作签到,又操作签到提示错误"); Assert.assertEquals(response.getString("message"),message,"已经操作签到,又操作签到提示错误");
}else { }else {
reserveTools.cancelMemberReserve(memberInfo.getString(2),false); reserveTools.cancelMemberReserve(memberInfo.getString(3),false);
JSONObject response = dataApi.getBodyInJSON(); JSONObject response = dataApi.getBodyInJSON();
Assert.assertEquals(response.getString("message"),message,"已经操作签到,又操作取消提示错误"); Assert.assertEquals(response.getString("message"),message,"已经操作签到,又操作取消提示错误");
} }
...@@ -257,7 +267,7 @@ public class TestSignIn extends BaseTestImpl { ...@@ -257,7 +267,7 @@ public class TestSignIn extends BaseTestImpl {
// 查询课次id // 查询课次id
JSONArray getGroupScheduleTable = groupScheduleTools.getGroupScheduleTable(Long.valueOf(todayStartTimeTamp), scheduleEndTime,courseId); JSONArray getGroupScheduleTable = groupScheduleTools.getGroupScheduleTable(Long.valueOf(todayStartTimeTamp), scheduleEndTime,courseId);
for (int i = 0; i < getGroupScheduleTable.size(); i++){ for (int i = 0; i < getGroupScheduleTable.size(); i++){
if (getGroupScheduleTable.getJSONObject(i).getString("ruleId").equals(ruldId)){ if (getGroupScheduleTable.getJSONObject(i).containsKey("ruleId") && getGroupScheduleTable.getJSONObject(i).getString("ruleId").equals(ruldId)){
scheduleId = getGroupScheduleTable.getJSONObject(i).getString("scheduleId"); scheduleId = getGroupScheduleTable.getJSONObject(i).getString("scheduleId");
break; break;
} }
...@@ -273,13 +283,15 @@ public class TestSignIn extends BaseTestImpl { ...@@ -273,13 +283,15 @@ public class TestSignIn extends BaseTestImpl {
**/ **/
public JSONArray createMember(String memberName){ public JSONArray createMember(String memberName){
String memberId = ""; String memberId = "";
// 查询存量的学员没有则创建学员,// todo 先手动新建 // 查询存量的学员没有则创建学员,
if (tools.commonSearch(memberName,"NORMAL").getJSONArray("result").size()>0){ if (tools.commonSearch(memberName,"NORMAL").getJSONArray("result").size()>0){
memberId = tools.commonSearch(memberName,"NORMAL").getJSONArray("result").getJSONObject(0).getString("id"); memberId = tools.commonSearch(memberName,"NORMAL").getJSONArray("result").getJSONObject(0).getString("id");
}else if (tools.commonSearch(memberName,"HISTORY").getJSONArray("result").size()>0){ }else if (tools.commonSearch(memberName,"HISTORY").getJSONArray("result").size()>0){
memberId = tools.commonSearch(memberName,"HISTORY").getJSONArray("result").getJSONObject(0).getString("id"); memberId = tools.commonSearch(memberName,"HISTORY").getJSONArray("result").getJSONObject(0).getString("id");
}else{ }else if (tools.commonSearch(memberName,"POTENTIAL").getJSONArray("result").size()>0){
memberId = tools.commonSearch(memberName,"POTENTIAL").getJSONArray("result").getJSONObject(0).getString("id"); memberId = tools.commonSearch(memberName,"POTENTIAL").getJSONArray("result").getJSONObject(0).getString("id");
}else{
memberId = memberTools.create(memberName, RandomStringUtil.randomMobile("203")).getString("result");
} }
// 查询是否有可用的会员卡,没有则购买 // 查询是否有可用的会员卡,没有则购买
...@@ -296,10 +308,12 @@ public class TestSignIn extends BaseTestImpl { ...@@ -296,10 +308,12 @@ public class TestSignIn extends BaseTestImpl {
} }
// 查询权益 // 查询权益
String benefitId = listUserReservableBenefit.getJSONObject(0).getString("benefitId"); String benefitId = listUserReservableBenefit.getJSONObject(0).getString("benefitId");
String memberCardId = listUserReservableBenefit.getJSONObject(0).getString("memberCardId");
JSONArray members = new JSONArray(); JSONArray members = new JSONArray();
members.add(memberId); members.add(memberId);
members.add(benefitId); members.add(benefitId);
members.add(memberCardId);
return members; return members;
} }
......
package com.xiaomai.cases.polar.reserve.personal; package com.xiaomai.cases.polar.reserve.personal;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.xiaomai.basetest.BaseTestImpl; import com.xiaomai.basetest.BaseTestImpl;
import com.xiaomai.cases.polar.course.CourseTools;
import com.xiaomai.cases.polar.reserve.ReserveTools; import com.xiaomai.cases.polar.reserve.ReserveTools;
import com.xiaomai.cases.polar.setting.courseCategory.CourseCategoryTools;
import com.xiaomai.enums.ApiModule;
import com.xiaomai.enums.LoginAccount;
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; import javax.annotation.Resource;
import java.util.Random;
/** /**
* @BelongsProject: xm-sportstest * @BelongsProject: xm-sportstest
...@@ -17,9 +29,99 @@ public class TestGetPersonalTimeBlocks extends BaseTestImpl { ...@@ -17,9 +29,99 @@ public class TestGetPersonalTimeBlocks extends BaseTestImpl {
@Resource(name = "reserveTools") @Resource(name = "reserveTools")
ReserveTools reserveTools; ReserveTools reserveTools;
@Resource(name = "courseTools")
CourseTools courseTools;
@Resource(name = "courseCategoryTools")
CourseCategoryTools courseCategoryTools;
@BeforeMethod
@Override
public void beforeTest(){
setTestInfo(ApiModule.Polar_Reserve,"API_getPersonalTimeBlocks", LoginAccount.GYM_PROD, Terminal.B,"xym");
super.beforeTest();
}
private String coachedId;
private String courseId;
@Test
public void TestGetPersonalTimeBlocks() { public void TestGetPersonalTimeBlocks() {
// 获取到员工 // 获取到员工
// 获取到 // 获取教练列表
JSONObject pageStudioPersonalCoach = reserveTools.pageStudioPersonalCoach("");
int total = pageStudioPersonalCoach.getInteger("total");
Random rand = new Random();
// 随机取1个教练
coachedId = pageStudioPersonalCoach.getJSONArray("records").getJSONObject(rand.nextInt(total>10?10:total)).getString("id");
// 获取到相关私教课程
// 获取课程分类
String categoryId = courseCategoryTools.getCourseCategoryPage("私教课分类"+ TimeUtils.getCurrentTime());
courseId = courseTools.getPersonalOrGroupCourseId("PERSONAL","普拉提器械课程",categoryId,"STUDIO","ONE_TO_ONE",1,1).getString(0);
String courseName = courseTools.getPersonalOrGroupCourseId("PERSONAL","普拉提器械课程",categoryId,"STUDIO","ONE_TO_ONE",1,1).getString(1);
// 编辑私教课程教练添加到课程中
courseTools.editPersonalCourse(categoryId,courseId,courseName,1,coachedId,"1");
// 创建私教特殊可约时间
JSONObject specialTimeInfoRequest = new JSONObject();
// 可约时间类型
specialTimeInfoRequest.put("dutyType", "ON_DUTY");
// 设置特定日期
JSONArray selectedDates = new JSONArray();
selectedDates.add(TimeUtils.getTodayTime());
specialTimeInfoRequest.put("selectedDates", selectedDates);
// 如果是可约时间非全天休息,则传可约时间段
// 时间段 00:00 ~ 23:59
JSONArray timePeriodInfos = new JSONArray();
JSONObject timeInfo = new JSONObject();
timeInfo.put("minuteOffset", 0);
timeInfo.put("spanMinutes", 1380);
timePeriodInfos.add(timeInfo);
specialTimeInfoRequest.put("timePeriodInfos", timePeriodInfos);
// 设置特殊可约时间
reserveTools.createSpecialDate(coachedId,"ON_DUTY",specialTimeInfoRequest);
// 检查可约时间块
JSONArray personalTimeBlocks = reserveTools.getPersonalTimeBlocks(coachedId,courseId,TimeUtils.getTodayTime());
Assert.assertTrue(personalTimeBlocks.size()>0,"设置老师今天时间可约,但是返回的结果是空的");
} }
@Test(priority = 1)
public void TestGetPersonalTimeBlocks_OFF() {
// 创建私教特殊可约时间为休息
JSONObject specialTimeInfoRequest = new JSONObject();
// 可约时间类型
specialTimeInfoRequest.put("dutyType", "OFF_DUTY");
// 设置特定日期
JSONArray selectedDates = new JSONArray();
selectedDates.add(TimeUtils.getTodayTime());
specialTimeInfoRequest.put("selectedDates", selectedDates);
// 设置特殊可约时间
reserveTools.createSpecialDate(coachedId,"OFF_DUTY",specialTimeInfoRequest);
// 检查可约时间块
JSONArray personalTimeBlocks = reserveTools.getPersonalTimeBlocks(coachedId,courseId,TimeUtils.getTodayTime());
Assert.assertTrue(personalTimeBlocks.size()==0,"设置老师今天时间休息,但是返回了数据");
}
@Test(priority = 2)
public void del(){
// 查询特殊可约时间列表
JSONArray specialTimeVOS = reserveTools.getPersonalCoachTime(coachedId,"specialTimeVOS");
for (int i = 0; i < specialTimeVOS.size(); i++){
String id = specialTimeVOS.getJSONObject(i).getJSONArray("recordIds").getString(0);
// 删除查询到的特殊可约时间
reserveTools.deleteSpecialDate(id);
}
}
} }
...@@ -360,6 +360,7 @@ public class GroupScheduleTools extends XMBaseTest { ...@@ -360,6 +360,7 @@ public class GroupScheduleTools extends XMBaseTest {
} }
/** /**
* 选择匹配到对应规则ID的课次 * 选择匹配到对应规则ID的课次
* @param n * @param n
......
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