package org.iilab.pb.alert;
import android.content.Context;
import android.content.Intent;
import android.location.Location;
import org.iilab.pb.common.Intents;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.robolectric.Robolectric;
import org.robolectric.RobolectricTestRunner;
import static junit.framework.Assert.assertNotNull;
import static org.mockito.Matchers.any;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.verify;
import static org.mockito.MockitoAnnotations.initMocks;
@RunWith(RobolectricTestRunner.class)
public class AlarmReceiverTest {
@Mock
private PanicMessage mockPanicMessage;
private Context context = Robolectric.application;
private AlarmReceiver alarmReceiver;
@Before
public void setUp() {
initMocks(this);
alarmReceiver = spy(new AlarmReceiver());
}
@Test
public void shouldSendAlertOnReceivingAlarmIntent() {
doReturn(mockPanicMessage).when(alarmReceiver).getPanicMessage(any(Context.class));
alarmReceiver.onReceive(context, new Intent(Intents.SEND_ALERT_ACTION));
verify(mockPanicMessage).sendAlertMessage(any(Location.class));
}
@Test
public void shouldIgnoreOtherIntents() {
doReturn(mockPanicMessage).when(alarmReceiver).getPanicMessage(any(Context.class));
alarmReceiver.onReceive(context, new Intent(Intent.ACTION_ANSWER));
verify(mockPanicMessage, never()).sendAlertMessage(any(Location.class));
}
@Test
public void shouldReturnPanicMessage() {
assertNotNull(alarmReceiver.getPanicMessage(context));
}
}