ScheduleTest.java 4.87 KB
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<HtmlSpan> titleElements = (List<HtmlSpan>) page.getElementById("results:schedule").getByXPath(".//span[@class='fc-event-title']");
        List<String> titles = new ArrayList<String>(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<String, HtmlTableCell> 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());
    }

}