mirror of
https://github.com/Permissionless-Software-Foundation/ipfs-bch-wallet-service.git
synced 2026-09-21 16:52:03 -07:00
fix(getTransactions()): Added unit tests
This commit is contained in:
Generated
+4
-4
@@ -50,6 +50,7 @@
|
||||
"eslint-plugin-prettier": "3.3.1",
|
||||
"eslint-plugin-standard": "4.0.0",
|
||||
"husky": "4.3.8",
|
||||
"lodash.clonedeep": "^4.5.0",
|
||||
"mocha": "8.2.1",
|
||||
"nyc": "15.1.0",
|
||||
"semantic-release": "17.4.4",
|
||||
@@ -14158,10 +14159,9 @@
|
||||
},
|
||||
"node_modules/lodash.clonedeep": {
|
||||
"version": "4.5.0",
|
||||
"resolved": "http://94.130.170.209:4873/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz",
|
||||
"resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz",
|
||||
"integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=",
|
||||
"dev": true,
|
||||
"license": "MIT"
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/lodash.escaperegexp": {
|
||||
"version": "4.1.2",
|
||||
@@ -36855,7 +36855,7 @@
|
||||
},
|
||||
"lodash.clonedeep": {
|
||||
"version": "4.5.0",
|
||||
"resolved": "http://94.130.170.209:4873/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz",
|
||||
"resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz",
|
||||
"integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=",
|
||||
"dev": true
|
||||
},
|
||||
|
||||
@@ -65,6 +65,7 @@
|
||||
"eslint-plugin-prettier": "3.3.1",
|
||||
"eslint-plugin-standard": "4.0.0",
|
||||
"husky": "4.3.8",
|
||||
"lodash.clonedeep": "^4.5.0",
|
||||
"mocha": "8.2.1",
|
||||
"nyc": "15.1.0",
|
||||
"semantic-release": "17.4.4",
|
||||
|
||||
@@ -50,7 +50,7 @@ class BCHUseCases {
|
||||
data.transactions[0].transactions,
|
||||
sortOrder
|
||||
)
|
||||
// console.log(`txsArr: ${JSON.stringify(txsArr, null, 2)}`)
|
||||
console.log(`txsArr: ${JSON.stringify(txsArr, null, 2)}`)
|
||||
|
||||
// Paginate the results
|
||||
const pagedResults = this.bchjs.Util.chunk100(txsArr)
|
||||
|
||||
@@ -56,7 +56,8 @@ const localdb = {
|
||||
const bchjs = {
|
||||
Electrumx: {
|
||||
transactions: () => {},
|
||||
balance: () => {}
|
||||
balance: () => {},
|
||||
sortAllTxs: () => {}
|
||||
},
|
||||
Utxo: {
|
||||
get: () => {}
|
||||
@@ -69,6 +70,9 @@ const bchjs = {
|
||||
},
|
||||
encryption: {
|
||||
getPubKey: () => {}
|
||||
},
|
||||
Util: {
|
||||
chunk100: () => {}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,3 +1,28 @@
|
||||
/*
|
||||
Mock data for use-cases/bch/index.js unit tests
|
||||
*/
|
||||
|
||||
const fulcrumOut01 = {
|
||||
success: true,
|
||||
transactions: [
|
||||
{
|
||||
transactions: [
|
||||
{
|
||||
height: 560430,
|
||||
tx_hash:
|
||||
'3e1f3e882be9c03897eeb197224bf87f312be556a89f4308fabeeeabcf9bc851'
|
||||
},
|
||||
{
|
||||
height: 560534,
|
||||
tx_hash:
|
||||
'4ebbeaac51ce141e262964e3a0ce11b96ca72c0dffe9b4127ce80135f503a280'
|
||||
}
|
||||
],
|
||||
address: 'bitcoincash:qpdh9s677ya8tnx7zdhfrn8qfyvy22wj4qa7nwqa5v'
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
fulcrumOut01
|
||||
}
|
||||
|
||||
@@ -5,18 +5,23 @@
|
||||
// Public npm libraries
|
||||
const assert = require('chai').assert
|
||||
const sinon = require('sinon')
|
||||
const clone = require('lodash.clonedeep')
|
||||
|
||||
// Local support libraries
|
||||
const BCHUseCases = require('../../../../src/use-cases/bch')
|
||||
const adapters = require('../../mocks/adapters')
|
||||
const mockDataLib = require('../../mocks/use-cases/bch/bch.use-cases.mocks.js')
|
||||
|
||||
describe('#bch-use-case', () => {
|
||||
let uut
|
||||
let sandbox
|
||||
let mockData
|
||||
|
||||
beforeEach(() => {
|
||||
sandbox = sinon.createSandbox()
|
||||
|
||||
mockData = clone(mockDataLib)
|
||||
|
||||
uut = new BCHUseCases({ adapters })
|
||||
})
|
||||
|
||||
@@ -39,18 +44,82 @@ describe('#bch-use-case', () => {
|
||||
|
||||
describe('#getTransactions', () => {
|
||||
it('should get transactions for an address', async () => {
|
||||
// Mock dependencies
|
||||
sandbox
|
||||
.stub(uut.bchjs.Electrumx, 'transactions')
|
||||
.resolves(mockData.fulcrumOut01)
|
||||
sandbox
|
||||
.stub(uut.bchjs.Electrumx, 'sortAllTxs')
|
||||
.resolves(mockData.fulcrumOut01.transactions[0].transactions)
|
||||
sandbox
|
||||
.stub(uut.bchjs.Util, 'chunk100')
|
||||
.returns([mockData.fulcrumOut01.transactions[0].transactions])
|
||||
|
||||
const address = 'bitcoincash:qpdh9s677ya8tnx7zdhfrn8qfyvy22wj4qa7nwqa5v'
|
||||
const rpcData = {
|
||||
payload: {
|
||||
params: {
|
||||
addresses: [
|
||||
'bitcoincash:qpdh9s677ya8tnx7zdhfrn8qfyvy22wj4qa7nwqa5v'
|
||||
]
|
||||
address
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
const result = await uut.getTransactions(rpcData)
|
||||
console.log('result: ', result)
|
||||
// console.log('result: ', result)
|
||||
|
||||
// Assert expected values and properties.
|
||||
assert.equal(result.address, address)
|
||||
assert.equal(result.status, 200)
|
||||
assert.equal(result.success, true)
|
||||
assert.isArray(result.txs)
|
||||
})
|
||||
|
||||
it('should return error if Fulcrum communication is not possible', async () => {
|
||||
// Force an error
|
||||
sandbox
|
||||
.stub(uut.bchjs.Electrumx, 'transactions')
|
||||
.resolves({ success: false })
|
||||
|
||||
const address = 'bitcoincash:qpdh9s677ya8tnx7zdhfrn8qfyvy22wj4qa7nwqa5v'
|
||||
const rpcData = {
|
||||
payload: {
|
||||
params: {
|
||||
address
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
const result = await uut.getTransactions(rpcData)
|
||||
// console.log('result: ', result)
|
||||
|
||||
assert.equal(result.success, false)
|
||||
assert.equal(result.status, 422)
|
||||
assert.equal(result.message, 'Could not query Fulcrum indexer.')
|
||||
assert.equal(result.endpoint, 'transactions')
|
||||
})
|
||||
|
||||
it('should return error if there is an error', async () => {
|
||||
// Force an error
|
||||
sandbox
|
||||
.stub(uut.bchjs.Electrumx, 'transactions')
|
||||
.rejects(new Error('test error'))
|
||||
|
||||
const address = 'bitcoincash:qpdh9s677ya8tnx7zdhfrn8qfyvy22wj4qa7nwqa5v'
|
||||
const rpcData = {
|
||||
payload: {
|
||||
params: {
|
||||
address
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
const result = await uut.getTransactions(rpcData)
|
||||
// console.log('result: ', result)
|
||||
|
||||
assert.equal(result.success, false)
|
||||
assert.equal(result.status, 422)
|
||||
assert.equal(result.message, 'test error')
|
||||
assert.equal(result.endpoint, 'transactions')
|
||||
})
|
||||
})
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user