schlick-pickle 0.1.5.1

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.
@@ -0,0 +1,300 @@
1
+ require File.expand_path(File.join(File.dirname(__FILE__), '../spec_helper'))
2
+
3
+ describe Pickle::Session do
4
+ before do
5
+ @session = Pickle::Session.new
6
+ end
7
+
8
+ describe "after storing a single user", :shared => true do
9
+ it "created_models('user') should be array containing the original user" do
10
+ @session.created_models('user').should == [@user]
11
+ end
12
+
13
+ describe "the original user should be retrievable with" do
14
+ it "created_model('the user')" do
15
+ @session.created_model('the user').should == @user
16
+ end
17
+
18
+ it "created_model('1st user')" do
19
+ @session.created_model('1st user').should == @user
20
+ end
21
+
22
+ it "created_model('last user')" do
23
+ @session.created_model('last user').should == @user
24
+ end
25
+ end
26
+
27
+ describe "(found from db)" do
28
+ before do
29
+ @user.stub!(:id).and_return(100)
30
+ @user.class.should_receive(:find).with(100).and_return(@user_from_db = @user.dup)
31
+ end
32
+
33
+ it "models('user') should be array containing user" do
34
+ @session.models('user').should == [@user_from_db]
35
+ end
36
+
37
+ describe "user should be retrievable with" do
38
+ it "model('the user')" do
39
+ @session.model('the user').should == @user_from_db
40
+ end
41
+
42
+ it "model('1st user')" do
43
+ @session.model('1st user').should == @user_from_db
44
+ end
45
+
46
+ it "model('last user')" do
47
+ @session.model('last user').should == @user_from_db
48
+ end
49
+ end
50
+ end
51
+ end
52
+
53
+ describe "#create_model" do
54
+ before do
55
+ @user = mock_model(User)
56
+ Factory.stub!(:create).and_return(@user)
57
+ end
58
+
59
+ describe "('a user')" do
60
+ def do_create_model
61
+ @session.create_model('a user')
62
+ end
63
+
64
+ it "should call Factory.create('user', {})" do
65
+ Factory.should_receive(:create).with('user', {}).and_return(@user)
66
+ do_create_model
67
+ end
68
+
69
+ describe "after create," do
70
+ before { do_create_model }
71
+
72
+ it_should_behave_like "after storing a single user"
73
+ end
74
+ end
75
+
76
+ describe "('1 user', 'foo: \"bar\", baz: \"bing bong\"')" do
77
+ def do_create_model
78
+ @session.create_model('1 user', 'foo: "bar", baz: "bing bong"')
79
+ end
80
+
81
+ it "should call Factory.create('user', {'foo' => 'bar', 'baz' => 'bing bong'})" do
82
+ Factory.should_receive(:create).with('user', {'foo' => 'bar', 'baz' => 'bing bong'}).and_return(@user)
83
+ do_create_model
84
+ end
85
+
86
+ describe "after create," do
87
+ before { do_create_model }
88
+
89
+ it_should_behave_like "after storing a single user"
90
+ end
91
+ end
92
+
93
+ describe "('an user: \"fred\")" do
94
+ def do_create_model
95
+ @session.create_model('an user: "fred"')
96
+ end
97
+
98
+ it "should call Factory.create('user', {})" do
99
+ Factory.should_receive(:create).with('user', {}).and_return(@user)
100
+ do_create_model
101
+ end
102
+
103
+ describe "after create," do
104
+ before { do_create_model }
105
+
106
+ it_should_behave_like "after storing a single user"
107
+
108
+ it "created_model('the user: \"fred\"') should retrieve the user" do
109
+ @session.created_model('the user: "fred"').should == @user
110
+ end
111
+
112
+ it "created_model?('the user: \"shirl\"') should be false" do
113
+ @session.created_model?('the user: "shirl"').should == false
114
+ end
115
+
116
+ it "model?('the user: \"shirl\"') should be false" do
117
+ @session.model?('the user: "shirl"').should == false
118
+ end
119
+ end
120
+ end
121
+ end
122
+
123
+ describe '#find_model' do
124
+ before do
125
+ @user = mock_model(User)
126
+ User.stub!(:find).and_return(@user)
127
+ end
128
+
129
+ def do_find_model
130
+ @session.find_model('a user', 'hair: "pink"')
131
+ end
132
+
133
+ it "should call User.find :first, :conditions => {'hair' => 'pink'}" do
134
+ User.should_receive(:find).with(:first, :conditions => {'hair' => 'pink'}).and_return(@user)
135
+ do_find_model
136
+ end
137
+
138
+ describe "after find," do
139
+ before { do_find_model }
140
+
141
+ it_should_behave_like "after storing a single user"
142
+ end
143
+ end
144
+
145
+ describe "#find_models" do
146
+ before do
147
+ @user = mock_model(User)
148
+ User.stub!(:find).and_return([@user])
149
+ end
150
+
151
+ def do_find_models
152
+ @session.find_models('user', 'hair: "pink"')
153
+ end
154
+
155
+ it "should call User.find :all, :conditions => {'hair' => 'pink'}" do
156
+ User.should_receive(:find).with(:all, :conditions => {'hair' => 'pink'}).and_return([@user])
157
+ do_find_models
158
+ end
159
+
160
+ describe "after find," do
161
+ before { do_find_models }
162
+
163
+ it_should_behave_like "after storing a single user"
164
+ end
165
+ end
166
+
167
+ describe 'creating \'a super admin: "fred"\', then \'a user: "shirl"\', \'then 1 super_admin\'' do
168
+ before do
169
+ @user = @fred = mock_model(User)
170
+ @shirl = mock_model(User)
171
+ @noname = mock_model(User)
172
+ Factory.stub!(:create).and_return(@fred, @shirl, @noname)
173
+ end
174
+
175
+ def do_create_users
176
+ @session.create_model('a super admin: "fred"')
177
+ @session.create_model('a user: "shirl"')
178
+ @session.create_model('1 super_admin')
179
+ end
180
+
181
+ it "should call Factory.create with <'super_admin'>, <'user'>, <'super_admin'>" do
182
+ Factory.should_receive(:create).with('super_admin', {}).twice
183
+ Factory.should_receive(:create).with('user', {}).once
184
+ do_create_users
185
+ end
186
+
187
+ describe "after create," do
188
+ before do
189
+ do_create_users
190
+ end
191
+
192
+ it "created_models('user') should == [@fred, @shirl, @noname]" do
193
+ @session.created_models('user').should == [@fred, @shirl, @noname]
194
+ end
195
+
196
+ it "created_models('super_admin') should == [@fred, @noname]" do
197
+ @session.created_models('super_admin').should == [@fred, @noname]
198
+ end
199
+
200
+ describe "#created_model" do
201
+ it "'that user' should be @noname (the last user created - as super_admins are users)" do
202
+ @session.created_model('that user').should == @noname
203
+ end
204
+
205
+ it "'the super admin' should be @noname (the last super admin created)" do
206
+ @session.created_model('that super admin').should == @noname
207
+ end
208
+
209
+ it "'the 1st super admin' should be @fred" do
210
+ @session.created_model('the 1st super admin').should == @fred
211
+ end
212
+
213
+ it "'the first user' should be @fred" do
214
+ @session.created_model('the first user').should == @fred
215
+ end
216
+
217
+ it "'the 2nd user' should be @shirl" do
218
+ @session.created_model('the 2nd user').should == @shirl
219
+ end
220
+
221
+ it "'the last user' should be @noname" do
222
+ @session.created_model('the last user').should == @noname
223
+ end
224
+
225
+ it "'the user: \"fred\" should be @fred" do
226
+ @session.created_model('the user: "fred"').should == @fred
227
+ end
228
+
229
+ it "'the user: \"shirl\" should be @shirl" do
230
+ @session.created_model('the user: "shirl"').should == @shirl
231
+ end
232
+ end
233
+ end
234
+ end
235
+
236
+ describe "when 'the user: \"me\"' exists and there is a mapping from 'I', 'myself' => 'user: \"me\"" do
237
+ before do
238
+ @user = mock_model(User)
239
+ User.stub!(:find).and_return(@user)
240
+ Factory.stub!(:create).and_return(@user)
241
+ parser = Pickle::Parser.new(:config => Pickle::Config.new {|c| c.map 'I', 'myself', :to => 'user: "me"'})
242
+ @session = Pickle::Session.new(:parser => parser)
243
+ @session.create_model('the user: "me"')
244
+ end
245
+
246
+ it 'model("I") should return the user' do
247
+ @session.model('I').should == @user
248
+ end
249
+
250
+ it 'model("myself") should return the user' do
251
+ @session.model('myself').should == @user
252
+ end
253
+
254
+ it "#parser.parse_fields 'author: user \"JIM\"' should raise Error, as model deos not refer" do
255
+ lambda { @session.send(:parser).parse_fields('author: user "JIM"') }.should raise_error
256
+ end
257
+
258
+ it "#parser.parse_fields 'author: the user' should return {\"author\" => <user>}" do
259
+ @session.send(:parser).parse_fields('author: the user').should == {"author" => @user}
260
+ end
261
+
262
+ it "#parser.parse_fields 'author: myself' should return {\"author\" => <user>}" do
263
+ @session.send(:parser).parse_fields('author: myself').should == {"author" => @user}
264
+ end
265
+
266
+ it "#parser.parse_fields 'author: the user, approver: I, rating: \"5\"' should return {'author' => <user>, 'approver' => <user>, 'rating' => '5'}" do
267
+ @session.send(:parser).parse_fields('author: the user, approver: I, rating: "5"').should == {'author' => @user, 'approver' => @user, 'rating' => '5'}
268
+ end
269
+
270
+ it "#parser.parse_fields 'author: user: \"me\", approver: \"\"' should return {'author' => <user>, 'approver' => \"\"}" do
271
+ @session.send(:parser).parse_fields('author: user: "me", approver: ""').should == {'author' => @user, 'approver' => ""}
272
+ end
273
+ end
274
+
275
+ describe "convert_models_to_attributes(ar_class, :user => <a user>)" do
276
+ before do
277
+ @user = mock_model(User)
278
+ end
279
+
280
+ describe "(when ar_class has column 'user_id')" do
281
+ before do
282
+ @ar_class = mock('ActiveRecord', :column_names => ['user_id'])
283
+ end
284
+
285
+ it "should return {'user_id' => <the user.id>}" do
286
+ @session.send(:convert_models_to_attributes, @ar_class, :user => @user).should == {'user_id' => @user.id}
287
+ end
288
+ end
289
+
290
+ describe "(when ar_class has columns 'user_id', 'user_type')" do
291
+ before do
292
+ @ar_class = mock('ActiveRecord', :column_names => ['user_id', 'user_type'])
293
+ end
294
+
295
+ it "should return {'user_id' => <the user.id>, 'user_type' => <the user.type>}" do
296
+ @session.send(:convert_models_to_attributes, @ar_class, :user => @user).should == {'user_id' => @user.id, 'user_type' => @user.class.name}
297
+ end
298
+ end
299
+ end
300
+ end
@@ -0,0 +1,24 @@
1
+ require File.expand_path(File.join(File.dirname(__FILE__), '../spec_helper'))
2
+
3
+ describe Pickle do
4
+ it ".config should be same object on multiple calls" do
5
+ Pickle.config.should == Pickle.config
6
+ end
7
+
8
+ it ".configure should configure the .config object" do
9
+ Pickle.config.should_receive(:foo).with(:bar)
10
+ Pickle.configure do |c|
11
+ c.foo :bar
12
+ end
13
+ end
14
+
15
+ it ".parser should create a parser with the default config" do
16
+ Pickle.instance_variable_set('@parser', nil)
17
+ Pickle::Parser.should_receive(:new).with(:config => Pickle.config)
18
+ Pickle.parser
19
+ end
20
+
21
+ it ".parser should be same object on multiple calls" do
22
+ Pickle.parser.should == Pickle.parser
23
+ end
24
+ end
metadata ADDED
@@ -0,0 +1,83 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: schlick-pickle
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.5.1
5
+ platform: ruby
6
+ authors:
7
+ - Ian White
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+
12
+ date: 2009-01-22 00:00:00 -08:00
13
+ default_executable:
14
+ dependencies: []
15
+
16
+ description: Easy model creation and reference in your cucumber features
17
+ email: ian.w.white@gmail.com
18
+ executables: []
19
+
20
+ extensions: []
21
+
22
+ extra_rdoc_files: []
23
+
24
+ files:
25
+ - lib/pickle/adapter.rb
26
+ - lib/pickle/config.rb
27
+ - lib/pickle/injector.rb
28
+ - lib/pickle/parser/matchers.rb
29
+ - lib/pickle/parser/with_session.rb
30
+ - lib/pickle/parser.rb
31
+ - lib/pickle/session.rb
32
+ - lib/pickle/version.rb
33
+ - lib/pickle.rb
34
+ - rails_generators/pickle/pickle_generator.rb
35
+ - rails_generators/pickle/templates/env.rb
36
+ - rails_generators/pickle/templates/pickle_steps.rb
37
+ - License.txt
38
+ - README.textile
39
+ - Todo.txt
40
+ - History.txt
41
+ - spec/lib/pickle_adapter_spec.rb
42
+ - spec/lib/pickle_config_spec.rb
43
+ - spec/lib/pickle_injector_spec.rb
44
+ - spec/lib/pickle_parser_matchers_spec.rb
45
+ - spec/lib/pickle_parser_spec.rb
46
+ - spec/lib/pickle_session_spec.rb
47
+ - spec/lib/pickle_spec.rb
48
+ has_rdoc: true
49
+ homepage: http://github.com/ianwhite/pickle/tree
50
+ post_install_message:
51
+ rdoc_options:
52
+ - --title
53
+ - Pickle
54
+ - --line-numbers
55
+ require_paths:
56
+ - lib
57
+ required_ruby_version: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: "0"
62
+ version:
63
+ required_rubygems_version: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - ">="
66
+ - !ruby/object:Gem::Version
67
+ version: "0"
68
+ version:
69
+ requirements: []
70
+
71
+ rubyforge_project:
72
+ rubygems_version: 1.2.0
73
+ signing_key:
74
+ specification_version: 2
75
+ summary: Easy model creation and reference in your cucumber features
76
+ test_files:
77
+ - spec/lib/pickle_adapter_spec.rb
78
+ - spec/lib/pickle_config_spec.rb
79
+ - spec/lib/pickle_injector_spec.rb
80
+ - spec/lib/pickle_parser_matchers_spec.rb
81
+ - spec/lib/pickle_parser_spec.rb
82
+ - spec/lib/pickle_session_spec.rb
83
+ - spec/lib/pickle_spec.rb