mirror of
https://github.com/kremalicious/metamask-extension.git
synced 2024-12-23 01:39:44 +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-test-renderer": "^15.5.4",
|
||||
"react-testutils-additions": "^15.2.0",
|
||||
"redux-test-utils": "^0.1.3",
|
||||
"sinon": "^4.0.0",
|
||||
"stylelint-config-standard": "^17.0.0",
|
||||
"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')
|
||||
var BalanceComponent = require('../../../ui/app/components/balance-component')
|
||||
const assert = require('assert')
|
||||
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 () {
|
||||
let balanceComponent
|
||||
|
||||
let store
|
||||
let component
|
||||
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 () {
|
||||
const formattedBalance = '1.23 ETH'
|
||||
|
||||
const tokenBalance = balanceComponent.getTokenBalance(formattedBalance, false)
|
||||
const fiatDisplayNumber = balanceComponent.getFiatDisplayNumber(formattedBalance, 2)
|
||||
const tokenBalance = balanceComponent.instance().getTokenBalance(formattedBalance, false)
|
||||
const fiatDisplayNumber = balanceComponent.instance().getFiatDisplayNumber(formattedBalance, 2)
|
||||
|
||||
assert.equal('1.23 ETH', tokenBalance)
|
||||
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 () {
|
||||
const formattedBalance = '1.23 ETH'
|
||||
|
||||
const tokenBalance = balanceComponent.getTokenBalance(formattedBalance, false)
|
||||
const fiatDisplayNumber = balanceComponent.getFiatDisplayNumber(formattedBalance, 0)
|
||||
const tokenBalance = balanceComponent.instance().getTokenBalance(formattedBalance, false)
|
||||
const fiatDisplayNumber = balanceComponent.instance().getFiatDisplayNumber(formattedBalance, 0)
|
||||
|
||||
assert.equal('1.23 ETH', tokenBalance)
|
||||
assert.equal('N/A', fiatDisplayNumber)
|
||||
|
@ -1,18 +1,22 @@
|
||||
const assert = require('assert')
|
||||
const additions = require('react-testutils-additions')
|
||||
const h = require('react-hyperscript')
|
||||
const PendingTx = require('../../../ui/app/components/pending-tx')
|
||||
const ReactTestUtils = require('react-addons-test-utils')
|
||||
const ethUtil = require('ethereumjs-util')
|
||||
|
||||
describe('PendingTx', function () {
|
||||
const identities = {
|
||||
'0xfdea65c8e26263f6d9a1b5de9555d2931a33b826': {
|
||||
name: 'Main Account 1',
|
||||
balance: '0x00000000000000056bc75e2d63100000',
|
||||
},
|
||||
}
|
||||
const { createMockStore } = require('redux-test-utils')
|
||||
const shallowWithStore = require('../../lib/shallow-with-store')
|
||||
|
||||
const identities = { abc: {}, def: {} }
|
||||
const mockState = {
|
||||
metamask: {
|
||||
accounts: { abc: {} },
|
||||
identities,
|
||||
conversionRate: 10,
|
||||
selectedAddress: 'abc',
|
||||
}
|
||||
}
|
||||
|
||||
describe('PendingTx', function () {
|
||||
const gasPrice = '0x4A817C800' // 20 Gwei
|
||||
const txData = {
|
||||
'id': 5021615666270214,
|
||||
@ -29,55 +33,35 @@ describe('PendingTx', function () {
|
||||
'gasLimitSpecified': false,
|
||||
'estimatedGas': '0x5208',
|
||||
}
|
||||
const newGasPrice = '0x77359400'
|
||||
|
||||
const computedBalances = {}
|
||||
computedBalances[Object.keys(identities)[0]] = {
|
||||
ethBalance: '0x00000000000000056bc75e2d63100000',
|
||||
}
|
||||
const props = {
|
||||
txData,
|
||||
computedBalances,
|
||||
sendTransaction: (txMeta, event) => {
|
||||
// Assert changes:
|
||||
const result = ethUtil.addHexPrefix(txMeta.txParams.gasPrice)
|
||||
assert.notEqual(result, gasPrice, 'gas price should change')
|
||||
assert.equal(result, newGasPrice, 'gas price assigned.')
|
||||
},
|
||||
}
|
||||
|
||||
it('should use updated values when edited.', function (done) {
|
||||
const renderer = ReactTestUtils.createRenderer()
|
||||
const newGasPrice = '0x77359400'
|
||||
let pendingTxComponent
|
||||
let store
|
||||
let component
|
||||
beforeEach(function () {
|
||||
store = createMockStore(mockState)
|
||||
component = shallowWithStore(h(PendingTx, props), store)
|
||||
pendingTxComponent = component
|
||||
})
|
||||
|
||||
const computedBalances = {}
|
||||
computedBalances[Object.keys(identities)[0]] = {
|
||||
ethBalance: '0x00000000000000056bc75e2d63100000',
|
||||
}
|
||||
const props = {
|
||||
identities,
|
||||
accounts: identities,
|
||||
txData,
|
||||
computedBalances,
|
||||
sendTransaction: (txMeta, event) => {
|
||||
// Assert changes:
|
||||
const result = ethUtil.addHexPrefix(txMeta.txParams.gasPrice)
|
||||
assert.notEqual(result, gasPrice, 'gas price should change')
|
||||
assert.equal(result, newGasPrice, 'gas price assigned.')
|
||||
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)
|
||||
}
|
||||
it('should render correctly', function (done) {
|
||||
assert.equal(pendingTxComponent.props().identities, identities)
|
||||
done()
|
||||
})
|
||||
})
|
||||
|
||||
|
@ -12,6 +12,7 @@ const currentNetworkId = 42
|
||||
const otherNetworkId = 36
|
||||
const privKey = new Buffer('8718b9618a37d1fc78c436511fc6df3c8258d3250635bba617f33003270ec03e', 'hex')
|
||||
|
||||
|
||||
describe('PendingTransactionTracker', function () {
|
||||
let pendingTxTracker, txMeta, txMetaNoHash, txMetaNoRawTx, providerResultStub,
|
||||
provider, txMeta3, txList, knownErrors
|
||||
|
@ -1,40 +1,45 @@
|
||||
var assert = require('assert');
|
||||
const assert = require('assert');
|
||||
|
||||
const additions = require('react-testutils-additions');
|
||||
const h = require('react-hyperscript');
|
||||
const ReactTestUtils = require('react-addons-test-utils');
|
||||
const sinon = require('sinon');
|
||||
const path = require('path');
|
||||
const Dropdown = require(path.join(__dirname, '..', '..', '..', '..', 'ui', 'app', 'components', 'dropdown.js')).Dropdown;
|
||||
const DropdownMenuItem = require(path.join(__dirname, '..', '..', '..', '..', 'ui', 'app', 'components', 'dropdown.js')).DropdownMenuItem;
|
||||
const Dropdown = require(path.join(__dirname, '..', '..', '..', '..', 'ui', 'app', 'components', 'dropdowns', 'index.js')).Dropdown;
|
||||
|
||||
const { createMockStore } = require('redux-test-utils')
|
||||
const shallowWithStore = require('../../../lib/shallow-with-store')
|
||||
|
||||
const mockState = {
|
||||
metamask: {
|
||||
}
|
||||
}
|
||||
|
||||
describe('Dropdown components', function () {
|
||||
let onClickOutside;
|
||||
let closeMenu;
|
||||
let onClick;
|
||||
|
||||
let dropdownComponentProps;
|
||||
const renderer = ReactTestUtils.createRenderer()
|
||||
let dropdownComponentProps = {
|
||||
isOpen: true,
|
||||
zIndex: 11,
|
||||
onClickOutside,
|
||||
style: {
|
||||
position: 'absolute',
|
||||
right: 0,
|
||||
top: '36px',
|
||||
},
|
||||
innerStyle: {},
|
||||
}
|
||||
|
||||
let dropdownComponent
|
||||
let store
|
||||
let component
|
||||
beforeEach(function () {
|
||||
onClickOutside = sinon.spy();
|
||||
closeMenu = sinon.spy();
|
||||
onClick = sinon.spy();
|
||||
|
||||
dropdownComponentProps = {
|
||||
isOpen: true,
|
||||
zIndex: 11,
|
||||
onClickOutside,
|
||||
style: {
|
||||
position: 'absolute',
|
||||
right: 0,
|
||||
top: '36px',
|
||||
},
|
||||
innerStyle: {},
|
||||
}
|
||||
});
|
||||
|
||||
it('can render two items', function () {
|
||||
const dropdownComponent = h(
|
||||
store = createMockStore(mockState)
|
||||
component = shallowWithStore(h(
|
||||
Dropdown,
|
||||
dropdownComponentProps,
|
||||
[
|
||||
@ -42,74 +47,35 @@ describe('Dropdown components', function () {
|
||||
.drop-menu-item:hover { background:rgb(235, 235, 235); }
|
||||
.drop-menu-item i { margin: 11px; }
|
||||
`),
|
||||
h(DropdownMenuItem, {
|
||||
h('li', {
|
||||
closeMenu,
|
||||
onClick,
|
||||
}, 'Item 1'),
|
||||
h(DropdownMenuItem, {
|
||||
h('li', {
|
||||
closeMenu,
|
||||
onClick,
|
||||
}, 'Item 2'),
|
||||
]
|
||||
)
|
||||
), store)
|
||||
dropdownComponent = component.dive()
|
||||
})
|
||||
|
||||
const component = additions.renderIntoDocument(dropdownComponent);
|
||||
renderer.render(dropdownComponent);
|
||||
const items = additions.find(component, 'li');
|
||||
it('can render two items', function () {
|
||||
const items = dropdownComponent.find('li');
|
||||
assert.equal(items.length, 2);
|
||||
});
|
||||
|
||||
it('closes when item clicked', function() {
|
||||
const dropdownComponent = h(
|
||||
Dropdown,
|
||||
dropdownComponentProps,
|
||||
[
|
||||
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);
|
||||
const items = dropdownComponent.find('li');
|
||||
const node = items.at(0);
|
||||
node.simulate('click');
|
||||
assert.equal(node.props().closeMenu, closeMenu);
|
||||
});
|
||||
|
||||
it('invokes click handler when item clicked', function() {
|
||||
const dropdownComponent = h(
|
||||
Dropdown,
|
||||
dropdownComponentProps,
|
||||
[
|
||||
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);
|
||||
const items = dropdownComponent.find('li');
|
||||
const node = items.at(0);
|
||||
node.simulate('click');
|
||||
assert.equal(onClick.calledOnce, true);
|
||||
});
|
||||
});
|
||||
|
Loading…
Reference in New Issue
Block a user