Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
X
xm-sportstest
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
xiamai-test
xm-sportstest
Commits
3a12df92
Commit
3a12df92
authored
Jul 10, 2024
by
DuJunLi
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
增加训练营排课相关case
parent
4bf7e3ea
Hide whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
594 additions
and
18 deletions
+594
-18
src/main/java/com/xiaomai/cases/polar/schedule/camp/CampScheduleTools.java
+193
-0
src/main/java/com/xiaomai/cases/polar/schedule/camp/SelectTargetTrainingCampAndGetInfo.java
+72
-0
src/main/java/com/xiaomai/cases/polar/schedule/camp/TestCreateCampRuleSchedule.java
+78
-0
src/main/java/com/xiaomai/cases/polar/schedule/camp/TestEditCampRuleSchedule.java
+100
-0
src/main/java/com/xiaomai/cases/polar/schedule/camp/TestGetCampScheduleTable.java
+132
-0
src/main/java/com/xiaomai/cases/polar/schedule/group/TestEditGroupRuleSchedule.java
+3
-3
src/main/java/com/xiaomai/cases/polar/training/BaseCreateTrainingData.java
+2
-0
src/main/java/com/xiaomai/cases/polar/training/TestEditTraining.java
+2
-2
src/main/java/com/xiaomai/cases/polar/training/TestSearchTrainingList.java
+1
-4
src/main/java/com/xiaomai/cases/polar/training/TrainingTools.java
+11
-9
No files found.
src/main/java/com/xiaomai/cases/polar/schedule/camp/CampScheduleTools.java
0 → 100644
View file @
3a12df92
package
com
.
xiaomai
.
cases
.
polar
.
schedule
.
camp
;
import
com.alibaba.fastjson.JSONArray
;
import
com.alibaba.fastjson.JSONObject
;
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.XMBaseTest
;
import
com.xiaomai.utils.XMJSONPath
;
import
org.springframework.stereotype.Component
;
import
java.util.ArrayList
;
import
java.util.Arrays
;
import
java.util.List
;
/**
* 训练营排课相关工具类
* @author adu
* data 2024/7/9 10:19
*/
@Component
(
"campScheduleTools"
)
public
class
CampScheduleTools
extends
XMBaseTest
{
public
void
setUP
(
String
apiName
,
DataUserInfo
...
userInfo
)
{
dataApi
.
setApiModule
(
ApiModule
.
Polar_Schedule
)
.
setApiName
(
apiName
)
.
setTerminal
(
Terminal
.
B
);
super
.
beforeDataRequest
(
userInfo
);
}
/**
* 创建训练营排课
* @param campId 训练营活动ID
* @param assistCoachIds 助教ID
* @param chiefCoachId 教练ID
* @param courseId 课程ID 这个值直接从选择的训练营活动中获取
* @param minMemberNum 开课人数 这个值直接从选择的训练营活动中获取
* @param maxMemberNum 人数上线 这个值直接从选择的训练营活动中获取
* @param minuteOffset 上课开始时间 整点*60 获取这个值 24小时制
* @param startDate 开课开始时间,这个值要大于等于训练营的开营时间
* @param endDate 开课结束时间,这个值要小于等于训练营的结束时间
* @param force 排课是否冲突,有冲突时true,无冲突时传false
* @param venueAreaIds 场地ID
* @param maxLoop 上课次数,按次数时要传这个值;如果设置按日期 则传"";
* @param userInfo
*/
public
void
createCampRuleSchedule
(
String
campId
,
List
<
String
>
assistCoachIds
,
String
chiefCoachId
,
String
courseId
,
int
minMemberNum
,
int
maxMemberNum
,
String
minuteOffset
,
String
startDate
,
String
endDate
,
Boolean
force
,
List
<
String
>
venueAreaIds
,
String
maxLoop
,
DataUserInfo
...
userInfo
){
setUP
(
"API_createCampRuleSchedule"
,
userInfo
);
JSONObject
body
=
new
JSONObject
();
body
.
put
(
"operatorId"
,
dataApi
.
getLoginInfo
().
getAdminId
());
body
.
put
(
"studioId"
,
dataApi
.
getLoginInfo
().
getStudioId
());
body
.
put
(
"brandId"
,
dataApi
.
getLoginInfo
().
getBrandId
());
if
(
null
!=
maxLoop
||!
maxLoop
.
isEmpty
()){
body
.
put
(
"maxLoop"
,
maxLoop
);
}
body
.
put
(
"campId"
,
campId
);
body
.
put
(
"courseId"
,
courseId
);
body
.
put
(
"chiefCoachId"
,
chiefCoachId
);
body
.
put
(
"minMemberNum"
,
minMemberNum
);
// 开课人数
body
.
put
(
"maxMemberNum"
,
maxMemberNum
);
//人数上限
body
.
put
(
"minuteOffset"
,
minuteOffset
);
//上课开始时间
body
.
put
(
"startDate"
,
startDate
);
//排课开始日期
body
.
put
(
"endDate"
,
endDate
);
//排课结束日期
String
[]
weekDaysArray
=
{
"MONDAY"
,
"TUESDAY"
,
"WEDNESDAY"
,
"THURSDAY"
,
"FRIDAY"
,
"SATURDAY"
,
"SUNDAY"
};
List
<
String
>
weekdaysList
=
Arrays
.
asList
(
weekDaysArray
);
body
.
put
(
"weekdays"
,
weekdaysList
);
//设置上课星期,目前是每天都会选择
body
.
put
(
"venueAreaIds"
,
venueAreaIds
);
//场地,可设置为空 new ArrayList<>();
body
.
put
(
"assistCoachIds"
,
assistCoachIds
);
//设置助教,可设置为空 new ArrayList<>();
body
.
put
(
"force"
,
force
);
//是否有冲突 true,false
body
.
put
(
"enableCustomerReserve"
,
"NO"
);
//能否用户自己约课,不能
dataApi
.
doRequest
(
RequestType
.
JSON
,
dataparams
,
body
.
toString
(),
dataheadrs
).
assetsSuccess
(
true
);
}
/**
* 快速创建排课,周二,周四,周六,周日
* @param campId
* @param chiefCoachId
* @param courseId
* @param minMemberNum
* @param maxMemberNum
* @param minuteOffset
* @param endDate
* @param force
* @param maxLoop
*/
public
void
oneKeyCreateCampRuleSchedule
(
String
campId
,
String
chiefCoachId
,
String
courseId
,
int
minMemberNum
,
int
maxMemberNum
,
String
minuteOffset
,
String
endDate
,
Boolean
force
,
String
maxLoop
){
setUP
(
"API_createCampRuleSchedule"
);
JSONObject
body
=
new
JSONObject
();
body
.
put
(
"operatorId"
,
dataApi
.
getLoginInfo
().
getAdminId
());
body
.
put
(
"studioId"
,
dataApi
.
getLoginInfo
().
getStudioId
());
body
.
put
(
"brandId"
,
dataApi
.
getLoginInfo
().
getBrandId
());
if
(
null
!=
maxLoop
||!
maxLoop
.
isEmpty
()){
body
.
put
(
"maxLoop"
,
maxLoop
);
}
body
.
put
(
"campId"
,
campId
);
body
.
put
(
"courseId"
,
courseId
);
body
.
put
(
"chiefCoachId"
,
chiefCoachId
);
body
.
put
(
"minMemberNum"
,
minMemberNum
);
// 开课人数
body
.
put
(
"maxMemberNum"
,
maxMemberNum
);
//人数上限
body
.
put
(
"minuteOffset"
,
minuteOffset
);
//上课开始时间
body
.
put
(
"startDate"
,
CommUtil
.
oneKeyGetAddDay
(
3
));
//大后天,晚于开营时间1天
body
.
put
(
"endDate"
,
endDate
);
//排课结束日期,取训练营结束日期
String
[]
weekDaysArray
=
{
"TUESDAY"
,
"THURSDAY"
,
"SATURDAY"
,
"SUNDAY"
};
List
<
String
>
weekdaysList
=
Arrays
.
asList
(
weekDaysArray
);
body
.
put
(
"weekdays"
,
weekdaysList
);
//设置上课星期,目前是每天都会选择
body
.
put
(
"venueAreaIds"
,
new
ArrayList
<>());
//场地,可设置为空 new ArrayList<>();
body
.
put
(
"assistCoachIds"
,
new
ArrayList
<>());
//设置助教,可设置为空 new ArrayList<>();
body
.
put
(
"force"
,
force
);
//是否有冲突 true,false
body
.
put
(
"enableCustomerReserve"
,
"NO"
);
//能否用户自己约课,不能
dataApi
.
doRequest
(
RequestType
.
JSON
,
dataparams
,
body
.
toString
(),
dataheadrs
).
assetsSuccess
(
true
);
}
/**
* 查看训练营排课日程
* @param campId 根据训练营活动查询 ,传值时有筛选条件,""时不传该值,看了前端传值一般没筛选条件时不传,只要有一个筛选条件,其他筛选条件要传null
* @param courseId 根据课程查询
* @param coachId 根据教练查询
* @param userInfo
*/
public
void
getCampRuleScheduleList
(
String
campId
,
String
courseId
,
String
coachId
,
DataUserInfo
...
userInfo
){
setUP
(
"API_getCampRuleScheduleList"
,
userInfo
);
JSONObject
body
=
new
JSONObject
();
body
.
put
(
"operatorId"
,
dataApi
.
getLoginInfo
().
getAdminId
());
body
.
put
(
"studioId"
,
dataApi
.
getLoginInfo
().
getStudioId
());
body
.
put
(
"brandId"
,
dataApi
.
getLoginInfo
().
getBrandId
());
body
.
put
(
"coachId"
,
coachId
);
body
.
put
(
"courseId"
,
courseId
);
body
.
put
(
"campId"
,
campId
);
/* if(null!= campId && !campId.isEmpty()){
body.put("campId", campId);
}
if(null!=courseId||!courseId.isEmpty()){
body.put("courseId", courseId);
}
if(null!=coachId||!coachId.isEmpty()){
body.put("coachId", coachId);
}*/
dataApi
.
doRequest
(
RequestType
.
JSON
,
dataparams
,
body
.
toString
(),
dataheadrs
).
assetsSuccess
(
true
);
}
/**
* 删除训练营排课日程
* @param ruleId 日程对应的规则ID
*/
public
void
delCampRuleSchedule
(
String
ruleId
){
setUP
(
"API_delCampRuleSchedule"
);
JSONObject
body
=
new
JSONObject
();
body
.
put
(
"operatorId"
,
dataApi
.
getLoginInfo
().
getAdminId
());
body
.
put
(
"studioId"
,
dataApi
.
getLoginInfo
().
getStudioId
());
body
.
put
(
"brandId"
,
dataApi
.
getLoginInfo
().
getBrandId
());
body
.
put
(
"force"
,
true
);
//删除学员约课记录
body
.
put
(
"ruleId"
,
ruleId
);
dataApi
.
doRequest
(
RequestType
.
JSON
,
dataparams
,
body
.
toString
(),
dataheadrs
).
assetsSuccess
(
true
);
}
/**
* 查看训练营排课课表
* @param startDate 开始日期,如果查看的是日课表,传当前的开始日期00;如果是周课表,传的是指定周的周一开始日期
* @param endDate 结束日期 ,如果查看的是日课表,传当前的结束日期23:59:59;如果是周课表,传的是指定周的周日结束日期
* @return
*/
public
JSONArray
getCampScheduleTable
(
String
startDate
,
String
endDate
)
{
setUP
(
"API_getCampScheduleTable"
);
JSONObject
body
=
new
JSONObject
();
body
.
put
(
"operatorId"
,
dataApi
.
getLoginInfo
().
getAdminId
());
body
.
put
(
"studioId"
,
dataApi
.
getLoginInfo
().
getStudioId
());
body
.
put
(
"brandId"
,
dataApi
.
getLoginInfo
().
getBrandId
());
body
.
put
(
"startDate"
,
startDate
);
body
.
put
(
"endDate"
,
endDate
);
dataApi
.
doRequest
(
RequestType
.
JSON
,
dataparams
,
body
.
toString
(),
dataheadrs
).
assetsSuccess
(
true
);
if
(
Integer
.
valueOf
(
XMJSONPath
.
readPath
(
dataApi
.
getApi_response
(),
"$.result.totalCount"
))
>
0
)
{
return
dataApi
.
getBodyInJSON
().
getJSONObject
(
"result"
).
getJSONArray
(
"timetableGroups"
).
getJSONObject
(
0
).
getJSONArray
(
"timetableList"
);
}
else
{
return
null
;
}
}
}
\ No newline at end of file
src/main/java/com/xiaomai/cases/polar/schedule/camp/SelectTargetTrainingCampAndGetInfo.java
0 → 100644
View file @
3a12df92
package
com
.
xiaomai
.
cases
.
polar
.
schedule
.
camp
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSONObject
;
import
com.xiaomai.cases.polar.training.BaseCreateTrainingData
;
import
com.xiaomai.utils.CommUtil
;
import
com.xiaomai.utils.RandomStringUtil
;
import
com.xiaomai.utils.XMJSONPath
;
import
org.testng.Assert
;
import
org.testng.annotations.BeforeClass
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.stream.Collectors
;
/**
* @author adu
* data 2024/7/9 16:35
*/
public
class
SelectTargetTrainingCampAndGetInfo
extends
BaseCreateTrainingData
{
//训练营活动ID
public
String
id
=
""
;
public
String
title
=
"三墩小学足球2期训练营"
+
RandomStringUtil
.
randomString
(
6
);
public
String
openEndDate
=
CommUtil
.
getNDayEndTimeTamp
(
42
);
// 23:59:59,从开始到结束一共40天
public
List
<
JSONObject
>
campInfo
=
new
ArrayList
<>();
@BeforeClass
public
void
beforeTest
()
{
super
.
beforeTest
();
//创建训练营活动
id
=
this
.
getTrainingTools
().
createThenPublishTraining
(
this
.
getApplyStartTime
(),
this
.
getApplyEndTime
(),
this
.
getCourseId
(),
this
.
getOpenStartDate
(),
openEndDate
,
3200.00
,
title
,
40
,
1
,
this
.
getTrainerListIdS
(),
"YES"
);
//根据训练营名称查询训练营信息
List
<
String
>
status
=
new
ArrayList
<>();
//训练营排课时选择以下4种状态的活动
status
.
add
(
"APPLY_NOT_START"
);
//报名未开始
status
.
add
(
"APPLYING"
);
//报名中
status
.
add
(
"TO_BE_OPEN"
);
//待开营
status
.
add
(
"OPENING"
);
//进行中
this
.
getTrainingTools
().
searchTrainingList
(
""
,
title
,
status
);
Assert
.
assertTrue
(
XMJSONPath
.
getJSONArrayByReadPath
(
dataApi
.
getApi_response
(),
"$.result.records"
).
size
()
==
1
,
"精确查询训练营名称,没查到数据"
);
campInfo
=
JSON
.
parseObject
(
dataApi
.
getApi_response
()).
getJSONObject
(
"result"
).
getJSONArray
(
"records"
).
stream
()
.
map
(
obj
->
{
JSONObject
group
=
(
JSONObject
)
obj
;
return
new
JSONObject
()
.
fluentPut
(
"id"
,
group
.
getString
(
"id"
))
.
fluentPut
(
"courseId"
,
group
.
getString
(
"courseId"
))
.
fluentPut
(
"openStartDate"
,
group
.
getString
(
"openStartDate"
))
.
fluentPut
(
"openEndDate"
,
group
.
getString
(
"openEndDate"
))
.
fluentPut
(
"traineeLowerLimit"
,
group
.
getIntValue
(
"traineeLowerLimit"
))
.
fluentPut
(
"traineeUpperLimit"
,
group
.
getIntValue
(
"traineeUpperLimit"
))
.
fluentPut
(
"totalClassHour"
,
group
.
getIntValue
(
"totalClassHour"
))
.
fluentPut
(
"trainerList"
,
group
.
getJSONArray
(
"trainerList"
).
toJavaList
(
JSONObject
.
class
).
stream
()
.
map
(
trainers
->
{
return
new
JSONObject
()
.
fluentPut
(
"id"
,
trainers
.
getString
(
"id"
))
.
fluentPut
(
"nickName"
,
trainers
.
getString
(
"nickName"
));
}).
collect
(
Collectors
.
toList
())
);
})
.
collect
(
Collectors
.
toList
());
}
}
\ No newline at end of file
src/main/java/com/xiaomai/cases/polar/schedule/camp/TestCreateCampRuleSchedule.java
0 → 100644
View file @
3a12df92
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.BeforeClass
;
import
org.testng.annotations.Test
;
import
javax.annotation.Resource
;
import
java.util.List
;
import
java.util.stream.Collectors
;
/**
* 创建训练营排课
*
* @author adu
* data 2024/7/9 14:49
*/
public
class
TestCreateCampRuleSchedule
extends
SelectTargetTrainingCampAndGetInfo
{
@Resource
(
name
=
"campScheduleTools"
)
CampScheduleTools
campScheduleTools
;
@Resource
(
name
=
"groupScheduleTools"
)
GroupScheduleTools
groupScheduleTools
;
String
ruldId
=
""
;
@BeforeClass
public
void
beforeTest
()
{
setTestInfo
(
ApiModule
.
Polar_Schedule
,
"API_createCampRuleSchedule"
,
LoginAccount
.
ADU_PROD
,
Terminal
.
B
,
"adu"
);
super
.
beforeTest
();
}
@Test
(
description
=
"创建训练营排课日程"
)
public
void
testCreateCampRuleSchedule
()
{
System
.
out
.
println
(
"*********************"
+
campInfo
);
//从训练营活动中获取教练信息
String
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
);
System
.
out
.
println
(
id
);
//从训练营活动中获取助教信息
List
<
String
>
assistCoachIds
=
campInfo
.
get
(
0
).
getJSONArray
(
"trainerList"
).
toJavaList
(
JSONObject
.
class
).
stream
().
filter
(
e
->
{
return
!
"杜君丽"
.
equals
(
e
.
getString
(
"nickName"
));
}).
map
(
e
->
e
.
getString
(
"id"
)).
collect
(
Collectors
.
toList
());
//获取存量场地
List
<
String
>
venueAreaIds
=
groupScheduleTools
.
getStockArea
(
"流星花园秘密基地"
);
String
campId
=
campInfo
.
get
(
0
).
getString
(
"id"
);
//创建训练营排课
campScheduleTools
.
createCampRuleSchedule
(
campId
,
assistCoachIds
,
chiefCoachId
,
campInfo
.
get
(
0
).
getString
(
"courseId"
),
campInfo
.
get
(
0
).
getIntValue
(
"traineeLowerLimit"
),
campInfo
.
get
(
0
).
getIntValue
(
"traineeUpperLimit"
),
"1020"
,
campInfo
.
get
(
0
).
getString
(
"openStartDate"
),
campInfo
.
get
(
0
).
getString
(
"openEndDate"
),
true
,
venueAreaIds
,
""
);
//查询排课日程:根据训练营和教练(其中一个助教)查询
campScheduleTools
.
getCampRuleScheduleList
(
campId
,
null
,
assistCoachIds
.
get
(
0
).
toString
());
Assert
.
assertTrue
(
XMJSONPath
.
getJSONArrayByReadPath
(
dataApi
.
getApi_response
(),
"$.result"
).
size
()==
1
,
"排课创建成功后,日程中没查询到对应数据"
);
ruldId
=
XMJSONPath
.
getJSONArrayByReadPath
(
dataApi
.
getApi_response
(),
"$.result"
).
getJSONObject
(
0
).
getString
(
"ruleId"
);
}
@AfterClass
(
description
=
"删除此case创建的训练营排课日程"
)
public
void
delData
()
{
if
(
null
!=
ruldId
||!
ruldId
.
isEmpty
())
{
campScheduleTools
.
delCampRuleSchedule
(
ruldId
);
}
}
}
\ No newline at end of file
src/main/java/com/xiaomai/cases/polar/schedule/camp/TestEditCampRuleSchedule.java
0 → 100644
View file @
3a12df92
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.RequestType
;
import
com.xiaomai.enums.Terminal
;
import
com.xiaomai.utils.CommUtil
;
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
;
import
java.util.stream.Collectors
;
/**
* 编辑训练营排课规则
*
* @author adu
* data 2024/7/10 17:46
*/
public
class
TestEditCampRuleSchedule
extends
SelectTargetTrainingCampAndGetInfo
{
@Resource
(
name
=
"groupScheduleTools"
)
GroupScheduleTools
groupScheduleTools
;
@Resource
(
name
=
"campScheduleTools"
)
CampScheduleTools
campScheduleTools
;
String
campId
=
""
;
String
chiefCoachId
=
""
;
String
ruldId
=
""
;
@BeforeClass
public
void
beforeTest
()
{
setTestInfo
(
ApiModule
.
Polar_Schedule
,
"API_editCampRuleSchedule"
,
LoginAccount
.
ADU_PROD
,
Terminal
.
B
,
"adu"
);
super
.
beforeTest
();
}
@Test
(
description
=
"编辑训练营排课规则"
)
public
void
testEditCampRuleSchedule
()
{
//获取选择的训练营ID
campId
=
campInfo
.
get
(
0
).
getString
(
"id"
);
//获取训练营活动的指定教练ID
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
);
//从训练营活动中获取助教信息
List
<
String
>
assistCoachIds
=
campInfo
.
get
(
0
).
getJSONArray
(
"trainerList"
).
toJavaList
(
JSONObject
.
class
).
stream
().
filter
(
e
->
{
return
!
"杜君丽"
.
equals
(
e
.
getString
(
"nickName"
));
}).
map
(
e
->
e
.
getString
(
"id"
)).
collect
(
Collectors
.
toList
());
//创建训练营排课:按日期
campScheduleTools
.
oneKeyCreateCampRuleSchedule
(
campId
,
chiefCoachId
,
campInfo
.
get
(
0
).
getString
(
"courseId"
),
campInfo
.
get
(
0
).
getIntValue
(
"traineeLowerLimit"
),
campInfo
.
get
(
0
).
getIntValue
(
"traineeUpperLimit"
),
"1140"
,
campInfo
.
get
(
0
).
getString
(
"openEndDate"
),
true
,
""
);
//查询排课日程:根据训练营和教练查询
campScheduleTools
.
getCampRuleScheduleList
(
campId
,
""
,
chiefCoachId
);
Assert
.
assertTrue
(
XMJSONPath
.
getJSONArrayByReadPath
(
dataApi
.
getApi_response
(),
"$.result"
).
size
()
==
1
,
"排课创建成功后,日程中没查询到对应数据"
);
ruldId
=
XMJSONPath
.
getJSONArrayByReadPath
(
dataApi
.
getApi_response
(),
"$.result"
).
getJSONObject
(
0
).
getString
(
"ruleId"
);
//编辑训练营排课日程
JSONObject
body
=
new
JSONObject
();
body
.
put
(
"operatorId"
,
xmAppApi
.
getLoginInfo
().
getAdminId
());
body
.
put
(
"studioId"
,
xmAppApi
.
getLoginInfo
().
getStudioId
());
body
.
put
(
"brandId"
,
xmAppApi
.
getLoginInfo
().
getBrandId
());
chiefCoachId
=
assistCoachIds
.
get
(
0
).
toString
();
body
.
put
(
"chiefCoachId"
,
chiefCoachId
);
//修改教练换人
body
.
put
(
"minMemberNum"
,
campInfo
.
get
(
0
).
getIntValue
(
"traineeLowerLimit"
));
body
.
put
(
"maxMemberNum"
,
campInfo
.
get
(
0
).
getIntValue
(
"traineeUpperLimit"
));
body
.
put
(
"minuteOffset"
,
"1320"
);
List
<
String
>
venueAreaIds
=
groupScheduleTools
.
getStockArea
(
"流星花园秘密基地"
);
body
.
put
(
"venueAreaIds"
,
venueAreaIds
);
//有空改为有数据
List
<
String
>
assistTrainer
=
new
ArrayList
<>();
assistTrainer
.
add
(
assistCoachIds
.
get
(
1
).
toString
());
body
.
put
(
"assistCoachIds"
,
assistTrainer
);
//空改成有数据
body
.
put
(
"ruleId"
,
ruldId
);
body
.
put
(
"spanMinutes"
,
50
);
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
);
//查询训练营日程详情,check修改项是否被同步修改todo
//校验总课时数是否同步变更todo
}
}
\ No newline at end of file
src/main/java/com/xiaomai/cases/polar/schedule/camp/TestGetCampScheduleTable.java
0 → 100644
View file @
3a12df92
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.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.DataProvider
;
import
org.testng.annotations.Test
;
import
javax.annotation.Resource
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.stream.Collectors
;
/**
* 测试获取训练营排课课表
*
* @author adu
* data 2024/7/10 10:11
*/
public
class
TestGetCampScheduleTable
extends
SelectTargetTrainingCampAndGetInfo
{
@Resource
(
name
=
"groupScheduleTools"
)
GroupScheduleTools
groupScheduleTools
;
@Resource
(
name
=
"campScheduleTools"
)
CampScheduleTools
campScheduleTools
;
List
<
String
>
venueAreaIds
;
String
venueAreaId
=
""
;
String
campId
=
""
;
String
chiefCoachId
=
""
;
String
ruldId
=
""
;
@BeforeClass
public
void
beforeTest
()
{
setTestInfo
(
ApiModule
.
Polar_Schedule
,
"API_getCampScheduleTable"
,
LoginAccount
.
ADU_PROD
,
Terminal
.
B
,
"adu"
);
super
.
beforeTest
();
venueAreaIds
=
groupScheduleTools
.
getStockArea
(
"流星花园秘密基地"
);
venueAreaId
=
venueAreaIds
.
get
(
0
).
toString
();
campId
=
campInfo
.
get
(
0
).
getString
(
"id"
);
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
);
//从训练营活动中获取助教信息
List
<
String
>
assistCoachIds
=
campInfo
.
get
(
0
).
getJSONArray
(
"trainerList"
).
toJavaList
(
JSONObject
.
class
).
stream
().
filter
(
e
->
{
return
!
"杜君丽"
.
equals
(
e
.
getString
(
"nickName"
));
}).
map
(
e
->
e
.
getString
(
"id"
)).
collect
(
Collectors
.
toList
());
//创建训练营排课:按次数
campScheduleTools
.
createCampRuleSchedule
(
campId
,
assistCoachIds
,
chiefCoachId
,
campInfo
.
get
(
0
).
getString
(
"courseId"
),
campInfo
.
get
(
0
).
getIntValue
(
"traineeLowerLimit"
),
campInfo
.
get
(
0
).
getIntValue
(
"traineeUpperLimit"
),
"1020"
,
campInfo
.
get
(
0
).
getString
(
"openStartDate"
),
campInfo
.
get
(
0
).
getString
(
"openEndDate"
),
true
,
venueAreaIds
,
"20"
);
//查询排课日程:根据训练营和教练,关联课程查询
campScheduleTools
.
getCampRuleScheduleList
(
campId
,
campInfo
.
get
(
0
).
getString
(
"courseId"
),
chiefCoachId
);
Assert
.
assertTrue
(
XMJSONPath
.
getJSONArrayByReadPath
(
dataApi
.
getApi_response
(),
"$.result"
).
size
()==
1
,
"排课创建成功后,日程中没查询到对应数据"
);
ruldId
=
XMJSONPath
.
getJSONArrayByReadPath
(
dataApi
.
getApi_response
(),
"$.result"
).
getJSONObject
(
0
).
getString
(
"ruleId"
);
}
@DataProvider
(
name
=
"filterCampScheduleTableDateByCondition"
)
public
Object
[][]
dataProvider
()
{
//组装已上课课次状态
List
<
String
>
doneStatus
=
new
ArrayList
<>();
doneStatus
.
add
(
"IN_PROGRESS"
);
doneStatus
.
add
(
"DONE"
);
//组装待上课课次状态
List
<
String
>
todoStatus
=
new
ArrayList
<>();
todoStatus
.
add
(
"TODO"
);
return
new
Object
[][]{
{
""
,
""
,
new
ArrayList
<>(),
""
,
1
},
//无筛选条件
{
campId
,
""
,
new
ArrayList
<>(),
""
,
1
},
//根据训练营搜索
{
campId
,
chiefCoachId
,
new
ArrayList
<>(),
""
,
1
},
//根据训练营和主教练
{
campId
,
chiefCoachId
,
todoStatus
,
""
,
1
},
//根据训练营,教练,待上课
{
campId
,
chiefCoachId
,
todoStatus
,
venueAreaId
,
1
},
//根据训练营,教练,待上课,场地
{
campId
,
chiefCoachId
,
doneStatus
,
""
,
0
},
//根据训练营,教练,已上课
{
""
,
""
,
todoStatus
,
""
,
1
},
//根据课次状态:待上课
{
""
,
""
,
doneStatus
,
""
,
0
},
//根据课次状态已上课["IN_PROGRESS", "DONE"]
{
campId
,
""
,
todoStatus
,
""
,
1
},
//根据训练营名称和课次待上课
{
campId
,
""
,
doneStatus
,
""
,
0
},
//根据训练营名称和课次已上课
{
""
,
chiefCoachId
,
new
ArrayList
<>(),
""
,
1
},
//根据主教练
{
""
,
chiefCoachId
,
todoStatus
,
""
,
1
},
//教练和上课状态待上课
{
""
,
chiefCoachId
,
doneStatus
,
""
,
0
},
//教练和上课状态已上课
{
""
,
""
,
new
ArrayList
<>(),
venueAreaId
,
1
},
// 场地
{
campId
,
""
,
new
ArrayList
<>(),
venueAreaId
,
1
},
// 场地和训练营名称
{
""
,
chiefCoachId
,
new
ArrayList
<>(),
venueAreaId
,
1
},
// 场地和教练
{
""
,
""
,
todoStatus
,
venueAreaId
,
1
},
// 场地和待上课课次
{
""
,
""
,
doneStatus
,
venueAreaId
,
0
},
// 场地和已上课课次
{
campId
,
chiefCoachId
,
new
ArrayList
<>(),
venueAreaId
,
1
},
// 场地,训练营,教练
};
}
@Test
(
description
=
"查看训练营课表"
,
dataProvider
=
"filterCampScheduleTableDateByCondition"
)
public
void
testGetCampScheduleTable
(
String
campId
,
String
coachId
,
List
<
String
>
statusSet
,
String
venueAreaId
,
int
total
)
{
JSONObject
body
=
new
JSONObject
();
body
.
put
(
"operatorId"
,
dataApi
.
getLoginInfo
().
getAdminId
());
body
.
put
(
"studioId"
,
dataApi
.
getLoginInfo
().
getStudioId
());
body
.
put
(
"brandId"
,
dataApi
.
getLoginInfo
().
getBrandId
());
//下周课表
body
.
put
(
"startDate"
,
CommUtil
.
oneKeyGetNextWeekStartDay
());
body
.
put
(
"endDate"
,
CommUtil
.
oneKeyGetNextWeekEndDay
());
body
.
put
(
"campId"
,
campId
);
body
.
put
(
"coachId"
,
coachId
);
body
.
put
(
"statusSet"
,
statusSet
);
body
.
put
(
"venueAreaId"
,
venueAreaId
);
xmAppApi
.
doRequest
(
RequestType
.
JSON
,
params
,
body
.
toString
(),
headers
).
assetsSuccess
(
true
);
int
resultCount
=
Integer
.
parseInt
(
XMJSONPath
.
readPath
(
xmAppApi
.
getApi_response
(),
"$.result.totalCount"
));
Assert
.
assertTrue
(
resultCount
>=
total
,
"查询到的课表数据和预期不一致"
);
}
@AfterClass
(
description
=
"删除此case创建的训练营排课日程"
)
public
void
delData
()
{
if
(
null
!=
ruldId
||!
ruldId
.
isEmpty
())
{
campScheduleTools
.
delCampRuleSchedule
(
ruldId
);
}
}
}
\ No newline at end of file
src/main/java/com/xiaomai/cases/polar/schedule/group/TestEditGroupRuleSchedule.java
View file @
3a12df92
...
...
@@ -70,9 +70,9 @@ public class TestEditGroupRuleSchedule extends BaseTestImpl {
String
ruldId
=
XMJSONPath
.
readPath
(
result
.
getJSONObject
(
0
),
"$.ruleId"
);
//3-编辑排课日程
JSONObject
body
=
new
JSONObject
();
body
.
put
(
"operatorId"
,
data
Api
.
getLoginInfo
().
getAdminId
());
body
.
put
(
"studioId"
,
data
Api
.
getLoginInfo
().
getStudioId
());
body
.
put
(
"brandId"
,
data
Api
.
getLoginInfo
().
getBrandId
());
body
.
put
(
"operatorId"
,
xmApp
Api
.
getLoginInfo
().
getAdminId
());
body
.
put
(
"studioId"
,
xmApp
Api
.
getLoginInfo
().
getStudioId
());
body
.
put
(
"brandId"
,
xmApp
Api
.
getLoginInfo
().
getBrandId
());
body
.
put
(
"chiefCoachId"
,
chiefCoachIdS
);
body
.
put
(
"minMemberNum"
,
5
);
//改变了有2->5
body
.
put
(
"maxMemberNum"
,
20
);
//改变了999->20
...
...
src/main/java/com/xiaomai/cases/polar/training/BaseCreateTrainingData.java
View file @
3a12df92
...
...
@@ -6,6 +6,7 @@ import com.xiaomai.cases.polar.schedule.group.GroupScheduleTools;
import
com.xiaomai.cases.polar.setting.courseCategory.CourseCategoryTools
;
import
com.xiaomai.utils.CommUtil
;
import
com.xiaomai.utils.XMJSONPath
;
import
lombok.Getter
;
import
org.testng.annotations.BeforeClass
;
import
javax.annotation.Resource
;
...
...
@@ -17,6 +18,7 @@ import java.util.List;
* data 2024/7/3 19:44
*/
@Getter
public
class
BaseCreateTrainingData
extends
BaseTestImpl
{
@Resource
(
name
=
"trainingTools"
)
TrainingTools
trainingTools
;
...
...
src/main/java/com/xiaomai/cases/polar/training/TestEditTraining.java
View file @
3a12df92
...
...
@@ -86,12 +86,12 @@ public class TestEditTraining extends BaseCreateTrainingData {
@Test
(
description
=
"编辑已发布训练营活动"
)
public
void
editPublishTraining
()
{
//1.查询关联对应课程的活动数据
trainingTools
.
searchTrainingList
(
courseId
,
new
ArrayList
<>());
trainingTools
.
searchTrainingList
(
courseId
,
""
,
new
ArrayList
<>());
int
listCountBefore
=
XMJSONPath
.
getJSONArrayByReadPath
(
dataApi
.
getApi_response
(),
"$.result.records"
).
size
();
//2.创建已发布的训练营活动
oneKeytTrainingId
=
trainingTools
.
oneKeyCreateTraining
(
courseId
,
trainerListIdS
);
//3.列表搜索数据check
trainingTools
.
searchTrainingList
(
courseId
,
new
ArrayList
<>());
trainingTools
.
searchTrainingList
(
courseId
,
""
,
new
ArrayList
<>());
int
listCountAfter
=
XMJSONPath
.
getJSONArrayByReadPath
(
dataApi
.
getApi_response
(),
"$.result.records"
).
size
();
Assert
.
assertEquals
(
listCountAfter
,
(
listCountBefore
+
1
),
"训练营活动创建成功列表数据没增加"
);
JSONObject
goalObject
=
XMJSONPath
.
getJSONObjectByReadPath
(
dataApi
.
getApi_response
(),
"$.result.records[0]"
);
...
...
src/main/java/com/xiaomai/cases/polar/training/TestSearchTrainingList.java
View file @
3a12df92
...
...
@@ -57,7 +57,7 @@ public class TestSearchTrainingList extends BaseCreateTrainingData {
return
new
Object
[][]{
{
""
,
""
,
new
ArrayList
<>()},
//无筛选条件
{
courseId
,
""
,
new
ArrayList
<>()},
//根据关联课程搜索
{
""
,
"杭州自动化测试训练营"
,
statu8
},
//根据训练营名称搜索
{
""
,
"杭州自动化测试训练营
A
"
,
statu8
},
//根据训练营名称搜索
{
""
,
""
,
statu1
},
//根据训练营状态(未发布)搜索
{
""
,
""
,
statu2
},
//根据训练营状态(报名未开始)搜索
{
""
,
""
,
statu3
},
//根据训练营状态(报名中)搜索
...
...
@@ -89,9 +89,6 @@ public class TestSearchTrainingList extends BaseCreateTrainingData {
//有存量数据,理论上每个查询都会至少有1条数据
Assert
.
assertTrue
(
XMJSONPath
.
getJSONArrayByReadPath
(
xmAppApi
.
getApi_response
(),
"$.result.records"
).
size
()>=
1
,
"没有搜索到相关数据"
);
}
}
src/main/java/com/xiaomai/cases/polar/training/TrainingTools.java
View file @
3a12df92
...
...
@@ -24,8 +24,8 @@ import java.util.List;
public
class
TrainingTools
extends
XMBaseTest
{
String
applyStartTime1
=
String
.
valueOf
(
CommUtil
.
getWholeHourTimestamp
());
//当前时间的整点
String
applyEndTime1
=
CommUtil
.
oneKeyGetAddDay
(
1
);
//明天0点
String
openStartDate
1
=
applyEndTime1
;
String
openEndDate
1
=
CommUtil
.
getNDayEndTimeTamp
(
2
);
//后天23:59:59
String
openStartDate
0
=
applyEndTime1
;
String
openEndDate
0
=
CommUtil
.
getNDayEndTimeTamp
(
2
);
//后天23:59:59
long
currentTimestamp
=
System
.
currentTimeMillis
();
// 在当前时间的基础上,加上5秒(5000毫秒)
...
...
@@ -115,8 +115,8 @@ public class TrainingTools extends XMBaseTest {
body
.
put
(
"applyStartTime"
,
futureTimestampS
);
//报名开始时间,晚于当前时间5秒
body
.
put
(
"courseId"
,
courseId
);
//关联课程ID
body
.
put
(
"creatorId"
,
dataApi
.
getLoginInfo
().
getAdminId
());
// 创建人即操作者
body
.
put
(
"openEndDate"
,
openEndDate
1
);
//开营结束时间
body
.
put
(
"openStartDate"
,
openStartDate
1
);
//开营开始时间
body
.
put
(
"openEndDate"
,
openEndDate
0
);
//开营结束时间
body
.
put
(
"openStartDate"
,
openStartDate
0
);
//开营开始时间
body
.
put
(
"price"
,
0
);
//售卖价格
body
.
put
(
"surfaceUrl"
,
"https://xiaomai-res.oss-cn-hangzhou.aliyuncs.com/xmfit/course_cover/training_camp_0.png"
);
// 默认活动封面图
body
.
put
(
"title"
,
trainingTitle
);
...
...
@@ -151,8 +151,8 @@ public class TrainingTools extends XMBaseTest {
body
.
put
(
"applyStartTime"
,
applyStartTime1
);
//报名开始时间
body
.
put
(
"courseId"
,
courseId
);
//关联课程ID
body
.
put
(
"creatorId"
,
dataApi
.
getLoginInfo
().
getAdminId
());
// 创建人即操作者
body
.
put
(
"openEndDate"
,
openEndDate
1
);
//开营开始时间
body
.
put
(
"openStartDate"
,
openStartDate
1
);
//开营结束时间
body
.
put
(
"openEndDate"
,
openEndDate
0
);
//开营开始时间
body
.
put
(
"openStartDate"
,
openStartDate
0
);
//开营结束时间
body
.
put
(
"price"
,
0.01
);
//售卖价格
body
.
put
(
"surfaceUrl"
,
"https://xiaomai-res.oss-cn-hangzhou.aliyuncs.com/xmfit/course_cover/training_camp_0.png"
);
// 默认活动封面图
body
.
put
(
"title"
,
title
);
// 训练营活动名称:"杭州自动化测试训练营-未发布"
...
...
@@ -215,7 +215,7 @@ public class TrainingTools extends XMBaseTest {
* 已结束:CLOSED
* 已取消:CANCEL
*/
public
void
searchTrainingList
(
String
courseId
,
List
<
String
>
stateList
)
{
public
void
searchTrainingList
(
String
courseId
,
String
trainingName
,
List
<
String
>
stateList
)
{
setUP
(
"API_searchTrainingList"
);
JSONObject
body
=
new
JSONObject
();
body
.
put
(
"operatorId"
,
dataApi
.
getLoginInfo
().
getAdminId
());
...
...
@@ -225,6 +225,10 @@ public class TrainingTools extends XMBaseTest {
body
.
put
(
"size"
,
20
);
body
.
put
(
"courseId"
,
courseId
);
body
.
put
(
"stateList"
,
stateList
);
if
(!
trainingName
.
isEmpty
())
{
body
.
put
(
"title"
,
trainingName
);
}
dataApi
.
doRequest
(
RequestType
.
JSON
,
dataparams
,
body
.
toString
(),
dataheadrs
).
assetsSuccess
(
true
);
}
...
...
@@ -264,4 +268,3 @@ public class TrainingTools extends XMBaseTest {
}
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment