freshtrack 0.4.2 → 0.5.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,38 +1,38 @@
1
1
  require File.expand_path(File.dirname(__FILE__) + '/../spec_helper.rb')
2
2
 
3
3
  describe FreshBooks::Project do
4
- before :each do
4
+ before do
5
5
  @project = FreshBooks::Project.new
6
6
  end
7
7
 
8
8
  describe 'attributes' do
9
9
  it 'should have a project_id' do
10
- @project.should respond_to(:project_id)
10
+ @project.should.respond_to(:project_id)
11
11
  end
12
12
 
13
13
  it 'should have a name' do
14
- @project.should respond_to(:name)
14
+ @project.should.respond_to(:name)
15
15
  end
16
16
 
17
17
  it 'should have a bill_method' do
18
- @project.should respond_to(:bill_method)
18
+ @project.should.respond_to(:bill_method)
19
19
  end
20
20
 
21
21
  it 'should have a client_id' do
22
- @project.should respond_to(:client_id)
22
+ @project.should.respond_to(:client_id)
23
23
  end
24
24
 
25
25
  it 'should have a rate' do
26
- @project.should respond_to(:rate)
26
+ @project.should.respond_to(:rate)
27
27
  end
28
28
 
29
29
  it 'should have a description' do
30
- @project.should respond_to(:description)
30
+ @project.should.respond_to(:description)
31
31
  end
32
32
  end
33
33
 
34
34
  describe 'type mappings' do
35
- before :each do
35
+ before do
36
36
  @mapping = FreshBooks::Project::TYPE_MAPPINGS
37
37
  end
38
38
 
@@ -50,25 +50,25 @@ describe FreshBooks::Project do
50
50
  end
51
51
 
52
52
  describe 'creating an instance' do
53
- before :each do
54
- @response = stub('response', :success? => nil)
55
- FreshBooks.stubs(:call_api).returns(@response)
53
+ before do
54
+ @response = mock('response', :success? => nil)
55
+ FreshBooks.stub!(:call_api).and_return(@response)
56
56
  end
57
57
 
58
58
  it 'should issue a request with the instance' do
59
- FreshBooks.expects(:call_api).with('project.create', 'project' => @project).returns(@response)
59
+ FreshBooks.should.receive(:call_api).with('project.create', 'project' => @project).and_return(@response)
60
60
  @project.create
61
61
  end
62
62
 
63
63
  describe 'with a successful request' do
64
- before :each do
64
+ before do
65
65
  @project_id = 5
66
- @response.stubs(:elements).returns([stub('pre element'), stub('element', :text => @project_id.to_s), stub('post element')])
67
- @response.stubs(:success?).returns(true)
66
+ @response.stub!(:elements).and_return([mock('pre element'), mock('element', :text => @project_id.to_s), mock('post element')])
67
+ @response.stub!(:success?).and_return(true)
68
68
  end
69
69
 
70
70
  it 'should set the ID from the response' do
71
- @project.expects(:project_id=).with(@project_id)
71
+ @project.should.receive(:project_id=).with(@project_id)
72
72
  @project.create
73
73
  end
74
74
 
@@ -78,322 +78,322 @@ describe FreshBooks::Project do
78
78
  end
79
79
 
80
80
  describe 'with an unsuccessful request' do
81
- before :each do
82
- @response.stubs(:success?).returns(false)
81
+ before do
82
+ @response.stub!(:success?).and_return(false)
83
83
  end
84
84
 
85
85
  it 'should not set the ID' do
86
- @project.expects(:project_id=).never
86
+ @project.should.receive(:project_id=).never
87
87
  @project.create
88
88
  end
89
89
 
90
90
  it 'should return nil' do
91
- @project.create.should be_nil
91
+ @project.create.should.be.nil
92
92
  end
93
93
  end
94
94
  end
95
95
 
96
96
  describe 'updating an instance' do
97
- before :each do
98
- @response = stub('response', :success? => nil)
99
- FreshBooks.stubs(:call_api).returns(@response)
97
+ before do
98
+ @response = mock('response', :success? => nil)
99
+ FreshBooks.stub!(:call_api).and_return(@response)
100
100
  end
101
101
 
102
102
  it 'should issue a request with the instance' do
103
- FreshBooks.expects(:call_api).with('project.update', 'project' => @project).returns(@response)
103
+ FreshBooks.should.receive(:call_api).with('project.update', 'project' => @project).and_return(@response)
104
104
  @project.update
105
105
  end
106
106
 
107
107
  describe 'with a successful request' do
108
- before :each do
109
- @response.stubs(:success?).returns(true)
108
+ before do
109
+ @response.stub!(:success?).and_return(true)
110
110
  end
111
111
 
112
112
  it 'should return true' do
113
- @project.update.should be(true)
113
+ @project.update.should == true
114
114
  end
115
115
  end
116
116
 
117
117
  describe 'with an unsuccessful request' do
118
- before :each do
119
- @response.stubs(:success?).returns(false)
118
+ before do
119
+ @response.stub!(:success?).and_return(false)
120
120
  end
121
121
 
122
122
  it 'should return false' do
123
- @project.update.should be(false)
123
+ @project.update.should == false
124
124
  end
125
125
  end
126
126
  end
127
127
 
128
128
  describe 'deleting an instance' do
129
- before :each do
129
+ before do
130
130
  @project_id = '5'
131
- @response = stub('response', :success? => nil)
132
- FreshBooks.stubs(:call_api).returns(@response)
131
+ @response = mock('response', :success? => nil)
132
+ FreshBooks.stub!(:call_api).and_return(@response)
133
133
  end
134
134
 
135
135
  describe 'from the class' do
136
136
  it 'should require an argument' do
137
- lambda { FreshBooks::Project.delete }.should raise_error(ArgumentError)
137
+ lambda { FreshBooks::Project.delete }.should.raise(ArgumentError)
138
138
  end
139
139
 
140
140
  it 'should accept an argument' do
141
- lambda { FreshBooks::Project.delete('arg') }.should_not raise_error(ArgumentError)
141
+ lambda { FreshBooks::Project.delete('arg') }.should.not.raise(ArgumentError)
142
142
  end
143
143
 
144
144
  it 'should issue a request with the supplied ID' do
145
- FreshBooks.expects(:call_api).with('project.delete', 'project_id' => @project_id).returns(@response)
145
+ FreshBooks.should.receive(:call_api).with('project.delete', 'project_id' => @project_id).and_return(@response)
146
146
  FreshBooks::Project.delete(@project_id)
147
147
  end
148
148
 
149
149
  describe 'with a successful request' do
150
- before :each do
151
- @response.stubs(:success?).returns(true)
150
+ before do
151
+ @response.stub!(:success?).and_return(true)
152
152
  end
153
153
 
154
154
  it 'should return true' do
155
- FreshBooks::Project.delete(@project_id).should be(true)
155
+ FreshBooks::Project.delete(@project_id).should == true
156
156
  end
157
157
  end
158
158
 
159
159
  describe 'with an unsuccessful request' do
160
- before :each do
161
- @response.stubs(:success?).returns(false)
160
+ before do
161
+ @response.stub!(:success?).and_return(false)
162
162
  end
163
163
 
164
164
  it 'should return false' do
165
- FreshBooks::Project.delete(@project_id).should be(false)
165
+ FreshBooks::Project.delete(@project_id).should == false
166
166
  end
167
167
  end
168
168
  end
169
169
 
170
170
  describe 'from the instance' do
171
- before :each do
172
- @project.stubs(:project_id).returns(@project_id)
173
- FreshBooks::Project.stubs(:delete)
171
+ before do
172
+ @project.stub!(:project_id).and_return(@project_id)
173
+ FreshBooks::Project.stub!(:delete)
174
174
  end
175
175
 
176
176
  it 'should delegate to the class' do
177
- FreshBooks::Project.expects(:delete)
177
+ FreshBooks::Project.should.receive(:delete)
178
178
  @project.delete
179
179
  end
180
180
 
181
181
  it 'should pass its ID to the class method' do
182
- FreshBooks::Project.expects(:delete).with(@project_id)
182
+ FreshBooks::Project.should.receive(:delete).with(@project_id)
183
183
  @project.delete
184
184
  end
185
185
 
186
186
  it 'should return the result from the class method' do
187
- val = stub('return val')
188
- FreshBooks::Project.stubs(:delete).returns(val)
187
+ val = mock('return val')
188
+ FreshBooks::Project.stub!(:delete).and_return(val)
189
189
  @project.delete.should == val
190
190
  end
191
191
  end
192
192
  end
193
193
 
194
194
  describe 'getting an instance' do
195
- before :each do
195
+ before do
196
196
  @project_id = 1
197
- @element = stub('element')
198
- @response = stub('response', :elements => [stub('pre element'), @element, stub('post element')], :success? => nil)
199
- FreshBooks.stubs(:call_api).returns(@response)
197
+ @element = mock('element')
198
+ @response = mock('response', :elements => [mock('pre element'), @element, mock('post element')], :success? => nil)
199
+ FreshBooks.stub!(:call_api).and_return(@response)
200
200
  end
201
201
 
202
202
  it 'should require an argument' do
203
- lambda { FreshBooks::Project.get }.should raise_error(ArgumentError)
203
+ lambda { FreshBooks::Project.get }.should.raise(ArgumentError)
204
204
  end
205
205
 
206
206
  it 'should accept an argument' do
207
- lambda { FreshBooks::Project.get(@project_id) }.should_not raise_error(ArgumentError)
207
+ lambda { FreshBooks::Project.get(@project_id) }.should.not.raise(ArgumentError)
208
208
  end
209
209
 
210
210
  it 'should issue a request for the supplied ID' do
211
- FreshBooks.expects(:call_api).with('project.get', 'project_id' => @project_id).returns(@response)
211
+ FreshBooks.should.receive(:call_api).with('project.get', 'project_id' => @project_id).and_return(@response)
212
212
  FreshBooks::Project.get(@project_id)
213
213
  end
214
214
 
215
215
  describe 'with a successful request' do
216
- before :each do
217
- @response.stubs(:success?).returns(true)
216
+ before do
217
+ @response.stub!(:success?).and_return(true)
218
218
  end
219
219
 
220
220
  it 'should instantiate a new project instance from the request' do
221
- FreshBooks::Project.expects(:new_from_xml).with(@element)
221
+ FreshBooks::Project.should.receive(:new_from_xml).with(@element)
222
222
  FreshBooks::Project.get(@project_id)
223
223
  end
224
224
 
225
225
  it 'should return the project instance' do
226
- val = stub('return val')
227
- FreshBooks::Project.stubs(:new_from_xml).returns(val)
226
+ val = mock('return val')
227
+ FreshBooks::Project.stub!(:new_from_xml).and_return(val)
228
228
  FreshBooks::Project.get(@project_id).should == val
229
229
  end
230
230
  end
231
231
 
232
232
  describe 'with an unsuccessful request' do
233
- before :each do
234
- @response.stubs(:success?).returns(false)
233
+ before do
234
+ @response.stub!(:success?).and_return(false)
235
235
  end
236
236
 
237
237
  it 'should return nil' do
238
- FreshBooks::Project.get(@project_id).should be_nil
238
+ FreshBooks::Project.get(@project_id).should.be.nil
239
239
  end
240
240
  end
241
241
  end
242
242
 
243
243
  describe 'getting a list' do
244
- before :each do
244
+ before do
245
245
  @project_id = 1
246
- @elements = Array.new(3) { stub('list element') }
247
- @response = stub('response', :elements => [stub('pre element'), stub('element', :elements => @elements), stub('post element')], :success? => nil)
248
- FreshBooks.stubs(:call_api).returns(@response)
246
+ @elements = Array.new(3) { mock('list element') }
247
+ @response = mock('response', :elements => [mock('pre element'), mock('element', :elements => @elements), mock('post element')], :success? => nil)
248
+ FreshBooks.stub!(:call_api).and_return(@response)
249
249
  end
250
250
 
251
251
  it 'should not require an argument' do
252
- lambda { FreshBooks::Project.list }.should_not raise_error(ArgumentError)
252
+ lambda { FreshBooks::Project.list }.should.not.raise(ArgumentError)
253
253
  end
254
254
 
255
255
  it 'should accept an argument' do
256
- lambda { FreshBooks::Project.list('arg') }.should_not raise_error(ArgumentError)
256
+ lambda { FreshBooks::Project.list('arg') }.should.not.raise(ArgumentError)
257
257
  end
258
258
 
259
259
  it 'should issue a request for the time_entry list' do
260
- FreshBooks.expects(:call_api).with('project.list', {}).returns(@response)
260
+ FreshBooks.should.receive(:call_api).with('project.list', {}).and_return(@response)
261
261
  FreshBooks::Project.list
262
262
  end
263
263
 
264
264
  it 'should pass the argument to the request' do
265
- arg = stub('arg')
266
- FreshBooks.expects(:call_api).with('project.list', arg).returns(@response)
265
+ arg = mock('arg')
266
+ FreshBooks.should.receive(:call_api).with('project.list', arg).and_return(@response)
267
267
  FreshBooks::Project.list(arg)
268
268
  end
269
269
 
270
270
  describe 'with a successful request' do
271
- before :each do
272
- @response.stubs(:success?).returns(true)
271
+ before do
272
+ @response.stub!(:success?).and_return(true)
273
273
  end
274
274
 
275
275
  it 'should instantiate new project instances from the request' do
276
276
  @elements.each do |element|
277
- FreshBooks::Project.expects(:new_from_xml).with(element)
277
+ FreshBooks::Project.should.receive(:new_from_xml).with(element)
278
278
  end
279
279
  FreshBooks::Project.list
280
280
  end
281
281
 
282
282
  it 'should return the project instances' do
283
- vals = Array.new(@elements.length) { stub('return val') }
283
+ vals = Array.new(@elements.length) { mock('return val') }
284
284
  @elements.each_with_index do |element, i|
285
- FreshBooks::Project.stubs(:new_from_xml).with(element).returns(vals[i])
285
+ FreshBooks::Project.stub!(:new_from_xml).with(element).and_return(vals[i])
286
286
  end
287
287
  FreshBooks::Project.list.should == vals
288
288
  end
289
289
  end
290
290
 
291
291
  describe 'with an unsuccessful request' do
292
- before :each do
293
- @response.stubs(:success?).returns(false)
292
+ before do
293
+ @response.stub!(:success?).and_return(false)
294
294
  end
295
295
 
296
296
  it 'should return nil' do
297
- FreshBooks::Project.list.should be_nil
297
+ FreshBooks::Project.list.should.be.nil
298
298
  end
299
299
  end
300
300
  end
301
301
 
302
302
  describe 'getting by name' do
303
- before :each do
303
+ before do
304
304
  @name = 'projname'
305
- FreshBooks::Project.stubs(:list).returns([])
305
+ FreshBooks::Project.stub!(:list).and_return([])
306
306
  end
307
307
 
308
308
  it 'should require an argument' do
309
- lambda { FreshBooks::Project.find_by_name }.should raise_error(ArgumentError)
309
+ lambda { FreshBooks::Project.find_by_name }.should.raise(ArgumentError)
310
310
  end
311
311
 
312
312
  it 'should accept an argument' do
313
- lambda { FreshBooks::Project.find_by_name(@name) }.should_not raise_error(ArgumentError)
313
+ lambda { FreshBooks::Project.find_by_name(@name) }.should.not.raise(ArgumentError)
314
314
  end
315
315
 
316
316
  it 'should return the project with a matching name' do
317
- projects = Array.new(3) { |i| stub('project', :name => "project #{i}" ) }
318
- projects[1,0] = expected = stub('project', :name => @name)
319
- FreshBooks::Project.stubs(:list).returns(projects)
317
+ projects = Array.new(3) { |i| mock('project', :name => "project #{i}" ) }
318
+ projects[1,0] = expected = mock('project', :name => @name)
319
+ FreshBooks::Project.stub!(:list).and_return(projects)
320
320
  FreshBooks::Project.find_by_name(@name).should == expected
321
321
  end
322
322
 
323
323
  it 'should return the first project found whose name matches' do
324
- projects = Array.new(3) { |i| stub('project', :name => "project #{i}" ) }
325
- projects[1,0] = expected = stub('project', :name => @name)
326
- projects[3,0] = stub('project', :name => @name)
327
- FreshBooks::Project.stubs(:list).returns(projects)
324
+ projects = Array.new(3) { |i| mock('project', :name => "project #{i}" ) }
325
+ projects[1,0] = expected = mock('project', :name => @name)
326
+ projects[3,0] = mock('project', :name => @name)
327
+ FreshBooks::Project.stub!(:list).and_return(projects)
328
328
  FreshBooks::Project.find_by_name(@name).should == expected
329
329
  end
330
330
 
331
331
  it 'should return nil if no project with matching name found' do
332
- projects = Array.new(3) { |i| stub('project', :name => "project #{i}" ) }
333
- FreshBooks::Project.stubs(:list).returns(projects)
334
- FreshBooks::Project.find_by_name(@name).should be_nil
332
+ projects = Array.new(3) { |i| mock('project', :name => "project #{i}" ) }
333
+ FreshBooks::Project.stub!(:list).and_return(projects)
334
+ FreshBooks::Project.find_by_name(@name).should.be.nil
335
335
  end
336
336
  end
337
337
 
338
338
  it 'should have a client' do
339
- @project.should respond_to(:client)
339
+ @project.should.respond_to(:client)
340
340
  end
341
341
 
342
342
  describe 'client' do
343
343
  it 'should find client based on client_id' do
344
- client_id = stub('client ID')
345
- @project.stubs(:client_id).returns(client_id)
346
- FreshBooks::Client.expects(:get).with(client_id)
344
+ client_id = mock('client ID')
345
+ @project.stub!(:client_id).and_return(client_id)
346
+ FreshBooks::Client.should.receive(:get).with(client_id)
347
347
  @project.client
348
348
  end
349
349
 
350
350
  it 'should return found client' do
351
- client = stub('client')
352
- client_id = stub('client ID')
353
- @project.stubs(:client_id).returns(client_id)
354
- FreshBooks::Client.stubs(:get).with(client_id).returns(client)
351
+ client = mock('client')
352
+ client_id = mock('client ID')
353
+ @project.stub!(:client_id).and_return(client_id)
354
+ FreshBooks::Client.stub!(:get).with(client_id).and_return(client)
355
355
  @project.client.should == client
356
356
  end
357
357
  end
358
358
 
359
359
  it 'should have tasks' do
360
- @project.should respond_to(:tasks)
360
+ @project.should.respond_to(:tasks)
361
361
  end
362
362
 
363
363
  describe 'tasks' do
364
364
  it 'should list tasks based on project ID' do
365
- project_id = stub('project ID')
366
- @project.stubs(:project_id).returns(project_id)
367
- FreshBooks::Task.expects(:list).with('project_id' => project_id)
365
+ project_id = mock('project ID')
366
+ @project.stub!(:project_id).and_return(project_id)
367
+ FreshBooks::Task.should.receive(:list).with('project_id' => project_id)
368
368
  @project.tasks
369
369
  end
370
370
 
371
371
  it 'should return found tasks' do
372
- tasks = stub('tasks')
373
- project_id = stub('project ID')
374
- @project.stubs(:project_id).returns(project_id)
375
- FreshBooks::Task.stubs(:list).with('project_id' => project_id).returns(tasks)
372
+ tasks = mock('tasks')
373
+ project_id = mock('project ID')
374
+ @project.stub!(:project_id).and_return(project_id)
375
+ FreshBooks::Task.stub!(:list).with('project_id' => project_id).and_return(tasks)
376
376
  @project.tasks.should == tasks
377
377
  end
378
378
  end
379
379
 
380
380
  it 'should have time entries' do
381
- @project.should respond_to(:time_entries)
381
+ @project.should.respond_to(:time_entries)
382
382
  end
383
383
 
384
384
  describe 'time entries' do
385
385
  it 'should list time entries based on project ID' do
386
- project_id = stub('project ID')
387
- @project.stubs(:project_id).returns(project_id)
388
- FreshBooks::TimeEntry.expects(:list).with('project_id' => project_id)
386
+ project_id = mock('project ID')
387
+ @project.stub!(:project_id).and_return(project_id)
388
+ FreshBooks::TimeEntry.should.receive(:list).with('project_id' => project_id)
389
389
  @project.time_entries
390
390
  end
391
391
 
392
392
  it 'should return found time entries' do
393
- time_entries = stub('time entries')
394
- project_id = stub('project ID')
395
- @project.stubs(:project_id).returns(project_id)
396
- FreshBooks::TimeEntry.stubs(:list).with('project_id' => project_id).returns(time_entries)
393
+ time_entries = mock('time entries')
394
+ project_id = mock('project ID')
395
+ @project.stub!(:project_id).and_return(project_id)
396
+ FreshBooks::TimeEntry.stub!(:list).with('project_id' => project_id).and_return(time_entries)
397
397
  @project.time_entries.should == time_entries
398
398
  end
399
399
  end