diff --git a/android-library.gradle b/android-library.gradle
new file mode 100644
index 000000000..620173287
--- /dev/null
+++ b/android-library.gradle
@@ -0,0 +1,72 @@
+apply plugin: 'com.android.library'
+apply plugin: 'maven-publish'
+apply plugin: 'signing'
+apply plugin: 'org.sonarqube'
+apply from: "$projectDir/config/jacoco-settings.gradle"
+
+android {
+ compileSdkVersion compileVersion
+ defaultConfig {
+ minSdkVersion minVersion
+ targetSdkVersion targetVersion
+ versionCode codeVersion
+ versionName version
+ testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
+ testInstrumentationRunnerArgument "listener", "com.squareup.leakcanary.FailTestOnLeakRunListener"
+ }
+
+ sourceSets {
+ androidTest {
+ resources.srcDirs += ['src/test/resources']
+ }
+ }
+
+ buildTypes {
+ release {
+ minifyEnabled false
+ proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
+ }
+ debug {
+ testCoverageEnabled true
+ }
+ }
+
+ lintOptions {
+ abortOnError true
+ warningsAsErrors true
+ lintConfig file("config/lint.xml")
+ }
+}
+
+task javadocs(type: Javadoc) {
+ source = android.sourceSets.main.java.srcDirs
+ classpath += project.files(android.getBootClasspath().join(File.pathSeparator))
+ failOnError false
+}
+
+task javadocsJar(type: Jar, dependsOn: javadocs) {
+ classifier = 'javadoc'
+ from javadocs.destinationDir
+}
+
+task sourcesJar(type: Jar) {
+ classifier = 'sources'
+ from android.sourceSets.main.java.srcDirs
+}
+
+dependencies {
+ implementation "com.google.android.material:material:$androidMaterialVersion"
+ api "com.hyperwallet.android:core-sdk:$hyperwalletCoreVersion"
+
+ implementation "androidx.test.espresso:espresso-idling-resource:$espressoVersion"
+
+ androidTestImplementation "androidx.test.ext:junit:$extJunitVerson"
+ androidTestImplementation "androidx.test:runner:$testRunnerVersion"
+ androidTestImplementation "androidx.test.espresso:espresso-core:$espressoVersion"
+
+ testImplementation group: 'org.mockito', name: 'mockito-core', version: "$mockitoVersion"
+ testImplementation group: 'pl.pragmatists', name: 'JUnitParams', version: "$junitParamsVersion"
+}
+
+
+
diff --git a/build.gradle b/build.gradle
index b079d8d65..3df2d26b2 100644
--- a/build.gradle
+++ b/build.gradle
@@ -5,12 +5,12 @@ buildscript {
google()
jcenter()
mavenLocal()
-
+
}
dependencies {
classpath 'com.android.tools.build:gradle:3.3.2'
classpath "org.sonarsource.scanner.gradle:sonarqube-gradle-plugin:2.7"
-
+
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
@@ -21,12 +21,45 @@ allprojects {
google()
jcenter()
mavenLocal()
-
+
}
project.version = "1.0.0-beta03-SNAPSHOT"
+
+}
+
+subprojects {
+
+ ext {
+ hyperwalletGroupId = 'com.hyperwallet.android'
+
+ compileVersion = 28
+ minVersion = 21
+ targetVersion = 28
+ codeVersion = 1
+
+ hyperwalletCoreVersion = '1.0.0-beta03-SNAPSHOT'
+ //
+ androidMaterialVersion = '1.0.0'
+ appcompatVersion = '1.0.2'
+ constraintlayoutVersion = '1.1.3'
+ legacySupportV4Version = '1.0.0'
+ recycleViewVersion = '1.0.0'
+ //Testing
+ extJunitVerson = '1.1.1'
+ testRunnerVersion = '1.2.0'
+ testRulesVersion = '1.2.0'
+ espressoVersion = '3.2.0'
+ mockServerVersion = '3.11.0'
+ leakcanaryVersion = '1.6.3'
+ mockitoVersion = '2.27.0'
+ junitParamsVersion = '1.1.1'
+ robolectricVersion = '4.1'
+ mockWebServerVersion = '3.11.0'
+ }
+
}
task clean(type: Delete) {
delete rootProject.buildDir
-}
+}
\ No newline at end of file
diff --git a/common/.gitignore b/common/.gitignore
new file mode 100644
index 000000000..796b96d1c
--- /dev/null
+++ b/common/.gitignore
@@ -0,0 +1 @@
+/build
diff --git a/common/build.gradle b/common/build.gradle
new file mode 100644
index 000000000..e4df818b5
--- /dev/null
+++ b/common/build.gradle
@@ -0,0 +1,88 @@
+apply from: "$rootProject.projectDir/android-library.gradle"
+
+
+def aarFile = file("$buildDir/outputs/aar/common-$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 {
+ hyperwalletCommonUi(MavenPublication) {
+ groupId = hyperwalletGroupId
+ artifactId = 'common'
+ version = version
+
+ artifact(sourcesJar)
+ artifact(javadocsJar)
+ artifact(aarArtifact)
+
+ pom {
+ name = 'Hyperwallet Android Common UI SDK'
+ description = 'Hyperwallet Common 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')
+ 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.hyperwalletCommonUi
+}
+
+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"
+ property "sonar.libraries", libraries
+ property "sonar.projectName", "android-ui-sdk-common"
+ }
+}
\ No newline at end of file
diff --git a/common/config/jacoco-settings.gradle b/common/config/jacoco-settings.gradle
new file mode 100644
index 000000000..7ce61b7aa
--- /dev/null
+++ b/common/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/dev/*/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/testDevUnitTest.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/common/config/lint.xml
new file mode 100644
index 000000000..3c83d4bb5
--- /dev/null
+++ b/common/config/lint.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/common/proguard-rules.pro b/common/proguard-rules.pro
new file mode 100644
index 000000000..f1b424510
--- /dev/null
+++ b/common/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/common/src/main/AndroidManifest.xml b/common/src/main/AndroidManifest.xml
new file mode 100644
index 000000000..72af9106f
--- /dev/null
+++ b/common/src/main/AndroidManifest.xml
@@ -0,0 +1,2 @@
+
diff --git a/ui/src/main/java/com/hyperwallet/android/ui/util/EspressoIdlingResource.java b/common/src/main/java/com/hyperwallet/android/common/util/EspressoIdlingResource.java
similarity index 93%
rename from ui/src/main/java/com/hyperwallet/android/ui/util/EspressoIdlingResource.java
rename to common/src/main/java/com/hyperwallet/android/common/util/EspressoIdlingResource.java
index 61fbcbf40..92e6cf3a4 100644
--- a/ui/src/main/java/com/hyperwallet/android/ui/util/EspressoIdlingResource.java
+++ b/common/src/main/java/com/hyperwallet/android/common/util/EspressoIdlingResource.java
@@ -1,4 +1,4 @@
-package com.hyperwallet.android.ui.util;
+package com.hyperwallet.android.common.util;
import androidx.test.espresso.IdlingResource;
import androidx.test.espresso.idling.CountingIdlingResource;
diff --git a/ui/src/main/java/com/hyperwallet/android/ui/view/error/DefaultErrorDialogFragment.java b/common/src/main/java/com/hyperwallet/android/common/view/error/DefaultErrorDialogFragment.java
similarity index 98%
rename from ui/src/main/java/com/hyperwallet/android/ui/view/error/DefaultErrorDialogFragment.java
rename to common/src/main/java/com/hyperwallet/android/common/view/error/DefaultErrorDialogFragment.java
index fd1938311..b3ea55029 100644
--- a/ui/src/main/java/com/hyperwallet/android/ui/view/error/DefaultErrorDialogFragment.java
+++ b/common/src/main/java/com/hyperwallet/android/common/view/error/DefaultErrorDialogFragment.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.error;
+package com.hyperwallet.android.common.view.error;
import static com.hyperwallet.android.ExceptionMapper.EC_AUTHENTICATION_TOKEN_PROVIDER_EXCEPTION;
import static com.hyperwallet.android.ExceptionMapper.EC_IO_EXCEPTION;
@@ -33,7 +33,7 @@
import androidx.fragment.app.DialogFragment;
import androidx.fragment.app.FragmentManager;
-import com.hyperwallet.android.hyperwallet_ui.R;
+import com.hyperwallet.android.common.R;
import com.hyperwallet.android.model.HyperwalletError;
import java.util.ArrayList;
@@ -55,6 +55,20 @@ public DefaultErrorDialogFragment() {
setRetainInstance(true);
}
+ /**
+ * Builds Hyperwallet Error Dialogue
+ *
+ * @param errors List of Errors @see {@link Error}
+ */
+ public static DefaultErrorDialogFragment newInstance(@NonNull List errors) {
+ Bundle bundle = new Bundle();
+ bundle.putParcelableArrayList(ARGUMENT_ERROR_KEY, new ArrayList<>(errors));
+
+ DefaultErrorDialogFragment errorDialogFragment = new DefaultErrorDialogFragment();
+ errorDialogFragment.setArguments(bundle);
+ return errorDialogFragment;
+ }
+
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
@@ -70,20 +84,6 @@ public void onCancel(DialogInterface dialog) {
requireActivity().finish();
}
- /**
- * Builds Hyperwallet Error Dialogue
- *
- * @param errors List of Errors @see {@link Error}
- */
- public static DefaultErrorDialogFragment newInstance(@NonNull List errors) {
- Bundle bundle = new Bundle();
- bundle.putParcelableArrayList(ARGUMENT_ERROR_KEY, new ArrayList<>(errors));
-
- DefaultErrorDialogFragment errorDialogFragment = new DefaultErrorDialogFragment();
- errorDialogFragment.setArguments(bundle);
- return errorDialogFragment;
- }
-
public void show(@NonNull FragmentManager manager) {
show(manager, TAG);
}
diff --git a/ui/src/main/java/com/hyperwallet/android/ui/view/error/DefaultErrorDialogFragmentContract.java b/common/src/main/java/com/hyperwallet/android/common/view/error/DefaultErrorDialogFragmentContract.java
similarity index 97%
rename from ui/src/main/java/com/hyperwallet/android/ui/view/error/DefaultErrorDialogFragmentContract.java
rename to common/src/main/java/com/hyperwallet/android/common/view/error/DefaultErrorDialogFragmentContract.java
index fa7950b6b..6fd3db51c 100644
--- a/ui/src/main/java/com/hyperwallet/android/ui/view/error/DefaultErrorDialogFragmentContract.java
+++ b/common/src/main/java/com/hyperwallet/android/common/view/error/DefaultErrorDialogFragmentContract.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.error;
+package com.hyperwallet.android.common.view.error;
import android.content.res.Resources;
diff --git a/ui/src/main/java/com/hyperwallet/android/ui/view/error/DefaultErrorDialogFragmentPresenter.java b/common/src/main/java/com/hyperwallet/android/common/view/error/DefaultErrorDialogFragmentPresenter.java
similarity index 98%
rename from ui/src/main/java/com/hyperwallet/android/ui/view/error/DefaultErrorDialogFragmentPresenter.java
rename to common/src/main/java/com/hyperwallet/android/common/view/error/DefaultErrorDialogFragmentPresenter.java
index 53103fdd5..b9f493359 100644
--- a/ui/src/main/java/com/hyperwallet/android/ui/view/error/DefaultErrorDialogFragmentPresenter.java
+++ b/common/src/main/java/com/hyperwallet/android/common/view/error/DefaultErrorDialogFragmentPresenter.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.error;
+package com.hyperwallet.android.common.view.error;
import static com.hyperwallet.android.ExceptionMapper.EC_AUTHENTICATION_TOKEN_PROVIDER_EXCEPTION;
import static com.hyperwallet.android.ExceptionMapper.EC_IO_EXCEPTION;
diff --git a/ui/src/main/java/com/hyperwallet/android/ui/view/error/OnNetworkErrorCallback.java b/common/src/main/java/com/hyperwallet/android/common/view/error/OnNetworkErrorCallback.java
similarity index 79%
rename from ui/src/main/java/com/hyperwallet/android/ui/view/error/OnNetworkErrorCallback.java
rename to common/src/main/java/com/hyperwallet/android/common/view/error/OnNetworkErrorCallback.java
index c08b2e9bd..a6822c545 100644
--- a/ui/src/main/java/com/hyperwallet/android/ui/view/error/OnNetworkErrorCallback.java
+++ b/common/src/main/java/com/hyperwallet/android/common/view/error/OnNetworkErrorCallback.java
@@ -1,13 +1,13 @@
-package com.hyperwallet.android.ui.view.error;
+package com.hyperwallet.android.common.view.error;
import java.util.List;
/**
* Retry callback @see {@link DefaultErrorDialogFragment#newInstance(List)}
- * */
+ */
public interface OnNetworkErrorCallback {
/**
* Gets invoked when Error occurred and its possible to retry operation
- * */
+ */
void retry();
}
diff --git a/ui/src/main/res/drawable/circle.xml b/common/src/main/res/drawable/circle.xml
similarity index 100%
rename from ui/src/main/res/drawable/circle.xml
rename to common/src/main/res/drawable/circle.xml
diff --git a/ui/src/main/res/drawable/circle_white.xml b/common/src/main/res/drawable/circle_white.xml
similarity index 100%
rename from ui/src/main/res/drawable/circle_white.xml
rename to common/src/main/res/drawable/circle_white.xml
diff --git a/ui/src/main/res/drawable/content_border_bottom.xml b/common/src/main/res/drawable/content_border_bottom.xml
similarity index 100%
rename from ui/src/main/res/drawable/content_border_bottom.xml
rename to common/src/main/res/drawable/content_border_bottom.xml
diff --git a/ui/src/main/res/drawable/content_border_top_bottom.xml b/common/src/main/res/drawable/content_border_top_bottom.xml
similarity index 100%
rename from ui/src/main/res/drawable/content_border_top_bottom.xml
rename to common/src/main/res/drawable/content_border_top_bottom.xml
diff --git a/ui/src/main/res/drawable/horizontal_divider.xml b/common/src/main/res/drawable/horizontal_divider.xml
similarity index 100%
rename from ui/src/main/res/drawable/horizontal_divider.xml
rename to common/src/main/res/drawable/horizontal_divider.xml
diff --git a/ui/src/main/res/drawable/ic_baseline_bug_report_24px.xml b/common/src/main/res/drawable/ic_baseline_bug_report_24px.xml
similarity index 100%
rename from ui/src/main/res/drawable/ic_baseline_bug_report_24px.xml
rename to common/src/main/res/drawable/ic_baseline_bug_report_24px.xml
diff --git a/ui/src/main/res/drawable/ic_baseline_cloud_off_24px.xml b/common/src/main/res/drawable/ic_baseline_cloud_off_24px.xml
similarity index 100%
rename from ui/src/main/res/drawable/ic_baseline_cloud_off_24px.xml
rename to common/src/main/res/drawable/ic_baseline_cloud_off_24px.xml
diff --git a/ui/src/main/res/drawable/ic_baseline_warning_24px.xml b/common/src/main/res/drawable/ic_baseline_warning_24px.xml
similarity index 100%
rename from ui/src/main/res/drawable/ic_baseline_warning_24px.xml
rename to common/src/main/res/drawable/ic_baseline_warning_24px.xml
diff --git a/ui/src/main/res/drawable/ic_check_14dp.xml b/common/src/main/res/drawable/ic_check_14dp.xml
similarity index 100%
rename from ui/src/main/res/drawable/ic_check_14dp.xml
rename to common/src/main/res/drawable/ic_check_14dp.xml
diff --git a/ui/src/main/res/drawable/ic_close_14dp.xml b/common/src/main/res/drawable/ic_close_14dp.xml
similarity index 100%
rename from ui/src/main/res/drawable/ic_close_14dp.xml
rename to common/src/main/res/drawable/ic_close_14dp.xml
diff --git a/ui/src/main/res/drawable/ic_keyboard_arrow_down_12dp.xml b/common/src/main/res/drawable/ic_keyboard_arrow_down_12dp.xml
similarity index 100%
rename from ui/src/main/res/drawable/ic_keyboard_arrow_down_12dp.xml
rename to common/src/main/res/drawable/ic_keyboard_arrow_down_12dp.xml
diff --git a/ui/src/main/res/drawable/ic_keyboard_arrow_left_12dp.xml b/common/src/main/res/drawable/ic_keyboard_arrow_left_12dp.xml
similarity index 100%
rename from ui/src/main/res/drawable/ic_keyboard_arrow_left_12dp.xml
rename to common/src/main/res/drawable/ic_keyboard_arrow_left_12dp.xml
diff --git a/ui/src/main/res/drawable/ic_keyboard_arrow_right_12dp.xml b/common/src/main/res/drawable/ic_keyboard_arrow_right_12dp.xml
similarity index 100%
rename from ui/src/main/res/drawable/ic_keyboard_arrow_right_12dp.xml
rename to common/src/main/res/drawable/ic_keyboard_arrow_right_12dp.xml
diff --git a/ui/src/main/res/drawable/ic_launcher_background.xml b/common/src/main/res/drawable/ic_launcher_background.xml
similarity index 100%
rename from ui/src/main/res/drawable/ic_launcher_background.xml
rename to common/src/main/res/drawable/ic_launcher_background.xml
diff --git a/ui/src/main/res/drawable/ic_placeholder_24dp.xml b/common/src/main/res/drawable/ic_placeholder_24dp.xml
similarity index 100%
rename from ui/src/main/res/drawable/ic_placeholder_24dp.xml
rename to common/src/main/res/drawable/ic_placeholder_24dp.xml
diff --git a/ui/src/main/res/drawable/ic_search_24dp.xml b/common/src/main/res/drawable/ic_search_24dp.xml
similarity index 100%
rename from ui/src/main/res/drawable/ic_search_24dp.xml
rename to common/src/main/res/drawable/ic_search_24dp.xml
diff --git a/ui/src/main/res/drawable/ic_three_dots_16dp.xml b/common/src/main/res/drawable/ic_three_dots_16dp.xml
similarity index 100%
rename from ui/src/main/res/drawable/ic_three_dots_16dp.xml
rename to common/src/main/res/drawable/ic_three_dots_16dp.xml
diff --git a/ui/src/main/res/drawable/ic_trash.xml b/common/src/main/res/drawable/ic_trash.xml
similarity index 100%
rename from ui/src/main/res/drawable/ic_trash.xml
rename to common/src/main/res/drawable/ic_trash.xml
diff --git a/ui/src/main/res/drawable/oval.xml b/common/src/main/res/drawable/oval.xml
similarity index 100%
rename from ui/src/main/res/drawable/oval.xml
rename to common/src/main/res/drawable/oval.xml
diff --git a/ui/src/main/res/drawable/view_border_top_bottom.xml b/common/src/main/res/drawable/view_border_top_bottom.xml
similarity index 100%
rename from ui/src/main/res/drawable/view_border_top_bottom.xml
rename to common/src/main/res/drawable/view_border_top_bottom.xml
diff --git a/ui/src/main/res/font/icomoon.ttf b/common/src/main/res/font/icomoon.ttf
old mode 100755
new mode 100644
similarity index 100%
rename from ui/src/main/res/font/icomoon.ttf
rename to common/src/main/res/font/icomoon.ttf
diff --git a/ui/src/main/res/values/colors.xml b/common/src/main/res/values/colors.xml
similarity index 100%
rename from ui/src/main/res/values/colors.xml
rename to common/src/main/res/values/colors.xml
diff --git a/ui/src/main/res/values/dimens.xml b/common/src/main/res/values/dimens.xml
similarity index 100%
rename from ui/src/main/res/values/dimens.xml
rename to common/src/main/res/values/dimens.xml
diff --git a/common/src/main/res/values/strings.xml b/common/src/main/res/values/strings.xml
new file mode 100644
index 000000000..f46ffb1a3
--- /dev/null
+++ b/common/src/main/res/values/strings.xml
@@ -0,0 +1,9 @@
+
+ Error
+ Connectivity Issue
+ Unexpected Error
+ Cancel
+ Close
+ Try again
+
+
diff --git a/common/src/main/res/values/styles.xml b/common/src/main/res/values/styles.xml
new file mode 100644
index 000000000..8221087b3
--- /dev/null
+++ b/common/src/main/res/values/styles.xml
@@ -0,0 +1,237 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/ui/src/test/java/com/hyperwallet/android/ui/view/error/DefaultErrorDialogFragmentPresenterTest.java b/common/src/test/java/com/hyperwallet/android/common/view/error/DefaultErrorDialogFragmentPresenterTest.java
similarity index 92%
rename from ui/src/test/java/com/hyperwallet/android/ui/view/error/DefaultErrorDialogFragmentPresenterTest.java
rename to common/src/test/java/com/hyperwallet/android/common/view/error/DefaultErrorDialogFragmentPresenterTest.java
index 05ff4966d..aa3848d07 100644
--- a/ui/src/test/java/com/hyperwallet/android/ui/view/error/DefaultErrorDialogFragmentPresenterTest.java
+++ b/common/src/test/java/com/hyperwallet/android/common/view/error/DefaultErrorDialogFragmentPresenterTest.java
@@ -1,8 +1,7 @@
-package com.hyperwallet.android.ui.view.error;
+package com.hyperwallet.android.common.view.error;
+import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.Matchers.is;
-import static org.mockito.Matchers.anyInt;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.verify;
@@ -16,11 +15,12 @@
import android.content.res.Resources;
-import com.hyperwallet.android.hyperwallet_ui.R;
+import com.hyperwallet.android.common.R;
import com.hyperwallet.android.model.HyperwalletError;
import org.junit.Test;
import org.junit.runner.RunWith;
+import org.mockito.ArgumentMatchers;
import java.util.ArrayList;
import java.util.Arrays;
@@ -65,7 +65,7 @@ public void testBuildDialogMessage_buildDefaultExceptionMessage() {
errors.add(new HyperwalletError("My default message", "my error code"));
String message = presenter.buildDialogMessage(errors, resources);
- verify(resources, never()).getString(anyInt());
+ verify(resources, never()).getString(ArgumentMatchers.anyInt());
assertThat(message, is("My default message"));
}
diff --git a/receipt/.gitignore b/receipt/.gitignore
new file mode 100644
index 000000000..796b96d1c
--- /dev/null
+++ b/receipt/.gitignore
@@ -0,0 +1 @@
+/build
diff --git a/receipt/build.gradle b/receipt/build.gradle
new file mode 100644
index 000000000..39c963b04
--- /dev/null
+++ b/receipt/build.gradle
@@ -0,0 +1,95 @@
+apply from: "$rootProject.projectDir/android-library.gradle"
+
+dependencies {
+ api project(":common")
+}
+
+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")
+ } 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"
+ property "sonar.libraries", libraries
+ property "sonar.projectName", "android-ui-sdk-receipt"
+ }
+}
\ No newline at end of file
diff --git a/receipt/config/jacoco-settings.gradle b/receipt/config/jacoco-settings.gradle
new file mode 100644
index 000000000..7ce61b7aa
--- /dev/null
+++ b/receipt/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/dev/*/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/testDevUnitTest.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/receipt/config/lint.xml b/receipt/config/lint.xml
new file mode 100644
index 000000000..3c83d4bb5
--- /dev/null
+++ b/receipt/config/lint.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/receipt/proguard-rules.pro b/receipt/proguard-rules.pro
new file mode 100644
index 000000000..f1b424510
--- /dev/null
+++ b/receipt/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/receipt/src/main/AndroidManifest.xml b/receipt/src/main/AndroidManifest.xml
new file mode 100644
index 000000000..bf6f4ad0c
--- /dev/null
+++ b/receipt/src/main/AndroidManifest.xml
@@ -0,0 +1,2 @@
+
diff --git a/receipt/src/main/res/values/strings.xml b/receipt/src/main/res/values/strings.xml
new file mode 100644
index 000000000..c3ca11b97
--- /dev/null
+++ b/receipt/src/main/res/values/strings.xml
@@ -0,0 +1,103 @@
+
+ receipt
+
+ Annual Fee
+ Annual Fee Refund
+ Customer Service Fee
+ Customer Service Fee Refund
+ Expedited Shipping Fee
+ Generic Fee Refund
+ Monthly Fee
+ Monthly Fee Refund
+ Payment Expiry Fee
+ Payment Fee
+ Processing Fee
+ Standard Shipping Fee
+ Transfer Fee
+
+
+ Balance Adjustment
+ Foreign Exchange
+ Funds Deposit
+ Adjustment
+ Payment Expired
+
+
+ Bank Account Return Fee
+ Bank Account Return
+ Bank Account Return Fee
+ Bank Account
+
+
+ Card Activation Fee
+ Card Activation Fee Waiver
+ Card Fee
+ Card Load
+ Balance Inquiry Fee
+ Cash Advance
+ Disputed Charge Refund
+ Disputed Card Deposit
+ ATM Withdrawal
+ PREPAID_CARD_EXCHANGE_RATE_DIFFERENCE
+
+ Card Unload
+ ATM Withdrawal
+ PIN Change Fee
+ Refund
+ Card Replacement Fee
+ Transaction
+ Reversed Transaction
+ Card Unload
+ Card Load
+
+
+ Donation
+ Donation Fee
+ Donation Return
+
+
+ Merchant Payment
+ Merchant Payment Fee
+ Merchant Payment Refund
+ Merchant Payment Return
+
+
+ MoneyGram Return
+ MoneyGram
+
+
+ Paper Check Fee
+ Paper Check Refund
+ Paper Check
+
+
+ Account Closure
+ Account Closure Fee
+ Funds Unloaded
+ Dormant User Account Fee
+ Dormant User Account Fee Refund
+ Payment
+ Payment Cancellation
+ Payment Reversal
+ Payment Reversal Fee
+ Payment Return
+ Transfer to Program
+ Transfer to User
+
+
+ Promo Cancellation
+ Issued Promo
+ Promo Purchase
+ Promo Refund
+
+
+ Western Union
+ Wire Transfer
+ Western Union Withdrawal
+ Wire Transfer Return
+
+
+ Wire Transfer
+ Wire Transfer Fee
+ Wire Transfer Return
+
diff --git a/settings.gradle b/settings.gradle
index 4f16d512e..905f2e4e9 100644
--- a/settings.gradle
+++ b/settings.gradle
@@ -1 +1 @@
-include ':ui'
+include ':ui', ':common', ':receipt'
diff --git a/ui/build.gradle b/ui/build.gradle
index 7fdbb6b2d..7d74976ae 100644
--- a/ui/build.gradle
+++ b/ui/build.gradle
@@ -1,90 +1,28 @@
-apply plugin: 'com.android.library'
-apply plugin: 'maven-publish'
-apply plugin: 'signing'
-apply plugin: 'org.sonarqube'
-apply from: "$projectDir/config/jacoco-settings.gradle"
-
-android {
- compileSdkVersion 28
- defaultConfig {
- minSdkVersion 21
- targetSdkVersion 28
- versionCode 1
- versionName version
- testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
- testInstrumentationRunnerArgument "listener", "com.squareup.leakcanary.FailTestOnLeakRunListener"
- }
-
- sourceSets {
- androidTest {
- resources.srcDirs += ['src/test/resources']
- }
- }
-
- buildTypes {
- release {
- minifyEnabled false
- proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
- }
- debug {
- testCoverageEnabled true
- }
- }
-
- lintOptions {
- abortOnError true
- warningsAsErrors true
- lintConfig file("config/lint.xml")
- }
-
-}
-
+apply from: "$rootProject.projectDir/android-library.gradle"
dependencies {
- implementation "androidx.appcompat:appcompat:1.0.2"
- implementation "com.google.android.material:material:1.0.0"
- implementation "androidx.constraintlayout:constraintlayout:1.1.3"
- implementation "androidx.test.espresso:espresso-idling-resource:3.2.0"
- implementation "androidx.legacy:legacy-support-v4:1.0.0"
- implementation "androidx.recyclerview:recyclerview:1.0.0"
-
- api "com.hyperwallet.android:core-sdk:1.0.0-beta03-SNAPSHOT"
-
- androidTestImplementation "androidx.test.ext:junit:1.1.1"
- androidTestImplementation "androidx.test:runner:1.2.0"
- androidTestImplementation "androidx.test:rules:1.2.0"
- androidTestImplementation "androidx.test.espresso:espresso-core:3.2.0"
- androidTestImplementation "androidx.test.espresso:espresso-contrib:3.2.0"
- androidTestImplementation "androidx.test.espresso:espresso-intents:3.2.0"
- androidTestImplementation "com.squareup.okhttp3:mockwebserver:3.11.0"
- androidTestImplementation "com.squareup.leakcanary:leakcanary-android-instrumentation:1.6.3"
- androidTestImplementation "com.squareup.leakcanary:leakcanary-support-fragment:1.6.3"
-
- testImplementation group: 'org.mockito', name: 'mockito-core', version: "2.27.0"
- testImplementation group: 'pl.pragmatists', name: 'JUnitParams', version: "1.1.1"
- testImplementation "org.robolectric:robolectric:4.1"
- testImplementation "com.squareup.okhttp3:mockwebserver:3.11.0"
+ implementation "androidx.appcompat:appcompat:$appcompatVersion"
+ implementation "androidx.constraintlayout:constraintlayout:$constraintlayoutVersion"
+ implementation "androidx.legacy:legacy-support-v4:$legacySupportV4Version"
+ implementation "androidx.recyclerview:recyclerview:$recycleViewVersion"
-}
+ api project(":common")
+ api project(":receipt")
-task javadocs(type: Javadoc) {
- source = android.sourceSets.main.java.srcDirs
- classpath += project.files(android.getBootClasspath().join(File.pathSeparator))
- failOnError false
-}
+ 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"
-task javadocsJar(type: Jar, dependsOn: javadocs) {
- classifier = 'javadoc'
- from javadocs.destinationDir
+ testImplementation "org.robolectric:robolectric:$robolectricVersion"
+ testImplementation "com.squareup.okhttp3:mockwebserver:$mockWebServerVersion"
}
-task sourcesJar(type: Jar) {
- classifier = 'sources'
- from android.sourceSets.main.java.srcDirs
-}
-def aarFile = file("$buildDir/outputs/aar/ui-$version"+".aar")
+def aarFile = file("$buildDir/outputs/aar/ui-$version" + ".aar")
def aarArtifact = artifacts.add('archives', aarFile) {
type 'aar'
}
@@ -107,7 +45,7 @@ publishing {
publications {
hyperwalletUi(MavenPublication) {
- groupId = 'com.hyperwallet.android'
+ groupId = hyperwalletGroupId
artifactId = 'ui-sdk'
version = version
@@ -123,7 +61,11 @@ publishing {
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")
+ } else {
+ dependencyNode.appendNode('groupId', it.group)
+ }
dependencyNode.appendNode('artifactId', it.name)
dependencyNode.appendNode('version', it.version)
}
diff --git a/ui/config/lint.xml b/ui/config/lint.xml
index 1238724e4..7f32fbd3d 100644
--- a/ui/config/lint.xml
+++ b/ui/config/lint.xml
@@ -6,6 +6,8 @@
+
+
diff --git a/ui/src/androidTest/java/com/hyperwallet/android/rule/HyperwalletMockWebServer.java b/ui/src/androidTest/java/com/hyperwallet/android/rule/HyperwalletMockWebServer.java
index 0917a22b2..9f42f6128 100644
--- a/ui/src/androidTest/java/com/hyperwallet/android/rule/HyperwalletMockWebServer.java
+++ b/ui/src/androidTest/java/com/hyperwallet/android/rule/HyperwalletMockWebServer.java
@@ -14,6 +14,10 @@ public final class HyperwalletMockWebServer extends TestWatcher {
private MockWebServer mServer;
private int port;
+ public HyperwalletMockWebServer(int port) {
+ this.port = port;
+ }
+
@Override
protected void starting(Description description) {
super.starting(description);
@@ -36,10 +40,6 @@ protected void finished(Description description) {
}
}
- public HyperwalletMockWebServer(int port) {
- this.port = port;
- }
-
public HyperwalletMockResponse mockResponse() {
return new Builder(mServer).build();
}
diff --git a/ui/src/androidTest/java/com/hyperwallet/android/transfermethod/ui/AddTransferMethodTest.java b/ui/src/androidTest/java/com/hyperwallet/android/transfermethod/ui/AddTransferMethodTest.java
index 61cd031aa..f8751b9b6 100644
--- a/ui/src/androidTest/java/com/hyperwallet/android/transfermethod/ui/AddTransferMethodTest.java
+++ b/ui/src/androidTest/java/com/hyperwallet/android/transfermethod/ui/AddTransferMethodTest.java
@@ -21,7 +21,7 @@
import static java.net.HttpURLConnection.HTTP_BAD_REQUEST;
import static java.net.HttpURLConnection.HTTP_OK;
-import static com.hyperwallet.android.ui.view.error.DefaultErrorDialogFragment.RESULT_ERROR;
+import static com.hyperwallet.android.common.view.error.DefaultErrorDialogFragment.RESULT_ERROR;
import static com.hyperwallet.android.util.EspressoUtils.nestedScrollTo;
import android.app.Instrumentation;
@@ -35,13 +35,13 @@
import androidx.test.rule.ActivityTestRule;
import com.hyperwallet.android.Hyperwallet;
+import com.hyperwallet.android.common.util.EspressoIdlingResource;
+import com.hyperwallet.android.common.view.error.DefaultErrorDialogFragment;
import com.hyperwallet.android.hyperwallet_ui.R;
import com.hyperwallet.android.rule.HyperwalletExternalResourceManager;
import com.hyperwallet.android.rule.HyperwalletMockWebServer;
import com.hyperwallet.android.ui.repository.RepositoryFactory;
import com.hyperwallet.android.ui.transfermethod.AddTransferMethodActivity;
-import com.hyperwallet.android.ui.util.EspressoIdlingResource;
-import com.hyperwallet.android.ui.view.error.DefaultErrorDialogFragment;
import com.hyperwallet.android.util.TestAuthenticationProvider;
import org.junit.After;
diff --git a/ui/src/androidTest/java/com/hyperwallet/android/transfermethod/ui/BankAccountTest.java b/ui/src/androidTest/java/com/hyperwallet/android/transfermethod/ui/BankAccountTest.java
index 75b62af11..5bd2e49dd 100644
--- a/ui/src/androidTest/java/com/hyperwallet/android/transfermethod/ui/BankAccountTest.java
+++ b/ui/src/androidTest/java/com/hyperwallet/android/transfermethod/ui/BankAccountTest.java
@@ -45,13 +45,13 @@
import androidx.test.rule.ActivityTestRule;
import com.hyperwallet.android.Hyperwallet;
+import com.hyperwallet.android.common.util.EspressoIdlingResource;
import com.hyperwallet.android.hyperwallet_ui.R;
import com.hyperwallet.android.model.transfermethod.HyperwalletTransferMethod;
import com.hyperwallet.android.rule.HyperwalletExternalResourceManager;
import com.hyperwallet.android.rule.HyperwalletMockWebServer;
import com.hyperwallet.android.ui.repository.RepositoryFactory;
import com.hyperwallet.android.ui.transfermethod.AddTransferMethodActivity;
-import com.hyperwallet.android.ui.util.EspressoIdlingResource;
import com.hyperwallet.android.util.RecyclerViewCountAssertion;
import com.hyperwallet.android.util.TestAuthenticationProvider;
diff --git a/ui/src/androidTest/java/com/hyperwallet/android/transfermethod/ui/BankCardTest.java b/ui/src/androidTest/java/com/hyperwallet/android/transfermethod/ui/BankCardTest.java
index 3003b01b3..f3c15fa11 100644
--- a/ui/src/androidTest/java/com/hyperwallet/android/transfermethod/ui/BankCardTest.java
+++ b/ui/src/androidTest/java/com/hyperwallet/android/transfermethod/ui/BankCardTest.java
@@ -42,13 +42,13 @@
import androidx.test.rule.ActivityTestRule;
import com.hyperwallet.android.Hyperwallet;
+import com.hyperwallet.android.common.util.EspressoIdlingResource;
import com.hyperwallet.android.hyperwallet_ui.R;
import com.hyperwallet.android.model.transfermethod.HyperwalletTransferMethod;
import com.hyperwallet.android.rule.HyperwalletExternalResourceManager;
import com.hyperwallet.android.rule.HyperwalletMockWebServer;
import com.hyperwallet.android.ui.repository.RepositoryFactory;
import com.hyperwallet.android.ui.transfermethod.AddTransferMethodActivity;
-import com.hyperwallet.android.ui.util.EspressoIdlingResource;
import com.hyperwallet.android.util.TestAuthenticationProvider;
import org.junit.After;
diff --git a/ui/src/androidTest/java/com/hyperwallet/android/transfermethod/ui/PayPalTest.java b/ui/src/androidTest/java/com/hyperwallet/android/transfermethod/ui/PayPalTest.java
index ee49a0163..ec88b9dd0 100644
--- a/ui/src/androidTest/java/com/hyperwallet/android/transfermethod/ui/PayPalTest.java
+++ b/ui/src/androidTest/java/com/hyperwallet/android/transfermethod/ui/PayPalTest.java
@@ -44,13 +44,13 @@
import androidx.test.rule.ActivityTestRule;
import com.hyperwallet.android.Hyperwallet;
+import com.hyperwallet.android.common.util.EspressoIdlingResource;
import com.hyperwallet.android.hyperwallet_ui.R;
import com.hyperwallet.android.model.transfermethod.HyperwalletTransferMethod;
import com.hyperwallet.android.rule.HyperwalletExternalResourceManager;
import com.hyperwallet.android.rule.HyperwalletMockWebServer;
import com.hyperwallet.android.ui.repository.RepositoryFactory;
import com.hyperwallet.android.ui.transfermethod.AddTransferMethodActivity;
-import com.hyperwallet.android.ui.util.EspressoIdlingResource;
import com.hyperwallet.android.util.TestAuthenticationProvider;
import org.junit.After;
diff --git a/ui/src/androidTest/java/com/hyperwallet/android/transfermethod/ui/SelectTransferMethodTest.java b/ui/src/androidTest/java/com/hyperwallet/android/transfermethod/ui/SelectTransferMethodTest.java
index 346b77ac5..c644703cd 100644
--- a/ui/src/androidTest/java/com/hyperwallet/android/transfermethod/ui/SelectTransferMethodTest.java
+++ b/ui/src/androidTest/java/com/hyperwallet/android/transfermethod/ui/SelectTransferMethodTest.java
@@ -42,12 +42,12 @@
import androidx.test.rule.ActivityTestRule;
import com.hyperwallet.android.Hyperwallet;
+import com.hyperwallet.android.common.util.EspressoIdlingResource;
import com.hyperwallet.android.hyperwallet_ui.R;
import com.hyperwallet.android.rule.HyperwalletExternalResourceManager;
import com.hyperwallet.android.rule.HyperwalletMockWebServer;
import com.hyperwallet.android.ui.repository.RepositoryFactory;
import com.hyperwallet.android.ui.transfermethod.SelectTransferMethodActivity;
-import com.hyperwallet.android.ui.util.EspressoIdlingResource;
import com.hyperwallet.android.util.RecyclerViewCountAssertion;
import com.hyperwallet.android.util.TestAuthenticationProvider;
diff --git a/ui/src/main/java/com/hyperwallet/android/ui/HyperwalletUi.java b/ui/src/main/java/com/hyperwallet/android/ui/HyperwalletUi.java
index 4c5759831..d2f6b9123 100644
--- a/ui/src/main/java/com/hyperwallet/android/ui/HyperwalletUi.java
+++ b/ui/src/main/java/com/hyperwallet/android/ui/HyperwalletUi.java
@@ -84,9 +84,9 @@ public Intent getIntentSelectTransferMethodActivity(@NonNull final Context conte
* @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.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.HyperwalletUser.ProfileTypes}
+ * {@link com.hyperwallet.android.model.user.HyperwalletUser.ProfileTypes}
* @return an Intent with the data necessary to launch the {@link AddTransferMethodActivity}
*/
public Intent getIntentAddTransferMethodActivity(@NonNull final Context context, @NonNull final String country,
diff --git a/ui/src/main/java/com/hyperwallet/android/ui/repository/RepositoryFactory.java b/ui/src/main/java/com/hyperwallet/android/ui/repository/RepositoryFactory.java
index ec2a3a935..8ae21ee6d 100644
--- a/ui/src/main/java/com/hyperwallet/android/ui/repository/RepositoryFactory.java
+++ b/ui/src/main/java/com/hyperwallet/android/ui/repository/RepositoryFactory.java
@@ -46,6 +46,10 @@ public static synchronized RepositoryFactory getInstance() {
return sInstance;
}
+ public static void clearInstance() {
+ sInstance = null;
+ }
+
public TransferMethodConfigurationRepository getTransferMethodConfigurationRepository() {
return mTransferMethodConfigurationRepository;
}
@@ -57,8 +61,4 @@ public TransferMethodRepository getTransferMethodRepository() {
public UserRepository getUserRepository() {
return mUserRepository;
}
-
- public static void clearInstance() {
- sInstance = null;
- }
}
diff --git a/ui/src/main/java/com/hyperwallet/android/ui/repository/TransferMethodConfigurationRepositoryImpl.java b/ui/src/main/java/com/hyperwallet/android/ui/repository/TransferMethodConfigurationRepositoryImpl.java
index 6a07b1c6c..4fe1861a4 100644
--- a/ui/src/main/java/com/hyperwallet/android/ui/repository/TransferMethodConfigurationRepositoryImpl.java
+++ b/ui/src/main/java/com/hyperwallet/android/ui/repository/TransferMethodConfigurationRepositoryImpl.java
@@ -33,6 +33,7 @@
import androidx.annotation.VisibleForTesting;
import com.hyperwallet.android.Hyperwallet;
+import com.hyperwallet.android.common.util.EspressoIdlingResource;
import com.hyperwallet.android.exception.HyperwalletException;
import com.hyperwallet.android.listener.HyperwalletListener;
import com.hyperwallet.android.model.graphql.HyperwalletTransferMethodConfigurationField;
@@ -40,7 +41,7 @@
import com.hyperwallet.android.model.graphql.keyed.HyperwalletTransferMethodType;
import com.hyperwallet.android.model.graphql.query.HyperwalletTransferMethodConfigurationFieldQuery;
import com.hyperwallet.android.model.graphql.query.HyperwalletTransferMethodConfigurationKeysQuery;
-import com.hyperwallet.android.ui.util.EspressoIdlingResource;
+import com.hyperwallet.android.common.util.EspressoIdlingResource;
import java.util.HashMap;
import java.util.Map;
@@ -48,9 +49,9 @@
import java.util.Set;
public class TransferMethodConfigurationRepositoryImpl implements TransferMethodConfigurationRepository {
- private HyperwalletTransferMethodConfigurationKey mTransferMethodConfigurationKey;
private final Handler mHandler;
private final Map mFieldMap;
+ private HyperwalletTransferMethodConfigurationKey mTransferMethodConfigurationKey;
TransferMethodConfigurationRepositoryImpl() {
mHandler = new Handler();
diff --git a/ui/src/main/java/com/hyperwallet/android/ui/repository/TransferMethodRepositoryImpl.java b/ui/src/main/java/com/hyperwallet/android/ui/repository/TransferMethodRepositoryImpl.java
index 2a17b4aba..7d6b77063 100644
--- a/ui/src/main/java/com/hyperwallet/android/ui/repository/TransferMethodRepositoryImpl.java
+++ b/ui/src/main/java/com/hyperwallet/android/ui/repository/TransferMethodRepositoryImpl.java
@@ -38,7 +38,6 @@
import com.hyperwallet.android.model.transfermethod.HyperwalletTransferMethod;
import com.hyperwallet.android.model.transfermethod.PayPalAccount;
-
public class TransferMethodRepositoryImpl implements TransferMethodRepository {
private Handler mHandler = new Handler();
diff --git a/ui/src/main/java/com/hyperwallet/android/ui/transfermethod/AddTransferMethodActivity.java b/ui/src/main/java/com/hyperwallet/android/ui/transfermethod/AddTransferMethodActivity.java
index 26cc9154b..4dbd6eb55 100644
--- a/ui/src/main/java/com/hyperwallet/android/ui/transfermethod/AddTransferMethodActivity.java
+++ b/ui/src/main/java/com/hyperwallet/android/ui/transfermethod/AddTransferMethodActivity.java
@@ -28,12 +28,12 @@
import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentTransaction;
+import com.hyperwallet.android.common.view.error.DefaultErrorDialogFragment;
+import com.hyperwallet.android.common.view.error.OnNetworkErrorCallback;
import com.hyperwallet.android.hyperwallet_ui.R;
import com.hyperwallet.android.model.HyperwalletError;
import com.hyperwallet.android.ui.view.WidgetDateDialogFragment;
import com.hyperwallet.android.ui.view.WidgetSelectionDialogFragment;
-import com.hyperwallet.android.ui.view.error.DefaultErrorDialogFragment;
-import com.hyperwallet.android.ui.view.error.OnNetworkErrorCallback;
import java.util.List;
diff --git a/ui/src/main/java/com/hyperwallet/android/ui/transfermethod/ListTransferMethodActivity.java b/ui/src/main/java/com/hyperwallet/android/ui/transfermethod/ListTransferMethodActivity.java
index daaeafd5a..9f3f37654 100644
--- a/ui/src/main/java/com/hyperwallet/android/ui/transfermethod/ListTransferMethodActivity.java
+++ b/ui/src/main/java/com/hyperwallet/android/ui/transfermethod/ListTransferMethodActivity.java
@@ -30,11 +30,11 @@
import androidx.fragment.app.FragmentTransaction;
import com.google.android.material.floatingactionbutton.FloatingActionButton;
+import com.hyperwallet.android.common.view.error.DefaultErrorDialogFragment;
+import com.hyperwallet.android.common.view.error.OnNetworkErrorCallback;
import com.hyperwallet.android.hyperwallet_ui.R;
import com.hyperwallet.android.model.HyperwalletError;
import com.hyperwallet.android.model.transfermethod.HyperwalletTransferMethod;
-import com.hyperwallet.android.ui.view.error.DefaultErrorDialogFragment;
-import com.hyperwallet.android.ui.view.error.OnNetworkErrorCallback;
import com.hyperwallet.android.ui.view.widget.OneClickListener;
import java.util.List;
diff --git a/ui/src/main/java/com/hyperwallet/android/ui/transfermethod/SelectTransferMethodActivity.java b/ui/src/main/java/com/hyperwallet/android/ui/transfermethod/SelectTransferMethodActivity.java
index 5a8ff0e92..a0582988b 100644
--- a/ui/src/main/java/com/hyperwallet/android/ui/transfermethod/SelectTransferMethodActivity.java
+++ b/ui/src/main/java/com/hyperwallet/android/ui/transfermethod/SelectTransferMethodActivity.java
@@ -31,12 +31,12 @@
import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentTransaction;
+import com.hyperwallet.android.common.view.error.DefaultErrorDialogFragment;
+import com.hyperwallet.android.common.view.error.OnNetworkErrorCallback;
import com.hyperwallet.android.hyperwallet_ui.R;
import com.hyperwallet.android.model.HyperwalletError;
import com.hyperwallet.android.ui.view.CountrySelectionDialogFragment;
import com.hyperwallet.android.ui.view.CurrencySelectionDialogFragment;
-import com.hyperwallet.android.ui.view.error.DefaultErrorDialogFragment;
-import com.hyperwallet.android.ui.view.error.OnNetworkErrorCallback;
import java.util.List;
diff --git a/ui/src/main/java/com/hyperwallet/android/ui/transfermethod/SelectTransferMethodFragment.java b/ui/src/main/java/com/hyperwallet/android/ui/transfermethod/SelectTransferMethodFragment.java
index 193aefd14..aa4a9408f 100644
--- a/ui/src/main/java/com/hyperwallet/android/ui/transfermethod/SelectTransferMethodFragment.java
+++ b/ui/src/main/java/com/hyperwallet/android/ui/transfermethod/SelectTransferMethodFragment.java
@@ -354,6 +354,11 @@ public void reloadCurrencySelection() {
mPresenter.loadCurrencySelection(mSelectedCountryCode, mSelectedCurrencyCode);
}
+ private String getCountryDisplay(@NonNull final String countryCode) {
+ Locale locale = new Locale.Builder().setRegion(countryCode).build();
+ return locale.getDisplayName();
+ }
+
public interface TransferMethodSelectionItemListener {
void onTransferMethodSelected(TransferMethodSelectionItem transferMethodType);
@@ -384,11 +389,6 @@ interface OnLoadCurrencySelectionNetworkErrorCallback {
void showErrorsLoadCurrencySelection(@NonNull final List errors);
}
- private String getCountryDisplay(@NonNull final String countryCode) {
- Locale locale = new Locale.Builder().setRegion(countryCode).build();
- return locale.getDisplayName();
- }
-
private static class TransferMethodTypesAdapter extends
RecyclerView.Adapter {
diff --git a/ui/src/main/java/com/hyperwallet/android/ui/view/CountrySelectionDialogFragment.java b/ui/src/main/java/com/hyperwallet/android/ui/view/CountrySelectionDialogFragment.java
index 91c35c5e3..828697756 100644
--- a/ui/src/main/java/com/hyperwallet/android/ui/view/CountrySelectionDialogFragment.java
+++ b/ui/src/main/java/com/hyperwallet/android/ui/view/CountrySelectionDialogFragment.java
@@ -217,6 +217,10 @@ public void onView() {
}
}
+ public interface CountrySelectionItemClickListener {
+ void onCountryItemClicked(String countryCode);
+ }
+
private static class Adapter extends RecyclerView.Adapter implements Filterable {
private TreeMap mCountryNameCodeFilteredMap;
@@ -350,8 +354,4 @@ void recycle() {
}
}
}
-
- public interface CountrySelectionItemClickListener {
- void onCountryItemClicked(String countryCode);
- }
}
diff --git a/ui/src/main/java/com/hyperwallet/android/ui/view/CurrencySelectionDialogFragment.java b/ui/src/main/java/com/hyperwallet/android/ui/view/CurrencySelectionDialogFragment.java
index 52f6428e3..84e0ed3fc 100644
--- a/ui/src/main/java/com/hyperwallet/android/ui/view/CurrencySelectionDialogFragment.java
+++ b/ui/src/main/java/com/hyperwallet/android/ui/view/CurrencySelectionDialogFragment.java
@@ -233,6 +233,10 @@ public void hideSoftKey(@NonNull View focusedView) {
inputMethodManager.hideSoftInputFromWindow(focusedView.getWindowToken(), 0);
}
+ public interface CurrencySelectionItemClickListener {
+ void onCurrencyItemClicked(String currencyCode);
+ }
+
private static class Adapter extends RecyclerView.Adapter implements Filterable {
private TreeMap mCurrencyNameCodeFilteredMap;
@@ -367,8 +371,4 @@ void recycle() {
}
}
}
-
- public interface CurrencySelectionItemClickListener {
- void onCurrencyItemClicked(String currencyCode);
- }
}
diff --git a/ui/src/main/java/com/hyperwallet/android/ui/view/WidgetSelectionDialogFragment.java b/ui/src/main/java/com/hyperwallet/android/ui/view/WidgetSelectionDialogFragment.java
index 5dab1341b..42b98af70 100644
--- a/ui/src/main/java/com/hyperwallet/android/ui/view/WidgetSelectionDialogFragment.java
+++ b/ui/src/main/java/com/hyperwallet/android/ui/view/WidgetSelectionDialogFragment.java
@@ -232,6 +232,10 @@ public interface WidgetSelectionItemListener {
void onWidgetSelectionItemClicked(@NonNull final String selectedValue, @NonNull final String fieldName);
}
+ public interface WidgetSelectionItemType {
+ void onWidgetSelectionItemClicked(@NonNull String selectedValue);
+ }
+
private static class Adapter extends RecyclerView.Adapter implements Filterable {
private final Fragment mFragment;
@@ -370,8 +374,4 @@ void recycle() {
}
}
}
-
- public interface WidgetSelectionItemType {
- void onWidgetSelectionItemClicked(@NonNull String selectedValue);
- }
}
diff --git a/ui/src/main/java/com/hyperwallet/android/ui/view/widget/ExpiryDateWidget.java b/ui/src/main/java/com/hyperwallet/android/ui/view/widget/ExpiryDateWidget.java
index 63471a56a..8ae7dfacf 100644
--- a/ui/src/main/java/com/hyperwallet/android/ui/view/widget/ExpiryDateWidget.java
+++ b/ui/src/main/java/com/hyperwallet/android/ui/view/widget/ExpiryDateWidget.java
@@ -42,8 +42,8 @@
import com.hyperwallet.android.model.graphql.field.HyperwalletField;
public class ExpiryDateWidget extends AbstractWidget {
- private ViewGroup mContainer;
private final ExpireDateUtil mExpireDateUtil;
+ private ViewGroup mContainer;
private TextInputLayout mTextInputLayout;
private String mValue;
private String mMessageInvalidDateLength;
diff --git a/ui/src/main/res/values/strings.xml b/ui/src/main/res/values/strings.xml
index 659d07697..0c983668d 100644
--- a/ui/src/main/res/values/strings.xml
+++ b/ui/src/main/res/values/strings.xml
@@ -7,7 +7,8 @@
Select Transfer Method
- @string/title_activity_select_transfer_method
+ @string/title_activity_select_transfer_method
+
Country
Currency
@@ -26,9 +27,6 @@
Default Account
Select account as default method
MM/YY
- Error
- Connectivity Issue
- Unexpected Error
Transaction Fee:
Processing Time:
@@ -47,9 +45,6 @@
Remove account
Remove
- Cancel
- Close
- Try again
Transfer Funds
diff --git a/ui/src/main/res/values/styles.xml b/ui/src/main/res/values/styles.xml
index 6d39a8667..e5448bfce 100644
--- a/ui/src/main/res/values/styles.xml
+++ b/ui/src/main/res/values/styles.xml
@@ -1,4 +1,4 @@
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/ui/src/test/java/com/hyperwallet/android/ui/repository/TransferMethodRepositoryImplTest.java b/ui/src/test/java/com/hyperwallet/android/ui/repository/TransferMethodRepositoryImplTest.java
index 651cf534c..6135c42b2 100644
--- a/ui/src/test/java/com/hyperwallet/android/ui/repository/TransferMethodRepositoryImplTest.java
+++ b/ui/src/test/java/com/hyperwallet/android/ui/repository/TransferMethodRepositoryImplTest.java
@@ -58,6 +58,12 @@
@RunWith(RobolectricTestRunner.class)
public class TransferMethodRepositoryImplTest {
+ @Rule
+ public ExpectedException mThrown = ExpectedException.none();
+ @Rule
+ public MockitoRule mMockito = MockitoJUnit.rule();
+ @Spy
+ TransferMethodRepositoryImpl mTransferMethodRepository;
@Mock
private Hyperwallet mHyperwallet;
@Mock
@@ -78,12 +84,6 @@ public class TransferMethodRepositoryImplTest {
private ArgumentCaptor mStatusTransitionArgumentCaptor;
@Captor
private ArgumentCaptor> mListTransferMethodCaptor;
- @Rule
- public ExpectedException mThrown = ExpectedException.none();
- @Rule
- public MockitoRule mMockito = MockitoJUnit.rule();
- @Spy
- TransferMethodRepositoryImpl mTransferMethodRepository;
@Before
public void setup() {
diff --git a/ui/src/test/java/com/hyperwallet/android/ui/repository/UserRepositoryImplTest.java b/ui/src/test/java/com/hyperwallet/android/ui/repository/UserRepositoryImplTest.java
index 42aff932e..d35c7fa3a 100644
--- a/ui/src/test/java/com/hyperwallet/android/ui/repository/UserRepositoryImplTest.java
+++ b/ui/src/test/java/com/hyperwallet/android/ui/repository/UserRepositoryImplTest.java
@@ -42,18 +42,18 @@
@RunWith(RobolectricTestRunner.class)
public class UserRepositoryImplTest {
- @Mock
- private Hyperwallet mHyperwallet;
+ @Rule
+ public MockitoRule mMockito = MockitoJUnit.rule();
@Mock
UserRepository.LoadUserCallback mMockCallback;
+ @Spy
+ UserRepositoryImpl mUserRepository;
+ @Mock
+ private Hyperwallet mHyperwallet;
@Captor
private ArgumentCaptor mErrorCaptor;
@Captor
private ArgumentCaptor mUserCaptor;
- @Rule
- public MockitoRule mMockito = MockitoJUnit.rule();
- @Spy
- UserRepositoryImpl mUserRepository;
@Before
public void setup() {
diff --git a/ui/src/test/java/com/hyperwallet/android/ui/transfermethod/AddTransferMethodPresenterTest.java b/ui/src/test/java/com/hyperwallet/android/ui/transfermethod/AddTransferMethodPresenterTest.java
index 695ea3d0a..623caad7b 100644
--- a/ui/src/test/java/com/hyperwallet/android/ui/transfermethod/AddTransferMethodPresenterTest.java
+++ b/ui/src/test/java/com/hyperwallet/android/ui/transfermethod/AddTransferMethodPresenterTest.java
@@ -57,8 +57,11 @@ public class AddTransferMethodPresenterTest {
private final HyperwalletBankAccount bankAccount = new HyperwalletBankAccount
.Builder("CA", "CAD", "3423423432")
.build();
+ @Rule
+ public MockitoRule mockito = MockitoJUnit.rule();
+ @Rule
+ public HyperwalletExternalResourceManager externalResourceManager = new HyperwalletExternalResourceManager();
private AddTransferMethodPresenter presenter;
-
@Mock
private TransferMethodConfigurationRepository tmcRepository;
@Mock
@@ -69,10 +72,6 @@ public class AddTransferMethodPresenterTest {
private ArgumentCaptor> fieldArgumentCaptor;
@Captor
private ArgumentCaptor> mErrorListArgumentCaptor;
- @Rule
- public MockitoRule mockito = MockitoJUnit.rule();
- @Rule
- public HyperwalletExternalResourceManager externalResourceManager = new HyperwalletExternalResourceManager();
@Before
public void setUp() {
diff --git a/ui/src/test/java/com/hyperwallet/android/ui/transfermethod/FeeFormatterTest.java b/ui/src/test/java/com/hyperwallet/android/ui/transfermethod/FeeFormatterTest.java
index b6e46f9f9..269efa42e 100644
--- a/ui/src/test/java/com/hyperwallet/android/ui/transfermethod/FeeFormatterTest.java
+++ b/ui/src/test/java/com/hyperwallet/android/ui/transfermethod/FeeFormatterTest.java
@@ -33,6 +33,8 @@ public class FeeFormatterTest {
@Rule
public MockitoRule mockito = MockitoJUnit.rule();
+ @Rule
+ public HyperwalletExternalResourceManager externalResourceManager = new HyperwalletExternalResourceManager();
@Captor
private ArgumentCaptor resourceIdCaptor;
@Captor
@@ -41,9 +43,6 @@ public class FeeFormatterTest {
private Context context;
@Mock
private Resources resources;
- @Rule
- public HyperwalletExternalResourceManager externalResourceManager = new HyperwalletExternalResourceManager();
-
private HyperwalletFee mFlatFee;
private JSONObject mJSONObject;
diff --git a/ui/src/test/java/com/hyperwallet/android/ui/transfermethod/ListTransferMethodPresenterTest.java b/ui/src/test/java/com/hyperwallet/android/ui/transfermethod/ListTransferMethodPresenterTest.java
index aa674e769..b1d95f838 100644
--- a/ui/src/test/java/com/hyperwallet/android/ui/transfermethod/ListTransferMethodPresenterTest.java
+++ b/ui/src/test/java/com/hyperwallet/android/ui/transfermethod/ListTransferMethodPresenterTest.java
@@ -57,6 +57,14 @@
public class ListTransferMethodPresenterTest {
+ private final HyperwalletErrors errors = createErrors();
+ private final HyperwalletBankAccount bankAccount = new HyperwalletBankAccount
+ .Builder("CA", "CAD", "3423423432")
+ .build();
+ private final HyperwalletStatusTransition statusTransition =
+ new HyperwalletStatusTransition(HyperwalletStatusTransition.StatusDefinition.DE_ACTIVATED);
+ @Rule
+ public MockitoRule mMockito = MockitoJUnit.rule();
@Mock
private TransferMethodRepository mTransferMethodRepository;
@Mock
@@ -65,15 +73,6 @@ public class ListTransferMethodPresenterTest {
private ArgumentCaptor> mListArgumentErrorCaptor;
@Captor
private ArgumentCaptor> mListArgumentTransferMethodCaptor;
- @Rule
- public MockitoRule mMockito = MockitoJUnit.rule();
-
- private final HyperwalletErrors errors = createErrors();
- private final HyperwalletBankAccount bankAccount = new HyperwalletBankAccount
- .Builder("CA", "CAD", "3423423432")
- .build();
- private final HyperwalletStatusTransition statusTransition =
- new HyperwalletStatusTransition(HyperwalletStatusTransition.StatusDefinition.DE_ACTIVATED);
private ListTransferMethodPresenter presenter;
@Before
diff --git a/ui/src/test/java/com/hyperwallet/android/ui/transfermethod/SelectTransferMethodPresenterTest.java b/ui/src/test/java/com/hyperwallet/android/ui/transfermethod/SelectTransferMethodPresenterTest.java
index e58c7c6f2..9a109230a 100644
--- a/ui/src/test/java/com/hyperwallet/android/ui/transfermethod/SelectTransferMethodPresenterTest.java
+++ b/ui/src/test/java/com/hyperwallet/android/ui/transfermethod/SelectTransferMethodPresenterTest.java
@@ -41,19 +41,18 @@
@RunWith(RobolectricTestRunner.class)
public class SelectTransferMethodPresenterTest {
+ private final HyperwalletErrors errors = createErrors();
+ @Rule
+ public HyperwalletExternalResourceManager externalResourceManager = new HyperwalletExternalResourceManager();
@Mock
private SelectTransferMethodContract.View view;
@Mock
private TransferMethodConfigurationRepositoryImpl mTransferMethodConfigurationRepository;
@Mock
private UserRepositoryImpl mUserRepository;
- @Rule
- public HyperwalletExternalResourceManager externalResourceManager = new HyperwalletExternalResourceManager();
-
private HyperwalletTransferMethodConfigurationKey mResult;
private HyperwalletUser mUser;
private SelectTransferMethodPresenter selectTransferMethodPresenter;
- private final HyperwalletErrors errors = createErrors();
@Before
public void initialize() throws Exception {