Browse Source

feat(settings): close on blur click

fix(multi-lang): switch ticker to settings store

fix(tests): pass all tests

fix(fiat): switch from usd to fiat

fix(settings): fix console errors

fix(settings): make styles consistent

fix(tests): remove unneeded mocks

fix(payform): call satoshisToFiat now

fix(network): rebase + fix network fiat amt
renovate/lint-staged-8.x
Jack Mallers 6 years ago
parent
commit
59a64714d1
  1. 7
      app/components/Contacts/Network.js
  2. 4
      app/components/Contacts/SubmitChannelForm.js
  3. 2
      app/components/Contacts/SubmitChannelForm.scss
  4. 6
      app/components/Form/Pay.js
  5. 2
      app/components/Form/Pay.scss
  6. 6
      app/components/Form/Request.js
  7. 2
      app/components/Form/Request.scss
  8. 2
      app/components/Settings/Fiat.js
  9. 25
      app/components/Settings/Fiat.scss
  10. 57
      app/components/Settings/Settings.js
  11. 4
      app/components/Wallet/Wallet.js
  12. 28
      app/lib/utils/btc.js
  13. 4
      app/reducers/contactsform.js
  14. 6
      app/reducers/payform.js
  15. 4
      app/reducers/requestform.js
  16. 4
      app/reducers/ticker.js
  17. 2
      app/routes/activity/components/components/Invoice/Invoice.js
  18. 2
      app/routes/activity/components/components/Payment/Payment.js
  19. 2
      app/routes/activity/components/components/Transaction/Transaction.js
  20. 18
      app/routes/app/containers/AppContainer.js
  21. 2
      test/unit/components/Form.spec.js
  22. 2
      test/unit/components/Form/Request.spec.js
  23. 29
      test/unit/reducers/__snapshots__/settings.spec.js.snap
  24. 125
      test/unit/reducers/__snapshots__/ticker.spec.js.snap
  25. 2
      test/unit/reducers/invoice.spec.js
  26. 2
      test/unit/reducers/payment.spec.js
  27. 41
      test/unit/reducers/settings.spec.js
  28. 6
      test/unit/reducers/ticker.spec.js

7
app/components/Contacts/Network.js

@ -155,7 +155,7 @@ class Network extends Component {
return 'online'
}
const fiatAmount = btc.satoshisToUsd(
const fiatAmount = btc.satoshisToFiat(
balance.channelBalance,
currentTicker[ticker.fiatTicker].last
)
@ -170,8 +170,11 @@ class Network extends Component {
value={balance.channelBalance}
currency={ticker.currency}
currentTicker={currentTicker}
fiatTicker={ticker.fiatTicker}
/>
{`$${usdAmount ? usdAmount.toLocaleString() : ''}`}
{`${currentTicker[ticker.fiatTicker].symbol}${
fiatAmount ? fiatAmount.toLocaleString() : ''
}`}
</span>
</section>
<section

4
app/components/Contacts/SubmitChannelForm.js

@ -26,7 +26,7 @@ class SubmitChannelForm extends React.Component {
currencyName,
currentCurrencyFilters,
onCurrencyFilterClick,
contactFormUsdAmount
contactFormFiatAmount
}
} = this.props
@ -103,7 +103,7 @@ class SubmitChannelForm extends React.Component {
</div>
</div>
<div className={styles.usdAmount}>{`${contactFormUsdAmount || 0} ${fiatTicker}`}</div>
<div className={styles.fiatAmount}>{`${contactFormFiatAmount || 0} ${fiatTicker}`}</div>
</section>
<section className={styles.submit}>

2
app/components/Contacts/SubmitChannelForm.scss

@ -112,7 +112,7 @@
}
}
.usdAmount {
.fiatAmount {
margin-top: 20px;
opacity: 0.5;
}

6
app/components/Form/Pay.js

@ -40,7 +40,7 @@ class Pay extends Component {
isOnchain,
isLn,
currentAmount,
usdAmount,
fiatAmount,
payFormIsValid: { errors, isValid },
currentCurrencyFilters,
currencyName,
@ -161,7 +161,7 @@ class Pay extends Component {
</div>
</div>
<div className={styles.usdAmount}>{`${usdAmount || 0} ${ticker.fiatTicker}`}</div>
<div className={styles.fiatAmount}>{`${fiatAmount || 0} ${ticker.fiatTicker}`}</div>
<section
className={`${styles.errorMessage} ${styles.amount} ${
@ -198,7 +198,7 @@ Pay.propTypes = {
isOnchain: PropTypes.bool.isRequired,
isLn: PropTypes.bool.isRequired,
currentAmount: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),
usdAmount: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),
fiatAmount: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),
payFormIsValid: PropTypes.shape({
errors: PropTypes.object,
isValid: PropTypes.bool

2
app/components/Form/Pay.scss

@ -143,7 +143,7 @@
}
}
.usdAmount {
.fiatAmount {
margin-top: 10px;
opacity: 0.5;
font-size: 14px;

6
app/components/Form/Request.js

@ -18,7 +18,7 @@ const Request = ({
setCurrency,
setRequestCurrencyFilters,
currencyName,
requestUsdAmount,
requestFiatAmount,
currentCurrencyFilters,
@ -72,7 +72,7 @@ const Request = ({
</div>
</div>
<div className={styles.usdAmount}>{`${requestUsdAmount || 0} ${
<div className={styles.fiatAmount}>{`${requestFiatAmount || 0} ${
ticker.fiatTicker
}`}</div>
</section>
@ -111,7 +111,7 @@ Request.propTypes = {
memo: PropTypes.string
}).isRequired,
requestUsdAmount: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),
requestFiatAmount: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),
currencyName: PropTypes.string.isRequired,
currentCurrencyFilters: PropTypes.array.isRequired,

2
app/components/Form/Request.scss

@ -122,7 +122,7 @@
}
}
.usdAmount {
.fiatAmount {
margin-top: 10px;
opacity: 0.5;
font-size: 14px;

2
app/components/Settings/Fiat.js

@ -15,7 +15,7 @@ const Fiat = ({ fiatTicker, fiatTickers, disableSubMenu, setFiatTicker }) => (
{fiatTickers.map(ft => (
<li
key={ft}
className={fiatTicker === ft && styles.active}
className={fiatTicker === ft ? styles.active : ''}
onClick={() => setFiatTicker(ft)}
>
<span>{ft}</span>

25
app/components/Settings/Fiat.scss

@ -1,7 +1,7 @@
@import '../../styles/variables.scss';
.submenuHeader {
padding: 15px;
padding: 20px;
background: lighten(#1d1f27, 20%);
font-size: 10px;
display: flex;
@ -19,13 +19,24 @@
height: 300px;
overflow-y: scroll;
.active {
background: #0f0f0f;
li {
background: #191919;
cursor: pointer;
border-bottom: 1px solid #0f0f0f;
transition: 0.25s hover;
svg {
height: 10px;
width: 10px;
color: $green;
&.active {
background: #0f0f0f;
svg {
height: 10px;
width: 10px;
color: $green;
}
}
span:nth-child(1) {
line-height: 12px;
}
}
}

57
app/components/Settings/Settings.js

@ -4,8 +4,51 @@ import Menu from './Menu'
import Fiat from './Fiat'
import styles from './Settings.scss'
const Settings = ({ settings, setActiveSubMenu, fiatProps }) => {
const renderSettings = () => {
class Settings extends React.Component {
constructor(props) {
super(props)
this.setWrapperRef = this.setWrapperRef.bind(this)
this.handleClickOutside = this.handleClickOutside.bind(this)
this.renderSettings = this.renderSettings.bind(this)
}
componentDidMount() {
document.addEventListener('mousedown', this.handleClickOutside)
}
componentWillUnmount() {
document.removeEventListener('mousedown', this.handleClickOutside)
}
// Set the wrapper ref
setWrapperRef(node) {
this.wrapperRef = node
}
// Alert if clicked on outside of element
handleClickOutside(event) {
const { toggleSettings, settings } = this.props
if (this.wrapperRef && !this.wrapperRef.contains(event.target) && settings.settingsOpen) {
// Do not toggle the settings if they user clicked on their alias
// as that will cause us to double toggle and re-open it
if (
typeof event.target.className === 'string' &&
event.target.className.includes('aliasText')
) {
return
}
// The user clicked outside of the settings box and not on the
// alias so we should toggle the settings
toggleSettings()
}
}
renderSettings() {
const { settings, fiatProps, setActiveSubMenu } = this.props
switch (settings.activeSubMenu) {
case 'fiat':
return <Fiat {...fiatProps} />
@ -13,12 +56,20 @@ const Settings = ({ settings, setActiveSubMenu, fiatProps }) => {
return <Menu setActiveSubMenu={setActiveSubMenu} />
}
}
return <div className={styles.container}>{renderSettings()}</div>
render() {
return (
<div className={styles.container} ref={this.setWrapperRef}>
{this.renderSettings()}
</div>
)
}
}
Settings.propTypes = {
settings: PropTypes.object.isRequired,
setActiveSubMenu: PropTypes.func.isRequired,
toggleSettings: PropTypes.func.isRequired,
fiatProps: PropTypes.object.isRequired
}

4
app/components/Wallet/Wallet.js

@ -32,7 +32,7 @@ const Wallet = ({
network,
settingsProps
}) => {
const usdAmount = btc.satoshisToUsd(
const fiatAmount = btc.satoshisToFiat(
parseInt(balance.walletBalance, 10) + parseInt(balance.channelBalance, 10),
currentTicker[ticker.fiatTicker].last
)
@ -95,7 +95,7 @@ const Wallet = ({
</h1>
<span className={styles.usdValue}>
{currentTicker[ticker.fiatTicker].symbol}
{usdAmount ? usdAmount.toLocaleString() : ''}
{fiatAmount ? fiatAmount.toLocaleString() : ''}
</span>
</div>
</div>

28
app/lib/utils/btc.js

@ -23,7 +23,7 @@ export function btcToBits(btc) {
return satoshisToBits(sb.toSatoshi(btc))
}
export function btcToUsd(btc, price) {
export function btcToFiat(btc, price) {
const amount = parseFloat(btc * price).toFixed(2)
return (btc > 0 && amount <= 0) ? '< 0.01' : numberWithCommas(amount)
}
@ -45,11 +45,11 @@ export function bitsToSatoshis(bits, price) {
return bits * 100
}
export function bitsToUsd(bits, price) {
export function bitsToFiat(bits, price) {
if (bits === undefined || bits === null || bits === '') return null
const sats = bits * 100
return satoshisToUsd(sats, price)
return satoshisToFiat(sats, price)
}
////////////////////////////
@ -70,10 +70,10 @@ export function satoshisToBits(satoshis) {
return bitsAmount > 0 ? bitsAmount : bitsAmount * -1
}
export function satoshisToUsd(satoshis, price) {
export function satoshisToFiat(satoshis, price) {
if (satoshis === undefined || satoshis === null || satoshis === '') return null
return btcToUsd(satoshisToBtc(satoshis), price)
return btcToFiat(satoshisToBtc(satoshis), price)
}
////////////////////////////////
@ -108,8 +108,8 @@ export function convert(from, to, amount, price) {
return btcToBits(amount)
case 'sats':
return btcToSatoshis(amount)
case 'usd':
return btcToUsd(amount, price)
case 'fiat':
return btcToFiat(amount, price)
case 'btc':
return amount
}
@ -120,8 +120,8 @@ export function convert(from, to, amount, price) {
return bitsToBtc(amount)
case 'sats':
return bitsToSatoshis(amount)
case 'usd':
return bitsToUsd(amount, price)
case 'fiat':
return bitsToFiat(amount, price)
case 'bits':
return amount
}
@ -132,8 +132,8 @@ export function convert(from, to, amount, price) {
return satoshisToBtc(amount)
case 'bits':
return satoshisToBits(amount)
case 'usd':
return satoshisToUsd(amount, price)
case 'fiat':
return satoshisToFiat(amount, price)
case 'sats':
return amount
}
@ -146,15 +146,15 @@ export function convert(from, to, amount, price) {
export default {
btcToSatoshis,
btcToBits,
btcToUsd,
btcToFiat,
bitsToBtc,
bitsToSatoshis,
bitsToUsd,
bitsToFiat,
satoshisToBtc,
satoshisToBits,
satoshisToUsd,
satoshisToFiat,
millisatoshisToSatoshis,

4
app/reducers/contactsform.js

@ -271,7 +271,7 @@ contactFormSelectors.manualFormIsValid = createSelector(manualSearchQuerySelecto
}
})
contactFormSelectors.contactFormUsdAmount = createSelector(
contactFormSelectors.contactFormFiatAmount = createSelector(
contactCapacitySelector,
currencySelector,
tickerSelectors.currentTicker,
@ -281,7 +281,7 @@ contactFormSelectors.contactFormUsdAmount = createSelector(
return false
}
return btc.convert(currency, 'usd', amount, currentTicker[fiatTicker].last)
return btc.convert(currency, 'fiat', amount, currentTicker[fiatTicker].last)
}
)

6
app/reducers/payform.js

@ -188,7 +188,7 @@ payFormSelectors.currentAmount = createSelector(
}
)
payFormSelectors.usdAmount = createSelector(
payFormSelectors.fiatAmount = createSelector(
payFormSelectors.isLn,
payAmountSelector,
payInvoiceSelector,
@ -201,10 +201,10 @@ payFormSelectors.usdAmount = createSelector(
}
if (isLn) {
return btc.satoshisToUsd(invoice.num_satoshis || 0, currentTicker[fiatTicker].last)
return btc.satoshisToFiat(invoice.num_satoshis || 0, currentTicker[fiatTicker].last)
}
return btc.convert(currency, 'usd', amount, currentTicker[fiatTicker].last)
return btc.convert(currency, 'fiat', amount, currentTicker[fiatTicker].last)
}
)

4
app/reducers/requestform.js

@ -68,7 +68,7 @@ const requestAmountSelector = state => state.requestform.amount
const currencySelector = state => state.ticker.currency
const fiatTickerSelector = state => state.ticker.fiatTicker
requestFormSelectors.usdAmount = createSelector(
requestFormSelectors.fiatAmount = createSelector(
requestAmountSelector,
currencySelector,
tickerSelectors.currentTicker,
@ -78,7 +78,7 @@ requestFormSelectors.usdAmount = createSelector(
return false
}
return btc.convert(currency, 'usd', amount, currentTicker[fiatTicker].last)
return btc.convert(currency, 'fiat', amount, currentTicker[fiatTicker].last)
}
)

4
app/reducers/ticker.js

@ -3,8 +3,8 @@ import Store from 'electron-store'
import { requestTicker } from 'lib/utils/api'
import { infoSelectors } from './info'
// Ticker store
const store = new Store({ name: 'ticker' })
// Settings store
const store = new Store({ name: 'settings' })
// ------------------------------------
// Constants

2
app/routes/activity/components/components/Invoice/Invoice.js

@ -51,7 +51,7 @@ const Invoice = ({ invoice, ticker, currentTicker, showActivityModal, currencyNa
<span>
<span>
{currentTicker[ticker.fiatTicker].symbol}
{btc.convert('sats', 'usd', invoice.value, currentTicker[ticker.fiatTicker].last)}
{btc.convert('sats', 'fiat', invoice.value, currentTicker[ticker.fiatTicker].last)}
</span>
</span>
</div>

2
app/routes/activity/components/components/Payment/Payment.js

@ -48,7 +48,7 @@ const Payment = ({ payment, ticker, currentTicker, showActivityModal, nodes, cur
</span>
<span className="hint--bottom" data-hint="Payment fee">
{currentTicker[ticker.fiatTicker].symbol}
{btc.convert('sats', 'usd', payment.value, currentTicker[ticker.fiatTicker].last)}
{btc.convert('sats', 'fiat', payment.value, currentTicker[ticker.fiatTicker].last)}
</span>
</div>
</div>

2
app/routes/activity/components/components/Transaction/Transaction.js

@ -47,7 +47,7 @@ const Transaction = ({ transaction, ticker, currentTicker, showActivityModal, cu
</span>
<span className="hint--bottom" data-hint="Transaction fee">
{currentTicker[ticker.fiatTicker].symbol}
{btc.convert('sats', 'usd', transaction.amount, currentTicker[ticker.fiatTicker].last)}
{btc.convert('sats', 'fiat', transaction.amount, currentTicker[ticker.fiatTicker].last)}
</span>
</div>
</div>

18
app/routes/app/containers/AppContainer.js

@ -165,18 +165,18 @@ const mapStateToProps = state => ({
isOnchain: payFormSelectors.isOnchain(state),
isLn: payFormSelectors.isLn(state),
currentAmount: payFormSelectors.currentAmount(state),
usdAmount: payFormSelectors.usdAmount(state),
fiatAmount: payFormSelectors.fiatAmount(state),
inputCaption: payFormSelectors.inputCaption(state),
showPayLoadingScreen: payFormSelectors.showPayLoadingScreen(state),
payFormIsValid: payFormSelectors.payFormIsValid(state),
payInputMin: payFormSelectors.payInputMin(state),
requestUsdAmount: requestFormSelectors.usdAmount(state),
requestFiatAmount: requestFormSelectors.fiatAmount(state),
syncPercentage: lndSelectors.syncPercentage(state),
filteredNetworkNodes: contactFormSelectors.filteredNetworkNodes(state),
showManualForm: contactFormSelectors.showManualForm(state),
manualFormIsValid: contactFormSelectors.manualFormIsValid(state),
contactFormUsdAmount: contactFormSelectors.contactFormUsdAmount(state),
contactFormFiatAmount: contactFormSelectors.contactFormFiatAmount(state),
currentChannels: currentChannels(state),
activeChannelPubkeys: channelsSelectors.activeChannelPubkeys(state),
@ -197,7 +197,7 @@ const mergeProps = (stateProps, dispatchProps, ownProps) => {
isOnchain: stateProps.isOnchain,
isLn: stateProps.isLn,
currentAmount: stateProps.currentAmount,
usdAmount: stateProps.usdAmount,
fiatAmount: stateProps.fiatAmount,
inputCaption: stateProps.inputCaption,
showPayLoadingScreen: stateProps.showPayLoadingScreen,
payFormIsValid: stateProps.payFormIsValid,
@ -252,8 +252,7 @@ const mergeProps = (stateProps, dispatchProps, ownProps) => {
dispatchProps.sendCoins({
value: stateProps.payform.amount,
addr: stateProps.payform.payInput,
currency: stateProps.ticker.currency,
rate: stateProps.currentTicker.price_usd
currency: stateProps.ticker.currency
})
}
@ -270,7 +269,7 @@ const mergeProps = (stateProps, dispatchProps, ownProps) => {
currentCurrencyFilters: stateProps.currentCurrencyFilters,
showCurrencyFilters: stateProps.showCurrencyFilters,
currencyName: stateProps.currencyName,
requestUsdAmount: stateProps.requestUsdAmount,
requestFiatAmount: stateProps.requestFiatAmount,
setRequestAmount: dispatchProps.setRequestAmount,
setRequestMemo: dispatchProps.setRequestMemo,
@ -281,8 +280,7 @@ const mergeProps = (stateProps, dispatchProps, ownProps) => {
dispatchProps.createInvoice(
stateProps.requestform.amount,
stateProps.requestform.memo,
stateProps.ticker.currency,
stateProps.currentTicker.price_usd
stateProps.ticker.currency
)
}
@ -416,7 +414,7 @@ const mergeProps = (stateProps, dispatchProps, ownProps) => {
currentCurrencyFilters: stateProps.currentCurrencyFilters,
currencyName: stateProps.currencyName,
showCurrencyFilters: stateProps.contactsform.showCurrencyFilters,
contactFormUsdAmount: stateProps.contactFormUsdAmount,
contactFormFiatAmount: stateProps.contactFormFiatAmount,
setContactsCurrencyFilters: dispatchProps.setContactsCurrencyFilters,
setCurrencyFilters: dispatchProps.setCurrencyFilters,

2
test/unit/components/Form.spec.js

@ -52,7 +52,7 @@ const requestFormProps = {
currentCurrencyFilters: [],
showCurrencyFilters: true,
currencyName: '',
requestUsdAmount: '',
requestFiatAmount: '',
setRequestAmount: () => {},
setRequestMemo: () => {},

2
test/unit/components/Form/Request.spec.js

@ -15,7 +15,7 @@ const defaultProps = {
currentCurrencyFilters: [],
showCurrencyFilters: true,
currencyName: '',
requestUsdAmount: '',
requestFiatAmount: '',
setRequestAmount: () => {},
setRequestMemo: () => {},

29
test/unit/reducers/__snapshots__/settings.spec.js.snap

@ -0,0 +1,29 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`reducers settingsReducer should correctly disableSubmenu 1`] = `
Object {
"activeSubMenu": null,
"settingsOpen": false,
}
`;
exports[`reducers settingsReducer should correctly setActiveSubmenu 1`] = `
Object {
"activeSubMenu": true,
"settingsOpen": false,
}
`;
exports[`reducers settingsReducer should correctly setSettingsOpen 1`] = `
Object {
"activeSubMenu": null,
"settingsOpen": true,
}
`;
exports[`reducers settingsReducer should handle initial state 1`] = `
Object {
"activeSubMenu": null,
"settingsOpen": false,
}
`;

125
test/unit/reducers/__snapshots__/ticker.spec.js.snap

@ -19,6 +19,31 @@ Object {
"name": "satoshis",
},
],
"fiatTicker": "USD",
"fiatTickers": Array [
"USD",
"EUR",
"JPY",
"GBP",
"CAD",
"KRW",
"AUD",
"BRL",
"CHF",
"CLP",
"CNY",
"DKK",
"HKD",
"INR",
"ISK",
"NZD",
"PLN",
"RUB",
"SEK",
"SGD",
"THB",
"TWB",
],
"fromCurrency": "sats",
"ltcTicker": null,
"tickerLoading": true,
@ -44,6 +69,31 @@ Object {
"name": "satoshis",
},
],
"fiatTicker": "USD",
"fiatTickers": Array [
"USD",
"EUR",
"JPY",
"GBP",
"CAD",
"KRW",
"AUD",
"BRL",
"CHF",
"CLP",
"CNY",
"DKK",
"HKD",
"INR",
"ISK",
"NZD",
"PLN",
"RUB",
"SEK",
"SGD",
"THB",
"TWB",
],
"fromCurrency": "sats",
"ltcTicker": undefined,
"tickerLoading": false,
@ -69,6 +119,31 @@ Object {
"name": "satoshis",
},
],
"fiatTicker": "USD",
"fiatTickers": Array [
"USD",
"EUR",
"JPY",
"GBP",
"CAD",
"KRW",
"AUD",
"BRL",
"CHF",
"CLP",
"CNY",
"DKK",
"HKD",
"INR",
"ISK",
"NZD",
"PLN",
"RUB",
"SEK",
"SGD",
"THB",
"TWB",
],
"fromCurrency": "sats",
"ltcTicker": null,
"tickerLoading": false,
@ -94,6 +169,31 @@ Object {
"name": "satoshis",
},
],
"fiatTicker": "USD",
"fiatTickers": Array [
"USD",
"EUR",
"JPY",
"GBP",
"CAD",
"KRW",
"AUD",
"BRL",
"CHF",
"CLP",
"CNY",
"DKK",
"HKD",
"INR",
"ISK",
"NZD",
"PLN",
"RUB",
"SEK",
"SGD",
"THB",
"TWB",
],
"fromCurrency": "",
"ltcTicker": null,
"tickerLoading": false,
@ -119,6 +219,31 @@ Object {
"name": "satoshis",
},
],
"fiatTicker": "USD",
"fiatTickers": Array [
"USD",
"EUR",
"JPY",
"GBP",
"CAD",
"KRW",
"AUD",
"BRL",
"CHF",
"CLP",
"CNY",
"DKK",
"HKD",
"INR",
"ISK",
"NZD",
"PLN",
"RUB",
"SEK",
"SGD",
"THB",
"TWB",
],
"fromCurrency": "sats",
"ltcTicker": null,
"tickerLoading": false,

2
test/unit/reducers/invoice.spec.js

@ -1,3 +1,5 @@
// @flow
import invoiceReducer, {
SEARCH_INVOICES,
SET_INVOICE,

2
test/unit/reducers/payment.spec.js

@ -1,3 +1,5 @@
// @flow
import paymentReducer, {
SET_PAYMENT,
GET_PAYMENTS,

41
test/unit/reducers/settings.spec.js

@ -0,0 +1,41 @@
import settingsReducer, {
SET_SETTINGS_OPEN,
SET_ACTIVE_SUBMENU,
DISABLE_SUBMENU
} from 'reducers/settings'
describe('reducers', () => {
describe('settingsReducer', () => {
it('should handle initial state', () => {
expect(settingsReducer(undefined, {})).toMatchSnapshot()
})
it('should have SET_SETTINGS_OPEN', () => {
expect(SET_SETTINGS_OPEN).toEqual('SET_SETTINGS_OPEN')
})
it('should have SET_ACTIVE_SUBMENU', () => {
expect(SET_ACTIVE_SUBMENU).toEqual('SET_ACTIVE_SUBMENU')
})
it('should have DISABLE_SUBMENU', () => {
expect(DISABLE_SUBMENU).toEqual('DISABLE_SUBMENU')
})
it('should correctly setSettingsOpen', () => {
expect(
settingsReducer(undefined, { type: SET_SETTINGS_OPEN, settingsOpen: true })
).toMatchSnapshot()
})
it('should correctly setActiveSubmenu', () => {
expect(
settingsReducer(undefined, { type: SET_ACTIVE_SUBMENU, activeSubMenu: true })
).toMatchSnapshot()
})
it('should correctly disableSubmenu', () => {
expect(settingsReducer(undefined, { type: DISABLE_SUBMENU })).toMatchSnapshot()
})
})
})

6
test/unit/reducers/ticker.spec.js

@ -1,3 +1,6 @@
// @flow
import Store from 'electron-store'
import tickerReducer, {
SET_CURRENCY,
SET_CRYPTO,
@ -5,6 +8,9 @@ import tickerReducer, {
RECIEVE_TICKERS
} from 'reducers/ticker'
Store.prototype.set = jest.fn()
Store.prototype.get = jest.fn()
describe('reducers', () => {
describe('tickerReducer', () => {
it('should handle initial state', () => {

Loading…
Cancel
Save