package org.needle4j.mock;
import static org.hamcrest.CoreMatchers.is;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertThat;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.verifyNoMoreInteractions;
import static org.mockito.Mockito.when;
import java.util.HashMap;
import java.util.Map;
import org.junit.Test;
import org.mockito.Mockito;
public class MockitoProviderTest {
private final MockitoProvider mockitoProvider = new MockitoProvider();
@Test
public void shouldCreateMockComponent() throws Exception {
@SuppressWarnings("unchecked")
final Map<String, String> mapMock = mockitoProvider.createMockComponent(Map.class);
final String key = "key";
final String value = "value";
Mockito.when(mapMock.get(key)).thenReturn(value);
assertEquals(value, mapMock.get(key));
}
@Test
public void shouldCreateSpyComponent() throws Exception {
Map<String, String> mapSpy = new HashMap<String, String>();
mapSpy = mockitoProvider.createSpyComponent(mapSpy);
mapSpy.put("foo", "a");
when(mapSpy.get("bar")).thenReturn("b");
assertThat(mapSpy.get("foo"), is("a"));
assertThat(mapSpy.get("bar"), is("b"));
verify(mapSpy).get("foo");
verify(mapSpy).get("bar");
verify(mapSpy).put("foo", "a");
verifyNoMoreInteractions(mapSpy);
}
@Test(expected = IllegalArgumentException.class)
public void shouldFailToCreateSpyWhenInstanceIsNull() throws Exception {
mockitoProvider.createSpyComponent(null);
}
@Test
public void shouldSkipCreateMockComponentForFinalType() throws Exception {
assertNull(mockitoProvider.createMockComponent(String.class));
}
@Test
public void shouldSkipCreateMockComponentForPrimitiveType() throws Exception {
assertNull(mockitoProvider.createMockComponent(int.class));
}
@Test
public void shouldSkipCreateSpyComponentForFinal() throws Exception {
assertNull(mockitoProvider.createSpyComponent("foo"));
}
@Test
public void shouldSkipCreateSpyComponentForPrimitive() throws Exception {
assertNull(mockitoProvider.createSpyComponent(1));
}
}