PageRenderTime 80ms CodeModel.GetById 29ms RepoModel.GetById 2ms app.codeStats 0ms

/Senparc.Weixin.MP/Senparc.Weixin.MP.Test/Helpers/EntityHelperTest.cs

https://github.com/mjhuangzk/WeiXinMPSDK
C# | 145 lines | 126 code | 17 blank | 2 comment | 0 complexity | 7462852f06c3c690f760616aae030f1d MD5 | raw file
Possible License(s): BSD-2-Clause, BSD-3-Clause
  1. using System;
  2. using System.Linq;
  3. using System.Xml.Linq;
  4. using Microsoft.VisualStudio.TestTools.UnitTesting;
  5. namespace Senparc.Weixin.MP.Test
  6. {
  7. using Senparc.Weixin.MP.Entities;
  8. using Senparc.Weixin.MP.Helpers;
  9. [TestClass]
  10. public class EntityHelperTest
  11. {
  12. string xml = @"<?xml version=""1.0"" encoding=""utf-8""?>
  13. <xml>
  14. <ToUserName><![CDATA[gh_a96a4a619366]]></ToUserName>
  15. <FromUserName><![CDATA[olPjZjsXuQPJoV0HlruZkNzKc91E]]></FromUserName>
  16. <CreateTime>1357986928</CreateTime>
  17. <MsgType><![CDATA[text]]></MsgType>
  18. <Content><![CDATA[TNT2]]></Content>
  19. <MsgId>5832509444155992350</MsgId>
  20. </xml>
  21. ";
  22. [TestMethod]
  23. public void FillEntityWithXmlTest()
  24. {
  25. var doc = XDocument.Parse(xml);
  26. var entity = RequestMessageFactory.GetRequestEntity(doc);
  27. EntityHelper.FillEntityWithXml(entity as RequestMessageBase, doc);
  28. Assert.AreEqual("gh_a96a4a619366", entity.ToUserName);
  29. Assert.AreEqual(RequestMsgType.Text, entity.MsgType);
  30. }
  31. [TestMethod]
  32. public void ConvertEntityToXmlTest()
  33. {
  34. var doc = XDocument.Parse(xml);
  35. var requestEntity = RequestMessageFactory.GetRequestEntity(doc);
  36. {
  37. //Text
  38. var responseText =
  39. ResponseMessageBase.CreateFromRequestMessage(requestEntity, ResponseMsgType.Text) as
  40. ResponseMessageText;
  41. Assert.IsNotNull(responseText);
  42. responseText.Content = "新内容";
  43. var responseDoc = EntityHelper.ConvertEntityToXml(responseText);
  44. Console.WriteLine(responseDoc.ToString());
  45. Assert.AreEqual("新内容", responseDoc.Root.Element("Content").Value);
  46. }
  47. {
  48. //News
  49. var responseNews =
  50. ResponseMessageBase.CreateFromRequestMessage(requestEntity, ResponseMsgType.News) as
  51. ResponseMessageNews;
  52. Assert.IsNotNull(responseNews);
  53. responseNews.Articles.Add(new Article()
  54. {
  55. Description = "测试说明",
  56. Title = "测试标题",
  57. Url = "http://www.senparc.com",
  58. PicUrl = "http://img.senparc.com/images/v2/logo.jpg'"
  59. });
  60. Assert.AreEqual(1, responseNews.ArticleCount);
  61. var responseDoc = EntityHelper.ConvertEntityToXml(responseNews);
  62. Console.WriteLine(responseDoc.ToString());
  63. }
  64. }
  65. [TestMethod]
  66. public void ConvertEntityToXml_ImageTest()
  67. {
  68. var imageXML = @"<?xml version=""1.0"" encoding=""utf-8""?>
  69. <xml>
  70. <ToUserName><![CDATA[gh_a96a4a619366]]></ToUserName>
  71. <FromUserName><![CDATA[olPjZjsXuQPJoV0HlruZkNzKc91E]]></FromUserName>
  72. <CreateTime>1357996976</CreateTime>
  73. <MsgType><![CDATA[image]]></MsgType>
  74. <PicUrl><![CDATA[http://mmsns.qpic.cn/mmsns/ZxBXNzgHyUqazGkXUvujSOOHruk6XP5P9984HOCSATlW1orZDlpdCA/0]]></PicUrl>
  75. <MsgId>5832552599987382826</MsgId>
  76. </xml>";
  77. var doc = XDocument.Parse(imageXML);
  78. var requestEntity = RequestMessageFactory.GetRequestEntity(doc) as RequestMessageImage;
  79. Assert.IsNotNull(requestEntity);
  80. var responseNews =
  81. ResponseMessageBase.CreateFromRequestMessage(requestEntity, ResponseMsgType.News) as
  82. ResponseMessageNews;
  83. Assert.IsNotNull(responseNews);
  84. responseNews.Articles.Add(new Article()
  85. {
  86. Description = "测试说明",
  87. Title = "测试标题",
  88. Url = "http://www.senparc.com",
  89. PicUrl = requestEntity.PicUrl
  90. });
  91. Assert.AreEqual(1, responseNews.ArticleCount);
  92. var responseDoc = EntityHelper.ConvertEntityToXml(responseNews);
  93. Console.WriteLine(responseDoc.ToString());
  94. Assert.AreEqual(requestEntity.PicUrl, responseDoc.Root.Element("Articles").Elements("item").First().Element("PicUrl").Value);
  95. }
  96. [TestMethod]
  97. public void ConvertEntityToXml_MusicTest()
  98. {
  99. var voiceTest = @"<?xml version=""1.0"" encoding=""utf-8""?>
  100. <xml>
  101. <ToUserName><![CDATA[gh_a96a4a619366]]></ToUserName>
  102. <FromUserName><![CDATA[olPjZjsXuQPJoV0HlruZkNzKc91E]]></FromUserName>
  103. <CreateTime>1361430302</CreateTime>
  104. <MsgType><![CDATA[voice]]></MsgType>
  105. <MediaId><![CDATA[X1yfgB2XI-faU6R2jmKz0X1JZmPCxIvM-9ktt4K92BB9577SCi41S-qMl60q5DJo]]></MediaId>
  106. <Format><![CDATA[amr]]></Format>
  107. <MsgId>5847298622973403529</MsgId>
  108. </xml>";
  109. var doc = XDocument.Parse(voiceTest);
  110. var requestEntity = RequestMessageFactory.GetRequestEntity(doc) as RequestMessageVoice;
  111. Assert.IsNotNull(requestEntity);
  112. var responseMusic =
  113. ResponseMessageBase.CreateFromRequestMessage(requestEntity, ResponseMsgType.Music) as
  114. ResponseMessageMusic;
  115. Assert.IsNotNull(responseMusic);
  116. responseMusic.Music.Title = "测试Music";
  117. responseMusic.Music.Description = "测试Music的说明";
  118. responseMusic.Music.MusicUrl = "http://weixin.senparc.com/Content/music1.mp3";
  119. responseMusic.Music.HQMusicUrl = "http://weixin.senparc.com/Content/music2.mp3";
  120. var responseDoc = EntityHelper.ConvertEntityToXml(responseMusic);
  121. Console.WriteLine(responseDoc.ToString());
  122. Assert.AreEqual(responseMusic.Music.Title, responseDoc.Root.Element("Music").Element("Title").Value);
  123. Assert.AreEqual(responseMusic.Music.Description, responseDoc.Root.Element("Music").Element("Description").Value);
  124. Assert.AreEqual(responseMusic.Music.MusicUrl, responseDoc.Root.Element("Music").Element("MusicUrl").Value);
  125. Assert.AreEqual(responseMusic.Music.HQMusicUrl, responseDoc.Root.Element("Music").Element("HQMusicUrl").Value);
  126. }
  127. }
  128. }