package org.needle4j.mock;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import javax.inject.Inject;
import org.easymock.EasyMock;
import org.junit.Rule;
import org.junit.Test;
import org.needle4j.MyComponent;
import org.needle4j.MyComponentBean;
import org.needle4j.MyEjbComponent;
import org.needle4j.annotation.ObjectUnderTest;
import org.needle4j.db.User;
import org.needle4j.injection.constuctor.UserDao;
import org.needle4j.junit.NeedleRule;
public class EasyMockProviderTest {
@Rule
public final NeedleRule needleRule = new NeedleRule();
@ObjectUnderTest(implementation = MyComponentBean.class)
private MyComponent component;
@Inject
private EasyMockProvider mockProvider;
@Test
public void testNiceMock() throws Exception {
String testMock = component.testMock();
assertNull(testMock);
}
@Test
public void testStricMock() throws Exception {
MyEjbComponent myEjbComponentMock = (MyEjbComponent) needleRule.getInjectedObject(MyEjbComponent.class);
assertNotNull(myEjbComponentMock);
EasyMock.resetToStrict(myEjbComponentMock);
EasyMock.expect(myEjbComponentMock.doSomething()).andReturn("Hello World");
mockProvider.replayAll();
String testMock = component.testMock();
assertEquals("Hello World", testMock);
mockProvider.verifyAll();
}
@Test(expected = IllegalStateException.class)
public void testResetToStric_Mocks() throws Exception {
User userMock = mockProvider.createMock(User.class);
UserDao userDaoMock = mockProvider.createMock(UserDao.class);
mockProvider.resetToStrict(userMock, userDaoMock);
userMock.getId();
userDaoMock.getUser();
mockProvider.replayAll();
mockProvider.verifyAll();
}
@Test(expected = IllegalStateException.class)
public void testResetToStric_Mock() throws Exception {
User userMock = mockProvider.resetToStrict(mockProvider.createMock(User.class));
userMock.getId();
mockProvider.replayAll();
mockProvider.verifyAll();
}
}