remarkable_rails 3.0.5 → 3.0.6

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGELOG CHANGED
@@ -1,6 +1,23 @@
1
- [TODO] Port views matchers from rspec to Remarkable to provide I18n.
2
-
3
- # v3.0.0
1
+ * Added set_cookies matcher [#51]
2
+
3
+ * Add a helper to declare that a XmlHttpRequest should be performed:
4
+
5
+ describe :get => :show do
6
+ xhr!
7
+
8
+ * Macro stubs now supports blocks too [#50]
9
+
10
+ expects :human_attribute_name, :on => Project, :with => :title do |attr|
11
+ attr.to_s.humanize
12
+ end
13
+
14
+ * :to option in set_session and set_the_flash now accepts Regexp [#46]
15
+
16
+ * render_template now works with partials [#43]
17
+
18
+ * Added to support for routing example group (inside spec/routing) [#26]
19
+
20
+ # v3.0
4
21
 
5
22
  [ENHANCEMENT] redirect_to and render_template were ported from rspec-rails to
6
23
  remarkable to provide I18n. The second was also extended to deal with :with,
@@ -62,15 +62,20 @@ module Remarkable
62
62
  #
63
63
  # You don't have to play with proc all the time. You can call mock_models which
64
64
  # creates a class method that simply returns a proc and a instance method that
65
- # do the actual mock. In other words, it creates:
66
- #
67
- # def self.mock_project
68
- # proc { mock_project }
69
- # end
65
+ # do the actual mock.
66
+ #
67
+ # describe ProjectsController do
68
+ # mock_models :project
69
+ #
70
+ # And it creates:
71
+ #
72
+ # def self.mock_project
73
+ # proc { mock_project }
74
+ # end
70
75
  #
71
- # def mock_project(stubs={})
72
- # @project ||= mock_model(Project, stubs)
73
- # end
76
+ # def mock_project(stubs={})
77
+ # @project ||= mock_model(Project, stubs)
78
+ # end
74
79
  #
75
80
  # Then you can replace those lines:
76
81
  #
@@ -84,13 +89,12 @@ module Remarkable
84
89
  #
85
90
  # = Give me more!
86
91
  #
87
- # If you need to specify the describe description, you can also do:
92
+ # If you need to set the example group description, you can also call <tt>get</tt>,
93
+ # <tt>post</tt>, <tt>put</tt> and <tt>delete</tt> methods:
88
94
  #
89
95
  # describe 'my description' do
90
96
  # get :show, :id => 37
91
97
  #
92
- # Which is the same as above.
93
- #
94
98
  # Things start to get even better when we start to talk about nested resources.
95
99
  # After our ProjectsController is created, we want to create a TasksController:
96
100
  #
@@ -112,9 +116,8 @@ module Remarkable
112
116
  # As you noticed, you can define parameters that will be available to all requests,
113
117
  # using the method <tt>params</tt>.
114
118
  #
115
- # Finally, if you used expects chain like above, but need to write a spec by
116
- # hand you can invoke the action and expectations with run_expectations!,
117
- # run_stubs! and run_action!. Examples:
119
+ # Finally if you need to write a spec by hand, you can invoke the action and
120
+ # expectations with run_action!, run_expectations! and run_stubs!. Examples:
118
121
  #
119
122
  # describe :get => :new do
120
123
  # expects :new, :on => Project, :returns => mock_project
@@ -127,8 +130,8 @@ module Remarkable
127
130
  #
128
131
  # = Performance!
129
132
  #
130
- # Remarkable comes with a new way to speed up your tests. It perform the action
131
- # inside a before(:all), so you can do:
133
+ # Remarkable comes with a new way to speed up your tests. It performs the
134
+ # action inside a before(:all), so you can do:
132
135
  #
133
136
  # describe "responding to GET show" do
134
137
  # get! :show, :id => 37
@@ -141,17 +144,16 @@ module Remarkable
141
144
  #
142
145
  # describe :get! => :show, :id => 37
143
146
  #
144
- # The action will be performed just once before asserting the assignment and
145
- # the template. If any error happens while performing the action rspec will
146
- # output an error but ALL the examples inside the example group (describe) won't
147
- # be run.
147
+ # The action will be performed just once before running the macros. If any
148
+ # error happens while performing the action, rspec will output an error
149
+ # but ALL the examples inside the example group (describe) won't be run.
148
150
  #
149
- # By now, the bang methods works only when integrate_views are true and this is
150
- # when you must have the bigger performance gain.
151
+ # By now, the bang methods works only when integrate_views is true and this
152
+ # is when you must see a bigger performance gain.
151
153
  #
152
- # This comes with some rspec and rspec rails tweakings. So if you want to do
153
- # something before the action is performed (stubs something or log someone in
154
- # session), you have to do it giving a block to the action method:
154
+ # This feature comes with some rspec and rspec rails tweakings. So if you want
155
+ # to do something before the action is performed (stubs something or log
156
+ # someone in session), you have to do it giving a block to the action method:
155
157
  #
156
158
  # get! :show, :id => 37 do
157
159
  # login_as(mock_user)
@@ -171,13 +173,15 @@ module Remarkable
171
173
  def self.included(base) #:nodoc:
172
174
  base.extend ClassMethods
173
175
  base.class_inheritable_reader :expects_chain, :default_action, :default_mime,
174
- :default_verb, :default_params, :before_all_block
176
+ :default_verb, :default_params, :default_xhr,
177
+ :before_all_block
175
178
  end
176
179
 
177
180
  module ClassMethods
178
181
 
179
182
  # Creates a chain that will be evaluated as stub or expectation. The
180
- # first parameter is the method expected.
183
+ # first parameter is the method expected. Also, a block can be given
184
+ # to calculate the returned value. See examples below.
181
185
  #
182
186
  # == Options
183
187
  #
@@ -195,10 +199,14 @@ module Remarkable
195
199
  #
196
200
  # == Example
197
201
  #
198
- # expects :new, :on => Project, :returns => :mock_project, :times => 2
202
+ # expects :new, :on => Project, :returns => :mock_project, :times => 2
203
+ #
204
+ # expects :human_attribute_name, :on => Project, :with => :title do |attr|
205
+ # attr.to_s.humanize
206
+ # end
199
207
  #
200
- def expects(*args)
201
- write_inheritable_array(:expects_chain, [args])
208
+ def expects(*args, &block)
209
+ write_inheritable_array(:expects_chain, [args << block])
202
210
  end
203
211
 
204
212
  # The mime type of the request. The value given will be called transformed
@@ -227,6 +235,18 @@ module Remarkable
227
235
  #
228
236
  def params(params)
229
237
  write_inheritable_hash(:default_params, params)
238
+ end
239
+
240
+ # Sets the request to perform a XmlHttpRequest.
241
+ #
242
+ # == Examples
243
+ #
244
+ # describe TasksController do
245
+ # xhr!
246
+ # end
247
+ #
248
+ def xhr!(bool=true)
249
+ write_inheritable_attribute(:default_xhr, bool)
230
250
  end
231
251
 
232
252
  [:get, :post, :put, :delete].each do |verb|
@@ -413,7 +433,7 @@ module Remarkable
413
433
  def evaluate_expectation_chain(use_expectations=true) #:nodoc:
414
434
  return if self.expects_chain.nil?
415
435
 
416
- self.expects_chain.each do |method, default_options|
436
+ self.expects_chain.each do |method, default_options, block|
417
437
  options = default_options.dup
418
438
 
419
439
  # Those are used both in expectations and stubs
@@ -423,16 +443,18 @@ module Remarkable
423
443
  raise ScriptError, "You have to give me :on as an option when calling :expects." if object.nil?
424
444
 
425
445
  if use_expectations
426
- with = evaluate_value(options.delete(:with))
427
- times = options.delete(:times) || 1
428
-
429
446
  chain = object.should_receive(method)
430
- chain = chain.with(with) if with
431
- chain = chain.exactly(times).times
447
+ chain = chain.with(evaluate_value(options.delete(:with))) if options.key?(:with)
448
+ chain = chain.exactly(options.delete(:times) || 1).times
432
449
  else
433
450
  chain = object.stub!(method)
451
+ end
452
+
453
+ chain = if block
454
+ chain.and_return(&block)
455
+ else
456
+ chain.and_return(return_value)
434
457
  end
435
- chain = chain.and_return(return_value)
436
458
  end
437
459
  end
438
460
 
@@ -456,10 +478,11 @@ module Remarkable
456
478
  #
457
479
  # The first parameter is if you want to run expectations or stubs. You
458
480
  # can also supply the verb (get, post, put or delete), which action to
459
- # call, parameters and the mime type. If any of those parameters are
460
- # supplied, they override the current definition.
481
+ # call, parameters, the mime type and if a xhr should be performed. If
482
+ # any of those parameters are supplied, they override the current
483
+ # definition.
461
484
  #
462
- def run_action!(use_expectations=true, verb=nil, action=nil, params=nil, mime=nil)
485
+ def run_action!(use_expectations=true, verb=nil, action=nil, params=nil, mime=nil, xhr=nil)
463
486
  return false if controller.send(:performed?)
464
487
 
465
488
  evaluate_expectation_chain(use_expectations)
@@ -467,11 +490,13 @@ module Remarkable
467
490
  mime ||= default_mime
468
491
  verb ||= default_verb
469
492
  action ||= default_action
470
- params ||= default_params
493
+ params ||= default_params
494
+ xhr ||= default_xhr
471
495
 
472
496
  raise ScriptError, "No action was performed or declared." unless verb && action
473
497
 
474
- request.env["HTTP_ACCEPT"] ||= mime.to_s if mime
498
+ request.env["HTTP_ACCEPT"] ||= mime.to_s if mime
499
+ request.env['HTTP_X_REQUESTED_WITH'] = 'XMLHttpRequest' if xhr
475
500
  send(verb, action, params)
476
501
  end
477
502
 
@@ -0,0 +1,76 @@
1
+ require File.join(File.dirname(__FILE__), 'set_cookies_matcher')
2
+
3
+ module Remarkable
4
+ module ActionController
5
+ module Matchers
6
+ class SetCookiesMatcher < SetSessionMatcher #:nodoc:
7
+
8
+ # For cookies to work properly, we have:
9
+ #
10
+ # On Rails 2.1.2 and 2.2.2:
11
+ #
12
+ # 1. Wrap :to values in an array;
13
+ # 2. When :to is false or nil, make it be an empty array;
14
+ # 3. Convert all keys to string.
15
+ #
16
+ # On Rails 2.3.2:
17
+ #
18
+ # 1. Convert :to values to string, unless it's nil
19
+ # 2. Convert all keys to string.
20
+ #
21
+ before_assert do
22
+ if @subject.request.env.key?("rack.input")
23
+ @options[:to] = @options[:to].to_s if @options.key?(:to) && !@options[:to].nil?
24
+ else
25
+ @options[:to] = @options[:to] ? [@options[:to]] : [] if @options.key?(:to)
26
+ end
27
+
28
+ @keys.collect!(&:to_s)
29
+ end
30
+
31
+ protected
32
+ def session
33
+ @subject ? (@subject.response.cookies || {}) : {}
34
+ end
35
+
36
+ def interpolation_options
37
+ { :cookies_inspect => session.symbolize_keys!.inspect }
38
+ end
39
+
40
+ end
41
+
42
+ # Ensures that the given cookie keys were set. If you want to check that
43
+ # a cookie is not being set, just do:
44
+ #
45
+ # should_not_set_cookies :user
46
+ #
47
+ # If you want to assure that a cookie is being set to nil, do instead:
48
+ #
49
+ # should_set_cookies :user, :to => nil
50
+ #
51
+ # Note: this method is also aliased as <tt>set_cookie</tt>.
52
+ #
53
+ # == Options
54
+ #
55
+ # * <tt>:to</tt> - The value to compare the session key.
56
+ # It accepts procs and be also given as a block (see examples below).
57
+ #
58
+ # == Examples
59
+ #
60
+ # should_set_cookies :user_id, :user
61
+ # should_set_cookies :user_id, :to => 2
62
+ # should_set_cookies :user, :to => proc{ users(:first) }
63
+ # should_set_cookies(:user){ users(:first) }
64
+ #
65
+ # it { should set_cookies(:user_id, :user) }
66
+ # it { should set_cookies(:user_id, :to => 2) }
67
+ # it { should set_cookies(:user, :to => users(:first)) }
68
+ #
69
+ def set_cookies(*args, &block)
70
+ SetCookiesMatcher.new(*args, &block).spec(self)
71
+ end
72
+ alias :set_cookie :set_cookies
73
+
74
+ end
75
+ end
76
+ end
@@ -34,7 +34,7 @@ module Remarkable
34
34
  assert_contains(session.values, @options[:to])
35
35
  end
36
36
 
37
- def assigned_value?
37
+ def assigned_value?
38
38
  session.key?(@key)
39
39
  end
40
40
 
@@ -74,14 +74,14 @@ module Remarkable
74
74
 
75
75
  end
76
76
 
77
- # Ensures that a session keys were set. If you want to check that a variable
78
- # is not being set, please do:
77
+ # Ensures that the given session keys were set. If you want to check that
78
+ # a variable is not being set, just do:
79
79
  #
80
- # should_not_set_session(:user)
80
+ # should_not_set_session :user
81
81
  #
82
82
  # If you want to assure that a variable is being set to nil, do instead:
83
83
  #
84
- # should_set_session(:user).to(nil)
84
+ # should_set_session :user, :to => nil
85
85
  #
86
86
  # == Options
87
87
  #
@@ -16,18 +16,19 @@ module Remarkable
16
16
 
17
17
  end
18
18
 
19
- # Ensures that a session keys were set. If you want to check that a flash
20
- # is not being set, please do:
19
+ # Ensures that a flash message is being set. If you want to check that a
20
+ # flash is not being set, just do:
21
21
  #
22
- # should_not_set_the_flash(:user)
22
+ # should_not_set_the_flash :user
23
23
  #
24
24
  # If you want to assure that a flash is being set to nil, do instead:
25
25
  #
26
- # should_set_the_flash(:user).to(nil)
26
+ # should_set_the_flash :user, :to => nil
27
27
  #
28
28
  # == Options
29
29
  #
30
- # * <tt>:to</tt> - The value to compare the flash key. It accepts procs and can also be given as a block (see examples below)
30
+ # * <tt>:to</tt> - The value to compare the flash key.
31
+ # It accepts procs and can also be given as a block (see examples below)
31
32
  #
32
33
  # == Examples
33
34
  #
data/locale/en.yml CHANGED
@@ -2,7 +2,7 @@ en:
2
2
  remarkable:
3
3
  action_controller:
4
4
  responding: "responding to #{{verb}} {{action}}"
5
- mime_type: "with {{format}}"
5
+ mime_type: "with {{format}}"
6
6
 
7
7
  assign_to:
8
8
  description: "assign {{names}}"
@@ -12,13 +12,13 @@ en:
12
12
  is_equal_value: "assign {{name}} to be equal to {{with}}, got {{assign_inspect}}"
13
13
  optionals:
14
14
  with_kind_of:
15
- positive: "with kind of {{value}}"
15
+ positive: "with kind of {{value}}"
16
16
 
17
17
  filter_params:
18
18
  description: "filter {{params}} parameters from log"
19
19
  expectations:
20
20
  respond_to_filter_params: "controller to respond to filter_parameters (controller is not filtering any parameter)"
21
- is_filtered: "{{param}} to be filtered, got no filtering"
21
+ is_filtered: "{{param}} to be filtered, got no filtering"
22
22
 
23
23
  redirect_to:
24
24
  description: "redirect to {{expected}}"
@@ -28,7 +28,7 @@ en:
28
28
  url_matches: "redirect to {{expected}}, got redirect to {{actual}}"
29
29
  optionals:
30
30
  with:
31
- positive: "with status {{inspect}}"
31
+ positive: "with status {{inspect}}"
32
32
 
33
33
  render_template:
34
34
  description: "render"
@@ -50,7 +50,7 @@ en:
50
50
  body:
51
51
  positive: "with body {{inspect}}"
52
52
  content_type:
53
- positive: "with content type {{inspect}}"
53
+ positive: "with content type {{inspect}}"
54
54
 
55
55
  respond_with:
56
56
  description: "respond"
@@ -64,13 +64,25 @@ en:
64
64
  body:
65
65
  positive: "with body {{inspect}}"
66
66
  content_type:
67
- positive: "with content type {{inspect}}"
67
+ positive: "with content type {{inspect}}"
68
68
 
69
69
  route:
70
70
  description: "route {{method}} {{path}} to/from {{options}}"
71
71
  expectations:
72
72
  map_to_path: "to map {{options}} to {{method}} {{path}}, got {{actual}}"
73
- generate_params: "to generate params {{options}} from {{method}} {{path}}, got {{actual}}"
73
+ generate_params: "to generate params {{options}} from {{method}} {{path}}, got {{actual}}"
74
+
75
+ set_cookies:
76
+ description: "set cookies {{keys}}"
77
+ expectations:
78
+ is_not_empty: "any cookie to be set, got {{cookies_inspect}}"
79
+ contains_value: "any cookie to be set to {{to}}, got {{cookies_inspect}}"
80
+ assigned_value: "cookie {{key}} to be set, got {{cookies_inspect}}"
81
+ is_equal_value: "cookie {{key}} to be set to {{to}}, got {{cookies_inspect}}"
82
+ optionals:
83
+ to:
84
+ positive: "to {{inspect}}"
85
+ negative: "to {{inspect}}"
74
86
 
75
87
  set_session:
76
88
  description: "set session variable {{keys}}"
@@ -82,6 +94,7 @@ en:
82
94
  optionals:
83
95
  to:
84
96
  positive: "to {{inspect}}"
97
+ negative: "to {{inspect}}"
85
98
 
86
99
  set_the_flash:
87
100
  description: "set the flash message {{keys}}"
@@ -92,4 +105,6 @@ en:
92
105
  is_equal_value: "flash message {{key}} to be set to {{to}}, got {{flash_inspect}}"
93
106
  optionals:
94
107
  to:
95
- positive: "to {{inspect}}"
108
+ positive: "to {{inspect}}"
109
+ negative: "to {{inspect}}"
110
+
@@ -154,10 +154,18 @@ describe 'MacroStubs' do
154
154
 
155
155
  [:delete, :delete!].each do |method|
156
156
 
157
- describe method => :destroy, :id => 37 do
158
- expects :find, :on => Task, :with => '37', :returns => mock_task
159
- expects :destroy, :on => mock_task
160
-
157
+ describe method => :destroy, :id => '37' do
158
+ expects :find, :on => Task, :with => '37', :returns => mock_task
159
+ expects :destroy, :on => mock_task
160
+ expects :title, :on => mock_task, :with => false do |boolean|
161
+ if boolean
162
+ 'This should not appear'
163
+ else
164
+ 'My favourite task'
165
+ end
166
+ end
167
+
168
+ xhr!
161
169
  subject { controller }
162
170
 
163
171
  should_assign_to :task
@@ -166,7 +174,7 @@ describe 'MacroStubs' do
166
174
 
167
175
  should_set_the_flash
168
176
  should_set_the_flash :notice
169
- should_set_the_flash :notice, :to => 'Task deleted.'
177
+ should_set_the_flash :notice, :to => %{"My favourite task" was removed}
170
178
 
171
179
  should_set_session
172
180
  should_set_session :last_task_id
@@ -187,6 +195,11 @@ describe 'MacroStubs' do
187
195
 
188
196
  it 'should provide a description based on parameters given in describe' do
189
197
  self.class.description.should =~ /responding to #DELETE destroy$/
198
+ end
199
+
200
+ it 'should perform a XmlHttpRequest' do
201
+ run_action!
202
+ request.env['HTTP_X_REQUESTED_WITH'].should == 'XMLHttpRequest'
190
203
  end
191
204
  end
192
205
 
@@ -0,0 +1,150 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
2
+
3
+ describe 'set_cookies' do
4
+ include FunctionalBuilder
5
+
6
+ describe 'messages' do
7
+ before(:each) do
8
+ @matcher = set_cookies(:user).to(1)
9
+ end
10
+
11
+ it 'should contain a description message' do
12
+ @matcher = set_cookies(:user)
13
+ @matcher.description.should == 'set cookies user'
14
+
15
+ @matcher.to(1)
16
+ @matcher.description.should == 'set cookies user to 1'
17
+ end
18
+
19
+ it 'should set is_not_empty? message' do
20
+ build_response
21
+ @matcher = set_cookies
22
+ @matcher.matches?(@controller)
23
+ @matcher.failure_message.should == 'Expected any cookie to be set, got {}'
24
+ end
25
+
26
+ it 'should set assigned_value? message' do
27
+ build_response
28
+ @matcher = set_cookies(:user)
29
+ @matcher.matches?(@controller)
30
+ @matcher.failure_message.should == 'Expected cookie user to be set, got {}'
31
+ end
32
+
33
+ if RAILS_VERSION =~ /^2.1/ || RAILS_VERSION =~ /^2.2/
34
+ it 'should set contains_value? message' do
35
+ build_response { cookies[:user] = 10 }
36
+ @matcher = set_cookies.to(1)
37
+ @matcher.matches?(@controller)
38
+ @matcher.failure_message.should == 'Expected any cookie to be set to [1], got {:user=>[10]}'
39
+ end
40
+
41
+ it 'should set is_equal_value? message' do
42
+ build_response { cookies[:user] = 2 }
43
+ @matcher.matches?(@controller)
44
+ @matcher.failure_message.should == 'Expected cookie user to be set to [1], got {:user=>[2]}'
45
+ end
46
+ else
47
+ it 'should set contains_value? message' do
48
+ build_response { cookies[:user] = 10 }
49
+ @matcher = set_cookies.to(1)
50
+ @matcher.matches?(@controller)
51
+ @matcher.failure_message.should == 'Expected any cookie to be set to "1", got {:user=>"10"}'
52
+ end
53
+
54
+ it 'should set is_equal_value? message' do
55
+ build_response { cookies[:user] = 2 }
56
+ @matcher.matches?(@controller)
57
+ @matcher.failure_message.should == 'Expected cookie user to be set to "1", got {:user=>"2"}'
58
+ end
59
+ end
60
+ end
61
+
62
+ describe 'matcher' do
63
+ before(:each) do
64
+ build_response {
65
+ cookies[:user] = 'jose'
66
+ cookies[:address] = 'Avenue'
67
+ cookies[:true] = true
68
+ cookies[:false] = false
69
+ cookies[:nil] = nil
70
+ }
71
+ end
72
+
73
+ it { should set_cookies }
74
+ it { should set_cookies.to('jose') }
75
+ it { should set_cookies(:user) }
76
+ it { should set_cookies(:user).to('jose') }
77
+
78
+ it { should_not set_cookies.to('joseph') }
79
+ it { should_not set_cookies(:post) }
80
+ it { should_not set_cookies(:user).to('joseph') }
81
+
82
+ it { should set_cookies(:user){ 'jose' } }
83
+ it { should set_cookies(:user, :to => proc{ 'jose' }) }
84
+
85
+ it { should_not set_cookies(:user).to(nil) }
86
+ it { should_not set_cookies(:user){ 'joseph' } }
87
+ it { should_not set_cookies(:user, :to => proc{ 'joseph' }) }
88
+
89
+ it { should set_cookies(:true) }
90
+ it { should set_cookies(:true).to(true) }
91
+ it { should_not set_cookies(:true).to(false) }
92
+
93
+ it { should set_cookies(:false) }
94
+ it { should set_cookies(:false).to(false) }
95
+ it { should_not set_cookies(:false).to(true) }
96
+
97
+ it { should set_cookies(:nil) }
98
+ it { should set_cookies(:nil).to(nil) }
99
+ it { should_not set_cookies(:nil).to(true) }
100
+ end
101
+
102
+ describe 'macro' do
103
+ before(:each) do
104
+ build_response {
105
+ cookies[:user] = 'jose'
106
+ cookies[:address] = 'Avenue'
107
+ cookies[:true] = true
108
+ cookies[:false] = false
109
+ cookies[:nil] = nil
110
+ }
111
+ end
112
+
113
+ should_set_cookies
114
+ should_set_cookies :to => 'jose'
115
+ should_set_cookies :user
116
+ should_set_cookies :user, :to => 'jose'
117
+
118
+ should_not_set_cookies :to => 'joseph'
119
+ should_not_set_cookies :post
120
+ should_not_set_cookies :user, :to => 'joseph'
121
+
122
+ should_set_cookies(:user){ 'jose' }
123
+ should_set_cookies :user, :to => proc{ 'jose' }
124
+
125
+ should_not_set_cookies :user, :to => nil
126
+ should_not_set_cookies(:user){ 'joseph' }
127
+ should_not_set_cookies :user, :to => proc{ 'joseph' }
128
+
129
+ should_set_cookies :true
130
+ should_set_cookies :true, :to => true
131
+ should_not_set_cookies :true, :to => false
132
+
133
+ should_set_cookies :false
134
+ should_set_cookies :false, :to => false
135
+ should_not_set_cookies :false, :to => true
136
+
137
+ should_set_cookies :nil
138
+ should_set_cookies :nil, :to => nil
139
+ should_not_set_cookies :nil, :to => true
140
+ end
141
+
142
+ describe 'with no parameter' do
143
+ before(:each) { build_response }
144
+
145
+ should_not_set_cookies
146
+ it { should_not set_cookies }
147
+ end
148
+
149
+ generate_macro_stubs_specs_for(:set_cookies)
150
+ end
@@ -23,7 +23,7 @@ class TasksController < ApplicationController
23
23
  @task = Task.find(params[:id])
24
24
  @task.destroy
25
25
 
26
- flash[:notice] = 'Task deleted.'
26
+ flash[:notice] = "#{@task.title(false).inspect} was removed"
27
27
  session[:last_task_id] = 37
28
28
 
29
29
  respond_to do |format|
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: remarkable_rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.0.5
4
+ version: 3.0.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Carlos Brando
@@ -10,7 +10,7 @@ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
 
13
- date: 2009-04-20 00:00:00 +02:00
13
+ date: 2009-04-22 00:00:00 +02:00
14
14
  default_executable:
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
@@ -31,7 +31,7 @@ dependencies:
31
31
  requirements:
32
32
  - - ">="
33
33
  - !ruby/object:Gem::Version
34
- version: 3.0.5
34
+ version: 3.0.6
35
35
  version:
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: remarkable_activerecord
@@ -41,7 +41,7 @@ dependencies:
41
41
  requirements:
42
42
  - - ">="
43
43
  - !ruby/object:Gem::Version
44
- version: 3.0.5
44
+ version: 3.0.6
45
45
  version:
46
46
  description: "Remarkable Rails: collection of matchers and macros with I18n for Rails"
47
47
  email:
@@ -74,6 +74,7 @@ files:
74
74
  - lib/remarkable_rails/action_controller/matchers/assign_to_matcher.rb
75
75
  - lib/remarkable_rails/action_controller/matchers/filter_params_matcher.rb
76
76
  - lib/remarkable_rails/action_controller/matchers/redirect_to_matcher.rb
77
+ - lib/remarkable_rails/action_controller/matchers/set_cookies_matcher.rb
77
78
  - lib/remarkable_rails/action_controller/matchers/render_template_matcher.rb
78
79
  - lib/remarkable_rails/action_view.rb
79
80
  - lib/remarkable_rails/action_controller.rb
@@ -121,6 +122,7 @@ test_files:
121
122
  - spec/action_controller
122
123
  - spec/action_controller/macro_stubs_spec.rb
123
124
  - spec/action_controller/assign_to_matcher_spec.rb
125
+ - spec/action_controller/set_cookies_matcher_spec.rb
124
126
  - spec/action_controller/set_session_matcher_spec.rb
125
127
  - spec/action_controller/redirect_to_matcher_spec.rb
126
128
  - spec/action_controller/route_matcher_spec.rb