package com.jcwhatever.nucleus.views;
import static org.junit.Assert.assertEquals;
import com.jcwhatever.v1_8_R3.BukkitTester;
import org.bukkit.block.Block;
import org.bukkit.plugin.Plugin;
import org.junit.Test;
import javax.annotation.Nullable;
/**
* Test {@link View} using mock implementation {@link MockView}.
*
* <p>More tests are performed by the super class {@link AbstractViewTest}.</p>
*/
public class ViewTest extends AbstractViewTest {
/**
* Constructor.
*/
public ViewTest() {
super(new IViewGenerator() {
@Override
public View generate(Plugin plugin) {
return new MockView(plugin);
}
});
}
/**
* Make sure when a view is opened the {@link #openView} method
* is invoked and the correct {@link ViewOpenReason} constant
* is used.
*/
@Test
public void testOpenView() {
MockView view1 = new MockView(plugin);
MockView view2 = new MockView(plugin);
_session.next(view1);
BukkitTester.pause(5);
assertEquals(ViewOpenReason.FIRST, view1.onOpenReason);
_session.next(view2);
BukkitTester.pause(5);
assertEquals(ViewOpenReason.NEXT, view2.onOpenReason);
_session.previous();
BukkitTester.pause(5);
assertEquals(ViewOpenReason.PREV, view1.onOpenReason);
_session.refresh();
BukkitTester.pause(5);
assertEquals(ViewOpenReason.REFRESH, view1.onOpenReason);
}
/**
* Make sure when a view is closed the {@link #onClosed} method
* is invoked and the correct {@link ViewCloseReason} constant
* is used.
*/
@Test
public void testOnClose() {
MockView view1 = new MockView(plugin);
MockView view2 = new MockView(plugin);
_session.next(view1);
BukkitTester.pause(5);
_session.next(view2);
BukkitTester.pause(5);
assertEquals(ViewCloseReason.NEXT, view1.onCloseReason);
_session.previous();
BukkitTester.pause(5);
assertEquals(ViewCloseReason.PREV, view2.onCloseReason);
_session.next(view2);
BukkitTester.pause(5);
_session.escaped();
BukkitTester.pause(5);
assertEquals(ViewCloseReason.ESCAPE, view2.onCloseReason);
_session.refresh();
BukkitTester.pause(5);
assertEquals(ViewCloseReason.REFRESH, view1.onCloseReason);
}
@Nullable
@Override
protected Block getSourceBlock() {
return null;
}
}