blob: 19fe41c08e2bb5fde89d54595b7e7273f9772b56 [file]
/*
* 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.dom.client.Document;
import com.google.gwt.dom.client.Element;
import com.google.gwt.dom.client.NativeEvent;
/**
* Base class for testing {@link AbstractEditableCell}s that can be modified.
*
* @param <T> the cell type
* @param <V> the view data type
*/
public abstract class EditableCellTestBase<T, V> extends CellTestBase<T> {
/**
* Test rendering the cell with a valid value and view data.
*/
public void testRenderViewData() {
AbstractEditableCell<T, V> cell = createCell();
T value = createCellValue();
cell.setViewData(DEFAULT_KEY, createCellViewData());
StringBuilder sb = new StringBuilder();
cell.render(value, DEFAULT_KEY, sb);
assertEquals(getExpectedInnerHtmlViewData(), sb.toString());
}
@Override
protected abstract AbstractEditableCell<T, V> createCell();
/**
* Create a view data to test.
*
* @return the cell view data
*/
protected abstract V createCellViewData();
/**
* Get the expected inner HTML value of the rendered cell when view data is
* present.
*
* @return the expected string
*/
protected abstract String getExpectedInnerHtmlViewData();
/**
* Test {@link Cell#onBrowserEvent(Element, Object, Object, NativeEvent,
* ValueUpdater)} with the specified conditions.
*
* @param startHtml the innerHTML of the cell before the test starts
* @param event the event to fire
* @param value the cell value
* @param viewData the initial view data
* @param expectedValue the expected value passed to the value updater, or
* null if none expected
* @param expectedViewData the expected value of the view data after the event
* @return the parent element
*/
protected Element testOnBrowserEvent(String startHtml, NativeEvent event,
T value, V viewData, T expectedValue, V expectedViewData) {
// Setup the parent element.
Element parent = Document.get().createDivElement();
parent.setInnerHTML(startHtml);
// Pass the event to the cell.
MockValueUpdater valueUpdater = new MockValueUpdater();
AbstractEditableCell<T, V> cell = createCell();
cell.setViewData(DEFAULT_KEY, viewData);
cell.onBrowserEvent(parent, value, DEFAULT_KEY, event, valueUpdater);
assertEquals(expectedViewData, cell.getViewData(DEFAULT_KEY));
valueUpdater.assertLastValue(expectedValue);
return parent;
}
}