/* * Copyright 2013, The gwtquery team. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of * the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations under * the License. */ package com.google.gwt.query.client; import static com.google.gwt.query.client.GQuery.$; import com.google.gwt.core.client.GWT; import com.google.gwt.dom.client.Element; import com.google.gwt.jsonp.client.TimeoutException; import com.google.gwt.junit.DoNotRunWith; import com.google.gwt.junit.Platform; import com.google.gwt.junit.client.GWTTestCase; import com.google.gwt.query.client.builders.Name; import com.google.gwt.query.client.builders.XmlBuilder; import com.google.gwt.query.client.plugins.ajax.Ajax; import com.google.gwt.user.client.ui.HTML; import com.google.gwt.user.client.ui.RootPanel; /** * Test class for testing ajax stuff. */ public class GQueryAjaxTestGwt extends GWTTestCase { static Element e = null; static HTML testPanel = null; public String getModuleName() { return "com.google.gwt.query.QueryTest"; } public void gwtTearDown() { $(e).remove(); e = null; } public void gwtSetUp() { if (e == null) { testPanel = new HTML(); RootPanel.get().add(testPanel); e = testPanel.getElement(); e.setId("core-tst"); } else { e.setInnerHTML(""); } } interface XmlExample extends XmlBuilder { interface T extends XmlBuilder { } enum E { FOO, BAR } String getA(); Boolean getB(); @Name("c") int getNumber(); XmlExample[] getX(); @Name("x") XmlExample getFirstX(); XmlExample setA(String s); @Name("c") XmlExample setNumber(int i); T getEnum(); T getBool(); T getNum(); } public void testXmlBuilder() { String xml = "<a a='ra' b='true' c='-1.48'><x a='xa1'> text</x><x a='xa2'/><enum>FOO</enum><bool>true</bool><num>333</num></a>"; XmlExample x = GWT.create(XmlExample.class); x.parse(xml); assertTrue(x.getB()); assertEquals("ra", x.getA()); assertEquals(-1, x.getNumber()); assertEquals("xa2", x.getX()[1].getA()); assertEquals("xa1", x.getFirstX().getA()); x.setA("X").setNumber(1234); assertEquals("X", x.getA()); assertEquals(1234, x.getNumber()); assertEquals(" text", x.getFirstX().getText()); x.getX()[0].setText("pepe"); assertEquals("pepe", x.getFirstX().getText()); assertEquals(XmlExample.E.FOO, x.getEnum().getTextAsEnum(XmlExample.E.class)); assertEquals(true, x.getBool().getTextAsBoolean()); assertEquals(333d, x.getNum().getTextAsNumber()); } interface Feed extends XmlBuilder { interface Tag extends XmlBuilder { } Tag getTitle(); Tag getTagline(); Tag getFullcount(); Tag getModified(); interface Link extends XmlBuilder { String getHref(); String getType(); } Link getLink(); interface Entry extends XmlBuilder { interface Author extends XmlBuilder { Tag getEmail(); Tag getName(); } Tag getTitle(); Tag getSummary(); Link getLink(); Tag getModified(); Tag getIssued(); Tag getId(); Author getAuthor(); } Entry[] getEntry(); } // FIXME: gquery xml does not work well with htmlUnit, FF & Safari works // TODO: test in IE @DoNotRunWith({Platform.HtmlUnitLayout}) @SuppressWarnings("deprecation") public void testXmlGmailExample() { String xml = "<?xml version='1.0' encoding='UTF-8'?>" + "<feed version='0.3' xmlns='http://purl.org/atom/ns#'>" + " <title>Gmail - Inbox for manolo@...</title>" + " <tagline>New messages in your Gmail Inbox</tagline>" + " <fullcount>1</fullcount>" + " <link rel='alternate' href='http://mail.google.com/mail' type='text/html' />" + " <modified>2012-11-07T10:32:52Z</modified>" + " <entry>" + " <title>Trending Startups and Updates</title>" + " <summary>AngelList Weekly Trending Startups Storenvy Tumblr for stores E-Commerce Platforms ยท San Francisco</summary>" + " <link rel='alternate' href='http://mail.google.com/mail?account_id=manolo@....&message_id=13ad2e227da1488b&view=conv&extsrc=atom' type='text/html' />" + " <modified>2012-11-05T23:22:47Z</modified>" + " <issued>2012-11-05T23:22:47Z</issued>" + " <id>tag:gmail.google.com,2004:1417840183363061889</id>" + " <author>" + " <name>AName</name>" + " <email>AnEmail</email>" + " </author>" + " </entry>" + "</feed>"; Feed f = GWT.create(Feed.class); f.parse(xml); assertEquals((int)f.getFullcount().getTextAsNumber(), f.getEntry().length); assertEquals(112, f.getModified().getTextAsDate().getYear()); assertEquals("AName", f.getEntry()[0].getAuthor().getName().getText()); } @DoNotRunWith({Platform.HtmlUnitLayout}) public void testJsonNonCallbackResponse() { delayTestFinish(5000); String testJsonpUrl = "http://www.google.com"; Ajax.getJSONP(testJsonpUrl, null, new Function(){ public void f() { Object response = arguments(0); if (response != null) { assertTrue("Unknown response: " + response, response instanceof TimeoutException); } finishTest(); } }, 500); } }