package com.prasanna.android.stacknetwork;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
import org.junit.After;
import org.robolectric.Robolectric;
import org.robolectric.shadows.ShadowActivity;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.widget.TextView;
import android.widget.ToggleButton;
import com.prasanna.android.stacknetwork.model.Site;
import com.prasanna.android.stacknetwork.model.User.UserType;
import com.prasanna.android.stacknetwork.model.WritePermission;
import com.prasanna.android.stacknetwork.model.WritePermission.ObjectType;
import com.prasanna.android.stacknetwork.utils.SharedPreferencesUtil;
public abstract class AbstractBaseActivityTest {
private Context context;
public void setContext(Context context) {
this.context = context;
}
protected <T extends Activity> T createActivity(Class<T> clazz) {
return Robolectric.buildActivity(clazz).create().get();
}
protected <T extends Activity> T createActivityAndResume(Class<T> clazz) {
return Robolectric.buildActivity(clazz).create().resume().get();
}
protected Intent assertNextStartedIntentService(ShadowActivity shadowActivity, Class<?> clazz) {
Intent intent = shadowActivity.getNextStartedService();
assertNotNull(intent);
assertEquals(clazz.getName(), intent.getComponent().getClassName());
return intent;
}
protected Intent assertNextStartedActivity(ShadowActivity shadowActivity, Class<?> clazz, String action) {
Intent intent = shadowActivity.getNextStartedActivity();
assertNotNull(intent);
assertEquals(clazz.getName(), intent.getComponent().getClassName());
if (action != null)
assertEquals(action, intent.getAction());
return intent;
}
protected Site getSite(String name, String apiSiteParamter, boolean registered, boolean hasWritePermission) {
Site site = new Site();
site.name = name;
site.apiSiteParameter = apiSiteParamter;
if (registered)
site.userType = UserType.REGISTERED;
return site;
}
protected WritePermission getWritePermission(ObjectType objectType) {
WritePermission writePermission = new WritePermission();
writePermission.canAdd = true;
writePermission.canEdit = true;
writePermission.canDelete = true;
writePermission.objectType = objectType;
return writePermission;
}
protected void assertTextViewForValue(TextView textView, String expectedValue) {
assertNotNull(textView);
assertEquals(expectedValue, textView.getText().toString());
}
protected void assertToggleButtonState(ToggleButton toggleButton, boolean expectedState) {
assertNotNull(toggleButton);
assertTrue(toggleButton.isChecked() == expectedState);
}
protected void assertNextActivity(Activity currentActivity, Class<? extends Activity> nextActivity) {
Intent intent = Robolectric.shadowOf(currentActivity).getNextStartedActivity();
assertNotNull(intent);
assertEquals(nextActivity.getCanonicalName(), intent.getComponent().getClassName());
}
@After
public void cleanup() {
if (context != null)
SharedPreferencesUtil.clear(context);
}
}