@Test public void createWidget_shouldInflateViewAndAssignId() throws Exception { int widgetId = shadowAppWidgetManager.createWidget(SpanishTestAppWidgetProvider.class, R.layout.main); View widgetView = shadowAppWidgetManager.getViewFor(widgetId); assertEquals("Hola", ((TextView) widgetView.findViewById(R.id.subtitle)).getText()); }
@Test public void getViewFor_shouldReturnSameViewEveryTimeForGivenWidgetId() throws Exception { int widgetId = shadowAppWidgetManager.createWidget(SpanishTestAppWidgetProvider.class, R.layout.main); View widgetView = shadowAppWidgetManager.getViewFor(widgetId); assertNotNull(widgetView); assertSame(widgetView, shadowAppWidgetManager.getViewFor(widgetId)); }
@Test public void createWidget_shouldAllowForMultipleInstancesOfWidgets() throws Exception { int widgetId = shadowAppWidgetManager.createWidget(SpanishTestAppWidgetProvider.class, R.layout.main); View widgetView = shadowAppWidgetManager.getViewFor(widgetId); assertNotSame(widgetId, shadowAppWidgetManager.createWidget(SpanishTestAppWidgetProvider.class, R.layout.main)); assertNotSame(widgetView, shadowAppWidgetManager.getViewFor(shadowAppWidgetManager.createWidget(SpanishTestAppWidgetProvider.class, R.layout.main))); }
@Test public void shouldReplaceLayoutIfAndOnlyIfLayoutIdIsDifferent() throws Exception { int widgetId = shadowAppWidgetManager.createWidget(SpanishTestAppWidgetProvider.class, R.layout.main); View originalWidgetView = shadowAppWidgetManager.getViewFor(widgetId); assertContains("Main Layout", originalWidgetView); appWidgetManager.updateAppWidget( widgetId, new RemoteViews( ApplicationProvider.getApplicationContext().getPackageName(), R.layout.main)); assertSame(originalWidgetView, shadowAppWidgetManager.getViewFor(widgetId)); appWidgetManager.updateAppWidget( widgetId, new RemoteViews( ApplicationProvider.getApplicationContext().getPackageName(), R.layout.media)); assertNotSame(originalWidgetView, shadowAppWidgetManager.getViewFor(widgetId)); View mediaWidgetView = shadowAppWidgetManager.getViewFor(widgetId); assertContains("Media Layout", mediaWidgetView); }
@Test public void testRefreshQuery() { RuntimeEnvironment.application.getSharedPreferences("WidgetConfiguration_" + appWidgetId, MODE_PRIVATE) .edit() .putString(RuntimeEnvironment.application.getString(R.string.pref_widget_theme), RuntimeEnvironment.application.getString(R.string.pref_widget_theme_value_light)) .putString(RuntimeEnvironment.application.getString(R.string.pref_widget_query), "Google") .apply(); widgetProvider.onReceive(RuntimeEnvironment.application, new Intent(BuildConfig.APPLICATION_ID + ".ACTION_REFRESH_WIDGET") .putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId)); View view = shadowOf(widgetManager).getViewFor(appWidgetId); assertThat((TextView) view.findViewById(R.id.title)) .containsText("Google"); assertThat((TextView) view.findViewById(R.id.subtitle)) .doesNotContainText(R.string.loading_text); } }
@Test public void testUpdateBest() { RuntimeEnvironment.application.getSharedPreferences("WidgetConfiguration_" + appWidgetId, MODE_PRIVATE) .edit() .putString(RuntimeEnvironment.application.getString(R.string.pref_widget_theme), RuntimeEnvironment.application.getString(R.string.pref_widget_theme_value_dark)) .putString(RuntimeEnvironment.application.getString(R.string.pref_widget_section), RuntimeEnvironment.application.getString(R.string.pref_widget_section_value_best)) .apply(); widgetProvider.onReceive(RuntimeEnvironment.application, new Intent(AppWidgetManager.ACTION_APPWIDGET_UPDATE) .putExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS, new int[]{appWidgetId})); View view = shadowOf(widgetManager).getViewFor(appWidgetId); assertThat((TextView) view.findViewById(R.id.title)) .containsText(R.string.title_activity_best); assertThat((TextView) view.findViewById(R.id.subtitle)) .doesNotContainText(R.string.loading_text); }