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
ad98be80
Commit
ad98be80
authored
Sep 24, 2024
by
xyy
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
新增幸运抽奖case
parent
94b289a6
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
495 additions
and
2 deletions
+495
-2
src/main/java/com/xiaomai/cases/polar/coupon/CouponTools.java
+79
-2
src/main/java/com/xiaomai/cases/polar/luckyDraw/LuckyDrawTools.java
+0
-0
src/main/java/com/xiaomai/cases/polar/luckyDraw/TestAbnormalLuckyDraw.java
+66
-0
src/main/java/com/xiaomai/cases/polar/luckyDraw/TestAddCustomizePrize.java
+62
-0
src/main/java/com/xiaomai/cases/polar/luckyDraw/TestGetShareDetail.java
+67
-0
src/main/java/com/xiaomai/cases/polar/luckyDraw/TestGetStudioMemberPrizeByPage.java
+71
-0
src/main/java/com/xiaomai/cases/polar/luckyDraw/TestLuckyDrawLottery.java
+0
-0
src/main/java/com/xiaomai/cases/polar/luckyDraw/TestPrizeScanCode.java
+99
-0
src/main/java/com/xiaomai/cases/polar/memberCard/CardTools.java
+49
-0
src/main/java/com/xiaomai/enums/ApiModule.java
+2
-0
No files found.
src/main/java/com/xiaomai/cases/polar/coupon/CouponTools.java
View file @
ad98be80
...
@@ -105,6 +105,59 @@ public class CouponTools extends BaseTestImpl {
...
@@ -105,6 +105,59 @@ public class CouponTools extends BaseTestImpl {
}
}
/**
/**
* 创建用于营销活动的优惠券
* @param useThresholdType:"WITHOUT"无门槛,"THRESHOLD"达到条件可用
* @param couponName
* @param allScope 全部商品可用true,指定商品可用false
* @param userInfos
* @return
*/
public
String
createStudioCoupon
(
String
useThresholdType
,
String
couponName
,
Boolean
allScope
,
DataUserInfo
...
userInfos
)
{
setUP
(
"API_createCoupon"
,
userInfos
);
String
[]
memberStatusLimits
=
{
"POTENTIAL"
,
"NORMAL"
,
"HISTORY"
};
JSONObject
receiveCondition
=
new
JSONObject
();
receiveCondition
.
put
(
"receiveTimesUpperType"
,
"WITHOUT"
);
//每人领取次数不限制
receiveCondition
.
put
(
"memberStatusLimits"
,
memberStatusLimits
);
//可领取会员类型
JSONObject
body
=
new
JSONObject
();
body
.
put
(
"useThresholdType"
,
useThresholdType
);
if
(
useThresholdType
.
equals
(
"THRESHOLD"
))
{
//使用门槛是达到条件可用
body
.
put
(
"useThreshold"
,
10
);
//目前没写成动态传参,固定为10元
}
body
.
put
(
"useForActivity"
,
true
);
//开启营销活动开关
body
.
put
(
"quantityLimit"
,
false
);
//若为true,则填写quantity
body
.
put
(
"receiveCondition"
,
receiveCondition
);
body
.
put
(
"name"
,
couponName
);
body
.
put
(
"validPeriodType"
,
"RELATIVE"
);
//有效期:领取后生效
body
.
put
(
"validPeriodStartTime"
,
null
);
body
.
put
(
"validPeriodEndTime"
,
null
);
body
.
put
(
"relativeDay"
,
"30"
);
//领取30天内有效
body
.
put
(
"memo"
,
"自动化脚本生成用于营销活动的优惠券"
);
body
.
put
(
"quantity"
,
"-1"
);
//发放数量不限制
body
.
put
(
"brandId"
,
dataApi
.
getLoginInfo
().
getBrandId
());
body
.
put
(
"studioId"
,
dataApi
.
getLoginInfo
().
getStudioId
());
body
.
put
(
"operatorId"
,
dataApi
.
getLoginInfo
().
getAdminId
());
body
.
put
(
"allScope"
,
allScope
);
//全部可用
if
(
allScope
.
equals
(
false
)){
String
[]
scope
=
{
"MEMBER_CARD"
,
"TRAINING_CAMP"
,
"SINGLE_RESERVE"
,
"EXPERIENCE_CARD"
};
//指定会员卡、体验卡、训练营、单次约课
body
.
put
(
"scope"
,
scope
);
//指定商品范围
body
.
put
(
"preferentialType"
,
"DISCOUNT"
);
//打折
body
.
put
(
"preferential"
,
8.8
);
//打8.8折
}
else
{
body
.
put
(
"preferentialType"
,
"CERTAIN"
);
body
.
put
(
"preferential"
,
10
);
//直减10元
}
dataApi
.
doRequest
(
RequestType
.
JSON
,
dataparams
,
body
.
toString
(),
dataheadrs
);
Assert
.
assertTrue
(
Boolean
.
valueOf
(
XMJSONPath
.
readPath
(
dataApi
.
getApi_response
(),
"$.success"
))==
true
,
"调用接口返回结果:"
+
XMJSONPath
.
readPath
(
dataApi
.
getApi_response
(),
"$.message"
));
return
XMJSONPath
.
readPath
(
dataApi
.
getApi_response
(),
"$.result"
);
}
/**
* 查看优惠券列表
* 查看优惠券列表
* @param nameLike 全局搜索中 根据优惠券名称搜索
* @param nameLike 全局搜索中 根据优惠券名称搜索
* @param status 列表中根据优惠券状态搜索
* @param status 列表中根据优惠券状态搜索
...
@@ -236,8 +289,8 @@ public class CouponTools extends BaseTestImpl {
...
@@ -236,8 +289,8 @@ public class CouponTools extends BaseTestImpl {
* 作废会员已领取/已发放的优惠券
* 作废会员已领取/已发放的优惠券
* @param recordId 对应的记录ID
* @param recordId 对应的记录ID
*/
*/
public
void
abandonMembercouponReceiveRecord
(
String
recordId
){
public
void
abandonMembercouponReceiveRecord
(
String
recordId
,
DataUserInfo
...
userInfo
){
setUP
(
"API_abandonMembercouponReceiveRecord"
);
setUP
(
"API_abandonMembercouponReceiveRecord"
,
userInfo
);
JSONObject
body
=
new
JSONObject
();
JSONObject
body
=
new
JSONObject
();
body
.
put
(
"operatorId"
,
dataApi
.
getLoginInfo
().
getAdminId
());
body
.
put
(
"operatorId"
,
dataApi
.
getLoginInfo
().
getAdminId
());
body
.
put
(
"studioId"
,
dataApi
.
getLoginInfo
().
getStudioId
());
body
.
put
(
"studioId"
,
dataApi
.
getLoginInfo
().
getStudioId
());
...
@@ -248,6 +301,29 @@ public class CouponTools extends BaseTestImpl {
...
@@ -248,6 +301,29 @@ public class CouponTools extends BaseTestImpl {
}
}
/**
* 会员名下的优惠券
* @param receiverId
* @param status
* @param userInfo
* @return
*/
public
JSONObject
pageMemberReceivedCoupon
(
String
receiverId
,
String
status
,
DataUserInfo
...
userInfo
){
setUP
(
"API_pageMemberReceivedCoupon"
,
userInfo
);
JSONObject
body
=
new
JSONObject
();
body
.
put
(
"current"
,
0
);
body
.
put
(
"receiverId"
,
receiverId
);
body
.
put
(
"size"
,
20
);
body
.
put
(
"status"
,
status
);
body
.
put
(
"operatorId"
,
dataApi
.
getLoginInfo
().
getAdminId
());
body
.
put
(
"studioId"
,
dataApi
.
getLoginInfo
().
getStudioId
());
body
.
put
(
"brandId"
,
dataApi
.
getLoginInfo
().
getBrandId
());
dataApi
.
doRequest
(
RequestType
.
JSON
,
dataparams
,
body
.
toString
(),
dataheadrs
);
Assert
.
assertTrue
(
Boolean
.
valueOf
(
XMJSONPath
.
readPath
(
dataApi
.
getApi_response
(),
"$.success"
))==
true
,
"调用接口返回结果:"
+
XMJSONPath
.
readPath
(
dataApi
.
getApi_response
(),
"$.message"
));
return
dataApi
.
getBodyInJSON
();
}
}
}
\ No newline at end of file
src/main/java/com/xiaomai/cases/polar/luckyDraw/LuckyDrawTools.java
0 → 100644
View file @
ad98be80
This diff is collapsed.
Click to expand it.
src/main/java/com/xiaomai/cases/polar/luckyDraw/TestAbnormalLuckyDraw.java
0 → 100644
View file @
ad98be80
package
com
.
xiaomai
.
cases
.
polar
.
luckyDraw
;
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.RandomStringUtil
;
import
com.xiaomai.utils.XMBaseTest
;
import
com.xiaomai.utils.XMJSONPath
;
import
org.testng.Assert
;
import
org.testng.annotations.BeforeMethod
;
import
org.testng.annotations.Test
;
import
javax.annotation.Resource
;
public
class
TestAbnormalLuckyDraw
extends
XMBaseTest
{
@Resource
(
name
=
"luckyDrawTools"
)
LuckyDrawTools
luckyDrawTools
;
@BeforeMethod
public
void
beforeTest
(){
xmAppApi
.
setApiModule
(
ApiModule
.
Polar_LuckyDraw
)
.
setApiName
(
"API_abnormalLuckyDraw"
)
.
setLoginUser
(
LoginAccount
.
GYM_PROD
)
.
setTerminal
(
Terminal
.
B
);
dal
.
setCase_owner
(
"xyy"
)
.
setCase_name
(
Thread
.
currentThread
().
getStackTrace
()[
1
].
getFileName
().
split
(
"\\."
)[
0
]);
super
.
beforeTest
();
}
@Test
(
description
=
"创建未发布活动->发布活动->失效活动->删除活动"
)
public
void
testAbnormalLuckyDraw
()
throws
InterruptedException
{
//获取活动列表数据
int
total
=
Integer
.
parseInt
(
XMJSONPath
.
readPath
(
luckyDrawTools
.
getLuckyDrawByPage
(
""
),
"$.result.total"
));
//创建自定义奖品
String
prizeName
=
"奖品"
+
RandomStringUtil
.
randomString
(
5
);
String
prizeId
=
luckyDrawTools
.
addCustomizePrize
(
prizeName
);
//创建活动名称
String
activityName
=
"每人总共抽100次"
+
RandomStringUtil
.
randomString
(
5
);
//创建未发布的活动
String
activityId
=
luckyDrawTools
.
addLuckyDraw
(
"CUSTOMIZE_GIFT"
,
prizeName
,
prizeId
,
false
,
activityName
);
Assert
.
assertTrue
(
Integer
.
parseInt
(
XMJSONPath
.
readPath
(
luckyDrawTools
.
getLuckyDrawByPage
(
""
),
"$.result.total"
))==
total
+
1
);
Thread
.
sleep
(
1000
);
//检验活动状态=未发布
Assert
.
assertEquals
(
XMJSONPath
.
readPath
(
luckyDrawTools
.
getLuckyDrawDetail
(
activityId
),
"$.result.status"
),
"UNPUBLISHED"
);
//此时删除自定义奖品,会报错,因为奖品关联着活动
Assert
.
assertEquals
(
XMJSONPath
.
readPath
(
luckyDrawTools
.
delCustomizePrize
(
prizeId
),
"$.message"
),
"该奖品已被"
+
activityName
+
"活动引用,暂不支持删除。"
);
//发布活动,并且校验活动状态=未开始
luckyDrawTools
.
publishLuckyDraw
(
activityId
);
Assert
.
assertEquals
(
XMJSONPath
.
readPath
(
luckyDrawTools
.
getLuckyDrawDetail
(
activityId
),
"$.result.status"
),
"WAITING"
);
//失效活动
JSONObject
body
=
new
JSONObject
();
body
.
put
(
"id"
,
activityId
);
body
.
put
(
"brandId"
,
xmAppApi
.
getLoginInfo
().
getBrandId
());
body
.
put
(
"studioId"
,
xmAppApi
.
getLoginInfo
().
getStudioId
());
body
.
put
(
"operatorId"
,
xmAppApi
.
getLoginInfo
().
getAdminId
());
xmAppApi
.
doRequest
(
RequestType
.
JSON
,
params
,
body
.
toJSONString
(),
headers
).
assetsSuccess
(
true
);
Assert
.
assertEquals
(
XMJSONPath
.
readPath
(
xmAppApi
.
getBodyInJSON
(),
"$.message"
),
"操作成功!"
);
//检验活动状态=已失效
Assert
.
assertEquals
(
XMJSONPath
.
readPath
(
luckyDrawTools
.
getLuckyDrawDetail
(
activityId
),
"$.result.status"
),
"ABNORMAL"
);
//删除活动
luckyDrawTools
.
deleteLuckyDraw
(
activityId
);
//删除自定义奖品
luckyDrawTools
.
delCustomizePrize
(
prizeId
);
}
}
src/main/java/com/xiaomai/cases/polar/luckyDraw/TestAddCustomizePrize.java
0 → 100644
View file @
ad98be80
package
com
.
xiaomai
.
cases
.
polar
.
luckyDraw
;
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.RandomStringUtil
;
import
com.xiaomai.utils.XMBaseTest
;
import
com.xiaomai.utils.XMJSONPath
;
import
org.testng.Assert
;
import
org.testng.annotations.BeforeMethod
;
import
org.testng.annotations.DataProvider
;
import
org.testng.annotations.Test
;
import
javax.annotation.Resource
;
public
class
TestAddCustomizePrize
extends
XMBaseTest
{
@Resource
(
name
=
"luckyDrawTools"
)
LuckyDrawTools
luckyDrawTools
;
@BeforeMethod
public
void
beforeTest
(){
xmAppApi
.
setApiModule
(
ApiModule
.
Polar_LuckyDraw
)
.
setApiName
(
"API_addCustomizePrize"
)
.
setLoginUser
(
LoginAccount
.
GYM_PROD
)
.
setTerminal
(
Terminal
.
B
);
dal
.
setCase_owner
(
"xyy"
)
.
setCase_name
(
Thread
.
currentThread
().
getStackTrace
()[
1
].
getFileName
().
split
(
"\\."
)[
0
]);
super
.
beforeTest
();
}
@DataProvider
public
Object
[][]
dataProvider
(){
return
new
Object
[][]{
{
"自定义奖品"
,
false
},
{
"奖品"
+
RandomStringUtil
.
randomString
(
5
),
true
}
};
}
@Test
(
description
=
"创建自定义奖品"
,
dataProvider
=
"dataProvider"
)
public
void
testAddCustomizePrize
(
String
prizeName
,
boolean
success
){
//获取当前自定义奖品列表数量
int
total
=
Integer
.
parseInt
(
XMJSONPath
.
readPath
(
luckyDrawTools
.
getCustomizePrizeByPage
(
""
),
"$.result.total"
));
JSONObject
body
=
new
JSONObject
();
body
.
put
(
"prizeName"
,
prizeName
);
body
.
put
(
"brandId"
,
xmAppApi
.
getLoginInfo
().
getBrandId
());
body
.
put
(
"studioId"
,
xmAppApi
.
getLoginInfo
().
getStudioId
());
body
.
put
(
"operatorId"
,
xmAppApi
.
getLoginInfo
().
getAdminId
());
xmAppApi
.
doRequest
(
RequestType
.
JSON
,
params
,
body
.
toJSONString
(),
headers
);
if
(
success
==
false
){
Assert
.
assertEquals
(
XMJSONPath
.
readPath
(
xmAppApi
.
getBodyInJSON
(),
"$.message"
),
"自定义奖品名称重复,请修改"
);
}
else
{
String
prizeId
=
XMJSONPath
.
readPath
(
xmAppApi
.
getBodyInJSON
(),
"$.result"
);
Assert
.
assertEquals
(
XMJSONPath
.
readPath
(
xmAppApi
.
getBodyInJSON
(),
"$.message"
),
"操作成功!"
);
//检查自定奖品列表数据+1
Assert
.
assertTrue
(
Integer
.
parseInt
(
XMJSONPath
.
readPath
(
luckyDrawTools
.
getCustomizePrizeByPage
(
""
),
"$.result.total"
))==
total
+
1
);
//清理数据
luckyDrawTools
.
delCustomizePrize
(
prizeId
);
}
}
}
src/main/java/com/xiaomai/cases/polar/luckyDraw/TestGetShareDetail.java
0 → 100644
View file @
ad98be80
package
com
.
xiaomai
.
cases
.
polar
.
luckyDraw
;
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.RandomStringUtil
;
import
com.xiaomai.utils.XMBaseTest
;
import
com.xiaomai.utils.XMJSONPath
;
import
org.testng.Assert
;
import
org.testng.annotations.BeforeMethod
;
import
org.testng.annotations.Test
;
import
javax.annotation.Resource
;
public
class
TestGetShareDetail
extends
XMBaseTest
{
@Resource
(
name
=
"luckyDrawTools"
)
LuckyDrawTools
luckyDrawTools
;
@BeforeMethod
public
void
beforeTest
(){
xmAppApi
.
setApiModule
(
ApiModule
.
Polar_LuckyDraw
)
.
setApiName
(
"API_getShareDetail"
)
.
setLoginUser
(
LoginAccount
.
GYM_PROD
)
.
setTerminal
(
Terminal
.
B
);
dal
.
setCase_owner
(
"xyy"
)
.
setCase_name
(
Thread
.
currentThread
().
getStackTrace
()[
1
].
getFileName
().
split
(
"\\."
)[
0
]);
super
.
beforeTest
();
}
@Test
(
description
=
"分享幸运抽奖海报"
)
public
void
testGetShareDetail
()
throws
InterruptedException
{
//创建自定义奖品
String
prizeName
=
"奖品"
+
RandomStringUtil
.
randomString
(
5
);
String
prizeId
=
luckyDrawTools
.
addCustomizePrize
(
prizeName
);
//创建活动名称
String
activityName
=
"每人每日抽100次"
+
RandomStringUtil
.
randomString
(
5
);
//创建已发布的活动
String
activityId
=
luckyDrawTools
.
addLuckyDraw
(
"CUSTOMIZE_GIFT"
,
prizeName
,
prizeId
,
true
,
activityName
);
//构建参数
JSONObject
body
=
new
JSONObject
();
JSONObject
extJson
=
new
JSONObject
();
extJson
.
put
(
"brandId"
,
xmAppApi
.
getLoginInfo
().
getBrandId
());
extJson
.
put
(
"studioId"
,
xmAppApi
.
getLoginInfo
().
getStudioId
());
body
.
put
(
"bizId"
,
activityId
);
body
.
put
(
"shareType"
,
"LUCKY_DRAW"
);
body
.
put
(
"extJson"
,
extJson
);
body
.
put
(
"brandId"
,
xmAppApi
.
getLoginInfo
().
getBrandId
());
body
.
put
(
"studioId"
,
xmAppApi
.
getLoginInfo
().
getStudioId
());
body
.
put
(
"operatorId"
,
xmAppApi
.
getLoginInfo
().
getAdminId
());
//调用请求
xmAppApi
.
doRequest
(
RequestType
.
JSON
,
params
,
body
.
toJSONString
(),
headers
).
assetsSuccess
(
true
);
Assert
.
assertEquals
(
XMJSONPath
.
readPath
(
xmAppApi
.
getBodyInJSON
(),
"$.message"
),
"操作成功!"
);
Assert
.
assertEquals
(
XMJSONPath
.
readPath
(
xmAppApi
.
getBodyInJSON
(),
"$.result.studioId"
),
xmAppApi
.
getLoginInfo
().
getStudioId
());
//清理数据
//删除活动
luckyDrawTools
.
deleteLuckyDraw
(
activityId
);
Thread
.
sleep
(
2000
);
//删除自定义奖品
luckyDrawTools
.
delCustomizePrize
(
prizeId
);
}
}
src/main/java/com/xiaomai/cases/polar/luckyDraw/TestGetStudioMemberPrizeByPage.java
0 → 100644
View file @
ad98be80
package
com
.
xiaomai
.
cases
.
polar
.
luckyDraw
;
import
com.alibaba.fastjson.JSONObject
;
import
com.xiaomai.cases.polar.training.TrainingTools
;
import
com.xiaomai.client.DataUserInfo
;
import
com.xiaomai.enums.ApiModule
;
import
com.xiaomai.enums.LoginAccount
;
import
com.xiaomai.enums.RequestType
;
import
com.xiaomai.enums.Terminal
;
import
com.xiaomai.utils.XMBaseTest
;
import
com.xiaomai.utils.XMJSONPath
;
import
org.testng.Assert
;
import
org.testng.annotations.BeforeMethod
;
import
org.testng.annotations.Test
;
import
javax.annotation.Resource
;
public
class
TestGetStudioMemberPrizeByPage
extends
XMBaseTest
{
@Resource
(
name
=
"luckyDrawTools"
)
LuckyDrawTools
luckyDrawTools
;
@Resource
(
name
=
"trainingTools"
)
TrainingTools
trainingTools
;
DataUserInfo
info
=
new
DataUserInfo
();
@BeforeMethod
public
void
beforeTest
(){
xmAppApi
.
setApiModule
(
ApiModule
.
Polar_LuckyDraw
)
.
setApiName
(
"API_getStudioMemberPrizeByPage"
)
.
setLoginUser
(
LoginAccount
.
GYM_PROD
)
.
setTerminal
(
Terminal
.
B
);
dal
.
setCase_owner
(
"xyy"
)
.
setCase_name
(
Thread
.
currentThread
().
getStackTrace
()[
1
].
getFileName
().
split
(
"\\."
)[
0
]);
super
.
beforeTest
();
}
@Test
(
description
=
"幸运抽奖-会员中奖列表"
)
public
void
testGetStudioMemberPrizeByPage
(){
//获取会员信息
String
memberId
=
trainingTools
.
searchTargerMember
(
"自动化会员"
);;
//调用请求
JSONObject
body
=
new
JSONObject
();
body
.
put
(
"current"
,
0
);
body
.
put
(
"size"
,
10
);
body
.
put
(
"memberId"
,
memberId
);
body
.
put
(
"prizeType"
,
"CUSTOMIZE_GIFT"
);
body
.
put
(
"brandId"
,
xmAppApi
.
getLoginInfo
().
getBrandId
());
body
.
put
(
"studioId"
,
xmAppApi
.
getLoginInfo
().
getStudioId
());
body
.
put
(
"operatorId"
,
xmAppApi
.
getLoginInfo
().
getAdminId
());
xmAppApi
.
doRequest
(
RequestType
.
JSON
,
params
,
body
.
toJSONString
(),
headers
).
assetsSuccess
(
true
);
Assert
.
assertEquals
(
XMJSONPath
.
readPath
(
xmAppApi
.
getBodyInJSON
(),
"$.message"
),
"操作成功!"
);
//若该会员名下有抽奖记录,则进入手动兑奖流程:
int
total
=
Integer
.
parseInt
(
XMJSONPath
.
readPath
(
xmAppApi
.
getBodyInJSON
(),
"$.result.total"
));
if
(
total
>
0
){
for
(
int
i
=
0
;
i
<
total
-
1
;
i
++)
{
String
sendState
=
XMJSONPath
.
readPath
(
xmAppApi
.
getBodyInJSON
(),
"$.result.records["
+
i
+
"].sendState"
);
String
sendRecordId
=
XMJSONPath
.
readPath
(
xmAppApi
.
getBodyInJSON
(),
"$.result.records["
+
i
+
"].id"
);
String
activityId
=
XMJSONPath
.
readPath
(
xmAppApi
.
getBodyInJSON
(),
"$.result.records["
+
i
+
"].activityId"
);
//获取到的兑奖记录,暂未兑奖,可进行兑奖:
if
(
sendState
==
"NOT_SENT"
){
Assert
.
assertEquals
(
luckyDrawTools
.
exchangePrize
(
sendRecordId
),
"$.message"
,
"操作成功!"
);
//兑奖状态=已兑换
Assert
.
assertEquals
(
XMJSONPath
.
readPath
(
luckyDrawTools
.
getLuckyAttendByPage
(
activityId
),
"$.result.records[0].sendState"
),
"SENT"
);
//已兑奖状态
break
;
}
else
{
//该兑奖记录若已兑奖,则提示兑奖码已兑换!
Assert
.
assertEquals
(
XMJSONPath
.
readPath
(
luckyDrawTools
.
exchangePrize
(
sendRecordId
),
"$.message"
),
"该奖品码已兑换"
);
}
}
}
}
}
src/main/java/com/xiaomai/cases/polar/luckyDraw/TestLuckyDrawLottery.java
0 → 100644
View file @
ad98be80
This diff is collapsed.
Click to expand it.
src/main/java/com/xiaomai/cases/polar/luckyDraw/TestPrizeScanCode.java
0 → 100644
View file @
ad98be80
package
com
.
xiaomai
.
cases
.
polar
.
luckyDraw
;
import
com.alibaba.fastjson.JSONObject
;
import
com.xiaomai.cases.lunar.user.UserTools
;
import
com.xiaomai.client.DataUserInfo
;
import
com.xiaomai.enums.ApiModule
;
import
com.xiaomai.enums.LoginAccount
;
import
com.xiaomai.enums.RequestType
;
import
com.xiaomai.enums.Terminal
;
import
com.xiaomai.utils.RandomStringUtil
;
import
com.xiaomai.utils.XMBaseTest
;
import
com.xiaomai.utils.XMJSONPath
;
import
org.testng.Assert
;
import
org.testng.annotations.BeforeMethod
;
import
org.testng.annotations.Test
;
import
javax.annotation.Resource
;
public
class
TestPrizeScanCode
extends
XMBaseTest
{
@Resource
(
name
=
"luckyDrawTools"
)
LuckyDrawTools
luckyDrawTools
;
@Resource
(
name
=
"userTools"
)
UserTools
userTools
;
DataUserInfo
info
=
new
DataUserInfo
();
public
String
prizeId
;
public
String
prizeName
=
"自定义奖品"
;;
@BeforeMethod
public
void
beforeTest
(){
xmAppApi
.
setApiModule
(
ApiModule
.
Polar_LuckyDraw
)
.
setApiName
(
"API_prizeScanCode"
)
.
setLoginUser
(
LoginAccount
.
GYM_PROD
)
.
setTerminal
(
Terminal
.
B
);
dal
.
setCase_owner
(
"xyy"
)
.
setCase_name
(
Thread
.
currentThread
().
getStackTrace
()[
1
].
getFileName
().
split
(
"\\."
)[
0
]);
super
.
beforeTest
();
}
@Test
(
description
=
"扫幸运抽奖活动的兑奖二维码进行兑奖"
)
public
void
testPrizeScanCod
()
throws
InterruptedException
{
info
.
setTerminal
(
Terminal
.
minApp
);
info
.
setLoginUser
(
LoginAccount
.
GYM_MINIAPPC
);
//查询自定义奖品数量
int
total
=
Integer
.
parseInt
(
XMJSONPath
.
readPath
(
luckyDrawTools
.
getCustomizePrizeByPage
(
"自定义奖品"
),
"$.result.total"
));
if
(
total
==
0
){
//创建1个自定义奖品
prizeId
=
luckyDrawTools
.
addCustomizePrize
(
prizeName
);
}
prizeId
=
XMJSONPath
.
readPath
(
luckyDrawTools
.
getCustomizePrizeByPage
(
"自定义奖品"
),
"$.result.records[0].id"
);
//创建活动名称
String
activityName
=
"每人每天抽自定义奖品"
+
RandomStringUtil
.
randomString
(
5
);
//创建活动=未开始
String
activityId
=
luckyDrawTools
.
addLuckyDraw
(
"CUSTOMIZE_GIFT"
,
prizeName
,
prizeId
,
true
,
activityName
);
Thread
.
sleep
(
1000
);
String
prizeNo
=
XMJSONPath
.
readPath
(
luckyDrawTools
.
getLuckyDrawDetail
(
activityId
),
"$.result.prizeList[0].id"
);
//编辑活动=进行中(主要是改活动开始时间)
luckyDrawTools
.
editLuckyDraw
(
"CUSTOMIZE_GIFT"
,
prizeNo
,
prizeName
,
prizeId
,
true
,
activityId
,
activityName
);
//获取会员信息
String
memberId
=
userTools
.
getMemberInfo
(
info
).
getString
(
"memberId"
);
int
drawNum
=
luckyDrawTools
.
getDrawNum
(
activityId
,
memberId
,
info
);
//抽奖次数
//开始抽奖, 总共抽2次,获奖2次:一次手动兑换,一次扫码兑换
for
(
int
i
=
0
;
i
<
2
;
i
++)
{
//100%中奖
Thread
.
sleep
(
5000
);
Assert
.
assertEquals
(
XMJSONPath
.
readPath
(
luckyDrawTools
.
luckyDrawLottery
(
activityId
,
memberId
,
info
),
"$.result.winPrize"
),
"true"
);
}
//抽奖次数-2
Assert
.
assertTrue
(
luckyDrawTools
.
getDrawNum
(
activityId
,
memberId
,
info
)==
drawNum
-
2
);
//我的奖品+2
Assert
.
assertTrue
(
Integer
.
parseInt
(
XMJSONPath
.
readPath
(
luckyDrawTools
.
getMyActPrizeByPage
(
activityId
,
memberId
,
info
),
"$.result.total"
))==
2
);
//app奖品消耗,参与记录
Assert
.
assertTrue
(
Integer
.
parseInt
(
XMJSONPath
.
readPath
(
luckyDrawTools
.
getLuckyPrizeCount
(
activityId
),
"$.result[0].winCount"
))==
2
);
//已抽中2个
Assert
.
assertTrue
(
Integer
.
parseInt
(
XMJSONPath
.
readPath
(
luckyDrawTools
.
getLuckyPrizeCount
(
activityId
),
"$.result[0].stock"
))==
98
);
//剩余98个
//app参与记录
Assert
.
assertTrue
(
Integer
.
parseInt
(
XMJSONPath
.
readPath
(
luckyDrawTools
.
getLuckyAttendByPage
(
activityId
),
"$.result.total"
))==
2
);
//参与记录2条
Assert
.
assertEquals
(
XMJSONPath
.
readPath
(
luckyDrawTools
.
getLuckyAttendByPage
(
activityId
),
"$.result.records[0].sendState"
),
"NOT_SENT"
);
//待兑奖状态
String
sendRecordId
=
XMJSONPath
.
readPath
(
luckyDrawTools
.
getLuckyAttendByPage
(
activityId
),
"$.result.records[0].sendRecordId"
);
//扫兑奖码
JSONObject
body
=
new
JSONObject
();
body
.
put
(
"id"
,
sendRecordId
);
body
.
put
(
"brandId"
,
xmAppApi
.
getLoginInfo
().
getBrandId
());
body
.
put
(
"studioId"
,
xmAppApi
.
getLoginInfo
().
getStudioId
());
body
.
put
(
"operatorId"
,
xmAppApi
.
getLoginInfo
().
getAdminId
());
//调用请求
xmAppApi
.
doRequest
(
RequestType
.
JSON
,
params
,
body
.
toJSONString
(),
headers
).
assetsSuccess
(
true
);
//检验扫码兑换时的状态及兑奖信息准确性
Assert
.
assertEquals
(
XMJSONPath
.
readPath
(
xmAppApi
.
getBodyInJSON
(),
"$.message"
),
"操作成功!"
);
Assert
.
assertEquals
(
XMJSONPath
.
readPath
(
xmAppApi
.
getBodyInJSON
(),
"$.result.prizeId"
),
prizeId
);
Assert
.
assertEquals
(
XMJSONPath
.
readPath
(
xmAppApi
.
getBodyInJSON
(),
"$.result.receivedMemberId"
),
memberId
);
//进行兑奖,并且成功
Assert
.
assertEquals
(
XMJSONPath
.
readPath
(
luckyDrawTools
.
exchangePrize
(
sendRecordId
),
"$.message"
),
"操作成功!"
);
//校验兑奖信息状态=已兑奖
Assert
.
assertEquals
(
XMJSONPath
.
readPath
(
luckyDrawTools
.
getRewardSendDetail
(
sendRecordId
),
"$.result.sendState"
),
"SENT"
);
//已兑奖状态
Assert
.
assertEquals
(
XMJSONPath
.
readPath
(
luckyDrawTools
.
getRewardSendDetail
(
sendRecordId
),
"$.result.prizeType"
),
"CUSTOMIZE_GIFT"
);
//自定义奖品
}
}
src/main/java/com/xiaomai/cases/polar/memberCard/CardTools.java
View file @
ad98be80
...
@@ -132,6 +132,55 @@ public class CardTools extends XMBaseTest {
...
@@ -132,6 +132,55 @@ public class CardTools extends XMBaseTest {
}
}
/**
/**
* 创建用于营销活动的体验卡
* @param title
* @param price
* @param benefit:自由组合想要的权益
* @param dataUserInfos
* @return
*/
public
String
experienceCardCreate
(
String
title
,
String
price
,
JSONObject
benefit
,
DataUserInfo
...
dataUserInfos
)
{
dataApi
.
setApiModule
(
ApiModule
.
Polar_Card
)
.
setApiName
(
"API_tenantMemberCard_create"
)
.
setTerminal
(
Terminal
.
B
);
super
.
beforeDataRequest
(
dataUserInfos
);
String
[]
activatePatternList
=
{
"PURCHASE"
};
//即时生效
String
[]
purchaseMemberStateList
=
{
"POTENTIAL"
,
"NORMAL"
,
"HISTORY"
};
//构建体验卡权益object
JSONArray
benefitList
=
new
JSONArray
();
benefitList
.
add
(
benefit
);
//构建请求
JSONObject
jsonObject
=
new
JSONObject
();
jsonObject
.
put
(
"surfaceUrl"
,
"https://image.xiaomaiketang.com/xm/internal/EKDt4bPDBQ.png"
);
//体验卡封面图片
jsonObject
.
put
(
"surfaceCornerMark"
,
"自动化标签"
);
jsonObject
.
put
(
"title"
,
title
);
//卡名称
jsonObject
.
put
(
"useForActivity"
,
true
);
//用于营销活动
jsonObject
.
put
(
"validPeriod"
,
"10"
);
//有效期-10天
jsonObject
.
put
(
"activatePatternList"
,
activatePatternList
);
//生效方式
jsonObject
.
put
(
"stock"
,
-
1
);
//库存不限
jsonObject
.
put
(
"price"
,
price
);
//体验卡售价
jsonObject
.
put
(
"purchaseNumberLimit"
,
"-1"
);
//购买数量不限
jsonObject
.
put
(
"purchaseMemberStateList"
,
purchaseMemberStateList
);
//可购买会员类型
jsonObject
.
put
(
"purchaseRestriction"
,
"NO"
);
jsonObject
.
put
(
"xcxSaleStatus"
,
"YES"
);
jsonObject
.
put
(
"creatorId"
,
dataApi
.
getLoginInfo
().
getAdminId
());
jsonObject
.
put
(
"shelfState"
,
"YES"
);
//卡启用状态
jsonObject
.
put
(
"brandId"
,
dataApi
.
getLoginInfo
().
getBrandId
());
jsonObject
.
put
(
"studioId"
,
dataApi
.
getLoginInfo
().
getStudioId
());
jsonObject
.
put
(
"description"
,
"{\"items\":[{\"content\":\"自动化创建用于营销活动的体验卡\",\"aspect\":\"\",\"type\":\"TEXT\"}]}"
);
jsonObject
.
put
(
"operatorId"
,
dataApi
.
getLoginInfo
().
getAdminId
());
jsonObject
.
put
(
"benefitList"
,
benefitList
);
//使用权益
jsonObject
.
put
(
"commodityCardType"
,
"EXPERIENCE_CARD"
);
dataApi
.
doRequest
(
RequestType
.
JSON
,
dataparams
,
jsonObject
.
toJSONString
(),
dataheadrs
).
assetsSuccess
(
true
);
return
dataApi
.
getBodyInJSON
().
getString
(
"result"
);
}
/**
* b端购买储值卡
* b端购买储值卡
* @param dataUserInfos
* @param dataUserInfos
* @return 订单id
* @return 订单id
...
...
src/main/java/com/xiaomai/enums/ApiModule.java
View file @
ad98be80
...
@@ -26,6 +26,8 @@ public class ApiModule {
...
@@ -26,6 +26,8 @@ public class ApiModule {
public
static
String
Polar_EleContract
=
"polar_eleContract"
;
//训练营活动
public
static
String
Polar_EleContract
=
"polar_eleContract"
;
//训练营活动
public
static
String
Polar_Coupon
=
"polar_coupon"
;
//优惠券
public
static
String
Polar_Coupon
=
"polar_coupon"
;
//优惠券
public
static
String
Polar_LuckyDraw
=
"polar_luckyDraw"
;
//幸运抽奖
public
static
String
Lunar_LuckyDraw
=
"lunar_luckyDraw"
;
//小程序幸运抽奖
public
static
String
Lunar_Coupon
=
"lunar_coupon"
;
//小程序优惠券
public
static
String
Lunar_Coupon
=
"lunar_coupon"
;
//小程序优惠券
public
static
String
Polar_Reserve
=
"polar_reserve"
;
//预约
public
static
String
Polar_Reserve
=
"polar_reserve"
;
//预约
...
...
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