package org.peerbox.app.activity;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
import static org.mockito.Mockito.times;
import java.io.IOException;
import javafx.collections.FXCollections;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.util.Callback;
import org.junit.After;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.mockito.Mockito;
import org.peerbox.BaseJUnitTest;
import org.peerbox.helper.JavaFXThreadingRule;
import org.peerbox.view.ViewNames;
public class ActivityControllerTest extends BaseJUnitTest {
@Rule
public JavaFXThreadingRule jfxRule = new JavaFXThreadingRule();
@SuppressWarnings("unused")
private Parent root;
private ActivityController controller;
private ActivityLogger logger;
@Before
public void setUp() throws Exception {
logger = Mockito.mock(ActivityLogger.class);
Mockito.stub(logger.getActivityItems()).toReturn(FXCollections.observableArrayList());
controller = new ActivityController(logger);
root = getRootNode();
}
@After
public void tearDown() throws Exception {
controller = null;
logger = null;
}
@Test
public void testInitialize() {
controller.initialize(null, null);
assertEquals(
logger.getActivityItems(),
controller.getActivityLogListView().getItems()
);
logger.getActivityItems().add(ActivityItem.create());
assertTrue(controller.getActivityLogListView().getItems().size() == 1);
}
@Test
public void testClearAction() {
controller.clearAction(null);
Mockito.verify(logger, times(1)).clearActivityItems();
}
protected Parent getRootNode() {
try {
FXMLLoader loader = new FXMLLoader();
loader.setControllerFactory(new Callback<Class<?>, Object>() {
@Override
public Object call(Class<?> param) {
return controller;
}
});
loader.setLocation(getClass().getResource(ViewNames.ACTIVITY_VIEW));
return loader.load();
} catch (IOException e) {
e.printStackTrace();
throw new RuntimeException(e);
}
}
}