sinatra-mapping 1.0.6 → 1.0.7

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGES CHANGED
@@ -2,6 +2,8 @@
2
2
 
3
3
  [1.0.6 - 2009-08-21]
4
4
  * Fixes in the method for build path mapped.
5
+ * Updates in documentation.
6
+ * Tests have been fixed.
5
7
 
6
8
  [1.0.5 - 2009-07-30]
7
9
  * Fixes in the HTML attributes into helper method for link attributes.
data/LICENSE CHANGED
@@ -1,5 +1,3 @@
1
- = The MIT License
2
-
3
1
  Copyright (c) 2009 Hallison Batista
4
2
 
5
3
  Permission is hereby granted, free of charge, to any person obtaining a copy
data/README.rdoc CHANGED
@@ -1,16 +1,17 @@
1
1
  = Sinatra::Mapping
2
2
 
3
- Map easily URLs paths in your Web applications.
3
+ Map easily URLs in your Web applications.
4
4
 
5
5
  * {Repository}[http://github.com/hallison/sinatra-mapping]
6
6
  * {Project}[http://rubyforge.org/projects/sinatra-mapping]
7
7
  * {Documentation}[:link:Sinatra/Mapping.html]
8
8
  * {Issues}[http://github.com/hallison/sinatra-mapping/issues]
9
9
 
10
- The extention Sinatra::Mapping is a minimal module that is useful for
10
+ The extension Sinatra::Mapping is a minimal module that is useful for
11
11
  create map names for {Ruby}[http://www.ruby-lang.org]
12
12
  {Sinatra}[http://www.sinatrarb.com] web applications.
13
13
 
14
+ == Getting start
14
15
  Install stable version gem from {RubyForge.org}[http://www.rubyforge.org/]:
15
16
 
16
17
  gem install sinatra-mapping
@@ -19,7 +20,7 @@ Or, install development version gem from {GitHub.com}[http://github.com/]:
19
20
 
20
21
  gem install hallison-sinatra-mapping --source http://gems.github.com
21
22
 
22
- :session: Getting start
23
+ == How to use
23
24
 
24
25
  Sinatra implements REST routes:
25
26
 
@@ -39,54 +40,122 @@ Sinatra implements REST routes:
39
40
  .. annihilate something ..
40
41
  end
41
42
 
42
- Use extension by registered method in the main source of application.
43
- Example:
43
+ For improve this routes use extension by registered method in the main
44
+ source of application. To better understand, copy and paste the following
45
+ example in {Ruby}[http://www.ruby-lang.org] source file +webfoo.rb+:
44
46
 
47
+ #!/usr/bin/env ruby
48
+
49
+ require 'rubygems'
45
50
  require 'sinatra'
46
51
  require 'sinatra/mapping'
52
+ require 'sinatra/mapping_helpers'
47
53
 
48
- class BlogAppication < Sinatra::Application
54
+ class Sinatra::Application
49
55
 
50
56
  register Sinatra::Mapping
57
+ helpers Sinatra::MappingHelpers
51
58
 
52
- map :root, "blog" # => /blog/
53
- map :posts, "articles" # => /blog/articles
59
+ map :root, "blog" # /blog/
60
+ map :entries, "posts" # /blog/posts
61
+ map :tags, "labels" # /blog/labels
54
62
 
55
- mapping :tags => "labels" # => /blog/labels
56
- :archive => "archived-articles" # => /blog/archived-articles
63
+ mapping :entry => "posts/:entry_id", # /blog/posts/id-for-post
64
+ :entry_comments => "posts/:entry_id/comments", # /blog/posts/id-for-post/comments
65
+ :tagged_entries => "labels/:tag_id/entries" # /blog/labels/id-for-tag/entries
57
66
 
67
+ # /blog/
58
68
  get root_path do
59
- # /blog/
60
- # do something for root path.
69
+ <<-end_content
70
+ <h1>Welcome to Foo Web Application</h1>
71
+ <ul>
72
+ <li>#{link_to title_path(:entries), :entries, :title => title_path(:entries)}</li>
73
+ <li>#{link_to title_path(:tags), :tags, :title => title_path(:tags)}</li>
74
+ </ul>
75
+ end_content
61
76
  end
62
77
 
63
- get posts_path do
64
- # /blog/articles
65
- # do something for posts path.
78
+ # /blog/entries
79
+ get entries_path do
80
+ <<-end_content
81
+ <h1>Welcome to Foo Web Application</h1>
82
+ <h2>#{title_path(:entries)}</h2>
83
+ <ul>
84
+ <li>#{link_to "Testing new entry ...", :entries, "testing-new-entry"}</li>
85
+ <li>#{link_to "Testing old entry ...", :entries, "testing-old-entry"}</li>
86
+ </ul>
87
+ <p>
88
+ #{link_to "Back", :root}
89
+ </p>
90
+ end_content
66
91
  end
67
92
 
68
- get posts_path(":year/:month/:day/:permalink") do |year, month, day, permalink|
69
- # /blog/articles/2009/10/08/permalink-for-your-article
70
- # do something for posts path using parameters for find a post.
93
+ # /blog/labels/tag-id-for-show-content
94
+ get tags_path do
95
+ <<-end_content
96
+ <h1>Welcome to Foo Web Application</h1>
97
+ <h2>#{title_path(:tags)}</h2>
98
+ <ul>
99
+ <li>#{link_to "Ruby", :tags, "ruby", "entries"}</li>
100
+ <li>#{link_to "Sinatra", :tags, "sinatra", "entries"}</li>
101
+ <li>#{link_to "Mapping", :tags, "mapping", "entries"}</li>
102
+ </ul>
103
+ <p>
104
+ #{link_to "Back", :root}
105
+ </p>
106
+ end_content
71
107
  end
72
108
 
73
- get tags_path do
74
- # /blog/labels
75
- # do something for tags path.
109
+ # /blog/entries/entry-id-for-show-content
110
+ get entry_path do |entry_id|
111
+ title = entry_id.gsub('-',' ').capitalize
112
+ <<-end_content
113
+ <h1>Welcome to Foo Web Application</h1>
114
+ <h2>#{title}</h2>
115
+ <p>
116
+ It works!
117
+ </p>
118
+ <p>
119
+ #{link_to "Back", :root} | #{link_to "Comments", :entries, entry_id, 'comments'}
120
+ </p>
121
+ end_content
76
122
  end
77
123
 
78
- get archive_path do
79
- # do something for archive path.
124
+ # /blog/entries/entry-id-for-show-content/comments
125
+ get entry_comments_path do |entry_id|
126
+ title = entry_id.gsub('-',' ').capitalize
127
+ <<-end_content
128
+ <h1>Welcome to Foo Web Application</h1>
129
+ <h2>#{title}</h2>
130
+ <p>
131
+ It works and show comments for "#{title}".
132
+ </p>
133
+ <p>
134
+ #{link_to "Back", :root}
135
+ </p>
136
+ end_content
80
137
  end
81
138
 
82
- get archive_path(":year/:month/:day/:permalink") do |year, month, day, permalink|
83
- # /blog/archived-articles/1978/10/08/permalink-for-your-article
84
- # do something for archive path using parameters for find a post.
139
+ get tagged_entries_path do |tag_id|
140
+ <<-end_content
141
+ <h1>Welcome to Foo Web Application</h1>
142
+ <h2>#{tag_id.capitalize}</h2>
143
+ <p>
144
+ It works and show all entries tagged with "#{tag_id}".
145
+ </p>
146
+ <p>
147
+ #{link_to "Back", :root}
148
+ </p>
149
+ end_content
85
150
  end
86
151
 
87
152
  end
88
153
 
89
- Easy!!!
154
+ Run:
155
+
156
+ $ ruby webfoo.rb -p 3000
157
+
158
+ Open Web browser http://localhost:3000/blog/ and look ... it works!
90
159
 
91
160
  == More informations
92
161
 
@@ -96,5 +165,4 @@ Easy!!!
96
165
 
97
166
  == Copyright
98
167
 
99
- Copyright (c) 2009 Hallison Batista
100
-
168
+ :include:LICENSE
data/VERSION CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  :release:
3
- :date: 2009-08-21
3
+ :date: 2009-08-25
4
4
  :cycle: Stable release
5
5
  :major: 1
6
6
  :minor: 0
7
- :patch: 6
7
+ :patch: 7
@@ -27,12 +27,12 @@ module Sinatra
27
27
  if name.to_sym == :root
28
28
  @locations[:root] = cleanup_paths("/#{path}/")
29
29
  metadef "#{name}_path" do |*paths|
30
- @locations[:root]
30
+ cleanup_paths("/#{@locations[:root]}/?")
31
31
  end
32
32
  else
33
- @locations[name.to_sym] = path || name.to_s
33
+ @locations[name.to_sym] = cleanup_paths(path || name.to_s)
34
34
  metadef "#{name}_path" do |*paths|
35
- map_path_to(@locations[name.to_sym], *paths)
35
+ map_path_to(@locations[name.to_sym], *paths << "/?")
36
36
  end
37
37
  end
38
38
  end
@@ -79,7 +79,7 @@ module Sinatra
79
79
  # Check arguments. If argument is a symbol and exist map path before
80
80
  # setted, then return path mapped by symbol name.
81
81
  def map_path_to(*args)
82
- script_name = args.shift if args.first.to_s =~ /^\/\w.*/
82
+ script_name = args.shift if args.first.to_s =~ %r{^/\w.*}
83
83
  path_mapped(script_name, *locations_get_from(*args))
84
84
  end
85
85
 
@@ -0,0 +1,71 @@
1
+ $LOAD_PATH.unshift("#{File.dirname(__FILE__)}/../../lib/")
2
+
3
+ require 'rubygems'
4
+ require 'sinatra/base'
5
+ require 'sinatra/mapping'
6
+ require 'sinatra/mapping_helpers'
7
+
8
+ class Sinatra::Base
9
+ def env
10
+ @env.update('SCRIPT_NAME' => '/test')
11
+ end
12
+ end
13
+
14
+ class ModularApplication < Sinatra::Base
15
+
16
+ register Sinatra::Mapping
17
+ helpers Sinatra::MappingHelpers
18
+
19
+ map :root, "blog" # root_path => /blog/
20
+ map :about # about_path => /blog/about
21
+
22
+ mapping :posts => "articles", # posts_path => /blog/articles
23
+ :archive => "archive/articles", # archive_path => /blog/archive/articles
24
+ :search => "find-articles", # search_path => /blog/find-articles
25
+ :drafts => "unpublished" # drafts_path => /blog/unpublished
26
+
27
+ before do
28
+ @date = Date.today
29
+ end
30
+
31
+ get root_path do
32
+ "#{title_path :root, :path}:#{path_to :root}"
33
+ end
34
+
35
+ get posts_path do
36
+ "#{title_path :posts, :published}:#{path_to :posts}"
37
+ end
38
+
39
+ get posts_path "/:year/:month/:day/:permalink" do |year, month, day, permalink|
40
+ "#{title_path :posts}:" + path_to(:posts, "#{@date.to_s.gsub('-','/')}/#{permalink}")
41
+ end
42
+
43
+ get archive_path do
44
+ "#{title_path :archive}:#{path_to :archive}"
45
+ end
46
+
47
+ get archive_path "/:year/:month/:day/:permalink" do |year, month, day, permalink|
48
+ "#{title_path :archive}:" + path_to(:archive, "#{@date.to_s.gsub('-','/')}/#{permalink}")
49
+ end
50
+
51
+ get about_path do
52
+ "#{title_path :about}:#{path_to :about}"
53
+ end
54
+
55
+ get search_path do
56
+ <<-end_content.gsub(/^ /,'')
57
+ #{title_path :search}:#{path_to :search, :keywords => 'ruby'}
58
+ #{link_to "Search", :search, :title => 'Search'}
59
+ #{link_to "Search", :search, :title => 'Search', :keywords => 'ruby'}
60
+ end_content
61
+ end
62
+
63
+ get drafts_path do
64
+ <<-end_content.gsub(/^ /,'')
65
+ #{title_path :drafts}:#{path_to [:drafts, :posts]}
66
+ #{link_to "Unpublished", :drafts, :posts, :title => 'Unpublished'}
67
+ end_content
68
+ end
69
+
70
+ end
71
+
data/test/helper.rb ADDED
@@ -0,0 +1,6 @@
1
+ class Sinatra::Application
2
+ def env
3
+ @env.update('SCRIPT_NAME' => '/test')
4
+ end
5
+ end
6
+
@@ -0,0 +1,112 @@
1
+ $LOAD_PATH.unshift("#{File.dirname(__FILE__)}/..")
2
+
3
+ require 'rubygems'
4
+ require 'test/unit'
5
+ require 'rack/test'
6
+ require 'ruby-debug'
7
+
8
+ require 'test/fixtures/modular_application'
9
+
10
+ class ModularTestMapping < Test::Unit::TestCase
11
+
12
+ include Rack::Test::Methods
13
+
14
+ def setup
15
+ @date = Date.today
16
+ @link_paths = {
17
+ :root_path => "/test/blog",
18
+ :posts_path => "/test/blog/articles",
19
+ :archive_path => "/test/blog/archive/articles",
20
+ :about_path => "/test/blog/about",
21
+ :search_path => "/test/blog/find-articles",
22
+ :drafts_path => "/test/blog/unpublished"
23
+ }
24
+ @root_paths = @link_paths.inject({}) do |hash, (name, path)|
25
+ hash[name] = "#{path}/"
26
+ hash
27
+ end
28
+ @paths = @root_paths.inject({}) do |hash, (name, path)|
29
+ hash[name] = "#{path}?"
30
+ hash
31
+ end
32
+ end
33
+
34
+ def app
35
+ @app = ::ModularApplication
36
+ @app.set :environment, :test
37
+ @app
38
+ end
39
+
40
+ def test_check_map_locations
41
+ @paths.each do |name, location|
42
+ path = location.gsub(/\/test/,'')
43
+ assert_equal path, app.send(name)
44
+ end
45
+ end
46
+
47
+ def test_should_return_ok_in_root_path
48
+ get app.root_path do |response|
49
+ assert response.ok?
50
+ assert_equal "http://example.org#{@paths[:root_path]}", last_request.url
51
+ assert_equal "Blog path:#{@link_paths[:root_path]}", response.body
52
+ end
53
+ end
54
+
55
+ def test_should_return_ok_in_posts_path
56
+ get app.posts_path do |response|
57
+ assert response.ok?
58
+ assert_equal "http://example.org#{@paths[:posts_path]}", last_request.url
59
+ assert_equal "Articles published:#{@link_paths[:posts_path]}", response.body
60
+ end
61
+
62
+ path = app.posts_path "/#{@date.to_s.gsub('-','/')}/post-permalink"
63
+ get path do |response|
64
+ assert response.ok?
65
+ assert_equal "http://example.org/test#{path}", last_request.url
66
+ assert_equal "Articles:/test#{path}", response.body
67
+ end
68
+ end
69
+
70
+ def test_should_return_ok_in_archive_path
71
+ get app.archive_path do |response|
72
+ assert response.ok?
73
+ assert_equal "http://example.org#{@root_paths[:archive_path]}", last_request.url
74
+ assert_equal "Archive articles:#{@link_paths[:archive_path]}", response.body
75
+ end
76
+
77
+ path = app.archive_path "/#{@date.to_s.gsub('-','/')}/post-permalink"
78
+ get path do |response|
79
+ assert response.ok?
80
+ assert_equal "http://example.org/test#{path}", last_request.url
81
+ assert_equal "Archive articles:/test#{path}", response.body
82
+ end
83
+ end
84
+
85
+ def test_should_return_ok_in_about_path
86
+ get app.about_path do |response|
87
+ assert response.ok?
88
+ assert_equal "http://example.org#{@root_paths[:about_path]}", last_request.url
89
+ assert_equal "About:#{@link_paths[:about_path]}", response.body
90
+ end
91
+ end
92
+
93
+ def test_should_return_ok_in_search_path
94
+ get "#{app.search_path}?keywords=ruby" do |response|
95
+ assert response.ok?
96
+ assert_equal "http://example.org#{@paths[:search_path]}?keywords=ruby", last_request.url
97
+ assert_equal "Find articles:#{@paths[:search_path]}?keywords=ruby", response.body.split("\n")[0]
98
+ assert_equal "<a href=\"#{@paths[:search_path]}\" title=\"Search\">Search</a>", response.body.split("\n")[1]
99
+ assert_equal "<a href=\"#{@paths[:search_path]}?keywords=ruby\" title=\"Search\">Search</a>", response.body.split("\n")[2]
100
+ end
101
+ end
102
+
103
+ def test_should_check_path_method_with_array_params
104
+ get app.drafts_path do |response|
105
+ assert response.ok?
106
+ assert_equal "Unpublished:#{@link_paths[:drafts_path]}/articles".squeeze('/'), response.body.split("\n")[0]
107
+ body_link = "<a href=\"#{@link_paths[:drafts_path]}/articles\" title=\"Unpublished\">Unpublished</a>"
108
+ assert_equal body_link, response.body.split("\n")[1]
109
+ end
110
+ end
111
+ end
112
+
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sinatra-mapping
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.6
4
+ version: 1.0.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Hallison Batista
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-08-21 00:00:00 -04:00
12
+ date: 2009-08-25 00:00:00 -04:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -51,7 +51,9 @@ files:
51
51
  - lib/sinatra/mapping.rb
52
52
  - lib/sinatra/mapping_helpers.rb
53
53
  - sinatra-mapping.gemspec
54
- - test/mapping_test.rb
54
+ - test/fixtures/modular_application.rb
55
+ - test/helper.rb
56
+ - test/modular_mapping_test.rb
55
57
  has_rdoc: true
56
58
  homepage: http://sinatra-mapping.rubyforge.org/
57
59
  licenses: []
data/test/mapping_test.rb DELETED
@@ -1,218 +0,0 @@
1
- $LOAD_PATH.unshift("#{File.dirname(__FILE__)}/..")
2
-
3
- require 'rubygems'
4
- require 'lib/sinatra/mapping'
5
- require 'lib/sinatra/mapping_helpers'
6
- require 'test/unit'
7
- require 'rack/test'
8
- require 'ruby-debug'
9
-
10
- class Sinatra::Base
11
- def env
12
- @env ||= { 'SCRIPT_NAME' => '/blog' }
13
- end
14
- end
15
-
16
- class AppForTest < Sinatra::Base
17
-
18
- register Sinatra::Mapping
19
- helpers Sinatra::MappingHelpers
20
-
21
- map :root, "blog" # root_path => /blog/
22
- map :about # about_path => /blog/about
23
-
24
- mapping :posts => "articles", # posts_path => /blog/articles
25
- :archive => "archive/articles", # archive_path => /blog/archive/articles
26
- :search => "find-articles", # search_path => /blog/find-articles
27
- :drafts => "unpublished" # drafts_path => /blog/unpublished
28
-
29
- before do
30
- @date = Date.today
31
- end
32
-
33
- get root_path do
34
- "#{title_path :root, :path}:#{path_to :root}"
35
- end
36
-
37
- get posts_path do
38
- "#{title_path :posts, :published}:#{path_to :posts}"
39
- end
40
-
41
- get posts_path "/" do
42
- redirect path_to(:posts), 301
43
- end
44
-
45
- get posts_path "/:year/:month/:day/:permalink" do |year, month, day, permalink|
46
- "#{title_path :posts}:" + path_to(:posts, "#{@date.to_s.gsub('-','/')}/#{permalink}")
47
- end
48
-
49
- get posts_path "/:year/:month/:day/:permalink/" do |year, month, day, permalink|
50
- redirect path_to(:posts, year, month, day, permalink), 301
51
- end
52
-
53
- get archive_path do
54
- "#{title_path :archive}:#{path_to :archive}"
55
- end
56
-
57
- get archive_path "/" do
58
- redirect path_to(:archive), 301
59
- end
60
-
61
- get archive_path "/:year/:month/:day/:permalink" do |year, month, day, permalink|
62
- "#{title_path :archive}:" + path_to(:archive, "#{@date.to_s.gsub('-','/')}/#{permalink}")
63
- end
64
-
65
- get archive_path "/:year/:month/:day/:permalink/" do |year, month, day, permalink|
66
- redirect path_to(:archive, year, month, day, permalink), 301
67
- end
68
-
69
- get about_path do
70
- "#{title_path :about}:#{path_to :about}"
71
- end
72
-
73
- get about_path "/" do
74
- redirect path_to(:about), 301
75
- end
76
-
77
- get search_path do
78
- <<-end_content.gsub(/^ /,'')
79
- #{title_path :search}:#{path_to :search, :keywords => 'ruby'}
80
- #{link_to "Search", :search, :title => 'Search'}
81
- #{link_to "Search", :search, :title => 'Search', :keywords => 'ruby'}
82
- end_content
83
- end
84
-
85
- get drafts_path do
86
- <<-end_content.gsub(/^ /,'')
87
- #{title_path :drafts}:#{path_to [:drafts, :posts]}
88
- #{link_to "Unpublished", :drafts, :posts, :title => 'Unpublished'}
89
- end_content
90
- end
91
-
92
- end
93
-
94
- class TestMapping < Test::Unit::TestCase
95
-
96
- include Rack::Test::Methods
97
-
98
- def setup
99
- @date = Date.today
100
- @locations = {
101
- :root_path => "/",
102
- :posts_path => "/articles",
103
- :archive_path => "/archive/articles",
104
- :about_path => "/about",
105
- :search_path => "/find-articles",
106
- :drafts_path => "/unpublished"
107
- }
108
- end
109
-
110
- def app
111
- @app = ::AppForTest
112
- @app.set :environment, :test
113
- @app
114
- end
115
-
116
- def test_check_map_locations
117
- @locations.each do |name, location|
118
- assert_equal "#{location}", app.send(name)
119
- end
120
- end
121
-
122
- def test_should_return_ok_in_root_path
123
- get app.root_path do |response|
124
- assert response.ok?
125
- assert_equal "http://example.org#{@locations[:root_path]}", last_request.url
126
- assert_equal "Path:#{@locations[:root_path]}", response.body
127
- end
128
- end
129
-
130
- def test_should_return_ok_in_posts_path
131
- get app.posts_path do |response|
132
- assert response.ok?
133
- assert_equal "http://example.org#{@locations[:posts_path]}", last_request.url
134
- assert_equal "Articles published:#{@locations[:posts_path]}", response.body
135
- end
136
-
137
- get app.posts_path "/" do
138
- follow_redirect!
139
- assert last_response.ok?
140
- assert_equal "http://example.org#{@locations[:posts_path]}", last_request.url
141
- end
142
-
143
- path = app.posts_path "/#{@date.to_s.gsub('-','/')}/post-permalink"
144
- get path do |response|
145
- assert response.ok?
146
- assert_equal "http://example.org#{path}", last_request.url
147
- assert_equal "Articles:#{path}", response.body
148
- end
149
-
150
- get "#{path}/" do
151
- follow_redirect!
152
- assert last_response.ok?
153
- assert_equal "http://example.org#{path}", last_request.url
154
- assert_equal "Articles:#{path}", last_response.body
155
- end
156
- end
157
-
158
- def test_should_return_ok_in_archive_path
159
- get app.archive_path do |response|
160
- assert response.ok?
161
- assert_equal "http://example.org#{@locations[:archive_path]}", last_request.url
162
- assert_equal "Archive articles:#{@locations[:archive_path]}", response.body
163
- end
164
-
165
- get app.archive_path "/" do
166
- follow_redirect!
167
- assert last_response.ok?
168
- assert_equal "http://example.org#{@locations[:archive_path]}", last_request.url
169
- end
170
-
171
- path = app.archive_path "/#{@date.to_s.gsub('-','/')}/post-permalink"
172
- get path do |response|
173
- assert response.ok?
174
- assert_equal "http://example.org#{path}", last_request.url
175
- assert_equal "Archive articles:#{path}", response.body
176
- end
177
-
178
- get "#{path}/" do
179
- follow_redirect!
180
- assert last_response.ok?
181
- assert_equal "http://example.org#{path}", last_request.url
182
- assert_equal "Archive articles:#{path}", last_response.body
183
- end
184
- end
185
-
186
- def test_should_return_ok_in_about_path
187
- get app.about_path do |response|
188
- assert response.ok?
189
- assert_equal "http://example.org#{@locations[:about_path]}", last_request.url
190
- assert_equal "About:#{@locations[:about_path]}", response.body
191
- end
192
-
193
- get app.about_path "/" do
194
- follow_redirect!
195
- assert last_response.ok?
196
- assert_equal "http://example.org#{@locations[:about_path]}", last_request.url
197
- end
198
- end
199
-
200
- def test_should_return_ok_in_search_path
201
- get "#{app.search_path}?keywords=ruby" do |response|
202
- assert response.ok?
203
- assert_equal "http://example.org#{@locations[:search_path]}?keywords=ruby", last_request.url
204
- assert_equal "Find articles:#{@locations[:search_path]}?keywords=ruby", response.body.split("\n")[0]
205
- assert_equal "<a href=\"#{@locations[:search_path]}\" title=\"Search\">Search</a>", response.body.split("\n")[1]
206
- assert_equal "<a href=\"#{@locations[:search_path]}?keywords=ruby\" title=\"Search\">Search</a>", response.body.split("\n")[2]
207
- end
208
- end
209
-
210
- def test_should_check_path_method_with_array_params
211
- get "#{app.drafts_path}" do |response|
212
- assert response.ok?
213
- assert_equal "Unpublished:#{@locations[:drafts_path]}#{@locations[:posts_path]}", response.body.split("\n")[0]
214
- assert_equal "<a href=\"#{@locations[:drafts_path]}#{@locations[:posts_path]}\" title=\"Unpublished\">Unpublished</a>", response.body.split("\n")[1]
215
- end
216
- end
217
- end
218
-