package org.richfaces.javascript.client.message; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; import org.ajax4jsf.javascript.JSFunction; import org.jboss.test.qunit.Qunit; import org.jboss.test.qunit.Qunit.Builder; import org.junit.Rule; import org.richfaces.javascript.Message; import com.gargoylesoftware.htmlunit.BrowserVersion; import com.gargoylesoftware.htmlunit.html.HtmlElement; import com.gargoylesoftware.htmlunit.html.HtmlPage; public class MessageTestBase { public static final String COMPONENT = "form:component"; public static final String MY_MESSAGE = "form:uiMessage"; @Rule public final Qunit qunit; public MessageTestBase() { this.qunit = createQunitPage().build(); } public void setUpMessage() { setUpMessage(""); } public void setUpMessage(String messageOptions) { qunit.runScript(getMessageInit(messageOptions)); } protected Builder createQunitPage() { return Qunit .builder() .emulate(BrowserVersion.FIREFOX_24) .loadJsfResource("jquery.js", "org.richfaces") .loadJsfResource("richfaces.js", "org.richfaces") .loadJsfResource("richfaces-event.js", "org.richfaces") .loadJsfResource("richfaces-base-component.js", "org.richfaces") .loadJsfResource("richfaces-csv.js", "org.richfaces") .loadJsfResource("message.js", "org.richfaces") .content( "<form id=\"form\" name=\"form\" method=\"post\" action=\"/client-test.jsf\" enctype=\"application/x-www-form-urlencoded\">\n" + " <input type=\"hidden\" name=\"form\" value=\"form\"/>\n" + " <input id=\"form:text\" type=\"text\" name=\"form:text\" value=\"fooValue\" onblur=\"form_3Atext_3Av("form:text",this,event)\"/>\n" + " <span id=\"form:out\">\n" + " fooValue\n" + " </span><span id=\"" + MY_MESSAGE + "\">" + getMessageContent() + "</span>" + " <input type=\"hidden\" name=\"javax.faces.ViewState\" id=\"javax.faces.ViewState\" value=\"4262028796446907996:-2607792463910755035\" autocomplete=\"off\"/>\n" + " </form>"); } protected String getMessageContent() { return ""; } protected Object sendMessage() { JSFunction clientSideFunction = new JSFunction("RichFaces.csv." + getJavaScriptFunctionName(), COMPONENT, getErrorMessage()); return qunit.runScript(clientSideFunction.toScript()); } protected String getJavaScriptFunctionName() { return "sendMessage"; } protected Message getErrorMessage() { return new Message(2, "error summary", "error description"); } protected HtmlElement getMessageContentElement() { HtmlPage page = qunit.getPage(); HtmlElement htmlElement = (HtmlElement) page.getElementById(MY_MESSAGE); assertNotNull(htmlElement); return htmlElement; } /** * <p class="changed_added_4_0"> * </p> * * @param messageOptions TODO * @return the messageInit */ public String getMessageInit(String messageOptions) { return "new RichFaces.ui.Message(\"" + MY_MESSAGE + "\", {forComponentId:\"" + COMPONENT + "\"" + messageOptions + "})"; } protected void checkMessageContent(String summary) { String text = getMessageAsText(); assertTrue(text.contains(summary)); } protected String getMessageAsText() { HtmlElement htmlElement = getMessageContentElement(); String text = htmlElement.asText(); return text; } }