pickle 0.2.5 → 0.2.6

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.
@@ -1,4 +1,6 @@
1
- require File.expand_path(File.join(File.dirname(__FILE__), '../spec_helper'))
1
+ require File.dirname(__FILE__) + '/../spec_helper'
2
+
3
+ require 'pickle/path'
2
4
 
3
5
  describe Pickle::Path do
4
6
  include Pickle::Path
@@ -15,8 +17,16 @@ describe Pickle::Path do
15
17
 
16
18
  describe "#path_to_pickle" do
17
19
  describe "when model returns a user" do
20
+ let :user_class do
21
+ mock 'User', :name => 'User'
22
+ end
23
+
24
+ let :user do
25
+ mock 'user', :class => user_class
26
+ end
27
+
18
28
  before do
19
- stub!(:model).and_return(@user = mock_model(User))
29
+ stub!(:model).and_return(user)
20
30
  end
21
31
 
22
32
  it "('a user', 'the user: \"fred\"') should retrieve 'a user', and 'the user: \"fred\"' models" do
@@ -27,66 +37,65 @@ describe Pickle::Path do
27
37
  end
28
38
 
29
39
  it "('a user', :action => 'foo') should return foo_user_path(<user>)" do
30
- should_receive(:foo_user_path).with(@user).and_return('the path')
40
+ should_receive(:foo_user_path).with(user).and_return('the path')
31
41
  path_to_pickle('a user', :action => 'foo').should == 'the path'
32
42
  end
33
43
 
34
44
  it "('a user', :action => 'foo') should raise informative error if foo_user_path not defined" do
35
- should_receive(:foo_user_path).with(@user).and_raise(NoMethodError)
45
+ should_receive(:foo_user_path).with(user).and_raise(NoMethodError)
36
46
  lambda { path_to_pickle('a user', :action => 'foo') }.should raise_error(Exception, /Could not figure out a path for/)
37
47
  end
38
48
 
39
49
  it "('a user', :segment => 'foo') should return user_foo_path(<user>)" do
40
- should_receive(:user_foo_path).with(@user).and_return('the path')
50
+ should_receive(:user_foo_path).with(user).and_return('the path')
41
51
  path_to_pickle('a user', :segment => 'foo').should == 'the path'
42
52
  end
43
53
 
44
54
  it "('a user', :segment => 'foo') should raise informative error if foo_user_path not defined" do
45
- should_receive(:user_foo_path).with(@user).and_raise(NoMethodError)
55
+ should_receive(:user_foo_path).with(user).and_raise(NoMethodError)
46
56
  lambda { path_to_pickle('a user', :segment => 'foo') }.should raise_error(Exception, /Could not figure out a path for/)
47
57
  end
48
58
 
49
59
  it "('a user', :action => 'new', :segment => 'comment') should return new_user_comment_path(<user>)" do
50
- should_receive(:new_user_comment_path).with(@user).and_return('the path')
60
+ should_receive(:new_user_comment_path).with(user).and_return('the path')
51
61
  path_to_pickle('a user', :segment => 'comment', :action => 'new').should == 'the path'
52
62
  end
53
63
 
54
64
  it "('a user', :action => 'new', :segment => 'comment') should raise informative error if new_user_comment_path not defined" do
55
- should_receive(:new_user_comment_path).with(@user).and_raise(NoMethodError)
65
+ should_receive(:new_user_comment_path).with(user).and_raise(NoMethodError)
56
66
  lambda { path_to_pickle('a user', :action => 'new', :segment => 'comment') }.should raise_error(Exception, /Could not figure out a path for/)
57
67
  end
58
68
 
59
69
  it "('a user', :extra => 'new comment') should return new_user_comment_path(<user>)" do
60
- should_receive(:new_user_comment_path).with(@user).and_return('the path')
70
+ should_receive(:new_user_comment_path).with(user).and_return('the path')
61
71
  path_to_pickle('a user', :extra => 'new comment').should == 'the path'
62
72
  end
63
73
 
64
74
  it "('a user', :extra => 'new comment') should raise informative error if new_user_comment_path not defined" do
65
- should_receive(:new_user_comment_path).with(@user).and_raise(NoMethodError)
75
+ should_receive(:new_user_comment_path).with(user).and_raise(NoMethodError)
66
76
  lambda { path_to_pickle('a user', :extra => 'new comment') }.should raise_error(Exception, /Could not figure out a path for/)
67
77
  end
68
78
 
79
+ describe "when args is a list of pickle and non pickle models" do
80
+ before do
81
+ stub!(:model).with("account").and_return(nil)
82
+ end
83
+
84
+ it "('account', 'the user') should return account_user_path(<user>)" do
85
+ should_receive(:account_user_path).with(user).and_return("the path")
86
+ path_to_pickle('account', 'the user').should == 'the path'
87
+ end
88
+ end
89
+
69
90
  describe "(private API)" do
70
91
  it "('a user', :extra => 'new ish comment') should try combinations of 'new', 'ish', 'comment'" do
71
- should_receive(:pickle_path_for_resources_action_segment).with([@user], '', 'new_ish_comment').once
72
- should_receive(:pickle_path_for_resources_action_segment).with([@user], 'new', 'ish_comment').once
73
- should_receive(:pickle_path_for_resources_action_segment).with([@user], 'new_ish', 'comment').once
74
- should_receive(:pickle_path_for_resources_action_segment).with([@user], 'new_ish_comment', '').once
92
+ should_receive(:pickle_path_for_resources_action_segment).with([user], '', 'new_ish_comment').once
93
+ should_receive(:pickle_path_for_resources_action_segment).with([user], 'new', 'ish_comment').once
94
+ should_receive(:pickle_path_for_resources_action_segment).with([user], 'new_ish', 'comment').once
95
+ should_receive(:pickle_path_for_resources_action_segment).with([user], 'new_ish_comment', '').once
75
96
  lambda { path_to_pickle('a user', :extra => 'new ish comment') }.should raise_error(Exception, /Could not figure out a path for/)
76
97
  end
77
98
  end
78
99
  end
79
-
80
- describe "when args is a list of pickle and non pickle models" do
81
- before do
82
- stub!(:model).with("account").and_return(nil)
83
- stub!(:model).with("the user").and_return(@user = mock_model(User))
84
- end
85
-
86
- it "('account', 'the user') should return account_user_path(<user>)" do
87
- should_receive(:account_user_path).with(@user).and_return("the path")
88
- path_to_pickle('account', 'the user').should == 'the path'
89
- end
90
- end
91
100
  end
92
101
  end
@@ -1,31 +1,54 @@
1
- require File.expand_path(File.join(File.dirname(__FILE__), '../spec_helper'))
1
+ require File.dirname(__FILE__) + '/../spec_helper'
2
+
3
+ # TODO: remove this and push AR stuff into ORM adapter
4
+ module ActiveRecord
5
+ class Base
6
+ end
7
+ end
2
8
 
3
9
  describe Pickle::Session do
4
10
  include Pickle::Session
5
11
 
12
+ let :user_class do
13
+ mock("User class", :name => 'User')
14
+ end
15
+
16
+ let :user do
17
+ mock("user", :class => user_class, :id => 1)
18
+ end
19
+
20
+ let :user_factory do
21
+ Pickle::Adapter::ActiveRecord.new(user_class)
22
+ end
23
+
24
+ before do
25
+ config.stub(:factories).and_return('user' => user_factory)
26
+ end
27
+
6
28
  describe "Pickle::Session proxy missing methods to parser", :shared => true do
7
29
  it "should forward to pickle_parser it responds_to them" do
8
- @it.pickle_parser.should_receive(:parse_model)
9
- @it.parse_model
30
+ subject.pickle_parser.should_receive(:parse_model)
31
+ subject.parse_model
10
32
  end
11
33
 
12
34
  it "should raise error if pickle_parser don't know about em" do
13
- lambda { @it.parse_infinity }.should raise_error
35
+ lambda { subject.parse_infinity }.should raise_error
14
36
  end
15
37
  end
16
38
 
17
39
  describe "including Pickle::Session" do
18
- before do
19
- @it = self
40
+ subject do
41
+ self
20
42
  end
21
43
 
22
44
  it_should_behave_like "Pickle::Session proxy missing methods to parser"
23
45
  end
24
46
 
25
47
  describe "extending Pickle::Session" do
26
- before do
27
- @it = Object.new
28
- @it.extend Pickle::Session
48
+ subject do
49
+ returning Object.new do |object|
50
+ object.extend Pickle::Session
51
+ end
29
52
  end
30
53
 
31
54
  it_should_behave_like "Pickle::Session proxy missing methods to parser"
@@ -33,48 +56,53 @@ describe Pickle::Session do
33
56
 
34
57
  describe "after storing a single user", :shared => true do
35
58
  it "created_models('user') should be array containing the original user" do
36
- created_models('user').should == [@user]
59
+ created_models('user').should == [user]
37
60
  end
38
61
 
39
62
  describe "the original user should be retrievable with" do
40
63
  it "created_model('the user')" do
41
- created_model('the user').should == @user
64
+ created_model('the user').should == user
42
65
  end
43
66
 
44
67
  it "created_model('1st user')" do
45
- created_model('1st user').should == @user
68
+ created_model('1st user').should == user
46
69
  end
47
70
 
48
71
  it "created_model('last user')" do
49
- created_model('last user').should == @user
72
+ created_model('last user').should == user
50
73
  end
51
74
  end
52
75
 
53
76
  describe "(found from db)" do
77
+ let :user_from_db do
78
+ returning user.dup do |from_db|
79
+ from_db.stub!(:id).and_return(100)
80
+ end
81
+ end
82
+
54
83
  before do
55
- @user.stub!(:id).and_return(100)
56
- @user.class.should_receive(:find).with(100).and_return(@user_from_db = @user.dup)
84
+ user_class.should_receive(:find).with(100).and_return(user_from_db)
57
85
  end
58
86
 
59
87
  it "models('user') should be array containing user" do
60
- models('user').should == [@user_from_db]
88
+ models('user').should == [user_from_db]
61
89
  end
62
90
 
63
91
  describe "user should be retrievable with" do
64
92
  it "model('the user')" do
65
- model('the user').should == @user_from_db
93
+ model('the user').should == user_from_db
66
94
  end
67
95
 
68
96
  it "model('1st user')" do
69
- model('1st user').should == @user_from_db
97
+ model('1st user').should == user_from_db
70
98
  end
71
99
 
72
100
  it "model('last user')" do
73
- model('last user').should == @user_from_db
101
+ model('last user').should == user_from_db
74
102
  end
75
103
 
76
104
  it "model!('last user')" do
77
- model('last user').should == @user_from_db
105
+ model('last user').should == user_from_db
78
106
  end
79
107
  end
80
108
  end
@@ -82,61 +110,48 @@ describe Pickle::Session do
82
110
 
83
111
  describe "#create_model" do
84
112
  before do
85
- @user = mock_model(User)
86
- Factory.stub!(:create).and_return(@user)
113
+ user_factory.stub!(:create).and_return(user)
87
114
  end
88
115
 
89
116
  describe "('a user')" do
90
- def do_create_model
117
+ it "should call user_factory.create({})" do
118
+ user_factory.should_receive(:create).with({})
91
119
  create_model('a user')
92
120
  end
93
-
94
- it "should call Factory.create('user', {})" do
95
- Factory.should_receive(:create).with('user', {}).and_return(@user)
96
- do_create_model
97
- end
98
121
 
99
122
  describe "after create," do
100
- before { do_create_model }
123
+ before { create_model('a user') }
101
124
 
102
125
  it_should_behave_like "after storing a single user"
103
126
  end
104
127
  end
105
128
 
106
129
  describe "('1 user', 'foo: \"bar\", baz: \"bing bong\"')" do
107
- def do_create_model
130
+ it "should call user_factory.create({'foo' => 'bar', 'baz' => 'bing bong'})" do
131
+ user_factory.should_receive(:create).with({'foo' => 'bar', 'baz' => 'bing bong'})
108
132
  create_model('1 user', 'foo: "bar", baz: "bing bong"')
109
133
  end
110
-
111
- it "should call Factory.create('user', {'foo' => 'bar', 'baz' => 'bing bong'})" do
112
- Factory.should_receive(:create).with('user', {'foo' => 'bar', 'baz' => 'bing bong'}).and_return(@user)
113
- do_create_model
114
- end
115
134
 
116
135
  describe "after create," do
117
- before { do_create_model }
136
+ before { create_model('1 user', 'foo: "bar", baz: "bing bong"') }
118
137
 
119
138
  it_should_behave_like "after storing a single user"
120
139
  end
121
140
  end
122
141
 
123
142
  describe "('an user: \"fred\")" do
124
- def do_create_model
143
+ it "should call user_factory.create({})" do
144
+ user_factory.should_receive(:create).with({})
125
145
  create_model('an user: "fred"')
126
146
  end
127
-
128
- it "should call Factory.create('user', {})" do
129
- Factory.should_receive(:create).with('user', {}).and_return(@user)
130
- do_create_model
131
- end
132
147
 
133
148
  describe "after create," do
134
- before { do_create_model }
149
+ before { create_model('an user: "fred"') }
135
150
 
136
151
  it_should_behave_like "after storing a single user"
137
152
 
138
153
  it "created_model('the user: \"fred\"') should retrieve the user" do
139
- created_model('the user: "fred"').should == @user
154
+ created_model('the user: "fred"').should == user
140
155
  end
141
156
 
142
157
  it "created_model?('the user: \"shirl\"') should be false" do
@@ -150,57 +165,43 @@ describe Pickle::Session do
150
165
  end
151
166
 
152
167
  describe "with hash" do
153
- def do_create_model
168
+ it "should call user_factory.create({'foo' => 'bar'})" do
169
+ user_factory.should_receive(:create).with({'foo' => 'bar'})
154
170
  create_model('a user', {'foo' => 'bar'})
155
171
  end
156
-
157
- it "should call Factory.create('user', {'foo' => 'bar'})" do
158
- Factory.should_receive(:create).with('user', {'foo' => 'bar'}).and_return(@user)
159
- do_create_model
160
- end
161
172
 
162
173
  describe "after create," do
163
- before { do_create_model }
174
+ before { create_model('a user', {'foo' => 'bar'}) }
164
175
 
165
176
  it_should_behave_like "after storing a single user"
166
177
  end
167
178
  end
168
-
169
179
  end
170
180
 
171
181
  describe '#find_model' do
172
182
  before do
173
- @user = mock_model(User)
174
- User.stub!(:find).and_return(@user)
183
+ user_class.stub!(:find).and_return(user)
175
184
  end
176
185
 
177
- def do_find_model
186
+ it "should call user_class.find :first, :conditions => {<fields>}" do
187
+ user_class.should_receive(:find).with(:first, :conditions => {'hair' => 'pink'})
178
188
  find_model('a user', 'hair: "pink"')
179
189
  end
180
190
 
181
- it "should call User.find :first, :conditions => {'hair' => 'pink'}" do
182
- User.should_receive(:find).with(:first, :conditions => {'hair' => 'pink'}).and_return(@user)
183
- do_find_model
184
- end
185
-
186
191
  describe "after find," do
187
- before { do_find_model }
192
+ before { find_model('a user', 'hair: "pink"') }
188
193
 
189
194
  it_should_behave_like "after storing a single user"
190
195
  end
191
196
 
192
197
  describe "with hash" do
193
- def do_create_model
198
+ it "should call user_class.find('user', {'foo' => 'bar'})" do
199
+ user_class.should_receive(:find).with(:first, :conditions => {'foo' => 'bar'})
194
200
  find_model('a user', {'foo' => 'bar'})
195
201
  end
196
-
197
- it "should call User.find('user', {'foo' => 'bar'})" do
198
- User.should_receive(:find).with(:first, :conditions => {'foo' => 'bar'}).and_return(@user)
199
- do_create_model
200
- end
201
202
 
202
203
  describe "after find," do
203
- before { do_find_model }
204
+ before { find_model('a user', {'foo' => 'bar'}) }
204
205
 
205
206
  it_should_behave_like "after storing a single user"
206
207
  end
@@ -209,45 +210,45 @@ describe Pickle::Session do
209
210
 
210
211
  describe "create and find using plural_factory and table" do
211
212
  context "when given a table without a matching pickle ref column" do
212
- before do
213
- @table = mock(:hashes => [{'name' => 'Fred'}, {'name' => 'Betty'}])
213
+ let :table do
214
+ mock(:hashes => [{'name' => 'Fred'}, {'name' => 'Betty'}])
214
215
  end
215
216
 
216
217
  it "#create_models_from_table(<plural factory>, <table>) should call create_model for each of the table hashes with plain factory name and return the models" do
217
218
  should_receive(:create_model).with("user", 'name' => "Fred").once.ordered.and_return(:fred)
218
219
  should_receive(:create_model).with("user", 'name' => "Betty").once.ordered.and_return(:betty)
219
- create_models_from_table("users", @table).should == [:fred, :betty]
220
+ create_models_from_table("users", table).should == [:fred, :betty]
220
221
  end
221
222
 
222
223
  it "#find_models_from_table(<plural factory>, <table>) should call find_model for each of the table hashes with plain factory name and return the models" do
223
224
  should_receive(:find_model).with("user", 'name' => "Fred").once.ordered.and_return(:fred)
224
225
  should_receive(:find_model).with("user", 'name' => "Betty").once.ordered.and_return(:betty)
225
- find_models_from_table("users", @table).should == [:fred, :betty]
226
+ find_models_from_table("users", table).should == [:fred, :betty]
226
227
  end
227
228
  end
228
229
 
229
230
  context "when given a table with a matching pickle ref column" do
230
- before do
231
- @table = mock(:hashes => [{'user' => "fred", 'name' => 'Fred'}, {'user' => "betty", 'name' => 'Betty'}])
231
+ let :table do
232
+ mock(:hashes => [{'user' => "fred", 'name' => 'Fred'}, {'user' => "betty", 'name' => 'Betty'}])
232
233
  end
233
234
 
234
235
  it "#create_models_from_table(<plural factory>, <table>) should call create_model for each of the table hashes with labelled pickle ref" do
235
236
  should_receive(:create_model).with("user \"fred\"", 'name' => "Fred").once.ordered.and_return(:fred)
236
237
  should_receive(:create_model).with("user \"betty\"", 'name' => "Betty").once.ordered.and_return(:betty)
237
- create_models_from_table("users", @table).should == [:fred, :betty]
238
+ create_models_from_table("users", table).should == [:fred, :betty]
238
239
  end
239
240
 
240
241
  it "#find_models_from_table(<plural factory>, <table>) should call find_model for each of the table hashes with labelled pickle ref" do
241
242
  should_receive(:find_model).with("user \"fred\"", 'name' => "Fred").once.ordered.and_return(:fred)
242
243
  should_receive(:find_model).with("user \"betty\"", 'name' => "Betty").once.ordered.and_return(:betty)
243
- find_models_from_table("users", @table).should == [:fred, :betty]
244
+ find_models_from_table("users", table).should == [:fred, :betty]
244
245
  end
245
246
  end
246
247
  end
247
248
 
248
249
  describe "#find_model!" do
249
250
  it "should call find_model" do
250
- should_receive(:find_model).with('name', 'fields').and_return(mock('User'))
251
+ should_receive(:find_model).with('name', 'fields').and_return(user)
251
252
  find_model!('name', 'fields')
252
253
  end
253
254
 
@@ -259,32 +260,34 @@ describe Pickle::Session do
259
260
 
260
261
  describe "#find_models" do
261
262
  before do
262
- @user = mock_model(User)
263
- User.stub!(:find).and_return([@user])
264
- end
265
-
266
- def do_find_models
267
- find_models('user', 'hair: "pink"')
263
+ user_class.stub!(:find).and_return([user])
268
264
  end
269
265
 
270
266
  it "should call User.find :all, :conditions => {'hair' => 'pink'}" do
271
- User.should_receive(:find).with(:all, :conditions => {'hair' => 'pink'}).and_return([@user])
272
- do_find_models
267
+ user_class.should_receive(:find).with(:all, :conditions => {'hair' => 'pink'})
268
+ find_models('user', 'hair: "pink"')
273
269
  end
274
270
 
275
271
  describe "after find," do
276
- before { do_find_models }
272
+ before { find_models('user', 'hair: "pink"') }
277
273
 
278
274
  it_should_behave_like "after storing a single user"
279
275
  end
280
276
  end
281
277
 
282
- describe 'creating \'a super admin: "fred"\', then \'a user: "shirl"\', \'then 1 super_admin\'' do
278
+ describe 'creating \'a super admin: "fred"\', then \'a user: "shirl"\', \'then 1 super_admin\' (super_admin is factory that returns users)' do
279
+ let(:fred) { mock("fred", :class => user_class, :id => 2) }
280
+ let(:shirl) { mock("shirl", :class => user_class, :id => 3) }
281
+ let(:noname) { mock("noname", :class => user_class, :is => 4) }
282
+
283
+ let(:super_admin_factory) do
284
+ Pickle::Adapter::FactoryGirl.new(mock(:build_class => user_class, :factory_name => :super_admin))
285
+ end
286
+
283
287
  before do
284
- @user = @fred = mock_model(User)
285
- @shirl = mock_model(User)
286
- @noname = mock_model(User)
287
- Factory.stub!(:create).and_return(@fred, @shirl, @noname)
288
+ config.stub(:factories).and_return(user_factory.name => user_factory, super_admin_factory.name => super_admin_factory)
289
+ user_factory.stub(:create).and_return(shirl)
290
+ super_admin_factory.stub(:create).and_return(fred, noname)
288
291
  end
289
292
 
290
293
  def do_create_users
@@ -294,8 +297,8 @@ describe Pickle::Session do
294
297
  end
295
298
 
296
299
  it "should call Factory.create with <'super_admin'>, <'user'>, <'super_admin'>" do
297
- Factory.should_receive(:create).with('super_admin', {}).twice
298
- Factory.should_receive(:create).with('user', {}).once
300
+ super_admin_factory.should_receive(:create).with({}).twice
301
+ user_factory.should_receive(:create).with({}).once
299
302
  do_create_users
300
303
  end
301
304
 
@@ -304,45 +307,45 @@ describe Pickle::Session do
304
307
  do_create_users
305
308
  end
306
309
 
307
- it "created_models('user') should == [@fred, @shirl, @noname]" do
308
- created_models('user').should == [@fred, @shirl, @noname]
310
+ it "created_models('user') should == [fred, shirl, noname]" do
311
+ created_models('user').should == [fred, shirl, noname]
309
312
  end
310
313
 
311
- it "created_models('super_admin') should == [@fred, @noname]" do
312
- created_models('super_admin').should == [@fred, @noname]
314
+ it "created_models('super_admin') should == [fred, noname]" do
315
+ created_models('super_admin').should == [fred, noname]
313
316
  end
314
317
 
315
318
  describe "#created_model" do
316
- it "'that user' should be @noname (the last user created - as super_admins are users)" do
317
- created_model('that user').should == @noname
319
+ it "'that user' should be noname (the last user created - as super_admins are users)" do
320
+ created_model('that user').should == noname
318
321
  end
319
322
 
320
- it "'the super admin' should be @noname (the last super admin created)" do
321
- created_model('that super admin').should == @noname
323
+ it "'the super admin' should be noname (the last super admin created)" do
324
+ created_model('that super admin').should == noname
322
325
  end
323
326
 
324
- it "'the 1st super admin' should be @fred" do
325
- created_model('the 1st super admin').should == @fred
327
+ it "'the 1st super admin' should be fred" do
328
+ created_model('the 1st super admin').should == fred
326
329
  end
327
330
 
328
- it "'the first user' should be @fred" do
329
- created_model('the first user').should == @fred
331
+ it "'the first user' should be fred" do
332
+ created_model('the first user').should == fred
330
333
  end
331
334
 
332
- it "'the 2nd user' should be @shirl" do
333
- created_model('the 2nd user').should == @shirl
335
+ it "'the 2nd user' should be shirl" do
336
+ created_model('the 2nd user').should == shirl
334
337
  end
335
338
 
336
- it "'the last user' should be @noname" do
337
- created_model('the last user').should == @noname
339
+ it "'the last user' should be noname" do
340
+ created_model('the last user').should == noname
338
341
  end
339
342
 
340
- it "'the user: \"fred\" should be @fred" do
341
- created_model('the user: "fred"').should == @fred
343
+ it "'the user: \"fred\" should be fred" do
344
+ created_model('the user: "fred"').should == fred
342
345
  end
343
346
 
344
- it "'the user: \"shirl\" should be @shirl" do
345
- created_model('the user: "shirl"').should == @shirl
347
+ it "'the user: \"shirl\" should be shirl" do
348
+ created_model('the user: "shirl"').should == shirl
346
349
  end
347
350
  end
348
351
  end
@@ -350,19 +353,19 @@ describe Pickle::Session do
350
353
 
351
354
  describe "when 'the user: \"me\"' exists and there is a mapping from 'I', 'myself' => 'user: \"me\"" do
352
355
  before do
353
- @user = mock_model(User)
354
- User.stub!(:find).and_return(@user)
355
- Factory.stub!(:create).and_return(@user)
356
356
  self.pickle_parser = Pickle::Parser.new(:config => Pickle::Config.new {|c| c.map 'I', 'myself', :to => 'user: "me"'})
357
+ config.stub(:factories).and_return('user' => user_factory)
358
+ user_class.stub!(:find).and_return(user)
359
+ user_factory.stub!(:create).and_return(user)
357
360
  create_model('the user: "me"')
358
361
  end
359
362
 
360
363
  it 'model("I") should return the user' do
361
- model('I').should == @user
364
+ model('I').should == user
362
365
  end
363
366
 
364
367
  it 'model("myself") should return the user' do
365
- model('myself').should == @user
368
+ model('myself').should == user
366
369
  end
367
370
 
368
371
  it "#parser.parse_fields 'author: user \"JIM\"' should raise Error, as model deos not refer" do
@@ -370,44 +373,44 @@ describe Pickle::Session do
370
373
  end
371
374
 
372
375
  it "#parser.parse_fields 'author: the user' should return {\"author\" => <user>}" do
373
- pickle_parser.parse_fields('author: the user').should == {"author" => @user}
376
+ pickle_parser.parse_fields('author: the user').should == {"author" => user}
374
377
  end
375
378
 
376
379
  it "#parser.parse_fields 'author: myself' should return {\"author\" => <user>}" do
377
- pickle_parser.parse_fields('author: myself').should == {"author" => @user}
380
+ pickle_parser.parse_fields('author: myself').should == {"author" => user}
378
381
  end
379
382
 
380
383
  it "#parser.parse_fields 'author: the user, approver: I, rating: \"5\"' should return {'author' => <user>, 'approver' => <user>, 'rating' => '5'}" do
381
- pickle_parser.parse_fields('author: the user, approver: I, rating: "5"').should == {'author' => @user, 'approver' => @user, 'rating' => '5'}
384
+ pickle_parser.parse_fields('author: the user, approver: I, rating: "5"').should == {'author' => user, 'approver' => user, 'rating' => '5'}
382
385
  end
383
386
 
384
387
  it "#parser.parse_fields 'author: user: \"me\", approver: \"\"' should return {'author' => <user>, 'approver' => \"\"}" do
385
- pickle_parser.parse_fields('author: user: "me", approver: ""').should == {'author' => @user, 'approver' => ""}
388
+ pickle_parser.parse_fields('author: user: "me", approver: ""').should == {'author' => user, 'approver' => ""}
386
389
  end
387
390
  end
388
391
 
389
392
  describe "convert_models_to_attributes(ar_class, :user => <a user>)" do
390
- before do
391
- @user = mock_model(User)
393
+ before do
394
+ user.stub(:is_a?).with(ActiveRecord::Base).and_return(true)
392
395
  end
393
396
 
394
397
  describe "(when ar_class has column 'user_id')" do
395
- before do
396
- @ar_class = mock('ActiveRecord', :column_names => ['user_id'])
398
+ let :ar_class do
399
+ mock('ActiveRecord', :column_names => ['user_id'])
397
400
  end
398
401
 
399
402
  it "should return {'user_id' => <the user.id>}" do
400
- convert_models_to_attributes(@ar_class, :user => @user).should == {'user_id' => @user.id}
403
+ convert_models_to_attributes(ar_class, :user => user).should == {'user_id' => user.id}
401
404
  end
402
405
  end
403
406
 
404
407
  describe "(when ar_class has columns 'user_id', 'user_type')" do
405
- before do
406
- @ar_class = mock('ActiveRecord', :column_names => ['user_id', 'user_type'])
408
+ let :ar_class do
409
+ mock('ActiveRecord', :column_names => ['user_id', 'user_type'])
407
410
  end
408
411
 
409
412
  it "should return {'user_id' => <the user.id>, 'user_type' => <the user.type>}" do
410
- convert_models_to_attributes(@ar_class, :user => @user).should == {'user_id' => @user.id, 'user_type' => @user.class.name}
413
+ convert_models_to_attributes(ar_class, :user => user).should == {'user_id' => user.id, 'user_type' => user.class.name}
411
414
  end
412
415
  end
413
416
  end