Skip to content
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Commit 055b8c5

Browse files
committedNov 14, 2017
Updated the MainActivityTest
1 parent 70a1072 commit 055b8c5

File tree

4 files changed

+55
-18
lines changed

4 files changed

+55
-18
lines changed
 

‎BasicSample/app/src/androidTest/java/com/example/android/persistence/ui/MainActivityTest.java

Lines changed: 52 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -17,30 +17,39 @@
1717
package com.example.android.persistence.ui;
1818

1919

20+
import static android.support.test.espresso.Espresso.onView;
21+
import static android.support.test.espresso.action.ViewActions.click;
22+
import static android.support.test.espresso.assertion.ViewAssertions.matches;
23+
import static android.support.test.espresso.matcher.ViewMatchers.isDisplayed;
24+
import static android.support.test.espresso.matcher.ViewMatchers.withContentDescription;
25+
import static android.support.test.espresso.matcher.ViewMatchers.withText;
26+
27+
import static org.hamcrest.core.IsNot.not;
28+
2029
import android.arch.core.executor.testing.CountingTaskExecutorRule;
30+
import android.arch.lifecycle.LiveData;
31+
import android.arch.lifecycle.Observer;
32+
import android.support.annotation.Nullable;
33+
import android.support.test.InstrumentationRegistry;
2134
import android.support.test.espresso.contrib.RecyclerViewActions;
2235
import android.support.test.espresso.matcher.ViewMatchers;
2336
import android.support.test.rule.ActivityTestRule;
2437

38+
import com.example.android.persistence.AppExecutors;
39+
import com.example.android.persistence.EspressoTestUtil;
40+
import com.example.android.persistence.R;
41+
import com.example.android.persistence.db.AppDatabase;
42+
43+
import org.hamcrest.CoreMatchers;
44+
import org.hamcrest.MatcherAssert;
2545
import org.junit.Before;
2646
import org.junit.Rule;
2747
import org.junit.Test;
2848

49+
import java.util.concurrent.CountDownLatch;
2950
import java.util.concurrent.TimeUnit;
3051
import java.util.concurrent.TimeoutException;
3152

32-
import static android.support.test.espresso.Espresso.onView;
33-
import static android.support.test.espresso.action.ViewActions.click;
34-
import static android.support.test.espresso.assertion.ViewAssertions.matches;
35-
import static android.support.test.espresso.matcher.ViewMatchers.isDisplayed;
36-
import static android.support.test.espresso.matcher.ViewMatchers.withContentDescription;
37-
import static android.support.test.espresso.matcher.ViewMatchers.withText;
38-
import static org.hamcrest.core.IsNot.not;
39-
40-
import com.example.android.persistence.EspressoTestUtil;
41-
import com.example.android.persistence.R;
42-
import com.example.android.persistence.ui.MainActivity;
43-
4453
public class MainActivityTest {
4554

4655
@Rule
@@ -50,13 +59,43 @@ public class MainActivityTest {
5059
@Rule
5160
public CountingTaskExecutorRule mCountingTaskExecutorRule = new CountingTaskExecutorRule();
5261

62+
public MainActivityTest() {
63+
// delete the database
64+
InstrumentationRegistry.getTargetContext().deleteDatabase(AppDatabase.DATABASE_NAME);
65+
}
66+
5367
@Before
5468
public void disableRecyclerViewAnimations() {
69+
// Disable RecyclerView animations
5570
EspressoTestUtil.disableAnimations(mActivityRule);
5671
}
5772

73+
@Before
74+
public void waitForDbCreation() throws Throwable {
75+
final CountDownLatch latch = new CountDownLatch(1);
76+
final LiveData<Boolean> databaseCreated = AppDatabase.getInstance(
77+
InstrumentationRegistry.getTargetContext(), new AppExecutors())
78+
.getDatabaseCreated();
79+
mActivityRule.runOnUiThread(new Runnable() {
80+
@Override
81+
public void run() {
82+
databaseCreated.observeForever(new Observer<Boolean>() {
83+
@Override
84+
public void onChanged(@Nullable Boolean aBoolean) {
85+
if (Boolean.TRUE.equals(aBoolean)) {
86+
databaseCreated.removeObserver(this);
87+
latch.countDown();
88+
}
89+
}
90+
});
91+
}
92+
});
93+
MatcherAssert.assertThat("database should've initialized",
94+
latch.await(1, TimeUnit.MINUTES), CoreMatchers.is(true));
95+
}
96+
5897
@Test
59-
public void clickOnFirstItem_opensComments() throws TimeoutException, InterruptedException {
98+
public void clickOnFirstItem_opensComments() throws Throwable {
6099
drain();
61100
// When clicking on the first product
62101
onView(ViewMatchers.withContentDescription(R.string.cd_products_list))

‎BasicSample/app/src/main/java/com/example/android/persistence/db/AppDatabase.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
import android.arch.persistence.room.TypeConverters;
2626
import android.content.Context;
2727
import android.support.annotation.NonNull;
28+
import android.support.annotation.VisibleForTesting;
2829

2930
import com.example.android.persistence.AppExecutors;
3031
import com.example.android.persistence.db.converter.DateConverter;
@@ -41,7 +42,8 @@ public abstract class AppDatabase extends RoomDatabase {
4142

4243
private static AppDatabase sInstance;
4344

44-
private static final String DATABASE_NAME = "basic-sample-db";
45+
@VisibleForTesting
46+
public static final String DATABASE_NAME = "basic-sample-db";
4547

4648
public abstract ProductDao productDao();
4749

‎BasicSample/app/src/main/java/com/example/android/persistence/ui/MainActivity.java

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,6 @@
1818

1919
import android.os.Bundle;
2020
import android.support.annotation.Nullable;
21-
22-
import android.arch.lifecycle.LifecycleActivity;
23-
import android.support.v4.app.FragmentActivity;
2421
import android.support.v7.app.AppCompatActivity;
2522

2623
import com.example.android.persistence.R;

‎BasicSample/app/src/main/java/com/example/android/persistence/ui/ProductListFragment.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@
1717
package com.example.android.persistence.ui;
1818

1919
import android.arch.lifecycle.Lifecycle;
20-
import android.arch.lifecycle.LifecycleFragment;
2120
import android.arch.lifecycle.Observer;
2221
import android.arch.lifecycle.ViewModelProviders;
2322
import android.databinding.DataBindingUtil;

0 commit comments

Comments
 (0)
Please sign in to comment.