package com.applang.berichtsheft.test;
import java.util.ArrayList;
import android.content.ContentResolver;
import android.util.Log;
import android.view.ViewGroup;
import android.widget.AutoCompleteTextView;
import android.widget.ExpandableListView;
import android.widget.TextView;
import static com.applang.Util.*;
import com.applang.tagesberichte.Glossary;
import com.applang.tagesberichte.Tagesberichte;
import com.jayway.android.robotium.solo.Condition;
public class TagesberichteTests extends InfraTests<Tagesberichte>
{
private static final String TAG = GlossaryTests.class.getSimpleName();
public TagesberichteTests() {
super("com.applang.berichtsheft", Tagesberichte.class);
}
/* public TagesberichteTests(String method) {
this();
}
*/
@Override
protected void setUp() throws Exception {
super.setUp();
assertTrue(mActivity instanceof Tagesberichte);
ProviderTests.generateTestData(mActivity);
// mActivity.contentResolver = getInstrumentation().getTargetContext().getContentResolver();
mContentResolver = mActivity.getContentResolver();
tabs = (ViewGroup) solo.getView(android.R.id.tabs);
}
@Override
protected void tearDown() throws Exception {
super.tearDown();
}
ContentResolver mContentResolver;
ViewGroup tabs;
public void testNeuerEintrag() {
solo.waitForActivity("NotesList");
assertTrue(0 < tabs.getChildCount());
solo.clickOnView(tabs.getChildAt(0));
solo.clickOnMenuItem("Neuer Eintrag");
assertTrue(solo.waitForActivity("TitleEditor"));
String title = "neuer";
solo.enterText(0, title);
solo.assertCurrentActivity("Expected TitleEditor activity", "TitleEditor");
solo.clickOnButton("OK");
solo.assertCurrentActivity("Expected NoteEditor activity", "NoteEditor");
solo.enterText(0, "eintrag");
solo.goBack();
assertTrue(solo.searchText(title));
assertFalse(solo.searchText("eintrag"));
solo.clickOnText(title);
solo.assertCurrentActivity("Expected NoteEditor activity", "NoteEditor");
assertFalse(solo.searchText(title));
assertTrue(solo.searchText("eintrag"));
solo.goBack();
solo.clickLongOnText(title);
solo.clickOnText("Löschen");
solo.clickOnButton(0);
solo.assertCurrentActivity("Expected Tagesberichte activity", "Tagesberichte");
assertFalse(solo.waitForText(title, 1, 100));
}
public void testSchlagwort() {
solo.waitForActivity("NotesList");
solo.waitForCondition(new Condition() {
public boolean isSatisfied() {
return 2 < tabs.getChildCount() && tabs.getChildAt(2) != null;
}
}, 1000);
solo.clickOnView(tabs.getChildAt(2));
String schlagwort = "neues";
assertFalse(solo.searchText(schlagwort));
solo.clickOnView(tabs.getChildAt(0));
for (int i = 1; i <= 3; i++) {
solo.clickLongOnText("Velocity" + i);
solo.clickOnText("Schlagwort");
solo.waitForText("Schlagwort");
AutoCompleteTextView actv = (AutoCompleteTextView) solo.getView(com.applang.berichtsheft.R.id.title);
assertNotNull(actv);
actv.setThreshold(1 + schlagwort.length());
solo.typeText(0, schlagwort);
solo.clickOnButton("OK");
}
solo.clickOnView(tabs.getChildAt(2));
solo.assertCurrentActivity("Expected Glossary activity", "Glossary");
assertTrue(solo.searchText(schlagwort));
solo.clickOnText(schlagwort);
for (int i = 3; i <= 1; i--)
listItemContains(3+i, "Velocity" + i);
Log.i(TAG, "Schlagwort checked");
}
public void listItemContains(int i, String text) {
String s = "";
ArrayList<TextView> tvs = solo.clickInList(i);
for (TextView tv : tvs) {
s += tv.getText();
}
assertTrue(s, s.contains(text));
}
public void testSchlagwort2() throws Throwable {
Glossary.setThreaded(getActivity(), false);
solo.waitForActivity("NotesList");
solo.waitForCondition(new Condition() {
public boolean isSatisfied() {
return 2 < tabs.getChildCount() && tabs.getChildAt(2) != null;
}
}, 1000);
solo.clickOnView(tabs.getChildAt(2));
solo.waitForText("Fehler");
solo.assertCurrentActivity("Expected Glossary activity", "Glossary");
// final ExpandableListView lv = solo.getCurrentViews(ExpandableListView.class).get(0);
// assertNotNull(lv);
// runTestOnUiThread(new Runnable() {
// public void run() {
// lv.setSelection(2);
// Log.i(TAG, "selectedId " + lv.getSelectedId());
// }
// });
String schlagwort = "Kein";
solo.clickOnText(schlagwort);
solo.waitForText("Velocity");
for (int i = 3; i > 0; i--)
listItemContains(2+i, "Velocity" + i);
Log.i(TAG, "Schlagwort checked");
solo.clickLongInList(3);
solo.waitForText("Entfernen");
solo.clickOnText("Entfernen");
solo.clickOnButton(0);
// assertFalse(solo.waitForText("Velocity1",1,1000));
listItemContains(3, "Velocity2");
Log.i(TAG, "Schlagwort Velocity1 deleted");
solo.clickOnText(schlagwort);
solo.clickOnView(tabs.getChildAt(0));
solo.waitForText("Velocity");
solo.clickLongOnText("Velocity2");
solo.clickOnText("Löschen");
solo.clickOnButton(0);
// assertFalse(solo.waitForText("Velocity2",1,1000));
Log.i(TAG, "Velocity2 deleted");
solo.clickOnView(tabs.getChildAt(2));
// solo.waitForLogMessage("Glossary populated");
solo.assertCurrentActivity("Expected Glossary activity", "Glossary");
solo.clickOnText(schlagwort);
listItemContains(3, "Velocity3");
}
}