diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 33630e0e..c1bd652a 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -19,7 +19,7 @@ jobs: strategy: fail-fast: false matrix: - java-version: [ 11 ] + java-version: [ 17 ] steps: - uses: actions/checkout@v4 @@ -27,11 +27,11 @@ jobs: - name: Setup JDK ${{ matrix.java }} uses: actions/setup-java@v4 with: - distribution: 'zulu' + distribution: 'temurin' java-version: ${{ matrix.java-version }} - name: Setup Android SDK - uses: android-actions/setup-android@v2 + uses: android-actions/setup-android@v3 - name: Build CORE SDK ${{ matrix.java-version }} run: ./gradlew --scan clean lint testDebugUnitTest jacocoTestCoverageVerification diff --git a/build.gradle b/build.gradle index 2afc2280..5fc3e32a 100644 --- a/build.gradle +++ b/build.gradle @@ -6,7 +6,7 @@ buildscript { mavenLocal() } dependencies { - classpath 'com.android.tools.build:gradle:3.6.4' + classpath 'com.android.tools.build:gradle:7.4.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 @@ -19,7 +19,7 @@ allprojects { mavenCentral() mavenLocal() } - project.version = "1.0.2" + project.version = "1.0.3-beta-1" } task clean(type: Delete) { diff --git a/core/build.gradle b/core/build.gradle index 5155631c..a49094df 100644 --- a/core/build.gradle +++ b/core/build.gradle @@ -11,8 +11,8 @@ android { minSdkVersion 21 targetSdkVersion 34 versionCode 4 - versionName version testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" + buildConfigField("String", "VERSION_NAME", "\"$version\"") } buildTypes { @@ -24,7 +24,7 @@ android { // Rename the artifact to core-.aar, required since gradle 7 libraryVariants.all { variant -> variant.outputs.all { output -> - outputFileName = "${archivesBaseName}-${defaultConfig.versionName}.aar" + outputFileName = "${archivesBaseName}-${version}.aar" } } } @@ -43,16 +43,16 @@ android { dependencies { - implementation "androidx.appcompat:appcompat:1.2.0" - implementation "androidx.annotation:annotation:1.8.2" + implementation 'androidx.appcompat:appcompat:1.7.0' + implementation 'androidx.annotation:annotation:1.9.1' testImplementation 'junit:junit:4.13.2' - testImplementation 'org.robolectric:robolectric:4.12.2' - testImplementation "org.mockito:mockito-core:3.2.0" + testImplementation 'org.robolectric:robolectric:4.14.1' + testImplementation 'org.mockito:mockito-core:5.15.2' testImplementation "com.squareup.okhttp3:mockwebserver:4.12.0" testImplementation group: 'pl.pragmatists', name: 'JUnitParams', version: "1.1.1" - testImplementation 'org.hamcrest:hamcrest:2.1' - testImplementation 'org.hamcrest:hamcrest-library:2.1' + testImplementation 'org.hamcrest:hamcrest:3.0' + testImplementation 'org.hamcrest:hamcrest-library:3.0' } diff --git a/core/config/jacoco-settings.gradle b/core/config/jacoco-settings.gradle index 93a68657..a970988b 100644 --- a/core/config/jacoco-settings.gradle +++ b/core/config/jacoco-settings.gradle @@ -1,6 +1,6 @@ apply plugin: 'jacoco' -final def jacocoVersion = "0.8.2" +final def jacocoVersion = "0.8.8" jacoco { toolVersion = jacocoVersion diff --git a/core/src/test/java/com/hyperwallet/android/ConfigurationTest.java b/core/src/test/java/com/hyperwallet/android/ConfigurationTest.java index 9b90d1c6..bcfec099 100644 --- a/core/src/test/java/com/hyperwallet/android/ConfigurationTest.java +++ b/core/src/test/java/com/hyperwallet/android/ConfigurationTest.java @@ -6,6 +6,8 @@ import static org.hamcrest.Matchers.notNullValue; import static org.junit.Assert.fail; +import com.hyperwallet.android.util.MockShadowSystemClock; + import org.json.JSONException; import org.junit.BeforeClass; import org.junit.Rule; @@ -13,10 +15,12 @@ import org.junit.rules.ExpectedException; import org.junit.runner.RunWith; import org.robolectric.RobolectricTestRunner; +import org.robolectric.annotation.Config; import java.util.Date; @RunWith(RobolectricTestRunner.class) +@Config(shadows = { MockShadowSystemClock.class}) public class ConfigurationTest { private static Configuration mConfiguration; diff --git a/core/src/test/java/com/hyperwallet/android/RestTransactionBuilderTest.java b/core/src/test/java/com/hyperwallet/android/RestTransactionBuilderTest.java index 88b10ccc..3e2d14cf 100644 --- a/core/src/test/java/com/hyperwallet/android/RestTransactionBuilderTest.java +++ b/core/src/test/java/com/hyperwallet/android/RestTransactionBuilderTest.java @@ -67,7 +67,7 @@ public void testBuild_withRequiredParametersOnly() throws JSONException { assertThat(headers.get("Content-Type"), is("application/json")); assertThat(headers.get("User-Agent"), is("HyperwalletSDK/Android/" + BuildConfig.VERSION_NAME + "; App: HyperwalletSDK; Android: " + Build.VERSION.RELEASE)); - assertThat(headers.get("X-Sdk-Version"), is("1.0.2")); + assertThat(headers.get("X-Sdk-Version"), is("1.0.3-beta-1")); assertThat(headers.get("X-Sdk-Type"), is("android")); assertThat(headers.get("X-Sdk-ContextId"), is(notNullValue())); assertThat(headers.get("X-Sdk-ContextId"), is(contextId)); @@ -104,7 +104,7 @@ public void testBuild_withJsonModelOptionalParameter() throws JSONException { assertThat(headers.get("Content-Type"), is("application/json")); assertThat(headers.get("User-Agent"), is("HyperwalletSDK/Android/" + BuildConfig.VERSION_NAME + "; App: HyperwalletSDK; Android: " + Build.VERSION.RELEASE)); - assertThat(headers.get("X-Sdk-Version"), is("1.0.2")); + assertThat(headers.get("X-Sdk-Version"), is("1.0.3-beta-1")); assertThat(headers.get("X-Sdk-Type"), is("android")); assertThat(headers.get("X-Sdk-ContextId"), is(notNullValue())); assertThat(headers.get("X-Sdk-ContextId"), is(contextId)); @@ -140,7 +140,7 @@ public void testBuild_withQueryModelOptionalParameter() throws JSONException { assertThat(headers.get("Content-Type"), is("application/json")); assertThat(headers.get("User-Agent"), is("HyperwalletSDK/Android/" + BuildConfig.VERSION_NAME + "; App: HyperwalletSDK; Android: " + Build.VERSION.RELEASE)); - assertThat(headers.get("X-Sdk-Version"), is("1.0.2")); + assertThat(headers.get("X-Sdk-Version"), is("1.0.3-beta-1")); assertThat(headers.get("X-Sdk-Type"), is("android")); assertThat(headers.get("X-Sdk-ContextId"), is(notNullValue())); assertThat(headers.get("X-Sdk-ContextId"), is(contextId)); diff --git a/core/src/test/java/com/hyperwallet/android/balance/ListBalancesTest.java b/core/src/test/java/com/hyperwallet/android/balance/ListBalancesTest.java index 329694ee..7f97d0a2 100644 --- a/core/src/test/java/com/hyperwallet/android/balance/ListBalancesTest.java +++ b/core/src/test/java/com/hyperwallet/android/balance/ListBalancesTest.java @@ -21,7 +21,6 @@ import com.hyperwallet.android.Hyperwallet; import com.hyperwallet.android.exception.HyperwalletException; -import com.hyperwallet.android.exception.HyperwalletRestException; import com.hyperwallet.android.listener.HyperwalletListener; import com.hyperwallet.android.model.Error; import com.hyperwallet.android.model.Errors; @@ -32,6 +31,7 @@ import com.hyperwallet.android.rule.HyperwalletMockWebServer; import com.hyperwallet.android.rule.HyperwalletSdkMock; import com.hyperwallet.android.sdk.R; +import com.hyperwallet.android.util.MockShadowSystemClock; import org.junit.Rule; import org.junit.Test; @@ -42,6 +42,7 @@ import org.mockito.junit.MockitoJUnit; import org.mockito.junit.MockitoRule; import org.robolectric.RobolectricTestRunner; +import org.robolectric.annotation.Config; import java.util.concurrent.CountDownLatch; import java.util.concurrent.TimeUnit; @@ -49,6 +50,7 @@ import okhttp3.mockwebserver.RecordedRequest; @RunWith(RobolectricTestRunner.class) +@Config(shadows = { MockShadowSystemClock.class}) public class ListBalancesTest { @Rule public ExternalResourceManager mExternalResourceManager = new ExternalResourceManager(); diff --git a/core/src/test/java/com/hyperwallet/android/transfermethod/DeactivateBankCardTest.java b/core/src/test/java/com/hyperwallet/android/transfermethod/DeactivateBankCardTest.java index 023f68a7..3eba01ac 100644 --- a/core/src/test/java/com/hyperwallet/android/transfermethod/DeactivateBankCardTest.java +++ b/core/src/test/java/com/hyperwallet/android/transfermethod/DeactivateBankCardTest.java @@ -4,7 +4,7 @@ import static org.hamcrest.Matchers.endsWith; import static org.hamcrest.Matchers.is; import static org.junit.Assert.assertNotNull; -import static org.mockito.Matchers.any; +import static org.mockito.ArgumentMatchers.any; import static org.mockito.Mockito.never; import static org.mockito.Mockito.verify; diff --git a/core/src/test/java/com/hyperwallet/android/util/MockShadowSystemClock.java b/core/src/test/java/com/hyperwallet/android/util/MockShadowSystemClock.java new file mode 100644 index 00000000..b3dab5df --- /dev/null +++ b/core/src/test/java/com/hyperwallet/android/util/MockShadowSystemClock.java @@ -0,0 +1,21 @@ +package com.hyperwallet.android.util; + +import android.os.SystemClock; + +import org.robolectric.annotation.Implements; + +/** + * Simple SystemClock Shadow representation + *

+ * Since Gradle 7, the Shadows SystemClock no longer supported + * by Android Shadow provided by Robolectric + */ +@Implements(value = SystemClock.class, callThroughByDefault = true) +public final class MockShadowSystemClock { + private MockShadowSystemClock() { + } + + public static long elapsedRealtime() { + return 0; + } +} \ No newline at end of file diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 95533201..cef19d64 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ -#Tue Jun 04 07:20:15 PDT 2024 +#Tue Feb 18 18:24:15 EST 2025 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.4-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-7.5-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists