Skip to content

Commit

Permalink
[test] refs fibercrypto#136 - Add tests for LocalWallet of account.go
Browse files Browse the repository at this point in the history
Tests:
- LocalWallet::ScanUnspentOutputs
- LocalWallet::ListTransactions
  • Loading branch information
AntiD2ta committed Nov 14, 2019
1 parent d8697ff commit b1f31c6
Show file tree
Hide file tree
Showing 2 changed files with 154 additions and 0 deletions.
76 changes: 76 additions & 0 deletions src/coin/skycoin/models/account_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -322,3 +322,79 @@ func TestRemoteWalletListTransactions(t *testing.T) {
}
require.Equal(t, 1, items)
}

func TestLocalWalletScanUnspentOutputs(t *testing.T) {
CleanGlobalMock()

global_mock.On("Wallet", "test.wlt").Return(
&api.WalletResponse{
Meta: readable.WalletMeta{
Coin: "Sky",
Filename: "FiberCrypto",
Label: "test.wlt",
Encrypted: true,
},
Entries: []readable.WalletEntry{
readable.WalletEntry{Address: "addr"},
},
},
nil)

addresses := []string{
"2HPiZkMTD2pB9FZ6HbCxFSXa1FGeNkLeEbP",
"7wqRjpVwg5uSsz72oAZcDrBevHQRHQudyj",
"2G9wDPX14WsbZuZU1f7MveYc9vpLxj2qNsz",
"6gnBM5gMSSb7XRUEap7q3WxFnuvbN9usTq",
}

mockSkyApiOutputsForAddresses(global_mock, addresses)

wlt := &LocalWallet{WalletDir: "./testdata", Id: "test.wlt"}

iter := wlt.ScanUnspentOutputs()
items := 0
for iter.Next() {
to := iter.Value()
items++
require.Equal(t, "2HPiZkMTD2pB9FZ6HbCxFSXa1FGeNkLeEbP", to.GetAddress().String())
}
require.Equal(t, 8, items)
}

func TestLocalWalletListTransactions(t *testing.T) {
CleanGlobalMock()

global_mock.On("Wallet", "test.wlt").Return(
&api.WalletResponse{
Meta: readable.WalletMeta{
Coin: "Sky",
Filename: "FiberCrypto",
Label: "test.wlt",
Encrypted: true,
},
Entries: []readable.WalletEntry{
readable.WalletEntry{Address: "addr"},
},
},
nil)

addresses := []string{
"2HPiZkMTD2pB9FZ6HbCxFSXa1FGeNkLeEbP",
"7wqRjpVwg5uSsz72oAZcDrBevHQRHQudyj",
"2G9wDPX14WsbZuZU1f7MveYc9vpLxj2qNsz",
"6gnBM5gMSSb7XRUEap7q3WxFnuvbN9usTq",
}

mockSkyApiTransactionsVerbose(global_mock, addresses)

wlt := &LocalWallet{WalletDir: "./testdata", Id: "test.wlt"}

iter := wlt.ListTransactions()
items := 0
for iter.Next() {
tx := iter.Value()
items++
require.Equal(t, "hash1", tx.GetId())
}
require.Equal(t, 4, items)
}
78 changes: 78 additions & 0 deletions src/coin/skycoin/models/skyapi_mock_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -66,3 +66,81 @@ func mockSkyApiCreateTransaction(mock *SkycoinApiMock, req *api.CreateTransactio
crtTxn,
nil)
}

func mockSkyApiOutputsForAddresses(mock *SkycoinApiMock, addresses []string) {
usOut := readable.UnspentOutput{
Hash: "hash1",
Coins: "42",
Hours: uint64(42),
CalculatedHours: uint64(42),
Address: "2HPiZkMTD2pB9FZ6HbCxFSXa1FGeNkLeEbP",
}
response := &readable.UnspentOutputsSummary{
HeadOutputs: readable.UnspentOutputs{usOut, usOut},
}

global_mock.On(
"OutputsForAddresses",
[]string{
"6gnBM5gMSSb7XRUEap7q3WxFnuvbN9usTq",
},
).Return(response, nil)

global_mock.On(
"OutputsForAddresses",
[]string{
"2HPiZkMTD2pB9FZ6HbCxFSXa1FGeNkLeEbP",
},
).Return(response, nil)

global_mock.On(
"OutputsForAddresses",
[]string{
"7wqRjpVwg5uSsz72oAZcDrBevHQRHQudyj",
},
).Return(response, nil)

global_mock.On(
"OutputsForAddresses",
[]string{
"2G9wDPX14WsbZuZU1f7MveYc9vpLxj2qNsz",
},
).Return(response, nil)
}

func mockSkyApiTransactionsVerbose(mock *SkycoinApiMock, addresses []string) {
response := readable.TransactionWithStatusVerbose{
Status: readable.TransactionStatus{
Confirmed: false,
},
}
response.Transaction.Hash = "hash1"

global_mock.On("TransactionsVerbose", []string{"2HPiZkMTD2pB9FZ6HbCxFSXa1FGeNkLeEbP"}).Return(
[]readable.TransactionWithStatusVerbose{
response,
},
nil,
)

global_mock.On("TransactionsVerbose", []string{"7wqRjpVwg5uSsz72oAZcDrBevHQRHQudyj"}).Return(
[]readable.TransactionWithStatusVerbose{
response,
},
nil,
)

global_mock.On("TransactionsVerbose", []string{"2G9wDPX14WsbZuZU1f7MveYc9vpLxj2qNsz"}).Return(
[]readable.TransactionWithStatusVerbose{
response,
},
nil,
)

global_mock.On("TransactionsVerbose", []string{"6gnBM5gMSSb7XRUEap7q3WxFnuvbN9usTq"}).Return(
[]readable.TransactionWithStatusVerbose{
response,
},
nil,
)
}

0 comments on commit b1f31c6

Please sign in to comment.