package org.zkoss.zats.example.testcase;
import static org.junit.Assert.assertEquals;
import java.util.List;
import org.junit.After;
import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test;
import org.zkoss.zats.example.search.Item;
import org.zkoss.zats.example.search.ItemRenderer;
import org.zkoss.zats.mimic.ComponentAgent;
import org.zkoss.zats.mimic.Zats;
import org.zkoss.zats.mimic.DesktopAgent;
import org.zkoss.zats.mimic.operation.ClickAgent;
import org.zkoss.zats.mimic.operation.SelectAgent;
import org.zkoss.zats.mimic.operation.InputAgent;
import org.zkoss.zul.Caption;
import org.zkoss.zul.Groupbox;
import org.zkoss.zul.Label;
import org.zkoss.zul.Listbox;
import org.zkoss.zul.Listcell;
public class SearchTest {
@BeforeClass
public static void init() {
Zats.init("./src/main/webapp"); // user can load by
// configuration file
}
@AfterClass
public static void end() {
Zats.end();
}
@After
public void after() {
Zats.cleanup();
}
@Test
public void test() {
DesktopAgent desktop = Zats.newClient().connect("/search.zul");
ComponentAgent detailBox = desktop.query("groupbox");
ComponentAgent listbox = desktop.query("listbox");
desktop.queryAll("listbox > listitem").get(0).as(SelectAgent.class).select();
//verify UI logic
assertEquals(true, detailBox.as(Groupbox.class).isVisible());
//select an item & verify its detail
//verify detail data by model
Item item = (Item)listbox.as(Listbox.class).getModel().getElementAt(0);
Label descriptionLabel = desktop.query("#descriptionLabel").as(Label.class);
assertEquals(descriptionLabel.getValue(), item.getDescription());
Label priceLabel = desktop.query("#priceLabel").as(Label.class);
assertEquals(priceLabel.getValue(),ItemRenderer.priceFormatter.format(item.getPrice()));
Label quantityLabel = desktop.query("#quantityLabel").as(Label.class);
assertEquals(true, quantityLabel.getValue().contains(Integer.toString(item.getQuantity())));
Label totalPriceLabel = desktop.query("#totalPriceLabel").as(Label.class);
assertEquals(totalPriceLabel.getValue(),ItemRenderer.priceFormatter.format(item.getTotalPrice()));
//verify detail data by label
Caption detailCaption = desktop.query("#detailCaption").as(Caption.class);
List<ComponentAgent> cellNodes = listbox.getChild(1).getChildren();
assertEquals(detailCaption.getLabel(), cellNodes.get(0).as(Listcell.class).getLabel());
assertEquals(priceLabel.getValue(),cellNodes.get(1).as(Listcell.class).getLabel());
assertEquals(quantityLabel.getValue(),cellNodes.get(2).as(Listcell.class).getLabel());
//search & verify result
ComponentAgent filterBox = desktop.query("#filterBox");
ComponentAgent searchButton = desktop.query("#searchButton");
final String KEYWORD = "A";
filterBox.as(InputAgent.class).type(KEYWORD);
searchButton.as(ClickAgent.class).click();
List<ComponentAgent> nodes = listbox.getChildren();
//skip listheader
//verify name column
for (int i=1 ; i <nodes.size() ; i++){
Listcell cell = nodes.get(i).getChild(0).as(Listcell.class);
assertEquals(true, cell.getLabel().contains(KEYWORD));
}
}
}