package games.strategy.ui;
import static org.mockito.Mockito.verify;
import java.beans.PropertyChangeEvent;
import javax.swing.SwingWorker;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.junit.MockitoJUnitRunner;
@RunWith(MockitoJUnitRunner.class)
public final class SwingWorkerCompletionWaiterTest {
@InjectMocks
private SwingWorkerCompletionWaiter waiter;
@Mock
private SwingWorkerCompletionWaiter.ProgressWindow progressWindow;
@Test
public void testShouldOpenProgressWindowWhenWorkerStarted() {
waiter.propertyChange(newSwingWorkerStateEvent(SwingWorker.StateValue.STARTED));
verify(progressWindow).open();
}
@Test
public void testShouldCloseProgressWindowWhenWorkerDone() {
waiter.propertyChange(newSwingWorkerStateEvent(SwingWorker.StateValue.DONE));
verify(progressWindow).close();
}
private static PropertyChangeEvent newSwingWorkerStateEvent(final SwingWorker.StateValue stateValue) {
return new PropertyChangeEvent(
new Object(),
SwingWorkerCompletionWaiter.SWING_WORKER_STATE_PROPERTY_NAME,
null,
stateValue);
}
}