describe 'Address', ->
  React = require 'react'
  Address = React.createFactory require('../../src/components/address')
  _ = require 'lodash'
  TestUtils = require 'react-addons-test-utils'


  #--------------------------------------------------------------------- Address Components
  it 'Should properly format a basic adddress', ->

    address = TestUtils.renderIntoDocument Address {
      address1: "123 Fake St"
      address2: null
      address3: null
      city: "Waltham"
      state: "MA"
      zip: "01221"
      mapLink: no
    }

    addressText = TestUtils.scryRenderedDOMComponentsWithTag(address, 'div')[0].innerText

    expect(addressText).to.equal('123 Fake St Waltham, MA 01221')

  it 'Should properly format an adddress with an address2 defined', ->

    address = TestUtils.renderIntoDocument Address {
      address1: "123 Fake St"
      address2: 'Apt 2B'
      address3: null
      city: "Waltham"
      state: "MA"
      zip: "01221"
      mapLink: no
    }

    addressText = TestUtils.scryRenderedDOMComponentsWithTag(address, 'div')[0].innerText

    expect(addressText).to.equal('123 Fake St Apt 2B Waltham, MA 01221')

  it 'Should properly format an adddress with an address3 defined', ->

    address = TestUtils.renderIntoDocument Address {
      address1: "123 Fake St"
      address2: 'Apt 2B'
      address3: 'House 45'
      city: "Waltham"
      state: "MA"
      zip: "01221"
      mapLink: no
    }

    addressText = TestUtils.scryRenderedDOMComponentsWithTag(address, 'div')[0].innerText

    expect(addressText).to.equal('123 Fake St Apt 2B House 45 Waltham, MA 01221')

  it 'Should properly format an adddress with an address3 defined. but no address2', ->

    address = TestUtils.renderIntoDocument Address {
      address1: "123 Fake St"
      address2: null
      address3: 'House 45'
      city: "Waltham"
      state: "MA"
      zip: "01221"
      mapLink: no
    }

    addressText = TestUtils.scryRenderedDOMComponentsWithTag(address, 'div')[0].innerText

    expect(addressText).to.equal('123 Fake St House 45 Waltham, MA 01221')

  it 'Should properly format an adddress when country is defined', ->

    address = TestUtils.renderIntoDocument Address {
      address1: "123 Fake St"
      address2: null
      address3: 'House 45'
      city: "Waltham"
      state: "MA"
      zip: "01221"
      country: 'USA'
      mapLink: no
    }

    addressText = TestUtils.scryRenderedDOMComponentsWithTag(address, 'div')[0].innerText

    expect(addressText).to.equal('123 Fake St House 45 Waltham, MA 01221USA')

  it 'Should omit the comma when there is no city defined', ->

    address = TestUtils.renderIntoDocument Address {
      address1: "123 Fake St"
      address2: null
      address3: 'House 45'
      city: null
      state: "MA"
      zip: "01221"
      mapLink: no
    }

    addressText = TestUtils.scryRenderedDOMComponentsWithTag(address, 'div')[0].innerText

    expect(addressText).to.equal('123 Fake St House 45 MA 01221')

  it 'Should keep a space between city and zip when there is no state defined', ->

    address = TestUtils.renderIntoDocument Address {
      address1: "123 Fake St"
      address2: null
      address3: 'House 45'
      city: 'Waltham'
      state: null
      zip: "01221"
      mapLink: no
    }

    addressText = TestUtils.scryRenderedDOMComponentsWithTag(address, 'div')[0].innerText

    expect(addressText).to.equal('123 Fake St House 45 Waltham 01221')

  it 'Should hyphenate a 9 digit zipcode', ->

    address = TestUtils.renderIntoDocument Address {
      address1: "123 Fake St"
      address2: null
      address3: 'House 45'
      city: null
      state: "MA"
      zip: "012216789"
      mapLink: no
    }

    addressText = TestUtils.scryRenderedDOMComponentsWithTag(address, 'div')[0].innerText

    expect(addressText).to.equal('123 Fake St House 45 MA 01221-6789')


  it 'Should wrap addresses in an a tag when maplink is true', ->

    address = TestUtils.renderIntoDocument Address {
      address1: "123 Fake St"
      address2: null
      address3: null
      city: 'Waltham'
      state: "MA"
      zip: "01221"
      mapLink: yes
    }

    link = TestUtils.scryRenderedDOMComponentsWithTag(address, 'a')

    expect(link.length).to.equal(1)



