From b3234a059b36b1701ff53add8262d68ff667f8d8 Mon Sep 17 00:00:00 2001 From: BinaryWang Date: Thu, 22 Sep 2016 16:07:01 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B0=83=E6=95=B4=E9=83=A8=E5=88=86=E7=B4=A0?= =?UTF-8?q?=E6=9D=90=E7=AE=A1=E7=90=86=E7=9A=84=E5=8D=95=E5=85=83=E6=B5=8B?= =?UTF-8?q?=E8=AF=95=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mp/api/impl/WxMpMaterialServiceImpl.java | 5 +- .../api/impl/WxMpMaterialServiceImplTest.java | 89 ++++++++----------- 2 files changed, 42 insertions(+), 52 deletions(-) diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/impl/WxMpMaterialServiceImpl.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/impl/WxMpMaterialServiceImpl.java index c6825815..310bbe78 100644 --- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/impl/WxMpMaterialServiceImpl.java +++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/impl/WxMpMaterialServiceImpl.java @@ -50,7 +50,10 @@ public class WxMpMaterialServiceImpl implements WxMpMaterialService { @Override public File mediaDownload(String media_id) throws WxErrorException { String url = MEDIA_API_URL_PREFIX + "/get"; - return this.wxMpService.execute(new MediaDownloadRequestExecutor(this.wxMpService.getWxMpConfigStorage().getTmpDirFile()), url, "media_id=" + media_id); + return this.wxMpService.execute( + new MediaDownloadRequestExecutor(this.wxMpService.getWxMpConfigStorage().getTmpDirFile()), + url, + "media_id=" + media_id); } @Override diff --git a/weixin-java-mp/src/test/java/me/chanjar/weixin/mp/api/impl/WxMpMaterialServiceImplTest.java b/weixin-java-mp/src/test/java/me/chanjar/weixin/mp/api/impl/WxMpMaterialServiceImplTest.java index ed67a79b..5cde8adc 100644 --- a/weixin-java-mp/src/test/java/me/chanjar/weixin/mp/api/impl/WxMpMaterialServiceImplTest.java +++ b/weixin-java-mp/src/test/java/me/chanjar/weixin/mp/api/impl/WxMpMaterialServiceImplTest.java @@ -1,26 +1,6 @@ package me.chanjar.weixin.mp.api.impl; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertTrue; - -import java.io.File; -import java.io.IOException; -import java.io.InputStream; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.Iterator; -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; -import java.util.UUID; - -import org.testng.annotations.DataProvider; -import org.testng.annotations.Guice; -import org.testng.annotations.Test; - import com.google.inject.Inject; - import me.chanjar.weixin.common.api.WxConsts; import me.chanjar.weixin.common.bean.result.WxMediaUploadResult; import me.chanjar.weixin.common.exception.WxErrorException; @@ -29,11 +9,17 @@ import me.chanjar.weixin.mp.api.ApiTestModule; import me.chanjar.weixin.mp.bean.WxMpMaterial; import me.chanjar.weixin.mp.bean.WxMpMaterialArticleUpdate; import me.chanjar.weixin.mp.bean.WxMpMaterialNews; -import me.chanjar.weixin.mp.bean.result.WxMpMaterialCountResult; -import me.chanjar.weixin.mp.bean.result.WxMpMaterialFileBatchGetResult; -import me.chanjar.weixin.mp.bean.result.WxMpMaterialNewsBatchGetResult; -import me.chanjar.weixin.mp.bean.result.WxMpMaterialUploadResult; -import me.chanjar.weixin.mp.bean.result.WxMpMaterialVideoInfoResult; +import me.chanjar.weixin.mp.bean.result.*; +import org.testng.annotations.DataProvider; +import org.testng.annotations.Guice; +import org.testng.annotations.Test; + +import java.io.File; +import java.io.IOException; +import java.io.InputStream; +import java.util.*; + +import static org.junit.Assert.*; /** * 素材管理相关接口的测试 @@ -48,7 +34,7 @@ public class WxMpMaterialServiceImplTest { @Inject protected WxMpServiceImpl wxService; - private Map> media_ids = new LinkedHashMap<>(); + private Map> mediaIds = new LinkedHashMap<>(); // 缩略图的id,测试上传图文使用 private String thumbMediaId = ""; // 单图文消息media_id @@ -59,7 +45,7 @@ public class WxMpMaterialServiceImplTest { private WxMpMaterialCountResult wxMaterialCountResultBeforeTest; @DataProvider - public Object[][] uploadMedia() { + public Object[][] mediaFiles() { return new Object[][] { new Object[] { WxConsts.MEDIA_IMAGE, WxConsts.FILE_JPG, "mm.jpeg" }, new Object[] { WxConsts.MEDIA_VOICE, WxConsts.FILE_MP3, "mm.mp3" }, @@ -68,7 +54,7 @@ public class WxMpMaterialServiceImplTest { }; } - @Test(dataProvider = "uploadMedia") + @Test(dataProvider = "mediaFiles") public void testUploadMaterial(String mediaType, String fileType, String fileName) throws WxErrorException, IOException { if (this.wxMaterialCountResultBeforeTest == null) { this.wxMaterialCountResultBeforeTest = this.wxService.getMaterialService() @@ -104,7 +90,7 @@ public class WxMpMaterialServiceImplTest { materialInfo.put("media_id", res.getMediaId()); materialInfo.put("length", tempFile.length()); materialInfo.put("filename", tempFile.getName()); - this.media_ids.put(res.getMediaId(), materialInfo); + this.mediaIds.put(res.getMediaId(), materialInfo); System.out.println(res); } @@ -172,18 +158,18 @@ public class WxMpMaterialServiceImplTest { } @Test(dependsOnMethods = {"testMaterialCount"}, dataProvider = "downloadMaterial") - public void testDownloadMaterial(String media_id) throws WxErrorException, IOException { - Map materialInfo = this.media_ids.get(media_id); + public void testDownloadMaterial(String mediaId) throws WxErrorException, IOException { + Map materialInfo = this.mediaIds.get(mediaId); assertNotNull(materialInfo); String filename = materialInfo.get("filename").toString(); if (filename.endsWith(".mp3") || filename.endsWith(".jpeg")) { try (InputStream inputStream = this.wxService.getMaterialService() - .materialImageOrVoiceDownload(media_id)) { + .materialImageOrVoiceDownload(mediaId)) { assertNotNull(inputStream); } } if (filename.endsWith("mp4")) { - WxMpMaterialVideoInfoResult wxMaterialVideoInfoResult = this.wxService.getMaterialService().materialVideoInfo(media_id); + WxMpMaterialVideoInfoResult wxMaterialVideoInfoResult = this.wxService.getMaterialService().materialVideoInfo(mediaId); assertNotNull(wxMaterialVideoInfoResult); assertNotNull(wxMaterialVideoInfoResult.getDownUrl()); } @@ -260,9 +246,9 @@ public class WxMpMaterialServiceImplTest { @DataProvider public Object[][] downloadMaterial() { - Object[][] params = new Object[this.media_ids.size()][]; + Object[][] params = new Object[this.mediaIds.size()][]; int index = 0; - for (String mediaId : this.media_ids.keySet()) { + for (String mediaId : this.mediaIds.keySet()) { params[index] = new Object[]{mediaId}; index++; } @@ -272,7 +258,7 @@ public class WxMpMaterialServiceImplTest { @DataProvider public Iterator allTestMaterial() { List params = new ArrayList<>(); - for (String mediaId : this.media_ids.keySet()) { + for (String mediaId : this.mediaIds.keySet()) { params.add(new Object[]{mediaId}); } params.add(new Object[]{this.singleNewsMediaId}); @@ -281,8 +267,8 @@ public class WxMpMaterialServiceImplTest { } // 以下为media接口的测试 - private List mediaIds = new ArrayList<>(); - @Test(dataProvider="uploadMedia") + private List mediaIdsToDownload = new ArrayList<>(); + @Test(dataProvider="mediaFiles") public void testUploadMedia(String mediaType, String fileType, String fileName) throws WxErrorException, IOException { try(InputStream inputStream = ClassLoader.getSystemResourceAsStream(fileName)){ WxMediaUploadResult res = this.wxService.getMaterialService().mediaUpload(mediaType, fileType, inputStream); @@ -290,31 +276,32 @@ public class WxMpMaterialServiceImplTest { assertNotNull(res.getCreatedAt()); assertTrue(res.getMediaId() != null || res.getThumbMediaId() != null); - if (res.getMediaId() != null) { - this.mediaIds.add(res.getMediaId()); + if (res.getMediaId() != null && !mediaType.equals(WxConsts.MEDIA_VIDEO)) { + //video 不支持下载,所以不加入 + this.mediaIdsToDownload.add(res.getMediaId()); } if (res.getThumbMediaId() != null) { - this.mediaIds.add(res.getThumbMediaId()); + this.mediaIdsToDownload.add(res.getThumbMediaId()); } System.out.println(res); } } - @Test(dependsOnMethods = { "testUploadMedia" }, dataProvider="downloadMedia") - public void testDownloadMedia(String media_id) throws WxErrorException { - File file = this.wxService.getMaterialService().mediaDownload(media_id); - assertNotNull(file); - System.out.println(file.getAbsolutePath()); - } - @DataProvider public Object[][] downloadMedia() { - Object[][] params = new Object[this.mediaIds.size()][]; - for (int i = 0; i < this.mediaIds.size(); i++) { - params[i] = new Object[] { this.mediaIds.get(i) }; + Object[][] params = new Object[this.mediaIdsToDownload.size()][]; + for (int i = 0; i < this.mediaIdsToDownload.size(); i++) { + params[i] = new Object[] { this.mediaIdsToDownload.get(i) }; } return params; } + + @Test(dependsOnMethods = { "testUploadMedia" }, dataProvider="downloadMedia") + public void testDownloadMedia(String mediaId) throws WxErrorException { + File file = this.wxService.getMaterialService().mediaDownload(mediaId); + assertNotNull(file); + System.out.println(file.getAbsolutePath()); + } }