OSDN Git Service

t#30328:add export
[pettanr/pettanr.git] / spec / models / demander_spec.rb
1 # -*- encoding: utf-8 -*-
2 #借手
3 require 'spec_helper'
4
5 describe Demander do
6   before do
7     @admin = FactoryGirl.create :admin
8     @sp = FactoryGirl.create :system_picture
9     @lg = FactoryGirl.create :license_group
10     @license = FactoryGirl.create :license, :license_group_id => @lg.id, :system_picture_id => @sp.id
11     @user = FactoryGirl.create :user_yas
12     @author = FactoryGirl.create :author, :user_id => @user.id
13     @demand_user = FactoryGirl.create :demand_user
14   end
15   describe '検証に於いて' do
16     before do
17       @ds = FactoryGirl.create :demander_status
18       @demander = FactoryGirl.build :demander, :demander_status_id => @ds.id, :demand_user_id => @demand_user.id
19     end
20     
21     context 'オーソドックスなデータのとき' do
22       it '下限データが通る' do
23         @demander.name = 'a'
24         @demander.caption = 'a'
25         @demander.url = 'http://test.jp/'
26         @demander.description = 'a'
27         @demander.demander_url = 'http://test.jp/'
28         @demander.should be_valid
29       end
30       it '上限データが通る' do
31         @demander.name = 'a'*50
32         @demander.caption = 'a'*30
33         @demander.url = 'http://test.jp/aaaaa' + 'a' * 180
34         @demander.description = 'a' * 99999
35         @demander.demander_url = 'http://test.jp/aaaaa' + 'a' * 180
36         @demander.should be_valid
37       end
38     end
39     
40     context 'demand_user_idを検証するとき' do
41       it 'nullなら失敗する' do
42         @demander.demand_user_id = nil
43         @demander.should_not be_valid
44       end
45       it '数値でなければ失敗する' do
46         @demander.demand_user_id = 'a'
47         @demander.should_not be_valid
48       end
49       it '存在する借手ユーザでなければ失敗する' do
50         @demander.demand_user_id = 0
51         @demander.should_not be_valid
52       end
53     end
54     context 'nameを検証するとき' do
55       it 'nullなら失敗する' do
56         @demander.name = ''
57         @demander.should_not be_valid
58       end
59       it '51文字以上なら失敗する' do
60         @demander.name = 'a'*51
61         @demander.should_not be_valid
62       end
63       it '重複していたら失敗する' do
64         l = FactoryGirl.create :demander
65         @demander.should_not be_valid
66       end
67     end
68     context 'captionを検証するとき' do
69       it 'nullなら失敗する' do
70         @demander.caption = ''
71         @demander.should_not be_valid
72       end
73       it '31文字以上なら失敗する' do
74         @demander.caption = 'a'*31
75         @demander.should_not be_valid
76       end
77     end
78     context 'urlを検証するとき' do
79       it 'nullなら失敗する' do
80         @demander.url = ''
81         @demander.should_not be_valid
82       end
83       it '201文字以上なら失敗する' do
84         @demander.url = 'http://test.jp/aaaaa' + 'a' * 181
85         @demander.should_not be_valid
86       end
87       it 'url形式でないなら失敗する' do
88         @demander.url = 'aaaaaaa'
89         @demander.should_not be_valid
90       end
91     end
92     context 'descriptionを検証するとき' do
93       it 'nullなら失敗する' do
94         @demander.description= ''
95         @demander.should_not be_valid
96       end
97     end
98     context 'demander_urlを検証するとき' do
99       it 'nullなら失敗する' do
100         @demander.demander_url = ''
101         @demander.should_not be_valid
102       end
103       it '201文字以上なら失敗する' do
104         @demander.demander_url = 'http://test.jp/aaaaa' + 'a' * 181
105         @demander.should_not be_valid
106       end
107       it 'url形式でないなら失敗する' do
108         @demander.demander_url = 'aaaaaaa'
109         @demander.should_not be_valid
110       end
111     end
112     context 'demander_status_idを検証するとき' do
113       it 'nullなら失敗する' do
114         @demander.demander_status_id = nil
115         @demander.should_not be_valid
116       end
117       it '数値でなければ失敗する' do
118         @demander.demander_status_id = 'a'
119         @demander.should_not be_valid
120       end
121       it '存在する借受状況でなければ失敗する' do
122         @demander.demander_status_id = 0
123         @demander.should_not be_valid
124       end
125     end
126   end
127   
128   describe 'デフォルト値補充に於いて' do
129     it 'defined' do
130       @ds = FactoryGirl.create :demander_status
131       @demander = FactoryGirl.build :demander, :demander_status_id => @ds.id, :demand_user_id => @demand_user.id
132       @demander.supply_default
133     end
134   end
135   
136   describe '上書き補充に於いて' do
137     before do
138       @ds = FactoryGirl.create :demander_status
139       @demander = FactoryGirl.build :demander, :demander_status_id => @ds.id, :demand_user_id => nil
140     end
141     it 'demand_user_idに借手アカウントidを補充している' do
142       @demander.overwrite @demand_user
143       @demander.demand_user_id.should_not be_nil
144     end
145   end
146   
147   describe '所持判定に於いて' do
148     before do
149       @ds = FactoryGirl.create :demander_status
150       @demander = FactoryGirl.build :demander, :demander_status_id => @ds.id, :demand_user_id => @demand_user.id
151     end
152     it 'パラメータが借手アカウントでないならno' do
153       @demander.own?(nil).should == false
154     end
155     it '借手アカウントのidと一致するならyes' do
156       @demander.own?(@demand_user).should == true
157     end
158     it '借手アカウントのidと一致しないならno' do
159       @other_demand_user = FactoryGirl.create :demand_user
160       @demander.own?(@other_demand_user).should == false
161     end
162   end
163   
164   describe '閲覧許可に於いて' do
165     before do
166       @ds = FactoryGirl.create :demander_status
167       @demander = FactoryGirl.build :demander, :demander_status_id => @ds.id, :demand_user_id => @demand_user.id
168     end
169     it 'パラメータが借手アカウントでないならno' do
170       @demander.visible?(nil).should == false
171     end
172     it '借手アカウントのidと一致するならyes' do
173       @demander.visible?(@demand_user).should == true
174     end
175     it '借手アカウントのidと一致しないならno' do
176       @other_demand_user = FactoryGirl.create :demand_user
177       @demander.visible?(@other_demand_user).should == false
178     end
179   end
180   
181   describe '状態に於いて' do
182     before do
183       @ds = FactoryGirl.create :demander_status
184       @demander = FactoryGirl.create :demander, :demander_status_id => @ds.id, :demand_user_id => @demand_user.id
185     end
186     it '貸与状況の状態に問い合わせしている' do
187       DemanderStatus.any_instance.stub(:status).with(any_args).and_return(1)
188       DemanderStatus.any_instance.should_receive(:status).with(any_args).exactly(1)
189       r = @demander.status
190     end
191   end
192   
193   describe '一覧取得に於いて' do
194     before do
195       @ds = FactoryGirl.create :demander_status
196       @demander = FactoryGirl.create :demander, :demander_status_id => @ds.id, :demand_user_id => @demand_user.id, :name => "6"
197     end
198     context 'page補正について' do
199       it '文字列から数値に変換される' do
200         Demander.page('8').should eq 8
201       end
202       it 'nilの場合は1になる' do
203         Demander.page().should eq 1
204       end
205       it '0以下の場合は1になる' do
206         Demander.page('0').should eq 1
207       end
208     end
209     context 'page_size補正について' do
210       it '文字列から数値に変換される' do
211         Demander.page_size('7').should eq 7
212       end
213       it 'nilの場合はDemander.default_page_sizeになる' do
214         Demander.page_size().should eq Demander.default_page_size
215       end
216       it '0以下の場合はDemander.default_page_sizeになる' do
217         Demander.page_size('0').should eq Demander.default_page_size
218       end
219       it 'Demander.max_page_sizeを超えた場合はDemander.max_page_sizeになる' do
220         Demander.page_size('1000').should eq Demander.max_page_size
221       end
222     end
223     context 'つつがなく終わるとき' do
224       it '一覧取得オプションを利用している' do
225         Demander.stub(:list_opt).with(any_args).and_return({})
226         Demander.should_receive(:list_opt).with(any_args).exactly(1)
227         r = Demander.list
228       end
229     end
230     it 'リストを返す' do
231       r = Demander.list
232       r.should eq [@demander]
233     end
234     it '管理名で並んでいる' do
235       v = FactoryGirl.create :demander, :name => "0"
236       r = Demander.list
237       r.should eq [v, @demander]
238     end
239     context 'DBに5件あって1ページの件数を2件に変えたとして' do
240       before do
241         @ds2 = FactoryGirl.create :demander_status
242         @demander2 = FactoryGirl.create :demander, :demander_status_id => @ds2.id, :demand_user_id => @demand_user.id, :name => "5"
243         @ds3 = FactoryGirl.create :demander_status
244         @demander3 = FactoryGirl.create :demander, :demander_status_id => @ds3.id, :demand_user_id => @demand_user.id, :name => "4"
245         @ds4 = FactoryGirl.create :demander_status
246         @demander4 = FactoryGirl.create :demander, :demander_status_id => @ds4.id, :demand_user_id => @demand_user.id, :name => "3"
247         @ds5 = FactoryGirl.create :demander_status
248         @demander5 = FactoryGirl.create :demander, :demander_status_id => @ds5.id, :demand_user_id => @demand_user.id, :name => "2"
249         Demander.stub(:default_page_size).and_return(2)
250       end
251       it '通常は2件を返す' do
252         r = Demander.list
253         r.should have(2).items 
254       end
255       it 'page=1なら末尾2件を返す' do
256         #管理名で並んでいる
257         r = Demander.list(1)
258         r.should eq [@demander5, @demander4]
259       end
260       it 'page=2なら中間2件を返す' do
261         r = Demander.list(2)
262         r.should eq [@demander3, @demander2]
263       end
264       it 'page=3なら先頭1件を返す' do
265         r = Demander.list(3)
266         r.should eq [@demander]
267       end
268     end
269     context 'DBに5件あって1ページの件数を2件に変えたとして' do
270       before do
271         @ds2 = FactoryGirl.create :demander_status
272         @demander2 = FactoryGirl.create :demander, :demander_status_id => @ds2.id, :demand_user_id => @demand_user.id, :name => "5"
273         @ds3 = FactoryGirl.create :demander_status
274         @demander3 = FactoryGirl.create :demander, :demander_status_id => @ds3.id, :demand_user_id => @demand_user.id, :name => "4"
275         @ds4 = FactoryGirl.create :demander_status
276         @demander4 = FactoryGirl.create :demander, :demander_status_id => @ds4.id, :demand_user_id => @demand_user.id, :name => "3"
277         @ds5 = FactoryGirl.create :demander_status
278         @demander5 = FactoryGirl.create :demander, :demander_status_id => @ds5.id, :demand_user_id => @demand_user.id, :name => "2"
279         Demander.stub(:default_page_size).and_return(2)
280       end
281       it '件数0は全件(5件)を返す' do
282         r = Demander.list 5, 0
283         r.should have(5).items 
284       end
285     end
286   end
287   describe '待機中一覧取得に於いて' do
288   end
289   describe '一覧取得オプションに於いて' do
290     it 'includeキーを含んでいる' do
291       r = Demander.list_opt
292       r.has_key?(:include).should be_true
293     end
294     it '1つの項目を含んでいる' do
295       r = Demander.list_opt[:include]
296       r.should have(1).items
297     end
298     it '貸与状況を含んでいる' do
299       r = Demander.list_opt[:include]
300       r.has_key?(:demander_status).should be_true
301     end
302   end
303   describe 'json一覧出力オプションに於いて' do
304     before do
305       @ds = FactoryGirl.create :demander_status
306       @demander = FactoryGirl.create :demander, :demander_status_id => @ds.id, :demand_user_id => @demand_user.id
307     end
308     it '貸与状況を含んでいる' do
309       r = Demander.list.to_json Demander.list_json_opt
310       j = JSON.parse r
311       i = j.first
312       i.has_key?('demander_status').should be_true
313     end
314   end
315   
316   describe '単体取得に於いて' do
317     before do
318       @ds = FactoryGirl.create :demander_status
319       @demander = FactoryGirl.create :demander, :demander_status_id => @ds.id, :demand_user_id => @demand_user.id
320     end
321     context 'つつがなく終わるとき' do
322       it '単体取得オプションを利用している' do
323         Demander.stub(:show_opt).with(any_args).and_return({})
324         Demander.should_receive(:show_opt).with(any_args).exactly(1)
325         r = Demander.show @demander.id, @demand_user
326       end
327       it '閲覧許可を問い合わせている' do
328         Demander.any_instance.stub(:visible?).with(any_args).and_return(true)
329         Demander.any_instance.should_receive(:visible?).with(any_args).exactly(1)
330         r = Demander.show @demander.id, @demand_user
331       end
332     end
333     it '指定の借手を返す' do
334       r = Demander.show @demander.id, @demand_user
335       r.should eq @demander
336     end
337     context '閲覧許可が出なかったとき' do
338       it '403Forbidden例外を返す' do
339         Demander.any_instance.stub(:visible?).and_return(false)
340         lambda{
341           Demander.show @demander.id, @demand_user
342         }.should raise_error(ActiveRecord::Forbidden)
343       end
344     end
345     context '存在しない借手を開こうとしたとき' do
346       it '404RecordNotFound例外を返す' do
347         lambda{
348           Demander.show 110, @demand_user
349         }.should raise_error(ActiveRecord::RecordNotFound)
350       end
351     end
352   end
353   
354   describe '編集取得に於いて' do
355     before do
356       @ds = FactoryGirl.create :demander_status
357       @demander = FactoryGirl.create :demander, :demander_status_id => @ds.id, :demand_user_id => @demand_user.id
358     end
359     context 'つつがなく終わるとき' do
360       it '単体取得オプションを利用している' do
361         Demander.stub(:show_opt).with(any_args).and_return({})
362         Demander.should_receive(:show_opt).with(any_args).exactly(1)
363         r = Demander.edit @demander.id, @demand_user
364       end
365       it '所持判定を問い合わせている' do
366         Demander.any_instance.stub(:own?).with(any_args).and_return(true)
367         Demander.any_instance.should_receive(:own?).with(any_args).exactly(1)
368         r = Demander.edit @demander.id, @demand_user
369       end
370     end
371     it '指定の借手を返す' do
372       Demander.any_instance.stub(:own?).and_return(true)
373       r = Demander.edit @demander.id, @demand_user
374       r.should eq @demander
375     end
376     context '権限がなかったとき' do
377       it '403Forbidden例外を返す' do
378         Demander.any_instance.stub(:own?).and_return(false)
379         lambda{
380           Demander.edit @demander.id, @demand_user
381         }.should raise_error(ActiveRecord::Forbidden)
382       end
383     end
384     context '存在しない借手を開こうとしたとき' do
385       it '404RecordNotFound例外を返す' do
386         lambda{
387           Demander.edit 110, @demand_user
388         }.should raise_error(ActiveRecord::RecordNotFound)
389       end
390     end
391   end
392   describe '単体取得オプションに於いて' do
393     it 'includeキーを含んでいる' do
394       r = Demander.show_opt
395       r.has_key?(:include).should be_true
396     end
397     it '1つの項目を含んでいる' do
398       r = Demander.show_opt[:include]
399       r.should have(1).items
400     end
401     it '貸与状況を含んでいる' do
402       r = Demander.show_opt[:include]
403       r.has_key?(:demander_status).should be_true
404     end
405   end
406   describe 'json単体出力オプションに於いて' do
407     before do
408       @ds = FactoryGirl.create :demander_status
409       @demander = FactoryGirl.create :demander, :demander_status_id => @ds.id, :demand_user_id => @demand_user.id
410     end
411     it '貸与状況を含んでいる' do
412       r = Demander.show(@demander.id, @demand_user).to_json Demander.show_json_opt
413       j = JSON.parse r
414       i = j
415       i.has_key?('demander_status').should be_true
416     end
417   end
418   
419   describe '更新作成に於いて' do
420     before do
421       DemanderStatus.any_instance.stub(:supply_default).with(any_args)
422     end
423     context 'つつがなく終わるとき' do
424       before do
425         @demander = FactoryGirl.build :demander, :demander_status_id => nil, :demand_user_id => @demand_user.id
426       end
427       it '借手が追加される' do
428         lambda {
429           r = @demander.store
430         }.should change Demander, :count
431       end
432       it '貸与状況が作成される' do
433         lambda {
434           r = @demander.store
435         }.should change DemanderStatus, :count
436       end
437       it 'trueを返す' do
438         r = @demander.store
439         r.should be_true
440       end
441     end
442     context '貸与状況があるとき' do
443       before do
444         @ds = FactoryGirl.create :demander_status
445         @demander = FactoryGirl.create :demander, :demander_status_id => @ds.id, :demand_user_id => @demand_user.id
446       end
447       it '借手は変化しない' do
448         lambda {
449           r = @demander.store
450         }.should_not change Demander, :count
451       end
452       it '貸与状況は変化しない' do
453         lambda {
454           r = @demander.store
455         }.should_not change DemanderStatus, :count
456       end
457     end
458     context '貸与状況の作成に失敗したとき' do
459       before do
460         DemanderStatus.any_instance.stub(:save).with(any_args).and_return(false)
461         @demander = FactoryGirl.build :demander, :demander_status_id => nil, :demand_user_id => @demand_user.id
462       end
463       it '借手は変化しない' do
464         lambda {
465           r = @demander.store
466         }.should_not change Demander, :count
467       end
468       it '貸与状況は変化しない' do
469         lambda {
470           r = @demander.store
471         }.should_not change DemanderStatus, :count
472       end
473       it '借手の検証は失敗している' do
474         r = @demander.store
475         r.should be_false
476       end
477     end
478   end
479   
480   describe '借受停止に於いて' do
481     before do
482       @ds = FactoryGirl.create :demander_status, :requested_at => Time.now, :approved_at => Time.now, :rejected_at => Time.now, :receive_hour1 => 0, :receive_hour2 => 0
483       @demander = FactoryGirl.create :demander, :demander_status_id => @ds.id
484     end
485     context '事前チェックする' do
486       it '貸与状況に借受停止を依頼している' do
487         DemanderStatus.any_instance.stub(:stop).with(any_args).and_return(true)
488         DemanderStatus.any_instance.should_receive(:stop).with(any_args).exactly(1)
489         r = @demander.stop
490       end
491     end
492     context 'つつがなく終わるとき' do
493       it 'Trueを返す' do
494         DemanderStatus.any_instance.stub(:stop).with(any_args).and_return(true)
495         r = @demander.stop
496         r.should be_true
497       end
498     end
499   end
500   
501   describe 'ライセンスエクスポートに於いて' do
502     before do
503       @ds = FactoryGirl.create :demander_status, :requested_at => Time.now, :approved_at => Time.now, :rejected_at => Time.now, :receive_hour1 => 0, :receive_hour2 => 0
504       @demander = FactoryGirl.create :demander, :demander_status_id => @ds.id
505     end
506     context '事前チェックする' do
507       before do
508         Demander.any_instance.stub(:status).and_return(3)
509       end
510       it 'ライセンスモデルにエクスポートを依頼している' do
511         License.stub(:export).with(nil).and_return([@license])
512         License.should_receive(:export).with(nil).exactly(1)
513         r = @demander.licenses_export
514       end
515     end
516     context 'つつがなく終わるとき' do
517       before do
518         Demander.any_instance.stub(:status).and_return(3)
519       end
520       it 'ライセンスリストを返す' do
521         License.stub(:export).with(Time.parse('2011/10/10')).and_return([@license])
522         r = @demander.licenses_export Time.parse('2011/10/10')
523         r.should eq [@license]
524       end
525     end
526     context '日時指定しないとき' do
527       before do
528         Demander.any_instance.stub(:status).and_return(3)
529       end
530       it 'パラメータなしでリストを取得する' do
531         License.stub(:export).with(nil).and_return([@license])
532         License.should_receive(:export).with(nil).exactly(1)
533         r = @demander.licenses_export nil
534       end
535     end
536     #例外ケース
537     context '状態が貸与中でないとき' do
538       it '例外403 ActiveRecord::Forbiddenを発生させる' do
539         Demander.any_instance.stub(:status).and_return(2)
540         lambda{
541           r = @demander.licenses_export
542         }.should raise_error(ActiveRecord::Forbidden)
543       end
544     end
545   end
546   
547   describe '絵師エクスポートに於いて' do
548     before do
549       @ds = FactoryGirl.create :demander_status, :requested_at => Time.now, :approved_at => Time.now, :rejected_at => Time.now, :receive_hour1 => 0, :receive_hour2 => 0
550       @demander = FactoryGirl.create :demander, :demander_status_id => @ds.id
551       @artist = FactoryGirl.create :artist, :author_id => @author.id
552     end
553     context '事前チェックする' do
554       before do
555         Demander.any_instance.stub(:status).and_return(3)
556       end
557       it '絵師モデルにエクスポートを依頼している' do
558         Artist.stub(:export).with(nil).and_return([@artist])
559         Artist.should_receive(:export).with(nil).exactly(1)
560         r = @demander.artists_export
561       end
562     end
563     context 'つつがなく終わるとき' do
564       before do
565         Demander.any_instance.stub(:status).and_return(3)
566       end
567       it '絵師リストを返す' do
568         Artist.stub(:export).with(Time.parse('2011/10/10')).and_return([@artist])
569         r = @demander.artists_export Time.parse('2011/10/10')
570         r.should eq [@artist]
571       end
572     end
573     context '日時指定しないとき' do
574       before do
575         Demander.any_instance.stub(:status).and_return(3)
576       end
577       it 'パラメータなしでリストを取得する' do
578         Artist.stub(:export).with(nil).and_return([@artist])
579         Artist.should_receive(:export).with(nil).exactly(1)
580         r = @demander.artists_export nil
581       end
582     end
583     #例外ケース
584     context '状態が貸与中でないとき' do
585       it '例外403 ActiveRecord::Forbiddenを発生させる' do
586         Demander.any_instance.stub(:status).and_return(2)
587         lambda{
588           r = @demander.artists_export
589         }.should raise_error(ActiveRecord::Forbidden)
590       end
591     end
592   end
593   
594   describe '原画エクスポートに於いて' do
595     before do
596       @ds = FactoryGirl.create :demander_status, :requested_at => Time.now, :approved_at => Time.now, :rejected_at => Time.now, :receive_hour1 => 0, :receive_hour2 => 0
597       @demander = FactoryGirl.create :demander, :demander_status_id => @ds.id
598       @artist = FactoryGirl.create :artist, :author_id => @author.id
599       @op = FactoryGirl.create :original_picture, :artist_id => @artist.id
600     end
601     context '事前チェックする' do
602       before do
603         Demander.any_instance.stub(:status).and_return(3)
604       end
605       it '原画モデルに内原画エクスポートを依頼している' do
606         OriginalPicture.stub(:export).with(nil).and_return([@op])
607         OriginalPicture.should_receive(:export).with(nil).exactly(1)
608         r = @demander.original_pictures_export
609       end
610     end
611     context 'つつがなく終わるとき' do
612       before do
613         Demander.any_instance.stub(:status).and_return(3)
614       end
615       it '内原画リストを返す' do
616         OriginalPicture.stub(:export).with(Time.parse('2011/10/10')).and_return([@op])
617         r = @demander.original_pictures_export Time.parse('2011/10/10')
618         r.should eq [@op]
619       end
620     end
621     context '日時指定しないとき' do
622       before do
623         Demander.any_instance.stub(:status).and_return(3)
624       end
625       it 'パラメータなしでリストを取得する' do
626         OriginalPicture.stub(:export).with(nil).and_return([@op])
627         OriginalPicture.should_receive(:export).with(nil).exactly(1)
628         r = @demander.original_pictures_export nil
629       end
630     end
631     #例外ケース
632     context '状態が貸与中でないとき' do
633       it '例外403 ActiveRecord::Forbiddenを発生させる' do
634         Demander.any_instance.stub(:status).and_return(2)
635         lambda{
636           r = @demander.original_pictures_export
637         }.should raise_error(ActiveRecord::Forbidden)
638       end
639     end
640   end
641   
642   describe '実素材エクスポートに於いて' do
643     before do
644       @ds = FactoryGirl.create :demander_status, :requested_at => Time.now, :approved_at => Time.now, :rejected_at => Time.now, :receive_hour1 => 0, :receive_hour2 => 0
645       @demander = FactoryGirl.create :demander, :demander_status_id => @ds.id
646       @artist = FactoryGirl.create :artist, :author_id => @author.id
647       @op = FactoryGirl.create :original_picture, :artist_id => @artist.id
648       @p = FactoryGirl.create :picture, :artist_id => @artist.id, :original_picture_id => @op.id, :license_id => @license.id, :revision => 0
649     end
650     context '事前チェックする' do
651       before do
652         Demander.any_instance.stub(:status).and_return(3)
653       end
654       it '実素材モデルにエクスポートを依頼している' do
655         Picture.stub(:export).with(nil).and_return([@p])
656         Picture.should_receive(:export).with(nil).exactly(1)
657         r = @demander.pictures_export
658       end
659     end
660     context 'つつがなく終わるとき' do
661       before do
662         Demander.any_instance.stub(:status).and_return(3)
663       end
664       it '実素材リストを返す' do
665         Picture.stub(:export).with(Time.parse('2011/10/10')).and_return([@p])
666         r = @demander.pictures_export Time.parse('2011/10/10')
667         r.should eq [@p]
668       end
669     end
670     context '日時指定しないとき' do
671       before do
672         Demander.any_instance.stub(:status).and_return(3)
673       end
674       it 'パラメータなしでリストを取得する' do
675         Picture.stub(:export).with(nil).and_return([@p])
676         Picture.should_receive(:export).with(nil).exactly(1)
677         r = @demander.pictures_export nil
678       end
679     end
680     #例外ケース
681     context '状態が貸与中でないとき' do
682       it '例外403 ActiveRecord::Forbiddenを発生させる' do
683         Demander.any_instance.stub(:status).and_return(2)
684         lambda{
685           r = @demander.pictures_export
686         }.should raise_error(ActiveRecord::Forbidden)
687       end
688     end
689   end
690   
691 end