/*******************************************************************************
* Copyright (c) 2002-2006 Innoopract Informationssysteme GmbH.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Innoopract Informationssysteme GmbH - initial API and implementation
******************************************************************************/
package com.w4t.webcheckboxkit;
import junit.framework.TestCase;
import org.eclipse.rwt.internal.browser.*;
import org.eclipse.rwt.internal.lifecycle.HtmlResponseWriter;
import org.eclipse.rwt.internal.service.ContextProvider;
import com.w4t.*;
import com.w4t.ajax.AjaxStatusUtil;
import com.w4t.event.*;
import com.w4t.util.RendererCache;
/** <p>Unit tests for WebCheckBoxRenderer.</p> */
public class WebCheckBoxRenderer_Test extends TestCase {
public void testAjaxRenderer() throws Exception {
WebCheckBox checkbox = new WebCheckBox();
checkbox.setLabel( "Hello World" );
checkbox.setDir( "myDir" );
checkbox.setLang( "myLang" );
checkbox.setSelected( false );
checkbox.setTitle( "myTitle" );
checkbox.setUpdatable( true );
checkbox.setValue( "myValue" );
W4TFixture.setWebComponentUniqueId( checkbox, "page1" );
W4TFixture.forceAjaxRendering( checkbox );
W4TFixture.fakeBrowser( new Default( true, true ) );
HtmlResponseWriter writer = new HtmlResponseWriter();
setResponseWriter( writer );
W4TFixture.renderComponent( checkbox );
String markup = getBodyMarkup( writer );
String expected;
expected
= "<span id=\"page1\"><input type=\"checkbox\" name=\"page1\" "
+ "checked=\"checked\" "
+ "value=\"-1\" onfocus=\"eventHandler.setFocusID(this)\">"
+ "<span class=\"w4tCsscd1f6403\" "
+ "dir=\"myDir\" lang=\"myLang\" title=\"myTitle\">"
+ "Hello World</span>"
+ "<input type=\"hidden\" id=\"cbcpage1\" name=\"cbcpage1\" "
+ "value=\"myValue\">"
+ "</span>";
assertEquals( expected, markup );
// add listeners
checkbox.addWebFocusGainedListener( new WebFocusGainedListener() {
public void webFocusGained( final WebFocusGainedEvent e ) {
}
});
checkbox.addWebItemListener( new WebItemListener() {
public void webItemStateChanged( WebItemEvent e ) {
}
});
checkbox.setSelected( true );
writer = new HtmlResponseWriter();
setResponseWriter( writer );
W4TFixture.renderComponent( checkbox );
markup = getBodyMarkup( writer );
expected
= "<span id=\"page1\"><input type=\"checkbox\" name=\"page1\" "
+ "checked=\"checked\" value=\"-1\" "
+ "onmousedown=\"eventHandler.setClickedCheckBox(this)\" "
+ "onmouseup=\"eventHandler.triggerClickedCheckBox(this)\" "
+ "onkeydown=\"eventHandler.keyOnCheckBox(this)\" "
+ "onfocus=\"eventHandler.setFocusID(this);"
+ "eventHandler.webFocusGained(this)\">"
+ "<span class=\"w4tCsscd1f6403\" "
+ "dir=\"myDir\" lang=\"myLang\" title=\"myTitle\">"
+ "Hello World</span>"
+ "<input type=\"hidden\" id=\"cbcpage1\" name=\"cbcpage1\" value=\"-1\">"
+ "</span>";
assertEquals( expected, markup );
}
public void testScriptRenderer() throws Exception {
WebCheckBox checkbox = new WebCheckBox();
checkbox.setLabel( "Hello World" );
checkbox.setDir( "myDir" );
checkbox.setLang( "myLang" );
checkbox.setTitle( "myTitle" );
checkbox.setUpdatable( true );
checkbox.setValue( "myValue" );
W4TFixture.setWebComponentUniqueId( checkbox, "page1" );
W4TFixture.fakeBrowser( new Ie5up( true, false ) );
HtmlResponseWriter writer = new HtmlResponseWriter();
setResponseWriter( writer );
W4TFixture.renderComponent( checkbox );
String markup = getBodyMarkup( writer );
String expected;
expected
= "<span id=\"page1\"><input type=\"checkbox\" name=\"page1\" "
+ "checked=\"checked\" "
+ "value=\"-1\" onfocus=\"eventHandler.setFocusID(this)\" />"
+ "<span class=\"w4tCsscd1f6403\" "
+ "dir=\"myDir\" lang=\"myLang\" title=\"myTitle\">"
+ "Hello World</span>"
+ "<input type=\"hidden\" id=\"cbcpage1\" name=\"cbcpage1\" "
+ "value=\"myValue\" />"
+ "</span>";
assertEquals( expected, markup );
// add listeners
checkbox.addWebFocusGainedListener( new WebFocusGainedListener() {
public void webFocusGained( final WebFocusGainedEvent e ) {
}
});
checkbox.addWebItemListener( new WebItemListener() {
public void webItemStateChanged( WebItemEvent e ) {
}
});
checkbox.setSelected( true );
writer = new HtmlResponseWriter();
setResponseWriter( writer );
W4TFixture.renderComponent( checkbox );
markup = getBodyMarkup( writer );
expected
= "<span id=\"page1\"><input type=\"checkbox\" name=\"page1\" "
+ "checked=\"checked\" value=\"-1\" "
+ "onmousedown=\"eventHandler.setClickedCheckBox(this)\" "
+ "onmouseup=\"eventHandler.triggerClickedCheckBox(this)\" "
+ "onkeydown=\"eventHandler.keyOnCheckBox(this)\" "
+ "onfocus=\"eventHandler.setFocusID(this);"
+ "eventHandler.webFocusGained(this)\" />"
+ "<span class=\"w4tCsscd1f6403\" "
+ "dir=\"myDir\" lang=\"myLang\" title=\"myTitle\">"
+ "Hello World</span>"
+ "<input type=\"hidden\" id=\"cbcpage1\" name=\"cbcpage1\" value=\"-1\" />"
+ "</span>";
assertEquals( expected, markup );
}
public void testNoScriptRenderer() throws Exception {
WebCheckBox checkbox = new WebCheckBox();
checkbox.setLabel( "Hello World" );
checkbox.setDir( "myDir" );
checkbox.setLang( "myLang" );
checkbox.setSelected( true );
checkbox.setTitle( "myTitle" );
checkbox.setUpdatable( true );
W4TFixture.setWebComponentUniqueId( checkbox, "page1" );
W4TFixture.fakeBrowser( new Default( false, false ) );
HtmlResponseWriter writer = new HtmlResponseWriter();
setResponseWriter( writer );
W4TFixture.renderComponent( checkbox );
String markup = getBodyMarkup( writer );
String expected;
expected
= "<span id=\"page1\"><input type=\"checkbox\" name=\"page1\" "
+ "checked=\"checked\" "
+ "value=\"-1\"><span class=\"w4tCsscd1f6403\" "
+ "dir=\"myDir\" lang=\"myLang\" title=\"myTitle\">"
+ "Hello World</span>"
+ "<input type=\"hidden\" id=\"cbcpage1\" name=\"cbcpage1\" "
+ "value=\"-1\">"
+ "</span>";
assertEquals( expected, markup );
// add listeners
checkbox.addWebFocusGainedListener( new WebFocusGainedListener() {
public void webFocusGained( final WebFocusGainedEvent e ) {
}
});
checkbox.addWebItemListener( new WebItemListener() {
public void webItemStateChanged( WebItemEvent e ) {
}
} );
checkbox.setSelected( true );
writer = new HtmlResponseWriter();
setResponseWriter( writer );
W4TFixture.renderComponent( checkbox );
markup = getBodyMarkup( writer );
expected
= "<span id=\"page1\"><input type=\"checkbox\" name=\"page1\" "
+ "checked=\"checked\" value=\"-1\">"
+ "<span class=\"w4tCsscd1f6403\" "
+ "dir=\"myDir\" lang=\"myLang\" title=\"myTitle\">"
+ "Hello World</span>"
+ "<input type=\"image\" "
+"src=\"resources/images/submitter.gif\" name=\"wiepage1\""
+ " border=\"0\">"
+ "<input type=\"hidden\" id=\"cbcpage1\" name=\"cbcpage1\" "
+ "value=\"-1\">"
+ "</span>";
assertEquals( expected, markup );
}
public void testEncoding() throws Exception {
WebCheckBox checkbox = new WebCheckBox();
checkbox.setLabel( "���\"?r" );
checkbox.setTitle( "���\"?" );
checkbox.setUpdatable( true );
W4TFixture.fakeBrowser( new Default( false, false ) );
HtmlResponseWriter writer = new HtmlResponseWriter();
setResponseWriter( writer );
W4TFixture.renderComponent( checkbox );
String markup = getBodyMarkup( writer );
String expected
= "<span id=\"p1\">"
+ "<input type=\"checkbox\" name=\"p1\" value=\"-1\">"
+ "<span class=\"w4tCsscd1f6403\" title=\"ÜÄÖ"?\">"
+ "ÜÄÖ"?r"
+ "</span><input type=\"hidden\" id=\"cbcp1\" name=\"cbcp1\" value=\"0\">"
+ "</span>";
assertEquals( expected, markup );
}
public void testAjaxStatusAfterReadData() {
WebForm form = W4TFixture.getEmptyWebFormInstance();
WebCheckBox checkBox = new WebCheckBox();
checkBox.setValCheck( "checked" );
checkBox.setValUnCheck( "unchecked" );
checkBox.setValue( "unchecked" );
form.add( checkBox, WebBorderLayout.CENTER );
String checkBoxId = checkBox.getUniqueID();
String name
= WebCheckBoxReadDataUtil.addCheckBoxControlPrefix( checkBoxId );
W4TFixture.fakeRequestParam( name, checkBox.getValue() );
W4TFixture.fakeRequestParam( checkBoxId, "checked" );
W4TFixture.fakeBrowser( new Ie6( true, true ) );
RendererCache rendererCache = RendererCache.getInstance();
AjaxStatusUtil.preRender( form );
AjaxStatusUtil.postRender( form );
Renderer renderer = rendererCache.retrieveRenderer( checkBox.getClass() );
assertEquals( WebCheckBoxRenderer_Default_Ajax.class, renderer.getClass() );
renderer.readData( checkBox );
assertEquals( "checked", checkBox.getValue() );
AjaxStatusUtil.preRender( form );
assertEquals( true, W4TFixture.getAjaxStatus( checkBox ).mustRender() );
}
protected void setUp() throws Exception {
W4TFixture.setUp();
W4TFixture.createContext();
}
protected void tearDown() throws Exception {
W4TFixture.tearDown();
W4TFixture.removeContext();
}
private void setResponseWriter( final HtmlResponseWriter responseWriter ) {
ContextProvider.getStateInfo().setResponseWriter( responseWriter );
}
private String getBodyMarkup( final HtmlResponseWriter writer ) {
StringBuffer buffer = new StringBuffer();
for( int i = 0; i < writer.getBodySize(); i++ ) {
buffer.append( writer.getBodyToken( i ) );
}
return buffer.toString();
}
}