package org.jboss.seam.example.seamdiscs.test;
import static org.jboss.seam.example.seamdiscs.test.TestStrings.DISC1_ARTIST;
import static org.jboss.seam.example.seamdiscs.test.TestStrings.DISC1_NAME;
import static org.jboss.seam.example.seamdiscs.test.TestStrings.DISC2_ARTIST;
import static org.jboss.seam.example.seamdiscs.test.TestStrings.DISC2_NAME;
import static org.jboss.seam.example.seamdiscs.test.TestStrings.DISC3_ARTIST;
import static org.jboss.seam.example.seamdiscs.test.TestStrings.DISC3_NAME;
import static org.jboss.seam.example.seamdiscs.test.TestStrings.DISC4_ARTIST;
import static org.jboss.seam.example.seamdiscs.test.TestStrings.DISC4_NAME;
import static org.jboss.seam.example.seamdiscs.test.TestStrings.DISC5_ARTIST;
import static org.jboss.seam.example.seamdiscs.test.TestStrings.DISC5_NAME;
import static org.jboss.seam.example.seamdiscs.test.TestStrings.DISC6_ARTIST;
import static org.jboss.seam.example.seamdiscs.test.TestStrings.DISC6_NAME;
import javax.faces.model.DataModel;
import org.jboss.seam.example.seamdiscs.model.Disc;
import org.jboss.seam.mock.DBUnitSeamTest;
import org.testng.annotations.Test;
public class DisplayDiscTest extends DBUnitSeamTest
{
@Override
protected void prepareDBUnitOperations() {
beforeTestOperations.add(
new DataSetOperation("org/jboss/seam/example/seamdiscs/test/BaseData.xml")
);
}
@Test
public void testDisplayDiscs() throws Exception
{
new FacesRequest("/discs.xhtml")
{
@Override
protected void renderResponse() throws Exception
{
Object discs = getValue("#{discs.dataModel}");
assert discs instanceof DataModel;
DataModel dataModel = (DataModel) discs;
// Check for the correct number of results
assert dataModel.getRowCount() == 6;
// Check for correct ordering
assertDisc(dataModel, 0, DISC5_NAME, DISC5_ARTIST);
assertDisc(dataModel, 1, DISC6_NAME, DISC6_ARTIST);
assertDisc(dataModel, 2, DISC1_NAME, DISC1_ARTIST);
assertDisc(dataModel, 3, DISC2_NAME, DISC2_ARTIST);
assertDisc(dataModel, 4, DISC4_NAME, DISC4_ARTIST);
assertDisc(dataModel, 5, DISC3_NAME, DISC3_ARTIST);
}
}.run();
}
@Test
public void testDisplayDisc() throws Exception
{
// TODO Test navigation, but need a MockNavigationHandler
new NonFacesRequest("/discs.xhtml")
{
@Override
protected void beforeRequest()
{
setParameter("actionOutcome", "disc");
setParameter("discId", "3");
}
@Override
protected void renderResponse() throws Exception
{
assert ((Integer) 3).equals(getValue("#{discHome.id}"));
Object object = null;
object = getValue("#{disc}");
assert object instanceof Disc;
Disc disc1 = (Disc) object;
assert DISC3_NAME.equals(disc1.getName());
}
}.run();
}
private void assertDisc(DataModel dataModel, int row, String discName, String artistName)
{
dataModel.setRowIndex(row);
Object rowData = dataModel.getRowData();
assert rowData instanceof Disc;
Disc disc = (Disc) rowData;
assert discName.equals(disc.getName());
assert artistName.equals(disc.getArtist().getName());
}
}