Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feature run test under different package #1834

Open
wants to merge 19 commits into
base: development
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 8 commits
Commits
Show all changes
19 commits
Select commit Hold shift + click to select a range
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .gitmodules
Original file line number Diff line number Diff line change
Expand Up @@ -5,3 +5,6 @@
[submodule "EyeSeeTea-sdk"]
path = EyeSeeTea-sdk
url = https://github.com/EyeSeeTea/sdk.git
[submodule "DBFlow"]
path = DBFlow
url = https://github.com/EyeSeeTea/DBFlow.git
1 change: 1 addition & 0 deletions DBFlow
Submodule DBFlow added at 6f11f4
11 changes: 2 additions & 9 deletions app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -58,21 +58,13 @@ android {
}
buildTypes {

testBuildType "staging"

release {
buildConfigField "boolean", "databaseInMemory", "false"
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
debug {
buildConfigField "boolean", "databaseInMemory", "false"
debuggable true
}
staging {
initWith(buildTypes.debug)
buildConfigField "boolean", "databaseInMemory", "true"
}
}

//TODO This config is related to a known issue: http://stackoverflow.com/questions/20827885/android-studio-0-4-duplicate-files-copied-in-apk-meta-inf-license-txt
Expand Down Expand Up @@ -299,7 +291,8 @@ dependencies {
compile "com.squareup:javapoet:${libs.javapoetVersion}"

//DBFlow
apt "com.github.Raizlabs.DBFlow:dbflow-processor:${libs.dbFlowVersion}"
apt project(":dbflow-processor")

compile "com.github.Raizlabs.DBFlow:dbflow:${libs.dbFlowVersion}"
compile "com.github.Raizlabs.DBFlow:dbflow-core:${libs.dbFlowVersion}"
compile "com.github.Raizlabs.DBFlow:dbflow-sqlcipher:${libs.dbFlowVersion}"
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
package org.eyeseetea.malariacare;


import com.raizlabs.android.dbflow.config.DatabaseHolder;
import com.raizlabs.android.dbflow.config.EyeSeeTeaInMemoryGeneratedDatabaseHolder;

public class DatabaseHolderProviderStrategy implements
EyeSeeTeaApplication.IDatabaseHolderProviderStrategy {
@Override
public Class<? extends DatabaseHolder> provide() {
return EyeSeeTeaInMemoryGeneratedDatabaseHolder.class;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
package org.eyeseetea.malariacare;

import android.support.test.InstrumentationRegistry;

import com.raizlabs.android.dbflow.config.FlowConfig;
import com.raizlabs.android.dbflow.config.FlowManager;

import org.junit.rules.ExternalResource;

/*This test Rules creates a new clean instance of the DBFlow database per each @Test method
that you have, if you change anything in database(insert,delete and update),
it will be clean up when the next @Test methods runs.
For instance, if you have the following:

@Test
public void test1(){
QuestionDB question1 = new QuestionDB();
question1.save(); //After this line id_question
// It's going to be equals to 1
}

@Test
public void test2(){
QuestionDB question2 = new QuestionDB();
question2.save(); //After this line id_question
// it's still equals to 1
// The InMemoryDBFlowDataBase cleans up for you.
}
*/
public class InMemoryDBFlowDataBase extends ExternalResource {

@Override
protected void after() {

FlowManager.reset();

initDBFlowDB();
}

private void initDBFlowDB() {
DatabaseHolderProviderStrategy databaseStrategy = new DatabaseHolderProviderStrategy();
FlowConfig flowConfig = new FlowConfig
.Builder(InstrumentationRegistry.getTargetContext())
.addDatabaseHolder(databaseStrategy.provide())
.build();
FlowManager.init(flowConfig);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,15 +3,11 @@

import static junit.framework.Assert.assertEquals;

import static org.eyeseetea.malariacare.configurationimporter
.ConstantsMetadataConfigurationImporterTest.COUNTRIES_VERSION;
import static org.eyeseetea.malariacare.configurationimporter
.ConstantsMetadataConfigurationImporterTest.COUNTRIES_VERSION_V2;
import static org.eyeseetea.malariacare.configurationimporter
.ConstantsMetadataConfigurationImporterTest.TZ_CONFIG_ANDROID_2_0_JSON;
import static org.eyeseetea.malariacare.configurationimporter.ConstantsMetadataConfigurationImporterTest.COUNTRIES_VERSION;
import static org.eyeseetea.malariacare.configurationimporter.ConstantsMetadataConfigurationImporterTest.COUNTRIES_VERSION_V2;
import static org.eyeseetea.malariacare.configurationimporter.ConstantsMetadataConfigurationImporterTest.TZ_CONFIG_ANDROID_2_0_JSON;
import static org.junit.Assert.assertTrue;


import org.eyeseetea.malariacare.data.authentication.CredentialsReader;
import org.eyeseetea.malariacare.data.database.model.CountryVersionDB;
import org.eyeseetea.malariacare.data.database.model.OptionDB;
Expand All @@ -20,18 +16,16 @@
import org.eyeseetea.malariacare.data.database.model.QuestionDB;
import org.eyeseetea.malariacare.data.database.model.QuestionOptionDB;
import org.eyeseetea.malariacare.data.database.utils.Session;
import org.eyeseetea.malariacare.data.database.utils.populatedb.PopulateDB;
import org.eyeseetea.malariacare.data.server.CustomMockServer;
import org.eyeseetea.malariacare.data.sync.factory.ConverterFactory;
import org.eyeseetea.malariacare.data.sync.importer.metadata.configuration
.MetadataConfigurationApiClient;
import org.eyeseetea.malariacare.data.sync.importer.metadata.configuration
.MetadataConfigurationDBImporter;
import org.eyeseetea.malariacare.data.sync.importer.metadata.configuration.MetadataConfigurationApiClient;
import org.eyeseetea.malariacare.data.sync.importer.metadata.configuration.MetadataConfigurationDBImporter;
import org.eyeseetea.malariacare.domain.entity.Credentials;
import org.eyeseetea.malariacare.domain.entity.Program;
import org.eyeseetea.malariacare.network.retrofit.BasicAuthInterceptor;
import org.junit.After;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;

import java.io.IOException;
Expand All @@ -44,9 +38,11 @@ public class MetadataConfigurationDBImporterShould {

private final Program program = new Program("T_TZ", "low6qUS2wc9");

@Rule
public InMemoryDBFlowDataBase mInMemoryDBFlowDataBase = new InMemoryDBFlowDataBase();
Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is an example of using the JUnit rule that I mentioned in the PR.


@Before
public void setUp() throws Exception {
PopulateDB.wipeDataBase();
Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Now, I can delete this line, because the rule is keeping the state of the DB separated, between @Test

CredentialsReader credentialsReader = CredentialsReader.getInstance();
Session.setCredentials(
new Credentials("/", credentialsReader.getUser(),
Expand Down Expand Up @@ -125,7 +121,7 @@ private void whenConfigFilesAreParsed() throws Exception {
MetadataConfigurationDBImporter importer = new MetadataConfigurationDBImporter(
apiClient, ConverterFactory.getQuestionConverter()
);

importer.hasToUpdateMetadata(program);
importer.importMetadata(program);
}

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
package org.eyeseetea.malariacare;


import com.raizlabs.android.dbflow.config.DatabaseHolder;
import com.raizlabs.android.dbflow.config.EyeSeeTeaGeneratedDatabaseHolder;

public class DatabaseHolderProviderStrategy implements
EyeSeeTeaApplication.IDatabaseHolderProviderStrategy {
@Override
public Class<? extends DatabaseHolder> provide() {
return EyeSeeTeaGeneratedDatabaseHolder.class;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@
import android.util.Log;

import com.crashlytics.android.Crashlytics;
import com.raizlabs.android.dbflow.config.EyeSeeTeaGeneratedDatabaseHolder;
import com.raizlabs.android.dbflow.config.DatabaseHolder;
import com.raizlabs.android.dbflow.config.FlowConfig;
import com.raizlabs.android.dbflow.config.FlowLog;
import com.raizlabs.android.dbflow.config.FlowManager;
Expand Down Expand Up @@ -66,10 +66,12 @@ public void onCreate() {
FlowLog.setMinimumLoggingLevel(FlowLog.Level.V);
}

DatabaseHolderProviderStrategy databaseStrategy = new DatabaseHolderProviderStrategy();

PreferencesState.getInstance().init(getApplicationContext());
FlowConfig flowConfig = new FlowConfig
.Builder(this)
.addDatabaseHolder(EyeSeeTeaGeneratedDatabaseHolder.class)
.addDatabaseHolder(databaseStrategy.provide())
.build();
FlowManager.init(flowConfig);
}
Expand Down Expand Up @@ -119,4 +121,8 @@ public boolean isBackPressed() {
public void setIsBackPressed(boolean isBackPressed) {
EyeSeeTeaApplication.isBackPressed = isBackPressed;
}

public static interface IDatabaseHolderProviderStrategy {
Class<? extends DatabaseHolder> provide();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -22,11 +22,8 @@
import com.raizlabs.android.dbflow.annotation.Database;
import com.raizlabs.android.dbflow.sql.language.NameAlias;

import org.eyeseetea.malariacare.BuildConfig;

@Database(
name = AppDatabase.NAME, version = AppDatabase.VERSION,
inMemory = BuildConfig.databaseInMemory
name = AppDatabase.NAME, version = AppDatabase.VERSION
)

public class AppDatabase {
Expand Down
8 changes: 8 additions & 0 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,10 @@ buildscript {
repositories {
maven { url "https://raw.github.com/Raizlabs/maven-releases/master/releases" }
jcenter()
maven {
url 'https://maven.google.com/'
name 'Google'
}
}
dependencies {
classpath 'com.android.tools.build:gradle:2.3.3'
Expand All @@ -17,6 +21,10 @@ allprojects {
repositories {
jcenter()
maven { url "https://www.jitpack.io" }
maven {
url 'https://maven.google.com/'
name 'Google'
}
}

configurations.all {
Expand Down
3 changes: 2 additions & 1 deletion settings.gradle
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
include ':app', ':core', ':core-android', ':core-rules', ':models', ':ui', ':ui-bindings', ':utils', ':EyeSeeTea-sdk'
include ':app', ':core', ':dbflow-processor', ':core-android', ':core-rules', ':models', ':ui', ':ui-bindings', ':utils', ':EyeSeeTea-sdk'
project(':dbflow-processor').projectDir = new File(settingsDir, 'DBFlow/dbflow-processor')
project(':core').projectDir = new File(settingsDir, 'sdk/core')
project(':core-android').projectDir = new File(settingsDir, 'sdk/core-android')
project(':core-rules').projectDir = new File(settingsDir, 'sdk/core-rules')
Expand Down