package com.googlecode.gwt.test;
import com.google.gwt.user.client.Command;
import com.google.gwt.user.client.ui.*;
import com.google.gwt.user.client.ui.SuggestBox.SuggestionDisplay;
import com.googlecode.gwt.MockValueChangeHandler;
import com.googlecode.gwt.test.utils.GwtReflectionUtils;
import com.googlecode.gwt.test.utils.WidgetUtils;
import org.junit.Test;
import java.util.List;
import static org.assertj.core.api.Assertions.assertThat;
public class WidgetUtilsTest extends GwtTestTest {
@Test
public void assertListBoxDataDoNotMatchDifferentElement() {
// Given
ListBox lb = new ListBox();
lb.addItem("item0");
lb.addItem("item1");
lb.addItem("iTem2");
String[] content = new String[]{"item0", "item1", "item2"};
// When & Then
assertThat(WidgetUtils.assertListBoxDataMatch(lb, content)).isFalse();
}
@Test
public void assertListBoxDataDoNotMatchMissingElement() {
// Given
ListBox lb = new ListBox();
lb.addItem("item0");
lb.addItem("item1");
String[] content = new String[]{"item0", "item1", "item2"};
// When & Then
assertThat(WidgetUtils.assertListBoxDataMatch(lb, content)).isFalse();
}
@Test
public void assertListBoxDataMatch() {
// Given
ListBox lb = new ListBox();
lb.addItem("item0");
lb.addItem("item1");
lb.addItem("item2");
String[] content = new String[]{"item0", "item1", "item2"};
// When & Then
assertThat(WidgetUtils.assertListBoxDataMatch(lb, content)).isTrue();
}
@Test
public void getListBoxContentToString() {
// Given
ListBox lb = new ListBox();
lb.addItem("item0");
lb.addItem("item1");
lb.addItem("item2");
String expected = "item0 | item1 | item2 |";
// When
String actual = WidgetUtils.getListBoxContentToString(lb);
assertThat(actual).isEqualTo(expected);
}
@Test
public void itemIsNotVisibleWhenParentIsNotVisible() {
MenuBar bar = new MenuBar();
bar.setVisible(false);
MenuItem item0 = bar.addItem("test0", (Command) null);
item0.setVisible(true);
// When
Boolean isVisible = WidgetUtils.isWidgetVisible(item0);
// Then
assertThat(isVisible).isFalse();
}
@Test
public void listBoxIndex() {
// Given
ListBox lb = new ListBox();
lb.addItem("item0");
lb.addItem("item1");
lb.addItem("item2");
// When & Then
assertThat(WidgetUtils.getIndexInListBox(lb, "item0")).isEqualTo(0);
assertThat(WidgetUtils.getIndexInListBox(lb, "item1")).isEqualTo(1);
assertThat(WidgetUtils.getIndexInListBox(lb, "item2")).isEqualTo(2);
assertThat(WidgetUtils.getIndexInListBox(lb, "item3")).isEqualTo(-1);
}
@Test
public void menuBarItems() {
// Given
MenuBar bar = new MenuBar();
Command cmd = new Command() {
public void execute() {
}
};
MenuItem item0 = bar.addItem("item0", cmd);
MenuItem item1 = bar.addItem("item1", cmd);
// When
List<MenuItem> items = WidgetUtils.getMenuItems(bar);
// Then
assertThat(items).hasSize(2);
assertThat(items.get(0)).isEqualTo(item0);
assertThat(items.get(1)).isEqualTo(item1);
}
@Test
public void newWidgetIsNotVisibleWhenParentIsNotVisible() {
// Given
SimplePanel sp = new SimplePanel();
sp.setVisible(false);
Button b = new Button();
sp.add(b);
// When
Boolean isVisible = WidgetUtils.isWidgetVisible(b);
// Then
assertThat(isVisible).isFalse();
}
@Test
public void newWidgetIsVisible() {
// Given
Button b = new Button();
// When
Boolean isVisible = WidgetUtils.isWidgetVisible(b);
// Then
assertThat(isVisible).isTrue();
}
@Test
public void setCheckBoxValueSilent() {
// Given
CheckBox cb = new CheckBox();
cb.setValue(true);
MockValueChangeHandler<Boolean> mockChangeHandler = new MockValueChangeHandler<Boolean>();
cb.addValueChangeHandler(mockChangeHandler);
// Preconditions
assertThat(cb.getValue()).isTrue();
assertThat(mockChangeHandler.getCallCount()).isEqualTo(0);
// When
WidgetUtils.setCheckBoxValueSilent(cb, false);
// Then
assertThat(cb.getValue()).isEqualTo(false);
assertThat(mockChangeHandler.getCallCount()).isEqualTo(0);
}
@Test
public void suggestBoxItems() {
// Given
SuggestBox box = new SuggestBox();
SuggestionDisplay display = GwtReflectionUtils.getPrivateFieldValue(box, "display");
MenuBar bar = GwtReflectionUtils.getPrivateFieldValue(display, "suggestionMenu");
Command cmd = new Command() {
public void execute() {
}
};
MenuItem item0 = bar.addItem("item0", cmd);
MenuItem item1 = bar.addItem("item1", cmd);
// When
List<MenuItem> items = WidgetUtils.getMenuItems(box);
// Then
assertThat(items).hasSize(2);
assertThat(items.get(0)).isEqualTo(item0);
assertThat(items.get(1)).isEqualTo(item1);
}
}