Commit ddbf6db4 by DuJunLi

增加删除课次和编辑课次的case

parent a481c5ad
package com.xiaomai.cases.polar.schedule.group;
import com.alibaba.fastjson.JSONArray;
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.AfterClass;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
/**
* 删除课次(删除当前课次/删除当前及后续课次)
*
* @author adu
* data 2024/6/30 17:02
*/
public class TestDelGroupScheduleItem extends UniversalDataScheduling {
@BeforeClass
public void beforeTest() {
setTestInfo(ApiModule.Polar_Schedule, "API_delGroupScheduleItem", LoginAccount.ADU_PROD, Terminal.B, "adu");
super.beforeTest();
}
@Test(description = "删除当前课次")
public void testDelCurrentSchedule() {
//获取下周四的课次ID
Set<String> scheduleIds = groupScheduleTools.getTableDate(10);
//如果课次ID有值则继续走删除的case
if (!scheduleIds.isEmpty()) {
scheduleIds.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 下周四课表是否有数据
groupScheduleTools.getGroupScheduleTable(Long.valueOf(CommUtil.oneKeyGetNextWeekXDay(10)), Long.valueOf(CommUtil.oneKeyGetNextWeekEndXDay(4)));
Assert.assertEquals(XMJSONPath.readPath(dataApi.getApi_response(), "$.result.totalCount"), "0");
}
}
@Test(description = "删除当前及后续课次", priority = 1)
public void testDelCurrentAndSubsequentSchedule() {
//获取下周三的课次ID
Set<String> scheduleIds = groupScheduleTools.getTableDate(9);
//如果课次ID有值则继续走删除的case
if (!scheduleIds.isEmpty()) {
scheduleIds.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", true);
body.put("scheduleId", scheduleId);
xmAppApi.doRequest(RequestType.JSON, params, body.toString(), headers).assetsSuccess(true);
});
//删除成功后check 从下周三到下周日课表是否有数据
groupScheduleTools.getGroupScheduleTable(Long.valueOf(CommUtil.oneKeyGetNextWeekXDay(9)), Long.valueOf(CommUtil.oneKeyGetNextWeekEndDay()));
Assert.assertEquals(XMJSONPath.readPath(dataApi.getApi_response(), "$.result.totalCount"), "0");
}
}
@AfterClass(description = "删除此case创建的日程")
public void delData(){
List<String> ruleIdIds = new ArrayList<>();
//查询这个case创建的相关日程
JSONArray result = groupScheduleTools.getGroupRuleScheduleList(courseId, chiefCoachIdS);
int count = result.size();
if (count > 0) {//如果有数据,则获取对应日程ID
ruleIdIds = result.stream().map(obj -> {
JSONObject ruldIdInfo = (JSONObject) obj;
return ruldIdInfo.getString("ruleId");
}
).collect(Collectors.toList());
}
if (ruleIdIds != null) {//获取到的日程ID不为空时,则逐个删除相关日程
ruleIdIds.stream().forEach(ruleId -> {
//删除对应日程
groupScheduleTools.delGroupRuleSchedule(ruleId, true);
});
}
}
}
\ No newline at end of file
...@@ -101,8 +101,6 @@ public class TestEditGroupRuleSchedule extends BaseTestImpl { ...@@ -101,8 +101,6 @@ public class TestEditGroupRuleSchedule extends BaseTestImpl {
groupScheduleTools.delGroupRuleSchedule(ruldId,true); groupScheduleTools.delGroupRuleSchedule(ruldId,true);
} }
......
package com.xiaomai.cases.polar.schedule.group;
import com.alibaba.fastjson.JSONArray;
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.AfterClass;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
/**
* 编辑当前课次/编辑当前及后续课次
* @author adu
* data 2024/7/2 10:45
*/
public class TestEditGroupSchedule extends UniversalDataScheduling {
public static Date now = new Date();
Set<String> scheduleIdsN;
@BeforeClass
public void beforeTest() {
setTestInfo(ApiModule.Polar_Schedule, "API_editGroupSchedule", LoginAccount.ADU_PROD, Terminal.B, "adu");
super.beforeTest();
}
@Test(description = "编辑当前课次")
public void testEditCurrentSchedule() {
//获取下周四的课次ID
scheduleIdsN = groupScheduleTools.getTableDate(10);
//如果课次ID有值则继续走删除的case
if (!scheduleIdsN.isEmpty()) {
scheduleIdsN.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);
//获取下周四某个时间点的开始时间戳
Date getWeekStartDayData = CommUtil.getStartOfDateWeek(now);//获取本周的第一天
Date getNextWeekXDayData=CommUtil.addNDays(getWeekStartDayData,10);
String getNextWeekXDayDataS = new SimpleDateFormat("yyyy-MM-dd").format(getNextWeekXDayData.getTime());
String startStamp = CommUtil.getStringTimestampByStrTime(getNextWeekXDayDataS + " " + "13:30");
body.put("startTime", startStamp);
body.put("chiefCoachId", chiefCoachIdS);
body.put("minMemberNum", 1);
body.put("maxMemberNum", 10);
body.put("venueAreaIds", new ArrayList<>());
body.put("assistCoachIds", new ArrayList<>());
body.put("spanMinutes", 50);
body.put("force", true);//有冲突时忽略冲突
body.put("retainBooking", false);//不保留学员预约
xmAppApi.doRequest(RequestType.JSON, params, body.toString(), headers).assetsSuccess(true);
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
//编辑成功后check对应课次详情修改内容是否同步成功
groupScheduleTools.getScheduleItemDetail(scheduleId);
String detailResult = dataApi.getApi_response();
Assert.assertEquals(XMJSONPath.readPath(detailResult,"$.result.chiefCoachId"),chiefCoachIdS);
Assert.assertEquals(XMJSONPath.readPath(detailResult,"$.result.minMemberNum"),"1");
Assert.assertEquals(XMJSONPath.readPath(detailResult,"$.result.maxMemberNum"),"10");
Assert.assertEquals(XMJSONPath.readPath(detailResult,"$.result.startTime"),startStamp);
Assert.assertTrue(XMJSONPath.getJSONArrayByReadPath(detailResult,"$.result.assistCoachIds").size()==0,"助教修改后(置空)没生效");
Assert.assertTrue(XMJSONPath.getJSONArrayByReadPath(detailResult,"$.result.venueAreaIds").size()==0,"场地修改后(置空)没生效");
});
}
}
@Test(description = "编辑当前及后续课次", priority = 1)
public void testEditCurrentAndSubsequentSchedule() {
//获取下周二的课次ID
Set<String> scheduleIds = groupScheduleTools.getTableDate(8);
//如果课次ID有值则继续走编辑的case
if (!scheduleIds.isEmpty()) {
scheduleIds.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", true);//改的时日程当前及后续
body.put("scheduleId", scheduleId);
//获取下周二某个时间点的开始时间戳
Date getWeekStartDayData = CommUtil.getStartOfDateWeek(now);
Date getNextWeekXDayData=CommUtil.addNDays(getWeekStartDayData,8);
String getNextWeekXDayDataS = new SimpleDateFormat("yyyy-MM-dd").format(getNextWeekXDayData.getTime());
String startStamp = CommUtil.getStringTimestampByStrTime(getNextWeekXDayDataS + " " + "13:00"); //和创建时间一致,不修改时间
body.put("startTime", startStamp);
body.put("chiefCoachId", chiefCoachIdS);
body.put("minMemberNum", 6);//修改开课人数
body.put("maxMemberNum", 999);
body.put("venueAreaIds", venueAreaIds);
body.put("assistCoachIds", new ArrayList<>());//修改教练
body.put("spanMinutes", 50);
body.put("force", true);//有冲突时忽略冲突
//body.put("retainBooking", true);//保留学员预约,无改动到时间,教练,场地则不需要传此字段
xmAppApi.doRequest(RequestType.JSON, params, body.toString(), headers).assetsSuccess(true);
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
//编辑成功后check对应课次详情修改内容是否同步成功
groupScheduleTools.getScheduleItemDetail(scheduleId);
String detailResult = dataApi.getApi_response();
Assert.assertEquals(XMJSONPath.readPath(detailResult,"$.result.chiefCoachId"),chiefCoachIdS);
Assert.assertEquals(XMJSONPath.readPath(detailResult,"$.result.minMemberNum"),"6");
Assert.assertEquals(XMJSONPath.readPath(detailResult,"$.result.maxMemberNum"),"999");
Assert.assertEquals(XMJSONPath.readPath(detailResult,"$.result.startTime"),startStamp);
Assert.assertTrue(XMJSONPath.getJSONArrayByReadPath(detailResult,"$.result.assistCoachIds").size()==0,"助教修改后(置空)没生效");
Assert.assertTrue(XMJSONPath.getJSONArrayByReadPath(detailResult,"$.result.venueAreaIds").containsAll(venueAreaIds),"场地无修改,但是却变动了");
//查看下周三课次是否同步被修改
Set<String> scheduleIdX = groupScheduleTools.getTableDate(9);
if (!scheduleIdX.isEmpty()) {
scheduleIdX.stream().forEach(scheduleId1 -> {
//删除case1中编辑独立出去的课次
groupScheduleTools.delGroupScheduleItem(scheduleId1);
});
}
});
}
}
@AfterClass(description = "删除此case创建的日程")
public void delData(){
List<String> ruleIdIds = new ArrayList<>();
//查询这个case创建的相关日程
JSONArray result = groupScheduleTools.getGroupRuleScheduleList(courseId, chiefCoachIdS);
int count = result.size();
if (count > 0) {//如果有数据,则获取对应日程ID
ruleIdIds = result.stream().map(obj -> {
JSONObject ruldIdInfo = (JSONObject) obj;
return ruldIdInfo.getString("ruleId");
}
).collect(Collectors.toList());
}
if (ruleIdIds != null) {//获取到的日程ID不为空时,则逐个删除相关日程
ruleIdIds.stream().forEach(ruleId -> {
//删除对应日程
groupScheduleTools.delGroupRuleSchedule(ruleId, true);
});
}
if (!scheduleIdsN.isEmpty()) {
scheduleIdsN.stream().forEach(scheduleId -> {
//删除case1中编辑独立出去的课次
groupScheduleTools.delGroupScheduleItem(scheduleId);
});
}
}
}
\ No newline at end of file
package com.xiaomai.cases.polar.schedule.group;
import com.xiaomai.basetest.BaseTestImpl;
import com.xiaomai.cases.polar.course.CourseTools;
import com.xiaomai.cases.polar.setting.courseCategory.CourseCategoryTools;
import com.xiaomai.cases.polar.setting.venue.VenueAreaTools;
import com.xiaomai.enums.ApiModule;
import com.xiaomai.enums.LoginAccount;
import com.xiaomai.enums.Terminal;
import com.xiaomai.utils.CommUtil;
import org.testng.annotations.BeforeClass;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
/**
* @author adu
* data 2024/7/2 10:54
*/
public class UniversalDataScheduling extends BaseTestImpl {
@Resource(name = "courseCategoryTools")
CourseCategoryTools courseCategoryTools;
@Resource(name = "courseTools")
CourseTools courseTools;
@Resource(name = "groupScheduleTools")
GroupScheduleTools groupScheduleTools;
@Resource(name = "venueAreaTools")
VenueAreaTools venueAreaTools;
String courseName = "阿杜自动化团课课程";
String courseId = "";
String chiefCoachIdS = "";
List<String> venueAreaIds = null;
List<String> assistCoachIdS = null;
@BeforeClass
public void beforeTest() {
super.beforeTest();
//获取存量课程ID
courseId = groupScheduleTools.getStockGroupCourseId(courseName);
if (courseId == "") {
//获取存量课程分类ID
String categoryId = courseCategoryTools.getCourseCategoryPage("普拉提");
courseId = courseTools.createGroupCourse(courseName, categoryId, "STUDIO");
}
//获取存量场地
venueAreaIds = groupScheduleTools.getStockArea("流星花园秘密基地");
//获取存量教练
List<String> chiefCoachId = new ArrayList<>();
chiefCoachId.add("杜君丽");
chiefCoachIdS = groupScheduleTools.getStudioAdminId(chiefCoachId).get(0).toString();
//获取存量助教
List<String> assistCoachIds = new ArrayList<>();
assistCoachIds.add("木头");
assistCoachIds.add("吴彦祖");
assistCoachIdS = groupScheduleTools.getStudioAdminId(assistCoachIds);
//创建排课(按次数)
groupScheduleTools.createGroupRuleSchedule(courseId, chiefCoachIdS, CommUtil.oneKeyGetNextWeekStartDay(), CommUtil.oneKeyGetNextWeekEndDay(), venueAreaIds, assistCoachIdS, true, 2, 780);
}
}
\ No newline at end of file
...@@ -9,6 +9,7 @@ import java.beans.Introspector; ...@@ -9,6 +9,7 @@ import java.beans.Introspector;
import java.beans.PropertyDescriptor; import java.beans.PropertyDescriptor;
import java.io.FileInputStream; import java.io.FileInputStream;
import java.lang.reflect.Method; import java.lang.reflect.Method;
import java.text.DateFormat;
import java.text.ParseException; import java.text.ParseException;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.*; import java.util.*;
...@@ -166,6 +167,52 @@ public class CommUtil { ...@@ -166,6 +167,52 @@ public class CommUtil {
return getStringTimestamp(getWeekEndDay, "yyyy-MM-dd HH:mm:ss"); return getStringTimestamp(getWeekEndDay, "yyyy-MM-dd HH:mm:ss");
} }
/**
* 获取下周第一天
* @return
*/
public static String oneKeyGetNextWeekStartDay() {
Date getWeekStartDayData = getStartOfDateWeek(now);//获取本周的第一天
Date getNextWeekStartDayData=addNDays(getWeekStartDayData,7);
String getNextWeekStartDay = getFormatTimeStr(getNextWeekStartDayData, "yyyy-MM-dd HH:mm:ss");//时间格式转化为string
return getStringTimestamp(getNextWeekStartDay, "yyyy-MM-dd HH:mm:ss");
}
/**
* 获取下周最后一天
* @return
*/
public static String oneKeyGetNextWeekEndDay() {
Date getWeekEndDayData = getEndOfDateWeek(now);//获取本周的最后一天
Date getNextWeekEndDayData =addNDays(getWeekEndDayData,7);
String getNextWeekEndDay = getFormatTimeStr(getNextWeekEndDayData, "yyyy-MM-dd HH:mm:ss");//时间格式转化为string
return getStringTimestamp(getNextWeekEndDay, "yyyy-MM-dd HH:mm:ss");
}
/**
* 获取下周某一天(结束日期)
* @param n ,n=7是下周最后一天周日,n=6下周周六,n=5下周周五,n=4下周周四
* @return
*/
public static String oneKeyGetNextWeekEndXDay(int n) {
Date getWeekEndDayData = getEndOfDateWeek(now);//获取本周的最后一天
Date getNextWeekEndDayData =addNDays(getWeekEndDayData,n);
String getNextWeekEndDay = getFormatTimeStr(getNextWeekEndDayData, "yyyy-MM-dd HH:mm:ss");//时间格式转化为string
return getStringTimestamp(getNextWeekEndDay, "yyyy-MM-dd HH:mm:ss");
}
/**
* 获取下周某一天(开始时间)
* @param n 以7为基数(7是周一),+1(8)是周二,+2(9)是周三,10是周四
* @return
*/
public static String oneKeyGetNextWeekXDay(int n) {
Date getWeekStartDayData = getStartOfDateWeek(now);//获取本周的第一天
Date getNextWeekStartDayData=addNDays(getWeekStartDayData,n);
String getNextWeekStartDay = getFormatTimeStr(getNextWeekStartDayData, "yyyy-MM-dd HH:mm:ss");//时间格式转化为string
return getStringTimestamp(getNextWeekStartDay, "yyyy-MM-dd HH:mm:ss");
}
public static Date getEndOfDay(Date date) { public static Date getEndOfDay(Date date) {
assert date != null; assert date != null;
return new DateTime(date).withTime(23, 59, 59, 999).toDate(); return new DateTime(date).withTime(23, 59, 59, 999).toDate();
...@@ -198,6 +245,36 @@ public class CommUtil { ...@@ -198,6 +245,36 @@ public class CommUtil {
return getStringTimestamp(getNDayEndTime, "yyyy-MM-dd HH:mm:ss"); return getStringTimestamp(getNDayEndTime, "yyyy-MM-dd HH:mm:ss");
} }
/**
* 获取当前时间整点时间戳
*/
public static Long getWholeHourTimestamp(){
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
calendar.set(Calendar.MILLISECOND, 0);
Long wholeHourTimestamp = calendar.getTimeInMillis();
System.out.println("整点时间戳: " + wholeHourTimestamp);
return wholeHourTimestamp;
}
public static String getStringTimestampByStrTime(String time) {
String timestamp = null;
DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm");
java.util.Date date = null;
try {
date = df.parse(time);
} catch (ParseException e) {
e.printStackTrace();
}
Calendar cal = Calendar.getInstance();
cal.setTime(date);
long timestamp1 = cal.getTimeInMillis();
timestamp = Long.toString(timestamp1);
return timestamp;
}
//@Test //@Test
public void test() { public void test() {
...@@ -205,6 +282,16 @@ public class CommUtil { ...@@ -205,6 +282,16 @@ public class CommUtil {
System.out.println("当前时间时间戳" + oneKeyGetAddDay(0)); System.out.println("当前时间时间戳" + oneKeyGetAddDay(0));
System.out.println("****" +getNDayEndTimeTamp(0)); System.out.println("****" +getNDayEndTimeTamp(0));
}
public static void main(String[] args) {
getWholeHourTimestamp();
Date getWeekStartDayData = getStartOfDateWeek(now);//获取本周的第一天
Date getNextWeekXDayData=addNDays(getWeekStartDayData,9);
String getNextWeekXDayDataS = new SimpleDateFormat("yyyy-MM-dd").format(getNextWeekXDayData.getTime());
String startStamp = getStringTimestampByStrTime(getNextWeekXDayDataS + " " + "14:00");
System.out.println("********"+startStamp);
} }
......
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