1 # -*- encoding: utf-8 -*-
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
17 @ds = FactoryGirl.create :demander_status
18 @demander = FactoryGirl.build :demander, :demander_status_id => @ds.id, :demand_user_id => @demand_user.id
21 context 'オーソドックスなデータのとき' do
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
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
40 context 'demand_user_idを検証するとき' do
42 @demander.demand_user_id = nil
43 @demander.should_not be_valid
46 @demander.demand_user_id = 'a'
47 @demander.should_not be_valid
49 it '存在する借手ユーザでなければ失敗する' do
50 @demander.demand_user_id = 0
51 @demander.should_not be_valid
54 context 'nameを検証するとき' do
57 @demander.should_not be_valid
60 @demander.name = 'a'*51
61 @demander.should_not be_valid
64 l = FactoryGirl.create :demander
65 @demander.should_not be_valid
68 context 'captionを検証するとき' do
70 @demander.caption = ''
71 @demander.should_not be_valid
74 @demander.caption = 'a'*31
75 @demander.should_not be_valid
78 context 'urlを検証するとき' do
81 @demander.should_not be_valid
84 @demander.url = 'http://test.jp/aaaaa' + 'a' * 181
85 @demander.should_not be_valid
87 it 'url形式でないなら失敗する' do
88 @demander.url = 'aaaaaaa'
89 @demander.should_not be_valid
92 context 'descriptionを検証するとき' do
94 @demander.description= ''
95 @demander.should_not be_valid
98 context 'demander_urlを検証するとき' do
100 @demander.demander_url = ''
101 @demander.should_not be_valid
103 it '201文字以上なら失敗する' do
104 @demander.demander_url = 'http://test.jp/aaaaa' + 'a' * 181
105 @demander.should_not be_valid
107 it 'url形式でないなら失敗する' do
108 @demander.demander_url = 'aaaaaaa'
109 @demander.should_not be_valid
112 context 'demander_status_idを検証するとき' do
114 @demander.demander_status_id = nil
115 @demander.should_not be_valid
118 @demander.demander_status_id = 'a'
119 @demander.should_not be_valid
121 it '存在する借受状況でなければ失敗する' do
122 @demander.demander_status_id = 0
123 @demander.should_not be_valid
128 describe 'デフォルト値補充に於いて' 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
136 describe '上書き補充に於いて' do
138 @ds = FactoryGirl.create :demander_status
139 @demander = FactoryGirl.build :demander, :demander_status_id => @ds.id, :demand_user_id => nil
141 it 'demand_user_idに借手アカウントidを補充している' do
142 @demander.overwrite @demand_user
143 @demander.demand_user_id.should_not be_nil
147 describe '所持判定に於いて' do
149 @ds = FactoryGirl.create :demander_status
150 @demander = FactoryGirl.build :demander, :demander_status_id => @ds.id, :demand_user_id => @demand_user.id
152 it 'パラメータが借手アカウントでないならno' do
153 @demander.own?(nil).should == false
155 it '借手アカウントのidと一致するならyes' do
156 @demander.own?(@demand_user).should == true
158 it '借手アカウントのidと一致しないならno' do
159 @other_demand_user = FactoryGirl.create :demand_user
160 @demander.own?(@other_demand_user).should == false
164 describe '閲覧許可に於いて' do
166 @ds = FactoryGirl.create :demander_status
167 @demander = FactoryGirl.build :demander, :demander_status_id => @ds.id, :demand_user_id => @demand_user.id
169 it 'パラメータが借手アカウントでないならno' do
170 @demander.visible?(nil).should == false
172 it '借手アカウントのidと一致するならyes' do
173 @demander.visible?(@demand_user).should == true
175 it '借手アカウントのidと一致しないならno' do
176 @other_demand_user = FactoryGirl.create :demand_user
177 @demander.visible?(@other_demand_user).should == false
183 @ds = FactoryGirl.create :demander_status
184 @demander = FactoryGirl.create :demander, :demander_status_id => @ds.id, :demand_user_id => @demand_user.id
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)
193 describe '一覧取得に於いて' 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"
198 context 'page補正について' do
199 it '文字列から数値に変換される' do
200 Demander.page('8').should eq 8
203 Demander.page().should eq 1
206 Demander.page('0').should eq 1
209 context 'page_size補正について' do
210 it '文字列から数値に変換される' do
211 Demander.page_size('7').should eq 7
213 it 'nilの場合はDemander.default_page_sizeになる' do
214 Demander.page_size().should eq Demander.default_page_size
216 it '0以下の場合はDemander.default_page_sizeになる' do
217 Demander.page_size('0').should eq Demander.default_page_size
219 it 'Demander.max_page_sizeを超えた場合はDemander.max_page_sizeになる' do
220 Demander.page_size('1000').should eq Demander.max_page_size
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)
232 r.should eq [@demander]
235 v = FactoryGirl.create :demander, :name => "0"
237 r.should eq [v, @demander]
239 context 'DBに5件あって1ページの件数を2件に変えたとして' 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)
253 r.should have(2).items
255 it 'page=1なら末尾2件を返す' do
258 r.should eq [@demander5, @demander4]
260 it 'page=2なら中間2件を返す' do
262 r.should eq [@demander3, @demander2]
264 it 'page=3なら先頭1件を返す' do
266 r.should eq [@demander]
269 context 'DBに5件あって1ページの件数を2件に変えたとして' 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)
281 it '件数0は全件(5件)を返す' do
282 r = Demander.list 5, 0
283 r.should have(5).items
287 describe '待機中一覧取得に於いて' do
289 describe '一覧取得オプションに於いて' do
290 it 'includeキーを含んでいる' do
291 r = Demander.list_opt
292 r.has_key?(:include).should be_true
295 r = Demander.list_opt[:include]
296 r.should have(1).items
299 r = Demander.list_opt[:include]
300 r.has_key?(:demander_status).should be_true
303 describe 'json一覧出力オプションに於いて' do
305 @ds = FactoryGirl.create :demander_status
306 @demander = FactoryGirl.create :demander, :demander_status_id => @ds.id, :demand_user_id => @demand_user.id
309 r = Demander.list.to_json Demander.list_json_opt
312 i.has_key?('demander_status').should be_true
316 describe '単体取得に於いて' do
318 @ds = FactoryGirl.create :demander_status
319 @demander = FactoryGirl.create :demander, :demander_status_id => @ds.id, :demand_user_id => @demand_user.id
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
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
334 r = Demander.show @demander.id, @demand_user
335 r.should eq @demander
337 context '閲覧許可が出なかったとき' do
338 it '403Forbidden例外を返す' do
339 Demander.any_instance.stub(:visible?).and_return(false)
341 Demander.show @demander.id, @demand_user
342 }.should raise_error(ActiveRecord::Forbidden)
345 context '存在しない借手を開こうとしたとき' do
346 it '404RecordNotFound例外を返す' do
348 Demander.show 110, @demand_user
349 }.should raise_error(ActiveRecord::RecordNotFound)
354 describe '編集取得に於いて' do
356 @ds = FactoryGirl.create :demander_status
357 @demander = FactoryGirl.create :demander, :demander_status_id => @ds.id, :demand_user_id => @demand_user.id
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
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
372 Demander.any_instance.stub(:own?).and_return(true)
373 r = Demander.edit @demander.id, @demand_user
374 r.should eq @demander
376 context '権限がなかったとき' do
377 it '403Forbidden例外を返す' do
378 Demander.any_instance.stub(:own?).and_return(false)
380 Demander.edit @demander.id, @demand_user
381 }.should raise_error(ActiveRecord::Forbidden)
384 context '存在しない借手を開こうとしたとき' do
385 it '404RecordNotFound例外を返す' do
387 Demander.edit 110, @demand_user
388 }.should raise_error(ActiveRecord::RecordNotFound)
392 describe '単体取得オプションに於いて' do
393 it 'includeキーを含んでいる' do
394 r = Demander.show_opt
395 r.has_key?(:include).should be_true
398 r = Demander.show_opt[:include]
399 r.should have(1).items
402 r = Demander.show_opt[:include]
403 r.has_key?(:demander_status).should be_true
406 describe 'json単体出力オプションに於いて' do
408 @ds = FactoryGirl.create :demander_status
409 @demander = FactoryGirl.create :demander, :demander_status_id => @ds.id, :demand_user_id => @demand_user.id
412 r = Demander.show(@demander.id, @demand_user).to_json Demander.show_json_opt
415 i.has_key?('demander_status').should be_true
419 describe '更新作成に於いて' do
421 DemanderStatus.any_instance.stub(:supply_default).with(any_args)
423 context 'つつがなく終わるとき' do
425 @demander = FactoryGirl.build :demander, :demander_status_id => nil, :demand_user_id => @demand_user.id
430 }.should change Demander, :count
435 }.should change DemanderStatus, :count
442 context '貸与状況があるとき' do
444 @ds = FactoryGirl.create :demander_status
445 @demander = FactoryGirl.create :demander, :demander_status_id => @ds.id, :demand_user_id => @demand_user.id
450 }.should_not change Demander, :count
455 }.should_not change DemanderStatus, :count
458 context '貸与状況の作成に失敗したとき' 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
466 }.should_not change Demander, :count
471 }.should_not change DemanderStatus, :count
480 describe '借受停止に於いて' 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
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)
492 context 'つつがなく終わるとき' do
494 DemanderStatus.any_instance.stub(:stop).with(any_args).and_return(true)
501 describe 'ライセンスエクスポートに於いて' 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
506 context '事前チェックする' do
508 Demander.any_instance.stub(:status).and_return(3)
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
516 context 'つつがなく終わるとき' do
518 Demander.any_instance.stub(:status).and_return(3)
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]
526 context '日時指定しないとき' do
528 Demander.any_instance.stub(:status).and_return(3)
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
537 context '状態が貸与中でないとき' do
538 it '例外403 ActiveRecord::Forbiddenを発生させる' do
539 Demander.any_instance.stub(:status).and_return(2)
541 r = @demander.licenses_export
542 }.should raise_error(ActiveRecord::Forbidden)
547 describe '絵師エクスポートに於いて' 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
553 context '事前チェックする' do
555 Demander.any_instance.stub(:status).and_return(3)
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
563 context 'つつがなく終わるとき' do
565 Demander.any_instance.stub(:status).and_return(3)
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]
573 context '日時指定しないとき' do
575 Demander.any_instance.stub(:status).and_return(3)
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
584 context '状態が貸与中でないとき' do
585 it '例外403 ActiveRecord::Forbiddenを発生させる' do
586 Demander.any_instance.stub(:status).and_return(2)
588 r = @demander.artists_export
589 }.should raise_error(ActiveRecord::Forbidden)
594 describe '原画エクスポートに於いて' 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
601 context '事前チェックする' do
603 Demander.any_instance.stub(:status).and_return(3)
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
611 context 'つつがなく終わるとき' do
613 Demander.any_instance.stub(:status).and_return(3)
616 OriginalPicture.stub(:export).with(Time.parse('2011/10/10')).and_return([@op])
617 r = @demander.original_pictures_export Time.parse('2011/10/10')
621 context '日時指定しないとき' do
623 Demander.any_instance.stub(:status).and_return(3)
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
632 context '状態が貸与中でないとき' do
633 it '例外403 ActiveRecord::Forbiddenを発生させる' do
634 Demander.any_instance.stub(:status).and_return(2)
636 r = @demander.original_pictures_export
637 }.should raise_error(ActiveRecord::Forbidden)
642 describe '実素材エクスポートに於いて' 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
650 context '事前チェックする' do
652 Demander.any_instance.stub(:status).and_return(3)
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
660 context 'つつがなく終わるとき' do
662 Demander.any_instance.stub(:status).and_return(3)
665 Picture.stub(:export).with(Time.parse('2011/10/10')).and_return([@p])
666 r = @demander.pictures_export Time.parse('2011/10/10')
670 context '日時指定しないとき' do
672 Demander.any_instance.stub(:status).and_return(3)
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
681 context '状態が貸与中でないとき' do
682 it '例外403 ActiveRecord::Forbiddenを発生させる' do
683 Demander.any_instance.stub(:status).and_return(2)
685 r = @demander.pictures_export
686 }.should raise_error(ActiveRecord::Forbidden)