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
840f8c68
Commit
840f8c68
authored
Jul 29, 2024
by
xuyamei
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
增加一对多私教课约课及删除课程
parent
12635d76
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
253 additions
and
5 deletions
+253
-5
src/main/java/com/xiaomai/cases/polar/clue/MemberTools.java
+1
-1
src/main/java/com/xiaomai/cases/polar/reserve/ReserveTools.java
+21
-0
src/main/java/com/xiaomai/cases/polar/reserve/personal/TestReservePerson.java
+231
-4
No files found.
src/main/java/com/xiaomai/cases/polar/clue/MemberTools.java
View file @
840f8c68
...
@@ -30,7 +30,7 @@ public class MemberTools extends BaseTestImpl {
...
@@ -30,7 +30,7 @@ public class MemberTools extends BaseTestImpl {
super
.
beforeDataRequest
(
userInfos
);
super
.
beforeDataRequest
(
userInfos
);
Random
random
=
new
Random
();
Random
random
=
new
Random
();
String
[]
idCardType
=
{
"IDENTITY"
,
"SAR_PERMIT"
,
"
idCardType
"
};
//身份证、港澳通行证、护照
String
[]
idCardType
=
{
"IDENTITY"
,
"SAR_PERMIT"
,
"
PASSPORT
"
};
//身份证、港澳通行证、护照
String
[]
intention
=
{
"HIGH"
,
"MIDDLE"
,
"LOW"
};
//意向度:高、中、低
String
[]
intention
=
{
"HIGH"
,
"MIDDLE"
,
"LOW"
};
//意向度:高、中、低
JSONObject
object
=
new
JSONObject
();
JSONObject
object
=
new
JSONObject
();
...
...
src/main/java/com/xiaomai/cases/polar/reserve/ReserveTools.java
View file @
840f8c68
...
@@ -646,4 +646,25 @@ public class ReserveTools extends XMBaseTest {
...
@@ -646,4 +646,25 @@ public class ReserveTools extends XMBaseTest {
}
}
}
}
/**
* @description:删除私教课次
* @author: xuyamei
* @date: 2024/7/29 16:13
* @param scheduleId : 课次id
* @return: void
**/
public
void
delPersonalScheduleItem
(
String
scheduleId
){
setUp
(
"API_delPersonalScheduleItem"
);
JSONObject
body
=
new
JSONObject
();
body
.
put
(
"operatorId"
,
dataApi
.
getLoginInfo
().
getAdminId
());
body
.
put
(
"studioId"
,
dataApi
.
getLoginInfo
().
getStudioId
());
body
.
put
(
"brandId"
,
dataApi
.
getLoginInfo
().
getBrandId
());
body
.
put
(
"scheduleId"
,
scheduleId
);
body
.
put
(
"applyRestRule"
,
false
);
dataApi
.
doRequest
(
RequestType
.
JSON
,
dataparams
,
body
.
toString
(),
dataheadrs
).
assetsSuccess
(
true
);
}
}
}
src/main/java/com/xiaomai/cases/polar/reserve/personal/TestReservePerson.java
View file @
840f8c68
...
@@ -32,7 +32,7 @@ import java.util.Random;
...
@@ -32,7 +32,7 @@ import java.util.Random;
* @BelongsPackage: com.xiaomai.cases.polar.reserve.personal
* @BelongsPackage: com.xiaomai.cases.polar.reserve.personal
* @Author: xuyamei
* @Author: xuyamei
* @CreateTime: 2024-07-26 16:25
* @CreateTime: 2024-07-26 16:25
* @Description: 一对一私教课预约
* @Description: 一对一
和一对多
私教课预约
* @Version: 1.0
* @Version: 1.0
*/
*/
public
class
TestReservePerson
extends
BaseTestImpl
{
public
class
TestReservePerson
extends
BaseTestImpl
{
...
@@ -69,6 +69,9 @@ public class TestReservePerson extends BaseTestImpl {
...
@@ -69,6 +69,9 @@ public class TestReservePerson extends BaseTestImpl {
private
String
coachedId
;
private
String
coachedId
;
private
String
memberCardId
;
private
String
memberCardId
;
private
String
reserveId
;
private
String
reserveId
;
JSONArray
member2
=
new
JSONArray
();
JSONArray
member1
=
new
JSONArray
();
@BeforeClass
@BeforeClass
@Override
@Override
public
void
beforeTest
()
{
public
void
beforeTest
()
{
...
@@ -78,8 +81,7 @@ public class TestReservePerson extends BaseTestImpl {
...
@@ -78,8 +81,7 @@ public class TestReservePerson extends BaseTestImpl {
@Test
@Test
public
void
public
void
testReservePerson
(){
testReservePerson
(){
// 第一步:查询存量的约课课程
// 第一步:查询存量的约课课程
// 查询存量的课程分类
// 查询存量的课程分类
String
categoryId
=
courseCategoryTools
.
getCourseCategoryPage
(
"瑜伽"
);
String
categoryId
=
courseCategoryTools
.
getCourseCategoryPage
(
"瑜伽"
);
...
@@ -153,7 +155,6 @@ public class TestReservePerson extends BaseTestImpl {
...
@@ -153,7 +155,6 @@ public class TestReservePerson extends BaseTestImpl {
// 从课表查询scheduleId
// 从课表查询scheduleId
JSONArray
personalScheduleTable
=
reserveTools
.
getPersonalScheduleTable
(
timestamp
,
TimeUtils
.
getTodayEndTime
(),
courseId
);
JSONArray
personalScheduleTable
=
reserveTools
.
getPersonalScheduleTable
(
timestamp
,
TimeUtils
.
getTodayEndTime
(),
courseId
);
for
(
int
i
=
0
;
i
<
personalScheduleTable
.
size
();
i
++){
for
(
int
i
=
0
;
i
<
personalScheduleTable
.
size
();
i
++){
System
.
out
.
println
(
"personalScheduleTable.getJSONObject(i).getString(\"startTime\").equals(String.valueOf(timestamp)):"
+
personalScheduleTable
.
getJSONObject
(
i
).
getString
(
"startTime"
).
equals
(
String
.
valueOf
(
timestamp
)));
if
(
personalScheduleTable
.
getJSONObject
(
i
).
getString
(
"startTime"
).
equals
(
String
.
valueOf
(
timestamp
))){
if
(
personalScheduleTable
.
getJSONObject
(
i
).
getString
(
"startTime"
).
equals
(
String
.
valueOf
(
timestamp
))){
scheduleId
=
personalScheduleTable
.
getJSONObject
(
i
).
getString
(
"scheduleId"
);
scheduleId
=
personalScheduleTable
.
getJSONObject
(
i
).
getString
(
"scheduleId"
);
break
;
break
;
...
@@ -271,6 +272,232 @@ public class TestReservePerson extends BaseTestImpl {
...
@@ -271,6 +272,232 @@ public class TestReservePerson extends BaseTestImpl {
}
}
@Test
(
description
=
"预约1VN课次,其他学员可再次进行预约"
,
priority
=
2
)
public
void
testReservePerson_1VN
()
{
// 第一步:查询存量的约课课程
// 查询存量的课程分类
String
categoryId
=
courseCategoryTools
.
getCourseCategoryPage
(
"瑜伽"
);
courseId
=
courseTools
.
getPersonalOrGroupCourseId
(
"PERSONAL"
,
"普拉提器械1V3私教课程"
,
categoryId
,
"STUDIO"
,
"ONE_TO_MANY"
,
3
,
1
).
getString
(
0
);
String
courseName
=
courseTools
.
getPersonalOrGroupCourseId
(
"PERSONAL"
,
"普拉提器械1V3私教课程"
,
categoryId
,
"STUDIO"
,
"ONE_TO_MANY"
,
3
,
1
).
getString
(
1
);
try
{
Thread
.
sleep
(
1000
);
}
catch
(
InterruptedException
e
)
{
throw
new
RuntimeException
(
e
);
}
// 第二步:查询存量的学员,如果没有则新建
member1
=
createMember
(
"1V3私教约课学员李萌"
);
// 第三步:查询存量的私教教练,并将教练添加到课程中
// 获取到员工
// 获取教练列表
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"
);
// 编辑私教课程教练添加到课程中
courseTools
.
editPersonalCourse
(
categoryId
,
courseId
,
courseName
,
10
,
coachedId
,
"3"
);
// 第四步:创建私教特殊可约时间
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"
,
60
);
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
personalCoachTime
=
reserveTools
.
getPersonalTimeBlocks
(
coachedId
,
courseId
,
TimeUtils
.
getTodayTime
());
// 获取当前日期的Calendar实例
Calendar
calendar
=
Calendar
.
getInstance
();
// 获取第一条的步长 转换成时间戳
int
minuteOffset
=
personalCoachTime
.
getJSONObject
(
0
).
getIntValue
(
"minuteOffset"
)/
60
;
calendar
.
set
(
Calendar
.
HOUR_OF_DAY
,
minuteOffset
);
calendar
.
set
(
Calendar
.
MINUTE
,
0
);
calendar
.
set
(
Calendar
.
SECOND
,
0
);
calendar
.
set
(
Calendar
.
MILLISECOND
,
0
);
// 将Calendar对象转换为时间戳
timestamp
=
calendar
.
getTimeInMillis
();
// 李萌预约生成课次
reserveId
=
reserveTools
.
addPersonalReserve
(
""
,
courseId
,
coachedId
,
memberId
,
benefitId
,
10
,
1
,
""
,
timestamp
,
true
);
member1
.
add
(
reserveId
);
try
{
Thread
.
sleep
(
2000
);
}
catch
(
InterruptedException
e
)
{
throw
new
RuntimeException
(
e
);
}
// 从课表查询scheduleId
JSONArray
personalScheduleTable
=
reserveTools
.
getPersonalScheduleTable
(
timestamp
,
TimeUtils
.
getTodayEndTime
(),
courseId
);
for
(
int
i
=
0
;
i
<
personalScheduleTable
.
size
();
i
++){
if
(
personalScheduleTable
.
getJSONObject
(
i
).
getString
(
"startTime"
).
equals
(
String
.
valueOf
(
timestamp
))){
scheduleId
=
personalScheduleTable
.
getJSONObject
(
i
).
getString
(
"scheduleId"
);
break
;
}
}
// check 1:课次学员是否包含该会员
JSONObject
getScheduleItemDetail
=
groupScheduleTools
.
getScheduleItemDetail
(
scheduleId
);
JSONArray
reserveIds
=
getScheduleItemDetail
.
getJSONArray
(
"reserveIds"
);
boolean
success
=
false
;
for
(
int
i
=
0
;
i
<
reserveIds
.
size
();
i
++){
if
(
reserveIds
.
getString
(
i
).
equals
(
member1
.
getString
(
3
))){
success
=
true
;
}
}
Assert
.
assertTrue
(
success
,
"约课后课次详情学员不在课次中"
);
// 学员2进行预约
member2
=
createMember
(
"1V3私教约课学员2程晨"
);
reserveId
=
reserveTools
.
addPersonalReserve
(
""
,
courseId
,
coachedId
,
member2
.
getString
(
0
),
member2
.
getString
(
1
),
10
,
1
,
scheduleId
,
timestamp
,
true
);
member2
.
add
(
reserveId
);
try
{
Thread
.
sleep
(
2000
);
}
catch
(
InterruptedException
e
)
{
throw
new
RuntimeException
(
e
);
}
// check 1:课次学员是否包含该会员
getScheduleItemDetail
=
groupScheduleTools
.
getScheduleItemDetail
(
scheduleId
);
reserveIds
=
getScheduleItemDetail
.
getJSONArray
(
"reserveIds"
);
success
=
false
;
for
(
int
i
=
0
;
i
<
reserveIds
.
size
();
i
++){
if
(
reserveIds
.
getString
(
i
).
equals
(
member2
.
getString
(
3
))){
success
=
true
;
}
}
Assert
.
assertTrue
(
success
,
"约课后课次详情学员不在课次中"
);
// check 2: 预约记录是否包含该预约
// check 2.1 学员详情预约记录
JSONArray
getPageByMember
=
reserveTools
.
getPageByMember
(
courseId
,
"SUCCESS"
,
""
,
coachedId
,
timestamp
,
todayEndDateTimeTamp
,
memberId
,
"PERSONAL"
);
String
[]
result
=
new
String
[]
{
"id"
,
"benefitId"
,
"reserveMemberNum"
,
"courseId"
,
"courseType"
,
"scheduleStartTime"
,
"reserveState"
,
"scheduleId"
};
String
[]
resultData
=
new
String
[]
{
member2
.
getString
(
3
),
member2
.
getString
(
1
),
"1"
,
courseId
,
"PERSONAL"
,
timestamp
+
""
,
"SUCCESS"
,
scheduleId
};
success
=
false
;
for
(
int
i
=
0
;
i
<
getPageByMember
.
size
();
i
++){
if
(
getPageByMember
.
getJSONObject
(
i
).
getString
(
"id"
).
equals
(
member2
.
getString
(
3
))){
success
=
true
;
for
(
int
j
=
0
;
j
<
result
.
length
;
j
++){
Assert
.
assertEquals
(
getPageByMember
.
getJSONObject
(
i
).
getString
(
result
[
j
]),
resultData
[
j
],
"约课产生的数据与实际数据不符合"
+
result
[
j
]+
":"
+
resultData
[
j
]);
}
}
}
Assert
.
assertTrue
(
success
,
"约课后在会员详情页面未查询到相关信息"
);
// check 2.2 预约记录列表
JSONArray
getPageByStudio
=
reserveTools
.
getPageByStudio
(
courseId
,
"SUCCESS"
,
""
,
coachedId
,
timestamp
,
TimeUtils
.
getTodayEndTime
(),
member2
.
getString
(
0
),
"PERSONAL"
,
""
);
success
=
false
;
for
(
int
i
=
0
;
i
<
getPageByStudio
.
size
();
i
++){
if
(
getPageByStudio
.
getJSONObject
(
i
).
getString
(
"id"
).
equals
(
member2
.
getString
(
3
))){
success
=
true
;
for
(
int
j
=
0
;
j
<
result
.
length
;
j
++){
Assert
.
assertEquals
(
getPageByStudio
.
getJSONObject
(
i
).
getString
(
result
[
j
]),
resultData
[
j
],
"约课产生的数据与实际数据不符合"
+
result
[
j
]+
":"
+
resultData
[
j
]);
}
Assert
.
assertEquals
(
getPageByStudio
.
getJSONObject
(
i
).
getString
(
"memberId"
),
member2
.
getString
(
0
),
"查询的约课数据不是同一个会员"
);
}
}
Assert
.
assertTrue
(
success
,
"约课后在约课记录没有查询到相关信息"
);
// check 2.3 预约记录详情
JSONObject
getDetailById
=
reserveTools
.
getDetailById
(
member2
.
getString
(
3
));
for
(
int
j
=
0
;
j
<
result
.
length
;
j
++){
Assert
.
assertEquals
(
getDetailById
.
getString
(
result
[
j
]),
resultData
[
j
],
"约课产生的数据与实际数据不符合"
+
result
[
j
]+
":"
+
resultData
[
j
]);
}
Assert
.
assertEquals
(
getDetailById
.
getString
(
"memberId"
),
member2
.
getString
(
0
),
"查询的约课数据不是同一个会员"
);
// check 3: 会员卡消耗记录中包含该记录锁定
JSONArray
consumeRecord
=
cardTools
.
fetchPageOfConsumeRecord
(
member2
.
getString
(
1
),
member2
.
getString
(
2
)).
getJSONObject
(
"result"
).
getJSONArray
(
"records"
);
String
[]
result2
=
new
String
[]
{
"resourceId"
,
"consumeType"
,
"changeOfUsablePurchaseBalance"
};
String
[]
respect
=
new
String
[]
{
member2
.
getString
(
3
),
"RESERVE"
,
"-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
]);
}
}
@Test
(
description
=
"删除课次"
,
priority
=
3
)
public
void
testReservePerson_del
()
{
// 课次中的一个会员取消预约
reserveTools
.
cancelMemberReserve
(
member1
.
getString
(
3
),
true
);
// check 1:课次还存在 且课次中不包含该学员
JSONObject
getScheduleItemDetail
=
groupScheduleTools
.
getScheduleItemDetail
(
scheduleId
);
JSONArray
reserveIds
=
getScheduleItemDetail
.
getJSONArray
(
"reserveIds"
);
boolean
success
=
false
;
for
(
int
i
=
0
;
i
<
reserveIds
.
size
();
i
++){
if
(
reserveIds
.
getString
(
i
).
equals
(
member1
.
getString
(
3
))){
success
=
true
;
}
}
Assert
.
assertFalse
(
success
,
"取消约课后课次详情学员还在课次中"
);
// 删除该课次
reserveTools
.
delPersonalScheduleItem
(
scheduleId
);
// 课次学员取消预约
// check 1:课次已删除,课表没有该条数据
JSONArray
personalScheduleTable
=
reserveTools
.
getPersonalScheduleTable
(
timestamp
,
TimeUtils
.
getTodayEndTime
(),
courseId
);
boolean
flag
=
true
;
if
(
personalScheduleTable
!=
null
){
for
(
int
i
=
0
;
i
<
personalScheduleTable
.
size
();
i
++){
if
(
personalScheduleTable
.
getJSONObject
(
i
).
getString
(
"scheduleId"
).
equals
(
scheduleId
)){
scheduleId
=
personalScheduleTable
.
getJSONObject
(
i
).
getString
(
"scheduleId"
);
flag
=
false
;
break
;
}
}
}
Assert
.
assertTrue
(
flag
,
"取消约课后课次未删除"
);
// check 2:会员详情 - 预约记录已取消
JSONArray
getPageByMember
=
reserveTools
.
getPageByMember
(
courseId
,
"RESERVE_CANCEL"
,
""
,
""
,
timestamp
,
TimeUtils
.
getTodayEndTime
(),
member2
.
getString
(
0
),
"GROUP_CLASS"
);
for
(
int
i
=
0
;
i
<
getPageByMember
.
size
();
i
++){
if
(
getPageByMember
.
getJSONObject
(
i
).
getString
(
"id"
).
equals
(
member2
.
getString
(
3
))){
Assert
.
assertEquals
(
getPageByMember
.
getJSONObject
(
i
).
getString
(
"reserveState"
),
"RESERVE_CANCEL"
,
"取消约课状态不是已取消"
);
}
}
// check 3:预约记录列表中已取消
JSONArray
getPageByStudio
=
reserveTools
.
getPageByStudio
(
courseId
,
"RESERVE_CANCEL"
,
""
,
""
,
timestamp
,
TimeUtils
.
getTodayEndTime
(),
member2
.
getString
(
0
),
"GROUP_CLASS"
,
""
);;
for
(
int
i
=
0
;
i
<
getPageByStudio
.
size
();
i
++){
if
(
getPageByStudio
.
getJSONObject
(
i
).
getString
(
"id"
).
equals
(
member2
.
getString
(
3
))){
Assert
.
assertEquals
(
getPageByStudio
.
getJSONObject
(
i
).
getString
(
"reserveState"
),
"RESERVE_CANCEL"
,
"取消约课状态不是已取消"
);
}
}
// check 3: 会员卡消耗记录中包含该记录锁定的次数释放
JSONArray
consumeRecord
=
cardTools
.
fetchPageOfConsumeRecord
(
member2
.
getString
(
1
),
member2
.
getString
(
2
)).
getJSONObject
(
"result"
).
getJSONArray
(
"records"
);
String
[]
result2
=
new
String
[]
{
"resourceId"
,
"consumeType"
,
"changeOfUsablePurchaseBalance"
};
String
[]
respect
=
new
String
[]
{
member2
.
getString
(
3
),
"CANCEL_RESERVE"
,
"1.00"
};
String
[]
message1
=
new
String
[]
{
"会员卡消耗记录中记录的资源id与实际约课记录id不符合"
,
"会员卡消耗记录中记录的资源id与实际约课记录类型不符合"
,
"会员卡消耗记录中记录的资源id与实际约课记录余额不符合"
};
for
(
int
i
=
0
;
i
<
result2
.
length
;
i
++){
Assert
.
assertEquals
(
consumeRecord
.
getJSONObject
(
0
).
getString
(
result2
[
i
]),
respect
[
i
],
message1
[
i
]);
}
}
/**
/**
...
...
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