padrino-core 0.5.0 → 0.6.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -9,6 +9,7 @@ class TestComplexReloader < Test::Unit::TestCase
9
9
  Padrino.mounted_apps.clear
10
10
  Padrino.mount("complex_1_demo").to("/complex_1_demo")
11
11
  Padrino.mount("complex_2_demo").to("/complex_2_demo")
12
+ assert_equal ["/complex_1_demo", "/complex_2_demo"], Padrino.mounted_apps.collect(&:uri_root)
12
13
  assert_equal ["complex_1_demo", "complex_2_demo"], Padrino.mounted_apps.collect(&:name)
13
14
  assert Complex1Demo.reload?
14
15
  assert Complex2Demo.reload?
@@ -21,10 +21,27 @@ class TestSimpleReloader < Test::Unit::TestCase
21
21
  assert_equal 404, status
22
22
  end
23
23
  end
24
- end
25
24
 
25
+ should 'keep sinatra routes' do
26
+ mock_app do
27
+ get("/"){ "ok" }
28
+ end
29
+ get "/"
30
+ assert_equal 200, status
31
+ get "/__sinatra__/404.png"
32
+ assert_equal 200, status
33
+ assert_equal "image/png", response["Content-Type"]
34
+ @app.reset_routes!
35
+ get "/"
36
+ assert_equal 404, status
37
+ get "/__sinatra__/404.png"
38
+ assert_equal 200, status
39
+ assert_equal "image/png", response["Content-Type"]
40
+ end
41
+ end
42
+
26
43
  context 'for simple reload functionality' do
27
-
44
+
28
45
  should 'correctly instantiate SimpleDemo fixture' do
29
46
  Padrino.mounted_apps.clear
30
47
  Padrino.mount_core("simple_demo")
@@ -32,7 +49,7 @@ class TestSimpleReloader < Test::Unit::TestCase
32
49
  assert SimpleDemo.reload?
33
50
  assert_match %r{fixtures/apps/simple.rb}, SimpleDemo.app_file
34
51
  end
35
-
52
+
36
53
  should 'correctly reload SimpleDemo fixture' do
37
54
  @app = SimpleDemo
38
55
  get "/"
@@ -44,7 +61,7 @@ class TestSimpleReloader < Test::Unit::TestCase
44
61
  sleep 1.2 # We need at least a cooldown of 1 sec.
45
62
  get "/"
46
63
  assert_equal new_phrase, body
47
-
64
+
48
65
  # Now we need to prevent to commit a new changed file so we revert it
49
66
  File.open(SimpleDemo.app_file, "w") { |f| f.write(buffer) }
50
67
  end
@@ -0,0 +1,217 @@
1
+ require File.dirname(__FILE__) + '/helper'
2
+
3
+ class TestRouting < Test::Unit::TestCase
4
+
5
+ should 'ignore trailing delimiters' do
6
+ mock_app do
7
+ get("/foo"){ "okey" }
8
+ end
9
+ get "/foo"
10
+ assert_equal "okey", body
11
+ get "/foo/"
12
+ assert_equal "okey", body
13
+ end
14
+
15
+ should 'match correcly similar paths' do
16
+ mock_app do
17
+ get("/my/:foo_id"){ params[:foo_id] }
18
+ get("/my/:bar_id/bar"){ params[:bar_id] }
19
+ end
20
+ get "/my/1"
21
+ assert_equal "1", body
22
+ get "/my/2/bar"
23
+ assert_equal "2", body
24
+ end
25
+
26
+ should 'generate basic urls'do
27
+ mock_app do
28
+ get(:foo){ url(:foo) }
29
+ get(:bar, :with => :id){ url(:bar, :id => 1) }
30
+ get("/old-bar/:id"){ params[:id] }
31
+ post(:mix, :map => "/mix-bar/:id"){ params[:id] }
32
+ get(:mix, :map => "/mix-bar/:id"){ params[:id] }
33
+ end
34
+ get "/foo"
35
+ assert_equal "/foo", body
36
+ get "/bar/2"
37
+ assert_equal "/bar/1", body
38
+ get "/old-bar/3"
39
+ assert_equal "3", body
40
+ post "/mix-bar/4"
41
+ assert_equal "4", body
42
+ get "/mix-bar/4"
43
+ assert_equal "4", body
44
+ end
45
+
46
+ should 'generate url with format' do
47
+ mock_app do
48
+ get(:a, :respond_to => :any){ url(:a, :format => :json) }
49
+ get(:b, :respond_to => :js){ url(:b, :format => :js) }
50
+ get(:c, :respond_to => [:js, :json]){ url(:c, :format => :json) }
51
+ get(:d, :respond_to => [:html, :js]){ url(:d, :format => :js, :foo => :bar) }
52
+ end
53
+ get "/a.js"
54
+ assert_equal "/a.json", body
55
+ get "/b.js"
56
+ assert_equal "/b.js", body
57
+ get "/b.ru"
58
+ assert_equal 404, status
59
+ get "/c.js"
60
+ assert_equal "/c.json", body
61
+ get "/c.json"
62
+ assert_equal "/c.json", body
63
+ get "/c.ru"
64
+ assert_equal 404, status
65
+ get "/d.json"
66
+ assert 404, status
67
+ get "/d"
68
+ assert_equal "/d.js?foo=bar", body
69
+ get "/d.js"
70
+ assert_equal "/d.js?foo=bar", body
71
+ end
72
+
73
+ should 'map routes' do
74
+ mock_app do
75
+ get(:bar){ "bar" }
76
+ end
77
+ get "/bar"
78
+ assert_equal "bar", body
79
+ assert_equal "/bar", @app.url(:bar)
80
+ end
81
+
82
+ should 'remove index from path' do
83
+ mock_app do
84
+ get(:index){ "index" }
85
+ get("/accounts/index"){ "accounts" }
86
+ end
87
+ get "/"
88
+ assert_equal "index", body
89
+ assert_equal "/", @app.url(:index)
90
+ get "/accounts"
91
+ assert_equal "accounts", body
92
+ end
93
+
94
+ should 'parse named params' do
95
+ mock_app do
96
+ get(:print, :with => :id){ "Im #{params[:id]}" }
97
+ end
98
+ get "/print/9"
99
+ assert_equal "Im 9", body
100
+ assert_equal "/print/9", @app.url(:print, :id => 9)
101
+ end
102
+
103
+ should 'respond to' do
104
+ mock_app do
105
+ get(:a, :respond_to => :js){ "js" }
106
+ get(:b, :respond_to => :any){ "any" }
107
+ get(:c, :respond_to => [:js, :json]){ "js,json" }
108
+ get(:d, :respond_to => [:html, :js]){ "html,js"}
109
+ end
110
+ get "/a"
111
+ assert_equal 404, status
112
+ get "/a.js"
113
+ assert_equal "js", body
114
+ get "/b"
115
+ assert_equal "any", body
116
+ get "/b.foo"
117
+ assert_equal "any", body
118
+ get "/c"
119
+ assert_equal 404, status
120
+ get "/c.fo"
121
+ assert_equal 404, status
122
+ get "/c.js"
123
+ assert_equal "js,json", body
124
+ get "/c.json"
125
+ assert_equal "js,json", body
126
+ get "/d"
127
+ assert_equal "html,js", body
128
+ get "/d.fo"
129
+ assert_equal 404, status
130
+ get "/d.js"
131
+ assert_equal "html,js", body
132
+ end
133
+
134
+ should 'respond_to and set content_type' do
135
+ mock_app do
136
+ get :a, :respond_to => :any do
137
+ case content_type
138
+ when :js then "js"
139
+ when :json then "json"
140
+ when :foo then "foo"
141
+ when :html then "html"
142
+ end
143
+ end
144
+ end
145
+ get "/a.js"
146
+ assert_equal "js", body
147
+ assert_equal 'application/javascript', response["Content-Type"]
148
+ get "/a.json"
149
+ assert_equal "json", body
150
+ assert_equal 'application/json', response["Content-Type"]
151
+ get "/a.foo"
152
+ assert_equal "foo", body
153
+ assert_equal 'application/octet-stream', response["Content-Type"]
154
+ get "/a"
155
+ assert_equal "html", body
156
+ assert_equal 'text/html', response["Content-Type"]
157
+ end
158
+
159
+ should 'use controllers' do
160
+ mock_app do
161
+ controller "/admin" do
162
+ get("/"){ "index" }
163
+ get("/show/:id"){ "show #{params[:id]}" }
164
+ end
165
+ end
166
+ get "/admin"
167
+ assert_equal "index", body
168
+ get "/admin/show/1"
169
+ assert_equal "show 1", body
170
+ end
171
+
172
+ should 'use named controllers' do
173
+ mock_app do
174
+ controller :admin do
175
+ get(:index){ "index" }
176
+ get(:show, :with => :id){ "show #{params[:id]}" }
177
+ end
178
+ controllers :foo, :bar do
179
+ get(:index){ "foo_bar_index" }
180
+ end
181
+ end
182
+ get "/admin"
183
+ assert_equal "index", body
184
+ get "/admin/show/1"
185
+ assert_equal "show 1", body
186
+ assert_equal "/admin", @app.url(:admin_index)
187
+ assert_equal "/admin/show/1", @app.url(:admin_show, :id => 1)
188
+ get "/foo/bar"
189
+ assert_equal "foo_bar_index", body
190
+ end
191
+
192
+ should 'reset routes' do
193
+ mock_app do
194
+ get("/"){ "foo" }
195
+ router.reset!
196
+ end
197
+ get "/"
198
+ assert_equal 404, status
199
+ end
200
+
201
+ should 'apply maps' do
202
+ mock_app do
203
+ controllers :admin do
204
+ get(:index, :map => "/"){ "index" }
205
+ get(:show, :with => :id, :map => "/show"){ "show #{params[:id]}" }
206
+ get(:edit, :map => "/edit/:id/product"){ "edit #{params[:id]}" }
207
+ end
208
+ end
209
+ get "/"
210
+ assert_equal "index", body
211
+ get "/show/1"
212
+ assert_equal "show 1", body
213
+ get "/edit/1/product"
214
+ assert_equal "edit 1", body
215
+ end
216
+
217
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: padrino-core
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.0
4
+ version: 0.6.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Padrino Team
@@ -12,7 +12,7 @@ autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
14
 
15
- date: 2010-01-06 00:00:00 -08:00
15
+ date: 2010-01-14 00:00:00 +01:00
16
16
  default_executable: padrino
17
17
  dependencies:
18
18
  - !ruby/object:Gem::Dependency
@@ -35,6 +35,16 @@ dependencies:
35
35
  - !ruby/object:Gem::Version
36
36
  version: 0.3.2
37
37
  version:
38
+ - !ruby/object:Gem::Dependency
39
+ name: usher
40
+ type: :runtime
41
+ version_requirement:
42
+ version_requirements: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - ">="
45
+ - !ruby/object:Gem::Version
46
+ version: 0.6.2
47
+ version:
38
48
  - !ruby/object:Gem::Dependency
39
49
  name: thor
40
50
  type: :runtime
@@ -124,22 +134,25 @@ files:
124
134
  - lib/padrino-core.rb
125
135
  - lib/padrino-core/application.rb
126
136
  - lib/padrino-core/caller.rb
137
+ - lib/padrino-core/cli.rb
138
+ - lib/padrino-core/cli/adapter.rb
139
+ - lib/padrino-core/cli/console.rb
140
+ - lib/padrino-core/cli/rake.rb
141
+ - lib/padrino-core/cli/test.rb
142
+ - lib/padrino-core/images/404.png
143
+ - lib/padrino-core/images/500.png
127
144
  - lib/padrino-core/loader.rb
128
145
  - lib/padrino-core/locale/en.yml
129
146
  - lib/padrino-core/logger.rb
130
147
  - lib/padrino-core/mounter.rb
131
148
  - lib/padrino-core/reloader.rb
149
+ - lib/padrino-core/routing.rb
132
150
  - lib/padrino-core/server.rb
133
151
  - lib/padrino-core/stat.rb
134
152
  - lib/padrino-core/support_lite.rb
135
153
  - lib/padrino-core/support_lite/as_support.rb
136
154
  - lib/padrino-core/support_lite/extlib_support.rb
137
155
  - lib/padrino-core/tasks.rb
138
- - lib/padrino-core/tasks/adapter.rb
139
- - lib/padrino-core/tasks/console.rb
140
- - lib/padrino-core/tasks/helpers.rb
141
- - lib/padrino-core/tasks/rake_tasks.rb
142
- - lib/padrino-core/tasks/test.rb
143
156
  - lib/padrino-core/version.rb
144
157
  - padrino-core.gemspec
145
158
  - test/fixtures/apps/.components
@@ -153,6 +166,7 @@ files:
153
166
  - test/test_mounter.rb
154
167
  - test/test_reloader_complex.rb
155
168
  - test/test_reloader_simple.rb
169
+ - test/test_routing.rb
156
170
  - test/test_server.rb
157
171
  has_rdoc: true
158
172
  homepage: http://github.com/padrino/padrino-framework/tree/master/padrino-core
@@ -1,20 +0,0 @@
1
- module Padrino
2
- module Tasks
3
- module Helpers
4
-
5
- def chdir(dir)
6
- return unless dir
7
- begin
8
- Dir.chdir(dir.to_s)
9
- rescue Errno::ENOENT
10
- puts "=> Specified Padrino root '#{dir}' " +
11
- "does not appear to exist!"
12
- rescue Errno::EACCES
13
- puts "=> Specified Padrino root '#{dir}' " +
14
- "cannot be accessed by the current user!"
15
- end
16
- end
17
-
18
- end
19
- end
20
- end
@@ -1,19 +0,0 @@
1
- require 'rake'
2
- require 'rake/testtask'
3
- require 'rake/rdoctask'
4
-
5
- Dir["lib/tasks/**/*.rake"].each { |ext| load(ext) }
6
-
7
- # TODO: require here padrino-gen rake db:migrate, padrino-routes rake routes etc...
8
-
9
- class Padrino::Tasks::RakeFile
10
- cattr_accessor :boot_file
11
- end
12
-
13
- task :environment do
14
- require Padrino::Tasks::RakeFile.boot_file
15
- Padrino.mounted_apps.each do |app|
16
- Padrino.require_dependency(app.app_file)
17
- app.app_object.setup_application!
18
- end
19
- end