package com.redspr.redquerybuilder.core.client.expression;
import java.util.ArrayList;
import java.util.List;
import org.junit.Test;
import com.google.gwt.core.client.Scheduler;
import com.google.gwt.core.client.Scheduler.RepeatingCommand;
import com.google.gwt.dom.client.Document;
import com.google.gwt.dom.client.Element;
import com.google.gwt.event.logical.shared.ValueChangeEvent;
import com.google.gwt.event.logical.shared.ValueChangeHandler;
import com.google.gwt.user.client.ui.RootPanel;
import com.redspr.redquerybuilder.core.client.AbstractTest;
import com.redspr.redquerybuilder.core.client.engine.Session;
import com.redspr.redquerybuilder.core.shared.meta.Column;
public class GwtTestSuggestEditorWidget extends AbstractTest {
@Test
public void testDirtyKeepsValue() throws Exception {
Session sess = getSession();
Column col = sess.getDatabase().getMainSchema()
.findTableOrView("PERSON").getColumn("county");
final SuggestEditorWidget sew = new SuggestEditorWidget(sess, col);
final List events = new ArrayList();
sew.addValueChangeHandler(new ValueChangeHandler() {
@Override
public void onValueChange(ValueChangeEvent event) {
events.add(event.getValue());
}
});
RootPanel.get().add(sew);
Element elmt = sew.getElement();
elmt.setAttribute("value", "A");
elmt.dispatchEvent(Document.get().createKeyUpEvent(false, false, false, false, 'C'));
//System.out.println("X=" + box.getElement().getParentElement().getInnerHTML());
List<Element> elmts = find(elmt.getParentElement(), "item");
assertEquals(3, elmts.size());
elmts.get(0).dispatchEvent(Document.get().createClickEvent(0, 0, 0, 0, 0, false, false, false, false));
this.delayTestFinish(10000);
Scheduler.get().scheduleFixedDelay(new RepeatingCommand() {
@Override
public boolean execute() {
assertEquals(1, events.size());
finishTest();
return false;
}
}, 100);
}
}