-
Notifications
You must be signed in to change notification settings - Fork 15
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Unit Test(s) Migration #287
Conversation
app/src/androidTest/java/com/litewallet/analytics/ConstantsTests.java
Outdated
Show resolved
Hide resolved
…tsTests inside androidTest
2cdf887
to
8d2b9f3
Compare
…oid/restore-gradle-cache
…roid/android-docker
will revisit this later, need to provide google-services.json |
command: "git submodule init && git submodule update --init --recursive" | ||
- run: | ||
name: "Copy google-services.json" | ||
command: echo "$GOOGLE_SERVICES_JSON" | base64 --decode > app/google-services.json |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
the error from circleci mallformed here, need recheck the base64 encoded from google-services.json
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@andhikayuana yes we need to add a debug version to circleci TODO
import org.junit.Assert.assertEquals | ||
import org.junit.Test | ||
|
||
class ExampleTest { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
this is some example basic unit tests
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Tx @andhikayuana we should transcode from existing java tests. Will you confirm?
import org.junit.Test | ||
|
||
//TODO: migrate from [com.litewallet.analytics.ConstantsTests] | ||
class BRConstantsTest { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
need to fill, please let me know if have questions
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@andhikayuana may check in the values onto this PR
package com.litewallet.tools.util | ||
|
||
//TODO: pls fill this | ||
class Bip39ReaderTest |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
need to fill, please let me know if have questions
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@andhikayuana may check in the values onto this PR. Migrating away to just English until the new UI is released
package com.litewallet.tools.sqlite | ||
|
||
//TODO: pls fill this | ||
class TransactionDataSourceTest |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
need to fill, please let me know if have questions
package com.litewallet.tools.security | ||
|
||
//TODO: pls fill this | ||
class BRKeyStoreTest |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
need to fill, please let me know if have questions
package com.platform.kvstore | ||
|
||
//TODO: pls fill this | ||
class ReplicatedKVStoreTest |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
need to fill, please let me know if have questions
Pedas sama Ny. Suharti @andhikayuana ! |
- Removed cruft - Moved all tests to the unitTest directory - Remove poorly placed tests into (AndroidTest) - Commented old code into the new Kotlin class(es) - working in the first test of currency - Removed the paymentRequest method - Renamed Classes
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Need a look from @andhikayuana
class FiatCurrency(val code: String, val valuePerLitecoin: Double) | ||
class Amount(val value: Double) | ||
|
||
class CurrencySystemUnderTest( |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@andhikayuana does this make sense?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I just removed this, pls check this commit
|
||
// | ||
// | ||
//package com.litewallet; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
cc: @josikie , @andhikayuana
This is just a place holder as techdebt
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks Better to Me. We will continue working on this.
* 🚀[Release v2.11.1 071024] Merge into Develop (#245) * replaced the control in PeerManager.c Signed-off-by: kcw-grunt <[email protected]> * reverted BRBitcoinAmount Signed-off-by: kcw-grunt <[email protected]> * Cleaning up the files Signed-off-by: kcw-grunt <[email protected]> * Removed Pusher remnants Signed-off-by: kcw-grunt <[email protected]> --------- Signed-off-by: kcw-grunt <[email protected]> * Added Fiat feature, and FCM for push notifications (#247) * Added fiat feature based on language user chose * added fcm for push notifications * Update PushNotificationService.kt * Added new Icon, removed duplicate fcm library, added in app messaging * Added new Icon, removed duplicate fcm library, added in app messaging * Tech debt/add af sdk (#248) * Recent newline Signed-off-by: kcw-grunt <[email protected]> * AF added Refactored cruft - AF working Signed-off-by: kcw-grunt <[email protected]> --------- Signed-off-by: kcw-grunt <[email protected]> * Techdebt/refactor brevents syncmarkers (#254) * Tech debt/add af sdk (#248) - AF working - Changed requiredActivity - Added analytics error report - test this.Activity is null or not - Bugfix - Phrase Reminder crash - added an exception handler for UserNotAuthenticatedException. - note: this should allow for the system to display the native authorization UI when needed - fixes issue - https://console.firebase.google.com/u/0/project/litewallet-beta/crashlytics/app/android:com.loafwallet/issues/09dac17241309f0e823ef597a9a82cd4 - Added dev note - remove calls to BREventManager - removed BREventManager - renamed error message - fixed Firebase Analytics event error Signed-off-by: kcw-grunt <[email protected]> * version bump update gitignore Signed-off-by: kcw-grunt <[email protected]> --------- Signed-off-by: kcw-grunt <[email protected]> * Techdebt/ fixed send issue add syncing measurements (#255) * removed unused BRSharedPreferences Signed-off-by: kcw-grunt <[email protected]> * started commenting out more Timber Signed-off-by: kcw-grunt <[email protected]> * Added more shared preferences for syncing Signed-off-by: kcw-grunt <[email protected]> * Commented out many verbose Timber logs Signed-off-by: kcw-grunt <[email protected]> * WIP Still trying to figure out the eplased time and last and start timestamps…??? I dunno Signed-off-by: kcw-grunt <[email protected]> * Moved sync measurment into the method calls Signed-off-by: kcw-grunt <[email protected]> * Debugged the install issue with send - Moved all the measurements in new methods - recalculated measure points - Added analytics - event did_complete_sync was shown! - adding a dummy file to make sure file system is set ||||WIP still verifying the JSON is present - added a blockheight label - changed the sleep time (a hack to allow the device time to refresh the view) to 100 ms from 500ms!! -WIP Why is the bundle not showing on time Signed-off-by: kcw-grunt <[email protected]> * replaces afID to first location Signed-off-by: kcw-grunt <[email protected]> * Removed redundant sync measurements Signed-off-by: kcw-grunt <[email protected]> * code bump Signed-off-by: kcw-grunt <[email protected]> --------- Signed-off-by: kcw-grunt <[email protected]> * Techdebt/test refactor cruft removal (#250) * Removed non english seed words -Refactor tests - Reset AnalyticsTests Signed-off-by: kcw-grunt <[email protected]> * Rename Bitcoinletter to Litecoinletters -added tests testLitecoinSymbolConstants testAppExternalURLConstants testFirebaseAnalyticsConstants Signed-off-by: kcw-grunt <[email protected]> --------- Signed-off-by: kcw-grunt <[email protected]> * fix: [#152] make sure using Fragment, FragmentManager and FragmentTransaction from androidx (#260) * fix: [#126] the issue came from FragmentBalanceSeedReminder.fetchSeedPhrase, so we just wrap with runCatching for now to avoid crash (#263) * fix: [#264] add null checking for BRKeyStore.removeAliasAndFiles (#270) * fix: [#265] add null checking, migrate viewpage… (#271) * fix: [WIP][#265] work in progress add null checking, migrate viewpager to viewpager2 and more * fix: [#265] finalize migration some deprecated class and implement null checking at FragmentTransactionItem * fix: dix dismiss outside FragmentTransactionDetails * 🚀[Release v2.12.2 20241118] Merge into Develop (#272) * 🚀[Release v2.11.1 071024] Merge into Main (#246) * replaced the control in PeerManager.c Signed-off-by: kcw-grunt <[email protected]> * reverted BRBitcoinAmount Signed-off-by: kcw-grunt <[email protected]> * Cleaning up the files Signed-off-by: kcw-grunt <[email protected]> * Removed Pusher remnants Signed-off-by: kcw-grunt <[email protected]> --------- Signed-off-by: kcw-grunt <[email protected]> * version bump Signed-off-by: kcw-grunt <[email protected]> * Removed donation button removed xml removed fragments removed references of the donation removed analytical events Signed-off-by: kcw-grunt <[email protected]> * fix: prevent activity close * code bump Signed-off-by: kcw-grunt <[email protected]> * enabled for Debug Signed-off-by: kcw-grunt <[email protected]> * fix: [#264] add null checking for BRKeyStore.removeAliasAndFiles (#270) * fix: [#265] add null checking, migrate viewpage… (#271) * fix: [WIP][#265] work in progress add null checking, migrate viewpager to viewpager2 and more * fix: [#265] finalize migration some deprecated class and implement null checking at FragmentTransactionItem * fix: dix dismiss outside FragmentTransactionDetails * code bump Signed-off-by: kcw-grunt <[email protected]> * version bump Signed-off-by: kcw-grunt <[email protected]> --------- Signed-off-by: kcw-grunt <[email protected]> Co-authored-by: andhikayuana <[email protected]> * revert minSDkVersion to 29 (#276) Signed-off-by: kcw-grunt <[email protected]> * fix: [#258] avoid OOM with cache the result of opsAll, previously called multiple times at onBindViewHolder (#277) * fix: [#258] avoid OOM with cache the result of opsAll, previously called multiple times at onBindViewHolder * chore: [#258] cleanup comment * fix: [#266] add null checking and default value based on iOS since getCurrency can produce null (#278) * fix: [#266] add null checking and default value based on iOS since getCurrency can produce null * chore: [#266] cleanup comment * fix: [#274] fixing locale on android 14 and setup test using junit & mockk (#282) * chore: [#274] initial setup test using JUnit & MockK * chore: [#274] add more test case at LocaleHelperTest * fix: [#274] fix default language from shared preferences * fix: [#274] disable language split on AAB * chore: [#274] rename method * chore: [#126] simplify exception handling at BRKeyStore._getData and record exception to Firebase Crashlytics (#283) * Techdebt/remove auth prompt (#256) * Check reenter pin freeze after the auth prompt deleted. Signed-off-by: kcw-grunt <[email protected]> * cleaned up deletion Signed-off-by: kcw-grunt <[email protected]> * Many removals - Removed the fingerprint xml - Removed the Fingerprint Fragment and java files - Removed the enum referencing the fingerprint prompt - Removed check of fingerprint enrollment and checks - Removed biometrics and fingerprint permissions Signed-off-by: kcw-grunt <[email protected]> * removed fingerprint image code and version bump Signed-off-by: kcw-grunt <[email protected]> * chore: remove FragmentFingerprint.java since, not used and failed to build --------- Signed-off-by: kcw-grunt <[email protected]> Co-authored-by: josikie <[email protected]> Co-authored-by: andhikayuana <[email protected]> * 🚀[Release v2.12.4 20241130] Merge into Develop (#286) * 🚀[Release v2.11.1 071024] Merge into Main (#246) * replaced the control in PeerManager.c Signed-off-by: kcw-grunt <[email protected]> * reverted BRBitcoinAmount Signed-off-by: kcw-grunt <[email protected]> * Cleaning up the files Signed-off-by: kcw-grunt <[email protected]> * Removed Pusher remnants Signed-off-by: kcw-grunt <[email protected]> --------- Signed-off-by: kcw-grunt <[email protected]> * 🚀[Release v2.12.2 20241118] Merge into Main (#273) * 🚀[Release v2.11.1 071024] Merge into Develop (#245) * replaced the control in PeerManager.c Signed-off-by: kcw-grunt <[email protected]> * reverted BRBitcoinAmount Signed-off-by: kcw-grunt <[email protected]> * Cleaning up the files Signed-off-by: kcw-grunt <[email protected]> * Removed Pusher remnants Signed-off-by: kcw-grunt <[email protected]> --------- Signed-off-by: kcw-grunt <[email protected]> * Added Fiat feature, and FCM for push notifications (#247) * Added fiat feature based on language user chose * added fcm for push notifications * Update PushNotificationService.kt * Added new Icon, removed duplicate fcm library, added in app messaging * Added new Icon, removed duplicate fcm library, added in app messaging * Tech debt/add af sdk (#248) * Recent newline Signed-off-by: kcw-grunt <[email protected]> * AF added Refactored cruft - AF working Signed-off-by: kcw-grunt <[email protected]> --------- Signed-off-by: kcw-grunt <[email protected]> * Techdebt/refactor brevents syncmarkers (#254) * Tech debt/add af sdk (#248) - AF working - Changed requiredActivity - Added analytics error report - test this.Activity is null or not - Bugfix - Phrase Reminder crash - added an exception handler for UserNotAuthenticatedException. - note: this should allow for the system to display the native authorization UI when needed - fixes issue - https://console.firebase.google.com/u/0/project/litewallet-beta/crashlytics/app/android:com.loafwallet/issues/09dac17241309f0e823ef597a9a82cd4 - Added dev note - remove calls to BREventManager - removed BREventManager - renamed error message - fixed Firebase Analytics event error Signed-off-by: kcw-grunt <[email protected]> * version bump update gitignore Signed-off-by: kcw-grunt <[email protected]> --------- Signed-off-by: kcw-grunt <[email protected]> * Techdebt/ fixed send issue add syncing measurements (#255) * removed unused BRSharedPreferences Signed-off-by: kcw-grunt <[email protected]> * started commenting out more Timber Signed-off-by: kcw-grunt <[email protected]> * Added more shared preferences for syncing Signed-off-by: kcw-grunt <[email protected]> * Commented out many verbose Timber logs Signed-off-by: kcw-grunt <[email protected]> * WIP Still trying to figure out the eplased time and last and start timestamps…??? I dunno Signed-off-by: kcw-grunt <[email protected]> * Moved sync measurment into the method calls Signed-off-by: kcw-grunt <[email protected]> * Debugged the install issue with send - Moved all the measurements in new methods - recalculated measure points - Added analytics - event did_complete_sync was shown! - adding a dummy file to make sure file system is set ||||WIP still verifying the JSON is present - added a blockheight label - changed the sleep time (a hack to allow the device time to refresh the view) to 100 ms from 500ms!! -WIP Why is the bundle not showing on time Signed-off-by: kcw-grunt <[email protected]> * replaces afID to first location Signed-off-by: kcw-grunt <[email protected]> * Removed redundant sync measurements Signed-off-by: kcw-grunt <[email protected]> * code bump Signed-off-by: kcw-grunt <[email protected]> --------- Signed-off-by: kcw-grunt <[email protected]> * Techdebt/test refactor cruft removal (#250) * Removed non english seed words -Refactor tests - Reset AnalyticsTests Signed-off-by: kcw-grunt <[email protected]> * Rename Bitcoinletter to Litecoinletters -added tests testLitecoinSymbolConstants testAppExternalURLConstants testFirebaseAnalyticsConstants Signed-off-by: kcw-grunt <[email protected]> --------- Signed-off-by: kcw-grunt <[email protected]> * fix: [#152] make sure using Fragment, FragmentManager and FragmentTransaction from androidx (#260) * fix: [#126] the issue came from FragmentBalanceSeedReminder.fetchSeedPhrase, so we just wrap with runCatching for now to avoid crash (#263) * version bump Signed-off-by: kcw-grunt <[email protected]> * Removed donation button removed xml removed fragments removed references of the donation removed analytical events Signed-off-by: kcw-grunt <[email protected]> * fix: prevent activity close * code bump Signed-off-by: kcw-grunt <[email protected]> * enabled for Debug Signed-off-by: kcw-grunt <[email protected]> * fix: [#264] add null checking for BRKeyStore.removeAliasAndFiles (#270) * fix: [#265] add null checking, migrate viewpage… (#271) * fix: [WIP][#265] work in progress add null checking, migrate viewpager to viewpager2 and more * fix: [#265] finalize migration some deprecated class and implement null checking at FragmentTransactionItem * fix: dix dismiss outside FragmentTransactionDetails * code bump Signed-off-by: kcw-grunt <[email protected]> * version bump Signed-off-by: kcw-grunt <[email protected]> --------- Signed-off-by: kcw-grunt <[email protected]> Co-authored-by: Josi Kie <[email protected]> Co-authored-by: Andhika Yuana <[email protected]> * bumped version and code * compiled the env (#284) please check @andhikayuana @josikie that you are able to compile * Users complained that recyclerView was setting to the wrong language - Polished to index to a language - bump code * chore: [#126] simplify exception handling at BRKeyStore._getData and record exception to Firebase Crashlytics (#283) --------- Signed-off-by: kcw-grunt <[email protected]> Co-authored-by: Josi Kie <[email protected]> Co-authored-by: Andhika Yuana <[email protected]> * Added abilities to copy transaction id by click the transaction id (#290) * Added abilities to copy transaction id by click the transaction id * Update build.gradle * version and code bump * Unit Test(s) Migration (#287) * chore: [test] add BRConstantsTest for unitTest and deprecated ConstantsTests inside androidTest * chore: [test] remove unused test files * chore: [test] add todo to fill the tests and change package name * chore: [test] add basic example * chore: [test] integrate with ci/cd * chore: [test][ci] fix Cannot find a definition for command named android/restore-gradle-cache * chore: [test][ci] fix Cannot find a definition for command named android/run-tests * chore: [test][ci] fix Unexpected argument(s): test-command * chore: [test][ci] fix Cannot find a definition for executor named android/android-docker * chore: [test][ci] add default for gradle.properties * chore: [test][ci] avoid breaking in build.gradle * chore: [test][ci] enable androidx and jetifier * chore: [test][ci] init submodule * chore: [test][ci] just using run command for execute unit test step * chore: [test][ci] add env for google-services.json * chore: [test][ci] add env for google-services.json * chore: [test][ci] add env for google-services.json * Major refactor of code to move classes to the ideal location - Removed cruft - Moved all tests to the unitTest directory - Remove poorly placed tests into (AndroidTest) - Commented old code into the new Kotlin class(es) - working in the first test of currency - Removed the paymentRequest method - Renamed Classes * chore: resolve CurrencyTests * Added notes --------- Co-authored-by: Kerry Washington <[email protected]> * feat: remote config feature toggle (#293) * feat: [remote-config] wip for remote config feature toggle * feat: [remote-config] implement base url toggle for prod and dev * feat: [test] add BRApiManagerTest * fix: fix getBaseUrlProd for FragmentBuy and add test * chore: change BRApiManager.fetchRates using getBaseUrlProd * version and code bump * Update .gitignore --------- Signed-off-by: kcw-grunt <[email protected]> Co-authored-by: Josi Kie <[email protected]> Co-authored-by: Andhika Yuana <[email protected]> Co-authored-by: josikie <[email protected]>
Overview
Introducing new test framework for
litewallet-android
project. As for now we will useJUnit4
andMockK
. more details, will share the docs on slack later and also probably we can have sharing session for this.Background Problem
The existing codebase is relatively hard to maintain, since most of the code uses singleton everywhere and not using dependency inversion principle. The current tests use androidTest, which is actually for UI Test, it’s (not suitable for Unit Test (AFAIK) and if we run the test it will require more resources (need emulator). More consideration is, we also need to make the codebase not so old by fully migrating to kotlin in the future. That’s why we need to create a new test strategy, especially for Unit Test.
Unit Test Migration
com/litewallet/tools/util/BRConstantsTest.kt
com/litewallet/tools/sqlite/TransactionDataSourceTest.java
com/platform/kvstore/ReplicatedKVStoreTest.java
com/litewallet/tools/util/Bip39ReaderTest.java
CI/CD
Currently the CI/CD can't run the unit tests because of mallformed env file that placed on circleci, will revisit later