diff --git a/.gitignore b/.gitignore index 54b1252fb..eabbab986 100644 --- a/.gitignore +++ b/.gitignore @@ -16,4 +16,9 @@ local.properties *.log # Android Studio captures folder -captures/ \ No newline at end of file +captures/ + + +*.exec + +*.hprof \ No newline at end of file diff --git a/android-library.gradle b/android-library.gradle index 620173287..750c9a8d9 100644 --- a/android-library.gradle +++ b/android-library.gradle @@ -55,9 +55,9 @@ task sourcesJar(type: Jar) { } dependencies { - implementation "com.google.android.material:material:$androidMaterialVersion" - api "com.hyperwallet.android:core-sdk:$hyperwalletCoreVersion" + api "com.hyperwallet.android:core-sdk:$hyperwalletCoreVersion" + implementation "com.google.android.material:material:$androidMaterialVersion" implementation "androidx.test.espresso:espresso-idling-resource:$espressoVersion" androidTestImplementation "androidx.test.ext:junit:$extJunitVerson" @@ -66,7 +66,4 @@ dependencies { testImplementation group: 'org.mockito', name: 'mockito-core', version: "$mockitoVersion" testImplementation group: 'pl.pragmatists', name: 'JUnitParams', version: "$junitParamsVersion" -} - - - +} \ No newline at end of file diff --git a/common/.gitignore b/commonrepository/.gitignore similarity index 100% rename from common/.gitignore rename to commonrepository/.gitignore diff --git a/commonrepository/build.gradle b/commonrepository/build.gradle new file mode 100644 index 000000000..2901b2ef0 --- /dev/null +++ b/commonrepository/build.gradle @@ -0,0 +1,7 @@ +apply from: "$rootProject.projectDir/android-library.gradle" +description = 'Hyperwallet Common Repository SDK for Android to integrate with the Hyperwallet Platform' +project.ext { + mavenName = 'Hyperwallet Android Common Repository SDK' +} +apply from: "$rootProject.projectDir/publish.gradle" + diff --git a/commonrepository/config/jacoco-settings.gradle b/commonrepository/config/jacoco-settings.gradle new file mode 100644 index 000000000..fd79c8da1 --- /dev/null +++ b/commonrepository/config/jacoco-settings.gradle @@ -0,0 +1,82 @@ +apply plugin: 'jacoco' + +final def jacocoVersion = "0.8.2" + +jacoco { + toolVersion = jacocoVersion +} + +android { + testOptions { + unitTests { + includeAndroidResources = true + returnDefaultValues = true + } + unitTests.all { + jacoco { + includeNoLocationClasses = true + } + } + } +} + +def fileFilter = ['**/BuildConfig.*', + '**/com/hyperwallet/android/ui/common/repository/EspressoIdlingResource.*', + '**/com/hyperwallet/android/ui/common/repository/Event.*' +] + +def debugClassPaths = [ + '**/intermediates/javac/debug/*/classes/**' +] + +final def coverageSourceDirs = ["$project.projectDir/src/main/java/*"] + +task jacocoTestReport(type: JacocoReport, dependsOn: 'testDebugUnitTest') { + + group = 'Reporting' + description = 'Generate Jacoco coverage reports.' + + reports { + html { + enabled = true + destination file("$buildDir/reports/jacoco") + } + } + + classDirectories = fileTree( + dir: "${buildDir}", + includes: debugClassPaths, + excludes: fileFilter + ) + + additionalSourceDirs = files(coverageSourceDirs) + sourceDirectories = files(coverageSourceDirs) + executionData = files("${buildDir}/jacoco/testDebugUnitTest.exec") +} + +task jacocoTestCoverageVerification(type: JacocoCoverageVerification, dependsOn: 'jacocoTestReport') { + + group = 'Verification' + classDirectories = fileTree( + dir: "${buildDir}", + includes: debugClassPaths, + excludes: fileFilter + ) + additionalSourceDirs = files(coverageSourceDirs) + sourceDirectories = files(coverageSourceDirs) + executionData = files("${buildDir}/jacoco/testDebugUnitTest.exec") + + violationRules { + setFailOnViolation(true) + + rule { + element = 'CLASS' + limit { + value = 'COVEREDRATIO' + counter = 'BRANCH' + minimum = 0.65 + } + } + } +} + diff --git a/common/config/lint.xml b/commonrepository/config/lint.xml similarity index 100% rename from common/config/lint.xml rename to commonrepository/config/lint.xml diff --git a/common/proguard-rules.pro b/commonrepository/proguard-rules.pro similarity index 100% rename from common/proguard-rules.pro rename to commonrepository/proguard-rules.pro diff --git a/commonrepository/src/main/AndroidManifest.xml b/commonrepository/src/main/AndroidManifest.xml new file mode 100644 index 000000000..ab9a2cf4c --- /dev/null +++ b/commonrepository/src/main/AndroidManifest.xml @@ -0,0 +1 @@ + diff --git a/common/src/main/java/com/hyperwallet/android/ui/common/util/EspressoIdlingResource.java b/commonrepository/src/main/java/com/hyperwallet/android/ui/common/repository/EspressoIdlingResource.java similarity index 91% rename from common/src/main/java/com/hyperwallet/android/ui/common/util/EspressoIdlingResource.java rename to commonrepository/src/main/java/com/hyperwallet/android/ui/common/repository/EspressoIdlingResource.java index 56c870127..dafe63694 100644 --- a/common/src/main/java/com/hyperwallet/android/ui/common/util/EspressoIdlingResource.java +++ b/commonrepository/src/main/java/com/hyperwallet/android/ui/common/repository/EspressoIdlingResource.java @@ -1,4 +1,4 @@ -package com.hyperwallet.android.ui.common.util; +package com.hyperwallet.android.ui.common.repository; import androidx.test.espresso.IdlingResource; import androidx.test.espresso.idling.CountingIdlingResource; diff --git a/common/src/main/java/com/hyperwallet/android/ui/common/viewmodel/Event.java b/commonrepository/src/main/java/com/hyperwallet/android/ui/common/repository/Event.java similarity index 97% rename from common/src/main/java/com/hyperwallet/android/ui/common/viewmodel/Event.java rename to commonrepository/src/main/java/com/hyperwallet/android/ui/common/repository/Event.java index 984bb9995..36e63f1e8 100644 --- a/common/src/main/java/com/hyperwallet/android/ui/common/viewmodel/Event.java +++ b/commonrepository/src/main/java/com/hyperwallet/android/ui/common/repository/Event.java @@ -14,7 +14,7 @@ * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -package com.hyperwallet.android.ui.common.viewmodel; +package com.hyperwallet.android.ui.common.repository; import androidx.annotation.NonNull; import androidx.annotation.Nullable; diff --git a/receipt/.gitignore b/commonui/.gitignore similarity index 100% rename from receipt/.gitignore rename to commonui/.gitignore diff --git a/commonui/build.gradle b/commonui/build.gradle new file mode 100644 index 000000000..30d929e32 --- /dev/null +++ b/commonui/build.gradle @@ -0,0 +1,10 @@ +apply from: "$rootProject.projectDir/android-library.gradle" +description = 'Hyperwallet Common UI SDK for Android to integrate with the Hyperwallet Platform' +project.ext { + mavenName = 'Hyperwallet Android Common UI SDK' +} +apply from: "$rootProject.projectDir/publish.gradle" + +dependencies { + implementation project(':commonrepository') +} \ No newline at end of file diff --git a/common/config/jacoco-settings.gradle b/commonui/config/jacoco-settings.gradle similarity index 92% rename from common/config/jacoco-settings.gradle rename to commonui/config/jacoco-settings.gradle index 0fe7bbd10..fa8fde9dd 100644 --- a/common/config/jacoco-settings.gradle +++ b/commonui/config/jacoco-settings.gradle @@ -23,9 +23,7 @@ android { def fileFilter = ['**/BuildConfig.*', '**/com/hyperwallet/android/ui/common/view/error/DefaultErrorDialogFragment.*', '**/com/hyperwallet/android/ui/common/view/HorizontalDividerItemDecorator.*', - '**/com/hyperwallet/android/ui/common/view/OneClickListener.*', - '**/com/hyperwallet/android/ui/common/util/EspressoIdlingResource.*', - '**/com/hyperwallet/android/ui/common/viewmodel/Event.*' + '**/com/hyperwallet/android/ui/common/view/OneClickListener.*' ] def debugClassPaths = [ diff --git a/commonui/config/lint.xml b/commonui/config/lint.xml new file mode 100644 index 000000000..3c83d4bb5 --- /dev/null +++ b/commonui/config/lint.xml @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/receipt/proguard-rules.pro b/commonui/proguard-rules.pro similarity index 100% rename from receipt/proguard-rules.pro rename to commonui/proguard-rules.pro diff --git a/common/src/main/AndroidManifest.xml b/commonui/src/main/AndroidManifest.xml similarity index 100% rename from common/src/main/AndroidManifest.xml rename to commonui/src/main/AndroidManifest.xml diff --git a/common/src/main/java/com/hyperwallet/android/ui/common/util/DateUtils.java b/commonui/src/main/java/com/hyperwallet/android/ui/common/util/DateUtils.java similarity index 100% rename from common/src/main/java/com/hyperwallet/android/ui/common/util/DateUtils.java rename to commonui/src/main/java/com/hyperwallet/android/ui/common/util/DateUtils.java diff --git a/common/src/main/java/com/hyperwallet/android/ui/common/view/HorizontalDividerItemDecorator.java b/commonui/src/main/java/com/hyperwallet/android/ui/common/view/HorizontalDividerItemDecorator.java similarity index 100% rename from common/src/main/java/com/hyperwallet/android/ui/common/view/HorizontalDividerItemDecorator.java rename to commonui/src/main/java/com/hyperwallet/android/ui/common/view/HorizontalDividerItemDecorator.java diff --git a/common/src/main/java/com/hyperwallet/android/ui/common/view/OneClickListener.java b/commonui/src/main/java/com/hyperwallet/android/ui/common/view/OneClickListener.java similarity index 100% rename from common/src/main/java/com/hyperwallet/android/ui/common/view/OneClickListener.java rename to commonui/src/main/java/com/hyperwallet/android/ui/common/view/OneClickListener.java diff --git a/common/src/main/java/com/hyperwallet/android/ui/common/view/error/DefaultErrorDialogFragment.java b/commonui/src/main/java/com/hyperwallet/android/ui/common/view/error/DefaultErrorDialogFragment.java similarity index 100% rename from common/src/main/java/com/hyperwallet/android/ui/common/view/error/DefaultErrorDialogFragment.java rename to commonui/src/main/java/com/hyperwallet/android/ui/common/view/error/DefaultErrorDialogFragment.java diff --git a/common/src/main/java/com/hyperwallet/android/ui/common/view/error/DefaultErrorDialogFragmentContract.java b/commonui/src/main/java/com/hyperwallet/android/ui/common/view/error/DefaultErrorDialogFragmentContract.java similarity index 100% rename from common/src/main/java/com/hyperwallet/android/ui/common/view/error/DefaultErrorDialogFragmentContract.java rename to commonui/src/main/java/com/hyperwallet/android/ui/common/view/error/DefaultErrorDialogFragmentContract.java diff --git a/common/src/main/java/com/hyperwallet/android/ui/common/view/error/DefaultErrorDialogFragmentPresenter.java b/commonui/src/main/java/com/hyperwallet/android/ui/common/view/error/DefaultErrorDialogFragmentPresenter.java similarity index 100% rename from common/src/main/java/com/hyperwallet/android/ui/common/view/error/DefaultErrorDialogFragmentPresenter.java rename to commonui/src/main/java/com/hyperwallet/android/ui/common/view/error/DefaultErrorDialogFragmentPresenter.java diff --git a/common/src/main/java/com/hyperwallet/android/ui/common/view/error/OnNetworkErrorCallback.java b/commonui/src/main/java/com/hyperwallet/android/ui/common/view/error/OnNetworkErrorCallback.java similarity index 100% rename from common/src/main/java/com/hyperwallet/android/ui/common/view/error/OnNetworkErrorCallback.java rename to commonui/src/main/java/com/hyperwallet/android/ui/common/view/error/OnNetworkErrorCallback.java diff --git a/common/src/main/java/com/hyperwallet/android/ui/common/viewmodel/ListDetailNavigator.java b/commonui/src/main/java/com/hyperwallet/android/ui/common/viewmodel/ListDetailNavigator.java similarity index 94% rename from common/src/main/java/com/hyperwallet/android/ui/common/viewmodel/ListDetailNavigator.java rename to commonui/src/main/java/com/hyperwallet/android/ui/common/viewmodel/ListDetailNavigator.java index b5916f1b2..1d868e791 100644 --- a/common/src/main/java/com/hyperwallet/android/ui/common/viewmodel/ListDetailNavigator.java +++ b/commonui/src/main/java/com/hyperwallet/android/ui/common/viewmodel/ListDetailNavigator.java @@ -19,12 +19,12 @@ /** * Detail interface for having a list UI with detail information through navigation */ -public interface ListDetailNavigator { +public interface ListDetailNavigator { /** * Navigate action * * @param e Navigation event */ - void navigate(Event e); + void navigate(T e); } diff --git a/common/src/main/res/drawable/circle.xml b/commonui/src/main/res/drawable/circle.xml similarity index 100% rename from common/src/main/res/drawable/circle.xml rename to commonui/src/main/res/drawable/circle.xml diff --git a/common/src/main/res/drawable/circle_white.xml b/commonui/src/main/res/drawable/circle_white.xml similarity index 100% rename from common/src/main/res/drawable/circle_white.xml rename to commonui/src/main/res/drawable/circle_white.xml diff --git a/common/src/main/res/drawable/content_border_bottom.xml b/commonui/src/main/res/drawable/content_border_bottom.xml similarity index 100% rename from common/src/main/res/drawable/content_border_bottom.xml rename to commonui/src/main/res/drawable/content_border_bottom.xml diff --git a/common/src/main/res/drawable/content_border_top_bottom.xml b/commonui/src/main/res/drawable/content_border_top_bottom.xml similarity index 100% rename from common/src/main/res/drawable/content_border_top_bottom.xml rename to commonui/src/main/res/drawable/content_border_top_bottom.xml diff --git a/common/src/main/res/drawable/horizontal_divider.xml b/commonui/src/main/res/drawable/horizontal_divider.xml similarity index 100% rename from common/src/main/res/drawable/horizontal_divider.xml rename to commonui/src/main/res/drawable/horizontal_divider.xml diff --git a/common/src/main/res/drawable/ic_baseline_bug_report_24px.xml b/commonui/src/main/res/drawable/ic_baseline_bug_report_24px.xml similarity index 100% rename from common/src/main/res/drawable/ic_baseline_bug_report_24px.xml rename to commonui/src/main/res/drawable/ic_baseline_bug_report_24px.xml diff --git a/common/src/main/res/drawable/ic_baseline_cloud_off_24px.xml b/commonui/src/main/res/drawable/ic_baseline_cloud_off_24px.xml similarity index 100% rename from common/src/main/res/drawable/ic_baseline_cloud_off_24px.xml rename to commonui/src/main/res/drawable/ic_baseline_cloud_off_24px.xml diff --git a/common/src/main/res/drawable/ic_baseline_warning_24px.xml b/commonui/src/main/res/drawable/ic_baseline_warning_24px.xml similarity index 100% rename from common/src/main/res/drawable/ic_baseline_warning_24px.xml rename to commonui/src/main/res/drawable/ic_baseline_warning_24px.xml diff --git a/common/src/main/res/drawable/ic_check_14dp.xml b/commonui/src/main/res/drawable/ic_check_14dp.xml similarity index 100% rename from common/src/main/res/drawable/ic_check_14dp.xml rename to commonui/src/main/res/drawable/ic_check_14dp.xml diff --git a/common/src/main/res/drawable/ic_close_14dp.xml b/commonui/src/main/res/drawable/ic_close_14dp.xml similarity index 100% rename from common/src/main/res/drawable/ic_close_14dp.xml rename to commonui/src/main/res/drawable/ic_close_14dp.xml diff --git a/common/src/main/res/drawable/ic_keyboard_arrow_down_12dp.xml b/commonui/src/main/res/drawable/ic_keyboard_arrow_down_12dp.xml similarity index 100% rename from common/src/main/res/drawable/ic_keyboard_arrow_down_12dp.xml rename to commonui/src/main/res/drawable/ic_keyboard_arrow_down_12dp.xml diff --git a/common/src/main/res/drawable/ic_keyboard_arrow_left_12dp.xml b/commonui/src/main/res/drawable/ic_keyboard_arrow_left_12dp.xml similarity index 100% rename from common/src/main/res/drawable/ic_keyboard_arrow_left_12dp.xml rename to commonui/src/main/res/drawable/ic_keyboard_arrow_left_12dp.xml diff --git a/common/src/main/res/drawable/ic_keyboard_arrow_right_12dp.xml b/commonui/src/main/res/drawable/ic_keyboard_arrow_right_12dp.xml similarity index 100% rename from common/src/main/res/drawable/ic_keyboard_arrow_right_12dp.xml rename to commonui/src/main/res/drawable/ic_keyboard_arrow_right_12dp.xml diff --git a/common/src/main/res/drawable/ic_launcher_background.xml b/commonui/src/main/res/drawable/ic_launcher_background.xml similarity index 100% rename from common/src/main/res/drawable/ic_launcher_background.xml rename to commonui/src/main/res/drawable/ic_launcher_background.xml diff --git a/common/src/main/res/drawable/ic_placeholder_24dp.xml b/commonui/src/main/res/drawable/ic_placeholder_24dp.xml similarity index 100% rename from common/src/main/res/drawable/ic_placeholder_24dp.xml rename to commonui/src/main/res/drawable/ic_placeholder_24dp.xml diff --git a/common/src/main/res/drawable/ic_search_24dp.xml b/commonui/src/main/res/drawable/ic_search_24dp.xml similarity index 100% rename from common/src/main/res/drawable/ic_search_24dp.xml rename to commonui/src/main/res/drawable/ic_search_24dp.xml diff --git a/common/src/main/res/drawable/ic_three_dots_16dp.xml b/commonui/src/main/res/drawable/ic_three_dots_16dp.xml similarity index 100% rename from common/src/main/res/drawable/ic_three_dots_16dp.xml rename to commonui/src/main/res/drawable/ic_three_dots_16dp.xml diff --git a/common/src/main/res/drawable/ic_trash.xml b/commonui/src/main/res/drawable/ic_trash.xml similarity index 100% rename from common/src/main/res/drawable/ic_trash.xml rename to commonui/src/main/res/drawable/ic_trash.xml diff --git a/common/src/main/res/drawable/oval.xml b/commonui/src/main/res/drawable/oval.xml similarity index 100% rename from common/src/main/res/drawable/oval.xml rename to commonui/src/main/res/drawable/oval.xml diff --git a/common/src/main/res/drawable/view_border_top_bottom.xml b/commonui/src/main/res/drawable/view_border_top_bottom.xml similarity index 100% rename from common/src/main/res/drawable/view_border_top_bottom.xml rename to commonui/src/main/res/drawable/view_border_top_bottom.xml diff --git a/common/src/main/res/drawable/view_item_ripple.xml b/commonui/src/main/res/drawable/view_item_ripple.xml similarity index 100% rename from common/src/main/res/drawable/view_item_ripple.xml rename to commonui/src/main/res/drawable/view_item_ripple.xml diff --git a/common/src/main/res/font/icomoon.ttf b/commonui/src/main/res/font/icomoon.ttf similarity index 100% rename from common/src/main/res/font/icomoon.ttf rename to commonui/src/main/res/font/icomoon.ttf diff --git a/common/src/main/res/values/colors.xml b/commonui/src/main/res/values/colors.xml similarity index 100% rename from common/src/main/res/values/colors.xml rename to commonui/src/main/res/values/colors.xml diff --git a/common/src/main/res/values/dimens.xml b/commonui/src/main/res/values/dimens.xml similarity index 100% rename from common/src/main/res/values/dimens.xml rename to commonui/src/main/res/values/dimens.xml diff --git a/common/src/main/res/values/strings.xml b/commonui/src/main/res/values/strings.xml similarity index 100% rename from common/src/main/res/values/strings.xml rename to commonui/src/main/res/values/strings.xml diff --git a/common/src/main/res/values/styles.xml b/commonui/src/main/res/values/styles.xml similarity index 100% rename from common/src/main/res/values/styles.xml rename to commonui/src/main/res/values/styles.xml diff --git a/common/src/test/java/com/hyperwallet/android/ui/common/util/DateUtilsTest.java b/commonui/src/test/java/com/hyperwallet/android/ui/common/util/DateUtilsTest.java similarity index 100% rename from common/src/test/java/com/hyperwallet/android/ui/common/util/DateUtilsTest.java rename to commonui/src/test/java/com/hyperwallet/android/ui/common/util/DateUtilsTest.java diff --git a/common/src/test/java/com/hyperwallet/android/ui/common/view/error/DefaultErrorDialogFragmentPresenterTest.java b/commonui/src/test/java/com/hyperwallet/android/ui/common/view/error/DefaultErrorDialogFragmentPresenterTest.java similarity index 100% rename from common/src/test/java/com/hyperwallet/android/ui/common/view/error/DefaultErrorDialogFragmentPresenterTest.java rename to commonui/src/test/java/com/hyperwallet/android/ui/common/view/error/DefaultErrorDialogFragmentPresenterTest.java diff --git a/common/build.gradle b/publish.gradle similarity index 79% rename from common/build.gradle rename to publish.gradle index cf60c3f49..8b2f85e97 100644 --- a/common/build.gradle +++ b/publish.gradle @@ -1,7 +1,4 @@ -apply from: "$rootProject.projectDir/android-library.gradle" - - -def aarFile = file("$buildDir/outputs/aar/common-$version" + ".aar") +def aarFile = file("$buildDir/outputs/aar/$project.name-$version" + ".aar") def aarArtifact = artifacts.add('archives', aarFile) { type 'aar' } @@ -23,9 +20,10 @@ publishing { } publications { - hyperwalletCommonUi(MavenPublication) { + hyperwalletUiPublish(MavenPublication) { groupId = hyperwalletGroupId - artifactId = 'common' + artifactId = project.name + version = version artifact(sourcesJar) @@ -33,14 +31,18 @@ publishing { artifact(aarArtifact) pom { - name = 'Hyperwallet Android Common UI SDK' - description = 'Hyperwallet Common UI SDK for Android to integrate with Hyperwallet Platform' + name = project.mavenName + description = project.description url = 'https://github.com/hyperwallet/hyperwallet-android-ui-sdk' pom.withXml { def dependenciesNode = asNode().appendNode('dependencies') configurations.implementation.allDependencies.each { def dependencyNode = dependenciesNode.appendNode('dependency') - dependencyNode.appendNode('groupId', it.group) + if (it.group == "hyperwallet-android-ui-sdk") { + dependencyNode.appendNode('groupId', "com.hyperwallet.android.ui") + } else { + dependencyNode.appendNode('groupId', it.group) + } dependencyNode.appendNode('artifactId', it.name) dependencyNode.appendNode('version', it.version) } @@ -74,7 +76,7 @@ tasks.withType(Sign) { } signing { - sign publishing.publications.hyperwalletCommonUi + sign publishing.publications.hyperwalletUiPublish } sonarqube { @@ -83,6 +85,6 @@ sonarqube { property "sonar.sources", "src/main/java" property "sonar.binaries", "build/intermediates/javac/release/compileReleaseJavaWithJavac/classes/com/hyperwallet/android/ui" property "sonar.libraries", libraries - property "sonar.projectName", "android-ui-sdk-common" + property "sonar.projectName", "android-ui-sdk-$project.name" } } \ No newline at end of file diff --git a/receipt/build.gradle b/receipt/build.gradle deleted file mode 100644 index cff209c86..000000000 --- a/receipt/build.gradle +++ /dev/null @@ -1,111 +0,0 @@ -apply from: "$rootProject.projectDir/android-library.gradle" - -dependencies { - api project(":common") - - implementation "com.google.android.material:material:$androidMaterialVersion" - implementation "androidx.constraintlayout:constraintlayout:$constraintlayoutVersion" - implementation "androidx.legacy:legacy-support-v4:$legacySupportV4Version" - implementation "androidx.recyclerview:recyclerview:$recycleViewVersion" - implementation "androidx.lifecycle:lifecycle-extensions:$lifecycleExtensionsVersion" - implementation "androidx.paging:paging-runtime:$pagingRuntimeVersion" - - testImplementation "org.robolectric:robolectric:$robolectricVersion" - - androidTestImplementation "androidx.test:rules:$testRulesVersion" - androidTestImplementation "androidx.test.espresso:espresso-contrib:$espressoVersion" - androidTestImplementation "androidx.test.espresso:espresso-intents:$espressoVersion" - androidTestImplementation "com.squareup.okhttp3:mockwebserver:$mockServerVersion" - androidTestImplementation "com.squareup.leakcanary:leakcanary-android-instrumentation:$leakcanaryVersion" - androidTestImplementation "com.squareup.leakcanary:leakcanary-support-fragment:$leakcanaryVersion" -} - -def aarFile = file("$buildDir/outputs/aar/receipt-$version" + ".aar") -def aarArtifact = artifacts.add('archives', aarFile) { - type 'aar' -} - -def isReleaseVersion = !version.endsWith('SNAPSHOT') - -publishing { - - repositories { - maven { - def releasesRepoUrl = "https://oss.sonatype.org/service/local/staging/deploy/maven2" - def snapshotsRepoUrl = "https://oss.sonatype.org/content/repositories/snapshots" - url = isReleaseVersion ? releasesRepoUrl : snapshotsRepoUrl - credentials { - username sonatypeUsername - password sonatypePassword - } - } - } - - publications { - hyperwalletReceiptUi(MavenPublication) { - groupId = hyperwalletGroupId - artifactId = 'receipt' - version = version - - artifact(sourcesJar) - artifact(javadocsJar) - artifact(aarArtifact) - - pom { - name = 'Hyperwallet Android Receipt UI SDK' - description = 'Hyperwallet Receipt UI SDK for Android to integrate with Hyperwallet Platform' - url = 'https://github.com/hyperwallet/hyperwallet-android-ui-sdk' - pom.withXml { - def dependenciesNode = asNode().appendNode('dependencies') - configurations.implementation.allDependencies.each { - def dependencyNode = dependenciesNode.appendNode('dependency') - if (it.group == "hyperwallet-android-ui-sdk") { - dependencyNode.appendNode('groupId', "com.hyperwallet.android.ui") - } else { - dependencyNode.appendNode('groupId', it.group) - } - dependencyNode.appendNode('artifactId', it.name) - dependencyNode.appendNode('version', it.version) - } - } - licenses { - license { - name = 'MIT License' - url = 'http://www.opensource.org/licenses/MIT' - } - } - developers { - developer { - id = 'devs' - name = 'Hyperwallet Developers' - } - } - scm { - connection = 'scm:git:git://github.com/hyperwallet/hyperwallet-android-ui-sdk.git' - developerConnection = 'scm:git:git://github.com/hyperwallet/hyperwallet-android-ui-sdk.git' - url = 'https://github.com/hyperwallet/hyperwallet-android-ui-sdk' - } - } - } - } -} - -tasks.withType(Sign) { - onlyIf { - isReleaseVersion && sonatypeUsername?.trim() && sonatypePassword?.trim() - } -} - -signing { - sign publishing.publications.hyperwalletReceiptUi -} - -sonarqube { - properties { - def libraries = project.android.sdkDirectory.getPath() + "/platforms/android-28/android.jar" - property "sonar.sources", "src/main/java" - property "sonar.binaries", "build/intermediates/javac/release/compileReleaseJavaWithJavac/classes/com/hyperwallet/android/ui" - property "sonar.libraries", libraries - property "sonar.projectName", "android-ui-sdk-receipt" - } -} diff --git a/receiptrepository/.gitignore b/receiptrepository/.gitignore new file mode 100644 index 000000000..796b96d1c --- /dev/null +++ b/receiptrepository/.gitignore @@ -0,0 +1 @@ +/build diff --git a/receiptrepository/build.gradle b/receiptrepository/build.gradle new file mode 100644 index 000000000..f5390c2fe --- /dev/null +++ b/receiptrepository/build.gradle @@ -0,0 +1,16 @@ +apply from: "$rootProject.projectDir/android-library.gradle" +description = 'Hyperwallet Receipt Repository SDK for Android to integrate with the Hyperwallet Platform' +project.ext { + mavenName = 'Hyperwallet Android Receipt Repository SDK' +} +apply from: "$rootProject.projectDir/publish.gradle" + + +dependencies { + + implementation "androidx.legacy:legacy-support-v4:$legacySupportV4Version" + implementation "androidx.paging:paging-runtime:$pagingRuntimeVersion" + api project(':commonrepository') + + testImplementation "org.robolectric:robolectric:$robolectricVersion" +} \ No newline at end of file diff --git a/receiptrepository/config/jacoco-settings.gradle b/receiptrepository/config/jacoco-settings.gradle new file mode 100644 index 000000000..bb4ffa228 --- /dev/null +++ b/receiptrepository/config/jacoco-settings.gradle @@ -0,0 +1,79 @@ +apply plugin: 'jacoco' + +final def jacocoVersion = "0.8.2" + +jacoco { + toolVersion = jacocoVersion +} + +android { + testOptions { + unitTests { + includeAndroidResources = true + returnDefaultValues = true + } + unitTests.all { + jacoco { + includeNoLocationClasses = true + } + } + } +} + +def fileFilter = ['**/BuildConfig.*' +] + +def debugClassPaths = [ + '**/intermediates/javac/debug/*/classes/**' +] + +final def coverageSourceDirs = ["$project.projectDir/src/main/java/*"] + +task jacocoTestReport(type: JacocoReport, dependsOn: 'testDebugUnitTest') { + + group = 'Reporting' + description = 'Generate Jacoco coverage reports.' + reports { + html { + enabled = true + destination file("$project.buildDir/reports/jacoco") + } + } + + classDirectories = fileTree( + dir: "${buildDir}", + includes: debugClassPaths, + excludes: fileFilter + ) + + additionalSourceDirs = files(coverageSourceDirs) + sourceDirectories = files(coverageSourceDirs) + executionData = files("${project.buildDir}/jacoco/testDebugUnitTest.exec") +} + +task jacocoTestCoverageVerification(type: JacocoCoverageVerification, dependsOn: 'jacocoTestReport') { + + group = 'Verification' + classDirectories = fileTree( + dir: "${buildDir}", + includes: debugClassPaths, + excludes: fileFilter + ) + additionalSourceDirs = files(coverageSourceDirs) + sourceDirectories = files(coverageSourceDirs) + executionData = files("${project.buildDir}/jacoco/testDebugUnitTest.exec") + + violationRules { + setFailOnViolation(true) + + rule { + element = 'CLASS' + limit { + value = 'COVEREDRATIO' + counter = 'BRANCH' + minimum = 0.65 + } + } + } +} + diff --git a/receipt/config/lint.xml b/receiptrepository/config/lint.xml similarity index 100% rename from receipt/config/lint.xml rename to receiptrepository/config/lint.xml diff --git a/receiptrepository/src/main/AndroidManifest.xml b/receiptrepository/src/main/AndroidManifest.xml new file mode 100644 index 000000000..25d33e545 --- /dev/null +++ b/receiptrepository/src/main/AndroidManifest.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/receipt/src/main/java/com/hyperwallet/android/ui/receipt/repository/PrepaidCardReceiptDataSource.java b/receiptrepository/src/main/java/com/hyperwallet/android/ui/receipt/repository/PrepaidCardReceiptDataSource.java similarity index 98% rename from receipt/src/main/java/com/hyperwallet/android/ui/receipt/repository/PrepaidCardReceiptDataSource.java rename to receiptrepository/src/main/java/com/hyperwallet/android/ui/receipt/repository/PrepaidCardReceiptDataSource.java index 39135cf44..21cd26073 100644 --- a/receipt/src/main/java/com/hyperwallet/android/ui/receipt/repository/PrepaidCardReceiptDataSource.java +++ b/receiptrepository/src/main/java/com/hyperwallet/android/ui/receipt/repository/PrepaidCardReceiptDataSource.java @@ -32,8 +32,8 @@ import com.hyperwallet.android.model.paging.HyperwalletPageList; import com.hyperwallet.android.model.receipt.Receipt; import com.hyperwallet.android.model.receipt.ReceiptQueryParam; -import com.hyperwallet.android.ui.common.util.EspressoIdlingResource; -import com.hyperwallet.android.ui.common.viewmodel.Event; +import com.hyperwallet.android.ui.common.repository.EspressoIdlingResource; +import com.hyperwallet.android.ui.common.repository.Event; import com.hyperwallet.android.util.DateUtil; import java.util.Calendar; diff --git a/receipt/src/main/java/com/hyperwallet/android/ui/receipt/repository/PrepaidCardReceiptDataSourceFactory.java b/receiptrepository/src/main/java/com/hyperwallet/android/ui/receipt/repository/PrepaidCardReceiptDataSourceFactory.java similarity index 100% rename from receipt/src/main/java/com/hyperwallet/android/ui/receipt/repository/PrepaidCardReceiptDataSourceFactory.java rename to receiptrepository/src/main/java/com/hyperwallet/android/ui/receipt/repository/PrepaidCardReceiptDataSourceFactory.java diff --git a/receipt/src/main/java/com/hyperwallet/android/ui/receipt/repository/PrepaidCardReceiptRepository.java b/receiptrepository/src/main/java/com/hyperwallet/android/ui/receipt/repository/PrepaidCardReceiptRepository.java similarity index 97% rename from receipt/src/main/java/com/hyperwallet/android/ui/receipt/repository/PrepaidCardReceiptRepository.java rename to receiptrepository/src/main/java/com/hyperwallet/android/ui/receipt/repository/PrepaidCardReceiptRepository.java index 021cadcc7..273368fd5 100644 --- a/receipt/src/main/java/com/hyperwallet/android/ui/receipt/repository/PrepaidCardReceiptRepository.java +++ b/receiptrepository/src/main/java/com/hyperwallet/android/ui/receipt/repository/PrepaidCardReceiptRepository.java @@ -21,7 +21,8 @@ import com.hyperwallet.android.model.HyperwalletErrors; import com.hyperwallet.android.model.receipt.Receipt; -import com.hyperwallet.android.ui.common.viewmodel.Event; +import com.hyperwallet.android.ui.common.repository.Event; + public interface PrepaidCardReceiptRepository { diff --git a/receipt/src/main/java/com/hyperwallet/android/ui/receipt/repository/PrepaidCardReceiptRepositoryImpl.java b/receiptrepository/src/main/java/com/hyperwallet/android/ui/receipt/repository/PrepaidCardReceiptRepositoryImpl.java similarity index 97% rename from receipt/src/main/java/com/hyperwallet/android/ui/receipt/repository/PrepaidCardReceiptRepositoryImpl.java rename to receiptrepository/src/main/java/com/hyperwallet/android/ui/receipt/repository/PrepaidCardReceiptRepositoryImpl.java index 4b5fed137..ae7372e1b 100644 --- a/receipt/src/main/java/com/hyperwallet/android/ui/receipt/repository/PrepaidCardReceiptRepositoryImpl.java +++ b/receiptrepository/src/main/java/com/hyperwallet/android/ui/receipt/repository/PrepaidCardReceiptRepositoryImpl.java @@ -7,7 +7,7 @@ import com.hyperwallet.android.model.HyperwalletErrors; import com.hyperwallet.android.model.receipt.Receipt; -import com.hyperwallet.android.ui.common.viewmodel.Event; +import com.hyperwallet.android.ui.common.repository.Event; public class PrepaidCardReceiptRepositoryImpl implements PrepaidCardReceiptRepository { diff --git a/receipt/src/main/java/com/hyperwallet/android/ui/receipt/repository/UserReceiptDataSource.java b/receiptrepository/src/main/java/com/hyperwallet/android/ui/receipt/repository/UserReceiptDataSource.java similarity index 98% rename from receipt/src/main/java/com/hyperwallet/android/ui/receipt/repository/UserReceiptDataSource.java rename to receiptrepository/src/main/java/com/hyperwallet/android/ui/receipt/repository/UserReceiptDataSource.java index 28e8ef727..e75769bfa 100644 --- a/receipt/src/main/java/com/hyperwallet/android/ui/receipt/repository/UserReceiptDataSource.java +++ b/receiptrepository/src/main/java/com/hyperwallet/android/ui/receipt/repository/UserReceiptDataSource.java @@ -31,8 +31,8 @@ import com.hyperwallet.android.model.paging.HyperwalletPageList; import com.hyperwallet.android.model.receipt.Receipt; import com.hyperwallet.android.model.receipt.ReceiptQueryParam; -import com.hyperwallet.android.ui.common.util.EspressoIdlingResource; -import com.hyperwallet.android.ui.common.viewmodel.Event; +import com.hyperwallet.android.ui.common.repository.EspressoIdlingResource; +import com.hyperwallet.android.ui.common.repository.Event; import java.util.Calendar; @@ -117,7 +117,7 @@ public void loadBefore(@NonNull final LoadParams params, /** * @see PageKeyedDataSource#loadAfter(LoadParams, LoadCallback) - * */ + */ @Override public void loadAfter(@NonNull final LoadParams params, final @NonNull LoadCallback callback) { @@ -168,7 +168,7 @@ public Handler getHandler() { /** * Facilitates retry when network is down; any error that we can have a retry operation - * */ + */ void retry() { if (mLoadInitialCallback != null) { loadInitial(mLoadInitialParams, mLoadInitialCallback); @@ -181,7 +181,7 @@ void retry() { * Retrieve reference of Hyperwallet errors inorder for consumers to observe on data changes * * @return Live event data of {@link HyperwalletErrors} - * */ + */ public LiveData> getErrors() { return mErrors; } diff --git a/receipt/src/main/java/com/hyperwallet/android/ui/receipt/repository/UserReceiptDataSourceFactory.java b/receiptrepository/src/main/java/com/hyperwallet/android/ui/receipt/repository/UserReceiptDataSourceFactory.java similarity index 100% rename from receipt/src/main/java/com/hyperwallet/android/ui/receipt/repository/UserReceiptDataSourceFactory.java rename to receiptrepository/src/main/java/com/hyperwallet/android/ui/receipt/repository/UserReceiptDataSourceFactory.java diff --git a/receipt/src/main/java/com/hyperwallet/android/ui/receipt/repository/UserReceiptRepository.java b/receiptrepository/src/main/java/com/hyperwallet/android/ui/receipt/repository/UserReceiptRepository.java similarity index 97% rename from receipt/src/main/java/com/hyperwallet/android/ui/receipt/repository/UserReceiptRepository.java rename to receiptrepository/src/main/java/com/hyperwallet/android/ui/receipt/repository/UserReceiptRepository.java index 7c72ab664..14a685c39 100644 --- a/receipt/src/main/java/com/hyperwallet/android/ui/receipt/repository/UserReceiptRepository.java +++ b/receiptrepository/src/main/java/com/hyperwallet/android/ui/receipt/repository/UserReceiptRepository.java @@ -21,7 +21,7 @@ import com.hyperwallet.android.model.HyperwalletErrors; import com.hyperwallet.android.model.receipt.Receipt; -import com.hyperwallet.android.ui.common.viewmodel.Event; +import com.hyperwallet.android.ui.common.repository.Event; /** * Receipt Repository Contract diff --git a/receipt/src/main/java/com/hyperwallet/android/ui/receipt/repository/UserReceiptRepositoryImpl.java b/receiptrepository/src/main/java/com/hyperwallet/android/ui/receipt/repository/UserReceiptRepositoryImpl.java similarity index 97% rename from receipt/src/main/java/com/hyperwallet/android/ui/receipt/repository/UserReceiptRepositoryImpl.java rename to receiptrepository/src/main/java/com/hyperwallet/android/ui/receipt/repository/UserReceiptRepositoryImpl.java index 07a8fbdb9..74a28295b 100644 --- a/receipt/src/main/java/com/hyperwallet/android/ui/receipt/repository/UserReceiptRepositoryImpl.java +++ b/receiptrepository/src/main/java/com/hyperwallet/android/ui/receipt/repository/UserReceiptRepositoryImpl.java @@ -22,7 +22,7 @@ import com.hyperwallet.android.model.HyperwalletErrors; import com.hyperwallet.android.model.receipt.Receipt; -import com.hyperwallet.android.ui.common.viewmodel.Event; +import com.hyperwallet.android.ui.common.repository.Event; /** * {@link UserReceiptRepository} implementation @@ -72,7 +72,7 @@ public LiveData isLoading() { /** * @see UserReceiptRepository#getErrors() - * */ + */ @Override public LiveData> getErrors() { if (mErrorsLiveData == null) { @@ -83,7 +83,7 @@ public LiveData> getErrors() { /** * @see UserReceiptRepository#retryLoadReceipt() - * */ + */ @Override public void retryLoadReceipt() { if (mReceiptDataSourceLiveData.getValue() != null) { diff --git a/receipt/src/test/java/com/hyperwallet/android/ui/receipt/repository/PrepaidCardReceiptDataSourceFactoryTest.java b/receiptrepository/src/test/java/com/hyperwallet/android/ui/receipt/repository/PrepaidCardReceiptDataSourceFactoryTest.java similarity index 100% rename from receipt/src/test/java/com/hyperwallet/android/ui/receipt/repository/PrepaidCardReceiptDataSourceFactoryTest.java rename to receiptrepository/src/test/java/com/hyperwallet/android/ui/receipt/repository/PrepaidCardReceiptDataSourceFactoryTest.java diff --git a/receipt/src/test/java/com/hyperwallet/android/ui/receipt/repository/PrepaidCardReceiptDataSourceTest.java b/receiptrepository/src/test/java/com/hyperwallet/android/ui/receipt/repository/PrepaidCardReceiptDataSourceTest.java similarity index 99% rename from receipt/src/test/java/com/hyperwallet/android/ui/receipt/repository/PrepaidCardReceiptDataSourceTest.java rename to receiptrepository/src/test/java/com/hyperwallet/android/ui/receipt/repository/PrepaidCardReceiptDataSourceTest.java index e9cf99b89..fd468bfab 100644 --- a/receipt/src/test/java/com/hyperwallet/android/ui/receipt/repository/PrepaidCardReceiptDataSourceTest.java +++ b/receiptrepository/src/test/java/com/hyperwallet/android/ui/receipt/repository/PrepaidCardReceiptDataSourceTest.java @@ -29,11 +29,10 @@ import com.hyperwallet.android.model.paging.HyperwalletPageList; import com.hyperwallet.android.model.receipt.Receipt; import com.hyperwallet.android.model.receipt.ReceiptQueryParam; -import com.hyperwallet.android.rule.HyperwalletExternalResourceManager; +import com.hyperwallet.android.ui.receipt.rule.HyperwalletExternalResourceManager; import com.hyperwallet.android.util.DateUtil; import org.hamcrest.Matchers; -import org.json.JSONException; import org.json.JSONObject; import org.junit.Before; import org.junit.Rule; @@ -56,20 +55,19 @@ @RunWith(RobolectricTestRunner.class) public class PrepaidCardReceiptDataSourceTest { + // can't be mocked due to params.key is of type Integer and autoboxing will not work with null to 0 + private final PageKeyedDataSource.LoadParams mLoadAfterParams = new PageKeyedDataSource.LoadParams<>( + new Date(), 10); @Rule public MockitoRule mMockito = MockitoJUnit.rule(); @Rule public HyperwalletExternalResourceManager mExternalResourceManager = new HyperwalletExternalResourceManager(); - @Mock private Hyperwallet mHyperwallet; @Mock private PageKeyedDataSource.LoadInitialParams mInitialParams; @Mock private PageKeyedDataSource.LoadInitialCallback mInitialCallback; - // can't be mocked due to params.key is of type Integer and autoboxing will not work with null to 0 - private final PageKeyedDataSource.LoadParams mLoadAfterParams = new PageKeyedDataSource.LoadParams<>( - new Date(), 10); @Mock private PageKeyedDataSource.LoadCallback mLoadAfterCallback; diff --git a/receipt/src/test/java/com/hyperwallet/android/ui/receipt/repository/PrepaidCardReceiptRepositoryImplTest.java b/receiptrepository/src/test/java/com/hyperwallet/android/ui/receipt/repository/PrepaidCardReceiptRepositoryImplTest.java similarity index 97% rename from receipt/src/test/java/com/hyperwallet/android/ui/receipt/repository/PrepaidCardReceiptRepositoryImplTest.java rename to receiptrepository/src/test/java/com/hyperwallet/android/ui/receipt/repository/PrepaidCardReceiptRepositoryImplTest.java index 247031513..912741fc0 100644 --- a/receipt/src/test/java/com/hyperwallet/android/ui/receipt/repository/PrepaidCardReceiptRepositoryImplTest.java +++ b/receiptrepository/src/test/java/com/hyperwallet/android/ui/receipt/repository/PrepaidCardReceiptRepositoryImplTest.java @@ -11,7 +11,7 @@ import com.hyperwallet.android.model.HyperwalletErrors; import com.hyperwallet.android.model.receipt.Receipt; -import com.hyperwallet.android.ui.common.viewmodel.Event; +import com.hyperwallet.android.ui.common.repository.Event; import org.junit.Test; import org.junit.runner.RunWith; diff --git a/receipt/src/test/java/com/hyperwallet/android/ui/receipt/repository/UserReceiptDataSourceFactoryTest.java b/receiptrepository/src/test/java/com/hyperwallet/android/ui/receipt/repository/UserReceiptDataSourceFactoryTest.java similarity index 100% rename from receipt/src/test/java/com/hyperwallet/android/ui/receipt/repository/UserReceiptDataSourceFactoryTest.java rename to receiptrepository/src/test/java/com/hyperwallet/android/ui/receipt/repository/UserReceiptDataSourceFactoryTest.java diff --git a/receipt/src/test/java/com/hyperwallet/android/ui/receipt/repository/UserReceiptDataSourceTest.java b/receiptrepository/src/test/java/com/hyperwallet/android/ui/receipt/repository/UserReceiptDataSourceTest.java similarity index 99% rename from receipt/src/test/java/com/hyperwallet/android/ui/receipt/repository/UserReceiptDataSourceTest.java rename to receiptrepository/src/test/java/com/hyperwallet/android/ui/receipt/repository/UserReceiptDataSourceTest.java index e61646e32..a26ed1b15 100644 --- a/receipt/src/test/java/com/hyperwallet/android/ui/receipt/repository/UserReceiptDataSourceTest.java +++ b/receiptrepository/src/test/java/com/hyperwallet/android/ui/receipt/repository/UserReceiptDataSourceTest.java @@ -27,7 +27,7 @@ import com.hyperwallet.android.model.paging.HyperwalletPageList; import com.hyperwallet.android.model.receipt.Receipt; import com.hyperwallet.android.model.receipt.ReceiptQueryParam; -import com.hyperwallet.android.rule.HyperwalletExternalResourceManager; +import com.hyperwallet.android.ui.receipt.rule.HyperwalletExternalResourceManager; import org.hamcrest.Matchers; import org.json.JSONObject; @@ -52,20 +52,19 @@ @RunWith(RobolectricTestRunner.class) public class UserReceiptDataSourceTest { + // can't be mocked due to params.key is of type Integer and autoboxing will not work with null to 0 + private final PageKeyedDataSource.LoadParams mLoadAfterParams = + new PageKeyedDataSource.LoadParams<>(10, 10); @Rule public MockitoRule mMockito = MockitoJUnit.rule(); @Rule public HyperwalletExternalResourceManager mExternalResourceManager = new HyperwalletExternalResourceManager(); - @Mock private Hyperwallet mHyperwallet; @Mock private PageKeyedDataSource.LoadInitialParams mInitialParams; @Mock private PageKeyedDataSource.LoadInitialCallback mInitialCallback; - // can't be mocked due to params.key is of type Integer and autoboxing will not work with null to 0 - private final PageKeyedDataSource.LoadParams mLoadAfterParams = - new PageKeyedDataSource.LoadParams<>(10, 10); @Mock private PageKeyedDataSource.LoadCallback mLoadAfterCallback; diff --git a/receipt/src/test/java/com/hyperwallet/android/ui/receipt/repository/UserReceiptRepositoryImplTest.java b/receiptrepository/src/test/java/com/hyperwallet/android/ui/receipt/repository/UserReceiptRepositoryImplTest.java similarity index 97% rename from receipt/src/test/java/com/hyperwallet/android/ui/receipt/repository/UserReceiptRepositoryImplTest.java rename to receiptrepository/src/test/java/com/hyperwallet/android/ui/receipt/repository/UserReceiptRepositoryImplTest.java index 5b3005bda..74be4edac 100644 --- a/receipt/src/test/java/com/hyperwallet/android/ui/receipt/repository/UserReceiptRepositoryImplTest.java +++ b/receiptrepository/src/test/java/com/hyperwallet/android/ui/receipt/repository/UserReceiptRepositoryImplTest.java @@ -11,7 +11,7 @@ import com.hyperwallet.android.model.HyperwalletErrors; import com.hyperwallet.android.model.receipt.Receipt; -import com.hyperwallet.android.ui.common.viewmodel.Event; +import com.hyperwallet.android.ui.common.repository.Event; import org.junit.Test; import org.junit.runner.RunWith; diff --git a/receipt/src/test/java/com/hyperwallet/android/ui/rule/HyperwalletExternalResourceManager.java b/receiptrepository/src/test/java/com/hyperwallet/android/ui/receipt/rule/HyperwalletExternalResourceManager.java similarity index 98% rename from receipt/src/test/java/com/hyperwallet/android/ui/rule/HyperwalletExternalResourceManager.java rename to receiptrepository/src/test/java/com/hyperwallet/android/ui/receipt/rule/HyperwalletExternalResourceManager.java index 9061af9b8..abc9bf5da 100644 --- a/receipt/src/test/java/com/hyperwallet/android/ui/rule/HyperwalletExternalResourceManager.java +++ b/receiptrepository/src/test/java/com/hyperwallet/android/ui/receipt/rule/HyperwalletExternalResourceManager.java @@ -1,4 +1,4 @@ -package com.hyperwallet.android.rule; +package com.hyperwallet.android.ui.receipt.rule; import org.junit.rules.TestWatcher; import org.junit.runner.Description; diff --git a/receipt/src/test/resources/prepaid_card_receipt_list_response.json b/receiptrepository/src/test/resources/prepaid_card_receipt_list_response.json similarity index 100% rename from receipt/src/test/resources/prepaid_card_receipt_list_response.json rename to receiptrepository/src/test/resources/prepaid_card_receipt_list_response.json diff --git a/receipt/src/test/resources/receipt_list_date_grouping_response.json b/receiptrepository/src/test/resources/receipt_list_date_grouping_response.json similarity index 100% rename from receipt/src/test/resources/receipt_list_date_grouping_response.json rename to receiptrepository/src/test/resources/receipt_list_date_grouping_response.json diff --git a/receiptui/.gitignore b/receiptui/.gitignore new file mode 100644 index 000000000..796b96d1c --- /dev/null +++ b/receiptui/.gitignore @@ -0,0 +1 @@ +/build diff --git a/receiptui/build.gradle b/receiptui/build.gradle new file mode 100644 index 000000000..081d29e7f --- /dev/null +++ b/receiptui/build.gradle @@ -0,0 +1,25 @@ +apply from: "$rootProject.projectDir/android-library.gradle" +description = 'Hyperwallet Receipt UI SDK for Android to integrate with the Hyperwallet Platform' +project.ext { + mavenName = 'Hyperwallet Android Receipt UI SDK' +} +apply from: "$rootProject.projectDir/publish.gradle" + +dependencies { + implementation project(':commonui') + implementation project(":receiptrepository") + + implementation "com.google.android.material:material:$androidMaterialVersion" + implementation "androidx.constraintlayout:constraintlayout:$constraintlayoutVersion" + implementation "androidx.legacy:legacy-support-v4:$legacySupportV4Version" + implementation "androidx.recyclerview:recyclerview:$recycleViewVersion" + implementation "androidx.lifecycle:lifecycle-extensions:$lifecycleExtensionsVersion" + implementation "androidx.paging:paging-runtime:$pagingRuntimeVersion" + + androidTestImplementation "androidx.test:rules:$testRulesVersion" + androidTestImplementation "androidx.test.espresso:espresso-contrib:$espressoVersion" + androidTestImplementation "androidx.test.espresso:espresso-intents:$espressoVersion" + androidTestImplementation "com.squareup.okhttp3:mockwebserver:$mockServerVersion" + androidTestImplementation "com.squareup.leakcanary:leakcanary-android-instrumentation:$leakcanaryVersion" + androidTestImplementation "com.squareup.leakcanary:leakcanary-support-fragment:$leakcanaryVersion" +} diff --git a/receipt/config/jacoco-settings.gradle b/receiptui/config/jacoco-settings.gradle similarity index 95% rename from receipt/config/jacoco-settings.gradle rename to receiptui/config/jacoco-settings.gradle index e0bb22486..7dbc462e6 100644 --- a/receipt/config/jacoco-settings.gradle +++ b/receiptui/config/jacoco-settings.gradle @@ -22,8 +22,7 @@ android { def fileFilter = ['**/BuildConfig.*', '**/com/hyperwallet/android/ui/receipt/view/*.*', - '**/com/hyperwallet/android/ui/receipt/viewmodel/*.*', - '**/com/hyperwallet/android/ui/receipt/repository/ReceiptRepositoryImpl.*' + '**/com/hyperwallet/android/ui/receipt/viewmodel/*.*' ] def debugClassPaths = [ diff --git a/receiptui/config/lint.xml b/receiptui/config/lint.xml new file mode 100644 index 000000000..ff446fa9e --- /dev/null +++ b/receiptui/config/lint.xml @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/ui/proguard-rules.pro b/receiptui/proguard-rules.pro similarity index 100% rename from ui/proguard-rules.pro rename to receiptui/proguard-rules.pro diff --git a/receipt/src/androidTest/AndroidManifest.xml b/receiptui/src/androidTest/AndroidManifest.xml similarity index 100% rename from receipt/src/androidTest/AndroidManifest.xml rename to receiptui/src/androidTest/AndroidManifest.xml diff --git a/receipt/src/androidTest/java/com/hyperwallet/android/ui/receipt/HyperwalletInstrumentedTestApplication.java b/receiptui/src/androidTest/java/com/hyperwallet/android/ui/receipt/HyperwalletInstrumentedTestApplication.java similarity index 100% rename from receipt/src/androidTest/java/com/hyperwallet/android/ui/receipt/HyperwalletInstrumentedTestApplication.java rename to receiptui/src/androidTest/java/com/hyperwallet/android/ui/receipt/HyperwalletInstrumentedTestApplication.java diff --git a/receipt/src/androidTest/java/com/hyperwallet/android/ui/receipt/ListPrepaidCardReceiptsTest.java b/receiptui/src/androidTest/java/com/hyperwallet/android/ui/receipt/ListPrepaidCardReceiptsTest.java similarity index 99% rename from receipt/src/androidTest/java/com/hyperwallet/android/ui/receipt/ListPrepaidCardReceiptsTest.java rename to receiptui/src/androidTest/java/com/hyperwallet/android/ui/receipt/ListPrepaidCardReceiptsTest.java index 2e9c9ff14..910d69628 100644 --- a/receipt/src/androidTest/java/com/hyperwallet/android/ui/receipt/ListPrepaidCardReceiptsTest.java +++ b/receiptui/src/androidTest/java/com/hyperwallet/android/ui/receipt/ListPrepaidCardReceiptsTest.java @@ -41,8 +41,8 @@ import androidx.test.rule.ActivityTestRule; import com.hyperwallet.android.Hyperwallet; +import com.hyperwallet.android.ui.common.repository.EspressoIdlingResource; import com.hyperwallet.android.ui.common.util.DateUtils; -import com.hyperwallet.android.ui.common.util.EspressoIdlingResource; import com.hyperwallet.android.ui.receipt.rule.HyperwalletExternalResourceManager; import com.hyperwallet.android.ui.receipt.rule.HyperwalletMockWebServer; import com.hyperwallet.android.ui.receipt.util.RecyclerViewCountAssertion; @@ -319,8 +319,8 @@ public void testListPrepaidCardReceipt_checkDateTextOnLocaleChange() { @Test public void testListPrepaidCardReceipt_displaysNetworkErrorDialogOnConnectionTimeout() { mMockWebServer.getServer().enqueue(new MockResponse().setResponseCode(HTTP_OK).setBody(sResourceManager - .getResourceContent("prepaid_card_receipt_debit_response.json")).throttleBody(512, 10, - TimeUnit.SECONDS)); + .getResourceContent("prepaid_card_receipt_debit_response.json")).setBodyDelay(10500, + TimeUnit.MILLISECONDS)); mMockWebServer.mockResponse().withHttpResponseCode(HTTP_OK).withBody(sResourceManager .getResourceContent("prepaid_card_receipt_debit_response.json")).mock(); mMockWebServer.mockResponse().withHttpResponseCode(HTTP_NO_CONTENT).withBody("").mock(); diff --git a/receipt/src/androidTest/java/com/hyperwallet/android/ui/receipt/ListUserReceiptsTest.java b/receiptui/src/androidTest/java/com/hyperwallet/android/ui/receipt/ListUserReceiptsTest.java similarity index 99% rename from receipt/src/androidTest/java/com/hyperwallet/android/ui/receipt/ListUserReceiptsTest.java rename to receiptui/src/androidTest/java/com/hyperwallet/android/ui/receipt/ListUserReceiptsTest.java index 0bb97d2ff..37809b494 100644 --- a/receipt/src/androidTest/java/com/hyperwallet/android/ui/receipt/ListUserReceiptsTest.java +++ b/receiptui/src/androidTest/java/com/hyperwallet/android/ui/receipt/ListUserReceiptsTest.java @@ -39,8 +39,8 @@ import androidx.test.rule.ActivityTestRule; import com.hyperwallet.android.Hyperwallet; +import com.hyperwallet.android.ui.common.repository.EspressoIdlingResource; import com.hyperwallet.android.ui.common.util.DateUtils; -import com.hyperwallet.android.ui.common.util.EspressoIdlingResource; import com.hyperwallet.android.ui.receipt.rule.HyperwalletExternalResourceManager; import com.hyperwallet.android.ui.receipt.rule.HyperwalletMockWebServer; import com.hyperwallet.android.ui.receipt.util.RecyclerViewCountAssertion; @@ -417,7 +417,7 @@ public void testListReceipt_checkDateTextOnLocaleChange() { @Test public void testListReceipt_displaysNetworkErrorDialogOnConnectionTimeout() { mMockWebServer.getServer().enqueue(new MockResponse().setResponseCode(HTTP_OK).setBody(sResourceManager - .getResourceContent("receipt_debit_response.json")).throttleBody(512, 10, TimeUnit.SECONDS)); + .getResourceContent("receipt_debit_response.json")).setBodyDelay(10500, TimeUnit.MILLISECONDS)); mMockWebServer.mockResponse().withHttpResponseCode(HTTP_OK).withBody(sResourceManager .getResourceContent("receipt_debit_response.json")).mock(); mMockWebServer.mockResponse().withHttpResponseCode(HTTP_NO_CONTENT).withBody("").mock(); diff --git a/receipt/src/androidTest/java/com/hyperwallet/android/ui/receipt/rule/HyperwalletExternalResourceManager.java b/receiptui/src/androidTest/java/com/hyperwallet/android/ui/receipt/rule/HyperwalletExternalResourceManager.java similarity index 100% rename from receipt/src/androidTest/java/com/hyperwallet/android/ui/receipt/rule/HyperwalletExternalResourceManager.java rename to receiptui/src/androidTest/java/com/hyperwallet/android/ui/receipt/rule/HyperwalletExternalResourceManager.java diff --git a/receipt/src/androidTest/java/com/hyperwallet/android/ui/receipt/rule/HyperwalletMockWebServer.java b/receiptui/src/androidTest/java/com/hyperwallet/android/ui/receipt/rule/HyperwalletMockWebServer.java similarity index 100% rename from receipt/src/androidTest/java/com/hyperwallet/android/ui/receipt/rule/HyperwalletMockWebServer.java rename to receiptui/src/androidTest/java/com/hyperwallet/android/ui/receipt/rule/HyperwalletMockWebServer.java diff --git a/receipt/src/androidTest/java/com/hyperwallet/android/ui/receipt/util/EspressoUtils.java b/receiptui/src/androidTest/java/com/hyperwallet/android/ui/receipt/util/EspressoUtils.java similarity index 100% rename from receipt/src/androidTest/java/com/hyperwallet/android/ui/receipt/util/EspressoUtils.java rename to receiptui/src/androidTest/java/com/hyperwallet/android/ui/receipt/util/EspressoUtils.java diff --git a/receipt/src/androidTest/java/com/hyperwallet/android/ui/receipt/util/NestedScrollToAction.java b/receiptui/src/androidTest/java/com/hyperwallet/android/ui/receipt/util/NestedScrollToAction.java similarity index 100% rename from receipt/src/androidTest/java/com/hyperwallet/android/ui/receipt/util/NestedScrollToAction.java rename to receiptui/src/androidTest/java/com/hyperwallet/android/ui/receipt/util/NestedScrollToAction.java diff --git a/receipt/src/androidTest/java/com/hyperwallet/android/ui/receipt/util/RecyclerViewCountAssertion.java b/receiptui/src/androidTest/java/com/hyperwallet/android/ui/receipt/util/RecyclerViewCountAssertion.java similarity index 100% rename from receipt/src/androidTest/java/com/hyperwallet/android/ui/receipt/util/RecyclerViewCountAssertion.java rename to receiptui/src/androidTest/java/com/hyperwallet/android/ui/receipt/util/RecyclerViewCountAssertion.java diff --git a/receipt/src/androidTest/java/com/hyperwallet/android/ui/receipt/util/TestAuthenticationProvider.java b/receiptui/src/androidTest/java/com/hyperwallet/android/ui/receipt/util/TestAuthenticationProvider.java similarity index 100% rename from receipt/src/androidTest/java/com/hyperwallet/android/ui/receipt/util/TestAuthenticationProvider.java rename to receiptui/src/androidTest/java/com/hyperwallet/android/ui/receipt/util/TestAuthenticationProvider.java diff --git a/receipt/src/main/AndroidManifest.xml b/receiptui/src/main/AndroidManifest.xml similarity index 100% rename from receipt/src/main/AndroidManifest.xml rename to receiptui/src/main/AndroidManifest.xml diff --git a/receiptui/src/main/java/com/hyperwallet/android/ui/receipt/HyperwalletReceiptUi.java b/receiptui/src/main/java/com/hyperwallet/android/ui/receipt/HyperwalletReceiptUi.java new file mode 100644 index 000000000..4b3fdd550 --- /dev/null +++ b/receiptui/src/main/java/com/hyperwallet/android/ui/receipt/HyperwalletReceiptUi.java @@ -0,0 +1,68 @@ +/* + * The MIT License (MIT) + * Copyright (c) 2018 Hyperwallet Systems Inc. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and + * associated documentation files (the "Software"), to deal in the Software without restriction, + * including without limitation the rights to use, copy, modify, merge, publish, distribute, + * sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT + * NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ +package com.hyperwallet.android.ui.receipt; + +import android.content.Context; +import android.content.Intent; + +import androidx.annotation.NonNull; + +import com.hyperwallet.android.Hyperwallet; +import com.hyperwallet.android.HyperwalletAuthenticationTokenProvider; +import com.hyperwallet.android.ui.receipt.view.ListPrepaidCardReceiptActivity; +import com.hyperwallet.android.ui.receipt.view.ListUserReceiptActivity; + +public final class HyperwalletReceiptUi { + + private static HyperwalletReceiptUi sInstance; + + private HyperwalletReceiptUi() { + } + + /** + * @param authenticationTokenProvider An implementation of the {@link HyperwalletAuthenticationTokenProvider} + * @return Returns a newly created HyperwalletTransferMethodUi that can be used to get Intents to launch different + * activities. + */ + public static synchronized HyperwalletReceiptUi getInstance( + @NonNull final HyperwalletAuthenticationTokenProvider authenticationTokenProvider) { + if (sInstance == null) { + sInstance = new HyperwalletReceiptUi(); + Hyperwallet.getInstance(authenticationTokenProvider); + } + return sInstance; + } + + /** + * @param context A Context of the application consuming this Intent. + * @return an Intent with the data necessary to launch the {@link ListUserReceiptActivity} + */ + public Intent getIntentListUserReceiptActivity(@NonNull final Context context) { + return new Intent(context, ListUserReceiptActivity.class); + } + + /** + * @param context A Context of the application consuming this Intent. + * @return an Intent with the data necessary to launch the {@link ListPrepaidCardReceiptActivity} + */ + public Intent getIntentListPrepaidCardReceiptActivity(@NonNull final Context context, @NonNull final String token) { + Intent intent = new Intent(context, ListPrepaidCardReceiptActivity.class); + intent.putExtra(ListPrepaidCardReceiptActivity.EXTRA_PREPAID_CARD_TOKEN, token); + return intent; + } + +} diff --git a/receipt/src/main/java/com/hyperwallet/android/ui/receipt/view/ListPrepaidCardReceiptActivity.java b/receiptui/src/main/java/com/hyperwallet/android/ui/receipt/view/ListPrepaidCardReceiptActivity.java similarity index 99% rename from receipt/src/main/java/com/hyperwallet/android/ui/receipt/view/ListPrepaidCardReceiptActivity.java rename to receiptui/src/main/java/com/hyperwallet/android/ui/receipt/view/ListPrepaidCardReceiptActivity.java index b774436d4..e5ef5a937 100644 --- a/receipt/src/main/java/com/hyperwallet/android/ui/receipt/view/ListPrepaidCardReceiptActivity.java +++ b/receiptui/src/main/java/com/hyperwallet/android/ui/receipt/view/ListPrepaidCardReceiptActivity.java @@ -33,9 +33,9 @@ import com.hyperwallet.android.model.HyperwalletError; import com.hyperwallet.android.model.HyperwalletErrors; import com.hyperwallet.android.model.receipt.Receipt; +import com.hyperwallet.android.ui.common.repository.Event; import com.hyperwallet.android.ui.common.view.error.DefaultErrorDialogFragment; import com.hyperwallet.android.ui.common.view.error.OnNetworkErrorCallback; -import com.hyperwallet.android.ui.common.viewmodel.Event; import com.hyperwallet.android.ui.common.viewmodel.ListDetailNavigator; import com.hyperwallet.android.ui.receipt.R; import com.hyperwallet.android.ui.receipt.repository.PrepaidCardReceiptRepositoryImpl; diff --git a/receipt/src/main/java/com/hyperwallet/android/ui/receipt/view/ListReceiptFragment.java b/receiptui/src/main/java/com/hyperwallet/android/ui/receipt/view/ListReceiptFragment.java similarity index 100% rename from receipt/src/main/java/com/hyperwallet/android/ui/receipt/view/ListReceiptFragment.java rename to receiptui/src/main/java/com/hyperwallet/android/ui/receipt/view/ListReceiptFragment.java diff --git a/receipt/src/main/java/com/hyperwallet/android/ui/receipt/view/ListUserReceiptActivity.java b/receiptui/src/main/java/com/hyperwallet/android/ui/receipt/view/ListUserReceiptActivity.java similarity index 99% rename from receipt/src/main/java/com/hyperwallet/android/ui/receipt/view/ListUserReceiptActivity.java rename to receiptui/src/main/java/com/hyperwallet/android/ui/receipt/view/ListUserReceiptActivity.java index bc66e9609..4b56bfa30 100644 --- a/receipt/src/main/java/com/hyperwallet/android/ui/receipt/view/ListUserReceiptActivity.java +++ b/receiptui/src/main/java/com/hyperwallet/android/ui/receipt/view/ListUserReceiptActivity.java @@ -33,9 +33,9 @@ import com.hyperwallet.android.model.HyperwalletError; import com.hyperwallet.android.model.HyperwalletErrors; import com.hyperwallet.android.model.receipt.Receipt; +import com.hyperwallet.android.ui.common.repository.Event; import com.hyperwallet.android.ui.common.view.error.DefaultErrorDialogFragment; import com.hyperwallet.android.ui.common.view.error.OnNetworkErrorCallback; -import com.hyperwallet.android.ui.common.viewmodel.Event; import com.hyperwallet.android.ui.common.viewmodel.ListDetailNavigator; import com.hyperwallet.android.ui.receipt.R; import com.hyperwallet.android.ui.receipt.repository.UserReceiptRepositoryImpl; diff --git a/receipt/src/main/java/com/hyperwallet/android/ui/receipt/view/ReceiptDetailActivity.java b/receiptui/src/main/java/com/hyperwallet/android/ui/receipt/view/ReceiptDetailActivity.java similarity index 100% rename from receipt/src/main/java/com/hyperwallet/android/ui/receipt/view/ReceiptDetailActivity.java rename to receiptui/src/main/java/com/hyperwallet/android/ui/receipt/view/ReceiptDetailActivity.java diff --git a/receipt/src/main/java/com/hyperwallet/android/ui/receipt/view/ReceiptDetailFragment.java b/receiptui/src/main/java/com/hyperwallet/android/ui/receipt/view/ReceiptDetailFragment.java similarity index 100% rename from receipt/src/main/java/com/hyperwallet/android/ui/receipt/view/ReceiptDetailFragment.java rename to receiptui/src/main/java/com/hyperwallet/android/ui/receipt/view/ReceiptDetailFragment.java diff --git a/receipt/src/main/java/com/hyperwallet/android/ui/receipt/view/ReceiptItemDividerDecorator.java b/receiptui/src/main/java/com/hyperwallet/android/ui/receipt/view/ReceiptItemDividerDecorator.java similarity index 100% rename from receipt/src/main/java/com/hyperwallet/android/ui/receipt/view/ReceiptItemDividerDecorator.java rename to receiptui/src/main/java/com/hyperwallet/android/ui/receipt/view/ReceiptItemDividerDecorator.java diff --git a/receipt/src/main/java/com/hyperwallet/android/ui/receipt/viewmodel/ListPrepaidCardReceiptViewModel.java b/receiptui/src/main/java/com/hyperwallet/android/ui/receipt/viewmodel/ListPrepaidCardReceiptViewModel.java similarity index 98% rename from receipt/src/main/java/com/hyperwallet/android/ui/receipt/viewmodel/ListPrepaidCardReceiptViewModel.java rename to receiptui/src/main/java/com/hyperwallet/android/ui/receipt/viewmodel/ListPrepaidCardReceiptViewModel.java index 73f697bca..0b72276be 100644 --- a/receipt/src/main/java/com/hyperwallet/android/ui/receipt/viewmodel/ListPrepaidCardReceiptViewModel.java +++ b/receiptui/src/main/java/com/hyperwallet/android/ui/receipt/viewmodel/ListPrepaidCardReceiptViewModel.java @@ -26,7 +26,7 @@ import com.hyperwallet.android.model.HyperwalletErrors; import com.hyperwallet.android.model.receipt.Receipt; -import com.hyperwallet.android.ui.common.viewmodel.Event; +import com.hyperwallet.android.ui.common.repository.Event; import com.hyperwallet.android.ui.receipt.repository.PrepaidCardReceiptRepository; public class ListPrepaidCardReceiptViewModel extends ReceiptViewModel { diff --git a/receipt/src/main/java/com/hyperwallet/android/ui/receipt/viewmodel/ListUserReceiptViewModel.java b/receiptui/src/main/java/com/hyperwallet/android/ui/receipt/viewmodel/ListUserReceiptViewModel.java similarity index 97% rename from receipt/src/main/java/com/hyperwallet/android/ui/receipt/viewmodel/ListUserReceiptViewModel.java rename to receiptui/src/main/java/com/hyperwallet/android/ui/receipt/viewmodel/ListUserReceiptViewModel.java index 9b9b63b2c..fcb308629 100644 --- a/receipt/src/main/java/com/hyperwallet/android/ui/receipt/viewmodel/ListUserReceiptViewModel.java +++ b/receiptui/src/main/java/com/hyperwallet/android/ui/receipt/viewmodel/ListUserReceiptViewModel.java @@ -26,7 +26,7 @@ import com.hyperwallet.android.model.HyperwalletErrors; import com.hyperwallet.android.model.receipt.Receipt; -import com.hyperwallet.android.ui.common.viewmodel.Event; +import com.hyperwallet.android.ui.common.repository.Event; import com.hyperwallet.android.ui.receipt.repository.UserReceiptRepository; public class ListUserReceiptViewModel extends ReceiptViewModel { @@ -74,28 +74,28 @@ public LiveData> getReceiptList() { /** * @see ReceiptViewModel#retryLoadReceipts() - * */ + */ public void retryLoadReceipts() { mUserReceiptRepository.retryLoadReceipt(); } /** * @see ReceiptViewModel#getDetailNavigation() - * */ + */ public LiveData> getDetailNavigation() { return mDetailNavigation; } /** * @see ReceiptViewModel#setDetailNavigation(Receipt) - * */ + */ public void setDetailNavigation(@NonNull final Receipt receipt) { mDetailNavigation.postValue(new Event<>(receipt)); } /** * @see ViewModel#onCleared() - * */ + */ @Override protected void onCleared() { super.onCleared(); diff --git a/receipt/src/main/java/com/hyperwallet/android/ui/receipt/viewmodel/ReceiptDetailViewModel.java b/receiptui/src/main/java/com/hyperwallet/android/ui/receipt/viewmodel/ReceiptDetailViewModel.java similarity index 100% rename from receipt/src/main/java/com/hyperwallet/android/ui/receipt/viewmodel/ReceiptDetailViewModel.java rename to receiptui/src/main/java/com/hyperwallet/android/ui/receipt/viewmodel/ReceiptDetailViewModel.java diff --git a/receipt/src/main/java/com/hyperwallet/android/ui/receipt/viewmodel/ReceiptViewModel.java b/receiptui/src/main/java/com/hyperwallet/android/ui/receipt/viewmodel/ReceiptViewModel.java similarity index 97% rename from receipt/src/main/java/com/hyperwallet/android/ui/receipt/viewmodel/ReceiptViewModel.java rename to receiptui/src/main/java/com/hyperwallet/android/ui/receipt/viewmodel/ReceiptViewModel.java index f100b86bc..9cb878969 100644 --- a/receipt/src/main/java/com/hyperwallet/android/ui/receipt/viewmodel/ReceiptViewModel.java +++ b/receiptui/src/main/java/com/hyperwallet/android/ui/receipt/viewmodel/ReceiptViewModel.java @@ -23,7 +23,7 @@ import com.hyperwallet.android.model.HyperwalletErrors; import com.hyperwallet.android.model.receipt.Receipt; -import com.hyperwallet.android.ui.common.viewmodel.Event; +import com.hyperwallet.android.ui.common.repository.Event; public abstract class ReceiptViewModel extends ViewModel { diff --git a/receipt/src/main/res/drawable/circle_negative.xml b/receiptui/src/main/res/drawable/circle_negative.xml similarity index 100% rename from receipt/src/main/res/drawable/circle_negative.xml rename to receiptui/src/main/res/drawable/circle_negative.xml diff --git a/receipt/src/main/res/drawable/circle_positive.xml b/receiptui/src/main/res/drawable/circle_positive.xml similarity index 100% rename from receipt/src/main/res/drawable/circle_positive.xml rename to receiptui/src/main/res/drawable/circle_positive.xml diff --git a/receipt/src/main/res/drawable/item_view_border.xml b/receiptui/src/main/res/drawable/item_view_border.xml similarity index 100% rename from receipt/src/main/res/drawable/item_view_border.xml rename to receiptui/src/main/res/drawable/item_view_border.xml diff --git a/receipt/src/main/res/drawable/item_view_border_header.xml b/receiptui/src/main/res/drawable/item_view_border_header.xml similarity index 100% rename from receipt/src/main/res/drawable/item_view_border_header.xml rename to receiptui/src/main/res/drawable/item_view_border_header.xml diff --git a/receipt/src/main/res/layout/activity_list_prepaid_card_receipt.xml b/receiptui/src/main/res/layout/activity_list_prepaid_card_receipt.xml similarity index 100% rename from receipt/src/main/res/layout/activity_list_prepaid_card_receipt.xml rename to receiptui/src/main/res/layout/activity_list_prepaid_card_receipt.xml diff --git a/receipt/src/main/res/layout/activity_list_user_receipt.xml b/receiptui/src/main/res/layout/activity_list_user_receipt.xml similarity index 100% rename from receipt/src/main/res/layout/activity_list_user_receipt.xml rename to receiptui/src/main/res/layout/activity_list_user_receipt.xml diff --git a/receipt/src/main/res/layout/activity_receipt_detail.xml b/receiptui/src/main/res/layout/activity_receipt_detail.xml similarity index 100% rename from receipt/src/main/res/layout/activity_receipt_detail.xml rename to receiptui/src/main/res/layout/activity_receipt_detail.xml diff --git a/receipt/src/main/res/layout/fragment_list_receipt.xml b/receiptui/src/main/res/layout/fragment_list_receipt.xml similarity index 100% rename from receipt/src/main/res/layout/fragment_list_receipt.xml rename to receiptui/src/main/res/layout/fragment_list_receipt.xml diff --git a/receipt/src/main/res/layout/fragment_receipt_detail.xml b/receiptui/src/main/res/layout/fragment_receipt_detail.xml similarity index 100% rename from receipt/src/main/res/layout/fragment_receipt_detail.xml rename to receiptui/src/main/res/layout/fragment_receipt_detail.xml diff --git a/receipt/src/main/res/layout/item_receipt.xml b/receiptui/src/main/res/layout/item_receipt.xml similarity index 100% rename from receipt/src/main/res/layout/item_receipt.xml rename to receiptui/src/main/res/layout/item_receipt.xml diff --git a/receipt/src/main/res/layout/item_receipt_with_header.xml b/receiptui/src/main/res/layout/item_receipt_with_header.xml similarity index 100% rename from receipt/src/main/res/layout/item_receipt_with_header.xml rename to receiptui/src/main/res/layout/item_receipt_with_header.xml diff --git a/receipt/src/main/res/layout/receipt.xml b/receiptui/src/main/res/layout/receipt.xml similarity index 100% rename from receipt/src/main/res/layout/receipt.xml rename to receiptui/src/main/res/layout/receipt.xml diff --git a/receipt/src/main/res/values/colors.xml b/receiptui/src/main/res/values/colors.xml similarity index 100% rename from receipt/src/main/res/values/colors.xml rename to receiptui/src/main/res/values/colors.xml diff --git a/receipt/src/main/res/values/dimens.xml b/receiptui/src/main/res/values/dimens.xml similarity index 100% rename from receipt/src/main/res/values/dimens.xml rename to receiptui/src/main/res/values/dimens.xml diff --git a/receipt/src/main/res/values/strings.xml b/receiptui/src/main/res/values/strings.xml similarity index 100% rename from receipt/src/main/res/values/strings.xml rename to receiptui/src/main/res/values/strings.xml diff --git a/receipt/src/main/res/values/styles.xml b/receiptui/src/main/res/values/styles.xml similarity index 100% rename from receipt/src/main/res/values/styles.xml rename to receiptui/src/main/res/values/styles.xml diff --git a/receipt/src/main/res/xml/network_security_config.xml b/receiptui/src/main/res/xml/network_security_config.xml similarity index 100% rename from receipt/src/main/res/xml/network_security_config.xml rename to receiptui/src/main/res/xml/network_security_config.xml diff --git a/ui/src/androidTest/java/com/hyperwallet/android/ui/rule/HyperwalletExternalResourceManager.java b/receiptui/src/test/java/com/hyperwallet/android/ui/transfermethod/rule/HyperwalletExternalResourceManager.java similarity index 97% rename from ui/src/androidTest/java/com/hyperwallet/android/ui/rule/HyperwalletExternalResourceManager.java rename to receiptui/src/test/java/com/hyperwallet/android/ui/transfermethod/rule/HyperwalletExternalResourceManager.java index 0fd013e52..e7ac68fac 100644 --- a/ui/src/androidTest/java/com/hyperwallet/android/ui/rule/HyperwalletExternalResourceManager.java +++ b/receiptui/src/test/java/com/hyperwallet/android/ui/transfermethod/rule/HyperwalletExternalResourceManager.java @@ -1,4 +1,4 @@ -package com.hyperwallet.android.ui.rule; +package com.hyperwallet.android.ui.transfermethod.rule; import org.junit.rules.TestWatcher; import org.junit.runner.Description; @@ -35,7 +35,6 @@ public String getResourceContent(final String resourceName) { } private String getContent(final String resourceName) { - URL resource = classLoader.getResource(resourceName); InputStream inputStream = null; Writer writer = new StringWriter(); diff --git a/receipt/src/test/resources/authentication_token_response.json b/receiptui/src/test/resources/authentication_token_response.json similarity index 100% rename from receipt/src/test/resources/authentication_token_response.json rename to receiptui/src/test/resources/authentication_token_response.json diff --git a/receipt/src/test/resources/prepaid_card_receipt_credit_response.json b/receiptui/src/test/resources/prepaid_card_receipt_credit_response.json similarity index 100% rename from receipt/src/test/resources/prepaid_card_receipt_credit_response.json rename to receiptui/src/test/resources/prepaid_card_receipt_credit_response.json diff --git a/receipt/src/test/resources/prepaid_card_receipt_debit_response.json b/receiptui/src/test/resources/prepaid_card_receipt_debit_response.json similarity index 100% rename from receipt/src/test/resources/prepaid_card_receipt_debit_response.json rename to receiptui/src/test/resources/prepaid_card_receipt_debit_response.json diff --git a/receiptui/src/test/resources/prepaid_card_receipt_list_response.json b/receiptui/src/test/resources/prepaid_card_receipt_list_response.json new file mode 100644 index 000000000..e6539804c --- /dev/null +++ b/receiptui/src/test/resources/prepaid_card_receipt_list_response.json @@ -0,0 +1,103 @@ +{ + "data": [ + { + "journalId": "FISVL_5240220", + "type": "PREPAID_CARD_SALE", + "createdOn": "2019-06-06T22:48:41", + "entry": "DEBIT", + "destinationToken": "trm-2e02da75-a36c-4723-b613-0b64e6f582d9", + "amount": "10.00", + "fee": "3.00", + "currency": "USD", + "details": { + "cardNumber": "************0673", + "clientPaymentId": "AOxXefx9", + "payeeName": "A Person", + "website": "https://api.sandbox.hyperwallet.com", + "notes": "Sample prepaid card payment for the period of June 15th, 2019 to July 23, 2019", + "charityName": "Sample Charity", + "checkNumber": "Sample Check Number" + } + }, + { + "journalId": "FISVL_5240221", + "type": "DEPOSIT", + "createdOn": "2019-06-06T22:48:51", + "entry": "CREDIT", + "destinationToken": "trm-2e02da75-a36c-4723-b613-0b64e6f582d9", + "amount": "5.00", + "currency": "USD", + "details": { + "cardNumber": "************0673" + } + }, + { + "journalId": "FISA_5240222", + "type": "ADJUSTMENT", + "createdOn": "2019-06-01T22:49:17", + "entry": "DEBIT", + "sourceToken": "trm-2e02da75-a36c-4723-b613-0b64e6f582d9", + "amount": "8.90", + "currency": "USD", + "details": { + "cardNumber": "************0673" + } + }, + { + "journalId": "FISA_5240223", + "type": "ADJUSTMENT", + "createdOn": "2019-03-31T23:55:17", + "entry": "DEBIT", + "sourceToken": "trm-2e02da75-a36c-4723-b613-0b64e6f582d9", + "amount": "7.90", + "currency": "USD", + "details": { + "cardNumber": "************0673" + } + }, + { + "journalId": "FISA_5240224", + "type": "ADJUSTMENT", + "createdOn": "2019-02-28T23:55:17", + "entry": "CREDIT", + "sourceToken": "trm-2e02da75-a36c-4723-b613-0b64e6f582d9", + "amount": "6.90", + "currency": "USD", + "details": { + "cardNumber": "************0673" + } + }, + { + "journalId": "FISA_5240225", + "type": "ADJUSTMENT", + "createdOn": "2019-02-23T23:55:17", + "entry": "CREDIT", + "sourceToken": "trm-2e02da75-a36c-4723-b613-0b64e6f582d9", + "amount": "3.90", + "currency": "USD", + "details": { + "cardNumber": "************0673" + } + }, + { + "journalId": "FISA_5240226", + "type": "ADJUSTMENT", + "createdOn": "2019-02-21T23:55:17", + "entry": "CREDIT", + "sourceToken": "trm-2e02da75-a36c-4723-b613-0b64e6f582d9", + "amount": "9.92", + "currency": "USD", + "details": { + "cardNumber": "************0673" + } + } + ], + "links": [ + { + "params": { + "rel": "self" + }, + "href": "https://qamaster-hyperwallet.aws.paylution.net/rest/v3/users/usr-e17ae43b-284d-4198-9585-f417943c624f/prepaid-cards/trm-2e02da75-a36c-4723-b613-0b64e6f582d9/receipts" + } + ] +} \ No newline at end of file diff --git a/receipt/src/test/resources/prepaid_card_receipt_unknown_type_response.json b/receiptui/src/test/resources/prepaid_card_receipt_unknown_type_response.json similarity index 100% rename from receipt/src/test/resources/prepaid_card_receipt_unknown_type_response.json rename to receiptui/src/test/resources/prepaid_card_receipt_unknown_type_response.json diff --git a/receipt/src/test/resources/receipt_credit_response.json b/receiptui/src/test/resources/receipt_credit_response.json similarity index 100% rename from receipt/src/test/resources/receipt_credit_response.json rename to receiptui/src/test/resources/receipt_credit_response.json diff --git a/receipt/src/test/resources/receipt_debit_response.json b/receiptui/src/test/resources/receipt_debit_response.json similarity index 100% rename from receipt/src/test/resources/receipt_debit_response.json rename to receiptui/src/test/resources/receipt_debit_response.json diff --git a/receiptui/src/test/resources/receipt_list_date_grouping_response.json b/receiptui/src/test/resources/receipt_list_date_grouping_response.json new file mode 100644 index 000000000..1b5b798bb --- /dev/null +++ b/receiptui/src/test/resources/receipt_list_date_grouping_response.json @@ -0,0 +1,90 @@ +{ + "count": 5, + "offset": 0, + "limit": 10, + "data": [ + { + "journalId": "51660665", + "type": "PAYMENT", + "createdOn": "2019-05-27T15:42:07", + "entry": "CREDIT", + "sourceToken": "act-b1f6dc28-e534-45f4-a661-3523f051f77a", + "destinationToken": "usr-b4e8ec34-52d8-4a81-9566-bdde1bd745b6", + "amount": "5000.00", + "fee": "0.00", + "currency": "USD", + "details": { + "clientPaymentId": "trans-0001", + "payeeName": "Kevin Puckett" + } + }, + { + "journalId": "51660666", + "type": "TRANSFER_TO_BANK_ACCOUNT", + "createdOn": "2019-05-27T15:57:49", + "entry": "DEBIT", + "sourceToken": "usr-b4e8ec34-52d8-4a81-9566-bdde1bd745b6", + "destinationToken": "trm-0a2ac589-2cae-4ed3-9b0b-658246a34687", + "amount": "10.25", + "fee": "0.25", + "currency": "USD", + "details": { + "payeeName": "Kevin Puckett", + "bankAccountId": "patzachery.mcclary@example.com" + } + }, + { + "journalId": "51660667", + "type": "PAYMENT", + "createdOn": "2019-05-27T16:01:10", + "entry": "CREDIT", + "sourceToken": "act-b1f6dc28-e534-45f4-a661-3523f051f77a", + "destinationToken": "usr-b4e8ec34-52d8-4a81-9566-bdde1bd745b6", + "amount": "11.00", + "fee": "0.00", + "currency": "USD", + "details": { + "clientPaymentId": "trans-02", + "payeeName": "Kevin Puckett" + } + }, + { + "journalId": "51660675", + "type": "PAYMENT", + "createdOn": "2019-06-04T10:35:23", + "entry": "CREDIT", + "sourceToken": "act-b1f6dc28-e534-45f4-a661-3523f051f77a", + "destinationToken": "usr-b4e8ec34-52d8-4a81-9566-bdde1bd745b6", + "amount": "13.00", + "fee": "0.00", + "currency": "USD", + "details": { + "clientPaymentId": "CSietnRJQQ0bscYkOoPJxNiTDiVALhjQ", + "payeeName": "Kevin Puckett" + } + }, + { + "journalId": "51660676", + "type": "PAYMENT", + "createdOn": "2019-06-04T11:16:21", + "entry": "CREDIT", + "sourceToken": "act-b1f6dc28-e534-45f4-a661-3523f051f77a", + "destinationToken": "usr-b4e8ec34-52d8-4a81-9566-bdde1bd745b6", + "amount": "14.00", + "fee": "0.00", + "currency": "USD", + "details": { + "clientPaymentId": "wUOdfLlJONacbdHlAHOAXQT7uwX7LTPy", + "payeeName": "Kevin Puckett" + } + } + ], + "links": [ + { + "params": { + "rel": "self" + }, + "href": "https://localhost:8181/rest/v3/users/usr-b4e8ec34-52d8-4a81-9566-bdde1bd745b6/receipts?offset=0&limit=10&createdAfter=2019-1-1" + } + ] +} \ No newline at end of file diff --git a/receipt/src/test/resources/receipt_list_paged_last_response.json b/receiptui/src/test/resources/receipt_list_paged_last_response.json similarity index 100% rename from receipt/src/test/resources/receipt_list_paged_last_response.json rename to receiptui/src/test/resources/receipt_list_paged_last_response.json diff --git a/receipt/src/test/resources/receipt_list_paged_response.json b/receiptui/src/test/resources/receipt_list_paged_response.json similarity index 100% rename from receipt/src/test/resources/receipt_list_paged_response.json rename to receiptui/src/test/resources/receipt_list_paged_response.json diff --git a/receipt/src/test/resources/receipt_list_paged_second_response.json b/receiptui/src/test/resources/receipt_list_paged_second_response.json similarity index 100% rename from receipt/src/test/resources/receipt_list_paged_second_response.json rename to receiptui/src/test/resources/receipt_list_paged_second_response.json diff --git a/receipt/src/test/resources/receipt_list_paged_third_response.json b/receiptui/src/test/resources/receipt_list_paged_third_response.json similarity index 100% rename from receipt/src/test/resources/receipt_list_paged_third_response.json rename to receiptui/src/test/resources/receipt_list_paged_third_response.json diff --git a/receipt/src/test/resources/receipt_list_response.json b/receiptui/src/test/resources/receipt_list_response.json similarity index 100% rename from receipt/src/test/resources/receipt_list_response.json rename to receiptui/src/test/resources/receipt_list_response.json diff --git a/receipt/src/test/resources/receipt_unknown_type_response.json b/receiptui/src/test/resources/receipt_unknown_type_response.json similarity index 100% rename from receipt/src/test/resources/receipt_unknown_type_response.json rename to receiptui/src/test/resources/receipt_unknown_type_response.json diff --git a/settings.gradle b/settings.gradle index 905f2e4e9..9058fac39 100644 --- a/settings.gradle +++ b/settings.gradle @@ -1 +1 @@ -include ':ui', ':common', ':receipt' +include ':transfermethodui', ':receiptui', ':commonui', ':receiptrepository', ':userrepository', ':transfermethodrepository', ':commonrepository' diff --git a/transfermethodrepository/.gitignore b/transfermethodrepository/.gitignore new file mode 100644 index 000000000..26b424a3f --- /dev/null +++ b/transfermethodrepository/.gitignore @@ -0,0 +1,3 @@ +/build + +*.exec diff --git a/transfermethodrepository/build.gradle b/transfermethodrepository/build.gradle new file mode 100644 index 000000000..5f8b12e95 --- /dev/null +++ b/transfermethodrepository/build.gradle @@ -0,0 +1,12 @@ +apply from: "$rootProject.projectDir/android-library.gradle" +description = 'Hyperwallet Transfer Method Repository SDK for Android to integrate with the Hyperwallet Platform' +project.ext { + mavenName = 'Hyperwallet Android Transfer Method Repository SDK' +} +apply from: "$rootProject.projectDir/publish.gradle" + +dependencies { + api project(':commonrepository') + testImplementation "org.robolectric:robolectric:$robolectricVersion" + testImplementation "com.squareup.okhttp3:mockwebserver:$mockWebServerVersion" +} \ No newline at end of file diff --git a/transfermethodrepository/config/jacoco-settings.gradle b/transfermethodrepository/config/jacoco-settings.gradle new file mode 100644 index 000000000..f1b0a7c45 --- /dev/null +++ b/transfermethodrepository/config/jacoco-settings.gradle @@ -0,0 +1,78 @@ +apply plugin: 'jacoco' + +final def jacocoVersion = "0.8.2" + +jacoco { + toolVersion = jacocoVersion +} + +android { + testOptions { + unitTests { + includeAndroidResources = true + returnDefaultValues = true + } + unitTests.all { + jacoco { + includeNoLocationClasses = true + } + } + } +} + +def fileFilter = ['**/BuildConfig.*'] + +def debugClassPaths = [ + '**/intermediates/javac/debug/*/classes/**' +] + +final def coverageSourceDirs = ["$project.projectDir/src/main/java/*"] + +task jacocoTestReport(type: JacocoReport, dependsOn: 'testDebugUnitTest') { + + group = 'Reporting' + description = 'Generate Jacoco coverage reports.' + reports { + html { + enabled = true + destination file("$project.buildDir/reports/jacoco") + } + } + + classDirectories = fileTree( + dir: "${buildDir}", + includes: debugClassPaths, + excludes: fileFilter + ) + + additionalSourceDirs = files(coverageSourceDirs) + sourceDirectories = files(coverageSourceDirs) + executionData = files("${project.buildDir}/jacoco/testDebugUnitTest.exec") +} + +task jacocoTestCoverageVerification(type: JacocoCoverageVerification, dependsOn: 'jacocoTestReport') { + + group = 'Verification' + classDirectories = fileTree( + dir: "${buildDir}", + includes: debugClassPaths, + excludes: fileFilter + ) + additionalSourceDirs = files(coverageSourceDirs) + sourceDirectories = files(coverageSourceDirs) + executionData = files("${project.buildDir}/jacoco/testDebugUnitTest.exec") + + violationRules { + setFailOnViolation(true) + + rule { + element = 'CLASS' + limit { + value = 'COVEREDRATIO' + counter = 'BRANCH' + minimum = 0.65 + } + } + } +} + diff --git a/transfermethodrepository/config/lint.xml b/transfermethodrepository/config/lint.xml new file mode 100644 index 000000000..9242eccb2 --- /dev/null +++ b/transfermethodrepository/config/lint.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/transfermethodrepository/proguard-rules.pro b/transfermethodrepository/proguard-rules.pro new file mode 100644 index 000000000..f1b424510 --- /dev/null +++ b/transfermethodrepository/proguard-rules.pro @@ -0,0 +1,21 @@ +# Add project specific ProGuard rules here. +# You can control the set of applied configuration files using the +# proguardFiles setting in build.gradle. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# If your project uses WebView with JS, uncomment the following +# and specify the fully qualified class name to the JavaScript interface +# class: +#-keepclassmembers class fqcn.of.javascript.interface.for.webview { +# public *; +#} + +# Uncomment this to preserve the line number information for +# debugging stack traces. +#-keepattributes SourceFile,LineNumberTable + +# If you keep the line number information, uncomment this to +# hide the original source file name. +#-renamesourcefileattribute SourceFile diff --git a/transfermethodrepository/src/main/AndroidManifest.xml b/transfermethodrepository/src/main/AndroidManifest.xml new file mode 100644 index 000000000..dfdab902d --- /dev/null +++ b/transfermethodrepository/src/main/AndroidManifest.xml @@ -0,0 +1,2 @@ + diff --git a/ui/src/main/java/com/hyperwallet/android/ui/repository/TransferMethodConfigurationRepository.java b/transfermethodrepository/src/main/java/com/hyperwallet/android/ui/transfermethod/repository/TransferMethodConfigurationRepository.java similarity index 97% rename from ui/src/main/java/com/hyperwallet/android/ui/repository/TransferMethodConfigurationRepository.java rename to transfermethodrepository/src/main/java/com/hyperwallet/android/ui/transfermethod/repository/TransferMethodConfigurationRepository.java index 08c9694e3..31389ee50 100644 --- a/ui/src/main/java/com/hyperwallet/android/ui/repository/TransferMethodConfigurationRepository.java +++ b/transfermethodrepository/src/main/java/com/hyperwallet/android/ui/transfermethod/repository/TransferMethodConfigurationRepository.java @@ -24,7 +24,7 @@ * USE OR OTHER DEALINGS * IN THE SOFTWARE. */ -package com.hyperwallet.android.ui.repository; +package com.hyperwallet.android.ui.transfermethod.repository; import androidx.annotation.NonNull; import androidx.annotation.Nullable; diff --git a/ui/src/main/java/com/hyperwallet/android/ui/repository/TransferMethodConfigurationRepositoryImpl.java b/transfermethodrepository/src/main/java/com/hyperwallet/android/ui/transfermethod/repository/TransferMethodConfigurationRepositoryImpl.java similarity index 96% rename from ui/src/main/java/com/hyperwallet/android/ui/repository/TransferMethodConfigurationRepositoryImpl.java rename to transfermethodrepository/src/main/java/com/hyperwallet/android/ui/transfermethod/repository/TransferMethodConfigurationRepositoryImpl.java index b8384793f..f9a382805 100644 --- a/ui/src/main/java/com/hyperwallet/android/ui/repository/TransferMethodConfigurationRepositoryImpl.java +++ b/transfermethodrepository/src/main/java/com/hyperwallet/android/ui/transfermethod/repository/TransferMethodConfigurationRepositoryImpl.java @@ -24,7 +24,7 @@ * USE OR OTHER DEALINGS * IN THE SOFTWARE. */ -package com.hyperwallet.android.ui.repository; +package com.hyperwallet.android.ui.transfermethod.repository; import android.os.Handler; @@ -39,7 +39,7 @@ import com.hyperwallet.android.model.graphql.HyperwalletTransferMethodConfigurationKey; import com.hyperwallet.android.model.graphql.query.HyperwalletTransferMethodConfigurationFieldQuery; import com.hyperwallet.android.model.graphql.query.HyperwalletTransferMethodConfigurationKeysQuery; -import com.hyperwallet.android.ui.common.util.EspressoIdlingResource; +import com.hyperwallet.android.ui.common.repository.EspressoIdlingResource; import java.util.HashMap; import java.util.Map; @@ -50,16 +50,12 @@ public class TransferMethodConfigurationRepositoryImpl implements TransferMethod private final Map mFieldMap; private HyperwalletTransferMethodConfigurationKey mTransferMethodConfigurationKey; - TransferMethodConfigurationRepositoryImpl() { + //todo use default modifier after RepositoryFactory is removed + public TransferMethodConfigurationRepositoryImpl() { mHandler = new Handler(); mFieldMap = new HashMap<>(); } - @VisibleForTesting - Hyperwallet getHyperwallet() { - return Hyperwallet.getDefault(); - } - @VisibleForTesting() protected TransferMethodConfigurationRepositoryImpl(@Nullable Handler handler, HyperwalletTransferMethodConfigurationKey transferMethodConfigurationKey, @@ -69,6 +65,11 @@ protected TransferMethodConfigurationRepositoryImpl(@Nullable Handler handler, mFieldMap = fieldMap; } + @VisibleForTesting + Hyperwallet getHyperwallet() { + return Hyperwallet.getDefault(); + } + @VisibleForTesting void getTransferMethodConfigurationKeyResult(final LoadKeysCallback loadKeysCallback) { HyperwalletTransferMethodConfigurationKeysQuery query = new HyperwalletTransferMethodConfigurationKeysQuery(); diff --git a/ui/src/main/java/com/hyperwallet/android/ui/repository/TransferMethodRepository.java b/transfermethodrepository/src/main/java/com/hyperwallet/android/ui/transfermethod/repository/TransferMethodRepository.java similarity index 98% rename from ui/src/main/java/com/hyperwallet/android/ui/repository/TransferMethodRepository.java rename to transfermethodrepository/src/main/java/com/hyperwallet/android/ui/transfermethod/repository/TransferMethodRepository.java index 37baebfc9..dce02d886 100644 --- a/ui/src/main/java/com/hyperwallet/android/ui/repository/TransferMethodRepository.java +++ b/transfermethodrepository/src/main/java/com/hyperwallet/android/ui/transfermethod/repository/TransferMethodRepository.java @@ -14,7 +14,7 @@ * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -package com.hyperwallet.android.ui.repository; +package com.hyperwallet.android.ui.transfermethod.repository; import androidx.annotation.NonNull; diff --git a/transfermethodrepository/src/main/java/com/hyperwallet/android/ui/transfermethod/repository/TransferMethodRepositoryFactory.java b/transfermethodrepository/src/main/java/com/hyperwallet/android/ui/transfermethod/repository/TransferMethodRepositoryFactory.java new file mode 100644 index 000000000..ed9360c6f --- /dev/null +++ b/transfermethodrepository/src/main/java/com/hyperwallet/android/ui/transfermethod/repository/TransferMethodRepositoryFactory.java @@ -0,0 +1,47 @@ +/* + * The MIT License (MIT) + * Copyright (c) 2018 Hyperwallet Systems Inc. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and + * associated documentation files (the "Software"), to deal in the Software without restriction, + * including without limitation the rights to use, copy, modify, merge, publish, distribute, + * sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT + * NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ +package com.hyperwallet.android.ui.transfermethod.repository; + +public class TransferMethodRepositoryFactory { + private static TransferMethodRepositoryFactory sInstance; + private TransferMethodRepository mTransferMethodRepository; + private TransferMethodConfigurationRepository mTransferMethodConfigurationRepository; + + private TransferMethodRepositoryFactory() { + mTransferMethodRepository = new TransferMethodRepositoryImpl(); + mTransferMethodConfigurationRepository = new TransferMethodConfigurationRepositoryImpl(); + } + + public static synchronized TransferMethodRepositoryFactory getInstance() { + if (sInstance == null) { + sInstance = new TransferMethodRepositoryFactory(); + } + return sInstance; + } + + public static void clearInstance() { + sInstance = null; + } + + public TransferMethodRepository getTransferMethodRepository() { + return mTransferMethodRepository; + } + + public TransferMethodConfigurationRepository getTransferMethodConfigurationRepository() { + return mTransferMethodConfigurationRepository; + } +} diff --git a/ui/src/main/java/com/hyperwallet/android/ui/repository/TransferMethodRepositoryImpl.java b/transfermethodrepository/src/main/java/com/hyperwallet/android/ui/transfermethod/repository/TransferMethodRepositoryImpl.java similarity index 99% rename from ui/src/main/java/com/hyperwallet/android/ui/repository/TransferMethodRepositoryImpl.java rename to transfermethodrepository/src/main/java/com/hyperwallet/android/ui/transfermethod/repository/TransferMethodRepositoryImpl.java index 17aab2028..69f450ec2 100644 --- a/ui/src/main/java/com/hyperwallet/android/ui/repository/TransferMethodRepositoryImpl.java +++ b/transfermethodrepository/src/main/java/com/hyperwallet/android/ui/transfermethod/repository/TransferMethodRepositoryImpl.java @@ -14,7 +14,7 @@ * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -package com.hyperwallet.android.ui.repository; +package com.hyperwallet.android.ui.transfermethod.repository; import static com.hyperwallet.android.model.HyperwalletStatusTransition.StatusDefinition.ACTIVATED; import static com.hyperwallet.android.model.transfermethod.HyperwalletTransferMethod.TransferMethodFields.TOKEN; diff --git a/ui/src/test/java/com/hyperwallet/android/ui/repository/FieldMapKeyTest.java b/transfermethodrepository/src/test/java/com/hyperwallet/android/ui/transfermethod/repository/FieldMapKeyTest.java similarity index 94% rename from ui/src/test/java/com/hyperwallet/android/ui/repository/FieldMapKeyTest.java rename to transfermethodrepository/src/test/java/com/hyperwallet/android/ui/transfermethod/repository/FieldMapKeyTest.java index 297575fa0..f0541bb9a 100644 --- a/ui/src/test/java/com/hyperwallet/android/ui/repository/FieldMapKeyTest.java +++ b/transfermethodrepository/src/test/java/com/hyperwallet/android/ui/transfermethod/repository/FieldMapKeyTest.java @@ -1,4 +1,4 @@ -package com.hyperwallet.android.ui.repository; +package com.hyperwallet.android.ui.transfermethod.repository; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotEquals; diff --git a/ui/src/test/java/com/hyperwallet/android/ui/repository/TransferMethodConfigurationRepositoryImplTest.java b/transfermethodrepository/src/test/java/com/hyperwallet/android/ui/transfermethod/repository/TransferMethodConfigurationRepositoryImplTest.java similarity index 98% rename from ui/src/test/java/com/hyperwallet/android/ui/repository/TransferMethodConfigurationRepositoryImplTest.java rename to transfermethodrepository/src/test/java/com/hyperwallet/android/ui/transfermethod/repository/TransferMethodConfigurationRepositoryImplTest.java index 7bcc36886..b71175ead 100644 --- a/ui/src/test/java/com/hyperwallet/android/ui/repository/TransferMethodConfigurationRepositoryImplTest.java +++ b/transfermethodrepository/src/test/java/com/hyperwallet/android/ui/transfermethod/repository/TransferMethodConfigurationRepositoryImplTest.java @@ -1,4 +1,4 @@ -package com.hyperwallet.android.ui.repository; +package com.hyperwallet.android.ui.transfermethod.repository; import static org.hamcrest.CoreMatchers.is; import static org.hamcrest.CoreMatchers.not; @@ -32,7 +32,7 @@ import com.hyperwallet.android.model.graphql.keyed.HyperwalletTransferMethodConfigurationKeyResult; import com.hyperwallet.android.model.graphql.query.HyperwalletTransferMethodConfigurationFieldQuery; import com.hyperwallet.android.model.graphql.query.HyperwalletTransferMethodConfigurationKeysQuery; -import com.hyperwallet.android.ui.rule.HyperwalletExternalResourceManager; +import com.hyperwallet.android.ui.transfermethod.rule.HyperwalletExternalResourceManager; import com.hyperwallet.android.util.JsonUtils; import org.hamcrest.collection.IsEmptyCollection; diff --git a/ui/src/test/java/com/hyperwallet/android/ui/repository/RepositoryFactoryTest.java b/transfermethodrepository/src/test/java/com/hyperwallet/android/ui/transfermethod/repository/TransferMethodRepositoryFactoryTest.java similarity index 65% rename from ui/src/test/java/com/hyperwallet/android/ui/repository/RepositoryFactoryTest.java rename to transfermethodrepository/src/test/java/com/hyperwallet/android/ui/transfermethod/repository/TransferMethodRepositoryFactoryTest.java index 050534fc8..7e89c5a03 100644 --- a/ui/src/test/java/com/hyperwallet/android/ui/repository/RepositoryFactoryTest.java +++ b/transfermethodrepository/src/test/java/com/hyperwallet/android/ui/transfermethod/repository/TransferMethodRepositoryFactoryTest.java @@ -1,43 +1,39 @@ -package com.hyperwallet.android.ui.repository; +package com.hyperwallet.android.ui.transfermethod.repository; import static org.hamcrest.CoreMatchers.is; import static org.hamcrest.CoreMatchers.not; +import static org.hamcrest.CoreMatchers.notNullValue; import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.notNullValue; import org.junit.Test; -import org.junit.runner.RunWith; -import org.robolectric.RobolectricTestRunner; - -@RunWith(RobolectricTestRunner.class) -public class RepositoryFactoryTest { +public class TransferMethodRepositoryFactoryTest { @Test public void testGetInstance_verifyRepositoriesInitialized() { - RepositoryFactory repositoryFactory = RepositoryFactory.getInstance(); + TransferMethodRepositoryFactory repositoryFactory = TransferMethodRepositoryFactory.getInstance(); assertThat(repositoryFactory, is(notNullValue())); - assertThat(repositoryFactory.getTransferMethodConfigurationRepository(), is(notNullValue())); assertThat(repositoryFactory.getTransferMethodRepository(), is(notNullValue())); + assertThat(repositoryFactory.getTransferMethodConfigurationRepository(), is(notNullValue())); } @Test - public void testClearInstance_verifyRepositoriesCleared() { - RepositoryFactory repositoryFactory = RepositoryFactory.getInstance(); + public void testClearInstance_verifyRepositoryCleared() { + TransferMethodRepositoryFactory repositoryFactory = TransferMethodRepositoryFactory.getInstance(); + TransferMethodRepository transferMethodRepository = repositoryFactory.getTransferMethodRepository(); TransferMethodConfigurationRepository configurationRepository = repositoryFactory.getTransferMethodConfigurationRepository(); - TransferMethodRepository transferMethodRepository = repositoryFactory.getTransferMethodRepository(); - RepositoryFactory currentRepositoryFactory = RepositoryFactory.getInstance(); + TransferMethodRepositoryFactory currentRepositoryFactory = TransferMethodRepositoryFactory.getInstance(); assertThat(repositoryFactory, is(currentRepositoryFactory)); - assertThat(configurationRepository, is(currentRepositoryFactory.getTransferMethodConfigurationRepository())); assertThat(transferMethodRepository, is(currentRepositoryFactory.getTransferMethodRepository())); + assertThat(configurationRepository, is(currentRepositoryFactory.getTransferMethodConfigurationRepository())); - RepositoryFactory.clearInstance(); + TransferMethodRepositoryFactory.clearInstance(); - RepositoryFactory anotherRepositoryFactory = RepositoryFactory.getInstance(); + TransferMethodRepositoryFactory anotherRepositoryFactory = TransferMethodRepositoryFactory.getInstance(); assertThat(repositoryFactory, is(not(anotherRepositoryFactory))); + assertThat(transferMethodRepository, is(not(anotherRepositoryFactory.getTransferMethodRepository()))); assertThat(configurationRepository, is(not(anotherRepositoryFactory.getTransferMethodConfigurationRepository()))); - assertThat(transferMethodRepository, is(not(anotherRepositoryFactory.getTransferMethodRepository()))); } } \ No newline at end of file diff --git a/ui/src/test/java/com/hyperwallet/android/ui/repository/TransferMethodRepositoryImplTest.java b/transfermethodrepository/src/test/java/com/hyperwallet/android/ui/transfermethod/repository/TransferMethodRepositoryImplTest.java similarity index 99% rename from ui/src/test/java/com/hyperwallet/android/ui/repository/TransferMethodRepositoryImplTest.java rename to transfermethodrepository/src/test/java/com/hyperwallet/android/ui/transfermethod/repository/TransferMethodRepositoryImplTest.java index 59c3d3ee9..0e7b396c0 100644 --- a/ui/src/test/java/com/hyperwallet/android/ui/repository/TransferMethodRepositoryImplTest.java +++ b/transfermethodrepository/src/test/java/com/hyperwallet/android/ui/transfermethod/repository/TransferMethodRepositoryImplTest.java @@ -1,4 +1,4 @@ -package com.hyperwallet.android.ui.repository; +package com.hyperwallet.android.ui.transfermethod.repository; import static org.hamcrest.CoreMatchers.is; import static org.hamcrest.CoreMatchers.notNullValue; diff --git a/ui/src/test/java/com/hyperwallet/android/ui/rule/HyperwalletExternalResourceManager.java b/transfermethodrepository/src/test/java/com/hyperwallet/android/ui/transfermethod/rule/HyperwalletExternalResourceManager.java similarity index 97% rename from ui/src/test/java/com/hyperwallet/android/ui/rule/HyperwalletExternalResourceManager.java rename to transfermethodrepository/src/test/java/com/hyperwallet/android/ui/transfermethod/rule/HyperwalletExternalResourceManager.java index a983c9b7d..4db98b20a 100644 --- a/ui/src/test/java/com/hyperwallet/android/ui/rule/HyperwalletExternalResourceManager.java +++ b/transfermethodrepository/src/test/java/com/hyperwallet/android/ui/transfermethod/rule/HyperwalletExternalResourceManager.java @@ -1,4 +1,4 @@ -package com.hyperwallet.android.ui.rule; +package com.hyperwallet.android.ui.transfermethod.rule; import org.junit.rules.TestWatcher; import org.junit.runner.Description; diff --git a/ui/src/test/resources/error_tmc_keys_response.json b/transfermethodrepository/src/test/resources/error_tmc_keys_response.json similarity index 100% rename from ui/src/test/resources/error_tmc_keys_response.json rename to transfermethodrepository/src/test/resources/error_tmc_keys_response.json diff --git a/ui/src/test/resources/successful_tmc_fields_bank_account_response.json b/transfermethodrepository/src/test/resources/successful_tmc_fields_bank_account_response.json similarity index 100% rename from ui/src/test/resources/successful_tmc_fields_bank_account_response.json rename to transfermethodrepository/src/test/resources/successful_tmc_fields_bank_account_response.json diff --git a/ui/src/test/resources/successful_tmc_keys_response.json b/transfermethodrepository/src/test/resources/successful_tmc_keys_response.json similarity index 100% rename from ui/src/test/resources/successful_tmc_keys_response.json rename to transfermethodrepository/src/test/resources/successful_tmc_keys_response.json diff --git a/ui/.gitignore b/transfermethodui/.gitignore similarity index 100% rename from ui/.gitignore rename to transfermethodui/.gitignore diff --git a/transfermethodui/build.gradle b/transfermethodui/build.gradle new file mode 100644 index 000000000..fe72e3da1 --- /dev/null +++ b/transfermethodui/build.gradle @@ -0,0 +1,29 @@ +apply from: "$rootProject.projectDir/android-library.gradle" +description = 'Hyperwallet Transfer Method UI SDK for Android to integrate with the Hyperwallet Platform' +project.ext { + mavenName = 'Hyperwallet Android Transfer Method UI SDK' +} +apply from: "$rootProject.projectDir/publish.gradle" + +dependencies { + + implementation "androidx.appcompat:appcompat:$appcompatVersion" + implementation "androidx.constraintlayout:constraintlayout:$constraintlayoutVersion" + implementation "androidx.legacy:legacy-support-v4:$legacySupportV4Version" + implementation "androidx.recyclerview:recyclerview:$recycleViewVersion" + + implementation project(':commonui') + implementation project(":userrepository") + implementation project(":transfermethodrepository") + + + androidTestImplementation "androidx.test:rules:$testRulesVersion" + androidTestImplementation "androidx.test.espresso:espresso-contrib:$espressoVersion" + androidTestImplementation "androidx.test.espresso:espresso-intents:$espressoVersion" + androidTestImplementation "com.squareup.okhttp3:mockwebserver:$mockServerVersion" + androidTestImplementation "com.squareup.leakcanary:leakcanary-android-instrumentation:$leakcanaryVersion" + androidTestImplementation "com.squareup.leakcanary:leakcanary-support-fragment:$leakcanaryVersion" + + testImplementation "org.robolectric:robolectric:$robolectricVersion" + testImplementation "com.squareup.okhttp3:mockwebserver:$mockWebServerVersion" +} \ No newline at end of file diff --git a/ui/config/jacoco-settings.gradle b/transfermethodui/config/jacoco-settings.gradle similarity index 79% rename from ui/config/jacoco-settings.gradle rename to transfermethodui/config/jacoco-settings.gradle index 9cb13e331..725c470eb 100644 --- a/ui/config/jacoco-settings.gradle +++ b/transfermethodui/config/jacoco-settings.gradle @@ -21,13 +21,13 @@ android { } def fileFilter = ['**/BuildConfig.*', - '**/com/hyperwallet/android/ui/HyperwalletUi.*', - '**/com/hyperwallet/android/ui/**/*Activity*.*', - '**/com/hyperwallet/android/ui/**/*Fragment*.*', - '**/com/hyperwallet/android/ui/transfermethod/TransferMethodSelectionItem.*', - '**/com/hyperwallet/android/ui/transfermethod/TransferMethodUtils.*', - '**/com/hyperwallet/android/ui/view/HorizontalDividerItemDecorator.*', - '**/com/hyperwallet/android/ui/view/widget/*' + '**/com/hyperwallet/android/ui/transfermethod/HyperwalletTransferMethodUi.*', + '**/com/hyperwallet/android/ui/transfermethod/**/*Activity*.*', + '**/com/hyperwallet/android/ui/transfermethod/**/*Fragment*.*', + '**/com/hyperwallet/android/ui/transfermethod/view/TransferMethodSelectionItem.*', + '**/com/hyperwallet/android/ui/transfermethod/view/TransferMethodUtils.*', + '**/com/hyperwallet/android/ui/transfermethod/view/HorizontalDividerItemDecorator.*', + '**/com/hyperwallet/android/ui/transfermethod/view/widget/*' ] def debugClassPaths = [ '**/intermediates/javac/debug/*/classes/**' diff --git a/ui/config/lint.xml b/transfermethodui/config/lint.xml similarity index 100% rename from ui/config/lint.xml rename to transfermethodui/config/lint.xml diff --git a/transfermethodui/proguard-rules.pro b/transfermethodui/proguard-rules.pro new file mode 100644 index 000000000..f1b424510 --- /dev/null +++ b/transfermethodui/proguard-rules.pro @@ -0,0 +1,21 @@ +# Add project specific ProGuard rules here. +# You can control the set of applied configuration files using the +# proguardFiles setting in build.gradle. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# If your project uses WebView with JS, uncomment the following +# and specify the fully qualified class name to the JavaScript interface +# class: +#-keepclassmembers class fqcn.of.javascript.interface.for.webview { +# public *; +#} + +# Uncomment this to preserve the line number information for +# debugging stack traces. +#-keepattributes SourceFile,LineNumberTable + +# If you keep the line number information, uncomment this to +# hide the original source file name. +#-renamesourcefileattribute SourceFile diff --git a/ui/src/androidTest/AndroidManifest.xml b/transfermethodui/src/androidTest/AndroidManifest.xml similarity index 62% rename from ui/src/androidTest/AndroidManifest.xml rename to transfermethodui/src/androidTest/AndroidManifest.xml index 138dc247d..e1bac67e4 100644 --- a/ui/src/androidTest/AndroidManifest.xml +++ b/transfermethodui/src/androidTest/AndroidManifest.xml @@ -2,7 +2,7 @@ - + diff --git a/ui/src/androidTest/java/com/hyperwallet/android/ui/transfermethod/AddTransferMethodTest.java b/transfermethodui/src/androidTest/java/com/hyperwallet/android/ui/transfermethod/AddTransferMethodTest.java similarity index 94% rename from ui/src/androidTest/java/com/hyperwallet/android/ui/transfermethod/AddTransferMethodTest.java rename to transfermethodui/src/androidTest/java/com/hyperwallet/android/ui/transfermethod/AddTransferMethodTest.java index 18989446a..243350ad1 100644 --- a/ui/src/androidTest/java/com/hyperwallet/android/ui/transfermethod/AddTransferMethodTest.java +++ b/transfermethodui/src/androidTest/java/com/hyperwallet/android/ui/transfermethod/AddTransferMethodTest.java @@ -22,7 +22,7 @@ import static java.net.HttpURLConnection.HTTP_OK; import static com.hyperwallet.android.ui.common.view.error.DefaultErrorDialogFragment.RESULT_ERROR; -import static com.hyperwallet.android.ui.util.EspressoUtils.nestedScrollTo; +import static com.hyperwallet.android.ui.transfermethod.util.EspressoUtils.nestedScrollTo; import android.app.Instrumentation; import android.content.Intent; @@ -36,12 +36,13 @@ import com.hyperwallet.android.Hyperwallet; import com.hyperwallet.android.ui.R; -import com.hyperwallet.android.ui.common.util.EspressoIdlingResource; +import com.hyperwallet.android.ui.common.repository.EspressoIdlingResource; import com.hyperwallet.android.ui.common.view.error.DefaultErrorDialogFragment; -import com.hyperwallet.android.ui.repository.RepositoryFactory; -import com.hyperwallet.android.ui.rule.HyperwalletExternalResourceManager; -import com.hyperwallet.android.ui.rule.HyperwalletMockWebServer; -import com.hyperwallet.android.ui.util.TestAuthenticationProvider; +import com.hyperwallet.android.ui.transfermethod.repository.TransferMethodRepositoryFactory; +import com.hyperwallet.android.ui.transfermethod.rule.HyperwalletExternalResourceManager; +import com.hyperwallet.android.ui.transfermethod.rule.HyperwalletMockWebServer; +import com.hyperwallet.android.ui.transfermethod.util.TestAuthenticationProvider; +import com.hyperwallet.android.ui.transfermethod.view.AddTransferMethodActivity; import org.junit.After; import org.junit.Before; @@ -87,7 +88,7 @@ public void setup() { @After public void cleanup() { - RepositoryFactory.clearInstance(); + TransferMethodRepositoryFactory.clearInstance(); } @Before diff --git a/ui/src/androidTest/java/com/hyperwallet/android/ui/transfermethod/BankAccountTest.java b/transfermethodui/src/androidTest/java/com/hyperwallet/android/ui/transfermethod/BankAccountTest.java similarity index 95% rename from ui/src/androidTest/java/com/hyperwallet/android/ui/transfermethod/BankAccountTest.java rename to transfermethodui/src/androidTest/java/com/hyperwallet/android/ui/transfermethod/BankAccountTest.java index 4ac416f78..414521218 100644 --- a/ui/src/androidTest/java/com/hyperwallet/android/ui/transfermethod/BankAccountTest.java +++ b/transfermethodui/src/androidTest/java/com/hyperwallet/android/ui/transfermethod/BankAccountTest.java @@ -24,11 +24,11 @@ import static java.util.concurrent.TimeUnit.SECONDS; import static com.hyperwallet.android.model.transfermethod.HyperwalletBankAccount.Purpose.SAVINGS; -import static com.hyperwallet.android.ui.util.EspressoUtils.hasEmptyText; -import static com.hyperwallet.android.ui.util.EspressoUtils.hasErrorText; -import static com.hyperwallet.android.ui.util.EspressoUtils.hasNoErrorText; -import static com.hyperwallet.android.ui.util.EspressoUtils.nestedScrollTo; -import static com.hyperwallet.android.ui.util.EspressoUtils.withHint; +import static com.hyperwallet.android.ui.transfermethod.util.EspressoUtils.hasEmptyText; +import static com.hyperwallet.android.ui.transfermethod.util.EspressoUtils.hasErrorText; +import static com.hyperwallet.android.ui.transfermethod.util.EspressoUtils.hasNoErrorText; +import static com.hyperwallet.android.ui.transfermethod.util.EspressoUtils.nestedScrollTo; +import static com.hyperwallet.android.ui.transfermethod.util.EspressoUtils.withHint; import android.app.Activity; import android.content.BroadcastReceiver; @@ -47,12 +47,13 @@ import com.hyperwallet.android.Hyperwallet; import com.hyperwallet.android.model.transfermethod.HyperwalletTransferMethod; import com.hyperwallet.android.ui.R; -import com.hyperwallet.android.ui.common.util.EspressoIdlingResource; -import com.hyperwallet.android.ui.repository.RepositoryFactory; -import com.hyperwallet.android.ui.rule.HyperwalletExternalResourceManager; -import com.hyperwallet.android.ui.rule.HyperwalletMockWebServer; -import com.hyperwallet.android.ui.util.RecyclerViewCountAssertion; -import com.hyperwallet.android.ui.util.TestAuthenticationProvider; +import com.hyperwallet.android.ui.common.repository.EspressoIdlingResource; +import com.hyperwallet.android.ui.transfermethod.repository.TransferMethodRepositoryFactory; +import com.hyperwallet.android.ui.transfermethod.rule.HyperwalletExternalResourceManager; +import com.hyperwallet.android.ui.transfermethod.rule.HyperwalletMockWebServer; +import com.hyperwallet.android.ui.transfermethod.util.RecyclerViewCountAssertion; +import com.hyperwallet.android.ui.transfermethod.util.TestAuthenticationProvider; +import com.hyperwallet.android.ui.transfermethod.view.AddTransferMethodActivity; import org.junit.After; import org.junit.Before; @@ -101,7 +102,7 @@ public void setup() { @After public void cleanup() { - RepositoryFactory.clearInstance(); + TransferMethodRepositoryFactory.clearInstance(); } @Before diff --git a/ui/src/androidTest/java/com/hyperwallet/android/ui/transfermethod/BankCardTest.java b/transfermethodui/src/androidTest/java/com/hyperwallet/android/ui/transfermethod/BankCardTest.java similarity index 93% rename from ui/src/androidTest/java/com/hyperwallet/android/ui/transfermethod/BankCardTest.java rename to transfermethodui/src/androidTest/java/com/hyperwallet/android/ui/transfermethod/BankCardTest.java index 44ea7393f..508c397f8 100644 --- a/ui/src/androidTest/java/com/hyperwallet/android/ui/transfermethod/BankCardTest.java +++ b/transfermethodui/src/androidTest/java/com/hyperwallet/android/ui/transfermethod/BankCardTest.java @@ -22,10 +22,10 @@ import static java.net.HttpURLConnection.HTTP_OK; import static java.util.concurrent.TimeUnit.SECONDS; -import static com.hyperwallet.android.ui.util.EspressoUtils.hasEmptyText; -import static com.hyperwallet.android.ui.util.EspressoUtils.hasErrorText; -import static com.hyperwallet.android.ui.util.EspressoUtils.nestedScrollTo; -import static com.hyperwallet.android.ui.util.EspressoUtils.withHint; +import static com.hyperwallet.android.ui.transfermethod.util.EspressoUtils.hasEmptyText; +import static com.hyperwallet.android.ui.transfermethod.util.EspressoUtils.hasErrorText; +import static com.hyperwallet.android.ui.transfermethod.util.EspressoUtils.nestedScrollTo; +import static com.hyperwallet.android.ui.transfermethod.util.EspressoUtils.withHint; import android.app.Activity; import android.content.BroadcastReceiver; @@ -44,11 +44,12 @@ import com.hyperwallet.android.Hyperwallet; import com.hyperwallet.android.model.transfermethod.HyperwalletTransferMethod; import com.hyperwallet.android.ui.R; -import com.hyperwallet.android.ui.common.util.EspressoIdlingResource; -import com.hyperwallet.android.ui.repository.RepositoryFactory; -import com.hyperwallet.android.ui.rule.HyperwalletExternalResourceManager; -import com.hyperwallet.android.ui.rule.HyperwalletMockWebServer; -import com.hyperwallet.android.ui.util.TestAuthenticationProvider; +import com.hyperwallet.android.ui.common.repository.EspressoIdlingResource; +import com.hyperwallet.android.ui.transfermethod.repository.TransferMethodRepositoryFactory; +import com.hyperwallet.android.ui.transfermethod.rule.HyperwalletExternalResourceManager; +import com.hyperwallet.android.ui.transfermethod.rule.HyperwalletMockWebServer; +import com.hyperwallet.android.ui.transfermethod.util.TestAuthenticationProvider; +import com.hyperwallet.android.ui.transfermethod.view.AddTransferMethodActivity; import org.junit.After; import org.junit.Before; @@ -105,7 +106,7 @@ public void setup() { @After public void cleanup() { - RepositoryFactory.clearInstance(); + TransferMethodRepositoryFactory.clearInstance(); } @Before diff --git a/ui/src/androidTest/java/com/hyperwallet/android/ui/HyperwalletInstrumentedTestApplication.java b/transfermethodui/src/androidTest/java/com/hyperwallet/android/ui/transfermethod/HyperwalletInstrumentedTestApplication.java similarity index 93% rename from ui/src/androidTest/java/com/hyperwallet/android/ui/HyperwalletInstrumentedTestApplication.java rename to transfermethodui/src/androidTest/java/com/hyperwallet/android/ui/transfermethod/HyperwalletInstrumentedTestApplication.java index 1e77c01b7..5d3be31c5 100644 --- a/ui/src/androidTest/java/com/hyperwallet/android/ui/HyperwalletInstrumentedTestApplication.java +++ b/transfermethodui/src/androidTest/java/com/hyperwallet/android/ui/transfermethod/HyperwalletInstrumentedTestApplication.java @@ -1,4 +1,4 @@ -package com.hyperwallet.android.ui; +package com.hyperwallet.android.ui.transfermethod; import android.app.Application; diff --git a/ui/src/androidTest/java/com/hyperwallet/android/ui/transfermethod/ListTransferMethodTest.java b/transfermethodui/src/androidTest/java/com/hyperwallet/android/ui/transfermethod/ListTransferMethodTest.java similarity index 97% rename from ui/src/androidTest/java/com/hyperwallet/android/ui/transfermethod/ListTransferMethodTest.java rename to transfermethodui/src/androidTest/java/com/hyperwallet/android/ui/transfermethod/ListTransferMethodTest.java index 01e3e1d29..d53840652 100644 --- a/ui/src/androidTest/java/com/hyperwallet/android/ui/transfermethod/ListTransferMethodTest.java +++ b/transfermethodui/src/androidTest/java/com/hyperwallet/android/ui/transfermethod/ListTransferMethodTest.java @@ -21,8 +21,8 @@ import static java.util.concurrent.TimeUnit.SECONDS; import static com.hyperwallet.android.model.HyperwalletStatusTransition.StatusDefinition.DE_ACTIVATED; -import static com.hyperwallet.android.ui.util.EspressoUtils.atPosition; -import static com.hyperwallet.android.ui.util.EspressoUtils.withDrawable; +import static com.hyperwallet.android.ui.transfermethod.util.EspressoUtils.atPosition; +import static com.hyperwallet.android.ui.transfermethod.util.EspressoUtils.withDrawable; import android.content.BroadcastReceiver; import android.content.Context; @@ -40,11 +40,12 @@ import com.hyperwallet.android.Hyperwallet; import com.hyperwallet.android.model.HyperwalletStatusTransition; import com.hyperwallet.android.ui.R; -import com.hyperwallet.android.ui.repository.RepositoryFactory; -import com.hyperwallet.android.ui.rule.HyperwalletExternalResourceManager; -import com.hyperwallet.android.ui.rule.HyperwalletMockWebServer; -import com.hyperwallet.android.ui.util.RecyclerViewCountAssertion; -import com.hyperwallet.android.ui.util.TestAuthenticationProvider; +import com.hyperwallet.android.ui.transfermethod.repository.TransferMethodRepositoryFactory; +import com.hyperwallet.android.ui.transfermethod.rule.HyperwalletExternalResourceManager; +import com.hyperwallet.android.ui.transfermethod.rule.HyperwalletMockWebServer; +import com.hyperwallet.android.ui.transfermethod.util.RecyclerViewCountAssertion; +import com.hyperwallet.android.ui.transfermethod.util.TestAuthenticationProvider; +import com.hyperwallet.android.ui.transfermethod.view.ListTransferMethodActivity; import org.hamcrest.Matchers; import org.junit.After; @@ -77,7 +78,7 @@ public void setup() { @After public void cleanup() { - RepositoryFactory.clearInstance(); + TransferMethodRepositoryFactory.clearInstance(); } @Test diff --git a/ui/src/androidTest/java/com/hyperwallet/android/ui/transfermethod/PayPalTest.java b/transfermethodui/src/androidTest/java/com/hyperwallet/android/ui/transfermethod/PayPalTest.java similarity index 91% rename from ui/src/androidTest/java/com/hyperwallet/android/ui/transfermethod/PayPalTest.java rename to transfermethodui/src/androidTest/java/com/hyperwallet/android/ui/transfermethod/PayPalTest.java index ebf34101b..f61bec357 100644 --- a/ui/src/androidTest/java/com/hyperwallet/android/ui/transfermethod/PayPalTest.java +++ b/transfermethodui/src/androidTest/java/com/hyperwallet/android/ui/transfermethod/PayPalTest.java @@ -24,10 +24,10 @@ import static java.net.HttpURLConnection.HTTP_OK; import static java.util.concurrent.TimeUnit.SECONDS; -import static com.hyperwallet.android.ui.util.EspressoUtils.hasEmptyText; -import static com.hyperwallet.android.ui.util.EspressoUtils.hasErrorText; -import static com.hyperwallet.android.ui.util.EspressoUtils.nestedScrollTo; -import static com.hyperwallet.android.ui.util.EspressoUtils.withHint; +import static com.hyperwallet.android.ui.transfermethod.util.EspressoUtils.hasEmptyText; +import static com.hyperwallet.android.ui.transfermethod.util.EspressoUtils.hasErrorText; +import static com.hyperwallet.android.ui.transfermethod.util.EspressoUtils.nestedScrollTo; +import static com.hyperwallet.android.ui.transfermethod.util.EspressoUtils.withHint; import android.app.Activity; import android.content.BroadcastReceiver; @@ -46,11 +46,12 @@ import com.hyperwallet.android.Hyperwallet; import com.hyperwallet.android.model.transfermethod.HyperwalletTransferMethod; import com.hyperwallet.android.ui.R; -import com.hyperwallet.android.ui.common.util.EspressoIdlingResource; -import com.hyperwallet.android.ui.repository.RepositoryFactory; -import com.hyperwallet.android.ui.rule.HyperwalletExternalResourceManager; -import com.hyperwallet.android.ui.rule.HyperwalletMockWebServer; -import com.hyperwallet.android.ui.util.TestAuthenticationProvider; +import com.hyperwallet.android.ui.common.repository.EspressoIdlingResource; +import com.hyperwallet.android.ui.transfermethod.repository.TransferMethodRepositoryFactory; +import com.hyperwallet.android.ui.transfermethod.rule.HyperwalletExternalResourceManager; +import com.hyperwallet.android.ui.transfermethod.rule.HyperwalletMockWebServer; +import com.hyperwallet.android.ui.transfermethod.util.TestAuthenticationProvider; +import com.hyperwallet.android.ui.transfermethod.view.AddTransferMethodActivity; import org.junit.After; import org.junit.Before; @@ -95,7 +96,7 @@ public void setup() { @After public void cleanup() { - RepositoryFactory.clearInstance(); + TransferMethodRepositoryFactory.clearInstance(); } @Before diff --git a/ui/src/androidTest/java/com/hyperwallet/android/ui/transfermethod/SelectTransferMethodTest.java b/transfermethodui/src/androidTest/java/com/hyperwallet/android/ui/transfermethod/SelectTransferMethodTest.java similarity index 94% rename from ui/src/androidTest/java/com/hyperwallet/android/ui/transfermethod/SelectTransferMethodTest.java rename to transfermethodui/src/androidTest/java/com/hyperwallet/android/ui/transfermethod/SelectTransferMethodTest.java index 5c3ace145..68acebad9 100644 --- a/ui/src/androidTest/java/com/hyperwallet/android/ui/transfermethod/SelectTransferMethodTest.java +++ b/transfermethodui/src/androidTest/java/com/hyperwallet/android/ui/transfermethod/SelectTransferMethodTest.java @@ -25,12 +25,12 @@ import static com.hyperwallet.android.model.transfermethod.HyperwalletTransferMethod.TransferMethodTypes.BANK_CARD; import static com.hyperwallet.android.model.user.HyperwalletUser.ProfileTypes.BUSINESS; import static com.hyperwallet.android.model.user.HyperwalletUser.ProfileTypes.INDIVIDUAL; -import static com.hyperwallet.android.ui.transfermethod.AddTransferMethodActivity.EXTRA_TRANSFER_METHOD_COUNTRY; -import static com.hyperwallet.android.ui.transfermethod.AddTransferMethodActivity.EXTRA_TRANSFER_METHOD_CURRENCY; -import static com.hyperwallet.android.ui.transfermethod.AddTransferMethodActivity.EXTRA_TRANSFER_METHOD_PROFILE_TYPE; -import static com.hyperwallet.android.ui.transfermethod.AddTransferMethodActivity.EXTRA_TRANSFER_METHOD_TYPE; -import static com.hyperwallet.android.ui.util.EspressoUtils.atPosition; -import static com.hyperwallet.android.ui.util.EspressoUtils.withDrawable; +import static com.hyperwallet.android.ui.transfermethod.util.EspressoUtils.atPosition; +import static com.hyperwallet.android.ui.transfermethod.util.EspressoUtils.withDrawable; +import static com.hyperwallet.android.ui.transfermethod.view.AddTransferMethodActivity.EXTRA_TRANSFER_METHOD_COUNTRY; +import static com.hyperwallet.android.ui.transfermethod.view.AddTransferMethodActivity.EXTRA_TRANSFER_METHOD_CURRENCY; +import static com.hyperwallet.android.ui.transfermethod.view.AddTransferMethodActivity.EXTRA_TRANSFER_METHOD_PROFILE_TYPE; +import static com.hyperwallet.android.ui.transfermethod.view.AddTransferMethodActivity.EXTRA_TRANSFER_METHOD_TYPE; import android.widget.TextView; @@ -43,12 +43,14 @@ import com.hyperwallet.android.Hyperwallet; import com.hyperwallet.android.ui.R; -import com.hyperwallet.android.ui.common.util.EspressoIdlingResource; -import com.hyperwallet.android.ui.repository.RepositoryFactory; -import com.hyperwallet.android.ui.rule.HyperwalletExternalResourceManager; -import com.hyperwallet.android.ui.rule.HyperwalletMockWebServer; -import com.hyperwallet.android.ui.util.RecyclerViewCountAssertion; -import com.hyperwallet.android.ui.util.TestAuthenticationProvider; +import com.hyperwallet.android.ui.common.repository.EspressoIdlingResource; +import com.hyperwallet.android.ui.transfermethod.repository.TransferMethodRepositoryFactory; +import com.hyperwallet.android.ui.transfermethod.rule.HyperwalletExternalResourceManager; +import com.hyperwallet.android.ui.transfermethod.rule.HyperwalletMockWebServer; +import com.hyperwallet.android.ui.transfermethod.util.RecyclerViewCountAssertion; +import com.hyperwallet.android.ui.transfermethod.util.TestAuthenticationProvider; +import com.hyperwallet.android.ui.transfermethod.view.SelectTransferMethodActivity; +import com.hyperwallet.android.ui.user.repository.UserRepositoryFactory; import org.junit.After; import org.junit.Before; @@ -81,7 +83,8 @@ public void setup() { @After public void cleanup() { - RepositoryFactory.clearInstance(); + TransferMethodRepositoryFactory.clearInstance(); + UserRepositoryFactory.clearInstance(); } @Before diff --git a/transfermethodui/src/androidTest/java/com/hyperwallet/android/ui/transfermethod/rule/HyperwalletExternalResourceManager.java b/transfermethodui/src/androidTest/java/com/hyperwallet/android/ui/transfermethod/rule/HyperwalletExternalResourceManager.java new file mode 100644 index 000000000..68e288a5b --- /dev/null +++ b/transfermethodui/src/androidTest/java/com/hyperwallet/android/ui/transfermethod/rule/HyperwalletExternalResourceManager.java @@ -0,0 +1,73 @@ +package com.hyperwallet.android.ui.transfermethod.rule; + +import org.junit.rules.TestWatcher; +import org.junit.runner.Description; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.io.StringWriter; +import java.io.Writer; +import java.net.URL; +import java.util.logging.Level; +import java.util.logging.Logger; + +public class HyperwalletExternalResourceManager extends TestWatcher { + + private static final String EMPTY = ""; + private ClassLoader classLoader; + private Logger logger; + + @Override + protected void starting(Description description) { + super.starting(description); + classLoader = description.getTestClass().getClassLoader(); + logger = Logger.getLogger(description.getTestClass().getName()); + } + + public String getResourceContent(final String resourceName) { + if (resourceName == null) { + throw new IllegalArgumentException("Parameter resourceName cannot be null"); + } + + return getContent(resourceName); + } + + private String getContent(final String resourceName) { + + URL resource = classLoader.getResource(resourceName); + InputStream inputStream = null; + Writer writer = new StringWriter(); + String resourceContent = EMPTY; + if (resource != null) { + try { + inputStream = resource.openStream(); + BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream, "UTF-8")); + String line = reader.readLine(); + while (line != null) { + writer.write(line); + line = reader.readLine(); + } + resourceContent = writer.toString(); + + } catch (Exception e) { + logger.log(Level.WARNING, "There was an error loading an external resource", e); + } finally { + try { + if (inputStream != null) { + inputStream.close(); + } + } catch (Exception e) { + logger.log(Level.SEVERE, "There was an error closing input stream", e); + } + try { + writer.close(); + } catch (IOException e) { + logger.log(Level.SEVERE, "There was an error closing writer", e); + } + } + } + return resourceContent; + } +} diff --git a/ui/src/androidTest/java/com/hyperwallet/android/ui/rule/HyperwalletMockWebServer.java b/transfermethodui/src/androidTest/java/com/hyperwallet/android/ui/transfermethod/rule/HyperwalletMockWebServer.java similarity index 98% rename from ui/src/androidTest/java/com/hyperwallet/android/ui/rule/HyperwalletMockWebServer.java rename to transfermethodui/src/androidTest/java/com/hyperwallet/android/ui/transfermethod/rule/HyperwalletMockWebServer.java index fd37ac735..21cd2ae99 100644 --- a/ui/src/androidTest/java/com/hyperwallet/android/ui/rule/HyperwalletMockWebServer.java +++ b/transfermethodui/src/androidTest/java/com/hyperwallet/android/ui/transfermethod/rule/HyperwalletMockWebServer.java @@ -1,4 +1,4 @@ -package com.hyperwallet.android.ui.rule; +package com.hyperwallet.android.ui.transfermethod.rule; import org.junit.rules.TestWatcher; import org.junit.runner.Description; diff --git a/ui/src/androidTest/java/com/hyperwallet/android/ui/util/EspressoUtils.java b/transfermethodui/src/androidTest/java/com/hyperwallet/android/ui/transfermethod/util/EspressoUtils.java similarity index 99% rename from ui/src/androidTest/java/com/hyperwallet/android/ui/util/EspressoUtils.java rename to transfermethodui/src/androidTest/java/com/hyperwallet/android/ui/transfermethod/util/EspressoUtils.java index 72891a832..fbd325c31 100644 --- a/ui/src/androidTest/java/com/hyperwallet/android/ui/util/EspressoUtils.java +++ b/transfermethodui/src/androidTest/java/com/hyperwallet/android/ui/transfermethod/util/EspressoUtils.java @@ -1,4 +1,4 @@ -package com.hyperwallet.android.ui.util; +package com.hyperwallet.android.ui.transfermethod.util; import android.graphics.Bitmap; import android.graphics.Canvas; diff --git a/ui/src/androidTest/java/com/hyperwallet/android/ui/util/NestedScrollToAction.java b/transfermethodui/src/androidTest/java/com/hyperwallet/android/ui/transfermethod/util/NestedScrollToAction.java similarity index 95% rename from ui/src/androidTest/java/com/hyperwallet/android/ui/util/NestedScrollToAction.java rename to transfermethodui/src/androidTest/java/com/hyperwallet/android/ui/transfermethod/util/NestedScrollToAction.java index 54f08aed7..63a6803f7 100644 --- a/ui/src/androidTest/java/com/hyperwallet/android/ui/util/NestedScrollToAction.java +++ b/transfermethodui/src/androidTest/java/com/hyperwallet/android/ui/transfermethod/util/NestedScrollToAction.java @@ -1,4 +1,4 @@ -package com.hyperwallet.android.ui.util; +package com.hyperwallet.android.ui.transfermethod.util; import static androidx.test.espresso.matcher.ViewMatchers.isAssignableFrom; import static androidx.test.espresso.matcher.ViewMatchers.isDescendantOfA; diff --git a/ui/src/androidTest/java/com/hyperwallet/android/ui/util/RecyclerViewCountAssertion.java b/transfermethodui/src/androidTest/java/com/hyperwallet/android/ui/transfermethod/util/RecyclerViewCountAssertion.java similarity index 93% rename from ui/src/androidTest/java/com/hyperwallet/android/ui/util/RecyclerViewCountAssertion.java rename to transfermethodui/src/androidTest/java/com/hyperwallet/android/ui/transfermethod/util/RecyclerViewCountAssertion.java index e3c7945fd..1c9ec2479 100644 --- a/ui/src/androidTest/java/com/hyperwallet/android/ui/util/RecyclerViewCountAssertion.java +++ b/transfermethodui/src/androidTest/java/com/hyperwallet/android/ui/transfermethod/util/RecyclerViewCountAssertion.java @@ -1,4 +1,4 @@ -package com.hyperwallet.android.ui.util; +package com.hyperwallet.android.ui.transfermethod.util; import static org.hamcrest.CoreMatchers.is; import static org.hamcrest.MatcherAssert.assertThat; diff --git a/ui/src/androidTest/java/com/hyperwallet/android/ui/util/TestAuthenticationProvider.java b/transfermethodui/src/androidTest/java/com/hyperwallet/android/ui/transfermethod/util/TestAuthenticationProvider.java similarity index 96% rename from ui/src/androidTest/java/com/hyperwallet/android/ui/util/TestAuthenticationProvider.java rename to transfermethodui/src/androidTest/java/com/hyperwallet/android/ui/transfermethod/util/TestAuthenticationProvider.java index 1f8350f8f..739423e40 100644 --- a/ui/src/androidTest/java/com/hyperwallet/android/ui/util/TestAuthenticationProvider.java +++ b/transfermethodui/src/androidTest/java/com/hyperwallet/android/ui/transfermethod/util/TestAuthenticationProvider.java @@ -1,4 +1,4 @@ -package com.hyperwallet.android.ui.util; +package com.hyperwallet.android.ui.transfermethod.util; import com.hyperwallet.android.HyperwalletAuthenticationTokenListener; import com.hyperwallet.android.HyperwalletAuthenticationTokenProvider; diff --git a/ui/src/main/AndroidManifest.xml b/transfermethodui/src/main/AndroidManifest.xml similarity index 91% rename from ui/src/main/AndroidManifest.xml rename to transfermethodui/src/main/AndroidManifest.xml index 6888120a5..b7c92a689 100644 --- a/ui/src/main/AndroidManifest.xml +++ b/transfermethodui/src/main/AndroidManifest.xml @@ -7,13 +7,13 @@ diff --git a/ui/src/main/java/com/hyperwallet/android/ui/HyperwalletLocalBroadcast.java b/transfermethodui/src/main/java/com/hyperwallet/android/ui/transfermethod/HyperwalletTransferMethodLocalBroadcast.java similarity index 86% rename from ui/src/main/java/com/hyperwallet/android/ui/HyperwalletLocalBroadcast.java rename to transfermethodui/src/main/java/com/hyperwallet/android/ui/transfermethod/HyperwalletTransferMethodLocalBroadcast.java index 7eed4cec5..e10b351ef 100644 --- a/ui/src/main/java/com/hyperwallet/android/ui/HyperwalletLocalBroadcast.java +++ b/transfermethodui/src/main/java/com/hyperwallet/android/ui/transfermethod/HyperwalletTransferMethodLocalBroadcast.java @@ -14,10 +14,10 @@ * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -package com.hyperwallet.android.ui; +package com.hyperwallet.android.ui.transfermethod; -import static com.hyperwallet.android.ui.HyperwalletLocalBroadcast.HyperwalletLocalBroadcastAction.ACTION_HYPERWALLET_TRANSFER_METHOD_ADDED; -import static com.hyperwallet.android.ui.HyperwalletLocalBroadcast.HyperwalletLocalBroadcastAction.ACTION_HYPERWALLET_TRANSFER_METHOD_DEACTIVATED; +import static com.hyperwallet.android.ui.transfermethod.HyperwalletTransferMethodLocalBroadcast.HyperwalletLocalBroadcastAction.ACTION_HYPERWALLET_TRANSFER_METHOD_ADDED; +import static com.hyperwallet.android.ui.transfermethod.HyperwalletTransferMethodLocalBroadcast.HyperwalletLocalBroadcastAction.ACTION_HYPERWALLET_TRANSFER_METHOD_DEACTIVATED; import android.content.Intent; import android.os.Parcelable; @@ -31,7 +31,7 @@ import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; -public class HyperwalletLocalBroadcast { +public class HyperwalletTransferMethodLocalBroadcast { private static final String HYPERWALLET_LOCAL_BROADCAST_PAYLOAD_KEY = "hyperwallet-local-broadcast-payload"; diff --git a/ui/src/main/java/com/hyperwallet/android/ui/HyperwalletUi.java b/transfermethodui/src/main/java/com/hyperwallet/android/ui/transfermethod/HyperwalletTransferMethodUi.java similarity index 63% rename from ui/src/main/java/com/hyperwallet/android/ui/HyperwalletUi.java rename to transfermethodui/src/main/java/com/hyperwallet/android/ui/transfermethod/HyperwalletTransferMethodUi.java index 21e5ac913..6f3519205 100644 --- a/ui/src/main/java/com/hyperwallet/android/ui/HyperwalletUi.java +++ b/transfermethodui/src/main/java/com/hyperwallet/android/ui/transfermethod/HyperwalletTransferMethodUi.java @@ -1,4 +1,3 @@ - /* * Copyright 2018 Hyperwallet * @@ -16,14 +15,12 @@ * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS * IN THE SOFTWARE. */ +package com.hyperwallet.android.ui.transfermethod; -package com.hyperwallet.android.ui; - -import static com.hyperwallet.android.ui.receipt.view.ListPrepaidCardReceiptActivity.EXTRA_PREPAID_CARD_TOKEN; -import static com.hyperwallet.android.ui.transfermethod.AddTransferMethodActivity.EXTRA_TRANSFER_METHOD_COUNTRY; -import static com.hyperwallet.android.ui.transfermethod.AddTransferMethodActivity.EXTRA_TRANSFER_METHOD_CURRENCY; -import static com.hyperwallet.android.ui.transfermethod.AddTransferMethodActivity.EXTRA_TRANSFER_METHOD_PROFILE_TYPE; -import static com.hyperwallet.android.ui.transfermethod.AddTransferMethodActivity.EXTRA_TRANSFER_METHOD_TYPE; +import static com.hyperwallet.android.ui.transfermethod.view.AddTransferMethodActivity.EXTRA_TRANSFER_METHOD_COUNTRY; +import static com.hyperwallet.android.ui.transfermethod.view.AddTransferMethodActivity.EXTRA_TRANSFER_METHOD_CURRENCY; +import static com.hyperwallet.android.ui.transfermethod.view.AddTransferMethodActivity.EXTRA_TRANSFER_METHOD_PROFILE_TYPE; +import static com.hyperwallet.android.ui.transfermethod.view.AddTransferMethodActivity.EXTRA_TRANSFER_METHOD_TYPE; import android.content.Context; import android.content.Intent; @@ -32,32 +29,30 @@ import com.hyperwallet.android.Hyperwallet; import com.hyperwallet.android.HyperwalletAuthenticationTokenProvider; -import com.hyperwallet.android.ui.receipt.view.ListPrepaidCardReceiptActivity; -import com.hyperwallet.android.ui.receipt.view.ListUserReceiptActivity; -import com.hyperwallet.android.ui.transfermethod.AddTransferMethodActivity; -import com.hyperwallet.android.ui.transfermethod.ListTransferMethodActivity; -import com.hyperwallet.android.ui.transfermethod.SelectTransferMethodActivity; +import com.hyperwallet.android.ui.transfermethod.view.AddTransferMethodActivity; +import com.hyperwallet.android.ui.transfermethod.view.ListTransferMethodActivity; +import com.hyperwallet.android.ui.transfermethod.view.SelectTransferMethodActivity; /** * Class responsible for initializing the Hyperwallet UI SDK. It contains methods to interact with the activities and * fragments used to interact with the Hyperwallet platform */ -public final class HyperwalletUi { +public final class HyperwalletTransferMethodUi { - private static HyperwalletUi sInstance; + private static HyperwalletTransferMethodUi sInstance; - private HyperwalletUi() { + private HyperwalletTransferMethodUi() { } /** * @param authenticationTokenProvider An implementation of the {@link HyperwalletAuthenticationTokenProvider} - * @return Returns a newly created HyperwalletUi that can be used to get Intents to launch different + * @return Returns a newly created HyperwalletTransferMethodUi that can be used to get Intents to launch different * activities. */ - public static synchronized HyperwalletUi getInstance( + public static synchronized HyperwalletTransferMethodUi getInstance( @NonNull final HyperwalletAuthenticationTokenProvider authenticationTokenProvider) { if (sInstance == null) { - sInstance = new HyperwalletUi(); + sInstance = new HyperwalletTransferMethodUi(); Hyperwallet.getInstance(authenticationTokenProvider); } return sInstance; @@ -81,30 +76,16 @@ public Intent getIntentSelectTransferMethodActivity(@NonNull final Context conte return new Intent(context, SelectTransferMethodActivity.class); } - /** - * @param context A Context of the application consuming this Intent. - * @return an Intent with the data necessary to launch the {@link ListUserReceiptActivity} - */ - public Intent getIntentListUserReceiptActivity(@NonNull final Context context) { - return new Intent(context, ListUserReceiptActivity.class); - } - - /** - * @param context A Context of the application consuming this Intent. - * @return an Intent with the data necessary to launch the {@link ListPrepaidCardReceiptActivity} - */ - public Intent getIntentListPrepaidCardReceiptActivity(@NonNull final Context context, @NonNull final String token) { - Intent intent = new Intent(context, ListPrepaidCardReceiptActivity.class); - intent.putExtra(EXTRA_PREPAID_CARD_TOKEN, token); - return intent; - } - /** * @param context A Context of the application consuming this Intent. * @param country The transfer method country code. ISO 3166-1 alpha-2 format. * @param currency The transfer method currency code. ISO 4217 format. * @param transferMethodType The type of transfer method. For a complete list of transfer methods, see {@link - * com.hyperwallet.android.model.transfermethod.HyperwalletTransferMethod.TransferMethodTypes} + * + * + * + * + * com.hyperwallet.android.model.transfermethod.HyperwalletTransferMethod.TransferMethodTypes} * @param profileType The type of the account holder profile. For a complete list of options, see * {@link com.hyperwallet.android.model.user.HyperwalletUser.ProfileTypes} * @return an Intent with the data necessary to launch the {@link AddTransferMethodActivity} diff --git a/ui/src/main/java/com/hyperwallet/android/ui/transfermethod/AddTransferMethodActivity.java b/transfermethodui/src/main/java/com/hyperwallet/android/ui/transfermethod/view/AddTransferMethodActivity.java similarity index 97% rename from ui/src/main/java/com/hyperwallet/android/ui/transfermethod/AddTransferMethodActivity.java rename to transfermethodui/src/main/java/com/hyperwallet/android/ui/transfermethod/view/AddTransferMethodActivity.java index 9c1fa1d77..e3ba27b72 100644 --- a/ui/src/main/java/com/hyperwallet/android/ui/transfermethod/AddTransferMethodActivity.java +++ b/transfermethodui/src/main/java/com/hyperwallet/android/ui/transfermethod/view/AddTransferMethodActivity.java @@ -14,7 +14,7 @@ * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -package com.hyperwallet.android.ui.transfermethod; +package com.hyperwallet.android.ui.transfermethod.view; import android.os.Bundle; import android.view.View; @@ -32,8 +32,6 @@ import com.hyperwallet.android.ui.R; import com.hyperwallet.android.ui.common.view.error.DefaultErrorDialogFragment; import com.hyperwallet.android.ui.common.view.error.OnNetworkErrorCallback; -import com.hyperwallet.android.ui.view.WidgetDateDialogFragment; -import com.hyperwallet.android.ui.view.WidgetSelectionDialogFragment; import java.util.List; diff --git a/ui/src/main/java/com/hyperwallet/android/ui/transfermethod/AddTransferMethodContract.java b/transfermethodui/src/main/java/com/hyperwallet/android/ui/transfermethod/view/AddTransferMethodContract.java similarity index 98% rename from ui/src/main/java/com/hyperwallet/android/ui/transfermethod/AddTransferMethodContract.java rename to transfermethodui/src/main/java/com/hyperwallet/android/ui/transfermethod/view/AddTransferMethodContract.java index 959e0a03e..1b7a43fcf 100644 --- a/ui/src/main/java/com/hyperwallet/android/ui/transfermethod/AddTransferMethodContract.java +++ b/transfermethodui/src/main/java/com/hyperwallet/android/ui/transfermethod/view/AddTransferMethodContract.java @@ -14,7 +14,7 @@ * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -package com.hyperwallet.android.ui.transfermethod; +package com.hyperwallet.android.ui.transfermethod.view; import androidx.annotation.NonNull; import androidx.annotation.Nullable; diff --git a/ui/src/main/java/com/hyperwallet/android/ui/transfermethod/AddTransferMethodFragment.java b/transfermethodui/src/main/java/com/hyperwallet/android/ui/transfermethod/view/AddTransferMethodFragment.java similarity index 96% rename from ui/src/main/java/com/hyperwallet/android/ui/transfermethod/AddTransferMethodFragment.java rename to transfermethodui/src/main/java/com/hyperwallet/android/ui/transfermethod/view/AddTransferMethodFragment.java index 447624e31..6a9367128 100644 --- a/ui/src/main/java/com/hyperwallet/android/ui/transfermethod/AddTransferMethodFragment.java +++ b/transfermethodui/src/main/java/com/hyperwallet/android/ui/transfermethod/view/AddTransferMethodFragment.java @@ -14,7 +14,7 @@ * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -package com.hyperwallet.android.ui.transfermethod; +package com.hyperwallet.android.ui.transfermethod.view; import static com.hyperwallet.android.model.transfermethod.HyperwalletTransferMethod.TransferMethodFields.PROFILE_TYPE; import static com.hyperwallet.android.model.transfermethod.HyperwalletTransferMethod.TransferMethodFields.TRANSFER_METHOD_COUNTRY; @@ -55,18 +55,16 @@ import com.hyperwallet.android.model.transfermethod.HyperwalletBankCard; import com.hyperwallet.android.model.transfermethod.HyperwalletTransferMethod; import com.hyperwallet.android.model.transfermethod.PayPalAccount; -import com.hyperwallet.android.ui.HyperwalletLocalBroadcast; import com.hyperwallet.android.ui.R; -import com.hyperwallet.android.ui.repository.RepositoryFactory; -import com.hyperwallet.android.ui.view.WidgetDateDialogFragment; -import com.hyperwallet.android.ui.view.WidgetSelectionDialogFragment; -import com.hyperwallet.android.ui.view.widget.AbstractWidget; -import com.hyperwallet.android.ui.view.widget.DateChangedListener; -import com.hyperwallet.android.ui.view.widget.DateUtils; -import com.hyperwallet.android.ui.view.widget.DateWidget; -import com.hyperwallet.android.ui.view.widget.WidgetEventListener; -import com.hyperwallet.android.ui.view.widget.WidgetFactory; -import com.hyperwallet.android.ui.view.widget.WidgetInputState; +import com.hyperwallet.android.ui.transfermethod.HyperwalletTransferMethodLocalBroadcast; +import com.hyperwallet.android.ui.transfermethod.repository.TransferMethodRepositoryFactory; +import com.hyperwallet.android.ui.transfermethod.view.widget.AbstractWidget; +import com.hyperwallet.android.ui.transfermethod.view.widget.DateChangedListener; +import com.hyperwallet.android.ui.transfermethod.view.widget.DateUtils; +import com.hyperwallet.android.ui.transfermethod.view.widget.DateWidget; +import com.hyperwallet.android.ui.transfermethod.view.widget.WidgetEventListener; +import com.hyperwallet.android.ui.transfermethod.view.widget.WidgetFactory; +import com.hyperwallet.android.ui.transfermethod.view.widget.WidgetInputState; import java.util.HashMap; import java.util.List; @@ -84,7 +82,7 @@ public class AddTransferMethodFragment extends Fragment implements WidgetEventLi private static final String ARGUMENT_TRANSFER_METHOD = "ARGUMENT_TRANSFER_METHOD"; private static final String ARGUMENT_WIDGET_STATE_MAP = "ARGUMENT_WIDGET_STATE_MAP"; private static final boolean FORCE_UPDATE = false; - + private final DateUtils mDateUtils = new DateUtils(); private String mCountry; private View mCreateButtonProgressBar; private Button mCreateTransferMethodButton; @@ -100,7 +98,6 @@ public class AddTransferMethodFragment extends Fragment implements WidgetEventLi private HyperwalletTransferMethod mTransferMethod; private String mTransferMethodProfileType; private HashMap mWidgetInputStateHashMap; - private final DateUtils mDateUtils = new DateUtils(); /** * Please do not use this to have instance of AddTransferMethodFragment this is reserved for android framework @@ -202,7 +199,7 @@ public void onClick(View v) { public void onActivityCreated(@Nullable Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); - RepositoryFactory factory = RepositoryFactory.getInstance(); + TransferMethodRepositoryFactory factory = TransferMethodRepositoryFactory.getInstance(); mPresenter = new AddTransferMethodPresenter(this, factory.getTransferMethodConfigurationRepository(), factory.getTransferMethodRepository()); @@ -296,7 +293,8 @@ public void saveTextChanged(@NonNull final String fieldName, @NonNull final Stri @Override public void notifyTransferMethodAdded(@NonNull final HyperwalletTransferMethod transferMethod) { - Intent intent = HyperwalletLocalBroadcast.createBroadcastIntentTransferMethodAdded(transferMethod); + Intent intent = HyperwalletTransferMethodLocalBroadcast.createBroadcastIntentTransferMethodAdded( + transferMethod); LocalBroadcastManager.getInstance(getContext()).sendBroadcast(intent); getActivity().setResult(Activity.RESULT_OK); getActivity().finish(); @@ -484,14 +482,6 @@ public void openWidgetSelectionFragmentDialog(@NonNull final TreeMap errors); - } - - interface OnAddTransferMethodNetworkErrorCallback { - void showErrorsAddTransferMethod(@NonNull final List errors); - } - private void triggerSubmit() { if (performValidation(true)) { switch (mTransferMethodType) { @@ -623,4 +613,12 @@ void onDateSelected(@NonNull final String selectedValue, @NonNull final String f } } } + + interface OnLoadTransferMethodConfigurationFieldsNetworkErrorCallback { + void showErrorsLoadTransferMethodConfigurationFields(@NonNull final List errors); + } + + interface OnAddTransferMethodNetworkErrorCallback { + void showErrorsAddTransferMethod(@NonNull final List errors); + } } diff --git a/ui/src/main/java/com/hyperwallet/android/ui/transfermethod/AddTransferMethodPresenter.java b/transfermethodui/src/main/java/com/hyperwallet/android/ui/transfermethod/view/AddTransferMethodPresenter.java similarity index 95% rename from ui/src/main/java/com/hyperwallet/android/ui/transfermethod/AddTransferMethodPresenter.java rename to transfermethodui/src/main/java/com/hyperwallet/android/ui/transfermethod/view/AddTransferMethodPresenter.java index d0fd40750..2355d4448 100644 --- a/ui/src/main/java/com/hyperwallet/android/ui/transfermethod/AddTransferMethodPresenter.java +++ b/transfermethodui/src/main/java/com/hyperwallet/android/ui/transfermethod/view/AddTransferMethodPresenter.java @@ -14,15 +14,15 @@ * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -package com.hyperwallet.android.ui.transfermethod; +package com.hyperwallet.android.ui.transfermethod.view; import androidx.annotation.NonNull; import com.hyperwallet.android.model.HyperwalletErrors; import com.hyperwallet.android.model.graphql.HyperwalletTransferMethodConfigurationField; import com.hyperwallet.android.model.transfermethod.HyperwalletTransferMethod; -import com.hyperwallet.android.ui.repository.TransferMethodConfigurationRepository; -import com.hyperwallet.android.ui.repository.TransferMethodRepository; +import com.hyperwallet.android.ui.transfermethod.repository.TransferMethodConfigurationRepository; +import com.hyperwallet.android.ui.transfermethod.repository.TransferMethodRepository; public class AddTransferMethodPresenter implements AddTransferMethodContract.Presenter { diff --git a/ui/src/main/java/com/hyperwallet/android/ui/view/CountrySelectionDialogFragment.java b/transfermethodui/src/main/java/com/hyperwallet/android/ui/transfermethod/view/CountrySelectionDialogFragment.java similarity index 99% rename from ui/src/main/java/com/hyperwallet/android/ui/view/CountrySelectionDialogFragment.java rename to transfermethodui/src/main/java/com/hyperwallet/android/ui/transfermethod/view/CountrySelectionDialogFragment.java index 66980f24b..d7cc52d15 100644 --- a/ui/src/main/java/com/hyperwallet/android/ui/view/CountrySelectionDialogFragment.java +++ b/transfermethodui/src/main/java/com/hyperwallet/android/ui/transfermethod/view/CountrySelectionDialogFragment.java @@ -14,7 +14,7 @@ * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -package com.hyperwallet.android.ui.view; +package com.hyperwallet.android.ui.transfermethod.view; import android.app.Activity; import android.app.SearchManager; diff --git a/ui/src/main/java/com/hyperwallet/android/ui/view/CurrencySelectionDialogFragment.java b/transfermethodui/src/main/java/com/hyperwallet/android/ui/transfermethod/view/CurrencySelectionDialogFragment.java similarity index 99% rename from ui/src/main/java/com/hyperwallet/android/ui/view/CurrencySelectionDialogFragment.java rename to transfermethodui/src/main/java/com/hyperwallet/android/ui/transfermethod/view/CurrencySelectionDialogFragment.java index e9ee2bde1..5a0757605 100644 --- a/ui/src/main/java/com/hyperwallet/android/ui/view/CurrencySelectionDialogFragment.java +++ b/transfermethodui/src/main/java/com/hyperwallet/android/ui/transfermethod/view/CurrencySelectionDialogFragment.java @@ -14,7 +14,7 @@ * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -package com.hyperwallet.android.ui.view; +package com.hyperwallet.android.ui.transfermethod.view; import android.app.Activity; import android.app.SearchManager; diff --git a/ui/src/main/java/com/hyperwallet/android/ui/transfermethod/FeeFormatter.java b/transfermethodui/src/main/java/com/hyperwallet/android/ui/transfermethod/view/FeeFormatter.java similarity index 98% rename from ui/src/main/java/com/hyperwallet/android/ui/transfermethod/FeeFormatter.java rename to transfermethodui/src/main/java/com/hyperwallet/android/ui/transfermethod/view/FeeFormatter.java index e073e0a1b..a5eba963f 100644 --- a/ui/src/main/java/com/hyperwallet/android/ui/transfermethod/FeeFormatter.java +++ b/transfermethodui/src/main/java/com/hyperwallet/android/ui/transfermethod/view/FeeFormatter.java @@ -16,7 +16,7 @@ * IN THE SOFTWARE. */ -package com.hyperwallet.android.ui.transfermethod; +package com.hyperwallet.android.ui.transfermethod.view; import android.content.Context; diff --git a/ui/src/main/java/com/hyperwallet/android/ui/transfermethod/ListTransferMethodActivity.java b/transfermethodui/src/main/java/com/hyperwallet/android/ui/transfermethod/view/ListTransferMethodActivity.java similarity index 98% rename from ui/src/main/java/com/hyperwallet/android/ui/transfermethod/ListTransferMethodActivity.java rename to transfermethodui/src/main/java/com/hyperwallet/android/ui/transfermethod/view/ListTransferMethodActivity.java index 6aef7e314..4e4cdac20 100644 --- a/ui/src/main/java/com/hyperwallet/android/ui/transfermethod/ListTransferMethodActivity.java +++ b/transfermethodui/src/main/java/com/hyperwallet/android/ui/transfermethod/view/ListTransferMethodActivity.java @@ -14,9 +14,9 @@ * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -package com.hyperwallet.android.ui.transfermethod; +package com.hyperwallet.android.ui.transfermethod.view; -import static com.hyperwallet.android.ui.transfermethod.ListTransferMethodFragment.ARGUMENT_IS_TRANSFER_METHODS_RELOAD_NEEDED; +import static com.hyperwallet.android.ui.transfermethod.view.ListTransferMethodFragment.ARGUMENT_IS_TRANSFER_METHODS_RELOAD_NEEDED; import android.content.Intent; import android.os.Bundle; diff --git a/ui/src/main/java/com/hyperwallet/android/ui/transfermethod/ListTransferMethodContract.java b/transfermethodui/src/main/java/com/hyperwallet/android/ui/transfermethod/view/ListTransferMethodContract.java similarity index 97% rename from ui/src/main/java/com/hyperwallet/android/ui/transfermethod/ListTransferMethodContract.java rename to transfermethodui/src/main/java/com/hyperwallet/android/ui/transfermethod/view/ListTransferMethodContract.java index 0b2e0e5ad..7727cd404 100644 --- a/ui/src/main/java/com/hyperwallet/android/ui/transfermethod/ListTransferMethodContract.java +++ b/transfermethodui/src/main/java/com/hyperwallet/android/ui/transfermethod/view/ListTransferMethodContract.java @@ -14,7 +14,7 @@ * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -package com.hyperwallet.android.ui.transfermethod; +package com.hyperwallet.android.ui.transfermethod.view; import androidx.annotation.NonNull; diff --git a/ui/src/main/java/com/hyperwallet/android/ui/transfermethod/ListTransferMethodFragment.java b/transfermethodui/src/main/java/com/hyperwallet/android/ui/transfermethod/view/ListTransferMethodFragment.java similarity index 95% rename from ui/src/main/java/com/hyperwallet/android/ui/transfermethod/ListTransferMethodFragment.java rename to transfermethodui/src/main/java/com/hyperwallet/android/ui/transfermethod/view/ListTransferMethodFragment.java index e38385540..77236a1a3 100644 --- a/ui/src/main/java/com/hyperwallet/android/ui/transfermethod/ListTransferMethodFragment.java +++ b/transfermethodui/src/main/java/com/hyperwallet/android/ui/transfermethod/view/ListTransferMethodFragment.java @@ -14,13 +14,13 @@ * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -package com.hyperwallet.android.ui.transfermethod; +package com.hyperwallet.android.ui.transfermethod.view; import static com.hyperwallet.android.model.transfermethod.HyperwalletTransferMethod.TransferMethodFields.TRANSFER_METHOD_COUNTRY; import static com.hyperwallet.android.model.transfermethod.HyperwalletTransferMethod.TransferMethodFields.TYPE; -import static com.hyperwallet.android.ui.transfermethod.TransferMethodUtils.getStringFontIcon; -import static com.hyperwallet.android.ui.transfermethod.TransferMethodUtils.getStringResourceByName; -import static com.hyperwallet.android.ui.transfermethod.TransferMethodUtils.getTransferMethodDetail; +import static com.hyperwallet.android.ui.transfermethod.view.TransferMethodUtils.getStringFontIcon; +import static com.hyperwallet.android.ui.transfermethod.view.TransferMethodUtils.getStringResourceByName; +import static com.hyperwallet.android.ui.transfermethod.view.TransferMethodUtils.getTransferMethodDetail; import android.content.Context; import android.content.Intent; @@ -46,11 +46,11 @@ import com.hyperwallet.android.model.HyperwalletError; import com.hyperwallet.android.model.HyperwalletStatusTransition; import com.hyperwallet.android.model.transfermethod.HyperwalletTransferMethod; -import com.hyperwallet.android.ui.HyperwalletLocalBroadcast; import com.hyperwallet.android.ui.R; import com.hyperwallet.android.ui.common.view.HorizontalDividerItemDecorator; import com.hyperwallet.android.ui.common.view.OneClickListener; -import com.hyperwallet.android.ui.repository.RepositoryFactory; +import com.hyperwallet.android.ui.transfermethod.HyperwalletTransferMethodLocalBroadcast; +import com.hyperwallet.android.ui.transfermethod.repository.TransferMethodRepositoryFactory; import java.util.ArrayList; import java.util.List; @@ -179,7 +179,7 @@ public void onOneClick(View v) { @Override public void onActivityCreated(@Nullable Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); - RepositoryFactory factory = RepositoryFactory.getInstance(); + TransferMethodRepositoryFactory factory = TransferMethodRepositoryFactory.getInstance(); mPresenter = new ListTransferMethodPresenter(factory.getTransferMethodRepository(), this); } @@ -224,7 +224,7 @@ public void displayTransferMethods(@Nullable final List + tools:context="com.hyperwallet.android.ui.transfermethod.view.AddTransferMethodActivity"> diff --git a/ui/src/main/res/layout/activity_list_transfer_method.xml b/transfermethodui/src/main/res/layout/activity_list_transfer_method.xml similarity index 94% rename from ui/src/main/res/layout/activity_list_transfer_method.xml rename to transfermethodui/src/main/res/layout/activity_list_transfer_method.xml index 28ed9e27a..a065a9e0e 100644 --- a/ui/src/main/res/layout/activity_list_transfer_method.xml +++ b/transfermethodui/src/main/res/layout/activity_list_transfer_method.xml @@ -5,7 +5,7 @@ xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" - tools:context="com.hyperwallet.android.ui.transfermethod.ListTransferMethodActivity"> + tools:context="com.hyperwallet.android.ui.transfermethod.view.ListTransferMethodActivity"> \ No newline at end of file diff --git a/ui/src/main/res/layout/dialog_fragment_country_selection.xml b/transfermethodui/src/main/res/layout/dialog_fragment_country_selection.xml similarity index 100% rename from ui/src/main/res/layout/dialog_fragment_country_selection.xml rename to transfermethodui/src/main/res/layout/dialog_fragment_country_selection.xml diff --git a/ui/src/main/res/layout/dialog_fragment_currency_selection.xml b/transfermethodui/src/main/res/layout/dialog_fragment_currency_selection.xml similarity index 100% rename from ui/src/main/res/layout/dialog_fragment_currency_selection.xml rename to transfermethodui/src/main/res/layout/dialog_fragment_currency_selection.xml diff --git a/ui/src/main/res/layout/dialog_fragment_widget_selection.xml b/transfermethodui/src/main/res/layout/dialog_fragment_widget_selection.xml similarity index 100% rename from ui/src/main/res/layout/dialog_fragment_widget_selection.xml rename to transfermethodui/src/main/res/layout/dialog_fragment_widget_selection.xml diff --git a/ui/src/main/res/layout/fragment_add_transfer_method.xml b/transfermethodui/src/main/res/layout/fragment_add_transfer_method.xml similarity index 99% rename from ui/src/main/res/layout/fragment_add_transfer_method.xml rename to transfermethodui/src/main/res/layout/fragment_add_transfer_method.xml index 861e1bdcd..a4e56297a 100644 --- a/ui/src/main/res/layout/fragment_add_transfer_method.xml +++ b/transfermethodui/src/main/res/layout/fragment_add_transfer_method.xml @@ -5,7 +5,7 @@ android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" - tools:context="com.hyperwallet.android.ui.transfermethod.AddTransferMethodFragment"> + tools:context="com.hyperwallet.android.ui.transfermethod.view.AddTransferMethodFragment"> + tools:context="com.hyperwallet.android.ui.transfermethod.view.ListTransferMethodFragment"> + tools:context="com.hyperwallet.android.ui.transfermethod.view.SelectTransferMethodFragment"> + + + + + \ No newline at end of file diff --git a/userrepository/proguard-rules.pro b/userrepository/proguard-rules.pro new file mode 100644 index 000000000..f1b424510 --- /dev/null +++ b/userrepository/proguard-rules.pro @@ -0,0 +1,21 @@ +# Add project specific ProGuard rules here. +# You can control the set of applied configuration files using the +# proguardFiles setting in build.gradle. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# If your project uses WebView with JS, uncomment the following +# and specify the fully qualified class name to the JavaScript interface +# class: +#-keepclassmembers class fqcn.of.javascript.interface.for.webview { +# public *; +#} + +# Uncomment this to preserve the line number information for +# debugging stack traces. +#-keepattributes SourceFile,LineNumberTable + +# If you keep the line number information, uncomment this to +# hide the original source file name. +#-renamesourcefileattribute SourceFile diff --git a/userrepository/src/main/AndroidManifest.xml b/userrepository/src/main/AndroidManifest.xml new file mode 100644 index 000000000..3ad5d3779 --- /dev/null +++ b/userrepository/src/main/AndroidManifest.xml @@ -0,0 +1,2 @@ + diff --git a/ui/src/main/java/com/hyperwallet/android/ui/repository/UserRepository.java b/userrepository/src/main/java/com/hyperwallet/android/ui/user/repository/UserRepository.java similarity index 97% rename from ui/src/main/java/com/hyperwallet/android/ui/repository/UserRepository.java rename to userrepository/src/main/java/com/hyperwallet/android/ui/user/repository/UserRepository.java index 777b7583a..cfbfaafa3 100644 --- a/ui/src/main/java/com/hyperwallet/android/ui/repository/UserRepository.java +++ b/userrepository/src/main/java/com/hyperwallet/android/ui/user/repository/UserRepository.java @@ -15,8 +15,7 @@ * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ - -package com.hyperwallet.android.ui.repository; +package com.hyperwallet.android.ui.user.repository; import androidx.annotation.NonNull; @@ -54,4 +53,4 @@ interface LoadUserCallback { void onError(@NonNull final HyperwalletErrors errors); } -} +} \ No newline at end of file diff --git a/userrepository/src/main/java/com/hyperwallet/android/ui/user/repository/UserRepositoryFactory.java b/userrepository/src/main/java/com/hyperwallet/android/ui/user/repository/UserRepositoryFactory.java new file mode 100644 index 000000000..2a117e981 --- /dev/null +++ b/userrepository/src/main/java/com/hyperwallet/android/ui/user/repository/UserRepositoryFactory.java @@ -0,0 +1,25 @@ +package com.hyperwallet.android.ui.user.repository; + +public class UserRepositoryFactory { + private static UserRepositoryFactory sInstance; + private UserRepository mUserRepository; + + private UserRepositoryFactory() { + mUserRepository = new UserRepositoryImpl(); + } + + public static synchronized UserRepositoryFactory getInstance() { + if (sInstance == null) { + sInstance = new UserRepositoryFactory(); + } + return sInstance; + } + + public static void clearInstance() { + sInstance = null; + } + + public UserRepository getUserRepository() { + return mUserRepository; + } +} diff --git a/ui/src/main/java/com/hyperwallet/android/ui/repository/UserRepositoryImpl.java b/userrepository/src/main/java/com/hyperwallet/android/ui/user/repository/UserRepositoryImpl.java similarity index 98% rename from ui/src/main/java/com/hyperwallet/android/ui/repository/UserRepositoryImpl.java rename to userrepository/src/main/java/com/hyperwallet/android/ui/user/repository/UserRepositoryImpl.java index 524849db2..af6d47b82 100644 --- a/ui/src/main/java/com/hyperwallet/android/ui/repository/UserRepositoryImpl.java +++ b/userrepository/src/main/java/com/hyperwallet/android/ui/user/repository/UserRepositoryImpl.java @@ -16,7 +16,7 @@ * THE SOFTWARE. */ -package com.hyperwallet.android.ui.repository; +package com.hyperwallet.android.ui.user.repository; import android.os.Handler; diff --git a/userrepository/src/test/java/com/hyperwallet/android/ui/user/repository/UserRepositoryFactoryTest.java b/userrepository/src/test/java/com/hyperwallet/android/ui/user/repository/UserRepositoryFactoryTest.java new file mode 100644 index 000000000..a320a6e1a --- /dev/null +++ b/userrepository/src/test/java/com/hyperwallet/android/ui/user/repository/UserRepositoryFactoryTest.java @@ -0,0 +1,34 @@ +package com.hyperwallet.android.ui.user.repository; + +import static org.hamcrest.CoreMatchers.is; +import static org.hamcrest.CoreMatchers.not; +import static org.hamcrest.MatcherAssert.assertThat; +import static org.hamcrest.Matchers.notNullValue; + +import org.junit.Test; + +public class UserRepositoryFactoryTest { + + @Test + public void testGetInstance_verifyRepositoriesInitialized() { + UserRepositoryFactory userRepositoryFactory = UserRepositoryFactory.getInstance(); + assertThat(userRepositoryFactory, is(notNullValue())); + assertThat(userRepositoryFactory.getUserRepository(), is(notNullValue())); + } + + @Test + public void testClearInstance_verifyRepositoriesCleared() { + UserRepositoryFactory userRepositoryFactory = UserRepositoryFactory.getInstance(); + + UserRepository userConfigurationRepository = userRepositoryFactory.getUserRepository(); + + UserRepositoryFactory currentRepositoryFactory = UserRepositoryFactory.getInstance(); + assertThat(userRepositoryFactory, is(currentRepositoryFactory)); + + UserRepositoryFactory.clearInstance(); + + UserRepositoryFactory anotherRepositoryFactory = UserRepositoryFactory.getInstance(); + assertThat(userRepositoryFactory, is(not(anotherRepositoryFactory))); + assertThat(userConfigurationRepository, is(not(anotherRepositoryFactory.getUserRepository()))); + } +} diff --git a/ui/src/test/java/com/hyperwallet/android/ui/repository/UserRepositoryImplTest.java b/userrepository/src/test/java/com/hyperwallet/android/ui/user/repository/UserRepositoryImplTest.java similarity index 97% rename from ui/src/test/java/com/hyperwallet/android/ui/repository/UserRepositoryImplTest.java rename to userrepository/src/test/java/com/hyperwallet/android/ui/user/repository/UserRepositoryImplTest.java index d35c7fa3a..c693c773d 100644 --- a/ui/src/test/java/com/hyperwallet/android/ui/repository/UserRepositoryImplTest.java +++ b/userrepository/src/test/java/com/hyperwallet/android/ui/user/repository/UserRepositoryImplTest.java @@ -1,9 +1,8 @@ -package com.hyperwallet.android.ui.repository; +package com.hyperwallet.android.ui.user.repository; +import static org.hamcrest.CoreMatchers.hasItem; import static org.hamcrest.CoreMatchers.is; import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.hasItem; -import static org.hamcrest.Matchers.nullValue; import static org.mockito.ArgumentMatchers.any; import static org.mockito.Mockito.doAnswer; import static org.mockito.Mockito.doReturn; @@ -22,6 +21,7 @@ import com.hyperwallet.android.model.HyperwalletErrors; import com.hyperwallet.android.model.user.HyperwalletUser; +import org.hamcrest.Matchers; import org.junit.Before; import org.junit.Rule; import org.junit.Test; @@ -135,7 +135,7 @@ public Object answer(InvocationOnMock invocation) { verify(mMockCallback, never()).onError(any(HyperwalletErrors.class)); HyperwalletUser user = mUserCaptor.getValue(); - assertThat(user, is(nullValue())); + assertThat(user, is(Matchers.nullValue())); }