package pl.labno.bernard.htmlunified;
import com.gargoylesoftware.htmlunit.BrowserVersion;
import com.gargoylesoftware.htmlunit.NicelyResynchronizingAjaxController;
import com.gargoylesoftware.htmlunit.WebClient;
import com.gargoylesoftware.htmlunit.html.HtmlElement;
import com.gargoylesoftware.htmlunit.html.HtmlInput;
import com.gargoylesoftware.htmlunit.html.HtmlPage;
import com.gargoylesoftware.htmlunit.html.HtmlSpan;
import com.gargoylesoftware.htmlunit.html.HtmlTableCell;
import org.junit.Assert;
import org.junit.Test;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
public class ScheduleTest {
// @Test
public void accessEventTitles() throws IOException {
WebClient client = new WebClient(BrowserVersion.FIREFOX_3_6);
//login-----------------------------------
HtmlPage page = (HtmlPage) client.getPage("http://localhost:8080/schoolmanager/view/class/current.seam?networkId=salsafactory");
((HtmlInput) page.getElementById("loginForm:email")).setValueAttribute("s4237@pjwstk.edu.pl");
((HtmlInput) page.getElementById("loginForm:password")).setValueAttribute("aaaaa");
HtmlPage oldPage = page;
page = page.getElementById("loginForm:submit").click();
// This assert would fail (when page redidrects than you need to obtain new page)
// Assert.assertEquals(page,oldPage);
Assert.assertEquals(client.getCurrentWindow().getEnclosedPage(), page);
//----------------------------------------
final List titleElements = (List) page.getElementById("results:schedule").getByXPath(".//span[@class='fc-event-title']");
List titles = new ArrayList(titleElements.size());
for (HtmlSpan o : titleElements) {
titles.add(o.asText());
}
Assert.assertEquals(2, titles.size());
}
@Test
public void clickSuggestionBox() throws IOException {
WebClient client = new WebClient(BrowserVersion.FIREFOX_3_6);
client.setAjaxController(new NicelyResynchronizingAjaxController());
//login-----------------------------------
HtmlPage page = (HtmlPage) client.getPage("http://localhost:8080/schoolmanager/view/class/current.seam?networkId=salsafactory");
((HtmlInput) page.getElementById("loginForm:email")).setValueAttribute("s4237@pjwstk.edu.pl");
((HtmlInput) page.getElementById("loginForm:password")).setValueAttribute("aaaaa");
HtmlPage oldPage = page;
page = page.getElementById("loginForm:submit").click();
// This assert would fail (when page redidrects than you need to obtain new page)
// Assert.assertEquals(page,oldPage);
Assert.assertEquals(client.getCurrentWindow().getEnclosedPage(), page);
//----------------------------------------
final HtmlInput studentInput = (HtmlInput) page.getElementById("searchClass:student_i");
int initialJobs = client.waitForBackgroundJavaScript(10);
studentInput.type('w');
studentInput.type('i');
Assert.assertEquals(client.getCurrentWindow().getEnclosedPage(), page);
// Here the suggestionBox is still hidden
// System.out.println(page.asXml());
int jobs = WebClientUtils.waitForJSJob(client, 0, 30000);
// Here suggestionBox is visible
// System.out.println(page.asXml());
System.out.println(page.getElementById("searchClass:sS").asXml());
System.out.println("initialJobs:" + initialJobs);
System.out.println("jobs:" + jobs);
Assert.assertEquals(client.getCurrentWindow().getEnclosedPage(), page);
synchronized (page) {
try {
page.wait(1000);
} catch (InterruptedException e) {
e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates.
}
}
Map suggestions = WebClientUtils.getSuggestions(page.getElementById("searchClass:sS"), 0);
Assert.assertEquals(1, suggestions.size());
System.out.println(suggestions);
HtmlTableCell cell = suggestions.get("Willis Bruce");
Assert.assertNotNull(cell);
initialJobs = client.waitForBackgroundJavaScript(10);
System.out.println("initial jobs:"+initialJobs);
cell.click();
System.out.println("Starting jobs:"+client.waitForBackgroundJavaScriptStartingBefore(3000));
System.out.println("Running jobs:"+client.waitForBackgroundJavaScript(10));
// studentInput.type('\t');
jobs = WebClientUtils.waitForJSJob(client,initialJobs, 30000);
System.out.println("initialJobs:" + initialJobs);
System.out.println("jobs:" + jobs);
System.out.println(page.asXml());
Assert.assertEquals("Willis Bruce",((HtmlElement)page.getByXPath("//*[@id='searchClass:searchStudent']").get(0)).asText());
}
}