package com.googlecode.gwt.test;
import com.google.gwt.event.logical.shared.SelectionEvent;
import com.google.gwt.event.logical.shared.SelectionHandler;
import com.google.gwt.safehtml.shared.SafeHtmlBuilder;
import com.google.gwt.user.client.ui.CheckBox;
import com.google.gwt.user.client.ui.RootPanel;
import com.google.gwt.user.client.ui.Tree;
import com.google.gwt.user.client.ui.TreeItem;
import org.junit.Before;
import org.junit.Test;
import static org.assertj.core.api.Assertions.assertThat;
public class TreeTest extends GwtTestTest {
private TreeItem clickedTreeItem;
private TreeItem item0;
private TreeItem item1;
private TreeItem item2;
private TreeItem parent;
private Tree tree;
@Test
public void addItem() {
// When
tree.addItem(new SafeHtmlBuilder().appendEscaped("parent2").toSafeHtml());
// Then
assertThat(tree.getItemCount()).isEqualTo(2);
assertThat(tree.getItem(1).getHTML()).isEqualTo("parent2");
}
@Test
public void addSubItem() {
// When
tree.getItem(0).addItem(new SafeHtmlBuilder().appendEscaped("item3").toSafeHtml());
// Then
assertThat(tree.getItem(0).getChildCount()).isEqualTo(4);
assertThat(tree.getItem(0).getChild(0)).isEqualTo(item0);
assertThat(tree.getItem(0).getChild(1)).isEqualTo(item1);
assertThat(tree.getItem(0).getChild(2)).isEqualTo(item2);
assertThat(tree.getItem(0).getChild(3).getHTML()).isEqualTo("item3");
}
@Test
public void animationEnabled() {
// When
tree.setAnimationEnabled(true);
// Then
assertThat(tree.isAnimationEnabled()).isEqualTo(true);
}
@Before
public void beforeTreeTest() {
// Create a tree with a few items in it.
parent = new TreeItem(new SafeHtmlBuilder().appendEscaped("parent").toSafeHtml());
item0 = parent.addItem(new SafeHtmlBuilder().appendEscaped("item0").toSafeHtml());
item1 = parent.addItem(new SafeHtmlBuilder().appendEscaped("item1").toSafeHtml());
// Add a CheckBox to the tree
item2 = new TreeItem(new CheckBox("item2"));
parent.addItem(item2);
tree = new Tree();
tree.addItem(parent);
// Add it to the root panel.
RootPanel.get().add(tree);
assertThat(tree.isVisible()).isTrue();
clickedTreeItem = null;
}
@Test
public void removeItem() {
// When
tree.removeItem(parent);
// Then
assertThat(tree.getItemCount()).isEqualTo(0);
}
@Test
public void removeSubItem() {
// When
tree.getItem(0).removeItem(item0);
// Then
assertThat(tree.getItem(0).getChildCount()).isEqualTo(2);
assertThat(tree.getItem(0).getChild(0)).isEqualTo(item1);
assertThat(tree.getItem(0).getChild(1)).isEqualTo(item2);
}
@Test
public void selected() {
// Given
tree.addSelectionHandler(new SelectionHandler<TreeItem>() {
public void onSelection(SelectionEvent<TreeItem> event) {
clickedTreeItem = event.getSelectedItem();
}
});
// When
tree.setSelectedItem(item1);
TreeItem selected = tree.getSelectedItem();
// Then
assertThat(clickedTreeItem).isEqualTo(item1);
assertThat(selected).isEqualTo(item1);
}
@Test
public void selectedOnFocusWidget() {
// Given
tree.addSelectionHandler(new SelectionHandler<TreeItem>() {
public void onSelection(SelectionEvent<TreeItem> event) {
clickedTreeItem = event.getSelectedItem();
}
});
// When on item2 which wrap a Checkbox
tree.setSelectedItem(item2);
TreeItem selected = tree.getSelectedItem();
// Then
assertThat(clickedTreeItem).isEqualTo(item2);
assertThat(selected).isEqualTo(item2);
}
@Test
public void title() {
// When
tree.setTitle("title");
// Then
assertThat(tree.getTitle()).isEqualTo("title");
}
@Test
public void visible() {
// Preconditions
assertThat(tree.isVisible()).isEqualTo(true);
// When
tree.setVisible(false);
// Then
assertThat(tree.isVisible()).isEqualTo(false);
}
}