Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions etherscanapi/src/main/java/jfyg/account/Account.kt
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,8 @@ class Account : AccountContract {
account, "0", "99999999",
"asc").let { query.fetchAccountTransaction()?.result }

//todo #47

override fun getNetworkStatus(): String? = genericNetworkQuery.let { query.fetchAccountBalance()?.status }

override fun getNetworkMessage(): String? = genericNetworkQuery.let { query.fetchAccountBalance()?.message }
Expand Down
25 changes: 18 additions & 7 deletions etherscanapi/src/main/java/jfyg/model/Transactions.kt
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,12 @@ data class Transactions(var blockNumber: String? = null,

var hash: String? = null,

var nonce: String? = null,

var blockHash: String? = null,

var transactionIndex: String? = null,

@SerializedName("from")
var transactionFrom: String? = null,

Expand All @@ -16,16 +22,21 @@ data class Transactions(var blockNumber: String? = null,

var value: String? = null,

var contractAddress: String? = null,
var gas: String? = null,

var input: String? = null,
var gasPrice: String? = null,

var type: String? = null, var gas: String? = null,
var isError: String? = null,

var gasUsed: String? = null,
@SerializedName("txreceipt_status")
var receiptStatus: String? = null,

var traceId: String? = null,
var input: String? = null,

var isError: String? = null,
var contractAddress: String? = null,

var cumulativeGasUsed: String? = null,

var gasUsed: String? = null,

var errCode: String? = null)
var confirmations: String? = null)
165 changes: 159 additions & 6 deletions etherscanapi/src/test/java/jfyg/account/AccountTest.kt
Original file line number Diff line number Diff line change
@@ -1,40 +1,193 @@
package jfyg.account

import org.junit.After
import com.google.gson.Gson
import com.google.gson.GsonBuilder
import jfyg.response.BaseResponse
import jfyg.response.account.AccountBalanceResponse
import jfyg.response.account.AccountBlockResponse
import jfyg.response.account.AccountMultiBalanceResponse
import jfyg.response.account.AccountTransactionResponse
import org.junit.Assert.assertEquals
import org.junit.Assert
import org.junit.Before
import org.junit.Test

class AccountTest {

lateinit var gson: Gson

private val accountBalance = """
{
"status": "1",
"message": "OK",
"result": "670456215218885498951364"
}"""

private val accountMultiBalance = """
{
"status": "1",
"message": "OK",
"result": [
{
"account": "0xddbd2b932c763ba5b1b7ae3b362eac3e8d40121a",
"balance": "40807168564070000000000"
},
{
"account": "0x63a9975ba31b0b9626b34300f7f627147df1f526",
"balance": "332567136222827062478"
},
{
"account": "0x198ef1ec325a96cc354c7266a038be8b5c558f67",
"balance": "0"
}
]
}"""
private val accountBlocksMined = """
{
"status": "1",
"message": "OK",
"result": [
{
"blockNumber": "3462296",
"timeStamp": "1491118514",
"blockReward": "5194770940000000000"
},
{
"blockNumber": "2691400",
"timeStamp": "1480072029",
"blockReward": "5086562212310617100"
},
{
"blockNumber": "70606",
"timeStamp": "1439322608",
"blockReward": "5001164799033398000"
}
]
}"""

private val accountTransactions = """
{
"status": "1",
"message": "OK",
"result": [
{
"blockNumber": "5273167",
"timeStamp": "1521316197",
"hash": "0x308d39f4223154fdf2db3b803400dea0da7468592aded1c6e9c01fd35835f23f",
"nonce": "0",
"blockHash": "0x315ee5a947d4c7519bd817465711fbb0b56c8ecafc8d9766aef1350e83c41521",
"transactionIndex": "28",
"from": "0x047250bd5ac59e6c45473cc0036d71737c885f6a",
"to": "0x82e4499d4b2a669831a3881d61bb24f7b620c61a",
"value": "18034800000000000",
"gas": "21000",
"gasPrice": "4000000000",
"isError": "0",
"txreceipt_status": "1",
"input": "0x",
"contractAddress": "",
"cumulativeGasUsed": "1376343",
"gasUsed": "21000",
"confirmations": "150836"
},
{
"blockNumber": "5273704",
"timeStamp": "1521323646",
"hash": "0x55a6922f90f0fce43896b9b2239ddddd3f829fb06291724bfb4be6fcc895d202",
"nonce": "0",
"blockHash": "0xeb96c9b68ae66c42dbf35f323e66534858d88dd1b107f77bb2c65504140e9752",
"transactionIndex": "14",
"from": "0x4a7341f16107521adca5d24009e7c2d8829787d3",
"to": "0x82e4499d4b2a669831a3881d61bb24f7b620c61a",
"value": "53297010000000000",
"gas": "21000",
"gasPrice": "4000000000",
"isError": "0",
"txreceipt_status": "1",
"input": "0x",
"contractAddress": "",
"cumulativeGasUsed": "391843",
"gasUsed": "21000",
"confirmations": "150299"
}
]
}"""

private val inputBadResponse = """
{
"status": "0",
"message": "NOTOK",
"result": "Error!"
}"""


@Before
fun setUp() {
val gb = GsonBuilder()
gson = gb.create()
}

@After
fun tearDown() {
}

@Test
fun getBalance() {
val response = gson.fromJson(accountBalance, AccountBalanceResponse::class.java)
assertEquals("670456215218885498951364", response.result)
}

@Test
fun getMultiBalance() {
val response = gson.fromJson(accountMultiBalance, AccountMultiBalanceResponse::class.java)
assertEquals("0xddbd2b932c763ba5b1b7ae3b362eac3e8d40121a", response.result?.get(0)?.account)
assertEquals("40807168564070000000000", response.result?.get(0)?.balance)
assertEquals("0x63a9975ba31b0b9626b34300f7f627147df1f526", response.result?.get(1)?.account)
assertEquals("332567136222827062478", response.result?.get(1)?.balance)
assertEquals("0x198ef1ec325a96cc354c7266a038be8b5c558f67", response.result?.get(2)?.account)
assertEquals("0", response.result?.get(2)?.balance)
}

@Test
fun getBlocks() {
val response = gson.fromJson(accountBlocksMined, AccountBlockResponse::class.java)
assertEquals("3462296", response.result?.get(0)?.blockNumber)
assertEquals("1491118514", response.result?.get(0)?.timeStamp)
assertEquals("5194770940000000000", response.result?.get(0)?.blockReward)
assertEquals("2691400", response.result?.get(1)?.blockNumber)
assertEquals("1480072029", response.result?.get(1)?.timeStamp)
assertEquals("5086562212310617100", response.result?.get(1)?.blockReward)
}

@Test
fun getTransactions() {
val response = gson.fromJson(accountTransactions, AccountTransactionResponse::class.java)
assertEquals("0x047250bd5ac59e6c45473cc0036d71737c885f6a", response.result?.get(0)?.transactionFrom)
assertEquals("0x82e4499d4b2a669831a3881d61bb24f7b620c61a", response.result?.get(0)?.transactionTo)
assertEquals("18034800000000000", response.result?.get(0)?.value)
assertEquals("21000", response.result?.get(1)?.gas)
assertEquals("4000000000", response.result?.get(1)?.gasPrice)
assertEquals("0", response.result?.get(1)?.isError)
}

@Test
fun networkStatusIsDown() {
val response = gson.fromJson(inputBadResponse, BaseResponse::class.java)
Assert.assertEquals("0", response.status)
}

@Test
fun getNetworkStatus() {
fun networkStatusIsUp() {
val response = gson.fromJson(inputBadResponse, BaseResponse::class.java)
Assert.assertNotEquals("1", response.status)
}

@Test
fun getNetworkMessage() {
fun networkMessageNotOk() {
val response = gson.fromJson(inputBadResponse, BaseResponse::class.java)
Assert.assertEquals("NOTOK", response.message)
}

@Test
fun networkMessageOk() {
val response = gson.fromJson(inputBadResponse, BaseResponse::class.java)
Assert.assertNotEquals("OK", response.message)
}
}
2 changes: 1 addition & 1 deletion etherscanapi/src/test/java/jfyg/network/RestClientTest.kt
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ class RestClientTest {

mockWebServer.enqueue(MockResponse().setBody(fileName))

var networkService: NetworkService = retrofit.create(NetworkService::class.java)
val networkService: NetworkService = retrofit.create(NetworkService::class.java)

val call = networkService.getStat("stats", "ethsupply", "")
Assert.assertTrue(call.subscribe() != null)
Expand Down
6 changes: 3 additions & 3 deletions etherscanapi/src/test/java/jfyg/stat/StatTest.kt
Original file line number Diff line number Diff line change
Expand Up @@ -12,21 +12,21 @@ import org.junit.Assert.assertEquals
class StatTest {
lateinit var gson: Gson

val inputSupply = """
private val inputSupply = """
{
"status": "1",
"message": "OK",
"result": "98658682905300000000000000"
}"""

val inputBadResponse = """
private val inputBadResponse = """
{
"status": "0",
"message": "NOTOK",
"result": "Error!"
}"""

val inputPrice = """
private val inputPrice = """
{
"status": "1",
"message": "OK",
Expand Down
2 changes: 0 additions & 2 deletions settings.gradle
Original file line number Diff line number Diff line change
@@ -1,3 +1 @@
rootProject.name = 'etherscan'

include ':app', ':etherscanapi'