/*******************************************************************************
* 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.webbuttonkit;
import junit.framework.TestCase;
import org.eclipse.rwt.internal.IInitialization;
import org.eclipse.rwt.internal.browser.Default;
import org.eclipse.rwt.internal.browser.Ie5up;
import org.eclipse.rwt.internal.lifecycle.HtmlResponseWriter;
import org.eclipse.rwt.internal.service.ContextProvider;
import com.w4t.W4TFixture;
import com.w4t.WebButton;
import com.w4t.event.*;
import com.w4t.util.image.ImageCache;
/** <p>Unit tests for WebButtonRenderer.</p> */
public class WebButtonRenderer_Test extends TestCase {
public void testLinkButton_Ajax() throws Exception {
WebButton button = new WebButton();
button.setEnabled( true );
button.setPrint( false );
button.setLink( true );
button.setLabel( "Push Me" );
button.setDir( "myDir" );
button.setLang( "myLang" );
button.setTitle( "myTitle" );
button.setReset( true );
W4TFixture.setWebComponentUniqueId( button, "button1" );
W4TFixture.fakeBrowser( new Default( true, true ) );
HtmlResponseWriter writer = new HtmlResponseWriter();
setResponseWriter( writer );
W4TFixture.scheduleForRenderInAJAX( button );
W4TFixture.renderComponent( button );
String markup = getBodyMarkup( writer );
String expected
= "<span id=\"button1\" "
+ "class=\"w4tCsscd1f6403\" "
+ "dir=\"myDir\" lang=\"myLang\" title=\"myTitle\">"
+ "Push Me</span>";
assertEquals( expected, markup );
// add action listener and set UseTrim tp false
button.addWebActionListener( new WebActionListener() {
public void webActionPerformed( final WebActionEvent e ) {
}
});
// button.setEnabled( false );
button.setUseTrim( false );
writer = new HtmlResponseWriter();
setResponseWriter( writer );
W4TFixture.renderComponent( button );
markup = getBodyMarkup( writer );
expected
= " <a id=\"button1\" "
+ "href=\"javascript:"
+ "eventHandler.resetForm();"
+ "eventHandler.webActionPerformed(\'button1\')\" "
+ "onfocus=\"eventHandler.setFocusID(\'button1\')\" "
+ "onmousedown=\"eventHandler.suspendSubmit()\" "
+ "onmouseout=\"eventHandler.resumeSubmit()\" "
+ "onmouseup=\"eventHandler.resumeSubmit()\" "
+ "class=\"w4tCsscd1f6403\""
+ " dir=\"myDir\" lang=\"myLang\" title=\"myTitle\">"
+ "Push Me</a> ";
assertEquals( expected, markup );
}
public void testButtonButton_Ajax() throws Exception {
WebButton button = new WebButton();
button.setEnabled( true );
button.setPrint( false );
button.setLink( false );
button.setLabel( "Push Me" );
button.setDir( "myDir" );
button.setLang( "myLang" );
button.setTitle( "myTitle" );
W4TFixture.setWebComponentUniqueId( button, "button1" );
W4TFixture.fakeBrowser( new Default( true, true ) );
HtmlResponseWriter writer = new HtmlResponseWriter();
setResponseWriter( writer );
W4TFixture.scheduleForRenderInAJAX( button );
W4TFixture.renderComponent( button );
String markup = getBodyMarkup( writer );
String expected
= "<input id=\"button1\" "
+ "type=\"button\" name=\"button1\" value=\"Push Me\" "
+ "class=\"w4tCsscd1f6403\" "
+ "dir=\"myDir\" lang=\"myLang\" title=\"myTitle\" "
+ "onfocus=\"eventHandler.setFocusID(this)\">";
assertEquals( expected, markup );
// add action listener
button.addWebActionListener( new WebActionListener() {
public void webActionPerformed( final WebActionEvent e ) {
}
});
writer = new HtmlResponseWriter();
setResponseWriter( writer );
W4TFixture.scheduleForRenderInAJAX( button );
W4TFixture.renderComponent( button );
markup = getBodyMarkup( writer );
expected
= "<input id=\"button1\" "
+ "type=\"button\" name=\"button1\" value=\"Push Me\" "
+ "class=\"w4tCsscd1f6403\""
+ " dir=\"myDir\" lang=\"myLang\" title=\"myTitle\" "
+ "onclick=\"eventHandler.webActionPerformed(this)\" "
+ "onfocus=\"eventHandler.setFocusID(this)\" "
+ "onmousedown=\"eventHandler.suspendSubmit()\" "
+ "onmouseout=\"eventHandler.resumeSubmit()\" "
+ "onmouseup=\"eventHandler.resumeSubmit()\">";
assertEquals( expected, markup );
}
public void testImageButton_Ajax() throws Exception {
WebButton button = new WebButton();
button.setEnabled( true );
button.setPrint( false );
button.setLink( true );
button.setLabel( "Push Me" );
button.setImage( "myImage" );
button.setDir( "myDir" );
button.setLang( "myLang" );
button.setTitle( "myTitle" );
W4TFixture.setWebComponentUniqueId( button, "button1" );
W4TFixture.fakeBrowser( new Default( true, true ) );
HtmlResponseWriter writer = new HtmlResponseWriter();
W4TFixture.scheduleForRenderInAJAX( button );
setResponseWriter( writer );
W4TFixture.renderComponent( button );
String markup = getBodyMarkup( writer );
String expected
= "<span id=\"button1\" class=\"w4tCsscd1f6403\""
+ " dir=\"myDir\" lang=\"myLang\" title=\"myTitle\">"
+ "<img src=\"myImage\" alt=\"myTitle\" border=\"0\"></span>";
assertEquals( expected, markup );
// add action listener
button.addWebActionListener( new WebActionListener() {
public void webActionPerformed( final WebActionEvent e ) {
}
});
writer = new HtmlResponseWriter();
setResponseWriter( writer );
W4TFixture.scheduleForRenderInAJAX( button );
W4TFixture.renderComponent( button );
markup = getBodyMarkup( writer );
expected
= "<a id=\"button1\" "
+ "href=\"javascript:eventHandler.webActionPerformed(\'button1\')\" "
+ "onfocus=\"eventHandler.setFocusID(\'button1\')\" "
+ "onmousedown=\"eventHandler.suspendSubmit()\" "
+ "onmouseout=\"eventHandler.resumeSubmit()\" "
+ "onmouseup=\"eventHandler.resumeSubmit()\" "
+ "class=\"w4tCsscd1f6403\""
+ " dir=\"myDir\" lang=\"myLang\" title=\"myTitle\">"
+ "<img src=\"myImage\" alt=\"myTitle\" border=\"0\">"
+ "</a>";
assertEquals( expected, markup );
}
public void testLinkButton_Script() throws Exception {
WebButton button = new WebButton();
button.setEnabled( true );
button.setPrint( false );
button.setLink( true );
button.setLabel( "Push Me" );
button.setDir( "myDir" );
button.setLang( "myLang" );
button.setTitle( "myTitle" );
W4TFixture.setWebComponentUniqueId( button, "button1" );
W4TFixture.fakeBrowser( new Ie5up( true, false ) );
HtmlResponseWriter writer = new HtmlResponseWriter();
setResponseWriter( writer );
W4TFixture.scheduleForRenderInAJAX( button );
W4TFixture.renderComponent( button );
String markup = getBodyMarkup( writer );
String expected
= "<span id=\"button1\" class=\"w4tCsscd1f6403\""
+ " dir=\"myDir\" lang=\"myLang\" title=\"myTitle\">"
+ "Push Me</span>";
assertEquals( expected, markup );
// add action listener
button.addWebActionListener( new WebActionListener() {
public void webActionPerformed( final WebActionEvent e ) {
}
});
button.addWebFocusGainedListener( new WebFocusGainedListener() {
public void webFocusGained( final WebFocusGainedEvent e )
{
}
});
writer = new HtmlResponseWriter();
setResponseWriter( writer );
W4TFixture.scheduleForRenderInAJAX( button );
W4TFixture.renderComponent( button );
markup = getBodyMarkup( writer );
expected
= "<a id=\"button1\" "
+ "href=\"javascript:eventHandler.webActionPerformed(\'button1\')\" "
+ "onfocus=\"eventHandler.setFocusID(\'button1\');"
+ "eventHandler.webFocusGained('button1')\" "
+ "onmousedown=\"eventHandler.suspendSubmit()\" "
+ "onmouseout=\"eventHandler.resumeSubmit()\" "
+ "onmouseup=\"eventHandler.resumeSubmit()\" "
+ "class=\"w4tCsscd1f6403\""
+ " dir=\"myDir\" lang=\"myLang\" title=\"myTitle\">"
+ "Push Me</a>";
assertEquals( expected, markup );
}
public void testButtonButton_Script() throws Exception {
WebButton button = new WebButton();
button.setEnabled( true );
button.setPrint( false );
button.setLink( false );
button.setLabel( "Push Me" );
button.setDir( "myDir" );
button.setLang( "myLang" );
button.setTitle( "myTitle" );
W4TFixture.setWebComponentUniqueId( button, "button1" );
W4TFixture.fakeBrowser( new Ie5up( true, false ) );
HtmlResponseWriter writer = new HtmlResponseWriter();
setResponseWriter( writer );
W4TFixture.scheduleForRenderInAJAX( button );
W4TFixture.renderComponent( button );
String markup = getBodyMarkup( writer );
String expected
= "<input id=\"button1\" type=\"button\" "
+ "name=\"button1\" value=\"Push Me\" "
+ "class=\"w4tCsscd1f6403\""
+ " dir=\"myDir\" lang=\"myLang\" title=\"myTitle\" "
+ "onfocus=\"eventHandler.setFocusID(this)\" />";
assertEquals( expected, markup );
// add action listener
button.addWebActionListener( new WebActionListener() {
public void webActionPerformed( final WebActionEvent e ) {
}
});
writer = new HtmlResponseWriter();
setResponseWriter( writer );
W4TFixture.renderComponent( button );
markup = getBodyMarkup( writer );
expected
= "<input id=\"button1\" type=\"button\" "
+ "name=\"button1\" value=\"Push Me\" "
+ "class=\"w4tCsscd1f6403\""
+ " dir=\"myDir\" lang=\"myLang\" title=\"myTitle\" "
+ "onclick=\"eventHandler.webActionPerformed(this)\" "
+ "onfocus=\"eventHandler.setFocusID(this)\" "
+ "onmousedown=\"eventHandler.suspendSubmit()\" "
+ "onmouseout=\"eventHandler.resumeSubmit()\" "
+ "onmouseup=\"eventHandler.resumeSubmit()\" />";
assertEquals( expected, markup );
}
public void testImageButton_Script() throws Exception {
WebButton button = new WebButton();
button.setEnabled( true );
button.setPrint( false );
button.setLink( true );
button.setLabel( "Push Me" );
button.setImage( "myImage" );
button.setDir( "myDir" );
button.setLang( "myLang" );
button.setTitle( "myTitle" );
W4TFixture.setWebComponentUniqueId( button, "button1" );
W4TFixture.fakeBrowser( new Ie5up( true, false ) );
HtmlResponseWriter writer = new HtmlResponseWriter();
setResponseWriter( writer );
W4TFixture.scheduleForRenderInAJAX( button );
W4TFixture.renderComponent( button );
String markup = getBodyMarkup( writer );
String expected
= "<span id=\"button1\" class=\"w4tCsscd1f6403\""
+ " dir=\"myDir\" lang=\"myLang\" title=\"myTitle\">"
+ "<img src=\"myImage\" alt=\"myTitle\" border=\"0\" /></span>";
assertEquals( expected, markup );
// add action listener
button.addWebActionListener( new WebActionListener() {
public void webActionPerformed( final WebActionEvent e ) {
}
});
writer = new HtmlResponseWriter();
setResponseWriter( writer );
W4TFixture.renderComponent( button );
markup = getBodyMarkup( writer );
expected
= "<a id=\"button1\" "
+ "href=\"javascript:eventHandler.webActionPerformed('button1')\" "
+ "onfocus=\"eventHandler.setFocusID('button1')\" "
+ "onmousedown=\"eventHandler.suspendSubmit()\" "
+ "onmouseout=\"eventHandler.resumeSubmit()\" "
+ "onmouseup=\"eventHandler.resumeSubmit()\" class=\"w4tCsscd1f6403\""
+ " dir=\"myDir\" lang=\"myLang\" title=\"myTitle\">"
+ "<img src=\"myImage\" alt=\"myTitle\" border=\"0\" /></a>";
assertEquals( expected, markup );
}
public void testPrintButton_Script() throws Exception {
WebButton button = new WebButton();
button.setEnabled( true );
button.setPrint( true );
button.setLabel( "Push Me" );
button.setImage( "myImage" );
button.setDir( "myDir" );
button.setLang( "myLang" );
button.setTitle( "myTitle" );
W4TFixture.setWebComponentUniqueId( button, "button1" );
W4TFixture.fakeBrowser( new Ie5up( true, false ) );
HtmlResponseWriter writer = new HtmlResponseWriter();
setResponseWriter( writer );
W4TFixture.scheduleForRenderInAJAX( button );
W4TFixture.renderComponent( button );
String markup = getBodyMarkup( writer );
String expected
= "<input id=\"button1\" type=\"button\" name=\"button1\" "
+ "value=\"Push Me\" class=\"w4tCsscd1f6403\" "
+ "dir=\"myDir\" lang=\"myLang\" title=\"myTitle\" "
+ "onclick=\"windowManager.printPage()\" "
+ "onmousedown=\"eventHandler.suspendSubmit()\" />";
assertEquals( expected, markup );
// add action listener
button.addWebActionListener( new WebActionListener() {
public void webActionPerformed( final WebActionEvent e ) {
}
});
writer = new HtmlResponseWriter();
setResponseWriter( writer );
W4TFixture.renderComponent( button );
markup = getBodyMarkup( writer );
expected
= "<input id=\"button1\" type=\"button\" "
+ "name=\"button1\" value=\"Push Me\" class=\"w4tCsscd1f6403\" "
+ "dir=\"myDir\" lang=\"myLang\" title=\"myTitle\" "
+ "onclick=\"windowManager.printPage()\" "
+ "onmousedown=\"eventHandler.suspendSubmit()\" />";
assertEquals( expected, markup );
}
public void testLinkButton_NoScript() throws Exception {
WebButton button = new WebButton();
button.setEnabled( true );
button.setPrint( false );
button.setLink( true );
button.setLabel( "Push Me" );
button.setDir( "myDir" );
button.setLang( "myLang" );
button.setTitle( "myTitle" );
W4TFixture.setWebComponentUniqueId( button, "button1" );
W4TFixture.fakeBrowser( new Default( false, false ) );
HtmlResponseWriter writer = new HtmlResponseWriter();
setResponseWriter( writer );
W4TFixture.scheduleForRenderInAJAX( button );
W4TFixture.renderComponent( button );
String markup = getBodyMarkup( writer );
String expected
= "<span class=\"w4tCsscd1f6403\""
+ " dir=\"myDir\" lang=\"myLang\" title=\"myTitle\">"
+ "Push Me</span>";
assertEquals( expected, markup );
// add action listener
button.addWebActionListener( new WebActionListener() {
public void webActionPerformed( final WebActionEvent e ) {
}
});
button.setUseTrim( false );
writer = new HtmlResponseWriter();
setResponseWriter( writer );
ImageCache.createInstance( W4TFixture.getWebAppBase().toString(),
IInitialization.NOSCRIPT_SUBMITTERS_NONE );
W4TFixture.scheduleForRenderInAJAX( button );
W4TFixture.renderComponent( button );
markup = getBodyMarkup( writer );
expected
= " <span class=\"w4tCsscd1f6403\""
+ " dir=\"myDir\" lang=\"myLang\" title=\"myTitle\">"
+ "Push Me</span> "
+ "<input type=\"image\" "
+ "src=\"resources/images/submitter.gif\" "
+ "name=\"waebutton1\" "
+ "border=\"0\">";
assertEquals( expected, markup );
}
public void testButtonButton_NoScript() throws Exception {
WebButton button = new WebButton();
button.setEnabled( true );
button.setPrint( false );
button.setLink( false );
button.setLabel( "Push Me" );
button.setDir( "myDir" );
button.setLang( "myLang" );
button.setTitle( "myTitle" );
W4TFixture.setWebComponentUniqueId( button, "button1" );
W4TFixture.fakeBrowser( new Default( false, false ) );
HtmlResponseWriter writer = new HtmlResponseWriter();
setResponseWriter( writer );
W4TFixture.scheduleForRenderInAJAX( button );
W4TFixture.renderComponent( button );
String markup = getBodyMarkup( writer );
String expected
= "<input type=\"submit\" "
+ "name=\"button1\" value=\"Push Me\" "
+ "class=\"w4tCsscd1f6403\""
+ " dir=\"myDir\" lang=\"myLang\" title=\"myTitle\">";
assertEquals( expected, markup );
// add action listener
button.addWebActionListener( new WebActionListener() {
public void webActionPerformed (final WebActionEvent e ) {
}
});
writer = new HtmlResponseWriter();
setResponseWriter( writer );
W4TFixture.renderComponent( button );
markup = getBodyMarkup( writer );
expected
= "<input type=\"submit\" name=\"waebutton1\" "
+ "value=\"Push Me\" class=\"w4tCsscd1f6403\""
+ " dir=\"myDir\" lang=\"myLang\" title=\"myTitle\">";
assertEquals( expected, markup );
}
public void testPrintButton_NoScript() throws Exception {
WebButton button = new WebButton();
button.setEnabled( true );
button.setPrint( true );
button.setLink( false );
button.setLabel( "Push Me" );
button.setDir( "myDir" );
button.setLang( "myLang" );
button.setTitle( "myTitle" );
W4TFixture.setWebComponentUniqueId( button, "button1" );
W4TFixture.fakeBrowser( new Default( false, false ) );
HtmlResponseWriter writer = new HtmlResponseWriter();
setResponseWriter( writer );
W4TFixture.scheduleForRenderInAJAX( button );
W4TFixture.renderComponent( button );
String markup = getBodyMarkup( writer );
String expected
= "<input type=\"submit\" "
+ "name=\"button1\" value=\"Push Me\" "
+ "class=\"w4tCsscd1f6403\""
+ " dir=\"myDir\" lang=\"myLang\" title=\"myTitle\">";
assertEquals( expected, markup );
// add action listener
button.addWebActionListener( new WebActionListener() {
public void webActionPerformed (final WebActionEvent e ) {
}
});
writer = new HtmlResponseWriter();
setResponseWriter( writer );
W4TFixture.renderComponent( button );
markup = getBodyMarkup( writer );
expected
= "<input type=\"submit\" name=\"waebutton1\" "
+ "value=\"Push Me\" class=\"w4tCsscd1f6403\""
+ " dir=\"myDir\" lang=\"myLang\" title=\"myTitle\">";
assertEquals( expected, markup );
}
public void testImageButton_NoScript() throws Exception {
WebButton button = new WebButton();
button.setEnabled( true );
button.setPrint( false );
button.setLink( true );
button.setLabel( "Push Me" );
button.setImage( "myImage" );
button.setDir( "myDir" );
button.setLang( "myLang" );
button.setTitle( "myTitle" );
W4TFixture.setWebComponentUniqueId( button, "button1" );
W4TFixture.fakeBrowser( new Default( false, false ) );
HtmlResponseWriter writer = new HtmlResponseWriter();
setResponseWriter( writer );
W4TFixture.scheduleForRenderInAJAX( button );
W4TFixture.renderComponent( button );
String markup = getBodyMarkup( writer );
String expected
= "<span class=\"w4tCsscd1f6403\""
+ " dir=\"myDir\" lang=\"myLang\" title=\"myTitle\">"
+ "<img src=\"myImage\" alt=\"myTitle\" border=\"0\"></span>";
assertEquals( expected, markup );
// add action listener
button.addWebActionListener( new WebActionListener() {
public void webActionPerformed( final WebActionEvent e ) {
}
});
writer = new HtmlResponseWriter();
setResponseWriter( writer );
W4TFixture.renderComponent( button );
markup = getBodyMarkup( writer );
expected
= "<input type=\"image\" src=\"myImage\" "
+ "name=\"waebutton1\" border=\"0\">";
assertEquals( expected, markup );
}
public void testEncoding() throws Exception {
W4TFixture.fakeBrowser( new Default( true, false ) );
WebButton button = new WebButton();
button.setLabel( "�ml�ute & \"�\"" );
button.setTitle( "This title contains \"�ml�ute & �\"" );
HtmlResponseWriter writer = new HtmlResponseWriter();
setResponseWriter( writer );
W4TFixture.renderComponent( button );
String markup = getBodyMarkup( writer );
String expected
= "<input id=\"p1\" type=\"button\" name=\"p1\" "
+ "value=\"Ümläute & "ß"\" "
+ "class=\"w4tCsscd1f6403\" "
+ "title=\"This title contains "Ümläute & "
+ "ß"\" "
+ "onfocus=\"eventHandler.setFocusID(this)\">";
assertEquals( expected, markup );
button.setLink( true );
writer = new HtmlResponseWriter();
setResponseWriter( writer );
W4TFixture.renderComponent( button );
markup = getBodyMarkup( writer );
expected
= "<span id=\"p1\" class=\"w4tCsscd1f6403\" "
+ "title=\"This title contains "Ümläute & "
+ "ß"\">Ümläute & "ß"</span>";
assertEquals( expected, markup );
button.setLink( true );
button.setPrint( true );
writer = new HtmlResponseWriter();
setResponseWriter( writer );
W4TFixture.renderComponent( button );
markup = getBodyMarkup( writer );
expected
= "<input id=\"p1\" type=\"button\" name=\"p1\" "
+ "value=\"Ümläute & "ß"\" "
+ "class=\"w4tCsscd1f6403\" "
+ "title=\"This title contains "Ümläute & "
+ "ß"\" "
+ "onclick=\"windowManager.printPage()\" "
+ "onmousedown=\"eventHandler.suspendSubmit()\">";
assertEquals( expected, markup );
}
public void testDisabledLinkNoscript() throws Exception {
W4TFixture.fakeBrowser( new Default( false, false ) );
WebButton button = new WebButton();
button.setLink( true );
button.setUseTrim( false );
HtmlResponseWriter writer = new HtmlResponseWriter();
setResponseWriter( writer );
W4TFixture.renderComponent( button );
String markup = W4TFixture.getAllMarkup( writer );
assertEquals( " <span class=\"w4tCsscd1f6403\"></span> ",
markup );
}
protected void setUp() throws Exception {
W4TFixture.setUp();
W4TFixture.createContext();
}
protected void tearDown() throws Exception {
W4TFixture.tearDown();
ImageCache cache = ImageCache.getInstance();
if( cache != null ) {
W4TFixture.setPrivateField( ImageCache.class, cache, "_instance", null );
}
W4TFixture.removeContext();
}
private static void setResponseWriter( final HtmlResponseWriter writer ) {
ContextProvider.getStateInfo().setResponseWriter( writer );
}
private static 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();
}
}