strelka 0.6.0 → 0.7.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 (80) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +0 -0
  3. data/ChangeLog +156 -9
  4. data/History.rdoc +15 -0
  5. data/IDEAS.rdoc +17 -1
  6. data/MILESTONES.rdoc +1 -1
  7. data/Manifest.txt +10 -2
  8. data/Plugins.rdoc +4 -4
  9. data/README.rdoc +3 -3
  10. data/Rakefile +5 -4
  11. data/bin/strelka +19 -10
  12. data/contrib/hoetemplate/data/project/apps/file_name_app +1 -0
  13. data/contrib/hoetemplate/lib/file_name.rb.erb +3 -2
  14. data/examples/apps/hello-world +1 -0
  15. data/examples/apps/ws-chat +69 -0
  16. data/examples/apps/ws-echo +61 -0
  17. data/examples/gen-config.rb +6 -5
  18. data/lib/strelka/app/auth.rb +2 -2
  19. data/lib/strelka/app/errors.rb +1 -1
  20. data/lib/strelka/app/filters.rb +3 -2
  21. data/lib/strelka/app/negotiation.rb +2 -2
  22. data/lib/strelka/app/parameters.rb +1 -2
  23. data/lib/strelka/app/restresources.rb +3 -2
  24. data/lib/strelka/app/routing.rb +1 -1
  25. data/lib/strelka/app/sessions.rb +2 -2
  26. data/lib/strelka/app/templating.rb +7 -3
  27. data/lib/strelka/app.rb +5 -145
  28. data/lib/strelka/behavior/plugin.rb +4 -4
  29. data/lib/strelka/discovery.rb +211 -0
  30. data/lib/strelka/httprequest.rb +1 -0
  31. data/lib/strelka/httpresponse/negotiation.rb +7 -1
  32. data/lib/strelka/mixins.rb +4 -1
  33. data/lib/strelka/paramvalidator.rb +1 -1
  34. data/lib/strelka/plugins.rb +8 -6
  35. data/lib/strelka/websocketserver/routing.rb +116 -0
  36. data/lib/strelka/websocketserver.rb +147 -0
  37. data/lib/strelka.rb +5 -4
  38. data/spec/{lib/constants.rb → constants.rb} +3 -2
  39. data/spec/{lib/helpers.rb → helpers.rb} +15 -14
  40. data/spec/strelka/app/auth_spec.rb +145 -142
  41. data/spec/strelka/app/errors_spec.rb +20 -26
  42. data/spec/strelka/app/filters_spec.rb +67 -54
  43. data/spec/strelka/app/negotiation_spec.rb +8 -14
  44. data/spec/strelka/app/parameters_spec.rb +23 -29
  45. data/spec/strelka/app/restresources_spec.rb +98 -100
  46. data/spec/strelka/app/routing_spec.rb +57 -57
  47. data/spec/strelka/app/sessions_spec.rb +11 -17
  48. data/spec/strelka/app/templating_spec.rb +36 -40
  49. data/spec/strelka/app_spec.rb +48 -147
  50. data/spec/strelka/authprovider/basic_spec.rb +5 -11
  51. data/spec/strelka/authprovider/hostaccess_spec.rb +9 -15
  52. data/spec/strelka/authprovider_spec.rb +3 -9
  53. data/spec/strelka/cookie_spec.rb +32 -38
  54. data/spec/strelka/cookieset_spec.rb +31 -37
  55. data/spec/strelka/discovery_spec.rb +144 -0
  56. data/spec/strelka/exceptions_spec.rb +2 -8
  57. data/spec/strelka/httprequest/acceptparams_spec.rb +74 -83
  58. data/spec/strelka/httprequest/auth_spec.rb +5 -15
  59. data/spec/strelka/httprequest/negotiation_spec.rb +93 -103
  60. data/spec/strelka/httprequest/session_spec.rb +12 -22
  61. data/spec/strelka/httprequest_spec.rb +1 -7
  62. data/spec/strelka/httpresponse/negotiation_spec.rb +84 -76
  63. data/spec/strelka/httpresponse/session_spec.rb +25 -35
  64. data/spec/strelka/httpresponse_spec.rb +20 -26
  65. data/spec/strelka/mixins_spec.rb +66 -61
  66. data/spec/strelka/multipartparser_spec.rb +31 -37
  67. data/spec/strelka/paramvalidator_spec.rb +389 -373
  68. data/spec/strelka/plugins_spec.rb +17 -23
  69. data/spec/strelka/router/default_spec.rb +32 -38
  70. data/spec/strelka/router/exclusive_spec.rb +28 -34
  71. data/spec/strelka/router_spec.rb +2 -8
  72. data/spec/strelka/session/db_spec.rb +17 -15
  73. data/spec/strelka/session/default_spec.rb +22 -28
  74. data/spec/strelka/session_spec.rb +3 -9
  75. data/spec/strelka/websocketserver/routing_spec.rb +119 -0
  76. data/spec/strelka/websocketserver_spec.rb +149 -0
  77. data/spec/strelka_spec.rb +11 -13
  78. data.tar.gz.sig +3 -3
  79. metadata +22 -14
  80. metadata.gz.sig +0 -0
@@ -2,16 +2,10 @@
2
2
  # vim: set nosta noet ts=4 sw=4:
3
3
  # encoding: utf-8
4
4
 
5
- BEGIN {
6
- require 'pathname'
7
- basedir = Pathname.new( __FILE__ ).dirname.parent.parent.parent
8
- $LOAD_PATH.unshift( basedir ) unless $LOAD_PATH.include?( basedir )
9
- }
5
+ require_relative '../../helpers'
10
6
 
11
7
  require 'rspec'
12
8
 
13
- require 'spec/lib/helpers'
14
-
15
9
  require 'strelka'
16
10
  require 'strelka/plugins'
17
11
  require 'strelka/app/routing'
@@ -35,7 +29,7 @@ describe Strelka::App::Routing do
35
29
  end
36
30
 
37
31
 
38
- it_should_behave_like( "A Strelka::App Plugin" )
32
+ it_should_behave_like( "A Strelka Plugin" )
39
33
 
40
34
 
41
35
  describe "an including App" do
@@ -51,124 +45,126 @@ describe Strelka::App::Routing do
51
45
 
52
46
 
53
47
  it "has an Array of raw routes" do
54
- @app.routes.should be_a( Array )
48
+ expect( @app.routes ).to be_a( Array )
55
49
  end
56
50
 
57
51
  it "knows what its route methods are" do
58
- @app.route_methods.should == []
52
+ expect( @app.route_methods ).to eq( [] )
59
53
  @app.class_eval do
60
54
  get() {}
61
55
  post( '/clowns' ) {}
62
56
  options( '/clowns' ) {}
63
57
  end
64
58
 
65
- @app.route_methods.should == [ :GET, :POST_clowns, :OPTIONS_clowns ]
59
+ expect( @app.route_methods ).to eq( [ :GET, :POST_clowns, :OPTIONS_clowns ] )
66
60
  end
67
61
 
68
62
  # OPTIONS GET/HEAD POST PUT DELETE TRACE CONNECT
69
63
 
70
64
  it "can declare a OPTIONS route" do
71
- @app.routes.should be_empty()
65
+ expect( @app.routes ).to be_empty()
72
66
 
73
67
  @app.class_eval do
74
68
  options do |req|
75
69
  end
76
70
  end
77
71
 
78
- @app.routes.should == [
72
+ expect( @app.routes ).to eq([
79
73
  [ :OPTIONS, [], {action: @app.instance_method(:OPTIONS), options: {}} ]
80
- ]
74
+ ])
81
75
  end
82
76
 
83
77
  it "can declare a GET route" do
84
- @app.routes.should be_empty()
78
+ expect( @app.routes ).to be_empty()
85
79
 
86
80
  @app.class_eval do
87
81
  get do |req|
88
82
  end
89
83
  end
90
84
 
91
- @app.routes.should == [
85
+ expect( @app.routes ).to eq([
92
86
  [ :GET, [], {action: @app.instance_method(:GET), options: {}} ]
93
- ]
87
+ ])
94
88
  end
95
89
 
96
90
  it "can declare a POST route" do
97
- @app.routes.should be_empty()
91
+ expect( @app.routes ).to be_empty()
98
92
 
99
93
  @app.class_eval do
100
94
  post do |req|
101
95
  end
102
96
  end
103
97
 
104
- @app.routes.should == [
98
+ expect( @app.routes ).to eq([
105
99
  [ :POST, [], {action: @app.instance_method(:POST), options: {}} ]
106
- ]
100
+ ])
107
101
  end
108
102
 
109
103
  it "can declare a PUT route" do
110
- @app.routes.should be_empty()
104
+ expect( @app.routes ).to be_empty()
111
105
 
112
106
  @app.class_eval do
113
107
  put do |req|
114
108
  end
115
109
  end
116
110
 
117
- @app.routes.should == [[ :PUT, [], {action: @app.instance_method(:PUT), options: {}} ]]
111
+ expect( @app.routes ).to eq([
112
+ [ :PUT, [], {action: @app.instance_method(:PUT), options: {}} ]
113
+ ])
118
114
  end
119
115
 
120
116
  it "can declare a DELETE route" do
121
- @app.routes.should be_empty()
117
+ expect( @app.routes ).to be_empty()
122
118
 
123
119
  @app.class_eval do
124
120
  delete do |req|
125
121
  end
126
122
  end
127
123
 
128
- @app.routes.should == [
124
+ expect( @app.routes ).to eq([
129
125
  [ :DELETE, [], {action: @app.instance_method(:DELETE), options: {}} ]
130
- ]
126
+ ])
131
127
  end
132
128
 
133
129
  it "can declare a TRACE route" do
134
- @app.routes.should be_empty()
130
+ expect( @app.routes ).to be_empty()
135
131
 
136
132
  @app.class_eval do
137
133
  trace do |req|
138
134
  end
139
135
  end
140
136
 
141
- @app.routes.should == [
137
+ expect( @app.routes ).to eq([
142
138
  [ :TRACE, [], {action: @app.instance_method(:TRACE), options: {}} ]
143
- ]
139
+ ])
144
140
  end
145
141
 
146
142
  it "can declare a CONNECT route" do
147
- @app.routes.should be_empty()
143
+ expect( @app.routes ).to be_empty()
148
144
 
149
145
  @app.class_eval do
150
146
  connect do |req|
151
147
  end
152
148
  end
153
149
 
154
- @app.routes.should == [
150
+ expect( @app.routes ).to eq([
155
151
  [ :CONNECT, [], {action: @app.instance_method(:CONNECT), options: {}} ]
156
- ]
152
+ ])
157
153
  end
158
154
 
159
155
 
160
156
 
161
157
  it "allows a route to specify a path" do
162
- @app.routes.should be_empty()
158
+ expect( @app.routes ).to be_empty()
163
159
 
164
160
  @app.class_eval do
165
161
  get '/info' do |req|
166
162
  end
167
163
  end
168
164
 
169
- @app.routes.should == [
165
+ expect( @app.routes ).to eq([
170
166
  [ :GET, ['info'], {action: @app.instance_method(:GET_info), options: {}} ]
171
- ]
167
+ ])
172
168
  end
173
169
 
174
170
  it "allows a route to omit the leading '/' when specifying a path" do
@@ -177,9 +173,9 @@ describe Strelka::App::Routing do
177
173
  end
178
174
  end
179
175
 
180
- @app.routes.should == [
176
+ expect( @app.routes ).to eq([
181
177
  [ :GET, ['info'], {action: @app.instance_method(:GET_info), options: {}} ]
182
- ]
178
+ ])
183
179
  end
184
180
 
185
181
  it "allows a route to specify a path via a Regex" do
@@ -188,13 +184,13 @@ describe Strelka::App::Routing do
188
184
  end
189
185
  end
190
186
 
191
- @app.routes.first[0,2].should == [ :GET, [/\.pdf$/] ]
187
+ expect( @app.routes.first[0,2] ).to eq( [ :GET, [/\.pdf$/] ] )
192
188
  end
193
189
 
194
190
 
195
191
  it "uses the Strelka::Router::Default as it's router by default" do
196
- @app.routerclass.should == :default
197
- @app.new.router.should be_a( Strelka::Router::Default )
192
+ expect( @app.routerclass ).to eq( :default )
193
+ expect( @app.new.router ).to be_a( Strelka::Router::Default )
198
194
  end
199
195
 
200
196
  it "can specify a different Router class than the default" do
@@ -202,8 +198,8 @@ describe Strelka::App::Routing do
202
198
  @app.class_eval do
203
199
  router MyRouter
204
200
  end
205
- @app.routerclass.should equal( MyRouter )
206
- @app.new.router.should be_a( MyRouter )
201
+ expect( @app.routerclass ).to equal( MyRouter )
202
+ expect( @app.new.router ).to be_a( MyRouter )
207
203
  end
208
204
 
209
205
 
@@ -218,17 +214,17 @@ describe Strelka::App::Routing do
218
214
  get( '/origami' ) {}
219
215
  end
220
216
 
221
- subclass.routes.should have( 3 ).members
217
+ expect( subclass.routes ).to have( 3 ).members
222
218
 
223
219
  subclass.routes.
224
220
  should include([ :GET, ['info'], {action: @app.instance_method(:GET_info), options: {}} ])
225
221
  subclass.routes.
226
222
  should include([ :GET, ['about'], {action: @app.instance_method(:GET_about), options: {}} ])
227
- subclass.routes.should include(
223
+ expect( subclass.routes ).to include(
228
224
  [ :GET, ['origami'], {action: subclass.instance_method(:GET_origami), options: {}} ]
229
225
  )
230
226
 
231
- subclass.routerclass.should == @app.routerclass
227
+ expect( subclass.routerclass ).to eq( @app.routerclass )
232
228
  end
233
229
 
234
230
  describe "that also uses the :parameters plugin" do
@@ -244,9 +240,10 @@ describe Strelka::App::Routing do
244
240
  end
245
241
  end
246
242
 
247
- @app.routes.should ==
248
- [[ :POST, ['userinfo', /(?<username>[a-z]\w+)/i],
249
- {action: @app.instance_method(:POST_userinfo__re_username), options: {}} ]]
243
+ expect( @app.routes ).to eq([
244
+ [ :POST, ['userinfo', /(?<username>[a-z]\w+)/i],
245
+ {action: @app.instance_method(:POST_userinfo__re_username), options: {}} ]
246
+ ])
250
247
  end
251
248
 
252
249
  it "unbinds parameter patterns bound with ^ and $ for the route" do
@@ -256,9 +253,10 @@ describe Strelka::App::Routing do
256
253
  end
257
254
  end
258
255
 
259
- @app.routes.should ==
260
- [[ :POST, ['userinfo', /(?<username>[a-z]\w+)/i],
261
- {action: @app.instance_method(:POST_userinfo__re_username), options: {}} ]]
256
+ expect( @app.routes ).to eq([
257
+ [ :POST, ['userinfo', /(?<username>[a-z]\w+)/i],
258
+ {action: @app.instance_method(:POST_userinfo__re_username), options: {}} ]
259
+ ])
262
260
  end
263
261
 
264
262
  it "unbinds parameter patterns bound with \\A and \\z for the route" do
@@ -268,9 +266,10 @@ describe Strelka::App::Routing do
268
266
  end
269
267
  end
270
268
 
271
- @app.routes.should ==
272
- [[ :POST, ['userinfo', /(?<username>[a-z]\w+)/i],
273
- {action: @app.instance_method(:POST_userinfo__re_username), options: {}} ]]
269
+ expect( @app.routes ).to eq([
270
+ [ :POST, ['userinfo', /(?<username>[a-z]\w+)/i],
271
+ {action: @app.instance_method(:POST_userinfo__re_username), options: {}} ]
272
+ ])
274
273
  end
275
274
 
276
275
  it "unbinds parameter patterns bound with \\Z for the route" do
@@ -280,9 +279,10 @@ describe Strelka::App::Routing do
280
279
  end
281
280
  end
282
281
 
283
- @app.routes.should ==
284
- [[ :POST, ['userinfo', /(?<username>[a-z]\w+)/i],
285
- {action: @app.instance_method(:POST_userinfo__re_username), options: {}} ]]
282
+ expect( @app.routes ).to eq([
283
+ [ :POST, ['userinfo', /(?<username>[a-z]\w+)/i],
284
+ {action: @app.instance_method(:POST_userinfo__re_username), options: {}} ]
285
+ ])
286
286
  end
287
287
 
288
288
  it "merges parameters from the route path into the request's param validator" do
@@ -295,7 +295,7 @@ describe Strelka::App::Routing do
295
295
  req = @request_factory.get( '/userinfo/benthik' )
296
296
  @app.new.handle( req )
297
297
 
298
- req.params[:username].should == 'benthik'
298
+ expect( req.params[:username] ).to eq( 'benthik' )
299
299
  end
300
300
 
301
301
 
@@ -1,15 +1,9 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
- BEGIN {
4
- require 'pathname'
5
- basedir = Pathname.new( __FILE__ ).dirname.parent.parent.parent
6
- $LOAD_PATH.unshift( basedir ) unless $LOAD_PATH.include?( basedir )
7
- }
3
+ require_relative '../../helpers'
8
4
 
9
5
  require 'rspec'
10
6
 
11
- require 'spec/lib/helpers'
12
-
13
7
  require 'strelka'
14
8
  require 'strelka/plugins'
15
9
  require 'strelka/app/sessions'
@@ -33,7 +27,7 @@ describe Strelka::App::Sessions do
33
27
  end
34
28
 
35
29
 
36
- it_should_behave_like( "A Strelka::App Plugin" )
30
+ it_should_behave_like( "A Strelka Plugin" )
37
31
 
38
32
 
39
33
  describe "session-class loading" do
@@ -49,12 +43,12 @@ describe Strelka::App::Sessions do
49
43
 
50
44
  it "has a default associated session class" do
51
45
  Strelka::App::Sessions.configure
52
- Strelka::App::Sessions.session_class.should be( Strelka::Session::Default )
46
+ expect( Strelka::App::Sessions.session_class ).to be( Strelka::Session::Default )
53
47
  end
54
48
 
55
49
  it "is can be configured to use a different session class" do
56
50
  Strelka::App::Sessions.configure( :session_class => 'testing' )
57
- Strelka::App::Sessions.session_class.should == @test_session_class
51
+ expect( Strelka::App::Sessions.session_class ).to eq( @test_session_class )
58
52
  end
59
53
 
60
54
  end
@@ -103,11 +97,11 @@ describe Strelka::App::Sessions do
103
97
  @app.session_namespace :indian_gurbles
104
98
  subclass = Class.new( @app )
105
99
 
106
- subclass.session_namespace.should == @app.session_namespace
100
+ expect( subclass.session_namespace ).to eq( @app.session_namespace )
107
101
  end
108
102
 
109
103
  it "has a default session key that's the same as its appid" do
110
- @app.session_namespace.should == @app.default_appid
104
+ expect( @app.session_namespace ).to eq( @app.default_appid )
111
105
  end
112
106
 
113
107
  it "can set its session namespace to something else" do
@@ -115,25 +109,25 @@ describe Strelka::App::Sessions do
115
109
  session_namespace :findizzle
116
110
  end
117
111
 
118
- @app.session_namespace.should == :findizzle
112
+ expect( @app.session_namespace ).to eq( :findizzle )
119
113
  end
120
114
 
121
115
  it "extends the request and response classes" do
122
116
  @app.install_plugins
123
- Strelka::HTTPRequest.should < Strelka::HTTPRequest::Session
124
- Strelka::HTTPResponse.should < Strelka::HTTPResponse::Session
117
+ expect( Strelka::HTTPRequest ).to be < Strelka::HTTPRequest::Session
118
+ expect( Strelka::HTTPResponse ).to be < Strelka::HTTPResponse::Session
125
119
  end
126
120
 
127
121
  it "sets the session namespace on requests" do
128
122
  req = @request_factory.get( '/foom' )
129
123
  res = @app.new.handle( req )
130
- req.session_namespace.should == @app.default_appid
124
+ expect( req.session_namespace ).to eq( @app.default_appid )
131
125
  end
132
126
 
133
127
  it "saves the session automatically" do
134
128
  req = @request_factory.get( '/foom' )
135
129
  res = @app.new.handle( req )
136
- res.cookies.should include( Strelka::Session::Default.cookie_name )
130
+ expect( res.cookies ).to include( Strelka::Session::Default.cookie_name )
137
131
  end
138
132
 
139
133
  end
@@ -2,17 +2,11 @@
2
2
  # vim: set nosta noet ts=4 sw=4:
3
3
  # encoding: utf-8
4
4
 
5
- BEGIN {
6
- require 'pathname'
7
- basedir = Pathname.new( __FILE__ ).dirname.parent.parent.parent
8
- $LOAD_PATH.unshift( basedir ) unless $LOAD_PATH.include?( basedir )
9
- }
5
+ require_relative '../../helpers'
10
6
 
11
7
  require 'rspec'
12
8
  require 'inversion'
13
9
 
14
- require 'spec/lib/helpers'
15
-
16
10
  require 'strelka'
17
11
  require 'strelka/plugins'
18
12
  require 'strelka/app/templating'
@@ -38,7 +32,7 @@ describe Strelka::App::Templating do
38
32
  end
39
33
 
40
34
 
41
- it_should_behave_like( "A Strelka::App Plugin" )
35
+ it_should_behave_like( "A Strelka Plugin" )
42
36
 
43
37
 
44
38
  describe "template discovery" do
@@ -55,27 +49,28 @@ describe Strelka::App::Templating do
55
49
  specs[:karate] = make_gemspec( 'karate', '1.0.0', false )
56
50
  specs[:javelin] = make_gemspec( 'javelin', '1.0.0' )
57
51
 
58
- expectation = Gem::Specification.should_receive( :each )
59
- specs.values.each {|spec| expectation.and_yield(spec) }
52
+ expect( Gem::Specification ).to receive( :each ).once do |&block|
53
+ specs.values.each {|spec| block.call(spec) }
54
+ end
60
55
 
61
56
  gymnastics_path = specs[:gymnastics].full_gem_path
62
57
  cycling_path = specs[:cycling_new].full_gem_path
63
58
  javelin_path = specs[:javelin].full_gem_path
64
59
 
65
- Dir.should_receive( :glob ).with( 'data/*/templates' ).
60
+ expect( Dir ).to receive( :glob ).with( 'data/*/templates' ).
66
61
  and_return([ "data/foom/templates" ])
67
- Dir.should_receive( :glob ).with( "#{javelin_path}/data/javelin/templates" ).
62
+ expect( Dir ).to receive( :glob ).with( "#{javelin_path}/data/javelin/templates" ).
68
63
  and_return([ "#{javelin_path}/data/javelin/templates" ])
69
- Dir.should_receive( :glob ).with( "#{gymnastics_path}/data/gymnastics/templates" ).
64
+ expect( Dir ).to receive( :glob ).with( "#{gymnastics_path}/data/gymnastics/templates" ).
70
65
  and_return([ "#{gymnastics_path}/data/gymnastics/templates" ])
71
66
 
72
- Dir.should_receive( :glob ).with( "#{cycling_path}/data/cycling/templates" ).
67
+ expect( Dir ).to receive( :glob ).with( "#{cycling_path}/data/cycling/templates" ).
73
68
  and_return([])
74
69
 
75
70
  template_dirs = described_class.discover_template_dirs
76
71
 
77
- # template_dirs.should have( 4 ).members
78
- template_dirs.should include(
72
+ expect( template_dirs ).to have( 3 ).pathnames
73
+ expect( template_dirs ).to include(
79
74
  Pathname("data/foom/templates"),
80
75
  Pathname("#{javelin_path}/data/javelin/templates"),
81
76
  Pathname("#{gymnastics_path}/data/gymnastics/templates")
@@ -88,22 +83,23 @@ describe Strelka::App::Templating do
88
83
  specs[:gymnastics] = make_gemspec( 'gymnastics', '1.0.0' )
89
84
  specs[:javelin] = make_gemspec( 'javelin', '1.0.0' )
90
85
 
91
- expectation = Gem::Specification.should_receive( :each )
92
- specs.values.each {|spec| expectation.and_yield(spec) }
86
+ expect( Gem::Specification ).to receive( :each ).once do |&block|
87
+ specs.values.each {|spec| block.call(spec) }
88
+ end
93
89
 
94
90
  gymnastics_path = specs[:gymnastics].full_gem_path
95
91
  javelin_path = specs[:javelin].full_gem_path
96
92
 
97
- Dir.should_receive( :glob ).with( 'data/*/templates' ).
93
+ expect( Dir ).to receive( :glob ).with( 'data/*/templates' ).
98
94
  and_return([ "data/foom/templates" ])
99
- Dir.should_receive( :glob ).with( "#{javelin_path}/data/javelin/templates" ).
95
+ expect( Dir ).to receive( :glob ).with( "#{javelin_path}/data/javelin/templates" ).
100
96
  and_return([ "#{javelin_path}/data/javelin/templates" ])
101
- Dir.should_receive( :glob ).with( "#{gymnastics_path}/data/gymnastics/templates" ).
97
+ expect( Dir ).to receive( :glob ).with( "#{gymnastics_path}/data/gymnastics/templates" ).
102
98
  and_return([ "#{gymnastics_path}/data/gymnastics/templates" ])
103
99
 
104
100
  Module.new { include Strelka::App::Templating }
105
101
 
106
- Inversion::Template.template_paths.should include(
102
+ expect( Inversion::Template.template_paths ).to include(
107
103
  Pathname("data/foom/templates"),
108
104
  Pathname("#{javelin_path}/data/javelin/templates"),
109
105
  Pathname("#{gymnastics_path}/data/gymnastics/templates")
@@ -133,14 +129,14 @@ describe Strelka::App::Templating do
133
129
  @app.layout 'layout.tmpl'
134
130
  subclass = Class.new( @app )
135
131
 
136
- subclass.template_map.should == @app.template_map
137
- subclass.template_map.should_not equal( @app.template_map )
138
- subclass.layout_template.should == @app.layout_template
139
- subclass.layout_template.should_not equal( @app.layout_template )
132
+ expect( subclass.template_map ).to eq( @app.template_map )
133
+ expect( subclass.template_map ).to_not equal( @app.template_map )
134
+ expect( subclass.layout_template ).to eq( @app.layout_template )
135
+ expect( subclass.layout_template ).to_not equal( @app.layout_template )
140
136
  end
141
137
 
142
138
  it "has a Hash of templates" do
143
- @app.templates.should be_a( Hash )
139
+ expect( @app.templates ).to be_a( Hash )
144
140
  end
145
141
 
146
142
  it "can add templates that it wants to use to its templates hash" do
@@ -148,7 +144,7 @@ describe Strelka::App::Templating do
148
144
  templates :main => 'main.tmpl'
149
145
  end
150
146
 
151
- @app.templates.should == { :main => 'main.tmpl' }
147
+ expect( @app.templates ).to eq( { :main => 'main.tmpl' } )
152
148
  end
153
149
 
154
150
  it "can declare a layout template" do
@@ -156,7 +152,7 @@ describe Strelka::App::Templating do
156
152
  layout 'layout.tmpl'
157
153
  end
158
154
 
159
- @app.layout.should == 'layout.tmpl'
155
+ expect( @app.layout ).to eq( 'layout.tmpl' )
160
156
  end
161
157
 
162
158
  describe "instance" do
@@ -178,7 +174,7 @@ describe Strelka::App::Templating do
178
174
 
179
175
 
180
176
  it "can load declared templates by mentioning the symbol" do
181
- @app.new.template( :main ).should be_a( Inversion::Template )
177
+ expect( @app.new.template( :main ) ).to be_a( Inversion::Template )
182
178
  end
183
179
 
184
180
  it "can respond with just a template name" do
@@ -191,8 +187,8 @@ describe Strelka::App::Templating do
191
187
  res = @app.new.handle( @req )
192
188
 
193
189
  res.body.rewind
194
- res.body.read.should == "A template for testing the Templating plugin.\n"
195
- res.status.should == 200
190
+ expect( res.body.read ).to eq( "A template for testing the Templating plugin.\n" )
191
+ expect( res.status ).to eq( 200 )
196
192
  end
197
193
 
198
194
  it "can respond with just a template instance" do
@@ -205,8 +201,8 @@ describe Strelka::App::Templating do
205
201
  res = @app.new.handle( @req )
206
202
 
207
203
  res.body.rewind
208
- res.body.read.should == "A template for testing the Templating plugin.\n"
209
- res.status.should == 200
204
+ expect( res.body.read ).to eq( "A template for testing the Templating plugin.\n" )
205
+ expect( res.status ).to eq( 200 )
210
206
  end
211
207
 
212
208
  it "can respond with a Mongrel2::HTTPResponse with a template instance as its body" do
@@ -223,8 +219,8 @@ describe Strelka::App::Templating do
223
219
  res = @app.new.handle( @req )
224
220
 
225
221
  res.body.rewind
226
- res.body.read.should == "A template for testing the Templating plugin.\n"
227
- res.status.should == 200
222
+ expect( res.body.read ).to eq( "A template for testing the Templating plugin.\n" )
223
+ expect( res.status ).to eq( 200 )
228
224
  end
229
225
 
230
226
 
@@ -245,9 +241,9 @@ describe Strelka::App::Templating do
245
241
  res = @app.new.handle( @req )
246
242
 
247
243
  res.body.rewind
248
- res.body.read.should == "A minimal layout template.\n" +
249
- "A template for testing the Templating plugin.\n\n"
250
- res.status.should == 200
244
+ expect( res.body.read ).to eq( "A minimal layout template.\n" +
245
+ "A template for testing the Templating plugin.\n\n" )
246
+ expect( res.status ).to eq( 200 )
251
247
  end
252
248
 
253
249
  it "doesn't wrap the layout around non-template responses" do
@@ -267,7 +263,7 @@ describe Strelka::App::Templating do
267
263
  res = @app.new.handle( @req )
268
264
 
269
265
  res.body.rewind
270
- res.body.read.should == "A template for testing the Templating plugin.\n"
266
+ expect( res.body.read ).to eq( "A template for testing the Templating plugin.\n" )
271
267
  end
272
268
 
273
269
  end