spec/route_entry_spec.rb in nyara-0.0.1.pre.5 vs spec/route_entry_spec.rb in nyara-0.0.1.pre.6

- old
+ new

@@ -1,12 +1,67 @@ require_relative "spec_helper" module Nyara describe RouteEntry do + before :each do + @r = RouteEntry.new + end + + it "#compile prefix, suffix and conv" do + @r.path = '/' + @r.compile :controller_stub, '/' + assert_equal '/', @r.prefix + assert_equal '', @r.suffix + assert_equal [], @r.conv + + @r.path = '/' + @r.compile :controller_stub, '/scope' + assert_equal '/scope', @r.prefix + assert_equal '', @r.suffix + assert_equal [], @r.conv + + @r.path = '/a/%d/b' + @r.compile :controller_stub, '/scope' + assert_equal "/scope/a/", @r.prefix + assert_equal "^(-?[0-9]+)/b$", @r.suffix + assert_equal [:to_i], @r.conv + end + it "#set_accept_exts" do r = RouteEntry.new r.set_accept_exts ['html', :js] assert_equal [%w"text html html", %w"application javascript js"], r.accept_mimes assert_equal ({'html'=>true, 'js'=>true}), r.accept_exts + end + + it "#compile_re" do + re, conv = @r.compile_re '%s/%u/%d/%f/%x' + assert_equal [:to_s, :to_i, :to_i, :to_f, :hex], conv + s = '1/2/-3/4.5/F' + assert_equal [s, *s.split('/')], s.match(Regexp.new re).to_a + + re, conv = @r.compile_re '/' + assert_equal '^/$', re + assert_equal [], conv + end + + it "#compile_re with utf-8 chars" do + re, conv = @r.compile_re '/目录/%da/也可以' + assert_equal [:to_i], conv + s = "/目录/12a/也可以" + assert_equal [s, '12'], s.match(Regexp.new re).to_a + end + + it "#analyse_path" do + r = @r.analyse_path '/hello/%d-world%u/%s/' + assert_equal ['/hello/', '%d-world%u/%s'], r + + prefix, suffix = @r.analyse_path '/hello' + assert_equal '/hello', prefix + assert_equal nil, suffix + + prefix, suffix = @r.analyse_path '/' + assert_equal '/', prefix + assert_equal nil, suffix end end end