roda 2.0.0 → 2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (38) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG +26 -0
  3. data/README.rdoc +83 -22
  4. data/Rakefile +1 -1
  5. data/doc/release_notes/2.1.0.txt +124 -0
  6. data/lib/roda/plugins/assets.rb +17 -9
  7. data/lib/roda/plugins/class_level_routing.rb +5 -2
  8. data/lib/roda/plugins/delegate.rb +6 -3
  9. data/lib/roda/plugins/indifferent_params.rb +7 -0
  10. data/lib/roda/plugins/mailer.rb +18 -1
  11. data/lib/roda/plugins/multi_route.rb +2 -1
  12. data/lib/roda/plugins/path.rb +75 -6
  13. data/lib/roda/plugins/render.rb +33 -14
  14. data/lib/roda/plugins/static.rb +35 -0
  15. data/lib/roda/plugins/view_options.rb +161 -0
  16. data/lib/roda/plugins/view_subdirs.rb +6 -63
  17. data/lib/roda/version.rb +1 -1
  18. data/spec/composition_spec.rb +12 -0
  19. data/spec/matchers_spec.rb +34 -0
  20. data/spec/plugin/assets_spec.rb +112 -17
  21. data/spec/plugin/delete_empty_headers_spec.rb +12 -0
  22. data/spec/plugin/mailer_spec.rb +46 -3
  23. data/spec/plugin/module_include_spec.rb +17 -0
  24. data/spec/plugin/multi_route_spec.rb +10 -0
  25. data/spec/plugin/named_templates_spec.rb +6 -0
  26. data/spec/plugin/not_found_spec.rb +1 -1
  27. data/spec/plugin/path_spec.rb +76 -0
  28. data/spec/plugin/render_each_spec.rb +6 -0
  29. data/spec/plugin/render_spec.rb +40 -1
  30. data/spec/plugin/sinatra_helpers_spec.rb +5 -0
  31. data/spec/plugin/static_spec.rb +30 -0
  32. data/spec/plugin/view_options_spec.rb +117 -0
  33. data/spec/spec_helper.rb +5 -1
  34. data/spec/views/multiple-layout.erb +1 -0
  35. data/spec/views/multiple.erb +1 -0
  36. metadata +10 -4
  37. data/spec/plugin/static_path_info_spec.rb +0 -56
  38. data/spec/plugin/view_subdirs_spec.rb +0 -44
@@ -1,56 +0,0 @@
1
- require File.expand_path("spec_helper", File.dirname(File.dirname(__FILE__)))
2
-
3
- describe "static_path_info plugin" do
4
- it "does not modify SCRIPT_NAME/PATH_INFO during routing" do
5
- app(:bare) do
6
- plugin :static_path_info
7
- plugin :pass
8
-
9
- route do |r|
10
- r.on "foo" do
11
- r.is "bar" do
12
- "bar|#{env['SCRIPT_NAME']}|#{env['PATH_INFO']}"
13
- end
14
- r.is "baz" do
15
- r.pass
16
- end
17
- "foo|#{env['SCRIPT_NAME']}|#{env['PATH_INFO']}"
18
- end
19
- "#{env['SCRIPT_NAME']}|#{env['PATH_INFO']}"
20
- end
21
- end
22
-
23
- body.should == '|/'
24
- body('SCRIPT_NAME'=>'/a').should == '/a|/'
25
- body('/foo').should == 'foo||/foo'
26
- body('/foo', 'SCRIPT_NAME'=>'/a').should == 'foo|/a|/foo'
27
- body('/foo/bar').should == 'bar||/foo/bar'
28
- body('/foo/bar', 'SCRIPT_NAME'=>'/a').should == 'bar|/a|/foo/bar'
29
- body('/foo/baz').should == 'foo||/foo/baz'
30
- body('/foo/baz', 'SCRIPT_NAME'=>'/a').should == 'foo|/a|/foo/baz'
31
- end
32
-
33
- it "modifies SCRIPT_NAME/PATH_INFO when calling run" do
34
- a = app{|r| "#{r.script_name}|#{r.path_info}"}
35
- app(:static_path_info){|r| r.on("a"){r.run a}}
36
- body("/a/b").should == "/a|/b"
37
- end
38
-
39
- it "restores SCRIPT_NAME/PATH_INFO before returning from run" do
40
- a = app{|r| "#{r.script_name}|#{r.path_info}"}
41
- app(:static_path_info){|r| s = catch(:halt){r.on("a"){r.run a}}; "#{s[2].join}%#{r.script_name}|#{r.path_info}"}
42
- body("/a/b").should == "/a|/b%|/a/b"
43
- end
44
- end
45
-
46
- describe "static_path_info request.path, .remaining_path, and .matched_path" do
47
- it "should return the script name and path_info as a string" do
48
- app(:static_path_info) do |r|
49
- r.on "foo" do
50
- "#{r.path}:#{r.matched_path}:#{r.remaining_path}"
51
- end
52
- end
53
-
54
- body("/foo/bar").should == "/foo/bar:/foo:/bar"
55
- end
56
- end
@@ -1,44 +0,0 @@
1
- require File.expand_path("spec_helper", File.dirname(File.dirname(__FILE__)))
2
-
3
- begin
4
- require 'tilt/erb'
5
- rescue LoadError
6
- warn "tilt not installed, skipping view_subdirs plugin test"
7
- else
8
- describe "view_subdirs plugin" do
9
- before do
10
- app(:bare) do
11
- plugin :render, :views=>"./spec"
12
- plugin :view_subdirs
13
-
14
- route do |r|
15
- r.on "home" do
16
- set_view_subdir 'views'
17
- view("home", :locals=>{:name => "Agent Smith", :title => "Home"}, :layout_opts=>{:locals=>{:title=>"Home"}})
18
- end
19
-
20
- r.on "about" do
21
- set_view_subdir 'views'
22
- render("views/about", :locals=>{:title => "About Roda"})
23
- end
24
-
25
- r.on "path" do
26
- render('views/about', :locals=>{:title => "Path"}, :layout_opts=>{:locals=>{:title=>"Home"}})
27
- end
28
- end
29
- end
30
- end
31
-
32
- it "should use set subdir if template name does not contain a slash" do
33
- body("/home").strip.should == "<title>Roda: Home</title>\n<h1>Home</h1>\n<p>Hello Agent Smith</p>"
34
- end
35
-
36
- it "should not use set subdir if template name contains a slash" do
37
- body("/about").strip.should == "<h1>About Roda</h1>"
38
- end
39
-
40
- it "should not change behavior when subdir is not set" do
41
- body("/path").strip.should == "<h1>Path</h1>"
42
- end
43
- end
44
- end