-

vgscollect 1.6.10 API

+

vgscollect 1.6.11 API

diff --git a/gradle.properties b/gradle.properties index ba90dac27..da8b25eb3 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,26 +1,10 @@ -# Project-wide Gradle settings. -# IDE (e.g. Android Studio) users: -# Gradle settings configured through the IDE *will override* -# any settings specified in this file. -# For more details on how to configure your build environment visit -# http://www.gradle.org/docs/current/userguide/build_environment.html -# Specifies the JVM arguments used for the daemon process. -# The setting is particularly useful for tweaking memory settings. org.gradle.jvmargs=-Xmx1536m -# When configured, Gradle will run in incubating parallel mode. -# This option should only be used with decoupled projects. More details, visit -# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects -# org.gradle.parallel=true -# AndroidX package structure to make it clearer which packages are bundled with the -# Android operating system, and which are packaged with your app's APK -# https://developer.android.com/topic/libraries/support-library/androidx-rn + android.useAndroidX=true -# Automatically convert third-party libraries to use AndroidX android.enableJetifier=true -# Kotlin code style for this project: "official" or "obsolete": + kotlin.code.style=official -# Maven central # General info GROUP=com.verygoodsecurity @@ -33,4 +17,4 @@ POM_SCM_DEV_CONNECTION=scm:git:ssh://git@github.com:verygoodsecurity/vgs-collect # License POM_LICENCE_NAME=MIT License POM_LICENCE_URL=https://opensource.org/licenses/MIT -POM_LICENCE_DIST=repo +POM_LICENCE_DIST=repo \ No newline at end of file diff --git a/gradle/gradle-dependencies.gradle b/gradle/gradle-dependencies.gradle new file mode 100644 index 000000000..4cfffee49 --- /dev/null +++ b/gradle/gradle-dependencies.gradle @@ -0,0 +1,12 @@ +ext { + junit_version = '4.13.2' + mockito_version = '3.11.2' + androidx_test_rules_version = '1.4.0' + androidx_test_runner_version = '1.4.0' + androidx_test_junit_version = '1.1.3' + androidx_test_espresso_espresso_core_version = '3.4.0' + + android_material_version = '1.4.0' + android_support_libraries = '1.3.0' + androidx_core_ktx_version = '1.6.0' +} \ No newline at end of file diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index c74c21000..79b377422 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-7.0.2-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-7.1.1-all.zip diff --git a/vgscollect-bouncer/build.gradle b/vgscollect-bouncer/build.gradle index 46fe5ccbb..be13086ad 100644 --- a/vgscollect-bouncer/build.gradle +++ b/vgscollect-bouncer/build.gradle @@ -30,7 +30,7 @@ dependencies { api project(':vgscollect') implementation "androidx.appcompat:appcompat:$android_support_libraries" - implementation 'androidx.core:core-ktx:1.5.0' + implementation "androidx.core:core-ktx:$androidx_core_ktx_version" api 'com.getbouncer:cardscan-ui:2.0.0082' api 'com.getbouncer:tensorflow-lite:2.0.0082' diff --git a/vgscollect-cardio/build.gradle b/vgscollect-cardio/build.gradle index 4ec2a2eb7..b7709ccea 100644 --- a/vgscollect-cardio/build.gradle +++ b/vgscollect-cardio/build.gradle @@ -31,7 +31,7 @@ dependencies { api project(':vgscollect') implementation "androidx.appcompat:appcompat:$android_support_libraries" - implementation 'androidx.core:core-ktx:1.5.0' + implementation "androidx.core:core-ktx:$androidx_core_ktx_version" api 'io.card:android-sdk:5.5.1' diff --git a/vgscollect/build.gradle b/vgscollect/build.gradle index 7d5169c6a..a6f8f02fe 100644 --- a/vgscollect/build.gradle +++ b/vgscollect/build.gradle @@ -17,7 +17,6 @@ android { buildConfigField "String", "VERSION_NAME", "\"$VERSION_NAME\"" vectorDrawables.useSupportLibrary = true - javaCompileOptions.annotationProcessorOptions.includeCompileClasspath = true testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" consumerProguardFiles 'consumer-rules.pro' } @@ -60,20 +59,20 @@ tasks.withType(Javadoc).all { dependencies { implementation "androidx.appcompat:appcompat:$android_support_libraries" - implementation 'androidx.core:core-ktx:1.5.0' - api "com.google.android.material:material:1.3.0" + implementation "androidx.core:core-ktx:$androidx_core_ktx_version" + api "com.google.android.material:material:$android_material_version" api 'com.squareup.okhttp3:okhttp:4.9.1' - testImplementation 'junit:junit:4.13.2' + testImplementation "junit:junit:$junit_version" testImplementation "org.mockito:mockito-core:$mockito_version" testImplementation "org.mockito:mockito-inline:$mockito_version" testImplementation 'org.json:json:20210307' testImplementation "org.robolectric:robolectric:4.5.1" - testImplementation "io.mockk:mockk:1.10.0" - testImplementation "org.skyscreamer:jsonassert:1.2.3" - androidTestImplementation 'androidx.test:runner:1.3.0' - androidTestImplementation 'androidx.test.ext:junit:1.1.2' - androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0' + testImplementation "io.mockk:mockk:1.12.0" + testImplementation "org.skyscreamer:jsonassert:1.5.0" + androidTestImplementation "androidx.test:runner:$androidx_test_runner_version" + androidTestImplementation "androidx.test.ext:junit:$androidx_test_junit_version" + androidTestImplementation "androidx.test.espresso:espresso-core:$androidx_test_espresso_espresso_core_version" dokkaHtmlPlugin("org.jetbrains.dokka:dokka-base:$dokka_version") } diff --git a/vgscollect/gradle.properties b/vgscollect/gradle.properties index 73e3a6052..9c9e62eac 100644 --- a/vgscollect/gradle.properties +++ b/vgscollect/gradle.properties @@ -6,5 +6,5 @@ POM_INCEPTION_YEAR=2021 POM_PACKAGING=aar # Version code & name -VERSION_NAME=1.6.10 -VERSION_CODE=1610 \ No newline at end of file +VERSION_NAME=1.6.11 +VERSION_CODE=1611 \ No newline at end of file diff --git a/vgscollect/src/main/java/com/verygoodsecurity/vgscollect/view/card/filter/CardBrandFilter.kt b/vgscollect/src/main/java/com/verygoodsecurity/vgscollect/view/card/filter/CardBrandFilter.kt index 3a0315efe..aa914895d 100644 --- a/vgscollect/src/main/java/com/verygoodsecurity/vgscollect/view/card/filter/CardBrandFilter.kt +++ b/vgscollect/src/main/java/com/verygoodsecurity/vgscollect/view/card/filter/CardBrandFilter.kt @@ -1,6 +1,5 @@ package com.verygoodsecurity.vgscollect.view.card.filter -import androidx.annotation.VisibleForTesting import com.verygoodsecurity.vgscollect.util.extension.except import com.verygoodsecurity.vgscollect.util.extension.toCardBrands import com.verygoodsecurity.vgscollect.view.card.CardBrand @@ -8,7 +7,9 @@ import com.verygoodsecurity.vgscollect.view.card.CardType import java.util.regex.Pattern /** @suppress */ -class CardBrandFilter(private var divider: String? = DEFAULT_DIVIDER) : MutableCardFilter { +internal class CardBrandFilter : MutableCardFilter { + + internal var divider: String? = DEFAULT_DIVIDER private val customCardBrands = mutableListOf() private val availableCardBrands: List get() = customCardBrands + DEFAULT_BRANDS @@ -44,11 +45,6 @@ class CardBrandFilter(private var divider: String? = DEFAULT_DIVIDER) : MutableC return CardBrandPreview() } - @VisibleForTesting - fun setDivider(divider: String) { - this.divider = divider - } - companion object { private const val DEFAULT_DIVIDER = " " diff --git a/vgscollect/src/main/java/com/verygoodsecurity/vgscollect/view/internal/CardInputField.kt b/vgscollect/src/main/java/com/verygoodsecurity/vgscollect/view/internal/CardInputField.kt index 19f578c94..2abb88cc2 100644 --- a/vgscollect/src/main/java/com/verygoodsecurity/vgscollect/view/internal/CardInputField.kt +++ b/vgscollect/src/main/java/com/verygoodsecurity/vgscollect/view/internal/CardInputField.kt @@ -16,7 +16,6 @@ import com.verygoodsecurity.vgscollect.view.card.* import com.verygoodsecurity.vgscollect.view.card.conection.InputCardNumberConnection import com.verygoodsecurity.vgscollect.view.card.filter.CardBrandFilter import com.verygoodsecurity.vgscollect.view.card.filter.CardBrandPreview -import com.verygoodsecurity.vgscollect.view.card.filter.MutableCardFilter import com.verygoodsecurity.vgscollect.view.card.formatter.CardMaskAdapter import com.verygoodsecurity.vgscollect.view.card.formatter.CardNumberFormatter import com.verygoodsecurity.vgscollect.view.card.formatter.Formatter @@ -61,8 +60,8 @@ internal class CardInputField(context: Context) : BaseInputField(context), private var maskAdapter = CardMaskAdapter() private var cardNumberFormatter: Formatter? = null - private val cardBrandFilter: MutableCardFilter by lazy { - CardBrandFilter(divider) + private val cardBrandFilter: CardBrandFilter by lazy { + CardBrandFilter().also { it.divider = divider } } enum class PreviewIconMode { @@ -227,6 +226,7 @@ internal class CardInputField(context: Context) : BaseInputField(context), else -> this@CardInputField.divider = divider } + cardBrandFilter.divider = this@CardInputField.divider applyDividerOnMask() setupKeyListener() refreshInputConnection() diff --git a/vgscollect/src/test/java/com/verygoodsecurity/vgscollect/card/connection/InputCardNumberConnectionTest.kt b/vgscollect/src/test/java/com/verygoodsecurity/vgscollect/card/connection/InputCardNumberConnectionTest.kt index 3c4ea4b24..f2c2cc42e 100644 --- a/vgscollect/src/test/java/com/verygoodsecurity/vgscollect/card/connection/InputCardNumberConnectionTest.kt +++ b/vgscollect/src/test/java/com/verygoodsecurity/vgscollect/card/connection/InputCardNumberConnectionTest.kt @@ -175,7 +175,8 @@ class InputCardNumberConnectionTest { connection: InputRunnable, divider: String? ) { - val filter = CardBrandFilter(divider) + val filter = CardBrandFilter() + filter.divider = divider connection.addFilter(filter) } diff --git a/vgscollect/src/test/java/com/verygoodsecurity/vgscollect/card/filter/CustomCardBrandsFilteringTest.kt b/vgscollect/src/test/java/com/verygoodsecurity/vgscollect/card/filter/CustomCardBrandsFilteringTest.kt index 85e95cf58..7109922f1 100644 --- a/vgscollect/src/test/java/com/verygoodsecurity/vgscollect/card/filter/CustomCardBrandsFilteringTest.kt +++ b/vgscollect/src/test/java/com/verygoodsecurity/vgscollect/card/filter/CustomCardBrandsFilteringTest.kt @@ -69,7 +69,7 @@ class CustomCardBrandsFilteringTest { @Test fun test_detect_custom_brand_divider() { - (filter as CardBrandFilter).setDivider("-") + (filter as CardBrandFilter).divider = "-" val c1 = CardBrand("^123", "VG_Search", drawableResId = R.drawable.ic_card_front_preview_dark) val c2 = CardBrand("^777", "VGS", drawableResId = R.drawable.ic_jcb_light) @@ -83,7 +83,7 @@ class CustomCardBrandsFilteringTest { @Test fun test_detect_custom_brand_divider_2() { - (filter as CardBrandFilter).setDivider("-") + (filter as CardBrandFilter).divider = "-" val regex = "^12333" val name = "VG_Search" diff --git a/vgscollect/src/test/java/com/verygoodsecurity/vgscollect/card/filter/DefaultCardBrandsFilteringTest.kt b/vgscollect/src/test/java/com/verygoodsecurity/vgscollect/card/filter/DefaultCardBrandsFilteringTest.kt index 80bd8668f..db1fb648b 100644 --- a/vgscollect/src/test/java/com/verygoodsecurity/vgscollect/card/filter/DefaultCardBrandsFilteringTest.kt +++ b/vgscollect/src/test/java/com/verygoodsecurity/vgscollect/card/filter/DefaultCardBrandsFilteringTest.kt @@ -25,7 +25,7 @@ class DefaultCardBrandsFilteringTest { @Test fun test_elo_divider() { - (filter as CardBrandFilter).setDivider("-") + (filter as CardBrandFilter).divider = "-" val brand = filter.detect("6362-9700-0045-7013") assertEquals(brand.name, CardType.ELO.name) @@ -33,7 +33,7 @@ class DefaultCardBrandsFilteringTest { @Test fun test_elo_divider_false() { - (filter as CardBrandFilter).setDivider("-") + (filter as CardBrandFilter).divider = "-" val brand = filter.detect("4011 7800 0045 7013") assertNotEquals(brand.name, CardType.ELO.name) @@ -47,14 +47,14 @@ class DefaultCardBrandsFilteringTest { @Test fun test_visa_electron_divider() { - (filter as CardBrandFilter).setDivider("-") + (filter as CardBrandFilter).divider = "-" val brand = filter.detect("4917-3008-0000-0000") assertEquals(brand.name, CardType.VISA_ELECTRON.name) } @Test fun test_visa_electron_divider_false() { - (filter as CardBrandFilter).setDivider("-") + (filter as CardBrandFilter).divider = "-" val brand = filter.detect("4175 0008 0000 0000") assertNotEquals(brand.name, CardType.VISA_ELECTRON.name) } @@ -67,7 +67,7 @@ class DefaultCardBrandsFilteringTest { @Test fun test_maestro_13_divider() { - (filter as CardBrandFilter).setDivider("-") + (filter as CardBrandFilter).divider = "-" val brand = filter.detect("6759-6498-2643-8") assertEquals(brand.name, CardType.MAESTRO.name) } @@ -80,7 +80,7 @@ class DefaultCardBrandsFilteringTest { @Test fun test_maestro_14_divider() { - (filter as CardBrandFilter).setDivider("-") + (filter as CardBrandFilter).divider = "-" val brand = filter.detect("6759-6498-2643-84") assertEquals(brand.name, CardType.MAESTRO.name) } @@ -93,7 +93,7 @@ class DefaultCardBrandsFilteringTest { @Test fun test_maestro_15_divider() { - (filter as CardBrandFilter).setDivider("-") + (filter as CardBrandFilter).divider = "-" val brand = filter.detect("6759-6498-2643-845") assertEquals(brand.name, CardType.MAESTRO.name) } @@ -106,7 +106,7 @@ class DefaultCardBrandsFilteringTest { @Test fun test_maestro_16_divider() { - (filter as CardBrandFilter).setDivider("-") + (filter as CardBrandFilter).divider = "-" val brand = filter.detect("6759-6498-2643-8453") assertEquals(brand.name, CardType.MAESTRO.name) } @@ -119,7 +119,7 @@ class DefaultCardBrandsFilteringTest { @Test fun test_forbrugsforeningen_divider() { - (filter as CardBrandFilter).setDivider("-") + (filter as CardBrandFilter).divider = "-" val brand = filter.detect("6007-2234-3434-3434") assertEquals(brand.name, CardType.FORBRUGSFORENINGEN.name) } @@ -132,7 +132,7 @@ class DefaultCardBrandsFilteringTest { @Test fun test_dankort_divider() { - (filter as CardBrandFilter).setDivider("-") + (filter as CardBrandFilter).divider = "-" val brand = filter.detect("5019 7170 1010 3742") assertEquals(brand.name, CardType.DANKORT.name) } @@ -145,7 +145,7 @@ class DefaultCardBrandsFilteringTest { @Test fun test_visa_13_divider() { - (filter as CardBrandFilter).setDivider("-") + (filter as CardBrandFilter).divider = "-" val brand = filter.detect("4111-1111-1111-1") assertEquals(brand.name, CardType.VISA.name) } @@ -158,7 +158,7 @@ class DefaultCardBrandsFilteringTest { @Test fun test_visa_16_divider() { - (filter as CardBrandFilter).setDivider("-") + (filter as CardBrandFilter).divider = "-" val brand = filter.detect("4111-1111-1111-1111") assertEquals(brand.name, CardType.VISA.name) } @@ -171,7 +171,7 @@ class DefaultCardBrandsFilteringTest { @Test fun test_visa_19_divider() { - (filter as CardBrandFilter).setDivider("-") + (filter as CardBrandFilter).divider = "-" val brand = filter.detect("4111-1111-1111-1111-111") assertEquals(brand.name, CardType.VISA.name) } @@ -184,7 +184,7 @@ class DefaultCardBrandsFilteringTest { @Test fun test_mastercard_divider() { - (filter as CardBrandFilter).setDivider("-") + (filter as CardBrandFilter).divider = "-" val brand = filter.detect("5555-5555-5555-5555") assertEquals(brand.name, CardType.MASTERCARD.name) } @@ -197,7 +197,7 @@ class DefaultCardBrandsFilteringTest { @Test fun test_american_express_divider() { - (filter as CardBrandFilter).setDivider("-") + (filter as CardBrandFilter).divider = "-" val brand = filter.detect("3782-822463-10005") assertEquals(brand.name, CardType.AMERICAN_EXPRESS.name) } @@ -210,14 +210,14 @@ class DefaultCardBrandsFilteringTest { @Test fun test_hipercard_14_divider() { - (filter as CardBrandFilter).setDivider("-") + (filter as CardBrandFilter).divider = "-" val brand = filter.detect("3841-0067-8627-66") assertEquals(brand.name, CardType.HIPERCARD.name) } @Test fun test_hipercard_14_divider_false() { - (filter as CardBrandFilter).setDivider("-") + (filter as CardBrandFilter).divider = "-" val brand = filter.detect("3841 0067 8627 66") assertNotEquals(brand.name, CardType.HIPERCARD.name) } @@ -230,14 +230,14 @@ class DefaultCardBrandsFilteringTest { @Test fun test_hipercard_15_divider() { - (filter as CardBrandFilter).setDivider("-") + (filter as CardBrandFilter).divider = "-" val brand = filter.detect("3841-0067-8627-662") assertEquals(brand.name, CardType.HIPERCARD.name) } @Test fun test_hipercard_15_divider_false() { - (filter as CardBrandFilter).setDivider("-") + (filter as CardBrandFilter).divider = "-" val brand = filter.detect("3841 0067 8627 662") assertNotEquals(brand.name, CardType.HIPERCARD.name) } @@ -250,14 +250,14 @@ class DefaultCardBrandsFilteringTest { @Test fun test_hipercard_16_divider() { - (filter as CardBrandFilter).setDivider("-") + (filter as CardBrandFilter).divider = "-" val brand = filter.detect("3841-0067-8627-6623") assertEquals(brand.name, CardType.HIPERCARD.name) } @Test fun test_hipercard_16_divider_false() { - (filter as CardBrandFilter).setDivider("-") + (filter as CardBrandFilter).divider = "-" val brand = filter.detect("3841 0067 8627 6623") assertNotEquals(brand.name, CardType.HIPERCARD.name) } @@ -270,14 +270,14 @@ class DefaultCardBrandsFilteringTest { @Test fun test_hipercard_17_divider() { - (filter as CardBrandFilter).setDivider("-") + (filter as CardBrandFilter).divider = "-" val brand = filter.detect("3841-0067-8627-6623-7") assertEquals(brand.name, CardType.HIPERCARD.name) } @Test fun test_hipercard_17_divider_false() { - (filter as CardBrandFilter).setDivider("-") + (filter as CardBrandFilter).divider = "-" val brand = filter.detect("3841 0067 8627 6623 7") assertNotEquals(brand.name, CardType.HIPERCARD.name) } @@ -290,14 +290,14 @@ class DefaultCardBrandsFilteringTest { @Test fun test_hipercard_18_divider() { - (filter as CardBrandFilter).setDivider("-") + (filter as CardBrandFilter).divider = "-" val brand = filter.detect("3841-0067-8627-6623-72") assertEquals(brand.name, CardType.HIPERCARD.name) } @Test fun test_hipercard_18_divider_false() { - (filter as CardBrandFilter).setDivider("-") + (filter as CardBrandFilter).divider = "-" val brand = filter.detect("3841 0067 8627 6623 72") assertNotEquals(brand.name, CardType.HIPERCARD.name) } @@ -310,14 +310,14 @@ class DefaultCardBrandsFilteringTest { @Test fun test_hipercard_19_divider() { - (filter as CardBrandFilter).setDivider("-") + (filter as CardBrandFilter).divider = "-" val brand = filter.detect("3841-0067-8627-6623-721") assertEquals(brand.name, CardType.HIPERCARD.name) } @Test fun test_hipercard_19_divider_false() { - (filter as CardBrandFilter).setDivider("-") + (filter as CardBrandFilter).divider = "-" val brand = filter.detect("3841 0067 8627 6623 721") assertNotEquals(brand.name, CardType.HIPERCARD.name) } @@ -330,7 +330,7 @@ class DefaultCardBrandsFilteringTest { @Test fun test_dinclub_divider_14() { - (filter as CardBrandFilter).setDivider("-") + (filter as CardBrandFilter).divider = "-" val brand = filter.detect("3004-327725-3249") assertEquals(brand.name, CardType.DINCLUB.name) } @@ -343,7 +343,7 @@ class DefaultCardBrandsFilteringTest { @Test fun test_dinclub_divider_16() { - (filter as CardBrandFilter).setDivider("-") + (filter as CardBrandFilter).divider = "-" val brand = filter.detect("3004-327725-324912") assertEquals(brand.name, CardType.DINCLUB.name) } @@ -356,7 +356,7 @@ class DefaultCardBrandsFilteringTest { @Test fun test_discover_divider() { - (filter as CardBrandFilter).setDivider("-") + (filter as CardBrandFilter).divider = "-" val brand = filter.detect("6011-0000-0000-0004") assertEquals(brand.name, CardType.DISCOVER.name) } @@ -369,7 +369,7 @@ class DefaultCardBrandsFilteringTest { @Test fun test_jcb_16_divider() { - (filter as CardBrandFilter).setDivider("-") + (filter as CardBrandFilter).divider = "-" val brand = filter.detect("3566-0020-2036-0505") assertEquals(brand.name, CardType.JCB.name) } @@ -382,7 +382,7 @@ class DefaultCardBrandsFilteringTest { @Test fun test_jcb_17_divider() { - (filter as CardBrandFilter).setDivider("-") + (filter as CardBrandFilter).divider = "-" val brand = filter.detect("3566-0020-2036-0505-1") assertEquals(brand.name, CardType.JCB.name) } @@ -395,7 +395,7 @@ class DefaultCardBrandsFilteringTest { @Test fun test_jcb_18_divider() { - (filter as CardBrandFilter).setDivider("-") + (filter as CardBrandFilter).divider = "-" val brand = filter.detect("3566-0020-2036-0505-12") assertEquals(brand.name, CardType.JCB.name) } @@ -408,7 +408,7 @@ class DefaultCardBrandsFilteringTest { @Test fun test_jcb_19_divider() { - (filter as CardBrandFilter).setDivider("-") + (filter as CardBrandFilter).divider = "-" val brand = filter.detect("3566-0020-2036-0505-125") assertEquals(brand.name, CardType.JCB.name) } @@ -421,7 +421,7 @@ class DefaultCardBrandsFilteringTest { @Test fun test_unionpay_16_divider() { - (filter as CardBrandFilter).setDivider("-") + (filter as CardBrandFilter).divider = "-" val brand = filter.detect("6212-3456-7890-1232") assertEquals(brand.name, CardType.UNIONPAY.name) } @@ -434,7 +434,7 @@ class DefaultCardBrandsFilteringTest { @Test fun test_unionpay_17_divider() { - (filter as CardBrandFilter).setDivider("-") + (filter as CardBrandFilter).divider = "-" val brand = filter.detect("6212-3456-7890-1232-7") assertEquals(brand.name, CardType.UNIONPAY.name) } @@ -447,7 +447,7 @@ class DefaultCardBrandsFilteringTest { @Test fun test_unionpay_18_divider() { - (filter as CardBrandFilter).setDivider("-") + (filter as CardBrandFilter).divider = "-" val brand = filter.detect("6212-3456-7890-1232-78") assertEquals(brand.name, CardType.UNIONPAY.name) } @@ -460,7 +460,7 @@ class DefaultCardBrandsFilteringTest { @Test fun test_unionpay_19_divider() { - (filter as CardBrandFilter).setDivider("-") + (filter as CardBrandFilter).divider = "-" val brand = filter.detect("6212-3456-7890-1232-123") assertEquals(brand.name, CardType.UNIONPAY.name) } diff --git a/vgscollect/src/test/java/com/verygoodsecurity/vgscollect/view/card/number/VGSCardNumberEditTextTest.kt b/vgscollect/src/test/java/com/verygoodsecurity/vgscollect/view/card/number/VGSCardNumberEditTextTest.kt index cff0af327..8c9c60349 100644 --- a/vgscollect/src/test/java/com/verygoodsecurity/vgscollect/view/card/number/VGSCardNumberEditTextTest.kt +++ b/vgscollect/src/test/java/com/verygoodsecurity/vgscollect/view/card/number/VGSCardNumberEditTextTest.kt @@ -10,6 +10,9 @@ import com.verygoodsecurity.vgscollect.TestApplication import com.verygoodsecurity.vgscollect.any import com.verygoodsecurity.vgscollect.core.model.state.FieldState import com.verygoodsecurity.vgscollect.core.storage.OnFieldStateChangeListener +import com.verygoodsecurity.vgscollect.view.card.BrandParams +import com.verygoodsecurity.vgscollect.view.card.CardBrand +import com.verygoodsecurity.vgscollect.view.card.CardType import com.verygoodsecurity.vgscollect.view.card.FieldType import com.verygoodsecurity.vgscollect.view.card.validation.payment.ChecksumAlgorithm import com.verygoodsecurity.vgscollect.view.card.validation.rules.PaymentCardNumberRule @@ -203,7 +206,6 @@ class VGSCardNumberEditTextTest { assertEquals(InputType.TYPE_CLASS_NUMBER, view.getInputType()) } - @Test fun test_field_state_change_listener_first() { val child = view.statePreparer.getView() @@ -755,4 +757,113 @@ class VGSCardNumberEditTextTest { assertEquals(view.getTypeface(), Typeface.DEFAULT) } + @Test + fun test_custom_brand_state() { + val text = "4111111111111111" + + val params = BrandParams( + "###### ##### ########", + ChecksumAlgorithm.LUHN, + arrayOf(16, 19), + arrayOf(3, 5) + ) + + val newVisa = CardBrand( + "^41111", + "newVisa-Brand", + R.drawable.ic_card_back_preview_dark, + params + ) + + val stateResult = FieldState.CardNumberState() + stateResult.bin = "411111" + stateResult.last = "1111" + stateResult.number = "411111######1111" + stateResult.cardBrand = CardType.VISA.name + stateResult.drawableBrandResId = R.drawable.ic_visa_dark + + val child = view.statePreparer.getView() + assertTrue(child is BaseInputField) + view.setFieldName("number") + + view.setText(text) + (child as BaseInputField).prepareFieldTypeConnection() + child.applyInternalFieldStateChangeListener() + + with(view.getState()) { + assertNotNull(this) + + assertEquals(stateResult.bin, this!!.bin) + assertEquals(stateResult.last, this.last) + assertEquals(stateResult.number, this.number) + assertEquals(stateResult.cardBrand, this.cardBrand) + assertEquals(stateResult.drawableBrandResId, this.drawableBrandResId) + } + + + view.addCardBrand(newVisa) + + view.setText(text) + child.prepareFieldTypeConnection() + child.applyInternalFieldStateChangeListener() + + with(view.getState()) { + assertNotNull(this) + + assertEquals(stateResult.bin, this!!.bin) + assertEquals(stateResult.last, this.last) + assertEquals(stateResult.number, this.number) + assertNotEquals(stateResult.cardBrand, this.cardBrand) + assertNotEquals(stateResult.drawableBrandResId, this.drawableBrandResId) + + assertEquals(newVisa.cardBrandName, this.cardBrand) + assertEquals(newVisa.drawableResId, this.drawableBrandResId) + } + } + + @Test + fun test_custom_brand_state_with_divider() { + val text = "4111111111111111" + + val params = BrandParams( + "###### ##### ########", + ChecksumAlgorithm.LUHN, + arrayOf(16, 19), + arrayOf(3, 5) + ) + + val newVisa = CardBrand( + "^41111", + "newVisa-Brand", + R.drawable.ic_card_back_preview_dark, + params + ) + + val stateResult = FieldState.CardNumberState() + stateResult.cardBrand = CardType.VISA.name + stateResult.drawableBrandResId = R.drawable.ic_visa_dark + + val child = view.statePreparer.getView() + assertTrue(child is BaseInputField) + view.setFieldName("number") + + (child as BaseInputField).prepareFieldTypeConnection() + child.applyInternalFieldStateChangeListener() + + view.addCardBrand(newVisa) + view.setDivider('=') + + + view.setText(text) + + with(view.getState()) { + assertNotNull(this) + assertNotEquals(stateResult.cardBrand, this!!.cardBrand) + assertNotEquals(stateResult.drawableBrandResId, this.drawableBrandResId) + + assertEquals(newVisa.cardBrandName, this.cardBrand) + assertEquals(newVisa.drawableResId, this.drawableBrandResId) + } + } + } \ No newline at end of file diff --git a/vgscollect/src/test/resources/robolectric.properties b/vgscollect/src/test/resources/robolectric.properties index 89a6c8b4c..90fbd7437 100644 --- a/vgscollect/src/test/resources/robolectric.properties +++ b/vgscollect/src/test/resources/robolectric.properties @@ -1 +1 @@ -sdk=28 \ No newline at end of file +sdk=30 \ No newline at end of file