Skip to content

Commit cb9380c

Browse files
committed
添加对发送模板消息的单元测试
1 parent a575777 commit cb9380c

14 files changed

+164
-77
lines changed

weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/impl/WxMpServiceImpl.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -257,9 +257,8 @@ public String shortUrl(String long_url) throws WxErrorException {
257257
@Override
258258
public String templateSend(WxMpTemplateMessage templateMessage) throws WxErrorException {
259259
String url = "https://api.weixin.qq.com/cgi-bin/message/template/send";
260-
String responseContent = execute(new SimplePostRequestExecutor(), url, templateMessage.toJson());
261-
JsonElement tmpJsonElement = JSON_PARSER.parse(responseContent);
262-
final JsonObject jsonObject = tmpJsonElement.getAsJsonObject();
260+
String responseContent = this.post(url, templateMessage.toJson());
261+
final JsonObject jsonObject = JSON_PARSER.parse(responseContent).getAsJsonObject();
263262
if (jsonObject.get("errcode").getAsInt() == 0){
264263
return jsonObject.get("msgid").getAsString();
265264
}

weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/WxMpTemplateData.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,6 @@
77
*/
88
public class WxMpTemplateData implements Serializable {
99

10-
/**
11-
*
12-
*/
1310
private static final long serialVersionUID = 6301835292940277870L;
1411
private String name;
1512
private String value;
@@ -48,6 +45,7 @@ public void setValue(String value) {
4845
public String getColor() {
4946
return this.color;
5047
}
48+
5149
public void setColor(String color) {
5250
this.color = color;
5351
}

weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/WxMpTemplateMessage.java

Lines changed: 60 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,14 @@
11
package me.chanjar.weixin.mp.bean;
22

3-
import me.chanjar.weixin.mp.util.json.WxMpGsonBuilder;
4-
53
import java.io.Serializable;
64
import java.util.ArrayList;
75
import java.util.List;
86

9-
public class WxMpTemplateMessage implements Serializable {
7+
import me.chanjar.weixin.mp.util.json.WxMpGsonBuilder;
108

11-
/**
12-
*
13-
*/
9+
public class WxMpTemplateMessage implements Serializable {
1410
private static final long serialVersionUID = 5063374783759519418L;
11+
1512
private String toUser;
1613
private String templateId;
1714
private String url;
@@ -65,4 +62,61 @@ public void addWxMpTemplateData(WxMpTemplateData datum) {
6562
public String toJson() {
6663
return WxMpGsonBuilder.INSTANCE.create().toJson(this);
6764
}
65+
66+
public static WxMpTemplateMessageBuilder builder() {
67+
return new WxMpTemplateMessageBuilder();
68+
}
69+
70+
public static class WxMpTemplateMessageBuilder {
71+
private String toUser;
72+
private String templateId;
73+
private String url;
74+
private String topColor;
75+
private List<WxMpTemplateData> data = new ArrayList<>();
76+
77+
public WxMpTemplateMessageBuilder toUser(String toUser) {
78+
this.toUser = toUser;
79+
return this;
80+
}
81+
82+
public WxMpTemplateMessageBuilder templateId(String templateId) {
83+
this.templateId = templateId;
84+
return this;
85+
}
86+
87+
public WxMpTemplateMessageBuilder url(String url) {
88+
this.url = url;
89+
return this;
90+
}
91+
92+
public WxMpTemplateMessageBuilder topColor(String topColor) {
93+
this.topColor = topColor;
94+
return this;
95+
}
96+
97+
public WxMpTemplateMessageBuilder data(List<WxMpTemplateData> data) {
98+
this.data = data;
99+
return this;
100+
}
101+
102+
public WxMpTemplateMessageBuilder from(WxMpTemplateMessage origin) {
103+
this.toUser(origin.toUser);
104+
this.templateId(origin.templateId);
105+
this.url(origin.url);
106+
this.topColor(origin.topColor);
107+
this.data(origin.data);
108+
return this;
109+
}
110+
111+
public WxMpTemplateMessage build() {
112+
WxMpTemplateMessage m = new WxMpTemplateMessage();
113+
m.toUser = this.toUser;
114+
m.templateId = this.templateId;
115+
m.url = this.url;
116+
m.topColor = this.topColor;
117+
m.data = this.data;
118+
return m;
119+
}
120+
}
121+
68122
}

weixin-java-mp/src/test/java/me/chanjar/weixin/mp/api/ApiTestModule.java

Lines changed: 4 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -3,24 +3,21 @@
33
import java.io.IOException;
44
import java.io.InputStream;
55

6-
import me.chanjar.weixin.mp.api.impl.WxMpServiceImpl;
7-
import org.apache.commons.lang3.builder.ToStringBuilder;
8-
96
import com.google.inject.Binder;
107
import com.google.inject.Module;
118
import com.thoughtworks.xstream.XStream;
12-
import com.thoughtworks.xstream.annotations.XStreamAlias;
139

1410
import me.chanjar.weixin.common.util.xml.XStreamInitializer;
11+
import me.chanjar.weixin.mp.api.impl.WxMpServiceImpl;
1512

1613
public class ApiTestModule implements Module {
1714

1815
@Override
1916
public void configure(Binder binder) {
2017
try (InputStream is1 = ClassLoader
2118
.getSystemResourceAsStream("test-config.xml")) {
22-
WxXmlMpInMemoryConfigStorage config = fromXml(
23-
WxXmlMpInMemoryConfigStorage.class, is1);
19+
WxXmlMpInMemoryConfigStorage config = this
20+
.fromXml(WxXmlMpInMemoryConfigStorage.class, is1);
2421
WxMpServiceImpl wxService = new WxMpServiceImpl();
2522
wxService.setWxMpConfigStorage(config);
2623

@@ -32,50 +29,11 @@ public void configure(Binder binder) {
3229
}
3330

3431
@SuppressWarnings("unchecked")
35-
public static <T> T fromXml(Class<T> clazz, InputStream is) {
32+
private <T> T fromXml(Class<T> clazz, InputStream is) {
3633
XStream xstream = XStreamInitializer.getInstance();
3734
xstream.alias("xml", clazz);
3835
xstream.processAnnotations(clazz);
3936
return (T) xstream.fromXML(is);
4037
}
4138

42-
@XStreamAlias("xml")
43-
public static class WxXmlMpInMemoryConfigStorage
44-
extends WxMpInMemoryConfigStorage {
45-
46-
private String openid;
47-
private String kfAccount;
48-
private String qrconnectRedirectUrl;
49-
50-
public String getOpenid() {
51-
return this.openid;
52-
}
53-
54-
public void setOpenid(String openid) {
55-
this.openid = openid;
56-
}
57-
58-
@Override
59-
public String toString() {
60-
return ToStringBuilder.reflectionToString(this);
61-
}
62-
63-
public String getKfAccount() {
64-
return this.kfAccount;
65-
}
66-
67-
public void setKfAccount(String kfAccount) {
68-
this.kfAccount = kfAccount;
69-
}
70-
71-
public String getQrconnectRedirectUrl() {
72-
return this.qrconnectRedirectUrl;
73-
}
74-
75-
public void setQrconnectRedirectUrl(String qrconnectRedirectUrl) {
76-
this.qrconnectRedirectUrl = qrconnectRedirectUrl;
77-
}
78-
79-
}
80-
8139
}

weixin-java-mp/src/test/java/me/chanjar/weixin/mp/api/WxMpMassMessageAPITest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ public class WxMpMassMessageAPITest {
3636
@Test
3737
public void testTextMassOpenIdsMessageSend() throws WxErrorException {
3838
// 发送群发消息
39-
ApiTestModule.WxXmlMpInMemoryConfigStorage configProvider = (ApiTestModule.WxXmlMpInMemoryConfigStorage) this.wxService
39+
WxXmlMpInMemoryConfigStorage configProvider = (WxXmlMpInMemoryConfigStorage) this.wxService
4040
.getWxMpConfigStorage();
4141
WxMpMassOpenIdsMessage massMessage = new WxMpMassOpenIdsMessage();
4242
massMessage.setMsgType(WxConsts.MASS_MSG_TEXT);
@@ -53,7 +53,7 @@ public void testTextMassOpenIdsMessageSend() throws WxErrorException {
5353
public void testMediaMassOpenIdsMessageSend(String massMsgType,
5454
String mediaId) throws WxErrorException {
5555
// 发送群发消息
56-
ApiTestModule.WxXmlMpInMemoryConfigStorage configProvider = (ApiTestModule.WxXmlMpInMemoryConfigStorage) this.wxService
56+
WxXmlMpInMemoryConfigStorage configProvider = (WxXmlMpInMemoryConfigStorage) this.wxService
5757
.getWxMpConfigStorage();
5858
WxMpMassOpenIdsMessage massMessage = new WxMpMassOpenIdsMessage();
5959
massMessage.setMsgType(massMsgType);
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
/**
2+
* Copyright(c) 2011-2016 by UCredit Inc.
3+
* All Rights Reserved
4+
*/
5+
package me.chanjar.weixin.mp.api;
6+
7+
import org.apache.commons.lang3.builder.ToStringBuilder;
8+
9+
import com.thoughtworks.xstream.annotations.XStreamAlias;
10+
11+
@XStreamAlias("xml")
12+
public class WxXmlMpInMemoryConfigStorage
13+
extends WxMpInMemoryConfigStorage {
14+
15+
private String openid;
16+
private String kfAccount;
17+
private String qrconnectRedirectUrl;
18+
private String templateId;
19+
20+
public String getOpenid() {
21+
return this.openid;
22+
}
23+
24+
public void setOpenid(String openid) {
25+
this.openid = openid;
26+
}
27+
28+
@Override
29+
public String toString() {
30+
return ToStringBuilder.reflectionToString(this);
31+
}
32+
33+
public String getKfAccount() {
34+
return this.kfAccount;
35+
}
36+
37+
public void setKfAccount(String kfAccount) {
38+
this.kfAccount = kfAccount;
39+
}
40+
41+
public String getQrconnectRedirectUrl() {
42+
return this.qrconnectRedirectUrl;
43+
}
44+
45+
public void setQrconnectRedirectUrl(String qrconnectRedirectUrl) {
46+
this.qrconnectRedirectUrl = qrconnectRedirectUrl;
47+
}
48+
49+
public String getTemplateId() {
50+
return this.templateId;
51+
}
52+
53+
public void setTemplateId(String templateId) {
54+
this.templateId = templateId;
55+
}
56+
57+
}

weixin-java-mp/src/test/java/me/chanjar/weixin/mp/api/impl/WxMpGroupServiceImplTest.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import com.google.inject.Inject;
44
import me.chanjar.weixin.common.exception.WxErrorException;
55
import me.chanjar.weixin.mp.api.ApiTestModule;
6+
import me.chanjar.weixin.mp.api.WxXmlMpInMemoryConfigStorage;
67
import me.chanjar.weixin.mp.bean.WxMpGroup;
78
import org.testng.Assert;
89
import org.testng.annotations.Guice;
@@ -48,13 +49,13 @@ public void getGroupUpdate() throws WxErrorException {
4849
}
4950

5051
public void testGroupQueryUserGroup() throws WxErrorException {
51-
ApiTestModule.WxXmlMpInMemoryConfigStorage configStorage = (ApiTestModule.WxXmlMpInMemoryConfigStorage) this.wxService.getWxMpConfigStorage();
52+
WxXmlMpInMemoryConfigStorage configStorage = (WxXmlMpInMemoryConfigStorage) this.wxService.getWxMpConfigStorage();
5253
long groupid = this.wxService.getGroupService().userGetGroup(configStorage.getOpenid());
5354
Assert.assertTrue(groupid != -1l);
5455
}
5556

5657
public void testGroupMoveUser() throws WxErrorException {
57-
ApiTestModule.WxXmlMpInMemoryConfigStorage configStorage = (ApiTestModule.WxXmlMpInMemoryConfigStorage) this.wxService.getWxMpConfigStorage();
58+
WxXmlMpInMemoryConfigStorage configStorage = (WxXmlMpInMemoryConfigStorage) this.wxService.getWxMpConfigStorage();
5859
this.wxService.getGroupService().userUpdateGroup(configStorage.getOpenid(), this.wxService.getGroupService().groupGet().get(3).getId());
5960
}
6061

weixin-java-mp/src/test/java/me/chanjar/weixin/mp/api/impl/WxMpKefuServiceImplTest.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
import me.chanjar.weixin.common.api.WxConsts;
1515
import me.chanjar.weixin.common.exception.WxErrorException;
1616
import me.chanjar.weixin.mp.api.ApiTestModule;
17-
import me.chanjar.weixin.mp.api.ApiTestModule.WxXmlMpInMemoryConfigStorage;
17+
import me.chanjar.weixin.mp.api.WxXmlMpInMemoryConfigStorage;
1818
import me.chanjar.weixin.mp.bean.WxMpCustomMessage;
1919
import me.chanjar.weixin.mp.bean.kefu.request.WxMpKfAccountRequest;
2020
import me.chanjar.weixin.mp.bean.kefu.result.WxMpKfInfo;
@@ -38,7 +38,7 @@ public class WxMpKefuServiceImplTest {
3838
protected WxMpServiceImpl wxService;
3939

4040
public void testSendCustomMessage() throws WxErrorException {
41-
ApiTestModule.WxXmlMpInMemoryConfigStorage configStorage = (ApiTestModule.WxXmlMpInMemoryConfigStorage) this.wxService
41+
WxXmlMpInMemoryConfigStorage configStorage = (WxXmlMpInMemoryConfigStorage) this.wxService
4242
.getWxMpConfigStorage();
4343
WxMpCustomMessage message = new WxMpCustomMessage();
4444
message.setMsgType(WxConsts.CUSTOM_MSG_TEXT);
@@ -50,7 +50,7 @@ public void testSendCustomMessage() throws WxErrorException {
5050
}
5151

5252
public void testSendCustomMessageWithKfAccount() throws WxErrorException {
53-
ApiTestModule.WxXmlMpInMemoryConfigStorage configStorage = (ApiTestModule.WxXmlMpInMemoryConfigStorage) this.wxService
53+
WxXmlMpInMemoryConfigStorage configStorage = (WxXmlMpInMemoryConfigStorage) this.wxService
5454
.getWxMpConfigStorage();
5555
WxMpCustomMessage message = new WxMpCustomMessage();
5656
message.setMsgType(WxConsts.CUSTOM_MSG_TEXT);

weixin-java-mp/src/test/java/me/chanjar/weixin/mp/api/impl/WxMpPayServiceImplTest.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77

88
import me.chanjar.weixin.common.exception.WxErrorException;
99
import me.chanjar.weixin.mp.api.ApiTestModule;
10+
import me.chanjar.weixin.mp.api.WxXmlMpInMemoryConfigStorage;
1011
import me.chanjar.weixin.mp.bean.pay.WxRedpackResult;
1112
import me.chanjar.weixin.mp.bean.pay.WxSendRedpackRequest;
1213
import me.chanjar.weixin.mp.bean.pay.WxUnifiedOrderRequest;
@@ -71,7 +72,7 @@ public void testSendRedpack() throws Exception {
7172
request.setClientIp("aaa");
7273
request.setMchBillno("aaaa");
7374
request
74-
.setReOpenid(((ApiTestModule.WxXmlMpInMemoryConfigStorage) this.wxService.getWxMpConfigStorage()).getOpenid());
75+
.setReOpenid(((WxXmlMpInMemoryConfigStorage) this.wxService.getWxMpConfigStorage()).getOpenid());
7576
WxRedpackResult redpackResult = this.wxService.getPayService().sendRedpack(request);
7677
System.err.println(redpackResult);
7778
}

weixin-java-mp/src/test/java/me/chanjar/weixin/mp/api/impl/WxMpServiceImplTest.java

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,20 @@
11
package me.chanjar.weixin.mp.api.impl;
22

3+
import java.text.SimpleDateFormat;
4+
import java.util.Date;
5+
36
import org.testng.Assert;
47
import org.testng.annotations.Guice;
58
import org.testng.annotations.Test;
69

710
import com.google.inject.Inject;
811

912
import me.chanjar.weixin.common.api.WxConsts;
13+
import me.chanjar.weixin.common.exception.WxErrorException;
1014
import me.chanjar.weixin.mp.api.ApiTestModule;
11-
import me.chanjar.weixin.mp.api.ApiTestModule.WxXmlMpInMemoryConfigStorage;
15+
import me.chanjar.weixin.mp.api.WxXmlMpInMemoryConfigStorage;
16+
import me.chanjar.weixin.mp.bean.WxMpTemplateData;
17+
import me.chanjar.weixin.mp.bean.WxMpTemplateMessage;
1218

1319
@Test
1420
@Guice(modules = ApiTestModule.class)
@@ -82,9 +88,18 @@ public void testShortUrl() {
8288
Assert.fail("Not yet implemented");
8389
}
8490

85-
@Test
86-
public void testTemplateSend() {
87-
Assert.fail("Not yet implemented");
91+
@Test(invocationCount = 100, threadPoolSize = 30)
92+
public void testTemplateSend() throws WxErrorException {
93+
SimpleDateFormat dateFormat = new SimpleDateFormat(
94+
"yyyy-MM-dd HH:mm:ss.SSS");
95+
WxXmlMpInMemoryConfigStorage configStorage = (WxXmlMpInMemoryConfigStorage) this.wxService
96+
.getWxMpConfigStorage();
97+
WxMpTemplateMessage templateMessage = WxMpTemplateMessage.builder()
98+
.toUser(configStorage.getOpenid())
99+
.templateId(configStorage.getTemplateId()).build();
100+
templateMessage.addWxMpTemplateData(
101+
new WxMpTemplateData("first", dateFormat.format(new Date())));
102+
this.wxService.templateSend(templateMessage);
88103
}
89104

90105
@Test

0 commit comments

Comments
 (0)