package me.chanjar.weixin.mp.bean;

import me.chanjar.weixin.common.api.WxConsts;
import org.testng.Assert;
import org.testng.annotations.Test;

@Test
public class WxMpXmlMessageTest {

  public void testFromXml() {

    String xml = "<xml>"
                + "<ToUserName><![CDATA[toUser]]></ToUserName>"
                + "<FromUserName><![CDATA[fromUser]]></FromUserName> "
                + "<CreateTime>1348831860</CreateTime>"
                + "<MsgType><![CDATA[text]]></MsgType>"
                + "<Content><![CDATA[this is a test]]></Content>"
                + "<MsgId>1234567890123456</MsgId>"
                + "<PicUrl><![CDATA[this is a url]]></PicUrl>"
                + "<MediaId><![CDATA[media_id]]></MediaId>"
                + "<Format><![CDATA[Format]]></Format>"
                + "<ThumbMediaId><![CDATA[thumb_media_id]]></ThumbMediaId>"
                + "<Location_X>23.134521</Location_X>"
                + "<Location_Y>113.358803</Location_Y>"
                + "<Scale>20</Scale>"
                + "<Label><![CDATA[位置信息]]></Label>"
                + "<Description><![CDATA[公众平台官网链接]]></Description>"
                + "<Url><![CDATA[url]]></Url>"
                + "<Title><![CDATA[公众平台官网链接]]></Title>"
                + "<Event><![CDATA[subscribe]]></Event>"
                + "<EventKey><![CDATA[qrscene_123123]]></EventKey>"
                + "<Ticket><![CDATA[TICKET]]></Ticket>"
                + "<Latitude>23.137466</Latitude>"
                + "<Longitude>113.352425</Longitude>"
                + "<Precision>119.385040</Precision>"
                + "<ScanCodeInfo>"
                + " <ScanType><![CDATA[qrcode]]></ScanType>"
                + " <ScanResult><![CDATA[1]]></ScanResult>"
                + "</ScanCodeInfo>"
                + "<SendPicsInfo>"
                + " <Count>1</Count>\n"
                + " <PicList>"
                + "  <item>"
                + "   <PicMd5Sum><![CDATA[1b5f7c23b5bf75682a53e7b6d163e185]]></PicMd5Sum>"
                + "  </item>"
                + " </PicList>"
                + "</SendPicsInfo>"
                + "<SendLocationInfo>"
                + "  <Location_X><![CDATA[23]]></Location_X>\n"
                + "  <Location_Y><![CDATA[113]]></Location_Y>\n"
                + "  <Scale><![CDATA[15]]></Scale>\n"
                + "  <Label><![CDATA[ 广州市海珠区客村艺苑路 106号]]></Label>\n"
                + "  <Poiname><![CDATA[wo de poi]]></Poiname>\n"
                + "</SendLocationInfo>"
                + "</xml>";
    WxMpXmlMessage wxMessage = WxMpXmlMessage.fromXml(xml);
    Assert.assertEquals(wxMessage.getToUserName(), "toUser");
    Assert.assertEquals(wxMessage.getFromUserName(), "fromUser");
    Assert.assertEquals(wxMessage.getCreateTime(), new Long(1348831860l));
    Assert.assertEquals(wxMessage.getMsgType(), WxConsts.XML_MSG_TEXT);
    Assert.assertEquals(wxMessage.getContent(), "this is a test");
    Assert.assertEquals(wxMessage.getMsgId(), new Long(1234567890123456l));
    Assert.assertEquals(wxMessage.getPicUrl(), "this is a url");
    Assert.assertEquals(wxMessage.getMediaId(), "media_id");
    Assert.assertEquals(wxMessage.getFormat(), "Format");
    Assert.assertEquals(wxMessage.getThumbMediaId(), "thumb_media_id");
    Assert.assertEquals(wxMessage.getLocationX(), new Double(23.134521d));
    Assert.assertEquals(wxMessage.getLocationY(), new Double(113.358803d));
    Assert.assertEquals(wxMessage.getScale(), new Double(20));
    Assert.assertEquals(wxMessage.getLabel(), "位置信息");
    Assert.assertEquals(wxMessage.getDescription(), "公众平台官网链接");
    Assert.assertEquals(wxMessage.getUrl(), "url");
    Assert.assertEquals(wxMessage.getTitle(), "公众平台官网链接");
    Assert.assertEquals(wxMessage.getEvent(), "subscribe");
    Assert.assertEquals(wxMessage.getEventKey(), "qrscene_123123");
    Assert.assertEquals(wxMessage.getTicket(), "TICKET");
    Assert.assertEquals(wxMessage.getLatitude(), new Double(23.137466));
    Assert.assertEquals(wxMessage.getLongitude(), new Double(113.352425));
    Assert.assertEquals(wxMessage.getPrecision(), new Double(119.385040));
    Assert.assertEquals(wxMessage.getScanCodeInfo().getScanType(), "qrcode");
    Assert.assertEquals(wxMessage.getScanCodeInfo().getScanResult(), "1");
    Assert.assertEquals(wxMessage.getSendPicsInfo().getCount(), new Long(1l));
    Assert.assertEquals(wxMessage.getSendPicsInfo().getPicList().get(0).getPicMd5Sum(), "1b5f7c23b5bf75682a53e7b6d163e185");
    Assert.assertEquals(wxMessage.getSendLocationInfo().getLocationX(), "23");
    Assert.assertEquals(wxMessage.getSendLocationInfo().getLocationY(), "113");
    Assert.assertEquals(wxMessage.getSendLocationInfo().getScale(), "15");
    Assert.assertEquals(wxMessage.getSendLocationInfo().getLabel(), " 广州市海珠区客村艺苑路 106号");
    Assert.assertEquals(wxMessage.getSendLocationInfo().getPoiname(), "wo de poi");
  }

  public void testFromXml2() {

    String xml = "<xml>"
        + "<ToUserName><![CDATA[toUser]]></ToUserName>"
        + "<FromUserName><![CDATA[fromUser]]></FromUserName> "
        + "<CreateTime>1348831860</CreateTime>"
        + "<MsgType><![CDATA[text]]></MsgType>"
        + "<Content><![CDATA[this is a test]]></Content>"
        + "<MsgID>1234567890123456</MsgID>"
        + "<PicUrl><![CDATA[this is a url]]></PicUrl>"
        + "<MediaId><![CDATA[media_id]]></MediaId>"
        + "<Format><![CDATA[Format]]></Format>"
        + "<ThumbMediaId><![CDATA[thumb_media_id]]></ThumbMediaId>"
        + "<Location_X>23.134521</Location_X>"
        + "<Location_Y>113.358803</Location_Y>"
        + "<Scale>20</Scale>"
        + "<Label><![CDATA[位置信息]]></Label>"
        + "<Description><![CDATA[公众平台官网链接]]></Description>"
        + "<Url><![CDATA[url]]></Url>"
        + "<Title><![CDATA[公众平台官网链接]]></Title>"
        + "<Event><![CDATA[subscribe]]></Event>"
        + "<EventKey><![CDATA[qrscene_123123]]></EventKey>"
        + "<Ticket><![CDATA[TICKET]]></Ticket>"
        + "<Latitude>23.137466</Latitude>"
        + "<Longitude>113.352425</Longitude>"
        + "<Precision>119.385040</Precision>"
        + "<ScanCodeInfo>"
        + " <ScanType><![CDATA[qrcode]]></ScanType>"
        + " <ScanResult><![CDATA[1]]></ScanResult>"
        + "</ScanCodeInfo>"
        + "<SendPicsInfo>"
        + " <Count>1</Count>\n"
        + " <PicList>"
        + "  <item>"
        + "   <PicMd5Sum><![CDATA[1b5f7c23b5bf75682a53e7b6d163e185]]></PicMd5Sum>"
        + "  </item>"
        + " </PicList>"
        + "</SendPicsInfo>"
        + "<SendLocationInfo>"
        + "  <Location_X><![CDATA[23]]></Location_X>\n"
        + "  <Location_Y><![CDATA[113]]></Location_Y>\n"
        + "  <Scale><![CDATA[15]]></Scale>\n"
        + "  <Label><![CDATA[ 广州市海珠区客村艺苑路 106号]]></Label>\n"
        + "  <Poiname><![CDATA[wo de poi]]></Poiname>\n"
        + "</SendLocationInfo>"
        + "</xml>";
    WxMpXmlMessage wxMessage = WxMpXmlMessage.fromXml(xml);
    Assert.assertEquals(wxMessage.getToUserName(), "toUser");
    Assert.assertEquals(wxMessage.getFromUserName(), "fromUser");
    Assert.assertEquals(wxMessage.getCreateTime(), new Long(1348831860l));
    Assert.assertEquals(wxMessage.getMsgType(), WxConsts.XML_MSG_TEXT);
    Assert.assertEquals(wxMessage.getContent(), "this is a test");
    Assert.assertEquals(wxMessage.getMsgId(), new Long(1234567890123456l));
    Assert.assertEquals(wxMessage.getPicUrl(), "this is a url");
    Assert.assertEquals(wxMessage.getMediaId(), "media_id");
    Assert.assertEquals(wxMessage.getFormat(), "Format");
    Assert.assertEquals(wxMessage.getThumbMediaId(), "thumb_media_id");
    Assert.assertEquals(wxMessage.getLocationX(), new Double(23.134521d));
    Assert.assertEquals(wxMessage.getLocationY(), new Double(113.358803d));
    Assert.assertEquals(wxMessage.getScale(), new Double(20));
    Assert.assertEquals(wxMessage.getLabel(), "位置信息");
    Assert.assertEquals(wxMessage.getDescription(), "公众平台官网链接");
    Assert.assertEquals(wxMessage.getUrl(), "url");
    Assert.assertEquals(wxMessage.getTitle(), "公众平台官网链接");
    Assert.assertEquals(wxMessage.getEvent(), "subscribe");
    Assert.assertEquals(wxMessage.getEventKey(), "qrscene_123123");
    Assert.assertEquals(wxMessage.getTicket(), "TICKET");
    Assert.assertEquals(wxMessage.getLatitude(), new Double(23.137466));
    Assert.assertEquals(wxMessage.getLongitude(), new Double(113.352425));
    Assert.assertEquals(wxMessage.getPrecision(), new Double(119.385040));
    Assert.assertEquals(wxMessage.getScanCodeInfo().getScanType(), "qrcode");
    Assert.assertEquals(wxMessage.getScanCodeInfo().getScanResult(), "1");
    Assert.assertEquals(wxMessage.getSendPicsInfo().getCount(), new Long(1l));
    Assert.assertEquals(wxMessage.getSendPicsInfo().getPicList().get(0).getPicMd5Sum(), "1b5f7c23b5bf75682a53e7b6d163e185");
    Assert.assertEquals(wxMessage.getSendLocationInfo().getLocationX(), "23");
    Assert.assertEquals(wxMessage.getSendLocationInfo().getLocationY(), "113");
    Assert.assertEquals(wxMessage.getSendLocationInfo().getScale(), "15");
    Assert.assertEquals(wxMessage.getSendLocationInfo().getLabel(), " 广州市海珠区客村艺苑路 106号");
    Assert.assertEquals(wxMessage.getSendLocationInfo().getPoiname(), "wo de poi");
  }

}
