From 875416031c8de6bbbaafa58453a78f18789a6399 Mon Sep 17 00:00:00 2001 From: Allan O Date: Tue, 1 Oct 2019 18:41:33 +0300 Subject: [PATCH 1/4] Refactor hasInitializedIndicators() check Move truncate indicator definition tables functionality and make readConfigFile() public for use outside the library e.g. in migrations --- .../java/org/smartregister/reporting/ReportingLibrary.java | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/opensrp-reporting/src/main/java/org/smartregister/reporting/ReportingLibrary.java b/opensrp-reporting/src/main/java/org/smartregister/reporting/ReportingLibrary.java index 657752c7..0d8b6a77 100644 --- a/opensrp-reporting/src/main/java/org/smartregister/reporting/ReportingLibrary.java +++ b/opensrp-reporting/src/main/java/org/smartregister/reporting/ReportingLibrary.java @@ -187,7 +187,11 @@ private boolean hasInitializedIndicators(SQLiteDatabase sqLiteDatabase) { if (!appOnDebugMode && (!isAppUpdated() || isIndicatorsInitialized())) { return true; } + truncateIndicatorDefinitionTables(sqLiteDatabase); + return false; + } + public void truncateIndicatorDefinitionTables(SQLiteDatabase sqLiteDatabase) { if (sqLiteDatabase != null) { indicatorRepository.truncateTable(sqLiteDatabase); indicatorQueryRepository.truncateTable(sqLiteDatabase); @@ -195,10 +199,9 @@ private boolean hasInitializedIndicators(SQLiteDatabase sqLiteDatabase) { indicatorRepository.truncateTable(); indicatorQueryRepository.truncateTable(); } - return false; } - private void readConfigFile(String configFilePath, SQLiteDatabase sqLiteDatabase) { + public void readConfigFile(String configFilePath, SQLiteDatabase sqLiteDatabase) { initYamlIndicatorConfig(); Iterable indicatorsFromFile = null; try { From 04e6ff1e1141828b7103cec8a62345b614841646 Mon Sep 17 00:00:00 2001 From: Allan O Date: Tue, 1 Oct 2019 18:44:04 +0300 Subject: [PATCH 2/4] Update version --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index b1e5f078..186ab2e4 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,4 +1,4 @@ -VERSION_NAME=0.0.5-SNAPSHOT +VERSION_NAME=0.0.6-SNAPSHOT VERSION_CODE=1 GROUP=org.smartregister POM_SETTING_DESCRIPTION=OpenSRP Client Reporting Library From ed2a989ca4e9fcf1c83332241b7a24ef794fb7b1 Mon Sep 17 00:00:00 2001 From: Allan O Date: Thu, 3 Oct 2019 17:26:29 +0300 Subject: [PATCH 3/4] Add test for truncate indicator tables with SQLite instance --- .../reporting/ReportingLibraryTest.java | 36 +++++++++++++++++-- 1 file changed, 34 insertions(+), 2 deletions(-) diff --git a/opensrp-reporting/src/test/java/org/smartregister/reporting/ReportingLibraryTest.java b/opensrp-reporting/src/test/java/org/smartregister/reporting/ReportingLibraryTest.java index b18def3d..f51730e2 100644 --- a/opensrp-reporting/src/test/java/org/smartregister/reporting/ReportingLibraryTest.java +++ b/opensrp-reporting/src/test/java/org/smartregister/reporting/ReportingLibraryTest.java @@ -1,27 +1,45 @@ package org.smartregister.reporting; +import net.sqlcipher.database.SQLiteDatabase; + import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; +import org.mockito.Mockito; import org.mockito.MockitoAnnotations; -import org.powermock.modules.junit4.PowerMockRunner; +import org.mockito.junit.MockitoJUnitRunner; +import org.powermock.reflect.Whitebox; import org.smartregister.Context; import org.smartregister.commonregistry.CommonFtsObject; +import org.smartregister.reporting.repository.IndicatorQueryRepository; +import org.smartregister.reporting.repository.IndicatorRepository; import org.smartregister.repository.Repository; import static org.junit.Assert.assertNotNull; -@RunWith(PowerMockRunner.class) +@RunWith(MockitoJUnitRunner.class) public class ReportingLibraryTest { @Mock private Context context; + @Mock private Repository repository; + + @Mock + private IndicatorRepository indicatorRepository; + + @Mock + private IndicatorQueryRepository indicatorQueryRepository; + + @Mock private CommonFtsObject commonFtsObject; + @Mock + private SQLiteDatabase sqliteDatabase; + private int appVersion = 1; private int dbVersion = 1; @@ -46,4 +64,18 @@ public void testThatAllRepositoriesAreInitialized() { assertNotNull(reportingLibrary.dailyIndicatorCountRepository()); } + + @Test + public void truncateIndicatorTablesWithDBInvokesRepositoryTruncate() { + ReportingLibrary.init(context, repository, commonFtsObject, appVersion, dbVersion); + ReportingLibrary reportingLibrary = ReportingLibrary.getInstance(); + ReportingLibrary reportingLibrarySpy = Mockito.spy(reportingLibrary); + // Magic + Whitebox.setInternalState(reportingLibrarySpy, "indicatorRepository", indicatorRepository); + Whitebox.setInternalState(reportingLibrarySpy, "indicatorQueryRepository", indicatorQueryRepository); + + reportingLibrarySpy.truncateIndicatorDefinitionTables(sqliteDatabase); + Mockito.verify(indicatorRepository, Mockito.times(1)).truncateTable(sqliteDatabase); + Mockito.verify(indicatorQueryRepository, Mockito.times(1)).truncateTable(sqliteDatabase); + } } From 2bdaa9a0c7810553f3723db8e1cee6b79c1e30d9 Mon Sep 17 00:00:00 2001 From: Allan O Date: Thu, 3 Oct 2019 21:03:47 +0300 Subject: [PATCH 4/4] Trigger Travis