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 () {
    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.instance().getTokenBalance(formattedBalance, false)
    const fiatDisplayNumber = balanceComponent.instance().getFiatDisplayNumber(formattedBalance, 2)

    assert.equal('1.23 ETH', tokenBalance)
    assert.equal(2.46, fiatDisplayNumber)
  })

  it('shows only the token balance when conversion rate is not available', function () {
    const formattedBalance = '1.23 ETH'

    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)
  })

})

