import assert from 'assert' import selectors from '../send.selectors.js' const { accountsWithSendEtherInfoSelector, // autoAddToBetaUI, getAddressBook, getAmountConversionRate, getConversionRate, getConvertedCurrency, getCurrentAccountWithSendEtherInfo, getCurrentCurrency, getCurrentNetwork, getCurrentViewContext, getForceGasMin, getGasLimit, getGasPrice, getGasTotal, getPrimaryCurrency, getSelectedAccount, getSelectedAddress, getSelectedIdentity, getSelectedToken, // getSelectedTokenContract, getSelectedTokenExchangeRate, getSelectedTokenToFiatRate, getSendAmount, getSendEditingTransactionId, getSendErrors, getSendFrom, getSendFromBalance, getSendFromObject, getSendMaxModeState, getSendTo, getSendToAccounts, getTokenBalance, getTokenExchangeRate, getUnapprovedTxs, isSendFormInError, // transactionsSelector, } = selectors import mockState from './send-selectors-test-data' describe('send selectors', () => { describe('accountsWithSendEtherInfoSelector()', () => { it('should return an array of account objects with name info from identities', () => { assert.deepEqual( accountsWithSendEtherInfoSelector(mockState), [ { 'code': '0x', 'balance': '0x47c9d71831c76efe', 'nonce': '0x1b', 'address': '0xfdea65c8e26263f6d9a1b5de9555d2931a33b825', 'name': 'Send Account 1', }, { 'code': '0x', 'balance': '0x37452b1315889f80', 'nonce': '0xa', 'address': '0xc5b8dbac4c1d3f152cdeb400e2313f309c410acb', 'name': 'Send Account 2', }, { 'code': '0x', 'balance': '0x30c9d71831c76efe', 'nonce': '0x1c', 'address': '0x2f8d4a878cfa04a6e60d46362f5644deab66572d', 'name': 'Send Account 3', }, { 'code': '0x', 'balance': '0x0', 'nonce': '0x0', 'address': '0xd85a4b6a394794842887b8284293d69163007bbb', 'name': 'Send Account 4', }, ] ) }) }) // describe('autoAddToBetaUI()', () => { // it('should', () => { // assert.deepEqual( // autoAddToBetaUI(mockState), // ) // }) // }) describe('getAddressBook()', () => { it('should return the address book', () => { assert.deepEqual( getAddressBook(mockState), [ { 'address': '0x06195827297c7a80a443b6894d3bdb8824b43896', 'name': 'Address Book Account 1', }, ], ) }) }) describe('getAmountConversionRate()', () => { it('should return the token conversion rate if a token is selected', () => { assert.equal( getAmountConversionRate(mockState), 2401.76400654 ) }) it('should return the eth conversion rate if no token is selected', () => { const editedMockState = { metamask: Object.assign({}, mockState.metamask, { selectedTokenAddress: null }), } assert.equal( getAmountConversionRate(editedMockState), 1200.88200327 ) }) }) describe('getConversionRate()', () => { it('should return the eth conversion rate', () => { assert.deepEqual( getConversionRate(mockState), 1200.88200327 ) }) }) describe('getConvertedCurrency()', () => { it('should return the currently selected currency', () => { assert.equal( getConvertedCurrency(mockState), 'USD' ) }) }) describe('getCurrentAccountWithSendEtherInfo()', () => { it('should return the currently selected account with identity info', () => { assert.deepEqual( getCurrentAccountWithSendEtherInfo(mockState), { 'code': '0x', 'balance': '0x0', 'nonce': '0x0', 'address': '0xd85a4b6a394794842887b8284293d69163007bbb', 'name': 'Send Account 4', } ) }) }) describe('getCurrentCurrency()', () => { it('should return the currently selected currency', () => { assert.equal( getCurrentCurrency(mockState), 'USD' ) }) }) describe('getCurrentNetwork()', () => { it('should return the id of the currently selected network', () => { assert.equal( getCurrentNetwork(mockState), '3' ) }) }) describe('getCurrentViewContext()', () => { it('should return the context of the current view', () => { assert.equal( getCurrentViewContext(mockState), '0x0dcd5d886577d5081b0c52e242ef29e70be3e7bc' ) }) }) describe('getForceGasMin()', () => { it('should get the send.forceGasMin property', () => { assert.equal( getForceGasMin(mockState), true ) }) }) describe('getGasLimit()', () => { it('should return the send.gasLimit', () => { assert.equal( getGasLimit(mockState), '0xFFFF' ) }) }) describe('getGasPrice()', () => { it('should return the send.gasPrice', () => { assert.equal( getGasPrice(mockState), '0xaa' ) }) }) describe('getGasTotal()', () => { it('should return the send.gasTotal', () => { assert.equal( getGasTotal(mockState), '0xb451dc41b578' ) }) }) describe('getPrimaryCurrency()', () => { it('should return the symbol of the selected token', () => { assert.equal( getPrimaryCurrency(mockState), 'DEF' ) }) }) describe('getSelectedAccount()', () => { it('should return the currently selected account', () => { assert.deepEqual( getSelectedAccount(mockState), { 'code': '0x', 'balance': '0x0', 'nonce': '0x0', 'address': '0xd85a4b6a394794842887b8284293d69163007bbb', } ) }) }) describe('getSelectedAddress()', () => { it('should', () => { assert.equal( getSelectedAddress(mockState), '0xd85a4b6a394794842887b8284293d69163007bbb' ) }) }) describe('getSelectedIdentity()', () => { it('should return the identity object of the currently selected address', () => { assert.deepEqual( getSelectedIdentity(mockState), { 'address': '0xd85a4b6a394794842887b8284293d69163007bbb', 'name': 'Send Account 4', } ) }) }) describe('getSelectedToken()', () => { it('should return the currently selected token if selected', () => { assert.deepEqual( getSelectedToken(mockState), { 'address': '0x8d6b81208414189a58339873ab429b6c47ab92d3', 'decimals': 4, 'symbol': 'DEF', } ) }) it('should return the send token if none is currently selected, but a send token exists', () => { const mockSendToken = { 'address': '0x123456708414189a58339873ab429b6c47ab92d3', 'decimals': 4, 'symbol': 'JKL', } const editedMockState = { metamask: Object.assign({}, mockState.metamask, { selectedTokenAddress: null, send: { token: mockSendToken, }, }), } assert.deepEqual( getSelectedToken(editedMockState), Object.assign({}, mockSendToken) ) }) }) // TODO // describe('getSelectedTokenContract()', () => { // it('should', () => { // assert.deepEqual( // getSelectedTokenContract(mockState), // ) // }) // }) describe('getSelectedTokenExchangeRate()', () => { it('should return the exchange rate for the selected token', () => { assert.equal( getSelectedTokenExchangeRate(mockState), 2.0 ) }) }) describe('getSelectedTokenToFiatRate()', () => { it('should return rate for converting the selected token to fiat', () => { assert.equal( getSelectedTokenToFiatRate(mockState), 2401.76400654 ) }) }) describe('getSendAmount()', () => { it('should return the send.amount', () => { assert.equal( getSendAmount(mockState), '0x080' ) }) }) describe('getSendEditingTransactionId()', () => { it('should return the send.editingTransactionId', () => { assert.equal( getSendEditingTransactionId(mockState), 97531 ) }) }) describe('getSendErrors()', () => { it('should return the send.errors', () => { assert.deepEqual( getSendErrors(mockState), { 'someError': null } ) }) }) describe('getSendFrom()', () => { it('should return the send.from', () => { assert.deepEqual( getSendFrom(mockState), { 'address': '0xabcdefg', 'balance': '0x5f4e3d2c1', } ) }) }) describe('getSendFromBalance()', () => { it('should get the send.from balance if it exists', () => { assert.equal( getSendFromBalance(mockState), '0x5f4e3d2c1' ) }) it('should get the selected account balance if the send.from does not exist', () => { const editedMockState = { metamask: Object.assign({}, mockState.metamask, { send: { from: null, }, }), } assert.equal( getSendFromBalance(editedMockState), '0x0' ) }) }) describe('getSendFromObject()', () => { it('should return send.from if it exists', () => { assert.deepEqual( getSendFromObject(mockState), { 'address': '0xabcdefg', 'balance': '0x5f4e3d2c1', } ) }) it('should return the current account with send ether info if send.from does not exist', () => { const editedMockState = { metamask: Object.assign({}, mockState.metamask, { send: { from: null, }, }), } assert.deepEqual( getSendFromObject(editedMockState), { 'code': '0x', 'balance': '0x0', 'nonce': '0x0', 'address': '0xd85a4b6a394794842887b8284293d69163007bbb', 'name': 'Send Account 4', } ) }) }) describe('getSendMaxModeState()', () => { it('should return send.maxModeOn', () => { assert.equal( getSendMaxModeState(mockState), false ) }) }) describe('getSendTo()', () => { it('should return send.to', () => { assert.equal( getSendTo(mockState), '0x987fedabc' ) }) }) describe('getSendToAccounts()', () => { it('should return an array including all the users accounts and the address book', () => { assert.deepEqual( getSendToAccounts(mockState), [ { 'code': '0x', 'balance': '0x47c9d71831c76efe', 'nonce': '0x1b', 'address': '0xfdea65c8e26263f6d9a1b5de9555d2931a33b825', 'name': 'Send Account 1', }, { 'code': '0x', 'balance': '0x37452b1315889f80', 'nonce': '0xa', 'address': '0xc5b8dbac4c1d3f152cdeb400e2313f309c410acb', 'name': 'Send Account 2', }, { 'code': '0x', 'balance': '0x30c9d71831c76efe', 'nonce': '0x1c', 'address': '0x2f8d4a878cfa04a6e60d46362f5644deab66572d', 'name': 'Send Account 3', }, { 'code': '0x', 'balance': '0x0', 'nonce': '0x0', 'address': '0xd85a4b6a394794842887b8284293d69163007bbb', 'name': 'Send Account 4', }, { 'address': '0x06195827297c7a80a443b6894d3bdb8824b43896', 'name': 'Address Book Account 1', }, ] ) }) }) describe('getTokenBalance()', () => { it('should', () => { assert.equal( getTokenBalance(mockState), 3434 ) }) }) describe('getTokenExchangeRate()', () => { it('should return the passed tokens exchange rates', () => { assert.equal( getTokenExchangeRate(mockState, 'GHI'), 31.01 ) }) }) describe('getUnapprovedTxs()', () => { it('should return the unapproved txs', () => { assert.deepEqual( getUnapprovedTxs(mockState), { '4768706228115573': { 'id': 4768706228115573, 'time': 1487363153561, 'status': 'unapproved', 'gasMultiplier': 1, 'metamaskNetworkId': '3', 'txParams': { 'from': '0xc5b8dbac4c1d3f152cdeb400e2313f309c410acb', 'to': '0x18a3462427bcc9133bb46e88bcbe39cd7ef0e761', 'value': '0xde0b6b3a7640000', 'metamaskId': 4768706228115573, 'metamaskNetworkId': '3', 'gas': '0x5209', }, 'gasLimitSpecified': false, 'estimatedGas': '0x5209', 'txFee': '17e0186e60800', 'txValue': 'de0b6b3a7640000', 'maxCost': 'de234b52e4a0800', 'gasPrice': '4a817c800', }, } ) }) }) describe('isSendFormInError()', () => { it('should return true if amount or to errors are truthy', () => { const editedMockState1 = { send: Object.assign({}, mockState.send, { errors: { amount: true }, }), } assert.deepEqual( isSendFormInError(editedMockState1), true ) const editedMockState2 = { send: Object.assign({}, mockState.send, { errors: { to: true }, }), } assert.deepEqual( isSendFormInError(editedMockState2), true ) }) it('should return false if amount is falsy and to is null', () => { const editedMockState = { send: Object.assign({}, mockState.send, { errors: { amount: false, to: null } }), } assert.deepEqual( isSendFormInError(editedMockState), false ) }) }) // TODO // describe('transactionsSelector()', () => { // it('should', () => { // assert.deepEqual( // transactionsSelector(mockState), // ) // }) // }) })