Commit a19c8b30 by yangfangfang

Merge remote-tracking branch 'origin/master'

parents 6a802225 81748936
<?xml version="1.0" encoding="UTF-8"?>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="lunar"> <!-- 起一个好听且唯一的名字-->
<test name="小程序整个模块测试" preserve-order="true" verbose="3"> <!-- 再起一个听且唯一的名字 -->
<packages>
<package name="com.xiaomai.cases.lunar.*"></package> <!-- 添加自己想要集成测试的case 范围自己定 -->
</packages>
</test>
<listeners>
<listener class-name="com.xiaomai.client.RetryListener" />
<listener class-name="com.xiaomai.client.TestListener" />
<listener class-name="com.xiaomai.client.ExtentTestNGIReporterListener"/>
</listeners>
</suite>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<?xml version="1.0" encoding="UTF-8"?>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="整个场景case"> <!-- 起一个好听且唯一的名字-->
<suite name="polar"> <!-- 起一个好听且唯一的名字-->
<test name="整个场馆信息模块测试" preserve-order="true" verbose="3"> <!-- 再起一个听且唯一的名字 -->
<packages>
......
......@@ -11,7 +11,7 @@ import com.xiaomai.enums.RequestType;
import com.xiaomai.enums.Terminal;
import com.xiaomai.utils.TimeUtils;
import org.testng.Assert;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
import java.math.BigDecimal;
......@@ -25,7 +25,8 @@ public class TestListByVoucherId extends BaseTestImpl {
CardTools cardTools=new CardTools();
@BeforeClass
@BeforeMethod
@Override
public void beforeTest(){
setTestInfo(ApiModule.Lunar_Order,"API_listByVoucherId", LoginAccount.GYM_MINIAPPC, Terminal.minApp,"yff");
super.beforeTest();
......
......@@ -13,6 +13,7 @@ import com.xiaomai.enums.RequestType;
import com.xiaomai.enums.Terminal;
import org.testng.Assert;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
import java.math.BigDecimal;
......@@ -34,7 +35,8 @@ public class TestMiniPay extends BaseTestImpl {
OrderTools orderTools=new OrderTools();
@BeforeClass
@BeforeMethod
@Override
public void beforeTest(){
setTestInfo(ApiModule.Lunar_Order,"API_miniPay", LoginAccount.GYM_MINIAPPC, Terminal.minApp,"yff");
super.beforeTest();
......
......@@ -15,6 +15,7 @@ import com.xiaomai.enums.Terminal;
import com.xiaomai.utils.RandomStringUtil;
import org.testng.Assert;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
import java.math.BigDecimal;
......@@ -35,7 +36,8 @@ public class TestPurchaseCard extends BaseTestImpl {
CardTools cardTools=new CardTools();
@BeforeClass
@BeforeMethod
@Override
public void beforeTest(){
setTestInfo(ApiModule.Lunar_Order,"API_purchaseCard", LoginAccount.GYM_MINIAPPC, Terminal.minApp,"yff");
super.beforeTest();
......
......@@ -6,6 +6,7 @@ import com.xiaomai.client.DataUserInfo;
import com.xiaomai.enums.ApiModule;
import com.xiaomai.enums.RequestType;
import com.xiaomai.enums.Terminal;
import com.xiaomai.utils.RandomStringUtil;
import com.xiaomai.utils.XMBaseTest;
import org.springframework.stereotype.Component;
......@@ -183,7 +184,7 @@ public class ReserveCTools extends XMBaseTest {
* @param dataUserInfos
* @return: com.alibaba.fastjson.JSONObject
**/
public JSONObject getDetailById(String reserveId,DataUserInfo...dataUserInfos) {
public JSONObject getReserveDetailById(String reserveId,DataUserInfo...dataUserInfos) {
setUP("API_getDetailById");
JSONObject body = new JSONObject();
......@@ -336,4 +337,130 @@ public class ReserveCTools extends XMBaseTest {
}
/**
* @description: 检查会员课次是否冲突
* @author: xuyamei
* @date: 2024/7/30 11:18
* @param memberId 会员id
* @param scheduleId 课次id
* @return: java.lang.Boolean
**/
public Boolean checkMemberConflict(String memberId,String scheduleId){
setUP("API_checkMemberConflict");
JSONObject body = new JSONObject();
body.put("scheduleId",scheduleId);
body.put("memberId",memberId);
body.put("studioId",dataApi.getLoginInfo().getStudioId());
dataApi.doRequest(RequestType.JSON,dataparams,body.toString(),dataheadrs).assetsSuccess(true);
return dataApi.getBodyInJSON().getJSONObject("result").getBoolean("conflict");
}
/**
* @description:检查是否支持单次约课、排队
* @author: xuyamei
* @date: 2024/7/30 11:37
* @param addToQueue 是否排队
* @param courseId 课程id
* @param chiefCoachId 主教id
* @param memberId 会员id
* @param scheduleId 课次id
* @param scheduleStartTime 课次开始时间
* @param spanMinutes 上课时长
* @param receivableAmount 单次约课金额
* @return: java.lang.String
**/
public String checkAddSingleReserve(boolean addToQueue,String courseId,String chiefCoachId,String memberId,String scheduleId,long scheduleStartTime,int spanMinutes,int receivableAmount){
setUP("API_checkAddSingleReserve");
JSONObject body = new JSONObject();
body.put("addToQueue",addToQueue);
JSONArray areaIds = new JSONArray();
body.put("areaIds", areaIds); // 场地
JSONArray assistantCoachIds = new JSONArray();
body.put("assistantCoachIds",assistantCoachIds); // 助教
body.put("chiefCoachId",chiefCoachId); // 教练
body.put("memberId", memberId); // 会员id
body.put("courseId", courseId); // 课次id
body.put("objectId", RandomStringUtil.randomString(16)); // 会员id
body.put("receivableAmount", receivableAmount); // 会员id
body.put("studioId", dataApi.getLoginInfo().getStudioId());
body.put("scheduleId", scheduleId);
body.put("scheduleStartTime", scheduleStartTime);
body.put("spanMinutes", spanMinutes);
body.put("brandId", dataApi.getLoginInfo().getBrandId());
dataApi.doRequest(RequestType.JSON,dataparams,body.toString(),dataheadrs).assetsSuccess(true);
return dataApi.getBodyInJSON().getJSONObject("result").getString("resultCode");
}
/**
* @description:创建单次约课订单
* @author: xuyamei
* @date: 2024/7/30 11:48
* @param addToQueue 是否排队
* @param chiefCoachId 主教id
* @param memberId 会员id
* @param scheduleId 课次id
* @param scheduleStartTime 课次开始时间
* @param spanMinutes 上课时长
* @param receivableAmount 单次约课金额
* @return: java.lang.String
**/
public String createSingleReserve(boolean addToQueue,String courseId,String chiefCoachId,String memberId,String scheduleId,long scheduleStartTime,int spanMinutes,int receivableAmount){
setUP("API_createSingleReserve");
JSONObject body = new JSONObject();
body.put("addToQueue",addToQueue);
JSONArray areaIds = new JSONArray();
body.put("areaIds", areaIds); // 场地
JSONArray assistantCoachIds = new JSONArray();
body.put("assistantCoachIds",assistantCoachIds); // 助教
body.put("chiefCoachId",chiefCoachId); // 教练
body.put("memberId", memberId); // 会员id
body.put("courseId", courseId); // 课次id
body.put("objectId", RandomStringUtil.randomString(16)); // 会员id
body.put("receivableAmount", receivableAmount); // 会员id
body.put("studioId", dataApi.getLoginInfo().getStudioId());
body.put("scheduleId", scheduleId);
body.put("scheduleStartTime", scheduleStartTime);
body.put("spanMinutes", spanMinutes);
body.put("brandId", dataApi.getLoginInfo().getBrandId());
dataApi.doRequest(RequestType.JSON,dataparams,body.toString(),dataheadrs).assetsSuccess(true);
return dataApi.getBodyInJSON().getString("result");
}
/**
* @description:根据订单凭证id获取任务信息
* @author: xuyamei
* @date: 2024/7/30 11:56
* @param voucherId :订单id
* @return: com.alibaba.fastjson.JSONObject
**/
public JSONObject getDetailById(String voucherId){
setUP("API_singleReserve_getByVoucherId");
JSONObject body = new JSONObject();
body.put("voucherId",voucherId);
dataApi.doRequest(RequestType.JSON,dataparams,body.toString(),dataheadrs).assetsSuccess(true);
return dataApi.getBodyInJSON().getJSONObject("result");
}
}
......@@ -20,6 +20,7 @@ import com.xiaomai.utils.TimeUtils;
import com.xiaomai.utils.XMJSONPath;
import org.testng.Assert;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
......@@ -75,7 +76,8 @@ public class TestAddMemberReserve extends BaseTestImpl {
private String chiefCoachId;
@BeforeClass
@BeforeMethod
@Override
public void beforeTest(){
setTestInfo(ApiModule.Lunar_Reserve,"API_memberTimetable", LoginAccount.GYM_MINIAPPC, Terminal.minApp,"xym");
super.beforeTest();
......@@ -125,7 +127,7 @@ public class TestAddMemberReserve extends BaseTestImpl {
public void testAddMemberReserve2(){
reserveCTools.memberReserveAdd("",chiefCoachId,memberInfo.getString(1),"",memberInfo.getString(0),1,scheduleId,startTime,false);
String message = dataApi.getBodyInJSON().getString("message");
Assert.assertEquals(message,"预约失败,无需重复添加");
Assert.assertTrue(message.equals("预约失败,无需重复添加") || message.equals("会员已约该课程,不可重复预约"));
}
@DataProvider
......@@ -180,7 +182,7 @@ 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};
Random random = new Random();
//1.1-创建排课日程
groupScheduleTools.createGroupRuleSchedule(courseId, dataApi.getLoginInfo().getAdminId(), todayStartTimeTamp, todayEndDateTimeTamp, new ArrayList(), new ArrayList(), false, 1,minuteOffset[random.nextInt(20)],dataUserInfo);
groupScheduleTools.createGroupRuleSchedule(courseId, dataApi.getLoginInfo().getAdminId(), todayStartTimeTamp, todayEndDateTimeTamp, new ArrayList(), new ArrayList(), true, 1,minuteOffset[random.nextInt(20)],dataUserInfo);
//1.2-查询排课日程
JSONArray getGroupRuleScheduleList = groupScheduleTools.getGroupRuleScheduleList(courseId, dataApi.getLoginInfo().getAdminId(),dataUserInfo);
//统计查询到的目标日程数量
......@@ -311,7 +313,7 @@ public class TestAddMemberReserve extends BaseTestImpl {
}
Assert.assertTrue(success,mes+"预约记录没有查询到相关信息");
// check 3:查询小程序预约详情
JSONObject getDetailById = reserveCTools.getDetailById(memberInfo.getString(2));
JSONObject getDetailById = reserveCTools.getReserveDetailById(memberInfo.getString(2));
for(int j = 0;j<result.length;j++){
String resultString = result[j].equals("reserveId")?"id":result[j];
Assert.assertEquals(getDetailById.getString(resultString),resultData[j],mes+"产生的数据与实际数据不符合"+result[j]+":"+resultData[j]);
......
......@@ -21,6 +21,7 @@ import com.xiaomai.utils.TimeUtils;
import com.xiaomai.utils.XMJSONPath;
import org.testng.Assert;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
......@@ -81,7 +82,8 @@ public class TestAddToQueue extends BaseTestImpl {
private String memberId;
private String chiefCoachId;
@BeforeClass
@BeforeMethod
@Override
public void beforeTest(){
setTestInfo(ApiModule.Lunar_Reserve,"API_addToQueue", LoginAccount.GYM_MINIAPPC, Terminal.minApp,"xym");
super.beforeTest();
......@@ -147,16 +149,16 @@ public class TestAddToQueue extends BaseTestImpl {
@DataProvider
public Object[][] data(){
return new Object[][]{
{"reserve","FULL_CAPACITY,会员已约该课程,不可重复预约"},// 已经排队再次预约
{"queue","排队失败,无需重复添加,会员已约该课程,不可重复预约"}, // 已排队再次排队
{"cancel","排队取消成功"},
{"notQueue","排队失败,课次未开放预约"},
{"queuing","排队成功"}
{"reserve","FULL_CAPACITY","会员已约该课程,不可重复预约"},// 已经排队再次预约
{"queue","排队失败,无需重复添加","会员已约该课程,不可重复预约"}, // 已排队再次排队
{"cancel","排队取消成功",""},
{"notQueue","排队失败,课次未开放预约",""},
{"queuing","排队成功",""}
};
}
@Test(priority = 2,dataProvider = "data")
public void testAddToQueue2(String type,String msg) {
public void testAddToQueue2(String type,String msg,String msg2) {
DataUserInfo dataUserInfo = new DataUserInfo();
dataUserInfo.setTerminal(Terminal.B);
dataUserInfo.setLoginUser(LoginAccount.GYM_PROD);
......@@ -164,11 +166,16 @@ public class TestAddToQueue extends BaseTestImpl {
switch(type) {
case "reserve":
reserveCTools.memberReserveAdd("",chiefCoachId,memberInfo.getString(1),"",memberInfo.getString(0),1,scheduleId,startTime,false);
Assert.assertTrue(dataApi.getBodyInJSON().getJSONObject("result").getString("resultCode").contains(msg) || dataApi.getBodyInJSON().getString("message").contains(msg),"排队异常提示信息不符合");
if (dataApi.getBodyInJSON().containsKey("result")){
// 有时候会提示满员
Assert.assertTrue(dataApi.getBodyInJSON().getJSONObject("result").getString("resultCode").equals(msg),"排队异常提示信息不符合");
}else {
Assert.assertTrue(dataApi.getBodyInJSON().getString("message").equals(msg2),"排队异常提示信息不符合");
}
break;
case "queue":
reserveCTools.addToQueue("",chiefCoachId,memberInfo.getString(0),memberInfo.getString(1),"",1,scheduleId,startTime,false);
Assert.assertTrue(dataApi.getBodyInJSON().getString("message").contains(msg),"排队异常提示信息不符合");
Assert.assertTrue(dataApi.getBodyInJSON().getString("message").equals(msg) || dataApi.getBodyInJSON().getString("message").equals(msg2),"排队异常提示信息不符合");
break;
case "cancel":
// 取消排队
......@@ -261,7 +268,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};
Random random = new Random();
//1.1-创建排课日程
groupScheduleTools.createGroupRuleSchedule(courseId, dataApi.getLoginInfo().getAdminId(), todayStartTimeTamp, todayEndDateTimeTamp, new ArrayList(), new ArrayList(), false, 1,minuteOffset[random.nextInt(20)],dataUserInfo);
groupScheduleTools.createGroupRuleSchedule(courseId, dataApi.getLoginInfo().getAdminId(), todayStartTimeTamp, todayEndDateTimeTamp, new ArrayList(), new ArrayList(), true, 1,minuteOffset[random.nextInt(20)],dataUserInfo);
//1.2-查询排课日程
JSONArray getGroupRuleScheduleList = groupScheduleTools.getGroupRuleScheduleList(courseId, dataApi.getLoginInfo().getAdminId(),dataUserInfo);
//统计查询到的目标日程数量
......@@ -405,7 +412,7 @@ public class TestAddToQueue extends BaseTestImpl {
}
Assert.assertTrue(success,mes+"预约记录没有查询到相关信息");
// check 3:查询小程序预约详情
JSONObject getDetailById = reserveCTools.getDetailById(memberInfo.getString(2));
JSONObject getDetailById = reserveCTools.getReserveDetailById(memberInfo.getString(2));
for(int j = 0;j<result.length;j++){
String resultString = result[j].equals("reserveId")?"id":result[j];
Assert.assertEquals(getDetailById.getString(resultString),resultData[j],mes+"产生的数据与实际数据不符合"+result[j]+":"+resultData[j]);
......
......@@ -9,6 +9,7 @@ import com.xiaomai.enums.LoginAccount;
import com.xiaomai.enums.Terminal;
import org.testng.Assert;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
......@@ -30,7 +31,8 @@ public class TestGetGroupBookingRules extends BaseTestImpl {
@Resource(name = "ruleTools")
RuleTools ruleTools;
@BeforeClass
@BeforeMethod
@Override
public void beforeTest() {
setTestInfo(ApiModule.Lunar_Reserve, "API_getGroupBookingRules", LoginAccount.GYM_MINIAPPC, Terminal.minApp, "xym");
super.beforeTest();
......
......@@ -10,6 +10,7 @@ import com.xiaomai.enums.RequestType;
import com.xiaomai.enums.Terminal;
import com.xiaomai.utils.TimeUtils;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
import javax.annotation.Resource;
......@@ -26,7 +27,8 @@ import javax.annotation.Resource;
public class TestMemberTimetable extends BaseTestImpl {
@Resource(name = "userTools")
UserTools userTools;
@BeforeClass
@BeforeMethod
@Override
public void beforeTest(){
setTestInfo(ApiModule.Lunar_Reserve,"API_memberTimetable", LoginAccount.GYM_MINIAPPC, Terminal.minApp,"xym");
super.beforeTest();
......
......@@ -20,6 +20,7 @@ import com.xiaomai.utils.TimeUtils;
import com.xiaomai.utils.XMJSONPath;
import org.testng.Assert;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
......@@ -76,7 +77,8 @@ public class TestXCXSignIn extends BaseTestImpl {
private String chiefCoachId;
@BeforeClass
@BeforeMethod
@Override
public void beforeTest(){
setTestInfo(ApiModule.Lunar_Reserve,"API_signInByScanCode", LoginAccount.GYM_MINIAPPC, Terminal.minApp,"xym");
super.beforeTest();
......@@ -330,7 +332,7 @@ public class TestXCXSignIn extends BaseTestImpl {
}
Assert.assertTrue(success,mes+"预约记录没有查询到相关信息");
// check 3:查询小程序预约详情
JSONObject getDetailById = reserveCTools.getDetailById(memberInfo.getString(2));
JSONObject getDetailById = reserveCTools.getReserveDetailById(memberInfo.getString(2));
for(int j = 0;j<result.length;j++){
String resultString = result[j].equals("reserveId")?"id":result[j];
Assert.assertEquals(getDetailById.getString(resultString),resultData[j],mes+"产生的数据与实际数据不符合"+result[j]+":"+resultData[j]);
......
package com.xiaomai.cases.lunar.training;
import com.alibaba.fastjson.JSONArray;
import com.xiaomai.basetest.BaseTestImpl;
import com.xiaomai.cases.lunar.user.UserTools;
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;
/**
* @BelongsProject: xm-sportstest
* @BelongsPackage: com.xiaomai.cases.lunar.training
* @Author: xuyamei
* @CreateTime: 2024-07-31 17:45
* @Description: 训练营课表数据
* @Version: 1.0
*/
public class TestGetMemberCampScheduleItemList extends BaseTestImpl {
@Resource(name = "trainingCTools")
TrainingCTools trainTools;
@Resource(name = "userTools")
UserTools userTools;
@BeforeMethod
@Override
public void beforeTest(){
setTestInfo(ApiModule.Lunar_Training,"API_getMemberCampScheduleItemList", LoginAccount.GYM_MINIAPPC, Terminal.minApp,"xym");
super.beforeTest();
}
@Test(description = "获取会员训练营课表数据")
public void testGetMemberCampScheduleItemList(){
// 获取的微信用户
String memberId = userTools.getMemberInfo().getString("memberId");
JSONArray data = trainTools.getMemberCampScheduleItemList(TimeUtils.getTodayTime(),TimeUtils.getTodayEndTime(),memberId);
Assert.assertEquals(data.size()>=3,true,"有3条存量的训练营课次数据");
}
}
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.cases.lunar.reserve.ReserveCTools;
import com.xiaomai.cases.lunar.user.UserTools;
import com.xiaomai.cases.polar.setting.rules.RuleTools;
import com.xiaomai.client.DataUserInfo;
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;
/**
* @BelongsProject: xm-sportstest
* @BelongsPackage: com.xiaomai.cases.lunar.training
* @Author: xuyamei
* @CreateTime: 2024-08-01 10:18
* @Description: 训练营签到(因训练营点名只能取存量数据,所以准备3个存量活动执行点名,超出3次抛出异常)
* @Version: 1.0
*/
public class TestTrainingSign extends BaseTestImpl {
@Resource(name = "trainingCTools")
TrainingCTools trainTools;
@Resource(name = "userTools")
UserTools userTools;
@Resource(name = "ruleTools")
RuleTools ruleTools;
@Resource(name = "reserveCTools")
ReserveCTools reserveCTools;
@BeforeMethod
@Override
public void beforeTest(){
setTestInfo(ApiModule.Lunar_Reserve,"API_signInByScanCode", LoginAccount.GYM_MINIAPPC, Terminal.minApp,"xym");
super.beforeTest();
}
@Test(description = "训练营签到")
public void testTrainingSign(){
DataUserInfo dataUserInfo = new DataUserInfo();
dataUserInfo.setTerminal(Terminal.B);
dataUserInfo.setLoginUser(LoginAccount.GYM_PROD);
// 获取的微信用户
String memberId = userTools.getMemberInfo().getString("memberId");
// 获取训练营签到规则
JSONObject getRules = ruleTools.getCampBookingRules(dataUserInfo); // 获取场馆团课预约规则
String id = getRules.getString("id"); // 获取规则id
// 因训练营课表列表无法查看到约课id,所以签到方式只取扫码签到
ruleTools.saveCampBookingRules(id,true,true,999,dataUserInfo);
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
String scheduleId = "";
JSONArray getMemberCampScheduleItemList = trainTools.getMemberCampScheduleItemList(TimeUtils.getTodayTime(),TimeUtils.getTodayEndTime(),memberId);
boolean hasData = false;
for (int j = 0; j < getMemberCampScheduleItemList.size(); j++){
if (getMemberCampScheduleItemList.getJSONObject(j).getString("recordStatus").equals("TODO")){
hasData = true;
scheduleId = getMemberCampScheduleItemList.getJSONObject(j).getString("scheduleId");
}
}
Assert.assertTrue(hasData,"存量已经没有可签到的训练营,请手动回归训练营手动签到和扫码签到");
// 扫码签到
reserveCTools.signInByScanCode(true,scheduleId,memberId);
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
// check 1: 课次列表是已点名状态
getMemberCampScheduleItemList = trainTools.getMemberCampScheduleItemList(TimeUtils.getTodayTime(),TimeUtils.getTodayEndTime(),memberId);
for (int j = 0; j < getMemberCampScheduleItemList.size(); j++){
if (getMemberCampScheduleItemList.getJSONObject(j).getString("scheduleId").equals(scheduleId)){
Assert.assertEquals(getMemberCampScheduleItemList.getJSONObject(j).getString("recordStatus"),"DONE","签到失败");
}
}
// check 2:查询小程序预约记录
JSONArray getPageByMember = reserveCTools.getPageByMember("SIGNED","",TimeUtils.getTodayTime(),TimeUtils.getTodayEndTime(),memberId,"TRAINING_CAMP");
boolean success = false;
String reserveId = "";
for(int i =0;i<getPageByMember.size();i++){
if (getPageByMember.getJSONObject(i).getString("scheduleId").equals(scheduleId)){
success = true;
Assert.assertEquals(getPageByMember.getJSONObject(i).getString("signInState"),"SIGNED");
reserveId = getPageByMember.getJSONObject(i).getString("id");
}
}
Assert.assertTrue(success,"签到之后预约记录没有查询到相关信息");
// check 3:查询小程序预约详情
JSONObject getDetailById = reserveCTools.getReserveDetailById(reserveId);
Assert.assertEquals(getDetailById.getString("signInState"),"SIGNED");
}
}
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");
}
public JSONArray getMemberCampScheduleItemList(Long startDate, Long endDate, String memberId){
setUP("API_getMemberCampScheduleItemList");
JSONObject body = new JSONObject();
body.put("startDate",startDate);
body.put("endDate",endDate);
body.put("memberId",memberId);
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().getJSONArray("result");
}
}
......@@ -10,6 +10,7 @@ import com.xiaomai.enums.LoginAccount;
import com.xiaomai.enums.Terminal;
import org.testng.Assert;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
import javax.annotation.Resource;
......@@ -31,7 +32,8 @@ public class TestAddStudioAdmin extends BaseTestImpl {
ConfigTools configTools;
private String phone;
@BeforeClass
@BeforeMethod
@Override
public void beforeTest(){
setTestInfo(ApiModule.Polar_Admin,"API_addStudioAdmin", LoginAccount.GYM_PROD, Terminal.B,"xym");
super.beforeTest();
......@@ -62,7 +64,7 @@ public class TestAddStudioAdmin extends BaseTestImpl {
}
try {
Thread.sleep(10000);
Thread.sleep(15000);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
......@@ -105,7 +107,7 @@ public class TestAddStudioAdmin extends BaseTestImpl {
}
try {
Thread.sleep(10000);
Thread.sleep(15000);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
......
......@@ -8,6 +8,7 @@ import com.xiaomai.enums.LoginAccount;
import com.xiaomai.enums.Terminal;
import org.testng.Assert;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
......@@ -26,7 +27,8 @@ public class TestCheckDepartStudioAdmin extends BaseTestImpl {
@Resource(name = "adminTools")
AdminTools adminTools;
@BeforeClass
@BeforeMethod
@Override
public void beforeTest(){
setTestInfo(ApiModule.Polar_Admin,"API_checkDepartStudioAdmin", LoginAccount.GYM_PROD, Terminal.B,"xym");
super.beforeTest();
......
......@@ -7,6 +7,7 @@ import com.xiaomai.enums.LoginAccount;
import com.xiaomai.enums.Terminal;
import org.testng.Assert;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
......@@ -24,7 +25,7 @@ public class TestCheckExistInStudio extends BaseTestImpl {
@Resource(name = "adminTools")
AdminTools adminTools;
@BeforeClass
@BeforeMethod
@Override
public void beforeTest() {
setTestInfo(ApiModule.Polar_Admin,"API_checkExistInStudio", LoginAccount.GYM_PROD, Terminal.B,"xym");
......
......@@ -10,6 +10,7 @@ import com.xiaomai.enums.LoginAccount;
import com.xiaomai.enums.Terminal;
import org.testng.Assert;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
......@@ -31,7 +32,8 @@ public class TestCheckModifyTeaching extends BaseTestImpl {
@Resource(name = "courseCategoryTools")
CourseCategoryTools courseCategoryTools;
@BeforeClass
@BeforeMethod
@Override
public void beforeTest(){
setTestInfo(ApiModule.Polar_Admin,"API_addStudioAdmin", LoginAccount.GYM_PROD, Terminal.B,"xym");
super.beforeTest();
......
......@@ -9,6 +9,7 @@ import com.xiaomai.enums.RequestType;
import com.xiaomai.enums.Terminal;
import org.testng.Assert;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
......@@ -22,7 +23,8 @@ import org.testng.annotations.Test;
*/
public class TestCheckPermConfigDup extends BaseTestImpl {
@BeforeClass
@BeforeMethod
@Override
public void beforeTest(){
setTestInfo(ApiModule.Polar_Admin,"API_checkPermConfigDup", LoginAccount.GYM_PROD, Terminal.B,"xym");
super.beforeTest();
......@@ -31,26 +33,26 @@ public class TestCheckPermConfigDup extends BaseTestImpl {
@DataProvider()
public Object[][] data(){
return new Object[][]{
{"{\n" +
"\t\"permCodes\": [\"FitHeadInfo\", \"FitIncomeExpense\", \"FitSeeOrder\", \"FitEditOrder\", \"FitSeeXmPay\", \"FitManageXmPay\", \"FitFinanceData\"],\n" +
"\t\"configMap\": {\n" +
"\t\t\"memberAccess\": true,\n" +
"\t\t\"scheduleAccess\": false,\n" +
"\t\t\"reserveAccess\": false,\n" +
"\t\t\"followUpAccess\": false,\n" +
"\t\t\"importAccess\": true,\n" +
"\t\t\"exportAccess\": true,\n" +
"\t\t\"taskAccess\": true,\n" +
"\t\t\"orderAccess\": true,\n" +
"\t\t\"incomeExpenseAccess\": true,\n" +
"\t\t\"potentialPhoneMask\": false,\n" +
"\t\t\"memberPhoneMask\": false,\n" +
"\t\t\"historyPhoneMask\": false\n" +
"\t},\n" +
"\t\"brandId\": \"1796482011391729666\",\n" +
"\t\"studioId\": \"1800375402938871809\",\n" +
"\t\"operatorId\": \"1796482250721169409\"\n" +
"}",true}, // 存在有相同权限的角色
// {"{\n" +
// "\t\"permCodes\": [\"FitHeadInfo\", \"FitIncomeExpense\", \"FitSeeOrder\", \"FitEditOrder\", \"FitSeeXmPay\", \"FitManageXmPay\", \"FitFinanceData\"],\n" +
// "\t\"configMap\": {\n" +
// "\t\t\"memberAccess\": true,\n" +
// "\t\t\"scheduleAccess\": false,\n" +
// "\t\t\"reserveAccess\": false,\n" +
// "\t\t\"followUpAccess\": false,\n" +
// "\t\t\"importAccess\": true,\n" +
// "\t\t\"exportAccess\": true,\n" +
// "\t\t\"taskAccess\": true,\n" +
// "\t\t\"orderAccess\": true,\n" +
// "\t\t\"incomeExpenseAccess\": true,\n" +
// "\t\t\"potentialPhoneMask\": false,\n" +
// "\t\t\"memberPhoneMask\": false,\n" +
// "\t\t\"historyPhoneMask\": false\n" +
// "\t},\n" +
// "\t\"brandId\": \"1796482011391729666\",\n" +
// "\t\"studioId\": \"1800375402938871809\",\n" +
// "\t\"operatorId\": \"1796482250721169409\"\n" +
// "}",true}, // 存在有相同权限的角色
{"{\n" +
" \"permCodes\": [\"FitHeadPage\", \"FitCluePublic\", \"FitAddClue\", \"FitEditClue\", \"FitReleaseClue\"],\n" +
" \"configMap\": {\n" +
......
......@@ -9,6 +9,7 @@ import com.xiaomai.enums.RequestType;
import com.xiaomai.enums.Terminal;
import org.testng.Assert;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
......@@ -22,7 +23,8 @@ import org.testng.annotations.Test;
*/
public class TestCheckRoleNameDup extends BaseTestImpl {
@BeforeClass
@BeforeMethod
@Override
public void beforeTest(){
setTestInfo(ApiModule.Polar_Admin,"API_checkRoleNameDup", LoginAccount.GYM_PROD, Terminal.B,"xym");
super.beforeTest();
......
......@@ -9,6 +9,7 @@ import com.xiaomai.enums.RequestType;
import com.xiaomai.enums.Terminal;
import org.testng.Assert;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
import javax.annotation.Resource;
......@@ -29,7 +30,7 @@ public class TestDepartStudioAdmin extends BaseTestImpl {
@Resource(name = "configTools")
ConfigTools configTools;
@BeforeClass
@BeforeMethod
@Override
public void beforeTest() {
setTestInfo(ApiModule.Polar_Admin,"API_departStudioAdmin", LoginAccount.GYM_PROD2, Terminal.B,"xym");
......
......@@ -24,6 +24,7 @@ public class TestFindStudioBossInBrand extends BaseTestImpl {
@Resource(name = "adminTools")
AdminTools adminTools;
@BeforeClass
@Override
public void beforeTest() {
setTestInfo(ApiModule.Polar_Admin,"API_findStudioBossInBrand", LoginAccount.GYM_PROD, Terminal.B,"xym");
super.beforeTest();
......
......@@ -10,6 +10,7 @@ import com.xiaomai.enums.RequestType;
import com.xiaomai.enums.Terminal;
import org.testng.Assert;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
import javax.annotation.Resource;
......@@ -30,7 +31,8 @@ public class TestStudioRoleCreate extends BaseTestImpl {
@Resource(name = "configTools")
ConfigTools configTools;
@BeforeClass
@BeforeMethod
@Override
public void beforeTest(){
setTestInfo(ApiModule.Polar_Admin,"API_studioRole_create", LoginAccount.GYM_PROD, Terminal.B,"xym");
super.beforeTest();
......
......@@ -29,6 +29,7 @@ public class TestStudioRoleEdit extends BaseTestImpl {
@Resource(name = "configTools")
ConfigTools configTools;
@BeforeClass
@Override
public void beforeTest(){
setTestInfo(ApiModule.Polar_Admin,"API_studioRole_edit", LoginAccount.GYM_PROD, Terminal.B,"xym");
super.beforeTest();
......@@ -87,7 +88,7 @@ public class TestStudioRoleEdit extends BaseTestImpl {
Assert.assertEquals(response.getJSONObject("result").getString("name"),"编辑角色名称","编辑角色名称失败");
try {
Thread.sleep(4000);
Thread.sleep(15000);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
......
......@@ -22,6 +22,7 @@ import javax.annotation.Resource;
*/
public class TestStudioRoleGetPermList extends BaseTestImpl {
@BeforeClass
@Override
public void beforeTest(){
setTestInfo(ApiModule.Polar_Admin,"API_studioRole_getPermList", LoginAccount.GYM_PROD, Terminal.B,"xym");
super.beforeTest();
......
......@@ -22,6 +22,7 @@ import org.testng.annotations.Test;
*/
public class TestStudioRoleListByStudioId extends BaseTestImpl {
@BeforeClass
@Override
public void beforeTest(){
setTestInfo(ApiModule.Polar_Admin,"API_studioRole_listByStudioId", LoginAccount.GYM_PROD, Terminal.B,"xym");
super.beforeTest();
......
......@@ -43,6 +43,6 @@ public class TestCheckXcxCashierStatus extends XMBaseTest {
object.put("appId",appId);
xmAppApi.doRequest(RequestType.JSON,params,object.toString(),headers).assetsSuccess(true);
Assert.assertEquals(XMJSONPath.readPath(xmAppApi.getBodyInJSON(),"$.result.status"),"NOOPEN");
Assert.assertEquals(XMJSONPath.readPath(xmAppApi.getBodyInJSON(),"$.result.status"),"SUCCESS");
}
}
......@@ -30,7 +30,7 @@ public class MemberTools extends BaseTestImpl {
super.beforeDataRequest(userInfos);
Random random = new Random();
String[] idCardType = {"IDENTITY","SAR_PERMIT","idCardType"};//身份证、港澳通行证、护照
String[] idCardType = {"IDENTITY","SAR_PERMIT","PASSPORT"};//身份证、港澳通行证、护照
String[] intention = {"HIGH","MIDDLE","LOW"};//意向度:高、中、低
JSONObject object = new JSONObject();
......
package com.xiaomai.cases.polar.coupon;
import com.alibaba.fastjson.JSONObject;
import com.xiaomai.basetest.BaseTestImpl;
import com.xiaomai.enums.ApiModule;
import com.xiaomai.enums.LoginAccount;
import com.xiaomai.enums.Terminal;
import com.xiaomai.utils.RandomStringUtil;
import com.xiaomai.utils.XMJSONPath;
import org.testng.Assert;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
/**
* 测试创建优惠券
* @author adu
* data 2024/7/26 13:44
*/
public class TestCreateCoupon extends BaseTestImpl {
@Resource(name = "couponTools")
CouponTools couponTools;
String titleA="";
String couponIdA="";
String titleB="";
String couponIdB="";
@BeforeClass
public void beforeTest() {
setTestInfo(ApiModule.Polar_Coupon, "API_createCoupon", LoginAccount.ADU_PROD, Terminal.B, "adu");
super.beforeTest();
}
// @Test(description = "自动化测试创建优惠券")
public void testCreateCoupon(){
List<String> memberStatusLimitsA=new ArrayList<>();
memberStatusLimitsA.add("POTENTIAL");
memberStatusLimitsA.add("NORMAL");
memberStatusLimitsA.add("HISTORY");
List<String> memberStatusLimitsB=new ArrayList<>();
memberStatusLimitsB.add("POTENTIAL");
titleA="有门槛限领适用全部"+ RandomStringUtil.randomString(3);
couponIdA=couponTools.createCoupon("THRESHOLD","FIXED",memberStatusLimitsA,titleA,true,
"CERTAIN", 2,"RELATIVE",titleA+"优惠方式选择金额,满10元可以减10元,领取后1天内有效");
couponTools.getStudioCouponList(titleA,"");
Long goalData=XMJSONPath.getJSONArrayByReadPath(dataApi.getApi_response(),"$.result.records").toJavaList(JSONObject.class).stream().filter(e ->
e.getString("id").equals(couponIdA)).count();
Assert.assertTrue(goalData==1,"刚创建的优惠券在全局搜索中根据优惠券名称搜索,后端没返回数据");
titleB="无门槛不限领适用部分"+ RandomStringUtil.randomString(2);
couponIdB=couponTools.createCoupon("WITHOUT","WITHOUT",memberStatusLimitsB,titleB,false,
"DISCOUNT", 2,"ABSOLUTE",titleB+"优惠方式选择折扣,8.8折,适用有效期明天~(当前时间+5天)");
}
}
\ No newline at end of file
......@@ -57,6 +57,8 @@ public class CourseTools extends XMBaseTest {
body.put("studioId", dataApi.getLoginInfo().getStudioId());
body.put("sizeType", sizeType); // 私教模式
body.put("allArea", false); // 场地
body.put("singleReserve", true);
body.put("reservePrice", 0);
JSONArray coachIds = new JSONArray(); // 教练
coachIds.add(dataApi.getLoginInfo().getAdminId());
body.put("coachIds", coachIds);
......@@ -99,6 +101,8 @@ public class CourseTools extends XMBaseTest {
body.put("brandId", dataApi.getLoginInfo().getBrandId()); // 品牌
body.put("studioId", dataApi.getLoginInfo().getStudioId()); // 场馆
body.put("calorie", 0); // 卡路里 传0对于后端是未设置
body.put("singleReserve", true);
body.put("reservePrice", 0);
dataApi.doRequest(RequestType.JSON,dataparams,body.toString(),dataheadrs).assetsSuccess(true);
return dataApi.getBodyInJSON().getString("result");
......@@ -405,5 +409,94 @@ 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);
}
/**
* @description:编辑团课
* @author: xuyamei
* @date: 2024/7/30 10:57
* @param categoryId 课程分类
* @param courseId 课程id
* @param courseName 课程名称
* @param duration 时长
* @param singleReserve 是否支持单次预约
* @param reservePrice 单次预约价格
* @param dataUserInfo
* @return: void
**/
public void editGroupCourse(String categoryId,String courseId,String courseName,int duration,boolean singleReserve,int reservePrice,DataUserInfo...dataUserInfo){
dataApi.setApiModule(ApiModule.Polar_Course)
.setApiName("API_editGroupCourse")
.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("calorie", "0"); // 卡路里
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("brandCourseId", courseId);
body.put("singleReserve", singleReserve); // 是否支持单次约课
if (singleReserve){
body.put("reservePrice", reservePrice); // 单次预约的价格
}
dataApi.doRequest(RequestType.JSON, dataparams, body.toString(), dataheadrs).assetsSuccess(true);
}
}
......@@ -27,6 +27,7 @@ public class TestCheckCourseNameDup extends BaseTestImpl {
@Resource(name = "courseTools")
CourseTools courseTools;
@BeforeClass
@Override
public void beforeTest(){
setTestInfo(ApiModule.Polar_Course,"API_checkCourseNameDup", LoginAccount.GYM_PROD, Terminal.B,"xym");
super.beforeTest();
......
......@@ -32,6 +32,7 @@ public class TestCreateGroupCourse extends BaseTestImpl {
private String courseId;
@BeforeClass
@Override
public void beforeTest() {
setTestInfo(ApiModule.Polar_Course, "API_createGroupCourse", LoginAccount.GYM_PROD, Terminal.B, "xym");
super.beforeTest();
......@@ -82,7 +83,7 @@ public class TestCreateGroupCourse extends BaseTestImpl {
// check 2:团课详情内容是否与新建一致
String[] keys = {"courseName","duration","difficulty","color","coverId","timeUnit","categoryId","sourceId","sourceType","brandId","calorie"};
String[] values = {courseName,String.valueOf(duration),String.valueOf(difficulty),"#AACF53","1772108160765263873","MINUTE",categoryId,xmAppApi.getLoginInfo().getStudioId(),"STUDIO",xmAppApi.getLoginInfo().getBrandId(),String.valueOf(calorie)};
String[] values = {courseName,String.valueOf(duration),String.valueOf(difficulty),"#AACF53","0","MINUTE",categoryId,xmAppApi.getLoginInfo().getStudioId(),"STUDIO",xmAppApi.getLoginInfo().getBrandId(),String.valueOf(calorie)};
JSONObject courseDetail = courseTools.getCourseDetail(courseId);
for (int i = 0; i < keys.length; i++) {
......
......@@ -35,6 +35,7 @@ public class TestCreatePersonalCourse extends BaseTestImpl {
private JSONArray courseIds = new JSONArray();
@BeforeClass
@Override
public void beforeTest() {
setTestInfo(ApiModule.Polar_Course, "API_personalCreate", LoginAccount.GYM_PROD, Terminal.B, "xym");
super.beforeTest();
......@@ -93,7 +94,7 @@ public class TestCreatePersonalCourse extends BaseTestImpl {
// check 2: 查看课程详情是否与新建内容一致
JSONObject courseDetail = courseTools.getCourseDetail(courseId);
String[] keys = {"courseName","duration","difficulty","color","coverId","timeUnit","categoryId","sourceId","sourceType","brandId","sizeType","allArea","capacity","minCapacity"};
String[] values = {courseName,"60","3","#AACF53","1772108160765263873","MINUTE",categoryId,xmAppApi.getLoginInfo().getStudioId(),"STUDIO",xmAppApi.getLoginInfo().getBrandId(),sizeType,"false","2","1"};
String[] values = {courseName,"60","3","#AACF53","0","MINUTE",categoryId,xmAppApi.getLoginInfo().getStudioId(),"STUDIO",xmAppApi.getLoginInfo().getBrandId(),sizeType,"false","2","1"};
for (int i = 0; i < keys.length; i++) {
String result = values[i];
// 1对1的容量为1
......
package com.xiaomai.cases.polar.course;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.xiaomai.basetest.BaseTestImpl;
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.annotations.BeforeClass;
import org.testng.annotations.Test;
/**
* @BelongsProject: xm-sportstest
* @BelongsPackage: com.xiaomai.cases.polar.course
* @Author: xuyamei
* @CreateTime: 2024-04-25 11:43
* @Description: 创建特定日期可约
* @Version: 1.0
*/
public class TestCreateSpecialDate extends BaseTestImpl {
@BeforeClass
public void beforeTest() {
setTestInfo(ApiModule.Polar_Admin, "API_createSpecialDate", LoginAccount.GYM_PROD, Terminal.B, "xym");
super.beforeTest();
}
@Test
public void testCreateSpecialDate() {
JSONObject body = new JSONObject();
body.put("brandId", xmAppApi.getLoginInfo().getBrandId());
body.put("studioId", xmAppApi.getLoginInfo().getStudioId());
body.put("coachId", "1762382404818898946");
// 特定时间
JSONObject specialTimeInfoRequest = new JSONObject();
specialTimeInfoRequest.put("dutyType", "OFF_DUTY");
JSONArray specialTimeInfoRequestArray = new JSONArray();
specialTimeInfoRequestArray.add(TimeUtils.getBeforeDayDate(3));
specialTimeInfoRequest.put("selectedDates", specialTimeInfoRequestArray);
body.put("specialTimeInfoRequest", specialTimeInfoRequest);
xmAppApi.doRequest(RequestType.JSON,params,body.toString(),headers).assetsSuccess(true);
}
}
......@@ -32,6 +32,7 @@ public class TestEditGroupCourse extends BaseTestImpl {
@BeforeClass
@Override
public void beforeTest() {
setTestInfo(ApiModule.Polar_Course, "API_editGroupCourse", LoginAccount.GYM_PROD, Terminal.B, "xym");
super.beforeTest();
......@@ -69,12 +70,16 @@ public class TestEditGroupCourse extends BaseTestImpl {
body.put("studioId", xmAppApi.getLoginInfo().getStudioId()); // 场馆
body.put("calorie", calorie); // 卡路里
body.put("brandCourseId", courseId);
body.put("brandId", xmAppApi.getLoginInfo().getBrandId());
body.put("singleReserve", true);
body.put("reservePrice", 0);
xmAppApi.doRequest(RequestType.JSON, params, body.toString(), headers).assetsSuccess(true);
String[] keys = {"courseName", "duration", "difficulty", "color", "coverId", "timeUnit", "categoryId", "sourceId", "sourceType", "brandId", "calorie"};
String[] values = {courseName, String.valueOf(duration), String.valueOf(difficulty), "#AACF53", "1772108160765263873", "MINUTE", categoryId, xmAppApi.getLoginInfo().getStudioId(), "STUDIO", xmAppApi.getLoginInfo().getBrandId(), String.valueOf(calorie)};
String[] values = {courseName, String.valueOf(duration), String.valueOf(difficulty), "#AACF53", "0", "MINUTE", categoryId, xmAppApi.getLoginInfo().getStudioId(), "STUDIO", xmAppApi.getLoginInfo().getBrandId(), String.valueOf(calorie)};
// 校验内容与编辑的是否一致
JSONObject courseDetail = courseTools.getCourseDetail(courseId);
for (int i = 0; i < keys.length; i++) {
......
......@@ -32,6 +32,7 @@ public class TestEditPersonalCourse extends BaseTestImpl {
@BeforeClass
@Override
public void beforeTest() {
setTestInfo(ApiModule.Polar_Course, "API_editPersonalCourse", LoginAccount.GYM_PROD, Terminal.B, "xym");
super.beforeTest();
......@@ -82,7 +83,7 @@ public class TestEditPersonalCourse extends BaseTestImpl {
String[] keys = {"courseName","duration","difficulty","color","coverId","timeUnit","categoryId","sourceId","sourceType","brandId","sizeType","allArea","capacity","minCapacity"};
String[] values = {courseName,String.valueOf(duration),String.valueOf(difficulty),"#AACF53","1772108160765263873","MINUTE",categoryId,xmAppApi.getLoginInfo().getStudioId(),"STUDIO",xmAppApi.getLoginInfo().getBrandId(),"ONE_TO_MANY","false",String.valueOf(capacity),"1"};
String[] values = {courseName,String.valueOf(duration),String.valueOf(difficulty),"#AACF53","0","MINUTE",categoryId,xmAppApi.getLoginInfo().getStudioId(),"STUDIO",xmAppApi.getLoginInfo().getBrandId(),"ONE_TO_MANY","false",String.valueOf(capacity),"1"};
// 校验内容与编辑的是否一致
courseDetail = courseTools.getCourseDetail(courseId);
for (int i = 0; i < keys.length; i++) {
......
package com.xiaomai.cases.polar.eleContract;
import com.alibaba.fastjson.JSONObject;
import com.xiaomai.basetest.BaseTestImpl;
import com.xiaomai.enums.ApiModule;
import com.xiaomai.enums.LoginAccount;
import com.xiaomai.enums.RequestType;
import com.xiaomai.enums.Terminal;
import org.testng.Assert;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
/**
* @BelongsProject: xm-sportstest
* @BelongsPackage: com.xiaomai.cases.polar.eleContract
* @Author: xuyamei
* @CreateTime: 2024-08-05 16:23
* @Description: 校验租户合同配置
* @Version: 1.0
*/
public class TestCheckContractConfig extends BaseTestImpl {
@BeforeMethod
@Override
public void beforeTest(){
setTestInfo(ApiModule.Polar_EleContract,"API_checkContractConfig", LoginAccount.DZHT_PROD, Terminal.B,"xym");
super.beforeTest();
}
@Test
public void testCheckContractConfig(){
JSONObject body = new JSONObject();
body.put("tenantId",xmAppApi.getLoginInfo().getStudioId());
body.put("brandId",xmAppApi.getLoginInfo().getBrandId());
body.put("studioId",xmAppApi.getLoginInfo().getStudioId());
body.put("operatorId",xmAppApi.getLoginInfo().getAdminId());
body.put("checkAll", true);
String[] types = {"VERIFY_RESULT","COMPANY_SIGNATURE","HAS_LEFT"};
body.put("checkTypes", types);
xmAppApi.doRequest(RequestType.JSON,params,body.toString(),headers).assetsSuccess(true);
JSONObject response = xmAppApi.getBodyInJSON().getJSONObject("result");
Assert.assertFalse(response.getBoolean("checkPass"));
String[] checkTypes = {"VERIFY_RESULT","COMPANY_SIGNATURE","HAS_LEFT"};
for (int i = 0; i < checkTypes.length; i++){
Assert.assertTrue(response.getJSONObject("checkFailResult").getBoolean(checkTypes[i]));
}
}
}
package com.xiaomai.cases.polar.eleContract;
import com.xiaomai.basetest.BaseTestImpl;
import com.xiaomai.enums.ApiModule;
import com.xiaomai.enums.LoginAccount;
import com.xiaomai.enums.RequestType;
import com.xiaomai.enums.Terminal;
import org.testng.Assert;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
/**
* @BelongsProject: xm-sportstest
* @BelongsPackage: com.xiaomai.cases.polar.eleContract
* @Author: xuyamei
* @CreateTime: 2024-08-05 11:36
* @Description: 查询企业授权结果
* @Version: 1.0
*/
public class TestGetCompanyAuthSignResult extends BaseTestImpl {
@BeforeMethod
@Override
public void beforeTest(){
setTestInfo(ApiModule.Polar_EleContract,"API_getCompanyAuthSignResult", LoginAccount.DZHT_PROD, Terminal.B,"xym");
super.beforeTest();
}
@Test
public void testGetCompanyAuthSignResult(){
String body = "{\"tenantId\":\""+xmAppApi.getLoginInfo().getStudioId()+"\"}";
xmAppApi.doRequest(RequestType.JSON,params,body,headers).assetsSuccess(true);
Assert.assertTrue(xmAppApi.getBodyInJSON().getJSONObject("result").getBoolean("isSuccess"),"场馆已经授权,但查到的结果不是true");
}
}
package com.xiaomai.cases.polar.eleContract;
import com.xiaomai.basetest.BaseTestImpl;
import com.xiaomai.enums.ApiModule;
import com.xiaomai.enums.LoginAccount;
import com.xiaomai.enums.RequestType;
import com.xiaomai.enums.Terminal;
import org.testng.Assert;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
/**
* @BelongsProject: xm-sportstest
* @BelongsPackage: com.xiaomai.cases.polar.eleContract
* @Author: xuyamei
* @CreateTime: 2024-08-05 11:52
* @Description: 获取企业实名证书
* @Version: 1.0
*/
public class TestGetCompanyCert extends BaseTestImpl {
@BeforeMethod
@Override
public void beforeTest(){
setTestInfo(ApiModule.Polar_EleContract,"API_getCompanyCert", LoginAccount.DZHT_PROD, Terminal.B,"xym");
super.beforeTest();
}
@Test
public void testGetCompanyCert(){
String body = "{\"tenantId\":\""+xmAppApi.getLoginInfo().getStudioId()+"\"}";
xmAppApi.doRequest(RequestType.JSON,params,body,headers).assetsSuccess(true);
Assert.assertEquals(xmAppApi.getBodyInJSON().getJSONObject("result").getString("sequenceNo"),"4CB4000000000000094C2A93","获取实名认证证书失败");
}
}
package com.xiaomai.cases.polar.eleContract;
import com.xiaomai.basetest.BaseTestImpl;
import com.xiaomai.enums.ApiModule;
import com.xiaomai.enums.LoginAccount;
import com.xiaomai.enums.RequestType;
import com.xiaomai.enums.Terminal;
import org.testng.Assert;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
/**
* @BelongsProject: xm-sportstest
* @BelongsPackage: com.xiaomai.cases.polar.eleContract
* @Author: xuyamei
* @CreateTime: 2024-08-05 11:40
* @Description: 获取企业最新一次成功的认证结果
* @Version: 1.0
*/
public class TestGetCompanyLastSuccessVerifyResult extends BaseTestImpl {
@BeforeMethod
@Override
public void beforeTest(){
setTestInfo(ApiModule.Polar_EleContract,"API_getCompanyLastSuccessVerifyResult", LoginAccount.DZHT_PROD, Terminal.B,"xym");
super.beforeTest();
}
@Test
public void testGetCompanyLastSuccessVerifyResult(){
String body = "{\"tenantId\":\""+xmAppApi.getLoginInfo().getStudioId()+"\"}";
xmAppApi.doRequest(RequestType.JSON,params,body,headers).assetsSuccess(true);
Assert.assertEquals(xmAppApi.getBodyInJSON().getJSONObject("result").getString("status"),"AUDIT_SUCCEEDED","场馆已经授权,但查到的结果不是true");
}
}
package com.xiaomai.cases.polar.eleContract;
import com.xiaomai.basetest.BaseTestImpl;
import com.xiaomai.enums.ApiModule;
import com.xiaomai.enums.LoginAccount;
import com.xiaomai.enums.RequestType;
import com.xiaomai.enums.Terminal;
import org.testng.Assert;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
/**
* @BelongsProject: xm-sportstest
* @BelongsPackage: com.xiaomai.cases.polar.eleContract
* @Author: xuyamei
* @CreateTime: 2024-08-05 11:28
* @Description: 获取企业最新的认证结果-只有状态
* @Version: 1.0
*/
public class TestGetCompanyLastVerifyStatus extends BaseTestImpl {
@BeforeMethod
@Override
public void beforeTest(){
setTestInfo(ApiModule.Polar_EleContract,"API_getCompanyLastVerifyStatus", LoginAccount.DZHT_PROD, Terminal.B,"xym");
super.beforeTest();
}
@Test
public void testGetCompanyLastVerifyStatus(){
String body = "{\"tenantId\":\""+xmAppApi.getLoginInfo().getStudioId()+"\"}";
xmAppApi.doRequest(RequestType.JSON,params,body,headers).assetsSuccess(true);
Assert.assertEquals(xmAppApi.getBodyInJSON().getJSONObject("result").getString("status"),"AUDIT_SUCCEEDED","场馆已经认证,获取的企业最新的认证结果返回的不是AUDIT_SUCCEEDED");
}
}
package com.xiaomai.cases.polar.eleContract;
import com.xiaomai.basetest.BaseTestImpl;
import com.xiaomai.enums.ApiModule;
import com.xiaomai.enums.LoginAccount;
import com.xiaomai.enums.RequestType;
import com.xiaomai.enums.Terminal;
import org.testng.Assert;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
/**
* @BelongsProject: xm-sportstest
* @BelongsPackage: com.xiaomai.cases.polar.eleContract
* @Author: xuyamei
* @CreateTime: 2024-08-05 11:44
* @Description: 获取企业签章
* @Version: 1.0
*/
public class TestGetCompanySignature extends BaseTestImpl {
@BeforeMethod
@Override
public void beforeTest(){
setTestInfo(ApiModule.Polar_EleContract,"API_getCompanySignature", LoginAccount.DZHT_PROD, Terminal.B,"xym");
super.beforeTest();
}
@Test
public void testGetCompanySignature(){
String body = "{\"tenantId\":\""+xmAppApi.getLoginInfo().getStudioId()+"\"}";
xmAppApi.doRequest(RequestType.JSON,params,body,headers).assetsSuccess(true);
Assert.assertEquals(xmAppApi.getBodyInJSON().getJSONObject("result").getString("signatureUrl"),"https://fit-resource-pub.xiaomai5.com/fitness/1796482011391729666/BRAND/eleContract/1815396391027736577/20240722224002/signature.png","获取企业签章失败");
}
}
package com.xiaomai.cases.polar.eleContract;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.xiaomai.basetest.BaseTestImpl;
import com.xiaomai.enums.ApiModule;
import com.xiaomai.enums.LoginAccount;
import com.xiaomai.enums.RequestType;
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.polar.eleContract
* @Author: xuyamei
* @CreateTime: 2024-08-05 17:21
* @Description: 获取合同编辑展示页-首次创建
* @Version: 1.0
*/
public class TestGetContractEditDisplay extends BaseTestImpl {
@Resource(name = "eleContractTools")
EleContractTools eleContractTools;
@BeforeMethod
@Override
public void beforeTest(){
setTestInfo(ApiModule.Polar_EleContract,"API_getContractEditDisplay", LoginAccount.DZHT_PROD, Terminal.B,"xym");
super.beforeTest();
}
@Test
public void testGetContractEditDisplay(){
// 查询指定的模版
String templateId = eleContractTools.getNormalTemplateList("自动化").getJSONObject(0).getString("id");
JSONObject body = new JSONObject();
body.put("adminId",xmAppApi.getLoginInfo().getAdminId());
body.put("templateId",templateId);
body.put("studioId",xmAppApi.getLoginInfo().getStudioId());
xmAppApi.doRequest(RequestType.JSON,params,body.toString(),headers).assetsSuccess(true);
JSONObject response = xmAppApi.getBodyInJSON().getJSONObject("result");
JSONArray contractPdfVOList = response.getJSONArray("contractPdfVOList");
for (int i = 0; i < contractPdfVOList.getJSONObject(0).getJSONArray("contractFieldVOList").size(); i++){
if (contractPdfVOList.getJSONObject(0).getJSONArray("contractFieldVOList").getJSONObject(i).getString("templateField").equals("COMPANY_NAME")){
// 验证返回的公司名称
Assert.assertTrue(contractPdfVOList.getJSONObject(0).getJSONArray("contractFieldVOList").getJSONObject(i).getString("value").equals("杭州牧歌供应链管理有限公司"));
}else if (contractPdfVOList.getJSONObject(0).getJSONArray("contractFieldVOList").getJSONObject(i).getString("templateField").equals("TENANT_NAME")){
// 验证返回的场馆名称
Assert.assertTrue(contractPdfVOList.getJSONObject(0).getJSONArray("contractFieldVOList").getJSONObject(i).getString("value").equals("小小瑜伽城西银泰西湖场馆"));
}
}
Assert.assertTrue(response.getJSONObject("templateVO").getJSONArray("fieldConfigVOList").size()>=6,"模版字段数量大于等于6");
}
}
package com.xiaomai.cases.polar.eleContract;
import com.xiaomai.basetest.BaseTestImpl;
import com.xiaomai.enums.ApiModule;
import com.xiaomai.enums.LoginAccount;
import com.xiaomai.enums.RequestType;
import com.xiaomai.enums.Terminal;
import org.testng.Assert;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
/**
* @BelongsProject: xm-sportstest
* @BelongsPackage: com.xiaomai.cases.polar.eleContract
* @Author: xuyamei
* @CreateTime: 2024-08-05 11:58
* @Description: 获取合同模版列表
* @Version: 1.0
*/
public class TestGetNormalTemplateList extends BaseTestImpl {
@BeforeMethod
@Override
public void beforeTest(){
setTestInfo(ApiModule.Polar_EleContract,"API_getNormalTemplateList", LoginAccount.DZHT_PROD, Terminal.B,"xym");
super.beforeTest();
}
@Test
public void testGetNormalTemplateList(){
String body = "{\"tenantId\":\""+xmAppApi.getLoginInfo().getStudioId()+"\"}";
xmAppApi.doRequest(RequestType.JSON,params,body,headers).assetsSuccess(true);
Assert.assertTrue(xmAppApi.getBodyInJSON().getJSONArray("result").size()>=1,"获取模版管理列表数据失败");
}
}
package com.xiaomai.cases.polar.eleContract;
import com.alibaba.fastjson.JSONObject;
import com.xiaomai.basetest.BaseTestImpl;
import com.xiaomai.enums.ApiModule;
import com.xiaomai.enums.LoginAccount;
import com.xiaomai.enums.RequestType;
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.polar.eleContract
* @Author: xuyamei
* @CreateTime: 2024-08-06 16:33
* @Description: 剩余份数小于设置的预警值合同管理提示条
* @Version: 1.0
*/
public class TestGetShowResidueCount extends BaseTestImpl {
@Resource(name = "eleContractTools")
EleContractTools eleContractTools;
@BeforeMethod
@Override
public void beforeTest(){
setTestInfo(ApiModule.Polar_EleContract,"API_getShowResidueCount", LoginAccount.DZHT_PROD, Terminal.B,"xym");
super.beforeTest();
}
@Test
public void testGetShowResidueCount(){
int warning = 1000;
// 查询预警记录id
JSONObject balanceWarning = eleContractTools.getBalanceWarning();
String id = balanceWarning.getString("id");
// 先设置预警值
eleContractTools.setBalanceWarning(warning, id);
// 查询剩余份数小于设置的预警值合同管理提示条
JSONObject body = new JSONObject();
body.put("tenantId",xmAppApi.getLoginInfo().getStudioId());
body.put("studioId",xmAppApi.getLoginInfo().getStudioId());
body.put("brandId",xmAppApi.getLoginInfo().getBrandId());
body.put("operatorId",xmAppApi.getLoginInfo().getAdminId());
xmAppApi.doRequest(RequestType.JSON,params,body.toString(),headers).assetsSuccess(true);
Assert.assertTrue(xmAppApi.getBodyInJSON().getInteger("result") == warning);
}
}
package com.xiaomai.cases.polar.eleContract;
import com.alibaba.fastjson.JSONObject;
import com.xiaomai.basetest.BaseTestImpl;
import com.xiaomai.enums.ApiModule;
import com.xiaomai.enums.LoginAccount;
import com.xiaomai.enums.RequestType;
import com.xiaomai.enums.Terminal;
import org.testng.Assert;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
/**
* @BelongsProject: xm-sportstest
* @BelongsPackage: com.xiaomai.cases.polar.eleContract
* @Author: xuyamei
* @CreateTime: 2024-08-05 15:33
* @Description:获取合同充值套餐列表
* @Version: 1.0
*/
public class TestGetSuiteList extends BaseTestImpl {
@BeforeMethod
@Override
public void beforeTest(){
setTestInfo(ApiModule.Polar_EleContract,"API_getSuiteList", LoginAccount.DZHT_PROD, Terminal.B,"xym");
super.beforeTest();
}
@Test
public void testGetValidBalanceList() {
JSONObject body = new JSONObject();
body.put("brandId", xmAppApi.getLoginInfo().getBrandId());
body.put("studioId", xmAppApi.getLoginInfo().getStudioId());
body.put("operatorId", xmAppApi.getLoginInfo().getAdminId());
xmAppApi.doRequest(RequestType.JSON, params, body.toString(), headers).assetsSuccess(true);
String[] keys = new String[]{"productCode","productName","validPeriodYear","amount","price","oriUnitPrice","unitPrice"};
String[] values1 = new String[]{"E_CONT_100_1Y","电子合同100份","1","100","49800","698","498"};
String[] values2 = new String[]{"E_CONT_200_1Y","电子合同200份","1","200","79600","598","398"};
String[] values3 = new String[]{"E_CONT_500_2Y","电子合同500份","2","500","149000","498","298"};
String[] values4 = new String[]{"E_CONT_1000_2Y","电子合同1000份","2","1000","198000","398","198"};
for (int i = 0; i < 4; i++){
String[] values = i == 0 ? values1 : i == 1 ? values2 : i == 2 ? values3 : values4;
for (int j = 0; j < keys.length; j++){
Assert.assertEquals(xmAppApi.getBodyInJSON().getJSONArray("result").getJSONObject(i).getString(keys[j]),values[j]);
}
}
}
}
package com.xiaomai.cases.polar.eleContract;
import com.xiaomai.basetest.BaseTestImpl;
import com.xiaomai.enums.ApiModule;
import com.xiaomai.enums.LoginAccount;
import com.xiaomai.enums.RequestType;
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.polar.eleContract
* @Author: xuyamei
* @CreateTime: 2024-08-05 13:54
* @Description: 获取单个合同模板
* @Version: 1.0
*/
public class TestGetTemplate extends BaseTestImpl {
@Resource(name = "eleContractTools")
EleContractTools eleContractTools;
@BeforeMethod
@Override
public void beforeTest(){
setTestInfo(ApiModule.Polar_EleContract,"API_getTemplate", LoginAccount.DZHT_PROD, Terminal.B,"xym");
super.beforeTest();
}
@Test
public void testGetTemplate(){
String id = eleContractTools.getNormalTemplateList("").getJSONObject(0).getString("id");
String body = "{\"id\":\""+id+"\"}";
xmAppApi.doRequest(RequestType.JSON,params,body,headers).assetsSuccess(true);
Assert.assertEquals(xmAppApi.getBodyInJSON().getJSONObject("result").getString("id"),id);
}
}
package com.xiaomai.cases.polar.eleContract;
import com.xiaomai.basetest.BaseTestImpl;
import com.xiaomai.enums.ApiModule;
import com.xiaomai.enums.LoginAccount;
import com.xiaomai.enums.RequestType;
import com.xiaomai.enums.Terminal;
import org.testng.Assert;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
/**
* @BelongsProject: xm-sportstest
* @BelongsPackage: com.xiaomai.cases.polar.eleContract
* @Author: xuyamei
* @CreateTime: 2024-08-06 16:46
* @Description: 获取租户是否购买结果
* @Version: 1.0
*/
public class TestGetTenantPurchaseFlag extends BaseTestImpl {
@BeforeMethod
@Override
public void beforeTest(){
setTestInfo(ApiModule.Polar_EleContract,"API_getTenantPurchaseFlag", LoginAccount.DZHT_PROD, Terminal.B,"xym");
super.beforeTest();
}
@Test
public void testGetTenantPurchaseFlag(){
String body = "{\"tenantId\":\""+xmAppApi.getLoginInfo().getStudioId()+"\"}";
xmAppApi.doRequest(RequestType.JSON,params,body,headers).assetsSuccess(true);
Assert.assertTrue(xmAppApi.getBodyInJSON().getBoolean("result"),"场馆已经购买但是返回的false");
}
}
package com.xiaomai.cases.polar.eleContract;
import com.alibaba.fastjson.JSONObject;
import com.xiaomai.basetest.BaseTestImpl;
import com.xiaomai.enums.ApiModule;
import com.xiaomai.enums.LoginAccount;
import com.xiaomai.enums.RequestType;
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.polar.eleContract
* @Author: xuyamei
* @CreateTime: 2024-08-05 14:55
* @Description: 获取租户有效余额记录
* @Version: 1.0
*/
public class TestGetValidBalanceList extends BaseTestImpl {
@Resource(name = "eleContractTools")
EleContractTools eleContractTools;
@BeforeMethod
@Override
public void beforeTest(){
setTestInfo(ApiModule.Polar_EleContract,"API_getValidBalanceList", LoginAccount.DZHT_PROD, Terminal.B,"xym");
super.beforeTest();
}
@Test
public void testGetValidBalanceList(){
JSONObject body = new JSONObject();
body.put("tenantId",xmAppApi.getLoginInfo().getStudioId());
body.put("brandId",xmAppApi.getLoginInfo().getBrandId());
body.put("studioId",xmAppApi.getLoginInfo().getStudioId());
body.put("operatorId",xmAppApi.getLoginInfo().getAdminId());
xmAppApi.doRequest(RequestType.JSON,params,body.toString(),headers).assetsSuccess(true);
Assert.assertTrue(xmAppApi.getBodyInJSON().getJSONArray("result").size()>0,"获取租户有效余额记录失败");
// 和充值记录的数据对比
String[] keys = {"id","tenantId","productCode","purchaseAmount","startTime","endTime","payChannel"};
for (int i = 0; i < keys.length; i++){
Assert.assertEquals(xmAppApi.getBodyInJSON().getJSONArray("result").getJSONObject(0).getString(keys[i]),eleContractTools.getBalanceList().getJSONObject(0).getString(keys[i]),"获取租户有效余额记录与充值记录列表内容对比");
}
}
}
package com.xiaomai.cases.polar.eleContract;
import com.alibaba.fastjson.JSONObject;
import com.xiaomai.basetest.BaseTestImpl;
import com.xiaomai.enums.ApiModule;
import com.xiaomai.enums.LoginAccount;
import com.xiaomai.enums.RequestType;
import com.xiaomai.enums.Terminal;
import org.testng.Assert;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
import javax.annotation.Resource;
import java.util.Random;
/**
* @BelongsProject: xm-sportstest
* @BelongsPackage: com.xiaomai.cases.polar.eleContract
* @Author: xuyamei
* @CreateTime: 2024-08-05 15:25
* @Description: 设置租户的预警配置
* @Version: 1.0
*/
public class TestSetBalanceWarning extends BaseTestImpl {
@Resource(name = "eleContractTools")
EleContractTools eleContractTools;
@BeforeMethod
@Override
public void beforeTest(){
setTestInfo(ApiModule.Polar_EleContract,"API_setBalanceWarning", LoginAccount.DZHT_PROD, Terminal.B,"xym");
super.beforeTest();
}
@Test
public void testSetBalanceWarning(){
// 获取预警id
JSONObject balanceWarning = eleContractTools.getBalanceWarning();
String id = balanceWarning.getString("id");
Random random = new Random();
int amount = random.nextInt(100);
JSONObject body = new JSONObject();
body.put("warnAmount",amount);
body.put("brandId",xmAppApi.getLoginInfo().getBrandId());
body.put("studioId",xmAppApi.getLoginInfo().getStudioId());
body.put("operatorId",xmAppApi.getLoginInfo().getAdminId());
body.put("notifyPhone","13120057004");
body.put("id",id);
xmAppApi.doRequest(RequestType.JSON,params,body.toString(),headers).assetsSuccess(true);
// 设置完成后查询设置的预警值
balanceWarning = eleContractTools.getBalanceWarning();
String[] keys = {"warnAmount","notifyPhone","id"};
String[] values = {amount+"","13120057004",id};
for (int i = 0; i < keys.length; i++){
Assert.assertEquals(balanceWarning.getString(keys[i]),values[i]);
}
}
}
......@@ -6,13 +6,15 @@ import com.xiaomai.client.DataUserInfo;
import com.xiaomai.enums.ApiModule;
import com.xiaomai.enums.RequestType;
import com.xiaomai.enums.Terminal;
import com.xiaomai.utils.CommUtil;
import com.xiaomai.utils.RandomStringUtil;
import com.xiaomai.utils.TimeUtils;
import com.xiaomai.utils.XMBaseTest;
import org.springframework.stereotype.Component;
import java.math.BigDecimal;
@Component("orderTools")
public class OrderTools extends XMBaseTest {
/**
......@@ -155,6 +157,24 @@ public class OrderTools extends XMBaseTest {
}
/**
* @description:查询的订单
* @author: xuyamei
* @date: 2024/8/6 15:12
* @param jsonObject 请求参数
* @return: com.alibaba.fastjson.JSONObject
**/
public JSONArray pageVoucher(JSONObject jsonObject ){
dataApi.setApiModule(ApiModule.Polar_Finance)
.setApiName("API_pageVoucher")
.setTerminal(Terminal.B);
super.beforeDataRequest();
dataApi.doRequest(RequestType.JSON, dataparams, jsonObject.toJSONString(), dataheadrs).assetsSuccess(true);
JSONObject response=dataApi.getBodyInJSON();
return response.getJSONObject("result").getJSONArray("records");
}
/**
* @param
......@@ -370,6 +390,13 @@ public class OrderTools extends XMBaseTest {
card.put("cardChange",cardChange);
card.put("deductionAmount",deductionAmount);//优惠金额(元)
card.put("activatePattern",activatePattern);
if(activatePattern.equals("FIRST_USED")){ //如果选择生效方式为 首次使用生效
card.put("maxIdlePeriod",30); //最晚生效天数
card.put("giftQuantity",2);//赠送2次
}
if(activatePattern.equals("SPECIFIC_DATE")){//选择指定日期生效
card.put("activateDate", CommUtil.oneKeyGetAddDay(7));//当前时间+7天
}
card.put("commodityCardType",commodityCardType);
jsonObject.put("card",card);
......
......@@ -7,9 +7,10 @@ import com.xiaomai.enums.ApiModule;
import com.xiaomai.enums.RequestType;
import com.xiaomai.enums.Terminal;
import com.xiaomai.utils.XMBaseTest;
import org.springframework.stereotype.Component;
import java.util.List;
@Component("tools")
public class Tools extends XMBaseTest {
......
package com.xiaomai.cases.polar.memberCard;
import com.xiaomai.basetest.BaseTestImpl;
import com.xiaomai.cases.polar.finance.order.OrderTools;
import com.xiaomai.cases.polar.member.Tools;
import com.xiaomai.cases.polar.training.TrainingTools;
import com.xiaomai.utils.XMBaseTest;
import com.xiaomai.utils.XMJSONPath;
import org.testng.annotations.BeforeClass;
import javax.annotation.Resource;
import java.math.BigDecimal;
/**
* @author adu
* data 2024/7/24 10:15
*/
public class GetMemberCardBaseInfoForSign extends BaseTestImpl {
String memberId = "";
String memberCardId="";
@Resource(name = "tools")
Tools tools;
@Resource(name = "orderTools")
OrderTools orderTools;
@Resource(name = "trainingTools")
TrainingTools trainingTools;
@Resource(name = "cardTools")
CardTools cardTools;
String shelfState="";
BigDecimal quantity; //可用次数
float price; //价格
int validPeriod; //有效期
String latestSnapshotId;//最近的快照ID
@BeforeClass
@Override
public void beforeTest() {
super.beforeTest();
//搜索目标会员
String phone = "17682302508";
memberId = trainingTools.searchTargerMember(phone);
if (memberId.isEmpty()) {
memberId = tools.create("测试机吴彦祖", phone).getString("result");
}
//搜索目标会员卡-次卡
String title = "嘟嘟创建的会员卡-次卡";
cardTools.doMemberCardcommonSearch(title);
int total = XMJSONPath.getJSONArrayByReadPath(dataApi.getApi_response(), "$.result").size();
if (total > 0) {
memberCardId = XMJSONPath.readPath(dataApi.getApi_response(), "$.result[0].id");
shelfState = XMJSONPath.readPath(dataApi.getApi_response(), "$.result[0].shelfState");//YES,上架状态:YES
if (shelfState.equals("NO")) {
cardTools.modifyMemberCardShelfState(memberCardId, "YES");
}
} else {
//创建一个新的会员卡
memberCardId = cardTools.oneKeyCreateMembershipCardNumberCard(title);
}
//获取会员卡详情
cardTools.fetchDetailById(memberCardId);
quantity=BigDecimal.valueOf(Long.valueOf(XMJSONPath.readPath(dataApi.getApi_response(),"$.result.benefitList[0].balance")));
price=Float.valueOf(XMJSONPath.readPath(dataApi.getApi_response(), "$.result.price"));
validPeriod=Integer.valueOf(XMJSONPath.readPath(dataApi.getApi_response(), "$.result.validPeriod"));
latestSnapshotId=XMJSONPath.readPath(dataApi.getApi_response(), "$.result.latestSnapshotId");
//给会员签单-购买会员卡
orderTools.signOrder(memberCardId,latestSnapshotId,quantity,price,validPeriod,
latestSnapshotId,0,"FIRST_USED","MEMBER_CARD",
memberId,price,price,"1");
}
}
\ No newline at end of file
package com.xiaomai.cases.polar.memberCard;
import com.alibaba.fastjson.JSONObject;
import com.xiaomai.cases.polar.finance.order.OrderTools;
import com.xiaomai.enums.ApiModule;
import com.xiaomai.enums.LoginAccount;
import com.xiaomai.enums.RequestType;
import com.xiaomai.enums.Terminal;
import com.xiaomai.utils.XMJSONPath;
import org.testng.Assert;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
import javax.annotation.Resource;
/**
* 售卖记录详情-会员卡开卡
*
* @author adu
* data 2024/7/24 14:43
*/
public class TestActivateMemberCard extends GetMemberCardBaseInfoForSign {
@Resource(name = "cardTools")
CardTools cardTools;
@Resource(name = "orderTools")
OrderTools orderTools;
@BeforeClass
@Override
public void beforeTest() {
setTestInfo(ApiModule.Polar_Card, "API_activateMemberCard", LoginAccount.ADU_PROD, Terminal.B, "adu");
super.beforeTest();
}
@Test(description = "操作会员卡开卡")
public void testActivateMemberCard() {
cardTools.getUserMemberCardList(memberId);
String memberAccountCardId="";
String state;
int count= XMJSONPath.getJSONArrayByReadPath(dataApi.getApi_response(),"$.result").size();
if(count>0){
memberAccountCardId=XMJSONPath.readPath(dataApi.getApi_response(),"$.result[0].id");
state=XMJSONPath.readPath(dataApi.getApi_response(),"$.result[0].state");
if(state.equals("UN_ACTIVE")){
//操作开卡
JSONObject body = new JSONObject();
body.put("operatorId", xmAppApi.getLoginInfo().getAdminId());
body.put("studioId", xmAppApi.getLoginInfo().getStudioId());
body.put("brandId", xmAppApi.getLoginInfo().getBrandId());
body.put("memberCardId", memberAccountCardId);
xmAppApi.doRequest(RequestType.JSON, params, body.toString(), headers).assetsSuccess(true);
//查看售卖记录详情
cardTools.membercardfindDetailById(memberAccountCardId);
Assert.assertEquals(XMJSONPath.readPath(dataApi.getApi_response(),"$.result.state"),"NORMAL","开卡后卡状态没变更为生效状态");
String benefitId=XMJSONPath.readPath(dataApi.getApi_response(),"$.result.benefitList[0].id");
//check生成一条变动记录
cardTools.getMemberCardAccountOperateRecord(memberAccountCardId);
Assert.assertTrue(XMJSONPath.readPath(dataApi.getApi_response(),"$.result.records[0].operateType").equals("ACTIVATE"),"手动开卡后生成的变动记录第一条备注不是手动开卡ACTIVATE");
Assert.assertTrue(XMJSONPath.readPath(dataApi.getApi_response(),"$.result.records[0].remark").equals("手动开卡"),"手动开卡后生成的变动记录第一条备注不是手动开卡");
//查看消耗记录
cardTools.fetchPageOfConsumeRecord(benefitId,memberAccountCardId);
int totalBefore=XMJSONPath.getJSONArrayByReadPath(dataApi.getApi_response(),"$.result.records").size();
Assert.assertTrue(totalBefore==1,"会员购卡后没生成购买的消耗记录");
Assert.assertTrue(XMJSONPath.readPath(dataApi.getApi_response(),"$.result.records[0].consumeType").equals("PURCHASE"),"会员购卡后生成消耗记录不是购买");
//操作退卡
orderTools.refundOrder(2,memberAccountCardId,quantity,price,"MEMBER_CARD",
memberId,price,price,"1");
String refundOrderId=XMJSONPath.readPath(dataApi.getApi_response(),"$.result");
//退卡成功后check 售卖记录详情状态:已退卡
cardTools.membercardfindDetailById(memberAccountCardId);
Assert.assertEquals(XMJSONPath.readPath(dataApi.getApi_response(),"$.result.state"),"REFUNDED","退卡后卡卡账户状态没变更为已退卡状态");
//退卡后check是否生成一条退卡的消耗记录
cardTools.fetchPageOfConsumeRecord(benefitId,memberAccountCardId);
int totalAfter=XMJSONPath.getJSONArrayByReadPath(dataApi.getApi_response(),"$.result.records").size();
Assert.assertTrue(totalAfter==2,"会员退卡后没生成购买的消耗记录");
Assert.assertTrue(XMJSONPath.readPath(dataApi.getApi_response(),"$.result.records[0].consumeType").equals("REFUND"),"会员退卡后生成消耗记录不是退卡");
//check 消耗次数
Assert.assertEquals( XMJSONPath.readPath(dataApi.getApi_response(),"$.result.records[0].changeOfPurchaseBalance"),"-60.00","购买次数变动不是-60");
Assert.assertEquals( XMJSONPath.readPath(dataApi.getApi_response(),"$.result.records[0].changeOfUsablePurchaseBalance"),"-60.00","可用次数变动不是-2");
Assert.assertEquals( XMJSONPath.readPath(dataApi.getApi_response(),"$.result.records[0].changeOfGiveBalance"),"-2.00","赠送次数变动不是-60");
Assert.assertEquals( XMJSONPath.readPath(dataApi.getApi_response(),"$.result.records[0].changeOfUsableGiveBalance"),"-2.00","可用赠送次数变动不是-2");
Assert.assertEquals( XMJSONPath.readPath(dataApi.getApi_response(),"$.result.records[0].changeOfBenefitAmount"),"-398.00","变动金额不是-398.00");
Assert.assertEquals( XMJSONPath.readPath(dataApi.getApi_response(),"$.result.records[0].leftBenefitAmount"),"0.00","剩余金额不是0.00");
Assert.assertEquals( XMJSONPath.readPath(dataApi.getApi_response(),"$.result.records[0].leftPurchaseBalance"),"0.00","剩余购买次数不是0");
Assert.assertEquals( XMJSONPath.readPath(dataApi.getApi_response(),"$.result.records[0].leftUsablePurchaseBalance"),"0.00","剩余可用次数不是0");
Assert.assertEquals( XMJSONPath.readPath(dataApi.getApi_response(),"$.result.records[0].leftGiveBalance"),"0.00","剩余赠送次数不是0");
Assert.assertEquals( XMJSONPath.readPath(dataApi.getApi_response(),"$.result.records[0].leftUsableGiveBalance"),"0.00","剩余可用赠送次数不是0");
}
}
}
}
\ No newline at end of file
package com.xiaomai.cases.polar.memberCard;
import com.alibaba.fastjson.JSONObject;
import com.xiaomai.cases.polar.clue.MemberTools;
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.TimeUtils;
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 TestMemberCardSearch extends XMBaseTest {
@Resource(name = "cardTools")
CardTools cardTools;
@BeforeMethod
public void beforeTest(){
xmAppApi.setApiModule(ApiModule.Polar_Card)
......@@ -26,25 +28,23 @@ public class TestMemberCardSearch extends XMBaseTest {
.setCase_name(Thread.currentThread().getStackTrace()[1].getFileName().split("\\.")[0]);
super.beforeTest();
}
@Test(description = "会员卡列表搜索")
@Test(description = "会员卡列表根据卡名称-全局搜索")
public void testMemberCardcommonSearch() {
CardTools Cardtools = new CardTools();
Cardtools.memberCardCreate("次卡-自动化会员卡"+ RandomStringUtil.randomString(3));//创建随机的名的次卡
Cardtools.fetchPageOfMemberCard();
String title = XMJSONPath.readPath(dataApi.getApi_response(), "$.result.records[0].title");
String memberCardName="次卡-自动化会员卡"+ RandomStringUtil.randomString(8);
cardTools.memberCardCreate(memberCardName);//创建随机的名的次卡
cardTools.fetchPageOfMemberCard();//创建成功后查询会员卡列表(此处也可以不查询)
Assert.assertTrue(XMJSONPath.getJSONArrayByReadPath(dataApi.getApi_response(),"$.result.records").size()>=1,"创建会员卡成功后,会员卡列表数据为空");
Assert.assertEquals(XMJSONPath.readPath(dataApi.getApi_response(), "$.result.records[0].title"),memberCardName,"创建成功后,列表中第一条数据不是显示的该卡");
JSONObject jsonObject = new JSONObject();
jsonObject.put("brandId",xmAppApi.getLoginInfo().getBrandId());
jsonObject.put("studioId",xmAppApi.getLoginInfo().getStudioId());
jsonObject.put("title",title);//这里需要搜索新创建的会员卡
jsonObject.put("title",memberCardName);//这里需要搜索新创建的会员卡
jsonObject.put("operatorId",xmAppApi.getLoginInfo().getAdminId());
xmAppApi.doRequest(RequestType.JSON, params, jsonObject.toJSONString(), headers).assetsSuccess(true);
Assert.assertTrue(XMJSONPath.getJSONArrayByReadPath(xmAppApi.getApi_response(),"$.result").size()==1,"精确搜索后发现会搜索到的数据不等于1");
Assert.assertTrue(XMJSONPath.readPath(xmAppApi.getApi_response(),"$.result[0].title").equals(memberCardName),"精确搜索后发现会员卡名称不匹配");
}
}
......@@ -7,10 +7,15 @@ 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 TestModifyShelfState extends XMBaseTest {
@Resource(name = "cardTools")
CardTools cardTools;
@BeforeMethod
public void beforeTest(){
xmAppApi.setApiModule(ApiModule.Polar_Card)
......@@ -26,43 +31,60 @@ public class TestModifyShelfState extends XMBaseTest {
public void testmodifyShelfState() {
CardTools Cardtools = new CardTools();
Cardtools.fetchPageOfMemberCard();
String memberCardId = XMJSONPath.readPath(dataApi.getApi_response(), "$.result.records[0].id");
String memberCardId = "";
String shelfState;
//先检查次下列表有没有数据,有数据才会执行下面的点代码(如果是个空机构,肯定不会被执行,想从存量数据中获取,需要自己先造个数据)
int listDatas = XMJSONPath.getJSONArrayByReadPath(dataApi.getApi_response(), "$.result.records").size();
if (listDatas > 0) {
memberCardId = XMJSONPath.readPath(dataApi.getApi_response(), "$.result.records[0].id");
//取出第一个数据后,要check下会员卡的启用状态,想停用,要保证卡的状态目前就是启用状态
shelfState=XMJSONPath.readPath(dataApi.getApi_response(), "$.result.records[0].shelfState");
//如果不是启用状态,则开启
if(shelfState.equals("NO")){
cardTools.modifyMemberCardShelfState(memberCardId,"YES");
}
JSONObject jsonObject = new JSONObject();
jsonObject.put("shelfState","NO");
jsonObject.put("memberCardId",memberCardId);
jsonObject.put("brandId",xmAppApi.getLoginInfo().getBrandId());
jsonObject.put("studioId",xmAppApi.getLoginInfo().getStudioId());
jsonObject.put("operatorId",xmAppApi.getLoginInfo().getAdminId());
jsonObject.put("shelfState", "NO");
jsonObject.put("memberCardId", memberCardId);
jsonObject.put("brandId", xmAppApi.getLoginInfo().getBrandId());
jsonObject.put("studioId", xmAppApi.getLoginInfo().getStudioId());
jsonObject.put("operatorId", xmAppApi.getLoginInfo().getAdminId());
xmAppApi.doRequest(RequestType.JSON, params, jsonObject.toJSONString(), headers).assetsSuccess(true);
//check 会员卡详情,查看状态是否是下架状态
cardTools.fetchDetailById(memberCardId);
Assert.assertEquals(XMJSONPath.readPath(dataApi.getApi_response(),"$.result.shelfState"),"NO","操作停用会员卡后,查看卡详情,卡启用状态没变更为NO");
}
}
@Test(description = "启用会员卡")
public void testmodifyShelfState1() {
CardTools Cardtools = new CardTools();
Cardtools.fetchPageOfMemberCard();
String memberCardId = XMJSONPath.readPath(dataApi.getApi_response(), "$.result.records[0].id");
String memberCardId = "";
String shelfState;
int listDatas = XMJSONPath.getJSONArrayByReadPath(dataApi.getApi_response(), "$.result.records").size();
if (listDatas > 0) {
memberCardId = XMJSONPath.readPath(dataApi.getApi_response(), "$.result.records[0].id");
shelfState = XMJSONPath.readPath(dataApi.getApi_response(), "$.result.records[0].shelfState");
if (shelfState.equals("YES")) {
cardTools.modifyMemberCardShelfState(memberCardId, "NO");
}
JSONObject jsonObject = new JSONObject();
jsonObject.put("shelfState","YES");
jsonObject.put("memberCardId",memberCardId);
jsonObject.put("brandId",xmAppApi.getLoginInfo().getBrandId());
jsonObject.put("studioId",xmAppApi.getLoginInfo().getStudioId());
jsonObject.put("operatorId",xmAppApi.getLoginInfo().getAdminId());
jsonObject.put("shelfState", "YES");
jsonObject.put("memberCardId", memberCardId);
jsonObject.put("brandId", xmAppApi.getLoginInfo().getBrandId());
jsonObject.put("studioId", xmAppApi.getLoginInfo().getStudioId());
jsonObject.put("operatorId", xmAppApi.getLoginInfo().getAdminId());
xmAppApi.doRequest(RequestType.JSON, params, jsonObject.toJSONString(), headers).assetsSuccess(true);
//check 会员卡详情,查看状态是否是上架状态
cardTools.fetchDetailById(memberCardId);
Assert.assertEquals(XMJSONPath.readPath(dataApi.getApi_response(), "$.result.shelfState"), "YES", "操作启用会员卡后,查看卡详情,卡启用状态没变更为YES");
}
}
}
......@@ -28,8 +28,6 @@ public class TestModifyXcxSaleState extends XMBaseTest {
Cardtools.fetchPageOfMemberCard();
String memberCardId = XMJSONPath.readPath(dataApi.getApi_response(), "$.result.records[0].id");
JSONObject jsonObject = new JSONObject();
jsonObject.put("xcxSaleState","NO");
......@@ -37,9 +35,6 @@ public class TestModifyXcxSaleState extends XMBaseTest {
jsonObject.put("brandId",xmAppApi.getLoginInfo().getBrandId());
jsonObject.put("studioId",xmAppApi.getLoginInfo().getStudioId());
jsonObject.put("operatorId",xmAppApi.getLoginInfo().getAdminId());
xmAppApi.doRequest(RequestType.JSON, params, jsonObject.toJSONString(), headers).assetsSuccess(true);
}
......
package com.xiaomai.cases.polar.reserve;
package com.xiaomai.cases.polar.reserve.group;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.xiaomai.basetest.BaseTestImpl;
import com.xiaomai.cases.polar.clue.MemberTools;
import com.xiaomai.cases.polar.course.CourseTools;
import com.xiaomai.cases.polar.finance.order.OrderTools;
import com.xiaomai.cases.polar.member.Tools;
import com.xiaomai.cases.polar.memberCard.CardTools;
import com.xiaomai.cases.polar.reserve.ReserveTools;
import com.xiaomai.cases.polar.schedule.group.GroupScheduleTools;
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.CommUtil;
import com.xiaomai.utils.RandomStringUtil;
import com.xiaomai.utils.TimeUtils;
import com.xiaomai.utils.XMJSONPath;
import org.testng.Assert;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
......@@ -46,6 +50,7 @@ public class TestSignIn extends BaseTestImpl {
@Resource(name = "groupScheduleTools")
GroupScheduleTools groupScheduleTools;
MemberTools memberTools = new MemberTools();
OrderTools orderTools = new OrderTools();
CardTools cardTools = new CardTools();
......@@ -65,7 +70,8 @@ public class TestSignIn extends BaseTestImpl {
private String courseId;
@BeforeClass
@BeforeMethod
@Override
public void beforeTest(){
setTestInfo(ApiModule.Polar_Reserve,"API_signIn", LoginAccount.GYM_PROD, Terminal.B,"xym");
super.beforeTest();
......@@ -94,7 +100,7 @@ public class TestSignIn extends BaseTestImpl {
throw new RuntimeException(e);
}
// 操作签到
reserveTools.signIn(true, memberInfo.getString(2),false);
reserveTools.signIn(true, memberInfo.getString(3),false);
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
......@@ -129,7 +135,7 @@ public class TestSignIn extends BaseTestImpl {
}
Assert.assertTrue(success,"约课后在会员详情页面未查询到相关信息");
// check 2.2 预约记录列表
JSONArray getPageByStudio = reserveTools.getPageByStudio(courseId,"SUCCESS","SIGNED","",startTime,scheduleEndTime, memberInfo.getString(0),"GROUP_CLASS");
JSONArray getPageByStudio = reserveTools.getPageByStudio(courseId,"SUCCESS","SIGNED","",startTime,scheduleEndTime, memberInfo.getString(0),"GROUP_CLASS","");
success = false;
for(int i =0;i<getPageByStudio.size();i++){
if (getPageByStudio.getJSONObject(i).getString("id").equals(reserveId)){
......@@ -148,8 +154,14 @@ public class TestSignIn extends BaseTestImpl {
}
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")
......@@ -163,11 +175,11 @@ public class TestSignIn extends BaseTestImpl {
@Test(description = "签到",priority = 1,dataProvider = "dataProvider")
public void testSignIn2(String type,String message) {
if (type.equals("signIn")){
reserveTools.signIn(false, memberInfo.getString(2),false);
reserveTools.signIn(false, memberInfo.getString(3),false);
JSONObject response = dataApi.getBodyInJSON();
Assert.assertEquals(response.getString("message"),message,"已经操作签到,又操作签到提示错误");
}else {
reserveTools.cancelMemberReserve(memberInfo.getString(2),false);
reserveTools.cancelMemberReserve(memberInfo.getString(3),false);
JSONObject response = dataApi.getBodyInJSON();
Assert.assertEquals(response.getString("message"),message,"已经操作签到,又操作取消提示错误");
}
......@@ -236,7 +248,12 @@ public class TestSignIn 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};
Random random = new Random();
//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)]);
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
//1.2-查询排课日程
JSONArray getGroupRuleScheduleList = groupScheduleTools.getGroupRuleScheduleList(courseId, xmAppApi.getLoginInfo().getAdminId());
//统计查询到的目标日程数量
......@@ -248,9 +265,9 @@ public class TestSignIn extends BaseTestImpl {
throw new RuntimeException(e);
}
// 查询课次id
JSONArray getGroupScheduleTable = groupScheduleTools.getGroupScheduleTable(Long.valueOf(todayStartTimeTamp), scheduleEndTime);
JSONArray getGroupScheduleTable = groupScheduleTools.getGroupScheduleTable(Long.valueOf(todayStartTimeTamp), scheduleEndTime,courseId);
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");
break;
}
......@@ -266,13 +283,15 @@ public class TestSignIn extends BaseTestImpl {
**/
public JSONArray createMember(String memberName){
String memberId = "";
// 查询存量的学员没有则创建学员,// todo 先手动新建
// 查询存量的学员没有则创建学员,
if (tools.commonSearch(memberName,"NORMAL").getJSONArray("result").size()>0){
memberId = tools.commonSearch(memberName,"NORMAL").getJSONArray("result").getJSONObject(0).getString("id");
}else if (tools.commonSearch(memberName,"HISTORY").getJSONArray("result").size()>0){
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");
}else{
memberId = memberTools.create(memberName, RandomStringUtil.randomMobile("203")).getString("result");
}
// 查询是否有可用的会员卡,没有则购买
......@@ -289,10 +308,12 @@ public class TestSignIn extends BaseTestImpl {
}
// 查询权益
String benefitId = listUserReservableBenefit.getJSONObject(0).getString("benefitId");
String memberCardId = listUserReservableBenefit.getJSONObject(0).getString("memberCardId");
JSONArray members = new JSONArray();
members.add(memberId);
members.add(benefitId);
members.add(memberCardId);
return members;
}
......
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.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 org.testng.Assert;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
import javax.annotation.Resource;
import java.util.Arrays;
import java.util.Random;
/**
* @BelongsProject: xm-sportstest
* @BelongsPackage: com.xiaomai.cases.polar.reserve.personal
* @Author: xuyamei
* @CreateTime: 2024-07-24 11:49
* @Description: 批量设置常规可约时间
* @Version: 1.0
*/
public class TestCreateBatchNormalDate extends BaseTestImpl {
@Resource(name = "reserveTools")
ReserveTools reserveTools;
JSONArray coachIds = new JSONArray();
@BeforeMethod
@Override
public void beforeTest(){
setTestInfo(ApiModule.Polar_Reserve,"API_createBatchNormalDate", LoginAccount.GYM_PROD, Terminal.B,"xym");
super.beforeTest();
}
@Test
public void testCreateBatchNormalDate(){
JSONObject body = new JSONObject();
body.put("brandId", xmAppApi.getLoginInfo().getBrandId());
body.put("operatorId", xmAppApi.getLoginInfo().getAdminId()); // 操作人id
body.put("studioId", xmAppApi.getLoginInfo().getStudioId());
// 获取教练列表
JSONObject pageStudioPersonalCoach = reserveTools.pageStudioPersonalCoach("");
int total = pageStudioPersonalCoach.getInteger("total");
Random rand = new Random();
// 随机取两个教练
String coachedId1 = pageStudioPersonalCoach.getJSONArray("records").getJSONObject(rand.nextInt(total>10?10:total)).getString("id");
coachIds.add(coachedId1);
String coachedId2 = pageStudioPersonalCoach.getJSONArray("records").getJSONObject(rand.nextInt(total>10?10:total)).getString("id");
if (coachedId1.equals(coachedId2)){
coachedId2 = pageStudioPersonalCoach.getJSONArray("records").getJSONObject(rand.nextInt(total>10?9:total-1)).getString("id");
}
coachIds.add(coachedId2);
body.put("coachIds", coachIds); // 员工id
// 设置可约时间
JSONArray normalTimeInfoRequests = new JSONArray();
JSONObject infoRequests = new JSONObject();
JSONArray timePeriodInfos = new JSONArray();
// 三个时段 5:00-12:00 12:00-18:00 18:00-23:00
int[] minuteOffset = {300,720,1080};
int[] spanMinutes = {420,360,300};
for (int i = 0; i < 3; i++){
JSONObject timeInfo = new JSONObject();
timeInfo.put("minuteOffset",minuteOffset[i]);
timeInfo.put("spanMinutes",spanMinutes[i]);
timePeriodInfos.add(timeInfo);
}
infoRequests.put("timePeriodInfos",timePeriodInfos);
// 每星期
String[] weekdays = {"MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY", "SATURDAY", "SUNDAY"};
infoRequests.put("weekdays",weekdays);
normalTimeInfoRequests.add(infoRequests);
body.put("normalTimeInfoRequests",normalTimeInfoRequests);
// 批量设置可约时间
xmAppApi.doRequest(RequestType.JSON,params, body.toString(), headers).assetsSuccess(true);
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
for (int i = 0; i < coachIds.size(); i++){
JSONArray personalCoachTime = reserveTools.getPersonalCoachTime(coachIds.getString(i),"normalTimeVOS");
// 校验每周重复的可约时间
Assert.assertEquals(timePeriodInfos.toString(),personalCoachTime.getJSONObject(0).getJSONArray("timePeriodInfos").toString(),"每周重复的可约时间请求结果与实际结果不一样");
JSONArray weekDays = new JSONArray(Arrays.asList(weekdays));
Assert.assertEquals(weekDays.toString(),personalCoachTime.getJSONObject(0).getJSONArray("weekdays").toString(),"每周重复的周请求结果与实际结果不一样");
}
}
@Test(description = "将设置的值清空",priority = 1)
public void testCreateBatchNormalDate_clear(){
JSONObject body = new JSONObject();
body.put("brandId", xmAppApi.getLoginInfo().getBrandId());
body.put("operatorId", xmAppApi.getLoginInfo().getAdminId()); // 操作人id
body.put("studioId", xmAppApi.getLoginInfo().getStudioId());
JSONArray normalTimeInfoRequests = new JSONArray();
body.put("normalTimeInfoRequests",normalTimeInfoRequests);
body.put("coachIds", coachIds); // 员工id
xmAppApi.doRequest(RequestType.JSON,params, body.toString(), headers).assetsSuccess(true);
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
for (int i = 0; i < coachIds.size(); i++){
JSONArray personalCoachTime = reserveTools.getPersonalCoachTime(coachIds.getString(i),"normalTimeVOS");
// 校验每周重复的可约时间
Assert.assertTrue(personalCoachTime.size()==0,"清空数据后还能查询到数据");
}
}
}
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.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;
import java.util.Random;
/**
* @BelongsProject: xm-sportstest
* @BelongsPackage: com.xiaomai.cases.polar.reserve.personal
* @Author: xuyamei
* @CreateTime: 2024-07-24 15:32
* @Description:批量设置特殊可约时间
* @Version: 1.0
*/
public class TestCreateBatchSpecialDate extends BaseTestImpl {
@Resource(name = "reserveTools")
ReserveTools reserveTools;
JSONArray coachIds = new JSONArray();
@BeforeMethod
@Override
public void beforeTest(){
setTestInfo(ApiModule.Polar_Reserve,"API_createBatchSpecialDate", LoginAccount.GYM_PROD, Terminal.B,"xym");
super.beforeTest();
}
@Test(description = "设置特定日期可约")
public void testCreateBatchSpecialDate() {
// 获取教练列表
JSONObject pageStudioPersonalCoach = reserveTools.pageStudioPersonalCoach("");
int total = pageStudioPersonalCoach.getInteger("total");
Random rand = new Random();
// 随机取两个教练
String coachedId1 = pageStudioPersonalCoach.getJSONArray("records").getJSONObject(rand.nextInt(total>10?10:total)).getString("id");
coachIds.add(coachedId1);
String coachedId2 = pageStudioPersonalCoach.getJSONArray("records").getJSONObject(rand.nextInt(total>10?10:total)).getString("id");
if (coachedId1.equals(coachedId2)){
coachedId2 = pageStudioPersonalCoach.getJSONArray("records").getJSONObject(rand.nextInt(total>10?9:total-1)).getString("id");
}
coachIds.add(coachedId2);
JSONObject body = new JSONObject();
body.put("brandId", xmAppApi.getLoginInfo().getBrandId());
body.put("operatorId", xmAppApi.getLoginInfo().getAdminId()); // 操作人id
body.put("studioId", xmAppApi.getLoginInfo().getStudioId());
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", 60);
timePeriodInfos.add(timeInfo);
specialTimeInfoRequest.put("timePeriodInfos", timePeriodInfos);
body.put("specialTimeInfoRequest", specialTimeInfoRequest);
body.put("coachIds", coachIds);
xmAppApi.doRequest(RequestType.JSON,params,body.toString(),headers).assetsSuccess(true);
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
// 批量设置特殊可约时间后检查个人私教时间是否有这条数据
for (int j = 0; j < coachIds.size(); j++){
JSONArray specialTimeVOS = reserveTools.getPersonalCoachTime(coachIds.getString(j), "specialTimeVOS");
boolean flag = false;
for (int i = 0; i < specialTimeVOS.size(); i++) {
JSONObject specialTimeVO = specialTimeVOS.getJSONObject(i);
if (selectedDates.getString(0).equals(specialTimeVO.getString("dutyDate"))) {
flag = true;
// 查询可约类型: 全天休息 -1, 可约时间 1,
Assert.assertEquals(specialTimeVO.getString("dutyType"), "1", "特殊日期类型错误");
// 查询这条数据的可约时间
Assert.assertTrue(specialTimeVO.getString("timePeriodInfos").equals(timePeriodInfos.toString()), "特殊日期可约时间段");
}
}
Assert.assertTrue(flag, "批量设置特殊日期后没有找到相关数据");
}
}
@Test(description = "删除特殊日期",priority = 1)
public void testDeleteSpecialDate1() {
for (int j = 0; j < coachIds.size(); j++){
// 查询特殊可约时间列表
JSONArray specialTimeVOS = reserveTools.getPersonalCoachTime(coachIds.getString(j),"specialTimeVOS");
for (int i = 0; i < specialTimeVOS.size(); i++){
String id = specialTimeVOS.getJSONObject(i).getJSONArray("recordIds").getString(0);
// 删除查询到的特殊可约时间
reserveTools.deleteSpecialDate(id);
}
specialTimeVOS = reserveTools.getPersonalCoachTime(coachIds.getString(j),"specialTimeVOS");
Assert.assertEquals(specialTimeVOS.size(),0,"删除特殊日期后,特殊日期列表不为空");
}
}
@Test(description = "设置特定日期全天休息",priority = 2)
public void testCreateBatchSpecialDate2() {
// 获取教练列表
JSONObject pageStudioPersonalCoach = reserveTools.pageStudioPersonalCoach("");
int total = pageStudioPersonalCoach.getInteger("total");
Random rand = new Random();
// 随机取两个教练
String coachedId1 = pageStudioPersonalCoach.getJSONArray("records").getJSONObject(rand.nextInt(total>10?10:total)).getString("id");
coachIds.add(coachedId1);
String coachedId2 = pageStudioPersonalCoach.getJSONArray("records").getJSONObject(rand.nextInt(total>10?10:total)).getString("id");
if (coachedId1.equals(coachedId2)){
coachedId2 = pageStudioPersonalCoach.getJSONArray("records").getJSONObject(rand.nextInt(total>10?9:total-1)).getString("id");
}
coachIds.add(coachedId2);
JSONObject body = new JSONObject();
body.put("brandId", xmAppApi.getLoginInfo().getBrandId());
body.put("operatorId", xmAppApi.getLoginInfo().getAdminId()); // 操作人id
body.put("studioId", xmAppApi.getLoginInfo().getStudioId());
JSONObject specialTimeInfoRequest = new JSONObject();
// 可约时间类型
specialTimeInfoRequest.put("dutyType", "OFF_DUTY");
// 设置特定日期
JSONArray selectedDates = new JSONArray();
selectedDates.add(TimeUtils.getBeforeDayDate(-1)); // 第二天
specialTimeInfoRequest.put("selectedDates", selectedDates);
body.put("specialTimeInfoRequest", specialTimeInfoRequest);
body.put("coachIds", coachIds);
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
xmAppApi.doRequest(RequestType.JSON,params,body.toString(),headers).assetsSuccess(true);
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
// 批量设置特殊可约时间后检查个人私教时间是否有这条数据
for (int j = 0; j < coachIds.size(); j++){
JSONArray specialTimeVOS = reserveTools.getPersonalCoachTime(coachIds.getString(j), "specialTimeVOS");
boolean flag = false;
for (int i = 0; i < specialTimeVOS.size(); i++){
JSONObject specialTimeVO = specialTimeVOS.getJSONObject(i);
if (selectedDates.getString(0).equals(specialTimeVO.getString("dutyDate"))){
flag = true;
// 查询可约类型: 全天休息 -1, 可约时间 1,
Assert.assertEquals(specialTimeVO.getString("dutyType"),"-1","特殊日期类型错误");
}
}
Assert.assertTrue(flag, "设置特殊日期全天休息后没有找到相关数据");
}
}
@Test(description = "删除特殊日期",priority = 3)
public void testDeleteSpecialDate() {
for (int j = 0; j < coachIds.size(); j++){
// 查询特殊可约时间列表
JSONArray specialTimeVOS = reserveTools.getPersonalCoachTime(coachIds.getString(j),"specialTimeVOS");
for (int i = 0; i < specialTimeVOS.size(); i++){
String id = specialTimeVOS.getJSONObject(i).getJSONArray("recordIds").getString(0);
// 删除查询到的特殊可约时间
reserveTools.deleteSpecialDate(id);
}
specialTimeVOS = reserveTools.getPersonalCoachTime(coachIds.getString(j),"specialTimeVOS");
Assert.assertEquals(specialTimeVOS.size(),0,"删除特殊日期后,特殊日期列表不为空");
}
}
}
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.cases.polar.reserve.ReserveTools;
import com.xiaomai.enums.ApiModule;
import com.xiaomai.enums.LoginAccount;
import com.xiaomai.enums.Terminal;
import org.testng.Assert;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
import javax.annotation.Resource;
import java.util.Arrays;
import java.util.Collections;
/**
* @BelongsProject: xm-sportstest
* @BelongsPackage: com.xiaomai.cases.lunar.reserve
* @Author: xuyamei
* @CreateTime: 2024-07-08 14:47
* @Description: 设置常规可约时间
* @Version: 1.0
*/
public class TestCreateNormalDate extends BaseTestImpl {
@Resource(name = "reserveTools")
ReserveTools reserveTools;
@BeforeClass
@Override
public void beforeTest(){
setTestInfo(ApiModule.Polar_Reserve,"API_createNormalDate", LoginAccount.GYM_PROD, Terminal.B,"xym");
super.beforeTest();
}
@Test(description = "设置周一至周日 统一一个时间点")
public void testCreateNormalDate(){
// 设置可约时间
JSONArray normalTimeInfoRequests = new JSONArray();
JSONObject infoRequests = new JSONObject();
JSONArray timePeriodInfos = new JSONArray();
// 三个时段 5:00-12:00 12:00-18:00 18:00-23:00
int[] minuteOffset = {300,720,1080};
int[] spanMinutes = {420,360,300};
for (int i = 0; i < 3; i++){
JSONObject timeInfo = new JSONObject();
timeInfo.put("minuteOffset",minuteOffset[i]);
timeInfo.put("spanMinutes",spanMinutes[i]);
timePeriodInfos.add(timeInfo);
}
infoRequests.put("timePeriodInfos",timePeriodInfos);
// 每星期
String[] weekdays = {"MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY", "SATURDAY", "SUNDAY"};
infoRequests.put("weekdays",weekdays);
normalTimeInfoRequests.add(infoRequests);
// 设置常规可约时间
reserveTools.createNormalDate(xmAppApi.getLoginInfo().getAdminId(),normalTimeInfoRequests);
JSONArray personalCoachTime = reserveTools.getPersonalCoachTime(xmAppApi.getLoginInfo().getAdminId(),"normalTimeVOS");
// 校验每周重复的可约时间
Assert.assertEquals(timePeriodInfos.toString(),personalCoachTime.getJSONObject(0).getJSONArray("timePeriodInfos").toString(),"每周重复的可约时间请求结果与实际结果不一样");
JSONArray weekDays = new JSONArray(Arrays.asList(weekdays));
Assert.assertEquals(weekDays.toString(),personalCoachTime.getJSONObject(0).getJSONArray("weekdays").toString(),"每周重复的周请求结果与实际结果不一样");
}
@Test(description = "周一至周日分开设置 ")
public void testCreateNormalDate1(){
// 设置可约时间
JSONArray normalTimeInfoRequests = new JSONArray();
String[] weekdays = {"MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY", "SATURDAY", "SUNDAY"};
for (int j = 0; j <weekdays.length;j++){
JSONObject infoRequests = new JSONObject();
JSONArray timePeriodInfos = new JSONArray();
// 三个时段 5:00-12:00 12:00-18:00 18:00-23:00
int[] minuteOffset = {300,720,1080};
int[] spanMinutes = {420,360,300};
for (int i = 0; i < 3; i++){
JSONObject timeInfo = new JSONObject();
timeInfo.put("minuteOffset",minuteOffset[i]);
timeInfo.put("spanMinutes",spanMinutes[i]);
timePeriodInfos.add(timeInfo);
}
infoRequests.put("timePeriodInfos",timePeriodInfos);
JSONArray arr = new JSONArray();
arr.add(weekdays[j]);
// 每星期
infoRequests.put("weekdays",arr);
normalTimeInfoRequests.add(infoRequests);
}
// 设置常规可约时间
reserveTools.createNormalDate(xmAppApi.getLoginInfo().getAdminId(),normalTimeInfoRequests);
JSONArray personalCoachTime = reserveTools.getPersonalCoachTime(xmAppApi.getLoginInfo().getAdminId(),"normalTimeVOS");
for (int i = 0; i < personalCoachTime.size(); i++){
// 校验每周重复的可约时间
Assert.assertEquals(normalTimeInfoRequests.getJSONObject(i).getJSONArray("timePeriodInfos").toString(),personalCoachTime.getJSONObject(i).getJSONArray("timePeriodInfos").toString(),"每周重复的可约时间请求结果与实际结果不一样");
Assert.assertEquals(normalTimeInfoRequests.getJSONObject(i).getJSONArray("weekdays").toString(),personalCoachTime.getJSONObject(i).getJSONArray("weekdays").toString(),"每周重复的周请求结果与实际结果不一样");
}
}
}
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.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.BeforeClass;
import org.testng.annotations.Test;
import javax.annotation.Resource;
/**
* @BelongsProject: xm-sportstest
* @BelongsPackage: com.xiaomai.cases.polar.course
* @Author: xuyamei
* @CreateTime: 2024-04-25 11:43
* @Description: 创建特定日期可约
* @Version: 1.0
*/
public class TestCreateSpecialDate extends BaseTestImpl {
@Resource(name = "reserveTools")
ReserveTools reserveTools;
@BeforeClass
@Override
public void beforeTest() {
setTestInfo(ApiModule.Polar_Reserve, "API_createSpecialDate", LoginAccount.GYM_PROD, Terminal.B, "xym");
super.beforeTest();
}
@Test(description = "设置全天休息")
public void testCreateSpecialDate_OFF() {
JSONObject body = new JSONObject();
body.put("brandId", xmAppApi.getLoginInfo().getBrandId());
body.put("studioId", xmAppApi.getLoginInfo().getStudioId());
body.put("coachId", xmAppApi.getLoginInfo().getAdminId());
// 可约时间类型
JSONObject specialTimeInfoRequest = new JSONObject();
specialTimeInfoRequest.put("dutyType", "OFF_DUTY"); // 全天休息
// 设置特定日期
JSONArray specialTimeInfoRequestArray = new JSONArray();
specialTimeInfoRequestArray.add(TimeUtils.getTodayTime());
specialTimeInfoRequest.put("selectedDates", specialTimeInfoRequestArray);
body.put("specialTimeInfoRequest", specialTimeInfoRequest);
xmAppApi.doRequest(RequestType.JSON,params,body.toString(),headers).assetsSuccess(true);
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
// 设置全天休息完成后检查个人时间是否有这条数据
JSONArray specialTimeVOS = reserveTools.getPersonalCoachTime(xmAppApi.getLoginInfo().getAdminId(),"specialTimeVOS");
boolean flag = false;
for (int i = 0; i < specialTimeVOS.size(); i++){
JSONObject specialTimeVO = specialTimeVOS.getJSONObject(i);
if (specialTimeInfoRequestArray.getString(0).equals(specialTimeVO.getString("dutyDate"))){
flag = true;
Assert.assertEquals(specialTimeVO.getString("dutyType"),"-1","特殊日期类型错误");
}
}
Assert.assertTrue(flag,"设置特殊日期全天休息后没有找到相关数据");
}
@Test(description = "设置特定日期可约",priority = 1)
public void testCreateSpecialDate_ON() {
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(xmAppApi.getLoginInfo().getAdminId(),"ON_DUTY",specialTimeInfoRequest);
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
// 设置特殊可约时间后检查个人私教时间是否有这条数据
JSONArray specialTimeVOS = reserveTools.getPersonalCoachTime(xmAppApi.getLoginInfo().getAdminId(),"specialTimeVOS");
boolean flag = false;
for (int i = 0; i < specialTimeVOS.size(); i++){
JSONObject specialTimeVO = specialTimeVOS.getJSONObject(i);
if (selectedDates.getString(0).equals(specialTimeVO.getString("dutyDate"))){
flag = true;
Assert.assertEquals(specialTimeVO.getString("dutyType"),"1","特殊日期类型错误");
Assert.assertTrue(specialTimeVO.getString("timePeriodInfos").equals(timePeriodInfos.toString()),"特殊日期可约时间段");
}
}
Assert.assertTrue(flag,"设置特殊日期后没有找到相关数据");
}
@Test(description = "删除特殊日期",priority = 2)
public void testDeleteSpecialDate() {
// 查询特殊可约时间列表
JSONArray specialTimeVOS = reserveTools.getPersonalCoachTime(xmAppApi.getLoginInfo().getAdminId(),"specialTimeVOS");
for (int i = 0; i < specialTimeVOS.size(); i++){
String id = specialTimeVOS.getJSONObject(i).getJSONArray("recordIds").getString(0);
// 删除查询到的特殊可约时间
reserveTools.deleteSpecialDate(id);
}
specialTimeVOS = reserveTools.getPersonalCoachTime(xmAppApi.getLoginInfo().getAdminId(),"specialTimeVOS");
Assert.assertEquals(specialTimeVOS.size(),0,"删除特殊日期后,特殊日期列表不为空");
}
}
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.cases.polar.reserve.ReserveTools;
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.BeforeClass;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
import javax.annotation.Resource;
import java.util.Random;
/**
* @BelongsProject: xm-sportstest
* @BelongsPackage: com.xiaomai.cases.polar.reserve.personal
* @Author: xuyamei
* @CreateTime: 2024-07-24 16:18
* @Description: 获取教练的历史特殊日期
* @Version: 1.0
*/
public class TestGetCoachHistorySpecialDate extends BaseTestImpl {
@Resource(name = "reserveTools")
ReserveTools reserveTools;
private String coachedId;
@BeforeMethod
@Override
public void beforeTest(){
setTestInfo(ApiModule.Polar_Reserve,"API_getCoachHistorySpecialDate", LoginAccount.GYM_PROD, Terminal.B,"xym");
super.beforeTest();
}
@Test(description = "设置全天休息-->获取时间")
public void testGetCoachHistorySpecialDate() {
// 获取教练列表
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");
// 获取教练后先清除特殊日期数据。避免重叠
// 查询特殊可约时间列表
JSONArray specialTimeVOS = reserveTools.getCoachHistorySpecialDate(coachedId);
for (int i = 0; i < specialTimeVOS.size(); i++){
String id = specialTimeVOS.getJSONObject(i).getJSONArray("recordIds").getString(0);
// 删除查询到的特殊可约时间
reserveTools.deleteSpecialDate(id);
}
Long date = TimeUtils.getBeforeDayDate(1);
JSONObject body = new JSONObject();
body.put("brandId", xmAppApi.getLoginInfo().getBrandId());
body.put("studioId", xmAppApi.getLoginInfo().getStudioId());
body.put("coachId", coachedId);
// 可约时间类型
JSONObject specialTimeInfoRequest = new JSONObject();
specialTimeInfoRequest.put("dutyType", "OFF_DUTY"); // 全天休息
// 设置特定日期
JSONArray specialTimeInfoRequestArray = new JSONArray();
specialTimeInfoRequestArray.add(date);
specialTimeInfoRequest.put("selectedDates", specialTimeInfoRequestArray);
body.put("specialTimeInfoRequest", specialTimeInfoRequest);
reserveTools.createSpecialDate(coachedId,"OFF_DUTY",specialTimeInfoRequest);
// 设置全天休息完成后检查个人时间是否有这条数据
specialTimeVOS = reserveTools.getCoachHistorySpecialDate(coachedId);
boolean flag = false;
for (int i = 0; i < specialTimeVOS.size(); i++){
JSONObject specialTimeVO = specialTimeVOS.getJSONObject(i);
if (date.toString().equals(specialTimeVO.getString("dutyDate"))){
flag = true;
Assert.assertEquals(specialTimeVO.getString("dutyType"),"-1","特殊日期类型错误");
}
}
Assert.assertTrue(flag,"设置特殊日期全天休息后在历史特定日期可约时间列表没有找到相关数据");
}
@Test(description = "删除特殊日期",priority = 1)
public void testDeleteSpecialDate() {
// 查询特殊可约时间列表
JSONArray specialTimeVOS = reserveTools.getCoachHistorySpecialDate(coachedId);
for (int i = 0; i < specialTimeVOS.size(); i++){
String id = specialTimeVOS.getJSONObject(i).getJSONArray("recordIds").getString(0);
// 删除查询到的特殊可约时间
reserveTools.deleteSpecialDate(id);
}
specialTimeVOS = reserveTools.getCoachHistorySpecialDate(coachedId);
Assert.assertEquals(specialTimeVOS.size(),0,"删除特殊日期后,特殊日期列表不为空");
}
@Test(description = "设置特定日期可约",priority = 2)
public void testCreateSpecialDate_ON() {
Long date = TimeUtils.getBeforeDayDate(2);
JSONObject specialTimeInfoRequest = new JSONObject();
// 可约时间类型
specialTimeInfoRequest.put("dutyType", "ON_DUTY");
// 设置特定日期
JSONArray selectedDates = new JSONArray();
selectedDates.add(date);
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);
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
// 设置特殊可约时间后检查个人私教时间是否有这条数据
JSONArray specialTimeVOS = reserveTools.getCoachHistorySpecialDate(coachedId);
boolean flag = false;
for (int i = 0; i < specialTimeVOS.size(); i++){
JSONObject specialTimeVO = specialTimeVOS.getJSONObject(i);
if (selectedDates.getString(0).equals(specialTimeVO.getString("dutyDate"))){
flag = true;
Assert.assertEquals(specialTimeVO.getString("dutyType"),"1","特殊日期类型错误");
Assert.assertTrue(specialTimeVO.getString("timePeriodInfos").equals(timePeriodInfos.toString()),"特殊日期可约时间段");
}
}
Assert.assertTrue(flag,"设置特殊日期在历史特定日期可约时间列表没有找到相关数据");
}
@Test(description = "删除特殊日期",priority = 3)
public void testDeleteSpecialDate2() {
// 查询特殊可约时间列表
JSONArray specialTimeVOS = reserveTools.getCoachHistorySpecialDate(coachedId);
for (int i = 0; i < specialTimeVOS.size(); i++){
String id = specialTimeVOS.getJSONObject(i).getJSONArray("recordIds").getString(0);
// 删除查询到的特殊可约时间
reserveTools.deleteSpecialDate(id);
}
specialTimeVOS = reserveTools.getCoachHistorySpecialDate(coachedId);
Assert.assertEquals(specialTimeVOS.size(),0,"删除特殊日期后,特殊日期列表不为空");
}
}
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.cases.polar.course.CourseTools;
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 java.util.Random;
/**
* @BelongsProject: xm-sportstest
* @BelongsPackage: com.xiaomai.cases.polar.reserve.personal
* @Author: xuyamei
* @CreateTime: 2024-07-24 17:20
* @Description: 获取私教课程的可约时间块
* @Version: 1.0
*/
public class TestGetPersonalTimeBlocks extends BaseTestImpl {
@Resource(name = "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() {
// 获取到员工
// 获取教练列表
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);
}
}
}
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.cases.polar.reserve.ReserveTools;
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.BeforeClass;
import org.testng.annotations.Test;
import javax.annotation.Resource;
/**
* @BelongsProject: xm-sportstest
* @BelongsPackage: com.xiaomai.cases.polar.reserve.personal
* @Author: xuyamei
* @CreateTime: 2024-07-24 10:05
* @Description: 修改特定可约时间
* @Version: 1.0
*/
public class TestModifySpecialDate extends BaseTestImpl {
@Resource(name = "reserveTools")
ReserveTools reserveTools;
private String id;
@BeforeClass
@Override
public void beforeTest() {
setTestInfo(ApiModule.Polar_Reserve, "API_modifySpecialDate", LoginAccount.GYM_PROD, Terminal.B, "xym");
super.beforeTest();
}
@Test
public void testModifySpecialDate(){
Long date = TimeUtils.getTodayTime();
// 先创建特殊可约时间,当天可休息
reserveTools.createSpecialDate(xmAppApi.getLoginInfo().getAdminId(),"OFF_DUTY",new JSONObject());
// 可约时间段
JSONArray timePeriodInfos = new JSONArray();
JSONObject timePeriodInfo = new JSONObject();
timePeriodInfo.put("minuteOffset", 0);
timePeriodInfo.put("spanMinutes", 720);
timePeriodInfos.add(timePeriodInfo);
// 修改特殊可约时间
reserveTools.modifySpecialDate(xmAppApi.getLoginInfo().getAdminId(),"ON_DUTY",timePeriodInfos,date);
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
// 修改特殊可约时间后检查个人私教时间
JSONArray specialTimeVOS = reserveTools.getPersonalCoachTime(xmAppApi.getLoginInfo().getAdminId(),"specialTimeVOS");
boolean flag = false;
for (int i = 0; i < specialTimeVOS.size(); i++){
JSONObject specialTimeVO = specialTimeVOS.getJSONObject(i);
if (date.toString().equals(specialTimeVO.getString("dutyDate"))){
flag = true;
id = specialTimeVO.getJSONArray("recordIds").getString(0);
Assert.assertEquals(specialTimeVO.getString("dutyType"),"1","修改特殊日期类型后查询到全天休息");
Assert.assertTrue(specialTimeVO.getString("timePeriodInfos").equals(timePeriodInfos.toString()),"修改特殊日期可约时间段与查询到的数据不一致");
}
}
Assert.assertTrue(flag,"特殊日期不存在");
}
@Test(description = "清除数据",priority = 1)
public void del(){
reserveTools.deleteSpecialDate(id);
}
}
......@@ -33,6 +33,7 @@ public class SelectTargetTrainingCampAndGetInfo extends BaseCreateTrainingData {
public int traineeUpperLimit;
public int totalClassHour;
public String chiefCoachId="";
public Double price;
List<String> assistCoachIds;
@BeforeClass
......@@ -61,6 +62,7 @@ public class SelectTargetTrainingCampAndGetInfo extends BaseCreateTrainingData {
.fluentPut("traineeLowerLimit", group.getIntValue("traineeLowerLimit"))
.fluentPut("traineeUpperLimit", group.getIntValue("traineeUpperLimit"))
.fluentPut("totalClassHour", group.getIntValue("totalClassHour"))
.fluentPut("price",group.getDouble("price"))
.fluentPut("trainerList", group.getJSONArray("trainerList").toJavaList(JSONObject.class).stream()
.map(trainers -> {
return new JSONObject()
......@@ -79,6 +81,7 @@ public class SelectTargetTrainingCampAndGetInfo extends BaseCreateTrainingData {
traineeLowerLimit=campInfo.get(0).getIntValue("traineeLowerLimit");
traineeUpperLimit=campInfo.get(0).getIntValue("traineeUpperLimit");
totalClassHour=campInfo.get(0).getIntValue("totalClassHour");
price=campInfo.get(0).getDouble("price");
chiefCoachId = campInfo.get(0).getJSONArray("trainerList").toJavaList(JSONObject.class).stream().filter(e -> {
return "杜君丽".equals(e.getString("nickName"));
}).map(e -> e.getString("id")).findFirst().orElse(null);
......
package com.xiaomai.cases.polar.schedule.camp;
import com.alibaba.fastjson.JSONObject;
import com.xiaomai.cases.polar.schedule.group.GroupScheduleTools;
import com.xiaomai.enums.ApiModule;
import com.xiaomai.enums.LoginAccount;
import com.xiaomai.enums.Terminal;
import com.xiaomai.utils.XMJSONPath;
import org.testng.Assert;
import org.testng.annotations.AfterClass;
import org.testng.annotations.AfterTest;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
......@@ -30,6 +29,7 @@ public class TestCreateCampRuleSchedule extends SelectTargetTrainingCampAndGetIn
String ruldId="";
@BeforeClass
@Override
public void beforeTest() {
setTestInfo(ApiModule.Polar_Schedule, "API_createCampRuleSchedule", LoginAccount.ADU_PROD, Terminal.B, "adu");
super.beforeTest();
......@@ -58,14 +58,14 @@ public class TestCreateCampRuleSchedule extends SelectTargetTrainingCampAndGetIn
ruldId=XMJSONPath.getJSONArrayByReadPath(dataApi.getApi_response(),"$.result").getJSONObject(0).getString("ruleId");
}
@AfterClass(description = "删除此case创建的训练营排课日程和训练营活动")
@AfterTest(description = "删除此case创建的训练营排课日程和训练营活动")
public void delData() {
//直接删除训练营会的,对应的排课日程会被自动删除,校验其他case中已有
if (null!=campId||!campId.isEmpty()) {
this.getTrainingTools().deleteTraining(campId);
if (null!=this.campId||!this.campId.isEmpty()) {
this.getTrainingTools().deleteTraining(this.campId);
}
}
}
}
\ No newline at end of file
package com.xiaomai.cases.polar.schedule.camp;
import com.alibaba.druid.util.StringUtils;
import com.alibaba.fastjson.JSONObject;
import com.xiaomai.enums.ApiModule;
import com.xiaomai.enums.LoginAccount;
......@@ -8,32 +9,31 @@ import com.xiaomai.enums.Terminal;
import com.xiaomai.utils.CommUtil;
import com.xiaomai.utils.XMJSONPath;
import org.testng.Assert;
import org.testng.annotations.AfterClass;
import org.testng.annotations.AfterTest;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
import javax.annotation.Resource;
import java.util.Arrays;
import java.util.List;
import java.util.Set;
/**
* 删除训练营课次(单个/当前及后续)
* @author adu
* data 2024/7/12 17:05
* data 2024/8/1 11:16
*/
public class TestDelCampScheduleItem extends SelectTargetTrainingCampAndGetInfo{
public class TestDelCurrentAndSubsequentCampSchedule extends SelectTargetTrainingCampAndGetInfo {
@Resource(name = "campScheduleTools")
CampScheduleTools campScheduleTools;
String campId = "";
String chiefCoachId = "";
String ruldId = "";
int loopNum=0;
int loopNum = 0;
String[] weekDaysArray = {"TUESDAY", "THURSDAY", "SATURDAY", "SUNDAY"};
List<String> weekdaysList = Arrays.asList(weekDaysArray);
@BeforeClass
@Override
public void beforeTest() {
setTestInfo(ApiModule.Polar_Schedule, "API_delCampScheduleItem", LoginAccount.ADU_PROD, Terminal.B, "adu");
super.beforeTest();
......@@ -54,73 +54,58 @@ public class TestDelCampScheduleItem extends SelectTargetTrainingCampAndGetInfo{
Assert.assertTrue(XMJSONPath.getJSONArrayByReadPath(dataApi.getApi_response(), "$.result").size() == 1, "排课创建成功后,日程中没查询到对应数据");
ruldId = XMJSONPath.getJSONArrayByReadPath(dataApi.getApi_response(), "$.result").getJSONObject(0).getString("ruleId");
}
@Test(description = "删除当前课次")
public void testDelCurrentCampScheduleItem(){
//获取下周日课次ID
Set<String> scheduleIds7 = campScheduleTools.getCampTableDate(13);
if(scheduleIds7.size() != 0 && scheduleIds7 != null){
//删除下周日所有的课次
scheduleIds7.stream().forEach(scheduleId -> {
JSONObject body = new JSONObject();
body.put("operatorId", xmAppApi.getLoginInfo().getAdminId());
body.put("studioId", xmAppApi.getLoginInfo().getStudioId());
body.put("brandId", xmAppApi.getLoginInfo().getBrandId());
body.put("applyRestRule", false);
body.put("scheduleId", scheduleId);
xmAppApi.doRequest(RequestType.JSON, params, body.toString(), headers).assetsSuccess(true);
});
//删除成功后check 下周日课表是否有数据
String startDate = CommUtil.oneKeyGetNextWeekXDay(13);//下周日00点时间
String endDate = CommUtil.oneKeyGetNextWeekEndXDay(7);//下周日23:59
campScheduleTools.getCampScheduleTable(startDate,endDate);
Assert.assertEquals(XMJSONPath.readPath(dataApi.getApi_response(), "$.result.totalCount"), "0");
}
}
@Test(description = "删除当前及后续课次", priority = 1)
@Test(description = "删除当前及后续课次")
public void testDelCurrentAndSubsequentCampSchedule() {
//获取下周六课次ID
Set<String> scheduleIds6 = campScheduleTools.getCampTableDate(12);
if(scheduleIds6.size() != 0 && scheduleIds6 != null){
//删除下周日所有的课次
scheduleIds6.stream().forEach(scheduleId -> {
String scheduleIds6 = campScheduleTools.getCampTableDate(12, ruldId);
if (!StringUtils.isEmpty(scheduleIds6)) {
//删除下周六即后续所有的课次
JSONObject body = new JSONObject();
body.put("operatorId", xmAppApi.getLoginInfo().getAdminId());
body.put("studioId", xmAppApi.getLoginInfo().getStudioId());
body.put("brandId", xmAppApi.getLoginInfo().getBrandId());
body.put("applyRestRule", true);
body.put("scheduleId", scheduleId);
xmAppApi.doRequest(RequestType.JSON, params, body.toString(), headers).assetsSuccess(true);
});
body.put("scheduleId", scheduleIds6);
xmAppApi.doRequest(RequestType.JSON, params, body.toString(), headers);
Assert.assertTrue(Boolean.valueOf(XMJSONPath.readPath(xmAppApi.getApi_response(), "$.success")) == true, "调用接口返回结果:" + XMJSONPath.readPath(xmAppApi.getApi_response(), "$.message"));
//删除成功后check从下周六到排课结束日期课表是否有数据
String startDate = CommUtil.oneKeyGetNextWeekXDay(12);//下周六00点时间
campScheduleTools.getCampScheduleTable(startDate, super.openEndDate);
if (Integer.valueOf(XMJSONPath.readPath(dataApi.getApi_response(), "$.result.totalCount")) > 0) {
Long goalCount = XMJSONPath.getJSONArrayByReadPath(dataApi.getApi_response(), "$.result.timetableGroups").toJavaList(JSONObject.class).stream()
.flatMap(e -> e.getJSONArray("timetableList").toJavaList(JSONObject.class).stream())//对过滤出的数据再次取目标数据重新组合成一个新的数据流
.filter(e -> null != e.getString("ruleId"))
.filter(e -> e.getString("ruleId").equals(ruldId)).count();
Assert.assertTrue(goalCount == 0, "删除当前课次后,再去课表中查看,后端仍然返回数据");
} else {
Assert.assertEquals(XMJSONPath.readPath(dataApi.getApi_response(), "$.result.totalCount"), "0");
}
//删除成功后,check对应训练营活动的已排课次数是否同步变更
int delLoopNum=campScheduleTools.queryExpectedLoopNum(startDate, super.openEndDate, weekdaysList);
int delLoopNum = campScheduleTools.queryExpectedLoopNum(startDate, super.openEndDate, weekdaysList);
//查看日程,获取原规则中展示的训练营已排课课次数,原来已排课课次数-删除的已排课课次数
campScheduleTools.getCampRuleScheduleDetail(ruldId);
Assert.assertTrue(XMJSONPath.getJSONObjectByReadPath(dataApi.getApi_response(),"$.result.campVO").getIntValue("scheduleClassHour")==(loopNum-delLoopNum));
Assert.assertTrue(XMJSONPath.getJSONObjectByReadPath(dataApi.getApi_response(), "$.result.campVO").getIntValue("scheduleClassHour") == (loopNum - delLoopNum));
}
}
@AfterClass(description = "删除此case创建的训练营排课日程")
@AfterTest(description = "删除此case创建的训练营排课日程")
public void delData() {
//先删除规则,再操作删除对应的训练营活动,此处顺序不能换,如果先删除训练营活动,对应的排课会自动删除,所以就不用删除排课日程了,这个场景其他case中会体现
if (null!=ruldId||!ruldId.isEmpty()) {
if (null != ruldId || !ruldId.isEmpty()) {
campScheduleTools.delCampRuleSchedule(ruldId);
//删除日程后check 日程列表数据是否还能搜索到,期望搜索结果数据为空
campScheduleTools.getCampRuleScheduleList(campId,super.courseId,"");
campScheduleTools.getCampRuleScheduleList(campId, super.courseId, "");
Assert.assertTrue(XMJSONPath.getJSONArrayByReadPath(dataApi.getApi_response(), "$.result").size() == 0, "日程被删除后,对应的排课日程列表还可以查到相关数据");
}
if (null!=campId||!campId.isEmpty()) {
if (null != campId || !campId.isEmpty()) {
this.getTrainingTools().deleteTraining(campId);
}
......
package com.xiaomai.cases.polar.schedule.camp;
import com.alibaba.druid.util.StringUtils;
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.CommUtil;
import com.xiaomai.utils.XMJSONPath;
import org.testng.Assert;
import org.testng.annotations.AfterTest;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
import javax.annotation.Resource;
import java.util.Arrays;
import java.util.List;
/**
* 删除训练营课次(单个/当前及后续)
*
* @author adu
* data 2024/7/12 17:05
*/
public class TestDelCurrentCampScheduleItem extends SelectTargetTrainingCampAndGetInfo {
@Resource(name = "campScheduleTools")
CampScheduleTools campScheduleTools;
String campId = "";
String chiefCoachId = "";
String ruldId = "";
int loopNum = 0;
String[] weekDaysArray = {"TUESDAY", "THURSDAY", "SATURDAY", "SUNDAY"};
List<String> weekdaysList = Arrays.asList(weekDaysArray);
@BeforeClass
@Override
public void beforeTest() {
setTestInfo(ApiModule.Polar_Schedule, "API_delCampScheduleItem", LoginAccount.ADU_PROD, Terminal.B, "adu");
super.beforeTest();
// 获取选择的训练营ID
campId = super.campId;
//1.2获取训练营活动的指定教练ID
chiefCoachId = super.chiefCoachId;
//获取目标时间段内 最大有效课时数
loopNum = campScheduleTools.queryExpectedLoopNum(CommUtil.oneKeyGetAddDay(3), super.openEndDate, weekdaysList);
//创建训练营排课:按次数 星期:2,4,6,7
campScheduleTools.oneKeyCreateCampRuleSchedule(campId, chiefCoachId, super.courseId,
super.traineeLowerLimit, super.traineeUpperLimit,
"1140", super.openEndDate, true,
String.valueOf(loopNum));
//查询排课日程:根据训练营和关联课程查询
campScheduleTools.getCampRuleScheduleList(campId, super.courseId, "");
Assert.assertTrue(XMJSONPath.getJSONArrayByReadPath(dataApi.getApi_response(), "$.result").size() == 1, "排课创建成功后,日程中没查询到对应数据");
ruldId = XMJSONPath.getJSONArrayByReadPath(dataApi.getApi_response(), "$.result").getJSONObject(0).getString("ruleId");
}
@Test(description = "删除当前课次")
public void testDelCurrentCampScheduleItem() {
//获取下周日课次ID(只删除匹配到ruldId的课次)
String scheduleId7 = campScheduleTools.getCampTableDate(13, ruldId);
if (!StringUtils.isEmpty(scheduleId7)) {
//删除本次规则创建的下周日所有的课次
JSONObject body = new JSONObject();
body.put("operatorId", xmAppApi.getLoginInfo().getAdminId());
body.put("studioId", xmAppApi.getLoginInfo().getStudioId());
body.put("brandId", xmAppApi.getLoginInfo().getBrandId());
body.put("applyRestRule", false);
body.put("scheduleId", scheduleId7);
xmAppApi.doRequest(RequestType.JSON, params, body.toString(), headers);
Assert.assertTrue(Boolean.valueOf(XMJSONPath.readPath(xmAppApi.getApi_response(),"$.success"))==true,"调用接口返回结果:"+XMJSONPath.readPath(xmAppApi.getApi_response(),"$.message"));
//删除成功后check 下周日课表是否包含删除的课次
String startDate = CommUtil.oneKeyGetNextWeekXDay(13);//下周日00点时间
String endDate = CommUtil.oneKeyGetNextWeekEndXDay(7);//下周日23:59
campScheduleTools.getCampScheduleTable(startDate, endDate);
Long goalCount = XMJSONPath.getJSONArrayByReadPath(dataApi.getApi_response(), "$.result.timetableGroups").toJavaList(JSONObject.class).stream()
.flatMap(e -> e.getJSONArray("timetableList").toJavaList(JSONObject.class).stream())//对过滤出的数据再次取目标数据重新组合成一个新的数据流
.filter(e -> null != e.getString("ruleId"))
.filter(e -> e.getString("ruleId").equals(ruldId))
.map(e -> e.getString("scheduleId")).count();//获取scheduleId 的数量
Assert.assertTrue(goalCount == 0, "删除当前课次后,再去课表中查看,后端仍然返回数据");
}
}
@AfterTest(description = "删除此case创建的训练营排课日程")
public void delData() {
//先删除规则,再操作删除对应的训练营活动,此处顺序不能换,如果先删除训练营活动,对应的排课会自动删除,所以就不用删除排课日程了,这个场景其他case中会体现
if (null != ruldId || !ruldId.isEmpty()) {
campScheduleTools.delCampRuleSchedule(ruldId);
//删除日程后check 日程列表数据是否还能搜索到,期望搜索结果数据为空
campScheduleTools.getCampRuleScheduleList(campId, super.courseId, "");
Assert.assertTrue(XMJSONPath.getJSONArrayByReadPath(dataApi.getApi_response(), "$.result").size() == 0, "日程被删除后,对应的排课日程列表还可以查到相关数据");
}
if (null != campId || !campId.isEmpty()) {
this.getTrainingTools().deleteTraining(campId);
}
}
}
\ No newline at end of file
package com.xiaomai.cases.polar.schedule.camp;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.xiaomai.cases.polar.finance.order.OrderTools;
import com.xiaomai.cases.polar.member.Tools;
import com.xiaomai.cases.polar.reserve.ReserveTools;
import com.xiaomai.cases.polar.schedule.group.GroupScheduleTools;
import com.xiaomai.cases.polar.training.TrainingTools;
import com.xiaomai.enums.ApiModule;
import com.xiaomai.enums.LoginAccount;
import com.xiaomai.enums.RequestType;
......@@ -9,7 +14,7 @@ import com.xiaomai.enums.Terminal;
import com.xiaomai.utils.CommUtil;
import com.xiaomai.utils.XMJSONPath;
import org.testng.Assert;
import org.testng.annotations.AfterClass;
import org.testng.annotations.AfterTest;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
......@@ -30,18 +35,31 @@ public class TestEditCampRuleSchedule extends SelectTargetTrainingCampAndGetInfo
GroupScheduleTools groupScheduleTools;
@Resource(name = "campScheduleTools")
CampScheduleTools campScheduleTools;
@Resource(name = "tools")
Tools tools;
@Resource(name = "reserveTools")
ReserveTools reserveTools;
@Resource(name = "trainingTools")
TrainingTools trainingTools;
@Resource(name = "orderTools")
OrderTools orderTools;
String campId = "";
String chiefCoachId = "";
String ruldId = "";
String memberId = "";
String orderId = "";
String phone="";
@BeforeClass
@Override
public void beforeTest() {
setTestInfo(ApiModule.Polar_Schedule, "API_editCampRuleSchedule", LoginAccount.ADU_PROD, Terminal.B, "adu");
super.beforeTest();
}
@Test(description = "编辑训练营排课规则")
public void testEditCampRuleSchedule() {
public void testEditCampRuleSchedule() throws InterruptedException {
//获取选择的训练营ID
campId = super.campId;
//获取训练营活动的指定教练ID
......@@ -62,6 +80,25 @@ public class TestEditCampRuleSchedule extends SelectTargetTrainingCampAndGetInfo
ruldId = XMJSONPath.getJSONArrayByReadPath(dataApi.getApi_response(), "$.result").getJSONObject(0).getString("ruleId");
int scheduleClassHourBefore = XMJSONPath.getJSONArrayByReadPath(dataApi.getApi_response(), "$.result").getJSONObject(0).getJSONObject("campVO").getIntValue("scheduleClassHour");
//创建排课后,学员报名关联的训练营活动
//搜索目标会员
phone= "15658063769";
memberId = trainingTools.searchTargerMember(phone);
if (memberId.isEmpty()) {
memberId = tools.create("晨晨爸爸", phone).getString("result");
}
//给会员报名
trainingTools.doSignCampOrder(memberId, this.price, this.campId,"");
orderId = XMJSONPath.readPath(dataApi.getApi_response(), "$.result");
Thread.sleep(2000);
//check 预约记录(训练营预约记录,根据训练营活动筛选)
JSONArray reserverList= reserveTools.getPageByStudio("","","","",null,
null,"","TRAINING_CAMP",campId);
//check 学员报名后生成的预约记录数量
Assert.assertTrue(reserverList.size()==scheduleClassHourBefore,"排课后再报名训练营活动,生成课次的预约记录数量对不上");
//下面要操作缩短结束日期,check
String[] weekDaysArray = {"TUESDAY", "THURSDAY", "SATURDAY", "SUNDAY"};
List<String> weekdaysList = Arrays.asList(weekDaysArray);
......@@ -87,26 +124,60 @@ public class TestEditCampRuleSchedule extends SelectTargetTrainingCampAndGetInfo
body.put("endDate", CommUtil.getNDayEndTimeTamp(22)); //结束日期缩短了20天,
body.put("force", true);
body.put("retainBooking", true);
xmAppApi.doRequest(RequestType.JSON, params, body.toString(), headers).assetsSuccess(true);
xmAppApi.doRequest(RequestType.JSON, params, body.toString(), headers);
Assert.assertTrue(Boolean.valueOf(XMJSONPath.readPath(xmAppApi.getApi_response(),"$.success"))==true,"调用接口返回结果:"+XMJSONPath.readPath(xmAppApi.getApi_response(),"$.message"));
//查询训练营日程详情,check修改项是否被同步修改
campScheduleTools.getCampRuleScheduleDetail(ruldId);
Assert.assertEquals(XMJSONPath.readPath(dataApi.getApi_response(), "$.result.chiefCoachId"), chiefCoachId);
Assert.assertEquals(XMJSONPath.readPath(dataApi.getApi_response(), "$.result.endDate").substring(0, 9), CommUtil.getNDayEndTimeTamp(22).substring(0, 9));
//Assert.assertEquals(XMJSONPath.readPath(dataApi.getApi_response(), "$.result.endDate").substring(0, 9), CommUtil.getNDayEndTimeTamp(22).substring(0, 9));
Assert.assertTrue(XMJSONPath.getJSONArrayByReadPath(dataApi.getApi_response(), "$.result.venueAreaIds").containsAll(venueAreaIds), "场地有空改为有数据后,查看日程详情发现数据没变更");
Assert.assertTrue(XMJSONPath.getJSONArrayByReadPath(dataApi.getApi_response(), "$.result.assistCoachIds").containsAll(assistTrainer), "助教有空改为有数据后,查看日程详情发现数据没变更");
Assert.assertEquals(XMJSONPath.getJSONObjectByReadPath(dataApi.getApi_response(), "$.result.campVO").getIntValue("totalClassHour"), super.totalClassHour, "总课时数有问题");
int scheduleClassHourAfter =XMJSONPath.getJSONObjectByReadPath(dataApi.getApi_response(), "$.result.campVO").getIntValue("scheduleClassHour");
int scheduleClassHourAfter = XMJSONPath.getJSONObjectByReadPath(dataApi.getApi_response(), "$.result.campVO").getIntValue("scheduleClassHour");
//校验已排课次数是否同步变更:原排课次数-缩短日期那段时间的次数
Assert.assertEquals(scheduleClassHourAfter, (scheduleClassHourBefore - loopNum));
//check 编辑日程后(缩短日期)预约记录数量减少check
JSONArray reserverListAfter= reserveTools.getPageByStudio("","","","",null,
null,"","TRAINING_CAMP",campId);
Assert.assertTrue(reserverListAfter.size()==scheduleClassHourAfter,"排课后再报名训练营活动,生成课次的预约记录数量对不上");
//筛选出符合条件的数据有多少条
// Long count = reserverListAfter.toJavaList(JSONObject.class).stream().filter(e -> e.getString("tenantMemberCardId").equals(campId)).count();
//check 编辑日程后,对应的预约记录是否同步变更
reserverListAfter.toJavaList(JSONObject.class).stream().forEach(object ->
Assert.assertTrue(object.getJSONArray("assistCoachIds").containsAll(assistTrainer)&&
object.getJSONArray("areaIds").containsAll(venueAreaIds),"编辑日程后,预约记录没同步变更")
);
//作废学员训练营报名订单
orderTools.discard(orderId,"重复录入","自动化测试作废训练营订单");
//作废订单后,学员之前报名训练营生成的课次预约记录要被删除check
JSONArray reserverRecords= reserveTools.getPageByStudio("","","","",null,
null,"","TRAINING_CAMP",campId);
Assert.assertTrue(reserverRecords.size()==0,"作废学员订单后,训练营课次中对应的预约记录没有被删除哈");
}
@AfterClass(description = "删除此case创建的训练营排课日程")
@AfterTest(description = "删除此case创建的训练营排课日程")
public void delData() {
if (null!=campId||!campId.isEmpty()) {
if (null != ruldId || !ruldId.isEmpty()) {
campScheduleTools.delCampRuleSchedule(ruldId);
}
if (null != orderId || !orderId.isEmpty()) {
trainingTools.fetchUserTrainingCardList(memberId);
if (!XMJSONPath.getJSONArrayByReadPath(dataApi.getApi_response(), "$.result").getJSONObject(0).getString("state").equals("DISCARD")) {
orderTools.discard(orderId, "重复录入", "自动化测试作废训练营订单");
}
}
if (null != campId || !campId.isEmpty()) {
this.getTrainingTools().deleteTraining(campId);
}
}
}
......
package com.xiaomai.cases.polar.schedule.camp;
import com.alibaba.druid.util.StringUtils;
import com.alibaba.fastjson.JSONObject;
import com.xiaomai.cases.polar.schedule.group.GroupScheduleTools;
import com.xiaomai.enums.ApiModule;
import com.xiaomai.enums.LoginAccount;
import com.xiaomai.enums.RequestType;
import com.xiaomai.enums.Terminal;
import com.xiaomai.utils.CommUtil;
import com.xiaomai.utils.XMJSONPath;
import org.testng.Assert;
import org.testng.annotations.AfterTest;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
/**
* @author adu
* data 2024/8/1 11:19
*/
public class TestEditCurrentCampSchedule extends SelectTargetTrainingCampAndGetInfo {
public static Date now = new Date();
String scheduleIdsN;
@Resource(name = "groupScheduleTools")
GroupScheduleTools groupScheduleTools;
@Resource(name = "campScheduleTools")
CampScheduleTools campScheduleTools;
String campId = "";
String chiefCoachId = "";
String ruldId = "";
//获取下周日某个时间点的开始时间戳
String startStamp = CommUtil.getWholeHourTimeStamp(13, "13:30");
public int scheduleClassHourEditBefore = 0;
@BeforeClass
@Override
public void beforeTest() {
setTestInfo(ApiModule.Polar_Schedule, "API_editCampSchedule", LoginAccount.ADU_PROD, Terminal.B, "adu");
super.beforeTest();
// 获取选择的训练营ID
campId = super.campId;
//1.2获取训练营活动的指定教练ID
chiefCoachId = super.chiefCoachId;
//获取目标时间段内 最大有效课时数
String[] weekDaysArray = {"TUESDAY", "THURSDAY", "SATURDAY", "SUNDAY"};
List<String> weekdaysList = Arrays.asList(weekDaysArray);
int loopNum = campScheduleTools.queryExpectedLoopNum(CommUtil.oneKeyGetAddDay(3), super.openEndDate, weekdaysList);
//创建训练营排课:按次数 星期:2,4,6,7
campScheduleTools.oneKeyCreateCampRuleSchedule(campId, chiefCoachId, super.courseId,
super.traineeLowerLimit, super.traineeUpperLimit,
"1140", super.openEndDate, true,
String.valueOf(loopNum));
//查询排课日程:根据训练营和关联课程查询
campScheduleTools.getCampRuleScheduleList(super.campId, super.courseId, "");
Assert.assertTrue(XMJSONPath.getJSONArrayByReadPath(dataApi.getApi_response(), "$.result").size() == 1, "排课创建成功后,日程中没查询到对应数据");
ruldId = XMJSONPath.getJSONArrayByReadPath(dataApi.getApi_response(), "$.result").getJSONObject(0).getString("ruleId");
//获取训练营活动已排课课次数
scheduleClassHourEditBefore = XMJSONPath.getJSONArrayByReadPath(dataApi.getApi_response(), "$.result").getJSONObject(0).getJSONObject("campVO").getIntValue("scheduleClassHour");
}
@Test(description = "编辑当前课次")
public void testEditCurrentCampSchedule() {
//获取本次创建规则中下周日课次ID
scheduleIdsN = campScheduleTools.getCampTableDate(13, ruldId);
if (!StringUtils.isEmpty(scheduleIdsN)) {
JSONObject body = new JSONObject();
body.put("operatorId", xmAppApi.getLoginInfo().getAdminId());
body.put("studioId", xmAppApi.getLoginInfo().getStudioId());
body.put("brandId", xmAppApi.getLoginInfo().getBrandId());
body.put("applyRestRule", false);
body.put("scheduleId", scheduleIdsN);
body.put("startTime", startStamp);//修改上课时间
body.put("chiefCoachId", chiefCoachId);
body.put("minMemberNum", super.traineeLowerLimit);
body.put("maxMemberNum", super.traineeUpperLimit);
body.put("venueAreaIds", new ArrayList<>());
body.put("assistCoachIds", super.assistCoachIds);//有空改为有数据2个教练
body.put("spanMinutes", 50);
body.put("force", true);//有冲突时忽略冲突
body.put("retainBooking", true);//保留学员预约
xmAppApi.doRequest(RequestType.JSON, params, body.toString(), headers);
Assert.assertTrue(Boolean.valueOf(XMJSONPath.readPath(xmAppApi.getApi_response(), "$.success")) == true, "调用接口返回结果:" + XMJSONPath.readPath(xmAppApi.getApi_response(), "$.message"));
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
//编辑成功后check对应课次详情修改内容是否同步成功
campScheduleTools.getCampScheduleItemDetail(scheduleIdsN);
String detailResult = dataApi.getApi_response();
Assert.assertEquals(XMJSONPath.readPath(detailResult, "$.result.chiefCoachId"), chiefCoachId);
Assert.assertEquals(XMJSONPath.readPath(detailResult, "$.result.startTime"), startStamp);
Assert.assertTrue(XMJSONPath.getJSONArrayByReadPath(detailResult, "$.result.assistCoachIds").size() == 2, "助教修改后添加2个教练没生效");
Assert.assertTrue(XMJSONPath.getJSONArrayByReadPath(detailResult, "$.result.venueAreaIds").size() == 0, "课次创建时场地为空,查看课次详情不为空");
}
}
@AfterTest(description = "删除此case创建的训练营排课日程")
public void delData() {
if (null != campId || !campId.isEmpty()) {
this.getTrainingTools().deleteTraining(campId);
//训练营被删除后,对应的排课日程会被自动删除check
campScheduleTools.getCampRuleScheduleList(campId, "", "");
Assert.assertTrue(XMJSONPath.getJSONArrayByReadPath(dataApi.getApi_response(), "$.result").size() == 0, "训练营被删除后,对应的排课日程会被自动删除,目前还有相关数据请检查");
}
}
}
\ No newline at end of file
package com.xiaomai.cases.polar.schedule.camp;
import com.alibaba.druid.util.StringUtils;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.xiaomai.cases.polar.finance.order.OrderTools;
import com.xiaomai.cases.polar.member.Tools;
import com.xiaomai.cases.polar.training.TrainingTools;
import com.xiaomai.enums.ApiModule;
import com.xiaomai.enums.LoginAccount;
import com.xiaomai.enums.RequestType;
......@@ -9,7 +13,7 @@ import com.xiaomai.enums.Terminal;
import com.xiaomai.utils.CommUtil;
import com.xiaomai.utils.XMJSONPath;
import org.testng.Assert;
import org.testng.annotations.AfterClass;
import org.testng.annotations.AfterTest;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
......@@ -26,11 +30,20 @@ import java.util.Set;
public class TestGetCampScheduleItemDetail extends SelectTargetTrainingCampAndGetInfo {
@Resource(name = "campScheduleTools")
CampScheduleTools campScheduleTools;
@Resource(name = "trainingTools")
TrainingTools trainingTools;
@Resource(name = "orderTools")
OrderTools orderTools;
@Resource(name = "tools")
Tools tools;
String campId = "";
String chiefCoachId = "";
String ruldId = "";
String memberId = "";
String orderId = "";
@BeforeClass
@Override
public void beforeTest() {
setTestInfo(ApiModule.Polar_Schedule, "API_getCampScheduleItemDetail", LoginAccount.ADU_PROD, Terminal.B, "adu");
super.beforeTest();
......@@ -42,6 +55,22 @@ public class TestGetCampScheduleItemDetail extends SelectTargetTrainingCampAndGe
campId = super.campId;
//获取训练营活动的指定教练ID
chiefCoachId = super.chiefCoachId;
//先报名训练营活动,再创建课次,创建课次后check 课次中有学员,自动生成预约记录
//搜索目标会员
String phone = "15558121569";
memberId = trainingTools.searchTargerMember(phone);
if (memberId.isEmpty()) {
memberId = tools.create("阿杜", phone).getString("result");
}
//给会员报名
trainingTools.doSignCampOrder(memberId, this.price, this.campId,"");
orderId = XMJSONPath.readPath(dataApi.getApi_response(), "$.result");
trainingTools.getTrainingApplyRecordsList(this.campId, phone);
String memberCardId = XMJSONPath.getJSONArrayByReadPath(dataApi.getApi_response(), "$.result").getJSONObject(0).getString("memberCardId");
//创建训练营排课:按次数 星期:2,4,6,7
campScheduleTools.oneKeyCreateCampRuleSchedule(campId, chiefCoachId, super.courseId,
super.traineeLowerLimit, super.traineeUpperLimit,
......@@ -53,8 +82,8 @@ public class TestGetCampScheduleItemDetail extends SelectTargetTrainingCampAndGe
ruldId = XMJSONPath.getJSONArrayByReadPath(dataApi.getApi_response(), "$.result").getJSONObject(0).getString("ruleId");
//查看下周5的日课表,期望值无数据
Set<String> scheduleIds5 = campScheduleTools.getCampTableDate(11);
Assert.assertTrue(scheduleIds5.size() == 0 || scheduleIds5 == null, "周五没排课,但是检查出有课次");
String scheduleIds5 = campScheduleTools.getCampTableDate(11,ruldId);
Assert.assertTrue(StringUtils.isEmpty(scheduleIds5), "周五没排课,但是检查出有课次");
//查看下周日的日课表,有数据,并查看课次详情
String startDate = CommUtil.oneKeyGetNextWeekXDay(13);//下周日00点时间
......@@ -76,9 +105,13 @@ public class TestGetCampScheduleItemDetail extends SelectTargetTrainingCampAndGe
body.put("studioId", xmAppApi.getLoginInfo().getStudioId());
body.put("brandId", xmAppApi.getLoginInfo().getBrandId());
body.put("id", scheduleId);
xmAppApi.doRequest(RequestType.JSON, params, body.toString(), headers).assetsSuccess(true);
xmAppApi.doRequest(RequestType.JSON, params, body.toString(), headers);
Assert.assertTrue(Boolean.valueOf(XMJSONPath.readPath(xmAppApi.getApi_response(),"$.success"))==true,"调用接口返回结果:"+XMJSONPath.readPath(xmAppApi.getApi_response(),"$.message"));
//断言check
//课次中有1个学员check
Assert.assertTrue(XMJSONPath.getJSONArrayByReadPath(xmAppApi.getApi_response(), "$.result.memberReserveList").size() == 1, "排课前有学员报名了关联的训练营活动,所以课次中有1个预约学员,目前没发现课次中有学员");
//主教练check
Assert.assertEquals(XMJSONPath.readPath(xmAppApi.getApi_response(), "$.result.chiefCoachId"), chiefCoachId, "教练和创建时设置的不一致");
//助教check
......@@ -86,10 +119,26 @@ public class TestGetCampScheduleItemDetail extends SelectTargetTrainingCampAndGe
//场地check
Assert.assertTrue(XMJSONPath.getJSONArrayByReadPath(xmAppApi.getApi_response(), "$.result.venueAreaIds").isEmpty(), "创建排课时场地设置为空,但是课次详情中显示不为空哦");
//会员退款订单check
trainingTools.refundCampOrder(memberId, this.price, memberCardId, this.totalClassHour);
//退单后再次check课次详情
campScheduleTools.getCampScheduleItemDetail(scheduleId);
JSONArray memberReserveList = XMJSONPath.getJSONArrayByReadPath(dataApi.getApi_response(), "$.result.memberReserveList");
Assert.assertTrue(memberReserveList == null || memberReserveList.size() == 0, "学员退单后,没有从课次中移除");
}
@AfterClass(description = "删除此case创建的训练营排课日程")
@AfterTest(description = "删除此case创建的训练营排课日程")
public void delData() {
if (null != orderId || !orderId.isEmpty()) {
trainingTools.fetchUserTrainingCardList(memberId);
if (!XMJSONPath.getJSONArrayByReadPath(dataApi.getApi_response(), "$.result").getJSONObject(0).getString("state").equals("REFUNDED")) {
orderTools.discard(orderId, "重复录入", "自动化测试作废训练营订单");
}
}
if (null != campId || !campId.isEmpty()) {
this.getTrainingTools().deleteTraining(campId);
}
......
......@@ -9,10 +9,7 @@ import com.xiaomai.enums.Terminal;
import com.xiaomai.utils.CommUtil;
import com.xiaomai.utils.XMJSONPath;
import org.testng.Assert;
import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
import org.testng.annotations.*;
import javax.annotation.Resource;
import java.util.ArrayList;
......@@ -107,12 +104,14 @@ public class TestGetCampScheduleTable extends SelectTargetTrainingCampAndGetInfo
body.put("coachId", coachId);
body.put("statusSet", statusSet);
body.put("venueAreaId", venueAreaId);
xmAppApi.doRequest(RequestType.JSON, params, body.toString(), headers).assetsSuccess(true);
xmAppApi.doRequest(RequestType.JSON, params, body.toString(), headers);
Assert.assertTrue(Boolean.valueOf(XMJSONPath.readPath(xmAppApi.getApi_response(),"$.success"))==true,"调用接口返回结果:"+XMJSONPath.readPath(xmAppApi.getApi_response(),"$.message"));
int resultCount = Integer.parseInt(XMJSONPath.readPath(xmAppApi.getApi_response(), "$.result.totalCount"));
Assert.assertTrue(resultCount >= total, "查询到的课表数据和预期不一致");
}
@AfterClass(description = "删除此case创建的训练营排课日程,只操作删除对应的训练营活动即可")
@AfterTest(description = "删除此case创建的训练营排课日程,只操作删除对应的训练营活动即可")
public void delData() {
if (null!=campId||!campId.isEmpty()) {
this.getTrainingTools().deleteTraining(campId);
......
......@@ -12,6 +12,7 @@ import com.xiaomai.utils.XMBaseTest;
import com.xiaomai.utils.XMJSONPath;
import org.springframework.stereotype.Component;
import org.springframework.util.CollectionUtils;
import org.testng.Assert;
import javax.annotation.Resource;
import java.util.ArrayList;
......@@ -74,7 +75,9 @@ public class GroupScheduleTools extends XMBaseTest {
body.put("endDate", CommUtil.getNDayEndTimeTamp(60)); //排课结束日期,这里就设置自动延顺60天,结束日期会覆盖你传的endDate
}
dataApi.doRequest(RequestType.JSON, dataparams, body.toString(), dataheadrs).assetsSuccess(true);
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"));
}
......@@ -98,7 +101,8 @@ public class GroupScheduleTools extends XMBaseTest {
if (coachId != null && coachId.length() != 0) {
body.put("coachId", coachId);
}
dataApi.doRequest(RequestType.JSON, dataparams, body.toString(), dataheadrs).assetsSuccess(true);
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.getJSONArrayByReadPath(dataApi.getApi_response(), "$.result");
}
......@@ -144,7 +148,9 @@ public class GroupScheduleTools extends XMBaseTest {
body.put("brandId", dataApi.getLoginInfo().getBrandId());
body.put("force", force);
body.put("ruleId", ruleId);
dataApi.doRequest(RequestType.JSON, dataparams, body.toString(), dataheadrs).assetsSuccess(true);
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"));
}
......@@ -228,7 +234,9 @@ public class GroupScheduleTools extends XMBaseTest {
body.put("studioId", dataApi.getLoginInfo().getStudioId());
body.put("brandId", dataApi.getLoginInfo().getBrandId());
body.put("id", ruldId);
dataApi.doRequest(RequestType.JSON, dataparams, body.toString(), dataheadrs).assetsSuccess(true);
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"));
}
......@@ -248,7 +256,9 @@ public class GroupScheduleTools extends XMBaseTest {
body.put("brandId", dataApi.getLoginInfo().getBrandId());
body.put("id", scheduleId);
dataApi.doRequest(RequestType.JSON, dataparams, body.toString(), dataheadrs).assetsSuccess(true);
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().getJSONObject("result");
}
......@@ -260,12 +270,15 @@ public class GroupScheduleTools extends XMBaseTest {
* @date: 2024/6/23 17:46
* @return: com.alibaba.fastjson.JSONArray
**/
public JSONArray getGroupScheduleTable(Long startDate, Long endDate) {
public JSONArray getGroupScheduleTable(Long startDate, Long endDate,String courseId) {
setUP("API_getGroupScheduleTable");
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);
......@@ -306,7 +319,9 @@ public class GroupScheduleTools extends XMBaseTest {
body.put("assistCoachIds", new ArrayList());
body.put("spanMinutes", 60);
body.put("force", false);
dataApi.doRequest(RequestType.JSON, dataparams, body.toString(), dataheadrs).assetsSuccess(true);
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"));
}
......@@ -328,7 +343,9 @@ public class GroupScheduleTools extends XMBaseTest {
body.put("scheduleId", scheduleId);
body.put("applyRestRule", false);
dataApi.doRequest(RequestType.JSON, dataparams, body.toString(), dataheadrs).assetsSuccess(true);
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"));
}
/**
......@@ -338,7 +355,7 @@ public class GroupScheduleTools extends XMBaseTest {
*/
public Set<String> getTableDate(int n) {
//查看团课课表
getGroupScheduleTable(Long.valueOf(CommUtil.oneKeyGetNextWeekStartDay()), Long.valueOf(CommUtil.oneKeyGetNextWeekEndDay()));
getGroupScheduleTable(Long.valueOf(CommUtil.oneKeyGetNextWeekStartDay()), Long.valueOf(CommUtil.oneKeyGetNextWeekEndDay()),"");
//获取下周周N及后续的课次
String date = CommUtil.oneKeyGetNextWeekXDay(n);//下周N 日期时间戳
int count = XMJSONPath.getJSONArrayByReadPath(dataApi.getApi_response(), "$.result.timetableGroups").size();
......@@ -358,6 +375,36 @@ public class GroupScheduleTools extends XMBaseTest {
}
/**
* 选择匹配到对应规则ID的课次
* @param n
* @param ruldId
* @return
*/
public String getTableDate(int n,String ruldId) {
//查看团课课表
getGroupScheduleTable(Long.valueOf(CommUtil.oneKeyGetNextWeekStartDay()), Long.valueOf(CommUtil.oneKeyGetNextWeekEndDay()),"");
//获取下周周N及后续的课次
String date = CommUtil.oneKeyGetNextWeekXDay(n);//下周N 日期时间戳
int count = XMJSONPath.getJSONArrayByReadPath(dataApi.getApi_response(), "$.result.timetableGroups").size();
if (count > 0) {
JSONArray array = XMJSONPath.getJSONArrayByReadPath(dataApi.getApi_response(), "$.result.timetableGroups");
String scheduleIds = array.toJavaList(JSONObject.class).stream()
.filter(e -> e.getString("date").equals(date))//过滤出日期等于下周N的数据
.flatMap(e -> e.getJSONArray("timetableList").toJavaList(JSONObject.class).stream())//对过滤出的数据再次取目标数据重新组合成一个新的数据流
.filter(e -> null != e.getString("ruleId"))
.filter(e ->e.getString("ruleId").equals(ruldId))
.map(e -> e.getString("scheduleId"))//获取scheduleId
.findFirst().orElse("");
return scheduleIds;
}
return "";
}
}
package com.xiaomai.cases.polar.schedule.group;
import com.alibaba.druid.util.StringUtils;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.xiaomai.basetest.BaseTestImpl;
import com.xiaomai.cases.polar.course.CourseTools;
import com.xiaomai.cases.polar.setting.courseCategory.CourseCategoryTools;
......@@ -21,6 +23,7 @@ import java.util.List;
/**
* 创建排课
*
* @author adu
* data 2024/6/12 15:54
*/
......@@ -47,16 +50,15 @@ public class TestCreateGroupRuleSchedule extends BaseTestImpl {
String courseName = "阿杜自动化团课课程";
@BeforeClass
@Override
public void beforeTest() {
setTestInfo(ApiModule.Polar_Schedule, "API_createGroupRuleSchedule", LoginAccount.ADU_PROD, Terminal.B, "adu");
super.beforeTest();
}
@Test(description = "测试新建团课排课")
public void testCreateGroupRuleSchedule() {
//查询今日待上课的数据
public void testCreateGroupRuleSchedule() throws InterruptedException {
HomeTools homeTools = new HomeTools();
int num = homeTools.queryTodaySchedule().getJSONArray("result").size();
//获取存量课程ID
String courseId = groupScheduleTools.getStockGroupCourseId(courseName);
......@@ -78,27 +80,49 @@ public class TestCreateGroupRuleSchedule extends BaseTestImpl {
List<String> assistCoachIdS = groupScheduleTools.getStudioAdminId(assistCoachIds);
//1-创建排课日程
groupScheduleTools.createGroupRuleSchedule(courseId, chiefCoachIdS, todayStartTimeTamp, endDateTimeTamp, venueAreaIds, assistCoachIdS, false, 1,480);
groupScheduleTools.createGroupRuleSchedule(courseId, chiefCoachIdS, todayStartTimeTamp, endDateTimeTamp, venueAreaIds, assistCoachIdS, true, 1, 480);
//2-查询排课日程
JSONArray result = groupScheduleTools.getGroupRuleScheduleList(courseId, chiefCoachIdS);
String ruldId = XMJSONPath.readPath(result.getJSONObject(0), "$.ruleId");
// 日程列表中新增一条刚创建的规则,匹配到对应的ruldId
Long goalRuld = result.toJavaList(JSONObject.class).stream().filter(e -> e.getString("ruleId").equals(ruldId)).count();
Assert.assertTrue(goalRuld == 1);
Assert.assertTrue(result.size() >= 1);
//创建今日待上课的排课后再查询今日待上课的数据
int num1 = homeTools.queryTodaySchedule().getJSONArray("result").size();
Assert.assertEquals(num1, num+1);
//查看今天的课表,获取刚创建的日程中对应的课次ID
groupScheduleTools.getGroupScheduleTable(Long.valueOf(todayStartTimeTamp),Long.valueOf(todayEndDateTimeTamp),courseId);
JSONArray array = XMJSONPath.getJSONArrayByReadPath(dataApi.getApi_response(), "$.result.timetableGroups");
String scheduleId = array.toJavaList(JSONObject.class).stream()
.flatMap(e -> e.getJSONArray("timetableList").toJavaList(JSONObject.class).stream())
.filter(e -> null != e.getString("ruleId"))
.filter(e ->e.getString("ruleId").equals(ruldId))
.map(e -> e.getString("scheduleId"))//获取scheduleId
.findFirst().orElse(null);
//统计查询到的目标日程数量
int size = result.size();
String ruldId = XMJSONPath.readPath(result.getJSONObject(0), "$.ruleId");
groupScheduleTools.delGroupRuleSchedule(ruldId,true);
JSONArray result2 = groupScheduleTools.getGroupRuleScheduleList(courseId, chiefCoachIdS);
// Assert.assertTrue(scheduleId!=null||!scheduleId.isEmpty(),"刚创建的规则中,没查询到今天对应的课次");//你这个判断,如果scheduleID != null 不成立,就会走到 !scheduleId.isEmpty(),此时shcdueId是null,使用.isEmpry就空指针了
Assert.assertTrue(!StringUtils.isEmpty(scheduleId),"刚创建的规则中,没查询到今天对应的课次");
//删除成功后,统计查询到的目标日程数量是否-1
Assert.assertEquals(result2.size(), size - 1);
}
//创建今日待上课的排课后查询今日待上课的数据
long num= homeTools.queryTodaySchedule().getJSONArray("result").toJavaList(JSONObject.class).stream()
.filter(e ->e.getString("scheduleId").equals(scheduleId)).count();
Assert.assertEquals(num, 1);
groupScheduleTools.delGroupRuleSchedule(ruldId, true);
Thread.sleep(1000);
JSONArray result2 = groupScheduleTools.getGroupRuleScheduleList(courseId, chiefCoachIdS);
//获取日程中规则ID=ruleId的日程数量
Long delRuldCount = result2.toJavaList(JSONObject.class).stream().filter(e -> e.getString("ruleId").equals(ruldId)).count();
//删除成功后,统计查询到的目标日程数量为0
Assert.assertTrue(delRuldCount == 0);
//删除今日待上课的排课后查询今日待上课的数据
long num1= homeTools.queryTodaySchedule().getJSONArray("result").toJavaList(JSONObject.class).stream()
.filter(e ->e.getString("scheduleId").equals(scheduleId)).count();
Assert.assertEquals(num1, 0);
}
}
......
package com.xiaomai.cases.polar.schedule.group;
import com.alibaba.druid.util.StringUtils;
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.CommUtil;
import com.xiaomai.utils.XMJSONPath;
import org.testng.Assert;
import org.testng.annotations.AfterTest;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
/**
* 删除课次(删除当前课次/删除当前及后续课次)
*
* @author adu
* data 2024/6/30 17:02
*/
public class TestDelCurrentAndSubsequentGroupSchedule extends UniversalDataScheduling {
@BeforeClass
@Override
public void beforeTest() {
setTestInfo(ApiModule.Polar_Schedule, "API_delGroupScheduleItem", LoginAccount.ADU_PROD, Terminal.B, "adu");
super.beforeTest();
}
@Test(description = "删除当前及后续课次")
public void testDelCurrentAndSubsequentGroupSchedule() {
//获取下周三的课次ID(匹配到对应的规则ID)
String scheduleIdsG = groupScheduleTools.getTableDate(9, groupRuldId);
//如果课次ID有值则继续走删除的case
if (!StringUtils.isEmpty(scheduleIdsG)) {
JSONObject body = new JSONObject();
body.put("operatorId", xmAppApi.getLoginInfo().getAdminId());
body.put("studioId", xmAppApi.getLoginInfo().getStudioId());
body.put("brandId", xmAppApi.getLoginInfo().getBrandId());
body.put("applyRestRule", true);
body.put("scheduleId", scheduleIdsG);
xmAppApi.doRequest(RequestType.JSON, params, body.toString(), headers);
Assert.assertTrue(Boolean.valueOf(XMJSONPath.readPath(xmAppApi.getApi_response(), "$.success")) == true, "调用接口返回结果:" + XMJSONPath.readPath(xmAppApi.getApi_response(), "$.message"));
//删除成功后check 从下周三到下周日课表是否有数据
groupScheduleTools.getGroupScheduleTable(Long.valueOf(CommUtil.oneKeyGetNextWeekXDay(9)), Long.valueOf(CommUtil.oneKeyGetNextWeekEndDay()), courseId);
Long countB = XMJSONPath.getJSONArrayByReadPath(dataApi.getApi_response(), "$.result.timetableGroups").toJavaList(JSONObject.class).stream()
.flatMap(e -> e.getJSONArray("timetableList").toJavaList(JSONObject.class).stream())
.filter(e -> null != e.getString("ruleId"))
.filter(e -> e.getString("ruleId").equals(groupRuldId)).count();
Assert.assertTrue(countB == 0, "删除当前及后续课次后,课表中后端返回数据有问题,目前还能发现数据");
}
}
@AfterTest(description = "删除此case创建的日程")
public void delData() {
if (!StringUtils.isEmpty(groupRuldId)) {//获取到的日程ID不为空时,则逐个删除相关日程
//删除对应日程
groupScheduleTools.delGroupRuleSchedule(groupRuldId, true);
}
}
}
\ No newline at end of file
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