package org.solovyev.android.calculator;
import android.content.Intent;
import android.os.Build;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mockito;
import org.robolectric.RobolectricGradleTestRunner;
import org.robolectric.annotation.Config;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
import static org.robolectric.RuntimeEnvironment.application;
import static org.solovyev.android.calculator.buttons.CppButton.four;
import static org.solovyev.android.calculator.WidgetReceiver.*;
@Config(constants = BuildConfig.class, sdk = Build.VERSION_CODES.LOLLIPOP)
@RunWith(RobolectricGradleTestRunner.class)
public class WidgetReceiverTest {
private WidgetReceiver widgetReceiver;
@Before
public void setUp() throws Exception {
widgetReceiver.keyboard = Mockito.mock(Keyboard.class);
}
@Test
public void testShouldPressButtonOnIntent() throws Exception {
final Intent intent = newButtonClickedIntent(application, four);
widgetReceiver = new WidgetReceiver();
widgetReceiver.onReceive(application, intent);
verify(widgetReceiver.keyboard, times(1)).buttonPressed(Mockito.anyString());
verify(widgetReceiver.keyboard, times(1)).buttonPressed("4");
}
@Test
public void testShouldDoNothingIfButtonInvalid() throws Exception {
final Intent intent = new Intent(application, WidgetReceiver.class);
intent.setAction(ACTION_BUTTON_PRESSED);
intent.putExtra(ACTION_BUTTON_ID_EXTRA, "test!@");
widgetReceiver.onReceive(application, intent);
verify(widgetReceiver.keyboard, times(0)).buttonPressed(Mockito.anyString());
}
}