package net.frontlinesms.camel.smslib;
import java.util.Collections;
import java.util.Map;
import org.apache.camel.Consumer;
import org.apache.camel.Processor;
import org.apache.camel.Producer;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.powermock.core.classloader.annotations.PrepareForTest;
import org.powermock.modules.junit4.PowerMockRunner;
import static org.junit.Assert.*;
import static org.mockito.Mockito.*;
import static org.powermock.api.mockito.PowerMockito.whenNew;
import static org.powermock.api.mockito.PowerMockito.verifyNew;
/** JUnit tests for {@link SmslibEndpoint} */
@RunWith(PowerMockRunner.class)
@PrepareForTest(SmslibEndpoint.class)
public class SmslibEndpointTest {
private static final String URI = "smslib://COM1";
private static final String REMAINING = "";
private static final Map<String, Object> NO_PARAMS = Collections.emptyMap();
SmslibService mockSmslibService;
CServiceFactory mockCServiceFactory;
SmslibEndpoint endpoint;
@Before
public void setUp() throws Exception {
mockCServiceFactory = mock(CServiceFactory.class);
whenNew(CServiceFactory.class).withNoArguments()
.thenReturn(mockCServiceFactory);
mockSmslibService = mock(SmslibService.class);
whenNew(SmslibService.class)
.withArguments(mockCServiceFactory, URI, REMAINING, NO_PARAMS)
.thenReturn(mockSmslibService);
endpoint = new SmslibEndpoint(URI, null, REMAINING, NO_PARAMS);
}
@Test
public void testConstructor() throws Exception {
// then
verifyNew(SmslibService.class)
.withArguments(mockCServiceFactory, URI, REMAINING, NO_PARAMS);
}
@Test
public void testCreateConsumer() throws Exception {
// given
SmslibConsumer mockConsumer = mock(SmslibConsumer.class);
Processor mockProcessor = mock(Processor.class);
whenNew(SmslibConsumer.class)
.withArguments(endpoint, mockSmslibService, mockProcessor )
.thenReturn(mockConsumer);
// when
Consumer c = endpoint.createConsumer(mockProcessor);
// then
assertSame(mockConsumer, c);
}
@Test
public void testCreateProducer() throws Exception {
// given
SmslibProducer mockProducer = mock(SmslibProducer.class);
whenNew(SmslibProducer.class)
.withArguments(endpoint, mockSmslibService)
.thenReturn(mockProducer);
// when
Producer p = endpoint.createProducer();
// then
assertSame(mockProducer, p);
}
@Test
public void testPropertiesAreLenient() {
assertTrue(endpoint.isLenientProperties());
}
}