diff --git a/data/tokens/src/main/kotlin/com/tangem/data/tokens/mock/MockTokens.kt b/data/tokens/src/main/kotlin/com/tangem/data/tokens/mock/MockTokens.kt index 4261727cff..3cf3584e68 100644 --- a/data/tokens/src/main/kotlin/com/tangem/data/tokens/mock/MockTokens.kt +++ b/data/tokens/src/main/kotlin/com/tangem/data/tokens/mock/MockTokens.kt @@ -5,7 +5,7 @@ import com.tangem.domain.wallets.models.UserWalletId internal object MockTokens { - val token1 get() = Token( + val token1 = Token( id = Token.ID("token1"), networkId = MockNetworks.network1.id, name = "Token 1", @@ -13,9 +13,10 @@ internal object MockTokens { isCustom = false, decimals = 8, iconUrl = null, - isCoin = true, + contractAddress = null, + derivationPath = null, ) - val token2 get() = Token( + val token2 = Token( id = Token.ID("token2"), networkId = MockNetworks.network1.id, name = "Token 2", @@ -23,9 +24,10 @@ internal object MockTokens { isCustom = false, decimals = 8, iconUrl = null, - isCoin = false, + contractAddress = "address", + derivationPath = null, ) - val token3 get() = Token( + val token3 = Token( id = Token.ID("token3"), networkId = MockNetworks.network1.id, name = "Token 3", @@ -33,9 +35,10 @@ internal object MockTokens { isCustom = false, decimals = 8, iconUrl = null, - isCoin = false, + contractAddress = "address", + derivationPath = null, ) - val token4 get() = Token( + val token4 = Token( id = Token.ID("token4"), networkId = MockNetworks.network2.id, name = "Token 4", @@ -43,9 +46,10 @@ internal object MockTokens { isCustom = false, decimals = 8, iconUrl = null, - isCoin = true, + contractAddress = null, + derivationPath = null, ) - val token5 get() = Token( + val token5 = Token( id = Token.ID("token5"), networkId = MockNetworks.network2.id, name = "Token 5", @@ -53,9 +57,10 @@ internal object MockTokens { isCustom = false, decimals = 8, iconUrl = null, - isCoin = false, + contractAddress = "address", + derivationPath = null, ) - val token6 get() = Token( + val token6 = Token( id = Token.ID("token6"), networkId = MockNetworks.network2.id, name = "Token 6", @@ -63,9 +68,10 @@ internal object MockTokens { isCustom = false, decimals = 8, iconUrl = null, - isCoin = false, + contractAddress = "address", + derivationPath = null, ) - val token7 get() = Token( + val token7 = Token( id = Token.ID("token7"), networkId = MockNetworks.network3.id, name = "Token 7", @@ -73,9 +79,10 @@ internal object MockTokens { isCustom = false, decimals = 8, iconUrl = null, - isCoin = true, + contractAddress = null, + derivationPath = null, ) - val token8 get() = Token( + val token8 = Token( id = Token.ID("token8"), networkId = MockNetworks.network3.id, name = "Token 8", @@ -83,9 +90,10 @@ internal object MockTokens { isCustom = false, decimals = 8, iconUrl = null, - isCoin = false, + contractAddress = "address", + derivationPath = null, ) - val token9 get() = Token( + val token9 = Token( id = Token.ID("token9"), networkId = MockNetworks.network3.id, name = "Token 9", @@ -93,9 +101,10 @@ internal object MockTokens { isCustom = false, decimals = 8, iconUrl = null, - isCoin = false, + contractAddress = "address", + derivationPath = null, ) - val token10 get() = Token( + val token10 = Token( id = Token.ID("token10"), networkId = MockNetworks.network3.id, name = "Token 10", @@ -103,7 +112,8 @@ internal object MockTokens { isCustom = false, decimals = 8, iconUrl = null, - isCoin = false, + contractAddress = "address", + derivationPath = null, ) val tokens get() = mapOf( diff --git a/domain/tokens/src/main/kotlin/com/tangem/domain/tokens/model/Network.kt b/domain/tokens/src/main/kotlin/com/tangem/domain/tokens/model/Network.kt index b4b7628aa4..f7bd4500c2 100644 --- a/domain/tokens/src/main/kotlin/com/tangem/domain/tokens/model/Network.kt +++ b/domain/tokens/src/main/kotlin/com/tangem/domain/tokens/model/Network.kt @@ -5,6 +5,15 @@ data class Network( val name: String, ) { + init { + require(name.isNotBlank()) { "Network name must not be blank" } + } + @JvmInline - value class ID(val value: String) + value class ID(val value: String) { + + init { + require(value.isNotBlank()) { "Network ID must not be blank" } + } + } } \ No newline at end of file diff --git a/domain/tokens/src/main/kotlin/com/tangem/domain/tokens/model/Token.kt b/domain/tokens/src/main/kotlin/com/tangem/domain/tokens/model/Token.kt index 4e1a2fba61..745acaa6b5 100644 --- a/domain/tokens/src/main/kotlin/com/tangem/domain/tokens/model/Token.kt +++ b/domain/tokens/src/main/kotlin/com/tangem/domain/tokens/model/Token.kt @@ -8,9 +8,24 @@ data class Token( val iconUrl: String?, val decimals: Int, val isCustom: Boolean, - val isCoin: Boolean, + val contractAddress: String?, + val derivationPath: String?, ) { + init { + require(name.isNotBlank()) { "Token name must not be blank" } + require(symbol.isNotBlank()) { "Token symbol must not be blank" } + require(iconUrl?.isNotBlank() ?: true) { "Token icon URL must not be blank" } + require(decimals > 0) { "Token decimal must not be less then zero, but it is: $decimals" } + require(contractAddress?.isNotBlank() ?: true) { "Token contract address must not be blank" } + require(derivationPath?.isNotBlank() ?: true) { "Token derivation path must not be blank" } + } + @JvmInline - value class ID(val value: String) + value class ID(val value: String) { + + init { + require(value.isNotBlank()) { "Token ID value must not be blank" } + } + } } \ No newline at end of file diff --git a/domain/tokens/src/main/kotlin/com/tangem/domain/tokens/operations/TokenStatusOperations.kt b/domain/tokens/src/main/kotlin/com/tangem/domain/tokens/operations/TokenStatusOperations.kt index 04478c7917..dfb9d9f8bc 100644 --- a/domain/tokens/src/main/kotlin/com/tangem/domain/tokens/operations/TokenStatusOperations.kt +++ b/domain/tokens/src/main/kotlin/com/tangem/domain/tokens/operations/TokenStatusOperations.kt @@ -21,7 +21,7 @@ internal class TokenStatusOperations( networkId = token.networkId, name = token.name, symbol = token.symbol, - isCoin = token.isCoin, + isCoin = token.contractAddress == null, decimals = token.decimals, iconUrl = token.iconUrl, value = createStatus(), diff --git a/domain/tokens/src/test/kotlin/com/tangem/domain/tokens/mock/MockTokens.kt b/domain/tokens/src/test/kotlin/com/tangem/domain/tokens/mock/MockTokens.kt index 43f22db152..ec1d422785 100644 --- a/domain/tokens/src/test/kotlin/com/tangem/domain/tokens/mock/MockTokens.kt +++ b/domain/tokens/src/test/kotlin/com/tangem/domain/tokens/mock/MockTokens.kt @@ -13,8 +13,8 @@ internal object MockTokens { isCustom = false, decimals = 8, iconUrl = null, - isCoin = true, - + contractAddress = null, + derivationPath = null, ) val token2 = Token( id = Token.ID("token2"), @@ -24,7 +24,8 @@ internal object MockTokens { isCustom = false, decimals = 8, iconUrl = null, - isCoin = false, + contractAddress = "address", + derivationPath = null, ) val token3 = Token( id = Token.ID("token3"), @@ -34,7 +35,8 @@ internal object MockTokens { isCustom = false, decimals = 8, iconUrl = null, - isCoin = false, + contractAddress = "address", + derivationPath = null, ) val token4 = Token( id = Token.ID("token4"), @@ -44,8 +46,8 @@ internal object MockTokens { isCustom = false, decimals = 8, iconUrl = null, - isCoin = true, - + contractAddress = null, + derivationPath = null, ) val token5 = Token( id = Token.ID("token5"), @@ -55,7 +57,8 @@ internal object MockTokens { isCustom = false, decimals = 8, iconUrl = null, - isCoin = false, + contractAddress = "address", + derivationPath = null, ) val token6 = Token( id = Token.ID("token6"), @@ -65,7 +68,8 @@ internal object MockTokens { isCustom = false, decimals = 8, iconUrl = null, - isCoin = false, + contractAddress = "address", + derivationPath = null, ) val token7 = Token( id = Token.ID("token7"), @@ -75,7 +79,8 @@ internal object MockTokens { isCustom = false, decimals = 8, iconUrl = null, - isCoin = true, + contractAddress = null, + derivationPath = null, ) val token8 = Token( id = Token.ID("token8"), @@ -85,7 +90,8 @@ internal object MockTokens { isCustom = false, decimals = 8, iconUrl = null, - isCoin = false, + contractAddress = "address", + derivationPath = null, ) val token9 = Token( id = Token.ID("token9"), @@ -95,7 +101,8 @@ internal object MockTokens { isCustom = false, decimals = 8, iconUrl = null, - isCoin = false, + contractAddress = "address", + derivationPath = null, ) val token10 = Token( id = Token.ID("token10"), @@ -105,7 +112,8 @@ internal object MockTokens { isCustom = false, decimals = 8, iconUrl = null, - isCoin = false, + contractAddress = "address", + derivationPath = null, ) val tokens = nonEmptySetOf(token1, token2, token3, token4, token5, token6, token7, token8, token9, token10) diff --git a/domain/tokens/src/test/kotlin/com/tangem/domain/tokens/mock/MockTokensStates.kt b/domain/tokens/src/test/kotlin/com/tangem/domain/tokens/mock/MockTokensStates.kt index 0b0c9e41ab..9b5677d97e 100644 --- a/domain/tokens/src/test/kotlin/com/tangem/domain/tokens/mock/MockTokensStates.kt +++ b/domain/tokens/src/test/kotlin/com/tangem/domain/tokens/mock/MockTokensStates.kt @@ -14,7 +14,7 @@ internal object MockTokensStates { symbol = MockTokens.token1.symbol, decimals = MockTokens.token1.decimals, iconUrl = MockTokens.token1.iconUrl, - isCoin = MockTokens.token1.isCoin, + isCoin = MockTokens.token1.contractAddress == null, value = TokenStatus.Unreachable, ) @@ -25,7 +25,7 @@ internal object MockTokensStates { symbol = MockTokens.token2.symbol, decimals = MockTokens.token2.decimals, iconUrl = MockTokens.token2.iconUrl, - isCoin = MockTokens.token2.isCoin, + isCoin = MockTokens.token2.contractAddress == null, value = TokenStatus.Unreachable, ) @@ -36,7 +36,7 @@ internal object MockTokensStates { symbol = MockTokens.token3.symbol, decimals = MockTokens.token3.decimals, iconUrl = MockTokens.token3.iconUrl, - isCoin = MockTokens.token3.isCoin, + isCoin = MockTokens.token3.contractAddress == null, value = TokenStatus.Unreachable, ) @@ -47,7 +47,7 @@ internal object MockTokensStates { symbol = MockTokens.token4.symbol, decimals = MockTokens.token4.decimals, iconUrl = MockTokens.token4.iconUrl, - isCoin = MockTokens.token4.isCoin, + isCoin = MockTokens.token4.contractAddress == null, value = TokenStatus.MissedDerivation, ) @@ -58,7 +58,7 @@ internal object MockTokensStates { symbol = MockTokens.token5.symbol, decimals = MockTokens.token5.decimals, iconUrl = MockTokens.token5.iconUrl, - isCoin = MockTokens.token5.isCoin, + isCoin = MockTokens.token5.contractAddress == null, value = TokenStatus.MissedDerivation, ) @@ -69,7 +69,7 @@ internal object MockTokensStates { symbol = MockTokens.token6.symbol, decimals = MockTokens.token6.decimals, iconUrl = MockTokens.token6.iconUrl, - isCoin = MockTokens.token6.isCoin, + isCoin = MockTokens.token6.contractAddress == null, value = TokenStatus.MissedDerivation, ) @@ -80,7 +80,7 @@ internal object MockTokensStates { symbol = MockTokens.token7.symbol, decimals = MockTokens.token7.decimals, iconUrl = MockTokens.token7.iconUrl, - isCoin = MockTokens.token7.isCoin, + isCoin = MockTokens.token7.contractAddress == null, value = TokenStatus.NoAccount, ) @@ -91,7 +91,7 @@ internal object MockTokensStates { symbol = MockTokens.token8.symbol, decimals = MockTokens.token8.decimals, iconUrl = MockTokens.token8.iconUrl, - isCoin = MockTokens.token8.isCoin, + isCoin = MockTokens.token8.contractAddress == null, value = TokenStatus.NoAccount, ) @@ -102,7 +102,7 @@ internal object MockTokensStates { symbol = MockTokens.token9.symbol, decimals = MockTokens.token9.decimals, iconUrl = MockTokens.token9.iconUrl, - isCoin = MockTokens.token9.isCoin, + isCoin = MockTokens.token9.contractAddress == null, value = TokenStatus.NoAccount, ) @@ -113,7 +113,7 @@ internal object MockTokensStates { symbol = MockTokens.token10.symbol, decimals = MockTokens.token10.decimals, iconUrl = MockTokens.token10.iconUrl, - isCoin = MockTokens.token10.isCoin, + isCoin = MockTokens.token10.contractAddress == null, value = TokenStatus.NoAccount, )