package org.robotframework.swing.tab;
import java.awt.Component;
import javax.swing.JTabbedPane;
import jdave.junit4.JDaveRunner;
import org.jmock.Expectations;
import org.junit.runner.RunWith;
import org.laughingpanda.beaninject.Inject;
import org.netbeans.jemmy.operators.JTabbedPaneOperator;
import org.robotframework.jdave.contract.FieldIsNotNullContract;
import org.robotframework.swing.context.Context;
import org.robotframework.swing.context.ContextVerifier;
import org.robotframework.swing.factory.OperatorFactory;
import org.robotframework.swing.factory.OperatorFactorySpecification;
import org.robotframework.swing.operator.ComponentWrapper;
@RunWith(JDaveRunner.class)
public class TabPaneOperatorFactorySpec extends OperatorFactorySpecification<TabPaneOperatorFactory> {
private JTabbedPane tabbedPane = new JTabbedPane() {
public boolean isShowing() {
return true;
}
};
public class Any {
public TabPaneOperatorFactory create() {
return new TabPaneOperatorFactory();
}
public void hasContextVerifier() {
specify(context, satisfies(new FieldIsNotNullContract("contextVerifier")));
}
}
public class ParsingIdentifier extends AnyIdentifierParsingOperatorFactory {
@Override
protected Component createComponent() {
return tabbedPane;
}
@Override
protected OperatorFactory<TabbedPaneOperator> createOperatorFactory() {
TabPaneOperatorFactory tabPaneOperatorFactory = new TabPaneOperatorFactory();
Inject.field("contextVerifier").of(tabPaneOperatorFactory).with(dummy(ContextVerifier.class));
return tabPaneOperatorFactory;
}
}
public class CreatingOperatorFromContext {
public TabPaneOperatorFactory create() {
return new TabPaneOperatorFactory();
}
public void destroy() {
Context.setContext(null);
}
public void createsOperatorFromContextSourceIfSourceIsJTabbedPane() {
final ComponentWrapper operator = mock(ComponentWrapper.class);
final JTabbedPane source = dummy(JTabbedPane.class);
checking(new Expectations() {{
exactly(2).of(operator).getSource(); will(returnValue(source));
}});
Context.setContext(operator);
specify(context.createOperatorFromContext().getSource(), must.equal(new JTabbedPaneOperator(source).getSource()));
}
public void createsOperatorFromContextIfSourceIsContainer() {
mockFindsByIndex(tabbedPane);
specifyChecksContext();
context.createOperatorFromContext();
}
}
public class CreatingOperatorWithIdentifier {
public TabPaneOperatorFactory create() {
return new TabPaneOperatorFactory();
}
}
private void specifyChecksContext() {
final ContextVerifier contextVerifier = injectMockToContext(ContextVerifier.class);
checking(new Expectations() {{
one(contextVerifier).verifyContext();
}});
}
}