Add react-testing-library/react (#9249)
* Add react-testing-library Adds react-testing-library as a dependency, creates a wrapper function with Provider store/I18n context support, and implements it in unconnected-account-alert. * Refactor renderWithProvider store to extra param, instead of component prop storefeature/default_network_editable
parent
6aba8e6bc1
commit
5f11273550
@ -0,0 +1,158 @@ |
|||||||
|
import assert from 'assert' |
||||||
|
import React from 'react' |
||||||
|
|
||||||
|
import sinon from 'sinon' |
||||||
|
import thunk from 'redux-thunk' |
||||||
|
|
||||||
|
import { fireEvent } from '@testing-library/react' |
||||||
|
import configureMockStore from 'redux-mock-store' |
||||||
|
|
||||||
|
import { renderWithProvider } from '../../../../../../../test/lib/render-helpers' |
||||||
|
|
||||||
|
import * as actions from '../../../../../store/actions' |
||||||
|
import UnconnectedAccountAlert from '..' |
||||||
|
|
||||||
|
describe('Unconnected Account Alert', function () { |
||||||
|
|
||||||
|
const network = '123' |
||||||
|
|
||||||
|
const selectedAddress = '0xec1adf982415d2ef5ec55899b9bfb8bc0f29251b' |
||||||
|
|
||||||
|
const identities = { |
||||||
|
'0x0dcd5d886577d5081b0c52e242ef29e70be3e7bc': { |
||||||
|
address: '0x0dcd5d886577d5081b0c52e242ef29e70be3e7bc', |
||||||
|
name: 'Account 1', |
||||||
|
}, |
||||||
|
'0xec1adf982415d2ef5ec55899b9bfb8bc0f29251b': { |
||||||
|
address: '0xec1adf982415d2ef5ec55899b9bfb8bc0f29251b', |
||||||
|
name: 'Account 2', |
||||||
|
}, |
||||||
|
} |
||||||
|
|
||||||
|
const accounts = { |
||||||
|
'0x0dcd5d886577d5081b0c52e242ef29e70be3e7bc': { |
||||||
|
address: '0x0dcd5d886577d5081b0c52e242ef29e70be3e7bc', |
||||||
|
balance: '0x0', |
||||||
|
}, |
||||||
|
'0xec1adf982415d2ef5ec55899b9bfb8bc0f29251b': { |
||||||
|
address: '0xec1adf982415d2ef5ec55899b9bfb8bc0f29251b', |
||||||
|
balance: '0x0', |
||||||
|
}, |
||||||
|
} |
||||||
|
|
||||||
|
const cachedBalances = { |
||||||
|
'123': { |
||||||
|
'0x0dcd5d886577d5081b0c52e242ef29e70be3e7bc': '0x0', |
||||||
|
'0xec1adf982415d2ef5ec55899b9bfb8bc0f29251b': '0x0', |
||||||
|
}, |
||||||
|
} |
||||||
|
|
||||||
|
const keyrings = [ |
||||||
|
{ |
||||||
|
type: 'HD Key Tree', |
||||||
|
accounts: [ |
||||||
|
'0x0dcd5d886577d5081b0c52e242ef29e70be3e7bc', |
||||||
|
'0xec1adf982415d2ef5ec55899b9bfb8bc0f29251b', |
||||||
|
], |
||||||
|
}, |
||||||
|
] |
||||||
|
|
||||||
|
const mockState = { |
||||||
|
metamask: { |
||||||
|
network, |
||||||
|
selectedAddress, |
||||||
|
identities, |
||||||
|
accounts, |
||||||
|
cachedBalances, |
||||||
|
keyrings, |
||||||
|
permissionsHistory: { |
||||||
|
'https://test.dapp': { |
||||||
|
eth_accounts: { |
||||||
|
accounts: { |
||||||
|
'0x0dcd5d886577d5081b0c52e242ef29e70be3e7bc': 1596681857076, |
||||||
|
}, |
||||||
|
}, |
||||||
|
}, |
||||||
|
}, |
||||||
|
domains: { |
||||||
|
'https://test.dapp': { |
||||||
|
permissions: [ |
||||||
|
{ |
||||||
|
caveats: [ |
||||||
|
{ |
||||||
|
name: 'primaryAccountOnly', |
||||||
|
type: 'limitResponseLength', |
||||||
|
value: 1, |
||||||
|
}, |
||||||
|
{ |
||||||
|
name: 'exposedAccounts', |
||||||
|
type: 'filterResponse', |
||||||
|
value: [ |
||||||
|
'0x0dcd5d886577d5081b0c52e242ef29e70be3e7bc', |
||||||
|
], |
||||||
|
}, |
||||||
|
], |
||||||
|
invoker: 'https://test.dapp', |
||||||
|
parentCapability: 'eth_accounts', |
||||||
|
}, |
||||||
|
], |
||||||
|
}, |
||||||
|
}, |
||||||
|
}, |
||||||
|
activeTab: { |
||||||
|
origin: 'https://test.dapp', |
||||||
|
}, |
||||||
|
unconnectedAccount: { |
||||||
|
state: 'OPEN', |
||||||
|
}, |
||||||
|
} |
||||||
|
|
||||||
|
afterEach(function () { |
||||||
|
sinon.restore() |
||||||
|
}) |
||||||
|
|
||||||
|
it('checks that checkbox is checked', function () { |
||||||
|
|
||||||
|
const store = configureMockStore()(mockState) |
||||||
|
|
||||||
|
const { getByRole } = renderWithProvider(<UnconnectedAccountAlert />, store) |
||||||
|
|
||||||
|
const dontShowCheckbox = getByRole('checkbox') |
||||||
|
|
||||||
|
assert.equal(dontShowCheckbox.checked, false) |
||||||
|
fireEvent.click(dontShowCheckbox) |
||||||
|
assert.equal(dontShowCheckbox.checked, true) |
||||||
|
}) |
||||||
|
|
||||||
|
it('clicks dismiss button and calls dismissAlert action', function () { |
||||||
|
const store = configureMockStore()(mockState) |
||||||
|
|
||||||
|
const { getByText } = renderWithProvider(<UnconnectedAccountAlert />, store) |
||||||
|
|
||||||
|
const dismissButton = getByText(/dismiss/u) |
||||||
|
fireEvent.click(dismissButton) |
||||||
|
|
||||||
|
assert.equal(store.getActions()[0].type, 'unconnectedAccount/dismissAlert') |
||||||
|
}) |
||||||
|
|
||||||
|
it('clicks Dont Show checkbox and dismiss to call disable alert request action', async function () { |
||||||
|
sinon.stub(actions, 'setAlertEnabledness').returns(() => Promise.resolve()) |
||||||
|
|
||||||
|
const store = configureMockStore([thunk])(mockState) |
||||||
|
|
||||||
|
const { getByText, getByRole } = renderWithProvider(<UnconnectedAccountAlert />, store) |
||||||
|
|
||||||
|
const dismissButton = getByText(/dismiss/u) |
||||||
|
const dontShowCheckbox = getByRole('checkbox') |
||||||
|
|
||||||
|
fireEvent.click(dontShowCheckbox) |
||||||
|
fireEvent.click(dismissButton) |
||||||
|
|
||||||
|
setImmediate(() => { |
||||||
|
assert.equal(store.getActions()[0].type, 'unconnectedAccount/disableAlertRequested') |
||||||
|
assert.equal(store.getActions()[1].type, 'unconnectedAccount/disableAlertSucceeded') |
||||||
|
}) |
||||||
|
|
||||||
|
}) |
||||||
|
|
||||||
|
}) |
Loading…
Reference in new issue