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

4
app/components/Contacts/SubmitChannelForm.js

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

2
app/components/Contacts/SubmitChannelForm.scss

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

6
app/components/Form/Pay.js

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

2
app/components/Form/Pay.scss

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

6
app/components/Form/Request.js

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

2
app/components/Form/Request.scss

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

2
app/components/Settings/Fiat.js

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

25
app/components/Settings/Fiat.scss

@ -1,7 +1,7 @@
@import '../../styles/variables.scss'; @import '../../styles/variables.scss';
.submenuHeader { .submenuHeader {
padding: 15px; padding: 20px;
background: lighten(#1d1f27, 20%); background: lighten(#1d1f27, 20%);
font-size: 10px; font-size: 10px;
display: flex; display: flex;
@ -19,13 +19,24 @@
height: 300px; height: 300px;
overflow-y: scroll; overflow-y: scroll;
.active { li {
background: #0f0f0f; background: #191919;
cursor: pointer;
border-bottom: 1px solid #0f0f0f;
transition: 0.25s hover;
svg { &.active {
height: 10px; background: #0f0f0f;
width: 10px;
color: $green; 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 Fiat from './Fiat'
import styles from './Settings.scss' import styles from './Settings.scss'
const Settings = ({ settings, setActiveSubMenu, fiatProps }) => { class Settings extends React.Component {
const renderSettings = () => { 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) { switch (settings.activeSubMenu) {
case 'fiat': case 'fiat':
return <Fiat {...fiatProps} /> return <Fiat {...fiatProps} />
@ -13,12 +56,20 @@ const Settings = ({ settings, setActiveSubMenu, fiatProps }) => {
return <Menu setActiveSubMenu={setActiveSubMenu} /> 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 = {
settings: PropTypes.object.isRequired, settings: PropTypes.object.isRequired,
setActiveSubMenu: PropTypes.func.isRequired, setActiveSubMenu: PropTypes.func.isRequired,
toggleSettings: PropTypes.func.isRequired,
fiatProps: PropTypes.object.isRequired fiatProps: PropTypes.object.isRequired
} }

4
app/components/Wallet/Wallet.js

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

28
app/lib/utils/btc.js

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

4
app/reducers/contactsform.js

@ -271,7 +271,7 @@ contactFormSelectors.manualFormIsValid = createSelector(manualSearchQuerySelecto
} }
}) })
contactFormSelectors.contactFormUsdAmount = createSelector( contactFormSelectors.contactFormFiatAmount = createSelector(
contactCapacitySelector, contactCapacitySelector,
currencySelector, currencySelector,
tickerSelectors.currentTicker, tickerSelectors.currentTicker,
@ -281,7 +281,7 @@ contactFormSelectors.contactFormUsdAmount = createSelector(
return false 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, payFormSelectors.isLn,
payAmountSelector, payAmountSelector,
payInvoiceSelector, payInvoiceSelector,
@ -201,10 +201,10 @@ payFormSelectors.usdAmount = createSelector(
} }
if (isLn) { 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 currencySelector = state => state.ticker.currency
const fiatTickerSelector = state => state.ticker.fiatTicker const fiatTickerSelector = state => state.ticker.fiatTicker
requestFormSelectors.usdAmount = createSelector( requestFormSelectors.fiatAmount = createSelector(
requestAmountSelector, requestAmountSelector,
currencySelector, currencySelector,
tickerSelectors.currentTicker, tickerSelectors.currentTicker,
@ -78,7 +78,7 @@ requestFormSelectors.usdAmount = createSelector(
return false 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 { requestTicker } from 'lib/utils/api'
import { infoSelectors } from './info' import { infoSelectors } from './info'
// Ticker store // Settings store
const store = new Store({ name: 'ticker' }) const store = new Store({ name: 'settings' })
// ------------------------------------ // ------------------------------------
// Constants // Constants

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

@ -51,7 +51,7 @@ const Invoice = ({ invoice, ticker, currentTicker, showActivityModal, currencyNa
<span> <span>
<span> <span>
{currentTicker[ticker.fiatTicker].symbol} {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>
</span> </span>
</div> </div>

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

@ -48,7 +48,7 @@ const Payment = ({ payment, ticker, currentTicker, showActivityModal, nodes, cur
</span> </span>
<span className="hint--bottom" data-hint="Payment fee"> <span className="hint--bottom" data-hint="Payment fee">
{currentTicker[ticker.fiatTicker].symbol} {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> </span>
</div> </div>
</div> </div>

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

@ -47,7 +47,7 @@ const Transaction = ({ transaction, ticker, currentTicker, showActivityModal, cu
</span> </span>
<span className="hint--bottom" data-hint="Transaction fee"> <span className="hint--bottom" data-hint="Transaction fee">
{currentTicker[ticker.fiatTicker].symbol} {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> </span>
</div> </div>
</div> </div>

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

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

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

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

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

@ -15,7 +15,7 @@ const defaultProps = {
currentCurrencyFilters: [], currentCurrencyFilters: [],
showCurrencyFilters: true, showCurrencyFilters: true,
currencyName: '', currencyName: '',
requestUsdAmount: '', requestFiatAmount: '',
setRequestAmount: () => {}, setRequestAmount: () => {},
setRequestMemo: () => {}, 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", "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", "fromCurrency": "sats",
"ltcTicker": null, "ltcTicker": null,
"tickerLoading": true, "tickerLoading": true,
@ -44,6 +69,31 @@ Object {
"name": "satoshis", "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", "fromCurrency": "sats",
"ltcTicker": undefined, "ltcTicker": undefined,
"tickerLoading": false, "tickerLoading": false,
@ -69,6 +119,31 @@ Object {
"name": "satoshis", "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", "fromCurrency": "sats",
"ltcTicker": null, "ltcTicker": null,
"tickerLoading": false, "tickerLoading": false,
@ -94,6 +169,31 @@ Object {
"name": "satoshis", "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": "", "fromCurrency": "",
"ltcTicker": null, "ltcTicker": null,
"tickerLoading": false, "tickerLoading": false,
@ -119,6 +219,31 @@ Object {
"name": "satoshis", "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", "fromCurrency": "sats",
"ltcTicker": null, "ltcTicker": null,
"tickerLoading": false, "tickerLoading": false,

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

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

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

@ -1,3 +1,5 @@
// @flow
import paymentReducer, { import paymentReducer, {
SET_PAYMENT, SET_PAYMENT,
GET_PAYMENTS, 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, { import tickerReducer, {
SET_CURRENCY, SET_CURRENCY,
SET_CRYPTO, SET_CRYPTO,
@ -5,6 +8,9 @@ import tickerReducer, {
RECIEVE_TICKERS RECIEVE_TICKERS
} from 'reducers/ticker' } from 'reducers/ticker'
Store.prototype.set = jest.fn()
Store.prototype.get = jest.fn()
describe('reducers', () => { describe('reducers', () => {
describe('tickerReducer', () => { describe('tickerReducer', () => {
it('should handle initial state', () => { it('should handle initial state', () => {

Loading…
Cancel
Save