// package odatademo;
import java.util.Iterator;
import junit.framework.Assert;
import odatademo.Product;
import org.junit.Test;
import org.restlet.ext.odata.Query;
public class ProductTest {
@SuppressWarnings("unused")
private int count(Iterator<?> i) {
int count = 0;
for (; i.hasNext();) {
i.next();
count++;
}
return count;
}
@Test
public void testSimpleGetProducts() {
OdataDemoService service = new OdataDemoService();
Query<Product> query = service.createProductQuery("/Products");
// Assert.assertEquals(9, query.getCount());
int count = 0;
for (Product product : query) {
System.out.println("- " + product.getId() + ", "
+ product.getName());
count++;
}
Assert.assertEquals(9, count);
}
@Test
public void testExpandGetProducts() {
OdataDemoService service = new OdataDemoService();
Query<Product> query = service.createProductQuery("/Products").expand(
"Category");
// Assert.assertEquals(9, query.getCount());
int count = 0;
for (Product product : query) {
System.out.println("- " + product.getId() + ", "
+ product.getName());
System.out.println(" in " + product.getCategory().getId() + ", "
+ product.getCategory().getName());
count++;
}
Assert.assertEquals(9, count);
}
@Test
public void testSimpleGetProduct() {
OdataDemoService service = new OdataDemoService();
Query<Product> query = service.createProductQuery("/Products(1)");
// Assert.assertEquals(1, query.getCount());
Iterator<Product> iterator = query.iterator();
Product product = iterator.next();
Assert.assertNotNull(product);
Assert.assertEquals(1, product.getId());
Assert.assertEquals("Milk", product.getName());
System.out.println("- " + product.getId() + ", " + product.getName());
Assert.assertFalse(iterator.hasNext());
}
@Test
public void testFilterGetProducts() {
OdataDemoService service = new OdataDemoService();
Query<Product> query = service.createProductQuery("/Products").filter(
"Name eq 'Milk'");
// Assert.assertEquals(1, query.getCount());
Iterator<Product> iterator = query.iterator();
Product product = iterator.next();
Assert.assertEquals(1, product.getId());
Assert.assertEquals("Milk", product.getName());
Assert.assertFalse(iterator.hasNext());
}
@Test
public void testSkipTopGetProducts() {
OdataDemoService service = new OdataDemoService();
Query<Product> query = service.createProductQuery("/Products").skip(8)
.top(1);
int count = 0;
Product firstProduct = null;
Product lastProduct = null;
boolean begin = true;
for (Product product : query) {
System.out.println("- " + product.getId() + ", "
+ product.getName());
if (begin) {
firstProduct = product;
begin = false;
}
lastProduct = product;
count++;
}
Assert.assertEquals(1, count);
Assert.assertEquals(8, firstProduct.getId());
Assert.assertEquals("LCD HDTV", firstProduct.getName());
query = service.createProductQuery("/Products").skip(1).top(2);
count = 0;
firstProduct = null;
lastProduct = null;
begin = true;
for (Product product : query) {
System.out.println("- " + product.getId() + ", "
+ product.getName());
if (begin) {
firstProduct = product;
begin = false;
}
lastProduct = product;
count++;
}
Assert.assertEquals(2, count);
Assert.assertEquals(1, firstProduct.getId());
Assert.assertEquals("Milk", firstProduct.getName());
Assert.assertEquals(2, lastProduct.getId());
Assert.assertEquals("Vint soda", lastProduct.getName());
}
@Test
public void testSelectGetProducts() {
OdataDemoService service = new OdataDemoService();
Query<Product> query = service.createProductQuery("/Products(1)")
.select("Category");
Iterator<Product> iterator = query.iterator();
Product product = iterator.next();
Assert.assertNotNull(product);
Assert.assertEquals(0, product.getId());
// TODO: should be null?
Assert.assertNull(product.getName());
Assert.assertEquals(1, product.getCategory().getId());
Assert.assertEquals("Beverages", product.getCategory().getName());
System.out.println("- " + product.getId() + ", " + product.getName());
Assert.assertFalse(iterator.hasNext());
}
// Not supported!
/*
* @Test public void testCrudProduct() { OdataDemoService service = new
* OdataDemoService();
*
* Product product = new Product(); product.setId(30);
* product.setName("My Product"); try { service.addEntity(product); }
* catch(Exception ex) { ex.printStackTrace(); Assert.fail(); }
*
* Query<Product> query = service.createProductQuery("/Products(30)");
* product = query.iterator().next();
*
* product.setDescription("My other product"); try {
* service.updateEntity(product); } catch(Exception ex) {
* ex.printStackTrace(); Assert.fail(); }
*
* service.deleteEntity(product);
*
* }
*/
}