package com.technophobia.substeps.document.content.view.hover.model.javadoc; import static org.hamcrest.Matchers.is; import static org.hamcrest.Matchers.nullValue; import static org.junit.Assert.assertThat; import org.eclipse.jdt.core.IJavaProject; import org.eclipse.jdt.core.IMethod; import org.eclipse.jdt.core.IType; import org.jmock.Expectations; import org.jmock.Mockery; import org.jmock.integration.junit4.JMock; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import com.technophobia.eclipse.javadoc.ProjectJavaDocLocator; import com.technophobia.substeps.supplier.Transformer; @RunWith(JMock.class) public class JavaDocForSourceStepLocatorTest { private Mockery context; private Transformer<StepImplTypeContext, IMethod> methodForStepLocator; private Transformer<IMethod, String> javadocForSourcMethodTransformer; private StepImplTypeContext stepImplTypeContext; private ProjectJavaDocLocator<StepImplTypeContext> javadocForSourceStepLocator; @SuppressWarnings("unchecked") @Before public void initialise() { this.context = new Mockery(); this.methodForStepLocator = context.mock(Transformer.class, "methodForStepLocator"); this.javadocForSourcMethodTransformer = context.mock(Transformer.class, "javaDocForSourcMethodTransformer"); this.stepImplTypeContext = StepImplTypeContext.with(context.mock(IType.class), null); this.javadocForSourceStepLocator = new JavaDocForSourceStepLocator(methodForStepLocator, javadocForSourcMethodTransformer); } @Test public void returnsJavaDocIfMethodIsLocated() { final String javadoc = "Javadoc"; final IMethod method = context.mock(IMethod.class); context.checking(new Expectations() { { oneOf(methodForStepLocator).from(stepImplTypeContext); will(returnValue(method)); oneOf(javadocForSourcMethodTransformer).from(method); will(returnValue(javadoc)); } }); assertThat( javadocForSourceStepLocator.formattedJavaDocFor(stepImplTypeContext, context.mock(IJavaProject.class)), is(javadoc)); } @Test public void returnsNullIfMethodIsNotLocated() { context.checking(new Expectations() { { oneOf(methodForStepLocator).from(stepImplTypeContext); will(returnValue(null)); } }); assertThat( javadocForSourceStepLocator.formattedJavaDocFor(stepImplTypeContext, context.mock(IJavaProject.class)), is(nullValue())); } }