mirror of
https://github.com/oxen-io/session-android.git
synced 2025-12-23 10:26:39 +00:00
1) created a new build flavor for espresso tests
2) create a new source set full of espresso tests 3) updated proguard-testing.pro 4) added test device numbers to .gitignore // FREEBIE
This commit is contained in:
committed by
Moxie Marlinspike
parent
6a1bbedae8
commit
7cc2941053
@@ -0,0 +1,119 @@
|
||||
/**
|
||||
* Copyright (C) 2015 Open Whisper Systems
|
||||
*
|
||||
* 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.thoughtcrime.securesms;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.app.Instrumentation.ActivityMonitor;
|
||||
import android.content.ContentProviderOperation;
|
||||
import android.content.ContentResolver;
|
||||
import android.content.Context;
|
||||
import android.database.Cursor;
|
||||
import android.net.Uri;
|
||||
import android.provider.ContactsContract;
|
||||
import android.support.test.espresso.NoActivityResumedException;
|
||||
import android.support.test.espresso.ViewInteraction;
|
||||
import android.util.Log;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
import static android.support.test.espresso.action.ViewActions.replaceText;
|
||||
import static android.support.test.espresso.action.ViewActions.typeText;
|
||||
import static android.support.test.espresso.Espresso.closeSoftKeyboard;
|
||||
import static android.support.test.espresso.Espresso.pressBack;
|
||||
|
||||
public class EspressoUtil {
|
||||
private final static String TAG = EspressoUtil.class.getSimpleName();
|
||||
|
||||
public static void waitOn(Class<? extends Activity> clazz) {
|
||||
Log.w(TAG, "waiting for " + clazz.getName());
|
||||
new ActivityMonitor(clazz.getName(), null, true).waitForActivityWithTimeout(10000);
|
||||
}
|
||||
|
||||
public static void actuallyCloseSoftKeyboard() throws Exception {
|
||||
closeSoftKeyboard();
|
||||
Thread.sleep(800);
|
||||
}
|
||||
|
||||
public static void typeTextAndCloseKeyboard(ViewInteraction view, String text) throws Exception {
|
||||
view.perform(typeText(text));
|
||||
actuallyCloseSoftKeyboard();
|
||||
}
|
||||
|
||||
public static void replaceTextAndCloseKeyboard(ViewInteraction view, String text) throws Exception {
|
||||
view.perform(replaceText(text));
|
||||
actuallyCloseSoftKeyboard();
|
||||
}
|
||||
|
||||
public static void closeAllActivities() throws Exception {
|
||||
for (int i = 0; i < 10; i++) {
|
||||
try {
|
||||
|
||||
pressBack();
|
||||
|
||||
} catch (NoActivityResumedException e) {
|
||||
Log.d(TAG, "you made me do this, android");
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
throw new IllegalStateException("what are you doing with 10 open activities?!");
|
||||
}
|
||||
|
||||
public static long addContact(Context context, String name, String number) throws Exception {
|
||||
ArrayList<ContentProviderOperation> operations = new ArrayList<>();
|
||||
|
||||
operations.add(ContentProviderOperation
|
||||
.newInsert(ContactsContract.RawContacts.CONTENT_URI)
|
||||
.withValue(ContactsContract.RawContacts.ACCOUNT_TYPE, null)
|
||||
.withValue(ContactsContract.RawContacts.ACCOUNT_NAME, null)
|
||||
.build());
|
||||
|
||||
operations.add(ContentProviderOperation
|
||||
.newInsert(ContactsContract.Data.CONTENT_URI)
|
||||
.withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0)
|
||||
.withValue(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE)
|
||||
.withValue(ContactsContract.CommonDataKinds.StructuredName.DISPLAY_NAME, name)
|
||||
.build());
|
||||
|
||||
operations.add(ContentProviderOperation.
|
||||
newInsert(ContactsContract.Data.CONTENT_URI)
|
||||
.withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0)
|
||||
.withValue(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE)
|
||||
.withValue(ContactsContract.CommonDataKinds.Phone.NUMBER, number)
|
||||
.withValue(ContactsContract.CommonDataKinds.Phone.TYPE, ContactsContract.CommonDataKinds.Phone.TYPE_MOBILE)
|
||||
.build());
|
||||
|
||||
return context.getContentResolver().applyBatch(ContactsContract.AUTHORITY, operations).length;
|
||||
}
|
||||
|
||||
public static void removeAllContacts(Context context) throws Exception {
|
||||
ContentResolver contentResolver = context.getContentResolver();
|
||||
Cursor cursor = contentResolver.query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null);
|
||||
|
||||
try {
|
||||
|
||||
while (cursor.moveToNext()) {
|
||||
String contactKey = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.LOOKUP_KEY));
|
||||
Uri contactUri = Uri.withAppendedPath(ContactsContract.Contacts.CONTENT_LOOKUP_URI, contactKey);
|
||||
contentResolver.delete(contactUri, null, null);
|
||||
}
|
||||
|
||||
} finally {
|
||||
cursor.close();
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user