package org.iilab.pb.alert; import android.content.Context; import android.telephony.SmsManager; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.robolectric.Robolectric; import org.robolectric.RobolectricTestRunner; import org.robolectric.shadows.ShadowSmsManager; import static org.junit.Assert.assertEquals; import static org.mockito.Mockito.doThrow; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.verify; import static org.robolectric.Robolectric.shadowOf; @RunWith(RobolectricTestRunner.class) public class SMSAdapterTest { private SMSAdapter smsAdapter; private Context context; @Before public void setUp() { smsAdapter = new SMSAdapter(); context = Robolectric.application; } @Test public void shouldSendSMSToTheGivenPhoneNumber() { String message = "Test Message"; String phoneNumber = "123-123-1222"; smsAdapter.sendSMS(context, phoneNumber, message); ShadowSmsManager shadowSmsManager = shadowOf(SmsManager.getDefault()); ShadowSmsManager.TextSmsParams lastSentTextMessageParams = shadowSmsManager.getLastSentTextMessageParams(); assertEquals(phoneNumber, lastSentTextMessageParams.getDestinationAddress()); assertEquals(message, lastSentTextMessageParams.getText()); } @Test public void shouldIgnoreErrorsWhileSendingSMS() { String phoneNumber = "---"; String message = "Test Message"; final SmsManager mockSmsManager = mock(SmsManager.class); doThrow(new RuntimeException("Test Exception")).when(mockSmsManager).sendTextMessage(phoneNumber, null, message, null, null); smsAdapter = new SMSAdapter() { SmsManager getSmsManager() { return mockSmsManager; } }; smsAdapter.sendSMS(context, phoneNumber, message); verify(mockSmsManager).sendTextMessage(phoneNumber, null, message, null, null); } }