/*
* Copyright (C) 2012-2016 The Android Money Manager Ex Project Team
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 3
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package org.moneymanagerex.android.testhelpers;
import android.content.Context;
import android.os.Build;
import android.preference.PreferenceManager;
import android.support.test.InstrumentationRegistry;
import android.test.ActivityInstrumentationTestCase2;
import android.util.Log;
import android.view.View;
import com.money.manager.ex.Constants;
import com.money.manager.ex.R;
import com.money.manager.ex.settings.PreferenceConstants;
import com.robotium.solo.Solo;
import timber.log.Timber;
public class UiTestHelpersRobotium {
public UiTestHelpersRobotium(Solo solo) {
this.solo = solo;
// this.host = host;
// this.context = host.getInstrumentation().getTargetContext();
// this.context = solo.getCurrentActivity();
}
// private ActivityInstrumentationTestCase2 host;
public Solo solo;
public static Solo setUp(ActivityInstrumentationTestCase2 host) {
host.injectInstrumentation(InstrumentationRegistry.getInstrumentation());
return new Solo(host.getInstrumentation(), host.getActivity());
}
public static void tearDown(Solo solo) {
if (solo != null) {
solo.finishOpenedActivities();
}
}
public void clearPreferences(Context context) {
// clear default preferences
PreferenceManager.getDefaultSharedPreferences(context).edit().clear().commit();
clearDropboxPreferences(context);
}
public void clearDropboxPreferences(Context context) {
context.getSharedPreferences(PreferenceConstants.PREF_DROPBOX_ACCOUNT_PREFS_NAME, Context.MODE_PRIVATE)
.edit().clear().commit();
}
// public void clickOnNeutralDialogButton() {
// // Positive = 1
// // Negative = 2
// // Neutral = 3
// int buttonId = android.R.id.button3;
// clickOnView(buttonId);
// }
//
// public void clickOnPositiveDialogButton() {
// // Positive = 1
// int buttonId = android.R.id.button1;
// clickOnView(buttonId);
// }
public void clickOnView(int viewId) {
solo.clickOnView(solo.getView(viewId));
}
public void clickOnMaterialDialogButton(DialogButtons button) {
int viewId = Constants.NOT_SET;
switch (button) {
case POSITIVE:
viewId = R.id.buttonDefaultPositive;
break;
case NEGATIVE:
viewId = R.id.buttonDefaultNegative;
break;
case NEUTRAL:
viewId = R.id.buttonDefaultNeutral;
break;
}
clickOnView(viewId);
}
// public static void clickOnActionBarHomeButton(Solo solo) {
//// View homeView = solo.getView(Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB ? android.R.id.home : R.id.home);
//// solo.clickOnView(homeView);
//
//// solo.setNavigationDrawer(Solo.OPENED);
//
//// solo.clickOnScreen(50, 50);
//
// solo.clickOnActionBarHomeButton();
// }
public static void uninstallApp() {
Runtime rt = Runtime.getRuntime();
try {
Process pr = rt.exec("adb uninstall your.package");
pr.waitFor();
} catch (Exception e) {
Timber.e(e, "uninstalling app");
}
}
public void clickOnFloatingButton() {
solo.clickOnView(solo.getView(R.id.fab));
}
public void enterInNumericInput(String value) {
for (Character character : value.toCharArray()) {
switch (character) {
case '.':
solo.clickOnView(solo.getView(R.id.buttonKeyNumDecimal));
break;
case '1':
solo.clickOnView(solo.getView(R.id.buttonKeyNum1));
break;
case '2':
solo.clickOnView(solo.getView(R.id.buttonKeyNum2));
break;
case '3':
solo.clickOnView(solo.getView(R.id.buttonKeyNum3));
break;
case '4':
solo.clickOnView(solo.getView(R.id.buttonKeyNum4));
break;
case '5':
solo.clickOnView(solo.getView(R.id.buttonKeyNum5));
break;
case '6':
solo.clickOnView(solo.getView(R.id.buttonKeyNum6));
break;
case '7':
solo.clickOnView(solo.getView(R.id.buttonKeyNum7));
break;
case '8':
solo.clickOnView(solo.getView(R.id.buttonKeyNum8));
break;
case '9':
solo.clickOnView(solo.getView(R.id.buttonKeyNum9));
break;
case '0':
solo.clickOnView(solo.getView(R.id.buttonKeyNum0));
break;
}
}
}
public void clickDone() {
solo.clickOnView(solo.getView(R.id.action_done));
}
public void clickCancel() {
solo.clickOnView(solo.getView(R.id.action_cancel));
}
public void openPayeesList() {
solo.clickOnActionBarHomeButton();
solo.clickOnText("Entities");
solo.clickOnText("Payees");
}
}