/** * Copyright 2005-2014 Restlet * * The contents of this file are subject to the terms of one of the following * open source licenses: Apache 2.0 or or EPL 1.0 (the "Licenses"). You can * select the license that you prefer but you may not use this file except in * compliance with one of these Licenses. * * You can obtain a copy of the Apache 2.0 license at * http://www.opensource.org/licenses/apache-2.0 * * You can obtain a copy of the EPL 1.0 license at * http://www.opensource.org/licenses/eclipse-1.0 * * See the Licenses for the specific language governing permissions and * limitations under the Licenses. * * Alternatively, you can obtain a royalty free commercial license with less * limitations, transferable or non-transferable, directly at * http://restlet.com/products/restlet-framework * * Restlet is a registered trademark of Restlet S.A.S. */ package org.restlet.test.ext.odata; import java.util.Iterator; import org.restlet.Component; import org.restlet.data.Protocol; import org.restlet.ext.odata.Query; import org.restlet.test.RestletTestCase; import org.restlet.test.ext.odata.cafe.Cafe; import org.restlet.test.ext.odata.cafe.CafeService; import org.restlet.test.ext.odata.cafe.Contact; import org.restlet.test.ext.odata.cafe.Item; /** * Test case for OData service. * * @author Thierry Boileau * */ public class ODataCafeTestCase extends RestletTestCase { /** Inner component. */ private Component component = new Component(); /** OData service used for all tests. */ private CafeService service; @Override protected void setUp() throws Exception { super.setUp(); component.getServers().add(Protocol.HTTP, 8111); component.getClients().add(Protocol.CLAP); component.getDefaultHost().attach("/Cafe.svc", new org.restlet.test.ext.odata.cafe.CafeApplication()); component.start(); service = new CafeService(); } @Override protected void tearDown() throws Exception { component.stop(); component = null; super.tearDown(); } /** * Tests the parsing of Feed element. */ public void testQueryCafes() { Query<Cafe> query = service.createCafeQuery("/Cafes"); Iterator<Cafe> iterator = query.iterator(); assertTrue(iterator.hasNext()); Cafe cafe = iterator.next(); assertEquals("1", cafe.getId()); assertEquals("Le Cafe Louis", cafe.getName()); assertEquals("Cafe corp.", cafe.getCompanyName()); assertEquals("Levallois-Perret", cafe.getCity()); assertEquals(92300, cafe.getZipCode()); assertTrue(iterator.hasNext()); cafe = iterator.next(); assertEquals("2", cafe.getId()); assertEquals("Le Petit Marly", cafe.getName()); assertEquals("Cafe inc.", cafe.getCompanyName()); assertEquals("Marly Le Roi", cafe.getCity()); assertEquals(78310, cafe.getZipCode()); } /** * Tests the parsing of Feed element with expansion of the one to one * association "Contact". */ public void testQueryCafesExpandContact() { Query<Cafe> query1 = service.createCafeQuery("/Cafes"); Query<Cafe> query2 = query1.expand("Contact"); Iterator<Cafe> iterator = query2.iterator(); assertTrue(iterator.hasNext()); Cafe cafe = iterator.next(); assertEquals("1", cafe.getId()); assertEquals("Le Cafe Louis", cafe.getName()); assertEquals("Cafe corp.", cafe.getCompanyName()); assertEquals("Levallois-Perret", cafe.getCity()); assertEquals(92300, cafe.getZipCode()); Contact contact = cafe.getContact(); assertNotNull(contact); assertEquals("1", contact.getId()); assertEquals("Agathe Zeblues", contact.getName()); assertEquals("Chief", contact.getTitle()); assertTrue(iterator.hasNext()); cafe = iterator.next(); assertEquals("2", cafe.getId()); assertEquals("Le Petit Marly", cafe.getName()); assertEquals("Cafe inc.", cafe.getCompanyName()); assertEquals("Marly Le Roi", cafe.getCity()); assertEquals(78310, cafe.getZipCode()); contact = cafe.getContact(); assertNotNull(contact); assertEquals("2", contact.getId()); assertEquals("Alphonse Denltas", contact.getName()); assertEquals("Boss", contact.getTitle()); } /** * Tests the parsing of Feed element with expansion of the one to many * association "Items". */ public void testQueryCafesExpandItem() { Query<Cafe> query1 = service.createCafeQuery("/Cafes"); Query<Cafe> query2 = query1.expand("Items"); Iterator<Cafe> iterator = query2.iterator(); assertTrue(iterator.hasNext()); Cafe cafe = iterator.next(); assertEquals("1", cafe.getId()); assertEquals("Le Cafe Louis", cafe.getName()); assertEquals("Cafe corp.", cafe.getCompanyName()); assertEquals("Levallois-Perret", cafe.getCity()); assertEquals(92300, cafe.getZipCode()); Iterator<Item> iterator2 = cafe.getItems().iterator(); assertTrue(iterator2.hasNext()); Item item = iterator2.next(); assertEquals("1", item.getId()); assertEquals("Poulet au curry", item.getDescription()); assertTrue(iterator2.hasNext()); item = iterator2.next(); assertEquals("2", item.getId()); assertEquals("Pate", item.getDescription()); assertTrue(iterator.hasNext()); cafe = iterator.next(); assertEquals("2", cafe.getId()); assertEquals("Le Petit Marly", cafe.getName()); assertEquals("Cafe inc.", cafe.getCompanyName()); assertEquals("Marly Le Roi", cafe.getCity()); assertEquals(78310, cafe.getZipCode()); iterator2 = cafe.getItems().iterator(); assertTrue(iterator2.hasNext()); item = iterator2.next(); assertEquals("3", item.getId()); assertEquals("Banana Split", item.getDescription()); assertTrue(iterator2.hasNext()); item = iterator2.next(); assertEquals("4", item.getId()); assertEquals("Cotes du Rhone", item.getDescription()); } /** * Tests the parsing of Entry element. */ public void testQueryContact() { Query<Contact> query = service.createContactQuery("/Contacts('1')"); Iterator<Contact> iterator = query.iterator(); assertTrue(iterator.hasNext()); Contact contact = iterator.next(); assertNotNull(contact); assertEquals("1", contact.getId()); assertEquals("Agathe Zeblues", contact.getName()); assertEquals("Chief", contact.getTitle()); } /** * Tests the server paging feature. */ public void testServerPaging() { Query<Cafe> query1 = service.createCafeQuery("/Cafes"); Query<Cafe> query2 = query1.skipToken("Skip1"); Iterator<Cafe> iterator = query2.iterator(); assertTrue(iterator.hasNext()); Cafe cafe = iterator.next(); assertEquals("1", cafe.getId()); assertEquals("Le Cafe Louis", cafe.getName()); assertEquals("Cafe corp.", cafe.getCompanyName()); assertEquals("Levallois-Perret", cafe.getCity()); assertEquals(92300, cafe.getZipCode()); assertTrue(iterator.hasNext()); cafe = iterator.next(); assertEquals("2", cafe.getId()); assertEquals("Le Petit Marly", cafe.getName()); assertEquals("Cafe inc.", cafe.getCompanyName()); assertEquals("Marly Le Roi", cafe.getCity()); assertEquals(78310, cafe.getZipCode()); assertTrue(iterator.hasNext()); cafe = iterator.next(); assertEquals("1", cafe.getId()); assertEquals("Le Cafe Louis", cafe.getName()); assertEquals("Cafe corp.", cafe.getCompanyName()); assertEquals("Levallois-Perret", cafe.getCity()); assertEquals(92300, cafe.getZipCode()); assertTrue(iterator.hasNext()); cafe = iterator.next(); assertEquals("2", cafe.getId()); assertEquals("Le Petit Marly", cafe.getName()); assertEquals("Cafe inc.", cafe.getCompanyName()); assertEquals("Marly Le Roi", cafe.getCity()); assertEquals(78310, cafe.getZipCode()); } }