app       = require './project/server'
users     = require './fixtures/users'
requests  = require('./helpers/requests')(app)
request   = require 'request'
require   'should'

describe 'Users', ->

  before (done) ->
    #    app.listen app.settings.port
    users.clear ->
      users.create ['larry', 'moe', 'curly', 'admin', 'guest'], done

  describe 'index', ->

    it 'should require login', (done) ->
      req =
        uri: requests.users
        jar: false
      request req, (err, res, body) ->
        res.body.should.include 'name="email"'
        res.body.should.include 'name="password"'
        done()

    it 'should require admin role', (done) ->
      request requests.login('guest'), (err, res, body) ->
        request requests.users, (err, res, body) ->
          res.statusCode.should.eql 403
          body.should.include 'Forbidden'
          done()

    describe 'should display', ->

      body = null

      before (done) ->
        request requests.login('admin'), (err, res, _body) ->
          request requests.users, (err, res, _body) ->
            body = _body
            done()

      it 'users names and emails', (done) ->
        body.should.include 'Larry Loser'
        body.should.include 'larry@example.com'
        done()

      it 'the user creation date', (done) ->
        larry = users.created['larry']
        body.should.include larry.created
        done()
      
      it 'the last time the user was updated', (done) ->
        larry = users.created['larry']
        body.should.include larry.updated
        done()

      it "the users' roles", (done) ->
        body.should.include 'stooge'
        body.should.include 'ringleader'
        body.should.include 'dunce'
        done()
