Skip to content

Commit

Permalink
Allow resolver and route class to be injected via options. Added opti…
Browse files Browse the repository at this point in the history
…ons argument to .draw
  • Loading branch information
jodosha committed Aug 7, 2013
1 parent cd1128f commit 153047f
Show file tree
Hide file tree
Showing 2 changed files with 32 additions and 9 deletions.
17 changes: 8 additions & 9 deletions lib/lotus/router.rb
Expand Up @@ -13,19 +13,18 @@ class Router < HttpRouter

attr_reader :resolver

def self.draw(&blk)
new.tap {|r| r.instance_eval(&blk) }
def self.draw(options = {}, &blk)
new(options).tap {|r| r.instance_eval(&blk) }
end

def initialize(options = {}, resolver = Routing::EndpointResolver.new)
def initialize(options = {})
super

@default_scheme = options[:scheme] if options[:scheme]
@default_host = options[:host] if options[:host]
@default_port = options[:port] if options[:port]
@route_class = Routing::Route

@resolver = resolver
@default_scheme = options[:scheme] if options[:scheme]
@default_host = options[:host] if options[:host]
@default_port = options[:port] if options[:port]
@resolver = options[:resolver] || Routing::EndpointResolver.new
@route_class = options[:route] || Routing::Route
end

def redirect(path, options = {}, &endpoint)
Expand Down
24 changes: 24 additions & 0 deletions test/draw_test.rb
Expand Up @@ -3,6 +3,9 @@
describe Lotus::Router do
describe '.draw' do
before do
class MockRoute
end

endpoint = ->(env) { [200, {}, ['']] }
@router = Lotus::Router.draw do
get '/route', to: endpoint
Expand All @@ -26,6 +29,27 @@
@router.must_be_instance_of Lotus::Router
end

it 'sets options' do
router = Lotus::Router.draw(scheme: 'https') do
get '/', to: ->(env) { }, as: :root
end

router.url(:root).must_match('https')
end

it 'sets resolver' do
resolver = Object.new
router = Lotus::Router.draw(resolver: resolver) { }

router.resolver.must_equal(resolver)
end

it 'sets route class' do
router = Lotus::Router.draw(route: MockRoute) { }

router.route_class.must_equal(MockRoute)
end

it 'recognizes path' do
@app.get('/route').status.must_equal 200
end
Expand Down

0 comments on commit 153047f

Please sign in to comment.