/*
* codjo.net
*
* Common Apache License 2.0
*/
package net.codjo.broadcast.gui.wizard;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.util.Date;
import java.util.Map;
import net.codjo.broadcast.gui.BroadcastGuiContext;
import net.codjo.gui.toolkit.wizard.Step;
import net.codjo.gui.toolkit.wizard.StepPanel;
import net.codjo.mad.client.request.MadServerFixture;
import net.codjo.mad.gui.i18n.InternationalizationUtil;
import net.codjo.test.common.LogString;
import net.codjo.workflow.gui.wizard.WizardConstants;
import org.uispec4j.ComboBox;
import org.uispec4j.Panel;
import org.uispec4j.UISpecTestCase;
/**
* Classe de test de {@link BroadcastSelectionStep}.
*/
public class BroadcastSelectionStepTest extends UISpecTestCase {
private MadServerFixture madServerFixture = new MadServerFixture();
private LogString log = new LogString();
private BroadcastGuiContext guiContext;
public void test_noSubStep() throws Exception {
BroadcastSelectionStep step
= new BroadcastSelectionStep(guiContext,
new DefaultBroadcastSelector(madServerFixture.getOperations(),
"selectAllBroadcastFiles"));
Panel panel = new Panel(step);
assertEquals("S�lection du type d'export :", InternationalizationUtil.translate(step.getName(), guiContext));
mockStart(step);
ComboBox typeCombo = panel.getComboBox();
assertEquals("wizard.typeComboBox", typeCombo.getName());
assertTrue(typeCombo.contentEquals(new String[]{"import1", "import2"}));
assertFalse(step.isFulfilled());
typeCombo.select("import1");
assertTrue(step.isFulfilled());
assertSelectionStepStates(step, "import1", new Date());
}
public void test_oneSubStep() throws Exception {
StepPanelMock subStep = new StepPanelMock(new LogString("sub", log));
subStep.setName("hahaa");
BroadcastSelectionStep step = new BroadcastSelectionStep(guiContext,
subStep,
new DefaultBroadcastSelector(madServerFixture.getOperations(),
"selectAllBroadcastFiles"));
Panel panel = new Panel(step);
assertEquals("hahaa", panel.findSwingComponent(StepPanelMock.class).getName());
mockStart(step);
log.assertContent("sub.start(null)");
log.clear();
panel.getComboBox().select("import1");
subStep.setFulfilled(false);
assertFalse(step.isFulfilled());
subStep.setValue(WizardConstants.BROADCAST_DATE, new Date(0));
subStep.setFulfilled(true);
assertTrue(step.isFulfilled());
assertSelectionStepStates(step, "import1", new Date(0));
log.clear();
step.cancel();
log.assertContent("sub.cancel()");
log.clear();
step.getState();
log.assertContent("sub.getState()");
log.clear();
step.addPropertyChangeListener("props", null);
log.assertContent("sub.addPropertyChangeListener(props, null)");
log.clear();
step.removePropertyChangeListener("props", null);
log.assertContent("sub.removePropertyChangeListener(props, null)");
log.clear();
}
public void test_event() throws Exception {
BroadcastSelectionStep step
= new BroadcastSelectionStep(guiContext,
new DefaultBroadcastSelector(madServerFixture.getOperations(),
"selectAllBroadcastFiles"));
Panel panel = new Panel(step);
mockStart(step);
ComboBox typeCombo = panel.getComboBox();
step.addPropertyChangeListener(Step.FULFILLED_PROPERTY,
new PropertyChangeListener() {
public void propertyChange(PropertyChangeEvent evt) {
log.call("propertyChange", evt.getNewValue());
}
});
typeCombo.select("import1");
log.assertContent("propertyChange(true)");
}
@Override
protected void setUp() throws Exception {
madServerFixture.doSetUp();
guiContext = new BroadcastGuiContext();
}
@Override
protected void tearDown() throws Exception {
madServerFixture.doTearDown();
}
private void mockStart(BroadcastSelectionStep step) {
madServerFixture.mockServerResult(new String[]{"fileName"},
new String[][]{
{"import1"},
{"import2"}
});
step.start(null);
}
private void assertSelectionStepStates(BroadcastSelectionStep step, String expectedFile,
Date expectedDate) {
final String fileName =
(String)step.getState().get(WizardConstants.BROADCAST_FILE_NAME);
assertEquals(expectedFile, fileName);
final Date actualDate = (Date)step.getState().get(WizardConstants.BROADCAST_DATE);
assertNotNull(actualDate);
assertEquals(new java.sql.Date(expectedDate.getTime()).toString(),
new java.sql.Date(actualDate.getTime()).toString());
}
private static class StepPanelMock extends StepPanel {
private LogString log = new LogString();
StepPanelMock() {
}
StepPanelMock(LogString log) {
this.log = log;
}
@Override
public void start(Map previousStepState) {
log.call("start", previousStepState);
}
@Override
public void cancel() {
log.call("cancel");
}
@Override
public Map<String, Object> getState() {
log.call("getState");
return super.getState();
}
@Override
public synchronized void addPropertyChangeListener(String propertyName,
PropertyChangeListener listener) {
log.call("addPropertyChangeListener", propertyName, listener);
}
@Override
public synchronized void removePropertyChangeListener(String propertyName,
PropertyChangeListener listener) {
log.call("removePropertyChangeListener", propertyName, listener);
}
}
}