###
Module dependencies.
###
getRedirectSettings = require '../libs/return-url'

describe 'Lib', ->

  describe '#getRedirectSettings()', ->

    it 'should exist as a public function', (done) ->

      getRedirectSettings.bind(null).should.be.a.Function
      done()

    it 'should throw an error if options was not passed as parameter', (done) ->

      getRedirectSettings.bind(null).should.throw '"options" parameter is required'
      done()

    it 'should replace returnUrl with previousUrl if req.url is /admin/logout', (done) ->

      returnUrl = '/admin/logout?previousUrl=/admin/checkout'
      options =
        useReturnUrl: true
        redirectUrl: '/admin/login?ReturnUrl='
        logoutUrl: '/admin/logout'

      expectedReturnUrl = '/admin/checkout'
      expectedRedirectUrl = '/admin/login?ReturnUrl=/admin/checkout'

      redirectSettings = getRedirectSettings options, returnUrl

      redirectSettings.returnUrl.should.be.equal expectedReturnUrl
      redirectSettings.redirectUrl.should.be.equal expectedRedirectUrl
      done()

    it 'should return an object containing return url and redirect url', (done) ->

      returnUrl = '/admin/checkout'
      options =
        useReturnUrl: true
        redirectUrl: '/admin/login?ReturnUrl='
        logoutUrl: '/admin/logout'

      expectedReturnUrl = '/admin/checkout'
      expectedRedirectUrl = '/admin/login?ReturnUrl=/admin/checkout'

      redirectSettings = getRedirectSettings options, returnUrl

      redirectSettings.returnUrl.should.be.equal expectedReturnUrl
      redirectSettings.redirectUrl.should.be.equal expectedRedirectUrl
      done()