describe 'Address UK', ->
  React = require 'react'
  AddressUK = React.createFactory require('../../src/components/address_uk')
  TestUtils = require 'react-dom/test-utils'


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

    address = TestUtils.renderIntoDocument AddressUK {
      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 StWalthamMA01221')
  
  it 'Should wrap all adddress segments in a div', ->

    address = TestUtils.renderIntoDocument AddressUK {
      address1: "123 Fake St"
      address2: "line 2"
      address3: "line 3"
      city: "Waltham"
      state: "MA"
      zip: "01221"
      country: 'USA'
      mapLink: no
    }

    divs = TestUtils.scryRenderedDOMComponentsWithTag(address, 'div')

    expect(divs[0].getElementsByTagName('div').length).to.equal(7)

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

    address = TestUtils.renderIntoDocument AddressUK {
      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 StApt 2BWalthamMA01221')

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

    address = TestUtils.renderIntoDocument AddressUK {
      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 StApt 2BHouse 45WalthamMA01221')

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

    address = TestUtils.renderIntoDocument AddressUK {
      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 StHouse 45WalthamMA01221')

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

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

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

    expect(addressText).to.equal('123 Fake StHouse 45WalthamMA01221USA')


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

    address = TestUtils.renderIntoDocument AddressUK {
      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)



