package com.jboss.dvd.seam.test;
import java.io.File;
import java.math.BigDecimal;
import java.util.List;
import org.jboss.arquillian.container.test.api.Deployment;
import org.jboss.arquillian.container.test.api.OverProtocol;
import org.jboss.arquillian.junit.Arquillian;
import org.jboss.seam.mock.JUnitSeamTest;
import org.jboss.shrinkwrap.api.Archive;
import org.jboss.shrinkwrap.api.ShrinkWrap;
import org.jboss.shrinkwrap.api.importer.ZipImporter;
import org.jboss.shrinkwrap.api.spec.WebArchive;
import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
import com.jboss.dvd.seam.Accept;
import com.jboss.dvd.seam.Product;
@RunWith(Arquillian.class)
public class BestSellersTest
extends JUnitSeamTest
{
@Deployment(name = "BestSellersTest")
@OverProtocol("Servlet 3.0")
public static Archive<?> createDeployment()
{
WebArchive web = ShrinkWrap.create(ZipImporter.class, "seam-dvdstore.war").importFrom(new File("target/seam-dvdstore.war")).as(WebArchive.class);
web.addPackages(true, Accept.class.getPackage());
return web;
}
@Test
public void testTopProducts()
throws Exception
{
new NonFacesRequest() {
@SuppressWarnings("unchecked")
@Override
protected void renderResponse()
{
List<Product> products = (List<Product>) getValue("#{topProducts}");
Assert.assertNotNull("topProducts", products);
Assert.assertEquals("topProducts size", 8, products.size());
Product prev = null;
for (Product p: products) {
if (prev != null) {
Assert.assertTrue("descending order",
p.getInventory().getSales() <= prev.getInventory().getSales());
}
prev = p;
}
Assert.assertEquals("price 1", new BigDecimal("14.98"), products.get(0).getPrice());
Assert.assertEquals("price 2", new BigDecimal("29.99"), products.get(1).getPrice());
Assert.assertEquals("price 3", new BigDecimal("39.95"), products.get(2).getPrice());
}
}.run();
}
}