###
Module dependencies
###
nock = require 'nock'
Concierge = require '../../src/connect-concierge'

concierge = new Concierge
getAccountName = concierge.getAccountName()

describe 'getAccountName middleware', ->

  it 'should exist as a public function', (done) ->
    getAccountName.bind(null).should.be.a.Function
    done()

  it 'should skip to next middleware if path is /meta/whoami', (done) ->
    req =
      url: '/meta/whoami'

    getAccountName req, {}, ->
      done()

  it 'should skip to next middleware if user is not logged in', (done) ->
    req =
      url: '/admin/jonny-quest'
      cookies: {}
      headers: {}
      vtex: {}

    getAccountName req, {}, ->
      done()

  it 'should get store name from header as first priority', (done) ->
    req =
      url: '/admin/jonny-quest'
      headers:
        'x-vtex-account-name': 'store1'
      cookies:
        'VtexIdclientAutCookie': '1234'
        'concierge-account': 'store2'
      query:
        'an': 'store3'
      vtex:
        hostParts: ['', 'store4']

    getAccountName req, {}, ->
      req.vtex.store.should.be.equal 'store1'
      done()

  it 'should get store name from cookie as second priority', (done) ->
    req =
      url: '/admin/jonny-quest'
      headers: {}
      cookies:
        'VtexIdclientAutCookie': '1234'
        'concierge-account': 'store2'
      query:
        'an': 'store3'
      vtex:
        hostParts: ['', 'store4']

    getAccountName req, {}, ->
      req.vtex.store.should.be.equal 'store2'
      done()

  it 'should get store name from query string as third priority', (done) ->
    req =
      url: '/admin/jonny-quest'
      headers: {}
      cookies:
        'VtexIdclientAutCookie': '1234'
      query:
        'an': 'store3'
      vtex:
        hostParts: ['', 'store4']

    getAccountName req, {}, ->
      req.vtex.store.should.be.equal 'store3'
      done()

  it 'should get store name from host as fourth priority', (done) ->
    req =
      url: '/admin/jonny-quest'
      headers: {}
      cookies:
        'VtexIdclientAutCookie': '1234'
      vtex:
        hostParts: ['', 'store4']

    getAccountName req, {}, ->
      req.vtex.store.should.be.equal 'store4'
      done()
