package org.tynamo.examples.simple.functional;
import com.gargoylesoftware.htmlunit.html.*;
import com.gargoylesoftware.htmlunit.javascript.host.html.HTMLSpanElement;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
import org.tynamo.examples.simple.integration.BaseIntegrationTest;
public class CarTest extends BaseIntegrationTest
{
@Test
public void testObjectTableOnEditPage() throws Exception
{
HtmlPage listMakesPage = clickLink(startPage, "List Makes");
HtmlPage newMakePage = clickLink(listMakesPage, "New Make");
HtmlForm form = newMakePage.getHtmlElementById("form");
form.getInputByName("name").setValueAttribute("Honda");
listMakesPage = clickButton(newMakePage, "saveAndReturn");
startPage = clickLink(listMakesPage, "Home");
HtmlPage listModelsPage = clickLink(startPage, "List Car Models");
HtmlPage newModelPage = clickLink(listModelsPage, "New Car Model");
form = newModelPage.getHtmlElementById("form");
form.getInputByName("name").setValueAttribute("Civic");
listModelsPage = clickButton(newModelPage, "saveAndReturn");
startPage = clickLink(listModelsPage, "Home");
HtmlPage listCarsPage = clickLink(startPage, "List Cars");
HtmlPage newCarPage = clickLink(listCarsPage, "New Car");
form = newModelPage.getHtmlElementById("form");
form.getInputByName("name").setValueAttribute("Accord");
// kaosko -2009-11-02: not implemented yet
// HtmlSelect makeSelect = form.getSelectByName("Make");
// makeSelect.setSelectedAttribute("1", true);
// listCarsPage = clickButton(newCarPage, "saveAndReturn");
//
// startPage = clickLink(listCarsPage, "Home");
//
// listModelsPage = clickLink(startPage, "List Models");
// HtmlPage model1Page = clickLink(listModelsPage, "1");
// assertXPathPresent(model1Page, "//td/a[contains(text(),'Accord')]");
}
@Test
public void testCancel() throws Exception {
HtmlPage listMakesPage = clickLink(startPage, "List Makes");
HtmlPage newMakePage = clickLink(listMakesPage, "New Make");
newMakePage = clickLink(newMakePage, "Cancel");
assertXPathPresent(newMakePage, "//h1[contains(text(),'List')]");
}
@Test
public void testListOnlyOrphanInstances() throws Exception {
HtmlPage newMakePage = webClient.getPage(BASEURI +"add/make");
HtmlForm form = newMakePage.getHtmlElementById("form");
form.getInputByName("name").setValueAttribute("Honda");
newMakePage = clickButton(newMakePage, "saveAndReturn");
HtmlDefinitionDescription ddElement = (HtmlDefinitionDescription)newMakePage.getByXPath("//dt[contains(text(),'Id')]/following-sibling::dd").get(0);
int hondaId = Integer.parseInt(ddElement.getTextContent());
newMakePage = webClient.getPage(BASEURI +"add/make");
form = newMakePage.getHtmlElementById("form");
form.getInputByName("name").setValueAttribute("Toyota");
newMakePage = clickButton(newMakePage, "saveAndReturn");
ddElement = (HtmlDefinitionDescription)newMakePage.getByXPath("//dt[contains(text(),'Id')]/following-sibling::dd").get(0);
int toyotaId = Integer.parseInt(ddElement.getTextContent());
HtmlPage newModelPage = webClient.getPage(BASEURI +"add/carmodel");
HtmlForm newModelForm = newModelPage.getHtmlElementById("form");
newModelForm.getInputByName("name").setValueAttribute("Prius");
newModelPage = clickButton(newModelPage, "saveAndReturn");
ddElement = (HtmlDefinitionDescription)newModelPage.getByXPath("//dt[contains(text(),'Id')]/following-sibling::dd").get(0);
int priusId = Integer.parseInt(ddElement.getTextContent());
newModelPage = webClient.getPage(BASEURI +"add/carmodel");
newModelForm = newModelPage.getHtmlElementById("form");
newModelForm.getInputByName("name").setValueAttribute("Sedan");
clickButton(newModelPage, "saveAndReturn");
HtmlPage editMakePage = webClient.getPage(BASEURI +"edit/make/" + hondaId);
assertXPathPresent(editMakePage, "//input[@value='Honda']");
assertXPathPresent(editMakePage, "//div[@class='palette-available']/select");
assertXPathNotPresent(editMakePage, "//div[@class='palette-available']/select[not(node())]");
assertXPathPresent(editMakePage, "//div[@class='palette-available']/select/option[text()='Prius']");
assertXPathPresent(editMakePage, "//div[@class='palette-available']/select/option[text()='Sedan']");
HtmlPage editModelPage = webClient.getPage(BASEURI + "edit/carmodel/" + priusId);
form = editModelPage.getHtmlElementById("form");
form.getSelectByName("make").getOptionByText("Toyota").setSelected(true);
clickButton(editModelPage, "saveAndReturn");
editMakePage = webClient.getPage(BASEURI +"edit/make/" + toyotaId);
assertXPathNotPresent(editMakePage, "//div[@class='palette-available']/select[not(node())]");
editMakePage = webClient.getPage(BASEURI +"edit/make/" + hondaId);
assertXPathPresent(editMakePage, "//div[@class='palette-available']/select");
assertXPathNotPresent(editMakePage, "//div[@class='palette-available']/select[not(node())]");
assertXPathPresent(editMakePage, "//select[@id='palette_set'][not(node())]");
assertXPathNotPresent(editMakePage, "//div[@class='palette-available']/select/option[text()='Prius']");
assertXPathPresent(editMakePage, "//div[@class='palette-available']/select/option[text()='Sedan']");
}
}