Skip to content

Commit

Permalink
Merge pull request #1241 from dhis2/1.1.0
Browse files Browse the repository at this point in the history
feat: [1.1.0] Release 1.1.0
  • Loading branch information
vgarciabnz authored Apr 22, 2020
2 parents 692adde + 2c3b863 commit 17e3868
Show file tree
Hide file tree
Showing 748 changed files with 15,813 additions and 4,852 deletions.
20 changes: 9 additions & 11 deletions core/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -36,8 +36,8 @@ ext {
buildToolsVersion: "28.0.3",
minSdkVersion : 19,
targetSdkVersion : 28,
versionCode : 203,
versionName : "1.0.3"
versionCode : 210,
versionName : "1.1.0"
]

libraries = [
Expand All @@ -54,6 +54,8 @@ ext {
duktape : "1.1.0",
dagger : "2.14.1",
rxjava : "2.2.8",
rxandroid : "2.1.1",
sqlcipher : "4.2.0",

// code checks
findbugs : "3.0.0",
Expand All @@ -73,9 +75,6 @@ ext {
// plugins
errorpronecore : "2.0.15",

//database
sqlbritemigrations : "v1.0.1",

// google
safetynet : "16.0.0",
]
Expand Down Expand Up @@ -149,11 +148,7 @@ android {
dependencies {

api "io.reactivex.rxjava2:rxjava:${libraries.rxjava}"

// sqlbrite-migrations library
api ("com.github.lykmapipo:sqlbrite-migrations:${libraries.sqlbritemigrations}") {
exclude group: 'io.reactivex.rxjava2', module: 'rxjava'
}
api "io.reactivex.rxjava2:rxandroid:${libraries.rxandroid}"

// Support libraries
api "androidx.annotation:annotation:${libraries.support}"
Expand Down Expand Up @@ -199,8 +194,12 @@ dependencies {
api "com.gabrielittner.auto.value:auto-value-cursor-annotations:${libraries.autovaluecursor}"
annotationProcessor "com.gabrielittner.auto.value:auto-value-cursor:${libraries.autovaluecursor}"

api "net.zetetic:android-database-sqlcipher:${libraries.sqlcipher}"

api "com.google.code.findbugs:annotations:${libraries.findbugs}"

api "com.squareup.okhttp3:mockwebserver:${libraries.okhttp}"

// Java test dependencies
testImplementation "junit:junit:${libraries.junit}"
testImplementation "org.mockito:mockito-core:${libraries.mockito}"
Expand All @@ -213,7 +212,6 @@ dependencies {
// Android test dependencies
androidTestImplementation "commons-logging:commons-logging:1.2"
androidTestImplementation "org.mockito:mockito-core:${libraries.mockito}"
androidTestImplementation "com.squareup.okhttp3:mockwebserver:${libraries.okhttp}"
androidTestImplementation "android.arch.core:core-testing:${libraries.coretesting}"
androidTestImplementation "com.jraska.livedata:testing:${libraries.livedatatesting}"
androidTestImplementation "androidx.test:runner:${libraries.testrunner}"
Expand Down
4 changes: 2 additions & 2 deletions core/gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -29,8 +29,8 @@
# Properties which are consumed by plugins/gradle-mvn-push.gradle plugin.
# They are used for publishing artifact to snapshot repository.

VERSION_NAME=1.0.3
VERSION_CODE=203
VERSION_NAME=1.1.0
VERSION_CODE=210

GROUP=org.hisp.dhis

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,22 +26,19 @@
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/

package org.hisp.dhis.android.core.utils.integration.real;
package org.hisp.dhis.android.core;

import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;

import androidx.test.InstrumentationRegistry;

import com.facebook.stetho.Stetho;

import org.hisp.dhis.android.core.D2;
import org.hisp.dhis.android.core.arch.call.internal.GenericCallData;
import org.hisp.dhis.android.core.arch.d2.internal.D2DIComponent;
import org.hisp.dhis.android.core.arch.db.access.DatabaseAdapter;
import org.hisp.dhis.android.core.arch.db.access.DbOpenHelper;
import org.hisp.dhis.android.core.arch.db.access.internal.SqLiteDatabaseAdapter;
import org.hisp.dhis.android.core.arch.storage.internal.CredentialsSecureStore;
import org.hisp.dhis.android.core.arch.storage.internal.CredentialsSecureStoreImpl;
import org.hisp.dhis.android.core.arch.db.access.internal.DatabaseAdapterFactory;
import org.hisp.dhis.android.core.arch.storage.internal.InMemorySecureStore;
import org.hisp.dhis.android.core.data.server.RealServerMother;
import org.hisp.dhis.android.core.resource.internal.ResourceHandler;
import org.junit.After;
Expand All @@ -50,44 +47,34 @@
import java.io.IOException;
import java.util.Date;

import androidx.test.InstrumentationRegistry;

import static com.google.common.truth.Truth.assertThat;

public abstract class BaseRealIntegrationTest {
private SQLiteDatabase sqLiteDatabase;
private DatabaseAdapter databaseAdapter;
private Context context;

protected Date serverDate = new Date();
protected ResourceHandler resourceHandler;
protected CredentialsSecureStore credentialsSecureStore;

protected String username = RealServerMother.username;
protected String password = RealServerMother.password;
protected String url = RealServerMother.url;

@Before
public void setUp() throws IOException {
context = InstrumentationRegistry.getTargetContext().getApplicationContext();
Context context = InstrumentationRegistry.getTargetContext().getApplicationContext();

DbOpenHelper dbOpenHelper = new DbOpenHelper(context, null);
sqLiteDatabase = dbOpenHelper.getWritableDatabase();
databaseAdapter = new SqLiteDatabaseAdapter(dbOpenHelper);
credentialsSecureStore = new CredentialsSecureStoreImpl(context);
DatabaseAdapterFactory databaseAdapterFactory = DatabaseAdapterFactory.create(context, new InMemorySecureStore());
databaseAdapter = databaseAdapterFactory.newParentDatabaseAdapter();
databaseAdapterFactory.createOrOpenDatabase(databaseAdapter, null, false);
resourceHandler = ResourceHandler.create(databaseAdapter);
resourceHandler.setServerDate(serverDate);
Stetho.initializeWithDefaults(context);
}

@After
public void tearDown() throws IOException {
assertThat(sqLiteDatabase).isNotNull();
sqLiteDatabase.close();
}

protected SQLiteDatabase database() {
return sqLiteDatabase;
assertThat(databaseAdapter).isNotNull();
databaseAdapter.close();
}

protected DatabaseAdapter databaseAdapter() {
Expand All @@ -99,13 +86,7 @@ protected GenericCallData getGenericCallData(D2 d2) {
databaseAdapter(), d2.retrofit(), resourceHandler, d2.systemInfoModule().versionManager());
}

protected Cursor getCursor(String table, String[] columns) {
return sqLiteDatabase.query(table, columns,
null, null, null, null, null);
}

protected D2DIComponent getD2DIComponent(D2 d2) {
return D2DIComponent.create(InstrumentationRegistry.getTargetContext().getApplicationContext(), d2.retrofit(),
databaseAdapter, credentialsSecureStore);
return d2.d2DIComponent;
}
}
45 changes: 20 additions & 25 deletions core/src/androidTest/java/org/hisp/dhis/android/core/D2Factory.java
Original file line number Diff line number Diff line change
Expand Up @@ -30,39 +30,47 @@

import android.content.Context;

import androidx.test.InstrumentationRegistry;

import com.facebook.stetho.okhttp3.StethoInterceptor;

import org.hisp.dhis.android.core.arch.db.access.DatabaseAdapter;
import org.hisp.dhis.android.core.arch.storage.internal.CredentialsSecureStore;
import org.hisp.dhis.android.core.arch.storage.internal.CredentialsSecureStoreImpl;
import org.hisp.dhis.android.core.arch.storage.internal.AndroidInsecureStore;
import org.hisp.dhis.android.core.arch.storage.internal.AndroidSecureStore;
import org.hisp.dhis.android.core.arch.storage.internal.InMemorySecureStore;
import org.hisp.dhis.android.core.arch.storage.internal.InMemoryUnsecureStore;
import org.hisp.dhis.android.core.arch.storage.internal.InsecureStore;
import org.hisp.dhis.android.core.arch.storage.internal.SecureStore;

import java.util.Collections;

import androidx.test.InstrumentationRegistry;
import okhttp3.logging.HttpLoggingInterceptor;

public class D2Factory {

public static D2 forDatabaseName(String databaseName) {
public static D2 forNewDatabase() {
return forNewDatabaseInternal(new InMemorySecureStore(), new InMemoryUnsecureStore());
}

public static D2 forNewDatabaseWithAndroidSecureStore() {
Context context = InstrumentationRegistry.getTargetContext().getApplicationContext();
return forNewDatabaseInternal(new AndroidSecureStore(context), new AndroidInsecureStore(context));
}

D2Configuration d2Configuration = d2Configuration(context);
private static D2 forNewDatabaseInternal(SecureStore secureStore, InsecureStore insecureStore) {
Context context = InstrumentationRegistry.getTargetContext().getApplicationContext();

D2Manager.setDatabaseName(databaseName);
D2Configuration d2Configuration = d2Configuration(context);

D2Manager.setTestMode(true);
D2Manager.setTestingSecureStore(secureStore);
D2Manager.setTestingInsecureStore(insecureStore);
D2 d2 = D2Manager.blockingInstantiateD2(d2Configuration);

D2Manager.clear();
D2Manager.setDatabaseName(null);

return d2;
}

public static D2 forNewDatabase() {
return forDatabaseName(null);
}

private static D2Configuration d2Configuration(Context context) {
HttpLoggingInterceptor loggingInterceptor = new HttpLoggingInterceptor();
loggingInterceptor.setLevel(HttpLoggingInterceptor.Level.BASIC);
Expand All @@ -76,17 +84,4 @@ private static D2Configuration d2Configuration(Context context) {
.context(context)
.build();
}

public static D2 forDatabaseAdapter(DatabaseAdapter databaseAdapter) {
Context context = InstrumentationRegistry.getTargetContext().getApplicationContext();
NotClosedObjectsDetector.enableNotClosedObjectsDetection();
CredentialsSecureStore credentialsSecureStore = new CredentialsSecureStoreImpl(context);
return new D2(
RetrofitFactory.retrofit(
OkHttpClientFactory.okHttpClient(d2Configuration(context), credentialsSecureStore)),
databaseAdapter,
context,
credentialsSecureStore
);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,6 @@

import android.util.Log;

import org.hisp.dhis.android.core.utils.integration.real.BaseRealIntegrationTest;
import org.junit.Before;

import java.io.IOException;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,30 +26,26 @@
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/

package org.hisp.dhis.android.core.utils.integration.mock;
package org.hisp.dhis.android.core;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.util.Log;

import androidx.test.InstrumentationRegistry;

import com.facebook.stetho.Stetho;

import org.hisp.dhis.android.core.D2;
import org.hisp.dhis.android.core.D2Factory;
import org.hisp.dhis.android.core.arch.d2.internal.D2DIComponent;
import org.hisp.dhis.android.core.arch.db.access.DatabaseAdapter;
import org.hisp.dhis.android.core.arch.storage.internal.CredentialsSecureStore;
import org.hisp.dhis.android.core.arch.storage.internal.CredentialsSecureStoreImpl;
import org.hisp.dhis.android.core.data.server.Dhis2MockServer;
import org.hisp.dhis.android.core.mockwebserver.Dhis2MockServer;
import org.hisp.dhis.android.core.period.internal.CalendarProviderFactory;
import org.hisp.dhis.android.core.resource.internal.ResourceHandler;
import org.hisp.dhis.android.core.utils.integration.mock.MockIntegrationTestDatabaseContent;

import java.io.IOException;
import java.util.Date;

import androidx.test.InstrumentationRegistry;

public class MockIntegrationTestObjects {
public final SQLiteDatabase database;
public final DatabaseAdapter databaseAdapter;

public Date serverDate = new Date();
Expand All @@ -59,41 +55,27 @@ public class MockIntegrationTestObjects {
public final D2 d2;
public final Dhis2MockServer dhis2MockServer;
public final MockIntegrationTestDatabaseContent content;
private final String dbName;
private final CredentialsSecureStore credentialsSecureStore;

MockIntegrationTestObjects(MockIntegrationTestDatabaseContent content) throws Exception {
public MockIntegrationTestObjects(MockIntegrationTestDatabaseContent content) throws Exception {
this.content = content;
dbName = content.toString().toLowerCase() + ".db";

deleteDatabase();

Context context = InstrumentationRegistry.getTargetContext().getApplicationContext();
Stetho.initializeWithDefaults(context);

dhis2MockServer = new Dhis2MockServer();
dhis2MockServer = new Dhis2MockServer(0);
CalendarProviderFactory.setFixed();

d2 = D2Factory.forDatabaseName(dbName);
d2 = D2Factory.forNewDatabase();

database = d2.databaseAdapter().database();
databaseAdapter = d2.databaseAdapter();
credentialsSecureStore = new CredentialsSecureStoreImpl(context);

d2DIComponent = D2DIComponent.create(context, d2.retrofit(), databaseAdapter, credentialsSecureStore);
d2DIComponent = d2.d2DIComponent;

resourceHandler = ResourceHandler.create(databaseAdapter);
resourceHandler.setServerDate(serverDate);
}

private void deleteDatabase() {
Context context = InstrumentationRegistry.getTargetContext().getApplicationContext();
context.deleteDatabase(dbName);
}

public void tearDown() throws IOException {
Log.i("MockIntegrationTestObjects", "Objects teardown: " + content);
database.close();
deleteDatabase();
dhis2MockServer.shutdown();
}
}
Loading

0 comments on commit 17e3868

Please sign in to comment.