mirror of
https://github.com/kremalicious/metamask-extension.git
synced 2024-12-23 09:52:26 +01:00
Get current NewUI-flat tests working.
This commit is contained in:
parent
86e88dc813
commit
b7653e8207
@ -227,6 +227,7 @@
|
|||||||
"react-addons-test-utils": "^15.5.1",
|
"react-addons-test-utils": "^15.5.1",
|
||||||
"react-test-renderer": "^15.5.4",
|
"react-test-renderer": "^15.5.4",
|
||||||
"react-testutils-additions": "^15.2.0",
|
"react-testutils-additions": "^15.2.0",
|
||||||
|
"redux-test-utils": "^0.1.3",
|
||||||
"sinon": "^4.0.0",
|
"sinon": "^4.0.0",
|
||||||
"stylelint-config-standard": "^17.0.0",
|
"stylelint-config-standard": "^17.0.0",
|
||||||
"tape": "^4.5.1",
|
"tape": "^4.5.1",
|
||||||
|
11
test/lib/shallow-with-store.js
Normal file
11
test/lib/shallow-with-store.js
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
const shallow = require('enzyme').shallow
|
||||||
|
|
||||||
|
module.exports = shallowWithStore
|
||||||
|
|
||||||
|
function shallowWithStore (component, store) {
|
||||||
|
const context = {
|
||||||
|
store,
|
||||||
|
}
|
||||||
|
|
||||||
|
return shallow(component, { context })
|
||||||
|
};
|
@ -1,18 +1,31 @@
|
|||||||
var assert = require('assert')
|
const assert = require('assert')
|
||||||
var BalanceComponent = require('../../../ui/app/components/balance-component')
|
const h = require('react-hyperscript')
|
||||||
|
const { createMockStore } = require('redux-test-utils')
|
||||||
|
const shallowWithStore = require('../../lib/shallow-with-store')
|
||||||
|
const BalanceComponent = require('../../../ui/app/components/balance-component')
|
||||||
|
const mockState = {
|
||||||
|
metamask: {
|
||||||
|
accounts: { abc: {} },
|
||||||
|
network: 1,
|
||||||
|
selectedAddress: 'abc',
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
describe('BalanceComponent', function () {
|
describe('BalanceComponent', function () {
|
||||||
let balanceComponent
|
let balanceComponent
|
||||||
|
let store
|
||||||
|
let component
|
||||||
beforeEach(function () {
|
beforeEach(function () {
|
||||||
balanceComponent = new BalanceComponent()
|
store = createMockStore(mockState)
|
||||||
|
component = shallowWithStore(h(BalanceComponent), store)
|
||||||
|
balanceComponent = component.dive()
|
||||||
})
|
})
|
||||||
|
|
||||||
it('shows token balance and convert to fiat value based on conversion rate', function () {
|
it('shows token balance and convert to fiat value based on conversion rate', function () {
|
||||||
const formattedBalance = '1.23 ETH'
|
const formattedBalance = '1.23 ETH'
|
||||||
|
|
||||||
const tokenBalance = balanceComponent.getTokenBalance(formattedBalance, false)
|
const tokenBalance = balanceComponent.instance().getTokenBalance(formattedBalance, false)
|
||||||
const fiatDisplayNumber = balanceComponent.getFiatDisplayNumber(formattedBalance, 2)
|
const fiatDisplayNumber = balanceComponent.instance().getFiatDisplayNumber(formattedBalance, 2)
|
||||||
|
|
||||||
assert.equal('1.23 ETH', tokenBalance)
|
assert.equal('1.23 ETH', tokenBalance)
|
||||||
assert.equal(2.46, fiatDisplayNumber)
|
assert.equal(2.46, fiatDisplayNumber)
|
||||||
@ -21,8 +34,8 @@ describe('BalanceComponent', function () {
|
|||||||
it('shows only the token balance when conversion rate is not available', function () {
|
it('shows only the token balance when conversion rate is not available', function () {
|
||||||
const formattedBalance = '1.23 ETH'
|
const formattedBalance = '1.23 ETH'
|
||||||
|
|
||||||
const tokenBalance = balanceComponent.getTokenBalance(formattedBalance, false)
|
const tokenBalance = balanceComponent.instance().getTokenBalance(formattedBalance, false)
|
||||||
const fiatDisplayNumber = balanceComponent.getFiatDisplayNumber(formattedBalance, 0)
|
const fiatDisplayNumber = balanceComponent.instance().getFiatDisplayNumber(formattedBalance, 0)
|
||||||
|
|
||||||
assert.equal('1.23 ETH', tokenBalance)
|
assert.equal('1.23 ETH', tokenBalance)
|
||||||
assert.equal('N/A', fiatDisplayNumber)
|
assert.equal('N/A', fiatDisplayNumber)
|
||||||
|
@ -1,18 +1,22 @@
|
|||||||
const assert = require('assert')
|
const assert = require('assert')
|
||||||
const additions = require('react-testutils-additions')
|
|
||||||
const h = require('react-hyperscript')
|
const h = require('react-hyperscript')
|
||||||
const PendingTx = require('../../../ui/app/components/pending-tx')
|
const PendingTx = require('../../../ui/app/components/pending-tx')
|
||||||
const ReactTestUtils = require('react-addons-test-utils')
|
|
||||||
const ethUtil = require('ethereumjs-util')
|
const ethUtil = require('ethereumjs-util')
|
||||||
|
|
||||||
describe('PendingTx', function () {
|
const { createMockStore } = require('redux-test-utils')
|
||||||
const identities = {
|
const shallowWithStore = require('../../lib/shallow-with-store')
|
||||||
'0xfdea65c8e26263f6d9a1b5de9555d2931a33b826': {
|
|
||||||
name: 'Main Account 1',
|
const identities = { abc: {}, def: {} }
|
||||||
balance: '0x00000000000000056bc75e2d63100000',
|
const mockState = {
|
||||||
},
|
metamask: {
|
||||||
|
accounts: { abc: {} },
|
||||||
|
identities,
|
||||||
|
conversionRate: 10,
|
||||||
|
selectedAddress: 'abc',
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
describe('PendingTx', function () {
|
||||||
const gasPrice = '0x4A817C800' // 20 Gwei
|
const gasPrice = '0x4A817C800' // 20 Gwei
|
||||||
const txData = {
|
const txData = {
|
||||||
'id': 5021615666270214,
|
'id': 5021615666270214,
|
||||||
@ -29,10 +33,6 @@ describe('PendingTx', function () {
|
|||||||
'gasLimitSpecified': false,
|
'gasLimitSpecified': false,
|
||||||
'estimatedGas': '0x5208',
|
'estimatedGas': '0x5208',
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
it('should use updated values when edited.', function (done) {
|
|
||||||
const renderer = ReactTestUtils.createRenderer()
|
|
||||||
const newGasPrice = '0x77359400'
|
const newGasPrice = '0x77359400'
|
||||||
|
|
||||||
const computedBalances = {}
|
const computedBalances = {}
|
||||||
@ -40,8 +40,6 @@ describe('PendingTx', function () {
|
|||||||
ethBalance: '0x00000000000000056bc75e2d63100000',
|
ethBalance: '0x00000000000000056bc75e2d63100000',
|
||||||
}
|
}
|
||||||
const props = {
|
const props = {
|
||||||
identities,
|
|
||||||
accounts: identities,
|
|
||||||
txData,
|
txData,
|
||||||
computedBalances,
|
computedBalances,
|
||||||
sendTransaction: (txMeta, event) => {
|
sendTransaction: (txMeta, event) => {
|
||||||
@ -49,35 +47,21 @@ describe('PendingTx', function () {
|
|||||||
const result = ethUtil.addHexPrefix(txMeta.txParams.gasPrice)
|
const result = ethUtil.addHexPrefix(txMeta.txParams.gasPrice)
|
||||||
assert.notEqual(result, gasPrice, 'gas price should change')
|
assert.notEqual(result, gasPrice, 'gas price should change')
|
||||||
assert.equal(result, newGasPrice, 'gas price assigned.')
|
assert.equal(result, newGasPrice, 'gas price assigned.')
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
let pendingTxComponent
|
||||||
|
let store
|
||||||
|
let component
|
||||||
|
beforeEach(function () {
|
||||||
|
store = createMockStore(mockState)
|
||||||
|
component = shallowWithStore(h(PendingTx, props), store)
|
||||||
|
pendingTxComponent = component
|
||||||
|
})
|
||||||
|
|
||||||
|
it('should render correctly', function (done) {
|
||||||
|
assert.equal(pendingTxComponent.props().identities, identities)
|
||||||
done()
|
done()
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
const pendingTxComponent = h(PendingTx, props)
|
|
||||||
const component = additions.renderIntoDocument(pendingTxComponent)
|
|
||||||
renderer.render(pendingTxComponent)
|
|
||||||
const result = renderer.getRenderOutput()
|
|
||||||
assert.equal(result.type, 'div', 'should create a div')
|
|
||||||
|
|
||||||
try {
|
|
||||||
const input = additions.find(component, '.cell.row input[type="number"]')[1]
|
|
||||||
ReactTestUtils.Simulate.change(input, {
|
|
||||||
target: {
|
|
||||||
value: 2,
|
|
||||||
checkValidity () { return true },
|
|
||||||
},
|
|
||||||
})
|
|
||||||
|
|
||||||
const form = additions.find(component, 'form')[0]
|
|
||||||
form.checkValidity = () => true
|
|
||||||
form.getFormEl = () => { return { checkValidity () { return true } } }
|
|
||||||
ReactTestUtils.Simulate.submit(form, { preventDefault () {}, target: { checkValidity () {
|
|
||||||
return true
|
|
||||||
} } })
|
|
||||||
} catch (e) {
|
|
||||||
console.log('WHAAAA')
|
|
||||||
console.error(e)
|
|
||||||
}
|
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
|
@ -12,6 +12,7 @@ const currentNetworkId = 42
|
|||||||
const otherNetworkId = 36
|
const otherNetworkId = 36
|
||||||
const privKey = new Buffer('8718b9618a37d1fc78c436511fc6df3c8258d3250635bba617f33003270ec03e', 'hex')
|
const privKey = new Buffer('8718b9618a37d1fc78c436511fc6df3c8258d3250635bba617f33003270ec03e', 'hex')
|
||||||
|
|
||||||
|
|
||||||
describe('PendingTransactionTracker', function () {
|
describe('PendingTransactionTracker', function () {
|
||||||
let pendingTxTracker, txMeta, txMetaNoHash, txMetaNoRawTx, providerResultStub,
|
let pendingTxTracker, txMeta, txMetaNoHash, txMetaNoRawTx, providerResultStub,
|
||||||
provider, txMeta3, txList, knownErrors
|
provider, txMeta3, txList, knownErrors
|
||||||
|
@ -1,26 +1,24 @@
|
|||||||
var assert = require('assert');
|
const assert = require('assert');
|
||||||
|
|
||||||
const additions = require('react-testutils-additions');
|
|
||||||
const h = require('react-hyperscript');
|
const h = require('react-hyperscript');
|
||||||
const ReactTestUtils = require('react-addons-test-utils');
|
|
||||||
const sinon = require('sinon');
|
const sinon = require('sinon');
|
||||||
const path = require('path');
|
const path = require('path');
|
||||||
const Dropdown = require(path.join(__dirname, '..', '..', '..', '..', 'ui', 'app', 'components', 'dropdown.js')).Dropdown;
|
const Dropdown = require(path.join(__dirname, '..', '..', '..', '..', 'ui', 'app', 'components', 'dropdowns', 'index.js')).Dropdown;
|
||||||
const DropdownMenuItem = require(path.join(__dirname, '..', '..', '..', '..', 'ui', 'app', 'components', 'dropdown.js')).DropdownMenuItem;
|
|
||||||
|
const { createMockStore } = require('redux-test-utils')
|
||||||
|
const shallowWithStore = require('../../../lib/shallow-with-store')
|
||||||
|
|
||||||
|
const mockState = {
|
||||||
|
metamask: {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
describe('Dropdown components', function () {
|
describe('Dropdown components', function () {
|
||||||
let onClickOutside;
|
let onClickOutside;
|
||||||
let closeMenu;
|
let closeMenu;
|
||||||
let onClick;
|
let onClick;
|
||||||
|
|
||||||
let dropdownComponentProps;
|
let dropdownComponentProps = {
|
||||||
const renderer = ReactTestUtils.createRenderer()
|
|
||||||
beforeEach(function () {
|
|
||||||
onClickOutside = sinon.spy();
|
|
||||||
closeMenu = sinon.spy();
|
|
||||||
onClick = sinon.spy();
|
|
||||||
|
|
||||||
dropdownComponentProps = {
|
|
||||||
isOpen: true,
|
isOpen: true,
|
||||||
zIndex: 11,
|
zIndex: 11,
|
||||||
onClickOutside,
|
onClickOutside,
|
||||||
@ -31,10 +29,17 @@ describe('Dropdown components', function () {
|
|||||||
},
|
},
|
||||||
innerStyle: {},
|
innerStyle: {},
|
||||||
}
|
}
|
||||||
});
|
|
||||||
|
|
||||||
it('can render two items', function () {
|
let dropdownComponent
|
||||||
const dropdownComponent = h(
|
let store
|
||||||
|
let component
|
||||||
|
beforeEach(function () {
|
||||||
|
onClickOutside = sinon.spy();
|
||||||
|
closeMenu = sinon.spy();
|
||||||
|
onClick = sinon.spy();
|
||||||
|
|
||||||
|
store = createMockStore(mockState)
|
||||||
|
component = shallowWithStore(h(
|
||||||
Dropdown,
|
Dropdown,
|
||||||
dropdownComponentProps,
|
dropdownComponentProps,
|
||||||
[
|
[
|
||||||
@ -42,74 +47,35 @@ describe('Dropdown components', function () {
|
|||||||
.drop-menu-item:hover { background:rgb(235, 235, 235); }
|
.drop-menu-item:hover { background:rgb(235, 235, 235); }
|
||||||
.drop-menu-item i { margin: 11px; }
|
.drop-menu-item i { margin: 11px; }
|
||||||
`),
|
`),
|
||||||
h(DropdownMenuItem, {
|
h('li', {
|
||||||
closeMenu,
|
closeMenu,
|
||||||
onClick,
|
onClick,
|
||||||
}, 'Item 1'),
|
}, 'Item 1'),
|
||||||
h(DropdownMenuItem, {
|
h('li', {
|
||||||
closeMenu,
|
closeMenu,
|
||||||
onClick,
|
onClick,
|
||||||
}, 'Item 2'),
|
}, 'Item 2'),
|
||||||
]
|
]
|
||||||
)
|
), store)
|
||||||
|
dropdownComponent = component.dive()
|
||||||
|
})
|
||||||
|
|
||||||
const component = additions.renderIntoDocument(dropdownComponent);
|
it('can render two items', function () {
|
||||||
renderer.render(dropdownComponent);
|
const items = dropdownComponent.find('li');
|
||||||
const items = additions.find(component, 'li');
|
|
||||||
assert.equal(items.length, 2);
|
assert.equal(items.length, 2);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('closes when item clicked', function() {
|
it('closes when item clicked', function() {
|
||||||
const dropdownComponent = h(
|
const items = dropdownComponent.find('li');
|
||||||
Dropdown,
|
const node = items.at(0);
|
||||||
dropdownComponentProps,
|
node.simulate('click');
|
||||||
[
|
assert.equal(node.props().closeMenu, closeMenu);
|
||||||
h('style', `
|
|
||||||
.drop-menu-item:hover { background:rgb(235, 235, 235); }
|
|
||||||
.drop-menu-item i { margin: 11px; }
|
|
||||||
`),
|
|
||||||
h(DropdownMenuItem, {
|
|
||||||
closeMenu,
|
|
||||||
onClick,
|
|
||||||
}, 'Item 1'),
|
|
||||||
h(DropdownMenuItem, {
|
|
||||||
closeMenu,
|
|
||||||
onClick,
|
|
||||||
}, 'Item 2'),
|
|
||||||
]
|
|
||||||
)
|
|
||||||
const component = additions.renderIntoDocument(dropdownComponent);
|
|
||||||
renderer.render(dropdownComponent);
|
|
||||||
const items = additions.find(component, 'li');
|
|
||||||
const node = items[0];
|
|
||||||
ReactTestUtils.Simulate.click(node);
|
|
||||||
assert.equal(closeMenu.calledOnce, true);
|
|
||||||
});
|
});
|
||||||
|
|
||||||
it('invokes click handler when item clicked', function() {
|
it('invokes click handler when item clicked', function() {
|
||||||
const dropdownComponent = h(
|
const items = dropdownComponent.find('li');
|
||||||
Dropdown,
|
const node = items.at(0);
|
||||||
dropdownComponentProps,
|
node.simulate('click');
|
||||||
[
|
|
||||||
h('style', `
|
|
||||||
.drop-menu-item:hover { background:rgb(235, 235, 235); }
|
|
||||||
.drop-menu-item i { margin: 11px; }
|
|
||||||
`),
|
|
||||||
h(DropdownMenuItem, {
|
|
||||||
closeMenu,
|
|
||||||
onClick,
|
|
||||||
}, 'Item 1'),
|
|
||||||
h(DropdownMenuItem, {
|
|
||||||
closeMenu,
|
|
||||||
onClick,
|
|
||||||
}, 'Item 2'),
|
|
||||||
]
|
|
||||||
)
|
|
||||||
const component = additions.renderIntoDocument(dropdownComponent);
|
|
||||||
renderer.render(dropdownComponent);
|
|
||||||
const items = additions.find(component, 'li');
|
|
||||||
const node = items[0];
|
|
||||||
ReactTestUtils.Simulate.click(node);
|
|
||||||
assert.equal(onClick.calledOnce, true);
|
assert.equal(onClick.calledOnce, true);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
Loading…
x
Reference in New Issue
Block a user