/*
* Copyright 2010 Google Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License. You may obtain a copy of
* the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations under
* the License.
*/
package com.google.gwt.cell.client;
import com.google.gwt.cell.client.Cell.Context;
import com.google.gwt.dom.client.Document;
import com.google.gwt.dom.client.NativeEvent;
import com.google.gwt.safehtml.shared.SafeHtmlBuilder;
/**
* Tests for {@link TextInputCell}.
*/
public class TextInputCellTest extends
EditableCellTestBase<String, TextInputCell.ViewData> {
public void testOnBrowserEventChange() {
NativeEvent event = Document.get().createChangeEvent();
TextInputCell.ViewData expected = new TextInputCell.ViewData("oldValue");
expected.setLastValue("hello");
expected.setCurrentValue("hello");
testOnBrowserEvent(getExpectedInnerHtml(), event, "oldValue", null,
"hello", expected);
}
public void testOnBrowserEventKeyUp() {
NativeEvent event = Document.get().createKeyUpEvent(false, false, false,
false, 0);
TextInputCell.ViewData expected = new TextInputCell.ViewData("oldValue");
expected.setCurrentValue("hello");
testOnBrowserEvent(getExpectedInnerHtml(), event, "oldValue", null, null,
expected);
}
/**
* Test rendering the cell with a malicious value.
*/
public void testRenderUnsafeHtml() {
Cell<String> cell = createCell();
SafeHtmlBuilder sb = new SafeHtmlBuilder();
Context context = new Context(0, 0, null);
cell.render(context, "<script>malicious</script>", sb);
assertEquals(
"<input type=\"text\" value=\"<script>malicious</script>\" tabindex=\"-1\">"
+ "</input>", sb.toSafeHtml().asString());
}
@Override
protected TextInputCell createCell() {
return new TextInputCell();
}
@Override
protected String createCellValue() {
return "hello";
}
@Override
protected TextInputCell.ViewData createCellViewData() {
return new TextInputCell.ViewData("newValue");
}
@Override
protected boolean dependsOnSelection() {
return false;
}
@Override
protected String[] getConsumedEvents() {
return new String[]{"change", "keyup", "keydown", "focus", "blur"};
}
@Override
protected String getExpectedInnerHtml() {
return "<input type=\"text\" value=\"hello\" tabindex=\"-1\"></input>";
}
@Override
protected String getExpectedInnerHtmlNull() {
return "<input type=\"text\" tabindex=\"-1\"></input>";
}
@Override
protected String getExpectedInnerHtmlViewData() {
return "<input type=\"text\" value=\"newValue\" tabindex=\"-1\"></input>";
}
}