routism = require '../src/routism'
connect = require 'connect'
request = require 'request'
url = require 'url'

say (what) =
  respond (req, res) =
    res.end (what)

echo param (n) =
  respond (req, res, next, params) =
    res.end (params.(n).1)

connectify (compliedRoutes) =
  handle (req, res, next) =
    path = url.parse(req.url).pathname
    match = compliedRoutes.recognise(path)
    if (match)
      match.route(req, res, next, match.params)
    else
      next()

describe 'routism, wired up to connect'

  before @(done)
    compiledRoutes = routism.compile [
      { pattern = "/hello/world", route = say "hello" }
      { pattern = "/params/:foo", route = echo param 0 }
    ]
    connectRouter = connectify(compiledRoutes)
    app = connect()
    app.use (connectRouter)
    app.listen 80012
      done()

  it 'responds to requests' @(done)
    request 'http://127.0.0.1:80012/hello/world' @(err, res, body)
      body.should.equal 'hello'
      done()

  it 'sets request params' @(done)
    request 'http://127.0.0.1:80012/params/blah' @(err, res, body)
      body.should.equal 'blah'
      done()
