remarkable_rails 3.1.4 → 3.1.5
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.
- data/CHANGELOG +8 -2
- data/README +7 -7
- data/lib/remarkable_rails/action_controller/base.rb +3 -3
- data/lib/remarkable_rails/action_controller/macro_stubs.rb +26 -30
- data/lib/remarkable_rails/action_controller/matchers/assign_to_matcher.rb +0 -2
- data/spec/action_controller/macro_stubs_spec.rb +25 -17
- data/spec/functional_builder.rb +12 -13
- metadata +4 -4
data/CHANGELOG
CHANGED
@@ -1,3 +1,9 @@
|
|
1
|
+
* [DEPRECATION] By default all matchers perform expectations, use with_stubs => true
|
2
|
+
if you want otherwise.
|
3
|
+
|
4
|
+
* [DEPRECATION] mock_models now creates model_proc instead of mock_model.
|
5
|
+
Altough this won't fire any deprecation warning, all the documentation was changed.
|
6
|
+
|
1
7
|
* assert_valid_keys on expects
|
2
8
|
|
3
9
|
* mock_models now creates a second class method to be used on the index action [#71]
|
@@ -70,10 +76,10 @@ specs for a create action rewritten like this:
|
|
70
76
|
mock_models :task
|
71
77
|
|
72
78
|
describe :post => :create, :task => { :these => 'params' } do
|
73
|
-
expects :new, :on => Task, with => {'these' => 'params'}, :returns =>
|
79
|
+
expects :new, :on => Task, with => {'these' => 'params'}, :returns => task_proc
|
74
80
|
expects :save, :on => mock_task, :returns => true
|
75
81
|
|
76
|
-
should_assign_to :task, :with =>
|
82
|
+
should_assign_to :task, :with => task_proc
|
77
83
|
should_redirect_to { task_url(mock_task) }
|
78
84
|
end
|
79
85
|
end
|
data/README
CHANGED
@@ -65,17 +65,17 @@ An equivalent in remarkable would be:
|
|
65
65
|
mock_models :task
|
66
66
|
|
67
67
|
describe :post => :create, :task => { :these => 'params' } do
|
68
|
-
expects :new, :on => Task, :with => {'these' => 'params'}, :returns =>
|
69
|
-
expects :save, :on =>
|
68
|
+
expects :new, :on => Task, :with => {'these' => 'params'}, :returns => task_proc
|
69
|
+
expects :save, :on => task_proc, :returns => true
|
70
70
|
|
71
|
-
should_assign_to :task, :with =>
|
72
|
-
should_redirect_to { task_url(
|
71
|
+
should_assign_to :task, :with => task_proc
|
72
|
+
should_redirect_to { task_url(task_proc) }
|
73
73
|
end
|
74
74
|
end
|
75
75
|
|
76
|
-
It automatically performs the action before running each macro.
|
77
|
-
|
78
|
-
|
76
|
+
It automatically performs the action before running each macro. It executes the
|
77
|
+
expects as expectations (:should_receive), but you can supply :with_stubs => true
|
78
|
+
if you want it to be executed with stubs.
|
79
79
|
|
80
80
|
There are also params and mime methods:
|
81
81
|
|
@@ -3,10 +3,10 @@ module Remarkable
|
|
3
3
|
class Base < Remarkable::Base
|
4
4
|
|
5
5
|
before_assert :perform_action_with_macro_stubs
|
6
|
-
|
6
|
+
|
7
7
|
optional :with_expectations, :default => true
|
8
8
|
optional :with_stubs, :default => true
|
9
|
-
|
9
|
+
|
10
10
|
protected
|
11
11
|
|
12
12
|
# Before assertions, call run_action! to perform the action if it was
|
@@ -22,7 +22,7 @@ module Remarkable
|
|
22
22
|
elsif @options.key?(:with_expectations)
|
23
23
|
@options[:with_expectations]
|
24
24
|
else
|
25
|
-
|
25
|
+
true
|
26
26
|
end
|
27
27
|
end
|
28
28
|
|
@@ -36,27 +36,16 @@ module Remarkable
|
|
36
36
|
# assigns(:project).should == mock_project
|
37
37
|
# end
|
38
38
|
#
|
39
|
-
#
|
40
|
-
#
|
41
|
-
# it 'should render template show' do
|
42
|
-
# Project.stub!(:find).and_return(mock_project)
|
43
|
-
# get :show, :id => '37'
|
44
|
-
# response.should render_template('show')
|
45
|
-
# end
|
46
|
-
#
|
47
|
-
# Now comes the first question: how each macro knows if they should perform
|
48
|
-
# expectations or stubs?
|
49
|
-
#
|
50
|
-
# By default, only should_assign_to macro performs expectations. You can change
|
39
|
+
# By default, all macros perform expectations. You can change
|
51
40
|
# this behavior sending :with_stubs or :with_expectations as options:
|
52
41
|
#
|
53
42
|
# should_assign_to :project, :with_stubs => true
|
54
|
-
# should_render_template 'show', :with_expectations =>
|
43
|
+
# should_render_template 'show', :with_expectations => false
|
55
44
|
#
|
56
45
|
# This also works in the rspec way:
|
57
46
|
#
|
58
|
-
# it { should assign_to(:project).with_stubs
|
59
|
-
# it { should render_template('show').with_expectations }
|
47
|
+
# it { should assign_to(:project).with_stubs }
|
48
|
+
# it { should render_template('show').with_expectations(false) }
|
60
49
|
#
|
61
50
|
# == Attention!
|
62
51
|
#
|
@@ -84,12 +73,12 @@ module Remarkable
|
|
84
73
|
#
|
85
74
|
# And it creates:
|
86
75
|
#
|
87
|
-
# def self.
|
76
|
+
# def self.project_proc
|
88
77
|
# proc { mock_project }
|
89
78
|
# end
|
90
79
|
#
|
91
80
|
# # To be used on index actions
|
92
|
-
# def self.
|
81
|
+
# def self.projects_proc
|
93
82
|
# proc { [mock_project] }
|
94
83
|
# end
|
95
84
|
#
|
@@ -104,8 +93,8 @@ module Remarkable
|
|
104
93
|
#
|
105
94
|
# For:
|
106
95
|
#
|
107
|
-
# expects :find, :on => Project, :with => '37', :returns =>
|
108
|
-
# should_assign_to :project, :with =>
|
96
|
+
# expects :find, :on => Project, :with => '37', :returns => project_proc
|
97
|
+
# should_assign_to :project, :with => project_proc
|
109
98
|
#
|
110
99
|
# = Give me more!
|
111
100
|
#
|
@@ -122,11 +111,11 @@ module Remarkable
|
|
122
111
|
# params :project_id => '42' #=> define params for all requests
|
123
112
|
#
|
124
113
|
# # Those two expectations get inherited in all describe groups below
|
125
|
-
# expects :find_by_title, :on => Project, :with => '42', :returns =>
|
114
|
+
# expects :find_by_title, :on => Project, :with => '42', :returns => project_proc
|
126
115
|
# expects :tasks, :and_return => Task
|
127
116
|
#
|
128
117
|
# describe :get => :show, :id => '37' do
|
129
|
-
# expects :find, :with => '37', :and_return =>
|
118
|
+
# expects :find, :with => '37', :and_return => task_proc
|
130
119
|
#
|
131
120
|
# should_assign_to :project, :task
|
132
121
|
# should_render_template 'show'
|
@@ -140,7 +129,7 @@ module Remarkable
|
|
140
129
|
# expectations with run_action!, run_expectations! and run_stubs!. Examples:
|
141
130
|
#
|
142
131
|
# describe :get => :new do
|
143
|
-
# expects :new, :on => Project, :returns =>
|
132
|
+
# expects :new, :on => Project, :returns => project_proc
|
144
133
|
#
|
145
134
|
# it "should do something different" do
|
146
135
|
# run_action!
|
@@ -223,9 +212,9 @@ module Remarkable
|
|
223
212
|
#
|
224
213
|
# == Example
|
225
214
|
#
|
226
|
-
# expects :new, :on => Project, :returns => :
|
215
|
+
# expects :new, :on => Project, :returns => :project_proc, :times => 2
|
227
216
|
#
|
228
|
-
# expects :new, :find, :on => Project, :returns => :
|
217
|
+
# expects :new, :find, :on => Project, :returns => :project_proc
|
229
218
|
#
|
230
219
|
# expects :human_attribute_name, :on => Project, :with => :title do |attr|
|
231
220
|
# attr.to_s.humanize
|
@@ -429,12 +418,12 @@ module Remarkable
|
|
429
418
|
#
|
430
419
|
# Will create one instance and two class mock methods for you:
|
431
420
|
#
|
432
|
-
# def self.
|
421
|
+
# def self.project_proc
|
433
422
|
# proc { mock_project }
|
434
423
|
# end
|
435
424
|
#
|
436
425
|
# # To be used on index actions
|
437
|
-
# def self.
|
426
|
+
# def self.projects_procs
|
438
427
|
# proc { [ mock_project ] }
|
439
428
|
# end
|
440
429
|
#
|
@@ -450,11 +439,18 @@ module Remarkable
|
|
450
439
|
options = { :class_method => true }.merge(options)
|
451
440
|
|
452
441
|
models.each do |model|
|
453
|
-
model = model.to_s
|
454
|
-
|
455
|
-
|
456
|
-
|
442
|
+
model = model.to_s
|
443
|
+
if options[:class_method]
|
444
|
+
(class << self; self; end).class_eval <<-METHOD
|
445
|
+
def #{model}_proc; proc { mock_#{model} }; end
|
446
|
+
def #{model.pluralize}_proc; proc { [ mock_#{model} ] }; end
|
447
|
+
|
448
|
+
alias :mock_#{model} :#{model}_proc
|
449
|
+
alias :mock_#{model.pluralize} :#{model.pluralize}_proc
|
450
|
+
METHOD
|
451
|
+
end
|
457
452
|
|
453
|
+
self.class_eval <<-METHOD
|
458
454
|
def mock_#{model}(stubs={})
|
459
455
|
@#{model} ||= mock_model(#{model.classify}, stubs)
|
460
456
|
end
|
@@ -11,21 +11,29 @@ describe 'MacroStubs' do
|
|
11
11
|
|
12
12
|
describe 'mock_models' do
|
13
13
|
before(:each) do
|
14
|
-
self.class.metaclass.send(:undef_method, :
|
15
|
-
self.class.metaclass.send(:undef_method, :
|
14
|
+
self.class.metaclass.send(:undef_method, :projects_proc) if self.class.respond_to?(:projects_proc)
|
15
|
+
self.class.metaclass.send(:undef_method, :project_proc) if self.class.respond_to?(:project_proc)
|
16
16
|
self.class.send(:undef_method, :mock_project) if self.respond_to?(:mock_project)
|
17
17
|
end
|
18
|
+
|
19
|
+
it 'should alias model_proc to mock_model' do
|
20
|
+
self.class.respond_to?(:mock_project).should be_false
|
21
|
+
self.class.respond_to?(:mock_projects).should be_false
|
22
|
+
self.class.mock_models :project
|
23
|
+
self.class.respond_to?(:mock_project).should be_true
|
24
|
+
self.class.respond_to?(:mock_projects).should be_true
|
25
|
+
end
|
18
26
|
|
19
27
|
it 'should create a class singular mock method' do
|
20
|
-
self.class.respond_to?(:
|
28
|
+
self.class.respond_to?(:project_proc).should be_false
|
21
29
|
self.class.mock_models :project
|
22
|
-
self.class.respond_to?(:
|
30
|
+
self.class.respond_to?(:project_proc).should be_true
|
23
31
|
end
|
24
32
|
|
25
33
|
it 'should create a class plural mock method' do
|
26
|
-
self.class.respond_to?(:
|
34
|
+
self.class.respond_to?(:projects_proc).should be_false
|
27
35
|
self.class.mock_models :project
|
28
|
-
self.class.respond_to?(:
|
36
|
+
self.class.respond_to?(:projects_proc).should be_true
|
29
37
|
end
|
30
38
|
|
31
39
|
it 'should create an instance mock method' do
|
@@ -35,15 +43,15 @@ describe 'MacroStubs' do
|
|
35
43
|
end
|
36
44
|
|
37
45
|
it 'should create just an instance method when :class_method is false' do
|
38
|
-
self.class.respond_to?(:
|
46
|
+
self.class.respond_to?(:project_proc).should be_false
|
39
47
|
self.respond_to?(:mock_project).should be_false
|
40
48
|
self.class.mock_models :project, :class_method => false
|
41
|
-
self.class.respond_to?(:
|
49
|
+
self.class.respond_to?(:project_proc).should be_false
|
42
50
|
self.respond_to?(:mock_project).should be_true
|
43
51
|
end
|
44
52
|
|
45
53
|
it 'should create procs which evals to a mock dynamically' do
|
46
|
-
proc = self.class.
|
54
|
+
proc = self.class.task_proc
|
47
55
|
proc.should be_kind_of(Proc)
|
48
56
|
|
49
57
|
@task.should be_nil
|
@@ -52,7 +60,7 @@ describe 'MacroStubs' do
|
|
52
60
|
end
|
53
61
|
|
54
62
|
it 'should create procs which evals to an array of mocks dynamically' do
|
55
|
-
proc = self.class.
|
63
|
+
proc = self.class.tasks_proc
|
56
64
|
proc.should be_kind_of(Proc)
|
57
65
|
|
58
66
|
@task.should be_nil
|
@@ -62,7 +70,7 @@ describe 'MacroStubs' do
|
|
62
70
|
end
|
63
71
|
|
64
72
|
describe 'failures' do
|
65
|
-
expects :find, :on => Task, :with => proc{ current_id }, :returns =>
|
73
|
+
expects :find, :on => Task, :with => proc{ current_id }, :returns => task_proc
|
66
74
|
expects :max, :min, :count, :on => Task, :ordered => true
|
67
75
|
|
68
76
|
get :show, :id => 37
|
@@ -109,7 +117,7 @@ describe 'MacroStubs' do
|
|
109
117
|
end
|
110
118
|
|
111
119
|
describe 'when extending describe group behavior' do
|
112
|
-
expects :find, :on => Task, :with => proc{ current_id }, :returns =>
|
120
|
+
expects :find, :on => Task, :with => proc{ current_id }, :returns => task_proc
|
113
121
|
expects :count, :max, :min, :on => Task
|
114
122
|
|
115
123
|
get :show, :id => 37
|
@@ -176,7 +184,7 @@ describe 'MacroStubs' do
|
|
176
184
|
end
|
177
185
|
|
178
186
|
describe Mime::XML do
|
179
|
-
expects :to_xml, :on =>
|
187
|
+
expects :to_xml, :on => task_proc, :returns => 'XML'
|
180
188
|
|
181
189
|
it 'should provide a description based on the mime given in describe' do
|
182
190
|
self.class.description.should =~ /with xml$/
|
@@ -225,9 +233,9 @@ describe 'MacroStubs' do
|
|
225
233
|
[:delete, :delete!].each do |method|
|
226
234
|
|
227
235
|
describe method => :destroy, :id => '37' do
|
228
|
-
expects :find, :on => Task, :with => '37', :returns =>
|
229
|
-
expects :destroy, :on =>
|
230
|
-
expects :title, :on =>
|
236
|
+
expects :find, :on => Task, :with => '37', :returns => task_proc
|
237
|
+
expects :destroy, :on => task_proc
|
238
|
+
expects :title, :on => task_proc, :with => false do |boolean|
|
231
239
|
if boolean
|
232
240
|
'This should not appear'
|
233
241
|
else
|
@@ -239,7 +247,7 @@ describe 'MacroStubs' do
|
|
239
247
|
subject { controller }
|
240
248
|
|
241
249
|
should_assign_to :task
|
242
|
-
should_assign_to :task, :with =>
|
250
|
+
should_assign_to :task, :with => task_proc
|
243
251
|
should_assign_to :task, :with_kind_of => Task
|
244
252
|
|
245
253
|
should_set_the_flash
|
data/spec/functional_builder.rb
CHANGED
@@ -55,10 +55,9 @@ module FunctionalBuilder
|
|
55
55
|
|
56
56
|
module ClassMethods
|
57
57
|
def generate_macro_stubs_specs_for(matcher, *args)
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
expectations_args = (args << options.merge(:with_expectations => true))
|
58
|
+
expectation_args = args.dup
|
59
|
+
options = args.extract_options!
|
60
|
+
stub_args = (args << options.merge(:with_stubs => true))
|
62
61
|
|
63
62
|
describe 'macro stubs' do
|
64
63
|
before(:each) do
|
@@ -70,21 +69,21 @@ module FunctionalBuilder
|
|
70
69
|
expects :new, :on => String, :with => 'ola', :returns => 'ola'
|
71
70
|
get :new
|
72
71
|
|
73
|
-
it 'should run
|
74
|
-
String.should_receive(:stub!).with(:new).and_return(@mock=mock('chain'))
|
75
|
-
@mock.should_receive(:and_return).with('ola').and_return('ola')
|
76
|
-
|
77
|
-
send(matcher, *stubs_args).matches?(@controller)
|
78
|
-
end
|
79
|
-
|
80
|
-
it 'should run expectations' do
|
72
|
+
it 'should run expectations by default' do
|
81
73
|
String.should_receive(:should_receive).with(:new).and_return(@mock=mock('chain'))
|
82
74
|
@mock.should_receive(:with).with('ola').and_return(@mock)
|
83
75
|
@mock.should_receive(:exactly).with(1).and_return(@mock)
|
84
76
|
@mock.should_receive(:times).and_return(@mock)
|
85
77
|
@mock.should_receive(:and_return).with('ola').and_return('ola')
|
86
78
|
|
87
|
-
send(matcher, *
|
79
|
+
send(matcher, *expectation_args).matches?(@controller)
|
80
|
+
end
|
81
|
+
|
82
|
+
it 'should run stubs' do
|
83
|
+
String.should_receive(:stub!).with(:new).and_return(@mock=mock('chain'))
|
84
|
+
@mock.should_receive(:and_return).with('ola').and_return('ola')
|
85
|
+
|
86
|
+
send(matcher, *stub_args).matches?(@controller)
|
88
87
|
end
|
89
88
|
end
|
90
89
|
|
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.1.
|
4
|
+
version: 3.1.5
|
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-
|
13
|
+
date: 2009-06-04 00:00:00 +02:00
|
14
14
|
default_executable:
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
@@ -41,7 +41,7 @@ dependencies:
|
|
41
41
|
requirements:
|
42
42
|
- - ">="
|
43
43
|
- !ruby/object:Gem::Version
|
44
|
-
version: 3.1.
|
44
|
+
version: 3.1.5
|
45
45
|
version:
|
46
46
|
- !ruby/object:Gem::Dependency
|
47
47
|
name: remarkable_activerecord
|
@@ -51,7 +51,7 @@ dependencies:
|
|
51
51
|
requirements:
|
52
52
|
- - ">="
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: 3.1.
|
54
|
+
version: 3.1.5
|
55
55
|
version:
|
56
56
|
description: "Remarkable Rails: collection of matchers and macros with I18n for Rails"
|
57
57
|
email:
|