-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Added unit and instrumented tests
- Loading branch information
Showing
21 changed files
with
582 additions
and
71 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
26 changes: 0 additions & 26 deletions
26
app/src/androidTest/java/com/jonathanpetitfrere/mvvm/ExampleInstrumentedTest.java
This file was deleted.
Oops, something went wrong.
15 changes: 15 additions & 0 deletions
15
app/src/androidTest/java/com/jonathanpetitfrere/mvvm/TestApplication.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,15 @@ | ||
package com.jonathanpetitfrere.mvvm; | ||
|
||
import com.jonathanpetitfrere.mvvm.di.AppGraph; | ||
|
||
/** | ||
* @author jpetit | ||
*/ | ||
|
||
public class TestApplication extends MvvmApplication { | ||
|
||
public void setAppGraph(AppGraph appGraph) { | ||
this.component = appGraph; | ||
} | ||
|
||
} |
17 changes: 17 additions & 0 deletions
17
app/src/androidTest/java/com/jonathanpetitfrere/mvvm/TestRunner.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,17 @@ | ||
package com.jonathanpetitfrere.mvvm; | ||
|
||
import android.app.Application; | ||
import android.content.Context; | ||
import android.support.test.runner.AndroidJUnitRunner; | ||
|
||
/** | ||
* @author jpetit | ||
*/ | ||
|
||
public class TestRunner extends AndroidJUnitRunner { | ||
|
||
@Override | ||
public Application newApplication(ClassLoader cl, String className, Context context) throws InstantiationException, IllegalAccessException, ClassNotFoundException { | ||
return super.newApplication(cl, TestApplication.class.getName(), context); | ||
} | ||
} |
9 changes: 9 additions & 0 deletions
9
app/src/androidTest/java/com/jonathanpetitfrere/mvvm/di/TestApiModule.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,9 @@ | ||
package com.jonathanpetitfrere.mvvm.di; | ||
|
||
/** | ||
* @author jpetit | ||
*/ | ||
|
||
public class TestApiModule extends ApiModule { | ||
|
||
} |
14 changes: 14 additions & 0 deletions
14
app/src/androidTest/java/com/jonathanpetitfrere/mvvm/di/TestApplicationModule.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,14 @@ | ||
package com.jonathanpetitfrere.mvvm.di; | ||
|
||
import android.app.Application; | ||
|
||
/** | ||
* @author jpetit | ||
*/ | ||
|
||
public class TestApplicationModule extends ApplicationModule { | ||
|
||
public TestApplicationModule(Application application) { | ||
super(application); | ||
} | ||
} |
32 changes: 32 additions & 0 deletions
32
app/src/androidTest/java/com/jonathanpetitfrere/mvvm/di/TestComponent.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,32 @@ | ||
package com.jonathanpetitfrere.mvvm.di; | ||
|
||
import android.app.Application; | ||
|
||
import javax.inject.Singleton; | ||
|
||
import dagger.Component; | ||
|
||
/** | ||
* @author jpetit | ||
*/ | ||
@Singleton | ||
@Component(modules = { | ||
ApplicationModule.class, | ||
ApiModule.class, | ||
RepositoryModule.class | ||
}) | ||
public interface TestComponent extends AppGraph { | ||
|
||
final class Initializer { | ||
|
||
public static TestComponent init(Application application) { | ||
|
||
return DaggerTestComponent.builder() | ||
.applicationModule(new TestApplicationModule(application)) | ||
.repositoryModule(new TestRepositoryModule()) | ||
.apiModule(new TestApiModule()) | ||
.build(); | ||
} | ||
} | ||
|
||
} |
19 changes: 19 additions & 0 deletions
19
app/src/androidTest/java/com/jonathanpetitfrere/mvvm/di/TestRepositoryModule.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,19 @@ | ||
package com.jonathanpetitfrere.mvvm.di; | ||
|
||
import android.arch.persistence.room.Room; | ||
import android.content.Context; | ||
|
||
import com.jonathanpetitfrere.mvvm.repository.persistence.MvvmDatabase; | ||
|
||
/** | ||
* @author jpetit | ||
*/ | ||
|
||
public class TestRepositoryModule extends RepositoryModule { | ||
|
||
@Override | ||
MvvmDatabase provideMvvmDatabase(Context context) { | ||
return Room.inMemoryDatabaseBuilder(context.getApplicationContext(), MvvmDatabase.class) | ||
.build(); | ||
} | ||
} |
89 changes: 89 additions & 0 deletions
89
.../androidTest/java/com/jonathanpetitfrere/mvvm/repository/persistence/dao/UserDaoTest.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,89 @@ | ||
package com.jonathanpetitfrere.mvvm.repository.persistence.dao; | ||
|
||
import android.arch.persistence.room.Room; | ||
import android.content.Context; | ||
import android.support.test.InstrumentationRegistry; | ||
import android.support.test.runner.AndroidJUnit4; | ||
|
||
import com.jonathanpetitfrere.mvvm.repository.persistence.MvvmDatabase; | ||
import com.jonathanpetitfrere.mvvm.repository.persistence.entity.User; | ||
|
||
import org.junit.After; | ||
import org.junit.Before; | ||
import org.junit.Test; | ||
import org.junit.runner.RunWith; | ||
|
||
import java.util.ArrayList; | ||
import java.util.List; | ||
|
||
/** | ||
* @author jpetit | ||
*/ | ||
|
||
@RunWith(AndroidJUnit4.class) | ||
public class UserDaoTest { | ||
|
||
private MvvmDatabase mvvmDatabase; | ||
private UserDao userDao; | ||
|
||
@Before | ||
public void setup() { | ||
Context context = InstrumentationRegistry.getInstrumentation().getTargetContext(); | ||
mvvmDatabase = Room.inMemoryDatabaseBuilder(context, MvvmDatabase.class).build(); | ||
userDao = mvvmDatabase.userDao(); | ||
} | ||
|
||
@After | ||
public void tearDown() { | ||
mvvmDatabase.close(); | ||
} | ||
|
||
@Test | ||
public void saveAndLoadUserSuccess() throws InterruptedException { | ||
User user = new User("john.doe@gmail.com", "John", "Doe"); | ||
userDao.saveUser(user); | ||
|
||
userDao.loadUser(user.getEmail()) | ||
.take(1) | ||
.test() | ||
.await() | ||
.assertResult(user); | ||
} | ||
|
||
@Test | ||
public void saveAndLoadMultipleUsersSuccess() throws InterruptedException { | ||
User userOne = new User("john.doe@gmail.com", "John", "Doe"); | ||
User userTwo = new User("jane.doe@gmail.com", "Jane", "Doe"); | ||
|
||
List<User> users = new ArrayList<>(); | ||
users.add(userOne); | ||
users.add(userTwo); | ||
|
||
for(User user : users) { | ||
userDao.saveUser(user); | ||
} | ||
|
||
//noinspection unchecked | ||
userDao.loadUsers() | ||
.take(1) | ||
.test() | ||
.await() | ||
.assertResult(users); | ||
} | ||
|
||
|
||
@Test | ||
public void saveAndLoadUserUpdateFirstNameSuccess() throws InterruptedException { | ||
User user = new User("john.doe@gmail.com", "John", "Doe"); | ||
|
||
userDao.saveUser(user); | ||
user = new User(user.getEmail(), "Johnny", user.getLastName()); | ||
userDao.saveUser(user); | ||
|
||
userDao.loadUser(user.getEmail()) | ||
.take(1) | ||
.test() | ||
.await() | ||
.assertResult(user); | ||
} | ||
} |
69 changes: 69 additions & 0 deletions
69
app/src/androidTest/java/com/jonathanpetitfrere/mvvm/ui/main/MainActivityTest.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,69 @@ | ||
package com.jonathanpetitfrere.mvvm.ui.main; | ||
|
||
import android.os.SystemClock; | ||
import android.support.test.InstrumentationRegistry; | ||
import android.support.test.rule.ActivityTestRule; | ||
import android.support.test.runner.AndroidJUnit4; | ||
|
||
import com.jonathanpetitfrere.mvvm.R; | ||
import com.jonathanpetitfrere.mvvm.TestApplication; | ||
import com.jonathanpetitfrere.mvvm.di.TestComponent; | ||
|
||
import org.junit.Before; | ||
import org.junit.Rule; | ||
import org.junit.Test; | ||
import org.junit.runner.RunWith; | ||
import org.mockito.junit.MockitoJUnit; | ||
import org.mockito.junit.MockitoRule; | ||
|
||
import static android.support.test.espresso.Espresso.onView; | ||
import static android.support.test.espresso.action.ViewActions.click; | ||
import static android.support.test.espresso.action.ViewActions.typeText; | ||
import static android.support.test.espresso.matcher.ViewMatchers.withId; | ||
import static junit.framework.Assert.assertEquals; | ||
|
||
/** | ||
* @author jpetit | ||
*/ | ||
|
||
@RunWith(AndroidJUnit4.class) | ||
public class MainActivityTest { | ||
|
||
@Rule | ||
public final ActivityTestRule<MainActivity> activityTestRule = new ActivityTestRule<>(MainActivity.class, false, false); | ||
|
||
@Before | ||
public void setup() { | ||
TestApplication application = ((TestApplication) InstrumentationRegistry.getTargetContext().getApplicationContext()); | ||
TestComponent component = TestComponent.Initializer.init(application); | ||
application.setAppGraph(component); | ||
activityTestRule.launchActivity(null); | ||
} | ||
|
||
@Test | ||
public void enterUserDataAndCreateUser() { | ||
String email = "John.doe@gmail.com"; | ||
String firstName = "John"; | ||
String lastName = "Doe"; | ||
|
||
onView(withId(R.id.main_email_input)) | ||
.perform(typeText(email)); | ||
|
||
onView(withId(R.id.main_first_name_input)) | ||
.perform(typeText(firstName)); | ||
|
||
onView(withId(R.id.main_last_name_input)) | ||
.perform(typeText(lastName)); | ||
|
||
onView(withId(R.id.main_create_button)) | ||
.perform(click()); | ||
|
||
MainActivity activity = activityTestRule.getActivity(); | ||
UserListItemView view = (UserListItemView) activity.recyclerView.getChildAt(0); | ||
|
||
assertEquals("email == email", email, view.emailText.getText().toString()); | ||
assertEquals("firstName == firstName", firstName, view.firstNameText.getText().toString()); | ||
assertEquals("lastName == lastName", lastName, view.lastNameText.getText().toString()); | ||
} | ||
|
||
} |
Oops, something went wrong.