describe 'ConfirmUserAction', ->
  React = require 'react'
  ConfirmUserAction = React.createFactory require('../../src/components/confirm_user_action')
  _ = require 'lodash'
  TestUtils = require 'react-dom/test-utils'
  ReactDOM = require 'react-dom'

  #--------------------------------------------------------------------- Default Props
  it 'Should have default props', ->
    confirmUserAction = TestUtils.renderIntoDocument ConfirmUserAction {
      onOkay: ->
      close: ->
    }
    
    defaultProps = confirmUserAction.props
    expect(defaultProps.confirmText).to.equal('Are you sure?')
    expect(defaultProps.confirmBtnLabel).to.equal('OK')
    expect(defaultProps.cancelBtnLabel).to.equal('Cancel')

  #--------------------------------------------------------------------- Click handling
  it 'Should call the onOkay when okay button is clicked', ->
    onOkay = sinon.spy()

    confirmBox = TestUtils.renderIntoDocument ConfirmUserAction {
      close: ->
      onOkay: onOkay
    }

    okayBtn = TestUtils.findRenderedDOMComponentWithClass confirmBox, 'okay-btn'


    TestUtils.Simulate.click okayBtn


    expect(onOkay.called).to.equal(true)


  it 'Should not call the onOkay when cancel button is clicked', ->
    onOkay = sinon.spy()

    confirmBox = TestUtils.renderIntoDocument ConfirmUserAction {
      close: ->
      onOkay: onOkay
    }

    cancelBtn = TestUtils.findRenderedDOMComponentWithClass confirmBox, 'cancel-btn'

    TestUtils.Simulate.click cancelBtn


    expect(onOkay.called).to.equal(false)


  #--------------------------------------------------------------------- Text and Button Labels
  it 'Should set the text and button labels to the props passed in', ->

    message = TestUtils.renderIntoDocument ConfirmUserAction {
      close: ->
      onOkay: ->
      confirmText: "This is a test message"
      confirmBtnLabel: "ConfirmTest"
      cancelBtnLabel: "CancelTest"
    }

    messageText = TestUtils.scryRenderedDOMComponentsWithTag(message, 'div')[0].innerText

    expect(messageText).to.equal('This is a test messageConfirmTestCancelTest')

     

  
  