package at.tugraz.examreminder.ui;
import android.os.Build;
import android.preference.PreferenceManager;
import android.test.ActivityInstrumentationTestCase2;
import at.tugraz.examreminder.R;
import at.tugraz.examreminder.service.CalendarHelper;
import at.tugraz.examreminder.service.DailyListener;
import com.jayway.android.robotium.solo.Solo;
import java.util.List;
public class SettingsActivityTest extends ActivityInstrumentationTestCase2<SettingsActivity> {
private Solo solo;
public SettingsActivityTest() {
super(SettingsActivity.class);
}
@Override
protected void setUp() throws Exception {
super.setUp();
solo = new Solo(getInstrumentation(), getActivity());
PreferenceManager.getDefaultSharedPreferences(getActivity()).edit().clear().commit(); //Reset default preferences!!
PreferenceManager.setDefaultValues(getActivity(), R.xml.preferences, true);
solo.clickOnActionBarItem(R.id.settings);
DailyListener.setNewPendingIntentAndCancelOld(getActivity(), null); //Cancel schedule
}
@Override
protected void tearDown() throws Exception {
solo.finishOpenedActivities();
DailyListener.setNewPendingIntentAndCancelOld(getActivity(), null); //Cancel schedule
PreferenceManager.getDefaultSharedPreferences(getActivity()).edit().clear().commit(); //Reset default preferences!!
PreferenceManager.setDefaultValues(getActivity(), R.xml.preferences, true);
super.tearDown();
solo = null;
}
public void testUpdateFrequency() {
int updateFrequency = Integer.parseInt(PreferenceManager.getDefaultSharedPreferences(getActivity()).getString("pref_update_frequency", "-1"));
assertEquals("The update frequency preference default value is not every day", 1, updateFrequency);
assertTrue("Update frequency description should be the description of the default value", solo.searchText(getActivity().getString(R.string.once_a_day), true) );
solo.clickOnText(getActivity().getString(R.string.pref_update_frequency));
solo.clickOnText(getActivity().getString(R.string.every_2_days));
assertTrue("Update frequency description should be 'every 2 days'", solo.searchText(getActivity().getString(R.string.every_2_days), true) );
assertNotNull("There should be a new PendingRequest in DailyListener", DailyListener.currentPendingIntent);
}
public void testCalendarPreferences() {
if (android.os.Build.VERSION.SDK_INT < Build.VERSION_CODES.ICE_CREAM_SANDWICH) {
return;
}
assertFalse("Android Calendar should not be used per default", PreferenceManager.getDefaultSharedPreferences(getActivity()).getBoolean("pref_use_android_calendar", false));
solo.clickOnCheckBox(1);
CalendarHelper calendarHelper = new CalendarHelper(getActivity());
List<CalendarHelper.Calendar> calendarList = calendarHelper.getLocalCalendars();
assertTrue("This test only works if there are at least 2 calendars", calendarList.size() >= 2);
solo.clickOnText(solo.getString(R.string.pref_android_calendar_to_use));
for(CalendarHelper.Calendar calendar : calendarList) {
assertTrue(solo.searchText(calendar.displayName));
}
solo.clickOnText(calendarList.get(1).displayName);
assertTrue("Selected calendar should show in summery", solo.searchText(calendarList.get(1).displayName));
}
}