Commit f05da95d by DuJunLi

解决线上报错问题,增加定向发放优惠券case

parent d479af9b
...@@ -88,8 +88,6 @@ public class CouponTools extends BaseTestImpl { ...@@ -88,8 +88,6 @@ public class CouponTools extends BaseTestImpl {
body.put("validPeriodType", validPeriodType); body.put("validPeriodType", validPeriodType);
if (validPeriodType.equals("RELATIVE")) {//有效期:领取后生效 if (validPeriodType.equals("RELATIVE")) {//有效期:领取后生效
body.put("relativeDay", 1); //使用有效期:领取后 1天内 body.put("relativeDay", 1); //使用有效期:领取后 1天内
/* body.put("validPeriodStartTime", "");
body.put("validPeriodEndTime","");*/
} }
if (validPeriodType.equals("ABSOLUTE")) {//有效期:固定时间 if (validPeriodType.equals("ABSOLUTE")) {//有效期:固定时间
body.put("validPeriodStartTime", CommUtil.oneKeyGetAddDay(1));//有效期的开始时间:明天的0点 body.put("validPeriodStartTime", CommUtil.oneKeyGetAddDay(1));//有效期的开始时间:明天的0点
...@@ -103,6 +101,89 @@ public class CouponTools extends BaseTestImpl { ...@@ -103,6 +101,89 @@ public class CouponTools extends BaseTestImpl {
return XMJSONPath.readPath(dataApi.getApi_response(), "$.result"); return XMJSONPath.readPath(dataApi.getApi_response(), "$.result");
} }
/**
* 查看优惠券列表
* @param nameLike 全局搜索中 根据优惠券名称搜索
* @param status 列表中根据优惠券状态搜索
*/
public void getStudioCouponList(String nameLike,String status){
setUP("API_getStudioCouponList");
JSONObject body = new JSONObject();
body.put("operatorId", dataApi.getLoginInfo().getAdminId());
body.put("studioId", dataApi.getLoginInfo().getStudioId());
body.put("brandId", dataApi.getLoginInfo().getBrandId());
body.put("current",0);
body.put("size",500);
if (null != nameLike || !nameLike.isEmpty()) {
body.put("nameLike", nameLike);
}
if (null != status || !status.isEmpty()) {
body.put("status", status);
}
dataApi.doRequest(RequestType.JSON, dataparams, body.toString(), dataheadrs).assetsSuccess(true);
}
/**
* 查看优惠券详情
* @param couponId
*/
public void getCouponDetail(String couponId){
setUP("API_getCouponDetail");
JSONObject body = new JSONObject();
body.put("operatorId", dataApi.getLoginInfo().getAdminId());
body.put("studioId", dataApi.getLoginInfo().getStudioId());
body.put("brandId", dataApi.getLoginInfo().getBrandId());
body.put("id",couponId);
dataApi.doRequest(RequestType.JSON, dataparams, body.toString(), dataheadrs).assetsSuccess(true);
}
/**
* 失效优惠券
* @param couponId
*/
public void InvalidCoupon(String couponId){
setUP("API_ InvalidCoupon");
JSONObject body = new JSONObject();
body.put("operatorId", dataApi.getLoginInfo().getAdminId());
body.put("studioId", dataApi.getLoginInfo().getStudioId());
body.put("brandId", dataApi.getLoginInfo().getBrandId());
body.put("id",couponId);
dataApi.doRequest(RequestType.JSON, dataparams, body.toString(), dataheadrs).assetsSuccess(true);
}
/**
* 修改优惠券的剩余数量
* @param couponId 优惠券ID
* @param inventory 修改后的剩余数量
*/
public void modifyCouponInventory(String couponId,int inventory){
setUP("API_modifyCouponInventory");
JSONObject body = new JSONObject();
body.put("operatorId", dataApi.getLoginInfo().getAdminId());
body.put("studioId", dataApi.getLoginInfo().getStudioId());
body.put("brandId", dataApi.getLoginInfo().getBrandId());
body.put("id",couponId);
body.put("inventory",inventory);
dataApi.doRequest(RequestType.JSON, dataparams, body.toString(), dataheadrs).assetsSuccess(true);
}
/**
* 任务中心
*/
public void getStudioBatchTaskPage(){
setUP("API_getStudioBatchTaskPage");
JSONObject body = new JSONObject();
body.put("operatorId", dataApi.getLoginInfo().getAdminId());
body.put("studioId", dataApi.getLoginInfo().getStudioId());
body.put("brandId", dataApi.getLoginInfo().getBrandId());
body.put("current", 0);
body.put("size", 500);
dataApi.doRequest(RequestType.JSON, dataparams, body.toString(), dataheadrs).assetsSuccess(true);
}
} }
\ No newline at end of file
package com.xiaomai.cases.polar.coupon;
import com.alibaba.fastjson.JSONObject;
import com.xiaomai.basetest.BaseTestImpl;
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;
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/27 17:16
*/
public class TestBatchSendCouponToMember extends BaseTestImpl {
@Resource(name = "couponTools")
CouponTools couponTools;
String memberId = "";
@Resource(name = "tools")
Tools tools;
@Resource(name = "trainingTools")
TrainingTools trainingTools;
String title = "";
String couponId = "";
@BeforeClass
public void beforeTest() {
setTestInfo(ApiModule.Polar_Coupon, "API_batchSendCoupon", LoginAccount.ADU_PROD, Terminal.B, "adu");
super.beforeTest();
}
@Test(description = "定向发放优惠券 to 会员")
public void testBatchSendCouponToMember() throws InterruptedException {
//1.创建1个新的优惠券
List<String> memberStatusLimits = new ArrayList<>();
memberStatusLimits.add("POTENTIAL");
memberStatusLimits.add("NORMAL");
memberStatusLimits.add("HISTORY");
title = "有门槛限领适用全部" + RandomStringUtil.randomString(3);
couponId = couponTools.createCoupon("THRESHOLD", "FIXED", memberStatusLimits, title, true,
"CERTAIN", 2, "RELATIVE", title + "优惠方式选择金额,满10元可以减10元,领取后1天内有效");
//2.创建成功后,列表增加一条刚新建的优惠券,搜索可领取优惠券
couponTools.getStudioCouponList("", "CLAIMABLE");
Long goalData = XMJSONPath.getJSONArrayByReadPath(dataApi.getApi_response(), "$.result.records").toJavaList(JSONObject.class).stream().filter(e ->
e.getString("id").equals(couponId)).count();
Assert.assertTrue(goalData == 1, "刚创建的优惠券在列表中搜索,后端没返回数据");
//3.查看优惠券详情,check 优惠券的总数量,剩余数量,已发放数量
couponTools.getCouponDetail(couponId);
int quantityBefore = Integer.valueOf(XMJSONPath.readPath(dataApi.getApi_response(), "$.result.quantity"));
int inventoryBefore = Integer.valueOf(XMJSONPath.readPath(dataApi.getApi_response(), "$.result.inventory"));
int receivedBefore = Integer.valueOf(XMJSONPath.readPath(dataApi.getApi_response(), "$.result.received"));
//4.操作定向发放优惠券
//搜索目标会员
String phone = "17682302508";
memberId = trainingTools.searchTargerMember(phone);
if (memberId.isEmpty()) {
memberId = tools.create("测试机吴彦祖", phone).getString("result");
}
JSONObject body = new JSONObject();
List<String> receiverIds = new ArrayList<>();
receiverIds.add(memberId);
body.put("operatorId", xmAppApi.getLoginInfo().getAdminId());
body.put("studioId", xmAppApi.getLoginInfo().getStudioId());
body.put("brandId", xmAppApi.getLoginInfo().getBrandId());
body.put("couponId", couponId);
body.put("receiverIds", receiverIds);
xmAppApi.doRequest(RequestType.JSON, params, body.toString(), headers).assetsSuccess(true);
String taskId = XMJSONPath.readPath(xmAppApi.getApi_response(), "$.result");
//check任务中心生成一条任务
Thread.sleep(2000);
couponTools.getStudioBatchTaskPage();
Long goalTask = XMJSONPath.getJSONArrayByReadPath(dataApi.getApi_response(), "$.result.records").toJavaList(JSONObject.class).stream().filter(e ->
e.getString("id").equals(taskId)).count();
Assert.assertTrue(goalTask == 1, "刚操作的定向发放优惠券给学员,在任务中心查看,后端没返回目标数据");
XMJSONPath.getJSONArrayByReadPath(dataApi.getApi_response(), "$.result.records").toJavaList(JSONObject.class).stream().filter(e ->
e.getString("id").equals(taskId)).forEach(object ->
Assert.assertTrue(object.getInteger("totalNumber") == 1 && object.getInteger("failNumber") == 0 &&
object.getInteger("successNumber") == 1));
//查看详情
couponTools.getCouponDetail(couponId);
Assert.assertTrue(Integer.valueOf(XMJSONPath.readPath(dataApi.getApi_response(), "$.result.quantity"))==quantityBefore,"优惠券发放给会员后,总数量变化了,应该不变");
Assert.assertTrue(Integer.valueOf(XMJSONPath.readPath(dataApi.getApi_response(), "$.result.inventory"))+1==inventoryBefore,"优惠券发放给会员后,剩余库存没减少");
Assert.assertTrue(Integer.valueOf(XMJSONPath.readPath(dataApi.getApi_response(), "$.result.received"))-1==receivedBefore,"优惠券发放给会员后,已发放数据不对");
}
}
\ No newline at end of file
package com.xiaomai.cases.polar.coupon; package com.xiaomai.cases.polar.coupon;
import com.alibaba.fastjson.JSONObject;
import com.xiaomai.basetest.BaseTestImpl; import com.xiaomai.basetest.BaseTestImpl;
import com.xiaomai.enums.ApiModule; import com.xiaomai.enums.ApiModule;
import com.xiaomai.enums.LoginAccount; import com.xiaomai.enums.LoginAccount;
import com.xiaomai.enums.Terminal; import com.xiaomai.enums.Terminal;
import com.xiaomai.utils.RandomStringUtil; import com.xiaomai.utils.RandomStringUtil;
import com.xiaomai.utils.XMJSONPath;
import org.testng.Assert;
import org.testng.annotations.BeforeClass; import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test; import org.testng.annotations.Test;
...@@ -44,6 +47,12 @@ public class TestCreateCoupon extends BaseTestImpl { ...@@ -44,6 +47,12 @@ public class TestCreateCoupon extends BaseTestImpl {
couponIdA=couponTools.createCoupon("THRESHOLD","FIXED",memberStatusLimitsA,titleA,true, couponIdA=couponTools.createCoupon("THRESHOLD","FIXED",memberStatusLimitsA,titleA,true,
"CERTAIN", 2,"RELATIVE",titleA+"优惠方式选择金额,满10元可以减10元,领取后1天内有效"); "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); titleB="无门槛不限领适用部分"+ RandomStringUtil.randomString(2);
couponIdB=couponTools.createCoupon("WITHOUT","WITHOUT",memberStatusLimitsB,titleB,false, couponIdB=couponTools.createCoupon("WITHOUT","WITHOUT",memberStatusLimitsB,titleB,false,
"DISCOUNT", 2,"ABSOLUTE",titleB+"优惠方式选择折扣,8.8折,适用有效期明天~(当前时间+5天)"); "DISCOUNT", 2,"ABSOLUTE",titleB+"优惠方式选择折扣,8.8折,适用有效期明天~(当前时间+5天)");
......
...@@ -57,10 +57,10 @@ public class TestDelCampScheduleItem extends SelectTargetTrainingCampAndGetInfo{ ...@@ -57,10 +57,10 @@ public class TestDelCampScheduleItem extends SelectTargetTrainingCampAndGetInfo{
} }
@Test(description = "删除当前课次") @Test(description = "删除当前课次")
public void testDelCurrentCampScheduleItem(){ public void testDelCurrentCampScheduleItem(){
//获取下周日课次ID //获取下周日课次ID(只删除匹配到ruldId的课次)
Set<String> scheduleIds7 = campScheduleTools.getCampTableDate(13); Set<String> scheduleIds7 = campScheduleTools.getCampTableDate(13,ruldId);
if(scheduleIds7.size() != 0 && scheduleIds7 != null){ if(scheduleIds7.size() != 0 && scheduleIds7 != null){
//删除下周日所有的课次 //删除本次规则创建的下周日所有的课次
scheduleIds7.stream().forEach(scheduleId -> { scheduleIds7.stream().forEach(scheduleId -> {
JSONObject body = new JSONObject(); JSONObject body = new JSONObject();
body.put("operatorId", xmAppApi.getLoginInfo().getAdminId()); body.put("operatorId", xmAppApi.getLoginInfo().getAdminId());
...@@ -71,11 +71,18 @@ public class TestDelCampScheduleItem extends SelectTargetTrainingCampAndGetInfo{ ...@@ -71,11 +71,18 @@ public class TestDelCampScheduleItem extends SelectTargetTrainingCampAndGetInfo{
xmAppApi.doRequest(RequestType.JSON, params, body.toString(), headers).assetsSuccess(true); xmAppApi.doRequest(RequestType.JSON, params, body.toString(), headers).assetsSuccess(true);
}); });
//删除成功后check 下周日课表是否有数据 //删除成功后check 下周日课表是否包含删除的课次
String startDate = CommUtil.oneKeyGetNextWeekXDay(13);//下周日00点时间 String startDate = CommUtil.oneKeyGetNextWeekXDay(13);//下周日00点时间
String endDate = CommUtil.oneKeyGetNextWeekEndXDay(7);//下周日23:59 String endDate = CommUtil.oneKeyGetNextWeekEndXDay(7);//下周日23:59
campScheduleTools.getCampScheduleTable(startDate,endDate); campScheduleTools.getCampScheduleTable(startDate,endDate);
Assert.assertEquals(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))
.map(e -> e.getString("scheduleId")).count();//获取scheduleId 的数量
Assert.assertTrue(goalCount==0,"删除当前课次后,再去课表中查看,后端仍然返回数据");
} }
} }
...@@ -83,9 +90,9 @@ public class TestDelCampScheduleItem extends SelectTargetTrainingCampAndGetInfo{ ...@@ -83,9 +90,9 @@ public class TestDelCampScheduleItem extends SelectTargetTrainingCampAndGetInfo{
@Test(description = "删除当前及后续课次", priority = 1) @Test(description = "删除当前及后续课次", priority = 1)
public void testDelCurrentAndSubsequentCampSchedule() { public void testDelCurrentAndSubsequentCampSchedule() {
//获取下周六课次ID //获取下周六课次ID
Set<String> scheduleIds6 = campScheduleTools.getCampTableDate(12); Set<String> scheduleIds6 = campScheduleTools.getCampTableDate(12,ruldId);
if(scheduleIds6.size() != 0 && scheduleIds6 != null){ if(scheduleIds6.size() != 0 && scheduleIds6 != null){
//删除下周所有的课次 //删除下周六即后续所有的课次
scheduleIds6.stream().forEach(scheduleId -> { scheduleIds6.stream().forEach(scheduleId -> {
JSONObject body = new JSONObject(); JSONObject body = new JSONObject();
body.put("operatorId", xmAppApi.getLoginInfo().getAdminId()); body.put("operatorId", xmAppApi.getLoginInfo().getAdminId());
...@@ -99,8 +106,19 @@ public class TestDelCampScheduleItem extends SelectTargetTrainingCampAndGetInfo{ ...@@ -99,8 +106,19 @@ public class TestDelCampScheduleItem extends SelectTargetTrainingCampAndGetInfo{
//删除成功后check从下周六到排课结束日期课表是否有数据 //删除成功后check从下周六到排课结束日期课表是否有数据
String startDate = CommUtil.oneKeyGetNextWeekXDay(12);//下周六00点时间 String startDate = CommUtil.oneKeyGetNextWeekXDay(12);//下周六00点时间
campScheduleTools.getCampScheduleTable(startDate, super.openEndDate); 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"); Assert.assertEquals(XMJSONPath.readPath(dataApi.getApi_response(), "$.result.totalCount"), "0");
}
//删除成功后,check对应训练营活动的已排课次数是否同步变更 //删除成功后,check对应训练营活动的已排课次数是否同步变更
int delLoopNum=campScheduleTools.queryExpectedLoopNum(startDate, super.openEndDate, weekdaysList); int delLoopNum=campScheduleTools.queryExpectedLoopNum(startDate, super.openEndDate, weekdaysList);
//查看日程,获取原规则中展示的训练营已排课课次数,原来已排课课次数-删除的已排课课次数 //查看日程,获取原规则中展示的训练营已排课课次数,原来已排课课次数-删除的已排课课次数
......
...@@ -77,8 +77,8 @@ public class TestEditCampScheduleItem extends SelectTargetTrainingCampAndGetInfo ...@@ -77,8 +77,8 @@ public class TestEditCampScheduleItem extends SelectTargetTrainingCampAndGetInfo
@Test(description = "编辑当前课次") @Test(description = "编辑当前课次")
public void testEditCurrentCampSchedule() { public void testEditCurrentCampSchedule() {
//获取下周日课次ID //获取本次创建规则中下周日课次ID
scheduleIdsN = campScheduleTools.getCampTableDate(13); scheduleIdsN = campScheduleTools.getCampTableDate(13,ruldId);
if (scheduleIdsN.size() != 0 && scheduleIdsN != null) { if (scheduleIdsN.size() != 0 && scheduleIdsN != null) {
scheduleIdsN.stream().forEach(scheduleId -> { scheduleIdsN.stream().forEach(scheduleId -> {
...@@ -117,7 +117,7 @@ public class TestEditCampScheduleItem extends SelectTargetTrainingCampAndGetInfo ...@@ -117,7 +117,7 @@ public class TestEditCampScheduleItem extends SelectTargetTrainingCampAndGetInfo
} }
@Test(description = "编辑当前及后续课次", priority = 1) @Test(description = "编辑当前及后续课次", priority = 1)
public void testEditCurrentAndSubsequentSchedule() { public void testEditCurrentAndSubsequentCampSchedule() {
//获取存量场地 //获取存量场地
List<String> venueAreaIds = groupScheduleTools.getStockArea("流星花园秘密基地"); List<String> venueAreaIds = groupScheduleTools.getStockArea("流星花园秘密基地");
//获取下下周二的课次ID //获取下下周二的课次ID
...@@ -144,7 +144,7 @@ public class TestEditCampScheduleItem extends SelectTargetTrainingCampAndGetInfo ...@@ -144,7 +144,7 @@ public class TestEditCampScheduleItem extends SelectTargetTrainingCampAndGetInfo
} }
//获取下周六的课次ID //获取下周六的课次ID
Set<String> scheduleIds6 = campScheduleTools.getCampTableDate(12); Set<String> scheduleIds6 = campScheduleTools.getCampTableDate(12,ruldId);
if (scheduleIds6.size() != 0 && scheduleIds6 != null) { if (scheduleIds6.size() != 0 && scheduleIds6 != null) {
scheduleIds6.stream().forEach(scheduleId -> { scheduleIds6.stream().forEach(scheduleId -> {
//编辑下周六及后续课次 //编辑下周六及后续课次
......
package com.xiaomai.cases.polar.schedule.group; package com.xiaomai.cases.polar.schedule.group;
import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.xiaomai.basetest.BaseTestImpl; import com.xiaomai.basetest.BaseTestImpl;
import com.xiaomai.cases.polar.course.CourseTools; import com.xiaomai.cases.polar.course.CourseTools;
import com.xiaomai.cases.polar.setting.courseCategory.CourseCategoryTools; import com.xiaomai.cases.polar.setting.courseCategory.CourseCategoryTools;
...@@ -21,6 +22,7 @@ import java.util.List; ...@@ -21,6 +22,7 @@ import java.util.List;
/** /**
* 创建排课 * 创建排课
*
* @author adu * @author adu
* data 2024/6/12 15:54 * data 2024/6/12 15:54
*/ */
...@@ -79,30 +81,42 @@ public class TestCreateGroupRuleSchedule extends BaseTestImpl { ...@@ -79,30 +81,42 @@ public class TestCreateGroupRuleSchedule extends BaseTestImpl {
List<String> assistCoachIdS = groupScheduleTools.getStudioAdminId(assistCoachIds); List<String> assistCoachIdS = groupScheduleTools.getStudioAdminId(assistCoachIds);
//1-创建排课日程 //1-创建排课日程
groupScheduleTools.createGroupRuleSchedule(courseId, chiefCoachIdS, todayStartTimeTamp, endDateTimeTamp, venueAreaIds, assistCoachIdS, false, 1,480); groupScheduleTools.createGroupRuleSchedule(courseId, chiefCoachIdS, todayStartTimeTamp, endDateTimeTamp, venueAreaIds, assistCoachIdS, false, 1, 480);
//2-查询排课日程 //2-查询排课日程
JSONArray result = groupScheduleTools.getGroupRuleScheduleList(courseId, chiefCoachIdS); 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);
//查看今天的课表,获取刚创建的日程中对应的课次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);
Assert.assertTrue(scheduleId!=null||!scheduleId.isEmpty(),"刚创建的规则中,没查询到今天对应的课次");
Assert.assertTrue(result.size() >= 1);
//创建今日待上课的排课后再查询今日待上课的数据 //创建今日待上课的排课后再查询今日待上课的数据
int num1 = homeTools.queryTodaySchedule().getJSONArray("result").size(); int num1 = homeTools.queryTodaySchedule().getJSONArray("result").size();
Assert.assertEquals(num1, num+1); Assert.assertEquals(num1, num + 1);
//统计查询到的目标日程数量 groupScheduleTools.delGroupRuleSchedule(ruldId, true);
int size = result.size();
String ruldId = XMJSONPath.readPath(result.getJSONObject(0), "$.ruleId");
groupScheduleTools.delGroupRuleSchedule(ruldId,true);
Thread.sleep(1000); Thread.sleep(1000);
JSONArray result2 = groupScheduleTools.getGroupRuleScheduleList(courseId, chiefCoachIdS); JSONArray result2 = groupScheduleTools.getGroupRuleScheduleList(courseId, chiefCoachIdS);
//获取日程中规则ID=ruleId的日程数量
Long delRuldCount = result2.toJavaList(JSONObject.class).stream().filter(e -> e.getString("ruleId").equals(ruldId)).count();
//删除成功后,统计查询到的目标日程数量是否-1 //删除成功后,统计查询到的目标日程数量为0
Assert.assertEquals(result2.size(), size - 1); Assert.assertTrue(delRuldCount == 0);
} }
} }
\ No newline at end of file
...@@ -36,9 +36,9 @@ public class TestDelGroupScheduleItem extends UniversalDataScheduling { ...@@ -36,9 +36,9 @@ public class TestDelGroupScheduleItem extends UniversalDataScheduling {
} }
@Test(description = "删除当前课次") @Test(description = "删除当前课次")
public void testDelCurrentSchedule() { public void testDelCurrentGroupSchedule() {
//获取下周四的课次ID //获取下周四的课次ID(匹配到刚创建的规则ID)
Set<String> scheduleIds = groupScheduleTools.getTableDate(10); Set<String> scheduleIds = groupScheduleTools.getTableDate(10,groupRuldId);
//如果课次ID有值则继续走删除的case //如果课次ID有值则继续走删除的case
if (!scheduleIds.isEmpty()) { if (!scheduleIds.isEmpty()) {
scheduleIds.stream().forEach(scheduleId -> { scheduleIds.stream().forEach(scheduleId -> {
...@@ -49,20 +49,23 @@ public class TestDelGroupScheduleItem extends UniversalDataScheduling { ...@@ -49,20 +49,23 @@ public class TestDelGroupScheduleItem extends UniversalDataScheduling {
body.put("applyRestRule", false); body.put("applyRestRule", false);
body.put("scheduleId", scheduleId); body.put("scheduleId", scheduleId);
xmAppApi.doRequest(RequestType.JSON, params, body.toString(), headers).assetsSuccess(true); xmAppApi.doRequest(RequestType.JSON, params, body.toString(), headers).assetsSuccess(true);
});
//删除成功后check 下周四课表是否有数据 //删除成功后check 下周四课表是否有数据
groupScheduleTools.getGroupScheduleTable(Long.valueOf(CommUtil.oneKeyGetNextWeekXDay(10)), Long.valueOf(CommUtil.oneKeyGetNextWeekEndXDay(4)),courseId); groupScheduleTools.getGroupScheduleTable(Long.valueOf(CommUtil.oneKeyGetNextWeekXDay(10)), Long.valueOf(CommUtil.oneKeyGetNextWeekEndXDay(4)),courseId);
Assert.assertEquals(XMJSONPath.readPath(dataApi.getApi_response(), "$.result.totalCount"), "0"); Long countA=XMJSONPath.getJSONArrayByReadPath(dataApi.getApi_response(), "$.result.timetableGroups").toJavaList(JSONObject.class).stream()
.flatMap(e -> e.getJSONArray("timetableList").toJavaList(JSONObject.class).stream())
.filter(e ->e.getString("scheduleId").equals(scheduleId)).count();
Assert.assertTrue(countA==0,"删除课次后,课表中后端返回数据有问题,目前还能发现数据");
});
} }
} }
@Test(description = "删除当前及后续课次", priority = 1) @Test(description = "删除当前及后续课次", priority = 1)
public void testDelCurrentAndSubsequentSchedule() { public void testDelCurrentAndSubsequentGroupSchedule() {
//获取下周三的课次ID //获取下周三的课次ID(匹配到对应的规则ID)
Set<String> scheduleIds = groupScheduleTools.getTableDate(9); Set<String> scheduleIds = groupScheduleTools.getTableDate(9,groupRuldId);
//如果课次ID有值则继续走删除的case //如果课次ID有值则继续走删除的case
if (!scheduleIds.isEmpty()) { if (!scheduleIds.isEmpty()) {
scheduleIds.stream().forEach(scheduleId -> { scheduleIds.stream().forEach(scheduleId -> {
...@@ -73,11 +76,16 @@ public class TestDelGroupScheduleItem extends UniversalDataScheduling { ...@@ -73,11 +76,16 @@ public class TestDelGroupScheduleItem extends UniversalDataScheduling {
body.put("applyRestRule", true); body.put("applyRestRule", true);
body.put("scheduleId", scheduleId); body.put("scheduleId", scheduleId);
xmAppApi.doRequest(RequestType.JSON, params, body.toString(), headers).assetsSuccess(true); xmAppApi.doRequest(RequestType.JSON, params, body.toString(), headers).assetsSuccess(true);
});
//删除成功后check 从下周三到下周日课表是否有数据 //删除成功后check 从下周三到下周日课表是否有数据
groupScheduleTools.getGroupScheduleTable(Long.valueOf(CommUtil.oneKeyGetNextWeekXDay(9)), Long.valueOf(CommUtil.oneKeyGetNextWeekEndDay()),courseId); groupScheduleTools.getGroupScheduleTable(Long.valueOf(CommUtil.oneKeyGetNextWeekXDay(9)), Long.valueOf(CommUtil.oneKeyGetNextWeekEndDay()),courseId);
Assert.assertEquals(XMJSONPath.readPath(dataApi.getApi_response(), "$.result.totalCount"), "0"); 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,"删除当前及后续课次后,课表中后端返回数据有问题,目前还能发现数据"); });
} }
} }
......
...@@ -28,6 +28,7 @@ import java.util.stream.Collectors; ...@@ -28,6 +28,7 @@ import java.util.stream.Collectors;
public class TestEditGroupSchedule extends UniversalDataScheduling { public class TestEditGroupSchedule extends UniversalDataScheduling {
public static Date now = new Date(); public static Date now = new Date();
Set<String> scheduleIdsN; Set<String> scheduleIdsN;
String newGroupRuldId="";
@BeforeClass @BeforeClass
...@@ -39,9 +40,9 @@ public class TestEditGroupSchedule extends UniversalDataScheduling { ...@@ -39,9 +40,9 @@ public class TestEditGroupSchedule extends UniversalDataScheduling {
} }
@Test(description = "编辑当前课次") @Test(description = "编辑当前课次")
public void testEditCurrentSchedule() { public void testEditCurrentGroupSchedule() {
//获取下周四的课次ID //获取下周四的课次ID(匹配到刚创建的规则ID)
scheduleIdsN = groupScheduleTools.getTableDate(10); scheduleIdsN = groupScheduleTools.getTableDate(10,groupRuldId);
//如果课次ID有值则继续走删除的case //如果课次ID有值则继续走删除的case
if (!scheduleIdsN.isEmpty()) { if (!scheduleIdsN.isEmpty()) {
scheduleIdsN.stream().forEach(scheduleId -> { scheduleIdsN.stream().forEach(scheduleId -> {
...@@ -87,9 +88,9 @@ public class TestEditGroupSchedule extends UniversalDataScheduling { ...@@ -87,9 +88,9 @@ public class TestEditGroupSchedule extends UniversalDataScheduling {
} }
@Test(description = "编辑当前及后续课次", priority = 1) @Test(description = "编辑当前及后续课次", priority = 1)
public void testEditCurrentAndSubsequentSchedule() { public void testEditCurrentAndSubsequentGroupSchedule() {
//获取下周二的课次ID //获取下周二的课次ID(匹配到刚创建的规则ID)
Set<String> scheduleIds = groupScheduleTools.getTableDate(8); Set<String> scheduleIds = groupScheduleTools.getTableDate(8,groupRuldId);
//如果课次ID有值则继续走编辑的case //如果课次ID有值则继续走编辑的case
if (!scheduleIds.isEmpty()) { if (!scheduleIds.isEmpty()) {
scheduleIds.stream().forEach(scheduleId -> { scheduleIds.stream().forEach(scheduleId -> {
...@@ -121,8 +122,12 @@ public class TestEditGroupSchedule extends UniversalDataScheduling { ...@@ -121,8 +122,12 @@ public class TestEditGroupSchedule extends UniversalDataScheduling {
//编辑成功后check对应课次详情修改内容是否同步成功 //编辑成功后check对应课次详情修改内容是否同步成功
checkData(scheduleId,startStamp1); checkData(scheduleId,startStamp1);
//通过课次详情,活动课次对应的ruldId
newGroupRuldId=XMJSONPath.readPath(dataApi.getApi_response(),"$.result.ruleId");
//查看下周三课次是否同步被修改 //查看下周三课次是否同步被修改
Set<String> scheduleIdX = groupScheduleTools.getTableDate(9); Set<String> scheduleIdX = groupScheduleTools.getTableDate(9,newGroupRuldId);
String startStamp2 = CommUtil.getWholeHourTimeStamp(9,"13:00"); String startStamp2 = CommUtil.getWholeHourTimeStamp(9,"13:00");
if (!scheduleIdX.isEmpty()) { if (!scheduleIdX.isEmpty()) {
scheduleIdX.stream().forEach(scheduleId1 -> { scheduleIdX.stream().forEach(scheduleId1 -> {
...@@ -135,7 +140,7 @@ public class TestEditGroupSchedule extends UniversalDataScheduling { ...@@ -135,7 +140,7 @@ public class TestEditGroupSchedule extends UniversalDataScheduling {
}); });
} }
//获取下周一的课次ID,查看下周一课次是否还是原来的(没被修改,还是原来的规则) //获取下周一的课次ID,查看下周一课次是否还是原来的(没被修改,还是原来的规则)
Set<String> scheduleId1 = groupScheduleTools.getTableDate(7); Set<String> scheduleId1 = groupScheduleTools.getTableDate(7,groupRuldId);
String startStamp3=CommUtil.getWholeHourTimeStamp(7,"13:00"); String startStamp3=CommUtil.getWholeHourTimeStamp(7,"13:00");
if (!scheduleId1.isEmpty()) { if (!scheduleId1.isEmpty()) {
scheduleId1.stream().forEach(scheduleId0 -> { scheduleId1.stream().forEach(scheduleId0 -> {
......
...@@ -38,10 +38,10 @@ public class TestDoForceOpenTraining extends BaseCreateTrainingData { ...@@ -38,10 +38,10 @@ public class TestDoForceOpenTraining extends BaseCreateTrainingData {
public void testForceOpenTraining() throws InterruptedException { public void testForceOpenTraining() throws InterruptedException {
//1.创建训练营活动:保存并发布 //1.创建训练营活动:保存并发布
id = trainingTools.createThenPublishTraining(String.valueOf(currentTimestamp + 25000), applyEndTime, courseId, openStartDate, id = trainingTools.createThenPublishTraining(String.valueOf(currentTimestamp + 30000), applyEndTime, courseId, openStartDate,
openEndDate, 0.01, trainingTitle, 2, 1, trainerListIdS, "YES"); openEndDate, 0.01, trainingTitle, 2, 1, trainerListIdS, "YES");
if (id.isEmpty()) { if (id.isEmpty()) {
id = trainingTools.createThenPublishTraining(futureTimestampS, applyEndTime, courseId, openStartDate, id = trainingTools.createThenPublishTraining(String.valueOf(currentTimestamp + 30000), applyEndTime, courseId, openStartDate,
openEndDate, 0.01, trainingTitle + RandomStringUtil.randomString(3), 2, 1, trainerListIdS, "YES"); openEndDate, 0.01, trainingTitle + RandomStringUtil.randomString(3), 2, 1, trainerListIdS, "YES");
} }
//2.查看活动详情,check 活动状态 //2.查看活动详情,check 活动状态
...@@ -61,12 +61,12 @@ public class TestDoForceOpenTraining extends BaseCreateTrainingData { ...@@ -61,12 +61,12 @@ public class TestDoForceOpenTraining extends BaseCreateTrainingData {
} }
//3.创建成功后,全局搜索check //3.创建成功后,全局搜索check
Thread.sleep(3000); Thread.sleep(10000);
trainingTools.commonSearchTraining(trainingTitle); trainingTools.commonSearchTraining(trainingTitle);
Assert.assertTrue(XMJSONPath.getJSONArrayByReadPath(dataApi.getApi_response(), "$.result").size() > 0, "活动创建后,根据活动名称全局搜索没有数据"); Assert.assertTrue(XMJSONPath.getJSONArrayByReadPath(dataApi.getApi_response(), "$.result").size() > 0, "活动创建后,根据活动名称全局搜索没有数据");
Thread.sleep(10000);//延迟10秒后,活动达到报名时间(可能状态没同步,定时任务没到时间执行,但是数据库中已是报名中) Thread.sleep(20000);//延迟20秒后,活动达到报名时间(可能状态没同步,定时任务没到时间执行,但是数据库中已是报名中)
//4.对报名中的活动操作立即成营 //4.对报名中的活动操作立即成营
JSONObject body1 = new JSONObject(); JSONObject body1 = new JSONObject();
body1.put("operatorId", dataApi.getLoginInfo().getAdminId()); body1.put("operatorId", dataApi.getLoginInfo().getAdminId());
......
...@@ -106,7 +106,7 @@ public class TestEditTraining extends BaseCreateTrainingData { ...@@ -106,7 +106,7 @@ public class TestEditTraining extends BaseCreateTrainingData {
if(goalObject!=null){ if(goalObject!=null){
String title=goalObject.getString("title"); String title=goalObject.getString("title");
String applyEndTime=goalObject.getString("applyEndTime"); String applyEndTime=goalObject.getString("applyEndTime");
//String applyStartTime=goalObject.getString("applyStartTime"); String applyStartTime=goalObject.getString("applyStartTime");
String openStartDate=goalObject.getString("openStartDate"); String openStartDate=goalObject.getString("openStartDate");
String openEndDate=goalObject.getString("openEndDate"); String openEndDate=goalObject.getString("openEndDate");
//4.编辑已发布的活动(训练营名称,关联课程,开营时间,总课次数,售价,报名开始时间,报名结束时间不能修改)check不能修改的传值后也不会改变 //4.编辑已发布的活动(训练营名称,关联课程,开营时间,总课次数,售价,报名开始时间,报名结束时间不能修改)check不能修改的传值后也不会改变
......
...@@ -26,8 +26,8 @@ public class TrainingTools extends XMBaseTest { ...@@ -26,8 +26,8 @@ public class TrainingTools extends XMBaseTest {
String openEndDate0 = CommUtil.getNDayEndTimeTamp(2);//后天23:59:59 String openEndDate0 = CommUtil.getNDayEndTimeTamp(2);//后天23:59:59
long currentTimestamp = System.currentTimeMillis(); long currentTimestamp = System.currentTimeMillis();
// 在当前时间的基础上,加上20秒(20000毫秒 // 在当前时间的基础上,加上10分钟(1000毫秒*60*10
long futureTimestamp = currentTimestamp + 60000; long futureTimestamp = currentTimestamp + 600000;
String futureTimestampS = String.valueOf(futureTimestamp); String futureTimestampS = String.valueOf(futureTimestamp);
/** /**
...@@ -109,7 +109,7 @@ public class TrainingTools extends XMBaseTest { ...@@ -109,7 +109,7 @@ public class TrainingTools extends XMBaseTest {
body.put("studioId", dataApi.getLoginInfo().getStudioId()); // 场馆 body.put("studioId", dataApi.getLoginInfo().getStudioId()); // 场馆
body.put("brandId", dataApi.getLoginInfo().getBrandId()); body.put("brandId", dataApi.getLoginInfo().getBrandId());
body.put("applyEndTime", applyEndTime1);//报名结束时间 body.put("applyEndTime", applyEndTime1);//报名结束时间
body.put("applyStartTime", futureTimestampS);//报名开始时间,晚于当前时间20秒 body.put("applyStartTime", futureTimestampS);//报名开始时间,晚于当前时间10分钟
body.put("courseId", courseId); //关联课程ID body.put("courseId", courseId); //关联课程ID
body.put("creatorId", dataApi.getLoginInfo().getAdminId()); // 创建人即操作者 body.put("creatorId", dataApi.getLoginInfo().getAdminId()); // 创建人即操作者
body.put("openEndDate", openEndDate0); //开营结束时间 body.put("openEndDate", openEndDate0); //开营结束时间
......
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