🆕 #2356 【公众号】新增草稿箱和发布相关的接口

This commit is contained in:
dragon
2021-10-23 23:23:18 +08:00
committed by GitHub
parent 8c787d1638
commit 5755c293df
20 changed files with 1330 additions and 3 deletions

View File

@ -0,0 +1,127 @@
package me.chanjar.weixin.mp.api.impl;
import com.google.inject.Inject;
import me.chanjar.weixin.common.error.WxErrorException;
import me.chanjar.weixin.mp.api.WxMpService;
import me.chanjar.weixin.mp.api.test.ApiTestModule;
import me.chanjar.weixin.mp.bean.draft.WxMpAddDraft;
import me.chanjar.weixin.mp.bean.draft.WxMpDraftArticles;
import me.chanjar.weixin.mp.bean.draft.WxMpDraftInfo;
import me.chanjar.weixin.mp.bean.draft.WxMpDraftList;
import me.chanjar.weixin.mp.bean.draft.WxMpUpdateDraft;
import org.testng.annotations.Guice;
import org.testng.annotations.Test;
import java.util.ArrayList;
import java.util.List;
import static org.assertj.core.api.Assertions.assertThat;
/**
* 草稿箱单元测试.
*
* @author dragon
* @date 2021-10-22
*/
@Guice(modules = ApiTestModule.class)
public class WxMpDraftServiceImplTest {
/**
* 1.先上传一个永久图片素材me.chanjar.weixin.mp.api.impl.WxMpMaterialServiceImplTest.testUploadMaterial
* 2.后续图文需要设置一个永久素材id
*/
final String thumbMediaId = "zUUtT8ZYeXzZ4slFbtnAkh7Yd-f45DbFoF9ERzVC6s4";
/**
* 新增草稿后返回的id后续查询、修改、删除获取等需要使用
*/
final String mediaId = "zUUtT8ZYeXzZ4slFbtnAkpgGKyqnTsjtUvMdVBRWJVk";
@Inject
protected WxMpService wxService;
@Test
public void testAddDraft() throws WxErrorException {
// {"mediaId":"zUUtT8ZYeXzZ4slFbtnAkh7Yd-f45DbFoF9ERzVC6s4","url":"http://mmbiz.qpic.cn/mmbiz_jpg/fLtyChQRfH84IyicNUbGt3l3IlHxJRibSFz7Tky0ibmzKykzVbo9tZGYhXQGJ2npFtDPbvPhKYxBz6JxkYIibTmUicQ/0?wx_fmt=jpeg"}
this.wxService.getDraftService().addDraft("标题", "图文消息的具体内容", thumbMediaId);
// 【响应数据】:{"media_id":"zUUtT8ZYeXzZ4slFbtnAks-nZeGiPQmwvhShTh72CqM","item":[]}
}
@Test
public void testAddGuide_another() throws WxErrorException {
List<WxMpDraftArticles> draftArticleList = new ArrayList<>();
WxMpDraftArticles draftArticle = WxMpDraftArticles.builder()
.title("新建草稿-对象形式")
.author("dragon")
.digest("图文消息的摘要,仅有单图文消息才有摘要,多图文此处为空")
.content("图文消息的具体内容支持HTML标签必须少于2万字符小于1M且此处会去除JS")
.contentSourceUrl("https://github.com/Wechat-Group/WxJava")
.thumbMediaId(thumbMediaId)
// 显示封面、打开评论、所有人可评论
.showCoverPic(1).needOpenComment(1).onlyFansCanComment(0)
.build();
draftArticleList.add(draftArticle);
WxMpAddDraft addDraft = WxMpAddDraft.builder().articles(draftArticleList).build();
String mediaId = this.wxService.getDraftService().addDraft(addDraft);
// 【响应数据】:{"media_id":"zUUtT8ZYeXzZ4slFbtnAkpgGKyqnTsjtUvMdVBRWJVk","item":[]}
assertThat(mediaId).isNotNull();
}
@Test
public void testGetDraft() throws WxErrorException {
final WxMpDraftInfo draftInfo = this.wxService.getDraftService().getDraft(mediaId);
assertThat(draftInfo).isNotNull();
// 【响应数据】:{"news_item":[{"title":"标题","author":"","digest":"图文消息的具体内容","content":"图文消息的具体内容","content_source_url":"","thumb_media_id":"zUUtT8ZYeXzZ4slFbtnAkh7Yd-f45DbFoF9ERzVC6s4","show_cover_pic":1,"url":"http:\/\/mp.weixin.qq.com\/s?__biz=Mzk0OTI5MzM1OQ==&mid=100000006&idx=1&sn=89903965ae5ebd6014903c7c5ca34daa&chksm=435bd946742c5050d18da32289904db5ede8bbd157d181438231a1762b85030419b3c0ed4c00#rd","thumb_url":"http:\/\/mmbiz.qpic.cn\/mmbiz_jpg\/fLtyChQRfH84IyicNUbGt3l3IlHxJRibSFz7Tky0ibmzKykzVbo9tZGYhXQGJ2npFtDPbvPhKYxBz6JxkYIibTmUicQ\/0?wx_fmt=jpeg","need_open_comment":0,"only_fans_can_comment":0}],"create_time":1634886802,"update_time":1634886802}
}
@Test
public void testUpdateDraft() throws WxErrorException {
WxMpDraftArticles draftArticles = WxMpDraftArticles.builder()
.title("新标题").content("新图文消息的具体内容").thumbMediaId(thumbMediaId).build();
WxMpUpdateDraft updateDraft = WxMpUpdateDraft.builder()
.mediaId(mediaId)
.index(0)
.articles(draftArticles)
.build();
Boolean updateDraftResult = this.wxService.getDraftService().updateDraft(updateDraft);
// assertThat(updateDraftResult).isTrue();
assertThat(updateDraftResult).isTrue();
}
@Test
public void testDelDraft() throws WxErrorException {
Boolean delDraftResult = this.wxService.getDraftService().delDraft(mediaId);
// 【响应数据】:{"errcode":0,"errmsg":"ok"}
assertThat(delDraftResult).isTrue();
}
@Test
public void testListDraft() throws WxErrorException {
WxMpDraftList draftList = this.wxService.getDraftService().listDraft(0, 10);
/*
【响应数据】:{"item":[{"media_id":"zUUtT8ZYeXzZ4slFbtnAks-nZeGiPQmwvhShTh72CqM",
"content":{
"news_item":
[
{"title":"标题","author":"","digest":"图文消息的具体内容","content":"图文消息的具体内容",
"content_source_url":"","thumb_media_id":"zUUtT8ZYeXzZ4slFbtnAkh7Yd-f45DbFoF9ERzVC6s4",
"show_cover_pic":1,"url":"http:\/\/mp.weixin.qq.com\/s?__biz=Mzk0OTI5MzM1?wx_fmt=jpeg",
"need_open_comment":0,"only_fans_can_comment":0}],
"create_time":1634886802,"update_time":1634886802},"update_time":1634886802}
]
,"total_count":1,"item_count":1}
*/
assertThat(draftList).isNotNull();
}
@Test
public void testCountDraft() throws WxErrorException {
Long countDraft = this.wxService.getDraftService().countDraft();
// 【响应数据】:{"total_count":1}
assertThat(countDraft).isNotNull();
}
}

View File

@ -0,0 +1,109 @@
package me.chanjar.weixin.mp.api.impl;
import com.google.inject.Inject;
import me.chanjar.weixin.common.error.WxErrorException;
import me.chanjar.weixin.mp.api.WxMpService;
import me.chanjar.weixin.mp.api.test.ApiTestModule;
import me.chanjar.weixin.mp.bean.freepublish.WxMpFreePublishInfo;
import me.chanjar.weixin.mp.bean.freepublish.WxMpFreePublishList;
import me.chanjar.weixin.mp.bean.freepublish.WxMpFreePublishStatus;
import org.testng.annotations.Guice;
import org.testng.annotations.Test;
import static org.assertj.core.api.Assertions.assertThat;
/**
* 发布能力-单元测试.
*
* @author dragon
* @date 2021-10-23
*/
@Guice(modules = ApiTestModule.class)
public class WxMpFreePublishServiceImplTest {
/**
* 新增草稿后返回的id发布需要使用
*/
final String mediaId = "HKVdzjkDfooMqBqJtvSs2EEeRAJaM33gJgkii_JDOHg";
/**
* 发布后的id后续查询等需要使用
*/
final String publishId = "2650177669";
/**
* 图文的 article_id后续查询图文详情、删除发布内容 需要使用
* 要根据 publishId 来获取 article_id
*
* @see this.testGetPushStatus
*/
final String articleId = "zjMKVd1g66BkEkpetwml4ElbDdniE8JeI2Ec324Sjqg";
@Inject
protected WxMpService wxService;
@Test
public void testSubmit() throws WxErrorException {
String submit = this.wxService.getFreePublishService().submit(mediaId);
assertThat(submit).isNotBlank();
// 【响应数据】:{"errcode":0,"errmsg":"ok","publish_id":2650177668}
}
@Test
public void testGetPushStatus() throws WxErrorException {
WxMpFreePublishStatus pushStatus = this.wxService.getFreePublishService().getPushStatus(publishId);
assertThat(pushStatus).isNotNull();
// 【响应数据】:{"publish_id":2650177668,"publish_status":0,"article_id":"zjMKVd1g66BkEkpetwml4J-4gNf4I1nsh-B-r_inemw",
// "article_detail":{"count":1,"item":
// [{"idx":1,"article_url":
// "https://mp.weixin.qq.com/s?__biz=MzAwMTE2MzA1xxxxxxxxxx"
// }]},"fail_idx":[]}
// article_url -> 已发布内容可被自定义菜单、自动回复、话题引用,也可用于公开传播
}
@Test
public void testGetArticleFromId() throws WxErrorException {
WxMpFreePublishInfo articleFromId = this.wxService.getFreePublishService().getArticleFromId(articleId);
assertThat(articleFromId).isNotNull();
/* 【响应数据】:{"news_item":[{"title":"欢迎你加入啊~ 这是我的第一条文字消息草稿","author":"","digest":"","content":"欢迎你加入啊~ 这是我的第一条文字消息草稿",
"content_source_url":"","thumb_media_id":"","show_cover_pic":0,"url":"http:\/\/mp.weixin.qq
.com\/s?__biz=MzAwMTE2MzA1Mg==&mid=2650177668","thumb_url":"","need_open_comment":1,"only_fans_can_comment":1,"is_deleted":false}],
"create_time":1634961670,"update_time":1634961672}
*/
}
@Test
public void testDelPush() throws WxErrorException {
Boolean deletePush = this.wxService.getFreePublishService().deletePush(articleId, 0);
// 【响应数据】:{"errcode":0,"errmsg":"ok"}
assertThat(deletePush).isTrue();
}
@Test
public void testDeletePushAllArticle() throws WxErrorException {
Boolean deletePush = this.wxService.getFreePublishService().deletePushAllArticle(articleId);
// 【响应数据】:{"errcode":0,"errmsg":"ok"}
assertThat(deletePush).isTrue();
}
@Test
public void testGetPublicationRecords() throws WxErrorException {
WxMpFreePublishList publicationRecords = this.wxService.getFreePublishService().getPublicationRecords(0, 10, 0);
/*
【响应数据】:
{"item":[{"article_id":"zjMKVd1g66BkEkpetwml4BOSzatuEYNY3TFhCc0kSIE","content":{"news_item":[
{"title":"新建草稿-对象形式","author":"dragon","digest":"图文消息的摘要,仅有单图文消息才有摘要,多图文此处为空",
"content":"图文消息的具体内容支持HTML标签必须少于2万字符小于1M且此处会去除JS",
"content_source_url":"https:\/\/github.com\/Wechat-Group\/WxJava","thumb_media_id":"HKVdzjkDfooMqBqJtvSs2Ajz2v6L_vtGhyyr_mqKcPU",
"show_cover_pic":1,"url":"http:\/\/mp.weixin.qq.com\/s?__biz=MzAwMTE2MzA1Mg==&mid=26501776710e5adb91#rd",
"thumb_url":"http:\/\/mmbiz.qpic.cn\/mmbiz_jpg\/0QSAUfroWrUmxHthQ\/0?wx_fmt=jpeg",
"need_open_comment":1,"only_fans_can_comment":0,"is_deleted":false}],
"create_time":1634976306,"update_time":1634976318}}
]
,"total_count":1,"item_count":1}
*/
assertThat(publicationRecords).isNotNull();
}
}