package com.googlecode.gwt.test.assertions;
import com.google.gwt.user.cellview.client.CellTable;
import com.google.gwt.user.client.ui.*;
import com.googlecode.gwt.test.GwtTestTest;
import com.googlecode.gwt.test.finder.GwtFinder;
import com.googlecode.gwt.test.finder.Node;
import com.googlecode.gwt.test.finder.NodeObjectFinder;
import org.junit.Test;
import static com.googlecode.gwt.test.assertions.GwtAssertions.assertThat;
import static com.googlecode.gwt.test.finder.GwtFinder.object;
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Fail.failBecauseExceptionWasNotThrown;
public class GwtInstanceTest extends GwtTestTest {
@Test
public void objectWithHTML() {
// Given
HTML html = new HTML();
html.setHTML("<h2> my HTML</h2>");
RootPanel.get().add(html);
// When & Then
assertThat(object("<h2> my HTML</h2>").ofType(HTML.class)).isSameAs(html);
}
@Test
public void objectWithId() {
// Given
Anchor anchor = new Anchor();
anchor.getElement().setAttribute("id", "my-anchor-id");
RootPanel.get().add(anchor);
// When & Then
assertThat(object("my-anchor-id").ofType(Anchor.class)).isSameAs(anchor);
}
@Test
public void objectWithNodeFinder() {
// Given
ComplexPanel panel = new FlowPanel();
RootPanel.get().add(panel);
// registers a NodeObjectFinder for "root" prefix
GwtFinder.registerNodeFinder("root", new NodeObjectFinder() {
public Object find(Node node) {
return GwtFinder.find(RootPanel.get(), node);
}
});
// When & Then
assertThat(object("/root/widget(0)").ofType(ComplexPanel.class)).isSameAs(panel);
}
@Test
public void objectWithText() {
// Given
Label label = new Label();
label.setText("my label text");
RootPanel.get().add(label);
// When & Then
assertThat(object("my label text").ofType(Label.class)).isSameAs(label);
}
@Test
public void throwsClassCastExpectionWhenNotExpectedType() {
// Given
Anchor anchor = new Anchor();
anchor.getElement().setAttribute("id", "my-anchor-id");
RootPanel.get().add(anchor);
try {
// When
object("my-anchor-id").ofType(CellTable.class);
failBecauseExceptionWasNotThrown(ClassCastException.class);
} catch (ClassCastException e) {
assertThat(e.getMessage()).isEqualTo(
"Object of type com.google.gwt.user.client.ui.Anchor with identifier 'my-anchor-id' cannot be cast to an instance of com.google.gwt.user.cellview.client.CellTable");
}
}
@Test
public void throwsNullPointerExceptionWhenNull() {
try {
// When
object("my-not-existing-anchor-id").ofType(Anchor.class);
failBecauseExceptionWasNotThrown(NullPointerException.class);
} catch (NullPointerException e) {
assertThat(e.getMessage()).isEqualTo(
"Object with identifier 'my-not-existing-anchor-id' is null");
}
}
}