1 # -*- encoding: utf-8 -*-
5 describe DemandersController 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
16 describe '借手メニューに於いて' do
20 context 'つつがなく終わるとき' do
22 @ds = FactoryGirl.create :demander_status
23 @demander = FactoryGirl.create :demander, :demander_status_id => @ds.id, :demand_user_id => @demand_user.id
25 it 'ステータスコード200 OKを返す' do
27 response.should be_success
29 it '借手アカウントから@demanderに借手を取得している' do
31 assigns(:demander).should eq(@demander)
34 it 'indexテンプレートを描画する' do
36 response.should render_template("index")
42 context '借手が存在しなかったとき' do
44 it 'ステータスコード302 Foundを返す' do
46 response.status.should eq 302
48 it 'プロフィール登録ページへ遷移する' do
50 response.body.should redirect_to new_demander_path
54 context '借手権限がないとき' do
59 it 'ステータスコード302 Foundを返す' do
61 response.status.should eq 302
65 response.body.should redirect_to '/demand_users/sign_in'
73 describe '新規作成フォーム表示に於いて' do
77 context 'つつがなく終わるとき' do
78 it 'ステータスコード200 OKを返す' do
80 response.should be_success
82 it '@demanderに新規データを用意している' do
84 assigns(:demander).should be_a_new(Demander)
86 it '借手モデルにデフォルト値補充を依頼している' do
87 Demander.any_instance.should_receive(:supply_default).exactly(1)
91 it 'newテンプレートを描画する' do
93 response.should render_template("new")
98 get :new, :format => :json
99 lambda{JSON.parse(response.body)}.should_not raise_error(JSON::ParserError)
101 it '借手モデルにjson単体出力オプションを問い合わせている' do
102 Demander.should_receive(:show_json_opt).exactly(1)
103 get :new, :format => :json
107 context '借手権限がないとき' do
109 sign_out @demand_user
112 it 'ステータスコード302 Foundを返す' do
114 response.status.should eq 302
116 it 'サインインページへ遷移する' do
118 response.body.should redirect_to '/demand_users/sign_in'
122 it 'ステータスコード401 Unauthorizedを返す' do
123 get :new, :format => :json
124 response.status.should eq 401
126 it '応答メッセージにUnauthorizedを返す' do
127 get :new, :format => :json
128 response.message.should match(/Unauthorized/)
134 describe '新規作成に於いて' do
137 @attr = FactoryGirl.attributes_for(:demander, :demand_user_id => @demand_user.id, :caption => 'normal')
139 context '事前チェックしておく' do
140 it '借手モデルにデフォルト値補充を依頼している' do
141 Demander.any_instance.should_receive(:supply_default).exactly(1)
142 post :create, :demander => @attr
144 it '借手モデルにカラム値復元を依頼している' do
145 Demander.any_instance.should_receive(:attributes=).exactly(1)
146 post :create, :demander => @attr
148 it '借手モデルに上書き補充を依頼している' do
149 Demander.any_instance.should_receive(:overwrite).exactly(1)
150 post :create, :demander => @attr
153 Demander.any_instance.should_receive(:store).exactly(1)
154 post :create, :demander => @attr
157 context 'つつがなく終わるとき' do
158 it "@demanderに作成された借手を保持していて、それがDBにある" do
159 post :create, :demander => @attr
160 assigns(:demander).should be_a(Demander)
161 assigns(:demander).should be_persisted
164 it 'ステータスコード302 Foundを返す' do
165 Demander.any_instance.stub(:store).and_return(true)
166 post :create, :demander => @attr
167 response.status.should eq 302
169 it '作成された借手の表示ページへ遷移する' do
170 # Demander.any_instance.stub(:save).and_return(true)
171 post :create, :demander => @attr
172 response.should redirect_to(Demander.last)
176 it 'ステータスコード200 OKを返す' do
177 # Demander.any_instance.stub(:save).and_return(true)
178 post :create, :demander => @attr, :format => :json
179 response.should be_success
181 it '作成された借手をjsonデータで返す' do
182 post :create, :demander => @attr, :format => :json
183 lambda{JSON.parse(response.body)}.should_not raise_error(JSON::ParserError)
186 post :create, :demander => @attr, :format => :json
187 json = JSON.parse response.body
188 json["caption"].should match(/normal/)
192 context '借手権限がないとき' do
194 sign_out @demand_user
197 it 'ステータスコード302 Foundを返す' do
198 post :create, :demander => @attr
199 response.status.should eq 302
201 it 'サインインページへ遷移する' do
202 post :create, :demander => @attr
203 response.body.should redirect_to '/demand_users/sign_in'
207 it 'ステータスコード401 Unauthorizedを返す' do
208 post :create, :demander => @attr, :format => :json
209 response.status.should eq 401
211 it '応答メッセージにUnauthorizedを返す' do
212 post :create, :demander => @attr, :format => :json
213 response.message.should match(/Unauthorized/)
217 context '検証、保存に失敗した' do
219 Demander.any_instance.stub(:store).and_return(false)
221 it "未保存の借手を保持している" do
222 post :create, :demander => @attr
223 assigns(:demander).should be_a_new(Demander)
226 it 'ステータスコード200 OKを返す' do
227 post :create, :demander => @attr
228 response.status.should eq 200
231 post :create, :demander => @attr
232 response.should render_template("new")
236 it 'ステータスコード422 unprocessable_entity を返す' do
237 post :create, :demander => @attr, :format => :json
238 response.status.should eq 422
240 it '応答メッセージUnprocessable Entityを返す' do
241 post :create, :demander => @attr, :format => :json
242 response.message.should match(/Unprocessable/)
248 describe '編集フォーム表示に於いて' do
250 @ds = FactoryGirl.create :demander_status
251 @demander = FactoryGirl.create :demander, :demander_status_id => @ds.id, :demand_user_id => @demand_user.id
253 Demander.stub(:edit).and_return(@demander)
255 context 'つつがなく終わるとき' do
256 it 'ステータスコード200 OKを返す' do
257 get :edit, :id => @demander.id
258 response.should be_success
260 it '借手モデルに編集取得を問い合わせている' do
261 Demander.should_receive(:edit).exactly(1)
262 get :edit, :id => @demander.id
264 it '@demanderにデータを用意している' do
265 get :edit, :id => @demander.id
266 assigns(:demander).should eq @demander
269 it 'editテンプレートを描画する' do
270 get :edit, :id => @demander.id
271 response.should render_template("edit")
275 context '借手権限がないとき' do
277 sign_out @demand_user
280 it 'ステータスコード302 Foundを返す' do
281 get :edit, :id => @demander.id
282 response.status.should eq 302
284 it 'サインインページへ遷移する' do
285 get :edit, :id => @demander.id
286 response.body.should redirect_to '/demand_users/sign_in'
294 @ds = FactoryGirl.create :demander_status
295 @demander = FactoryGirl.create :demander, :demander_status_id => @ds.id, :demand_user_id => @demand_user.id
296 @attr = FactoryGirl.attributes_for(:demander, :demander_status_id => @ds.id, :demand_user_id => @demand_user.id, :caption => 'updated caption')
299 context '事前チェックしておく' do
300 it '借手モデルに編集取得を問い合わせている' do
301 Demander.stub(:edit).with(any_args()).and_return @demander
302 Demander.should_receive(:edit).exactly(1)
303 put :update, :id => @demander.id, :demander => @attr
305 it '借手モデルにカラム値復元を依頼している' do
306 Demander.any_instance.should_receive(:attributes=).exactly(1)
307 put :update, :id => @demander.id, :demander => @attr
309 it '借手モデルに上書き補充を依頼している' do
310 Demander.any_instance.should_receive(:overwrite).exactly(1)
311 put :update, :id => @demander.id, :demander => @attr
314 Demander.any_instance.stub(:store).with(any_args).and_return true
315 Demander.any_instance.should_receive(:store).exactly(1)
316 put :update, :id => @demander.id, :demander => @attr
318 it '@demanderにアレを取得している' do
319 put :update, :id => @demander.id, :demander => @attr
320 assigns(:demander).id.should eq(@demander.id)
323 context 'つつがなく終わるとき' do
325 put :update, :id => @demander.id, :demander => @attr
326 Demander.find(@demander.id).caption.should match /updated/
330 Demander.any_instance.stub(:store).with(any_args()).and_return(true)
332 it 'ステータスコード302 Foundを返す' do
333 put :update, :id => @demander.id, :demander => @attr
334 response.status.should eq 302
336 it '更新された借手の表示ページへ遷移する' do
337 put :update, :id => @demander.id, :demander => @attr
338 response.should redirect_to(@demander)
343 Demander.any_instance.stub(:store).with(any_args()).and_return(true)
345 it 'ステータスコード200 OKを返す' do
346 put :update, :id => @demander.id, :demander => @attr, :format => :json
347 response.should be_success
350 put :update, :id => @demander.id, :demander => @attr, :format => :json
351 response.body.should match /./
355 context '借手権限がないとき' do
357 sign_out @demand_user
359 it 'ステータスコード302 Foundを返す' do
360 put :update, :id => @demander.id, :demander => @attr
361 response.status.should eq 302
364 it 'サインインページへ遷移する' do
365 put :update, :id => @demander.id, :demander => @attr
366 response.body.should redirect_to '/demand_users/sign_in'
370 it '応答メッセージにUnauthorizedを返す' do
371 put :update, :id => @demander.id, :demander => @attr, :format => :json
372 response.message.should match(/Unauthorized/)
376 context '検証、保存に失敗したとき' do
378 Demander.any_instance.stub(:store).and_return(false)
381 it 'ステータスコード200 Okを返す' do
382 put :update, :id => @demander.id, :demander => @attr
383 response.status.should eq 200
386 put :update, :id => @demander.id, :demander => @attr
387 response.should render_template("edit")
391 it 'ステータスコード422 unprocessable_entity を返す' do
392 Demander.any_instance.stub(:save).and_return(false)
393 put :update, :id => @demander.id, :demander => @attr, :format => :json
394 response.status.should eq 422
396 it '応答メッセージUnprocessable Entityを返す' do
397 put :update, :id => @demander.id, :demander => @attr, :format => :json
398 response.message.should match(/Unprocessable/)
404 describe '借受申請に於いて' do
406 @ds = FactoryGirl.create :demander_status
407 @demander = FactoryGirl.create :demander, :demander_status_id => @ds.id, :demand_user_id => @demand_user.id
408 @attr = FactoryGirl.attributes_for(:demander, :demander_status_id => @ds.id, :demand_user_id => @demand_user.id, :caption => 'updated caption')
411 context '事前チェックしておく' do
412 it '借手モデルの貸与状況に借受申請を依頼している' do
413 DemanderStatus.stub(:request).with(any_args()).and_return true
414 DemanderStatus.any_instance.should_receive(:request).exactly(1)
418 context 'つつがなく終わるとき' do
421 DemanderStatus.any_instance.stub(:request).with(any_args()).and_return(true)
423 it 'ステータスコード302 Foundを返す' do
425 response.status.should eq 302
427 it '借手ホーム(index)ページへ遷移する' do
429 response.should redirect_to(demanders_path)
431 it '一時的メッセージに処理成功を設定する' do
433 flash[:notice].should eq I18n.t('demanders.flash.notice.requested')
438 DemanderStatus.any_instance.stub(:request).with(any_args()).and_return(true)
440 it 'ステータスコード200 OKを返す' do
441 post :req, :format => :json
442 response.should be_success
445 post :req, :format => :json
446 response.body.should match /./
450 context '借手権限がないとき' do
452 sign_out @demand_user
454 it 'ステータスコード302 Foundを返す' do
456 response.status.should eq 302
459 it 'サインインページへ遷移する' do
461 response.body.should redirect_to '/demand_users/sign_in'
465 it '応答メッセージにUnauthorizedを返す' do
466 post :req, :format => :json
467 response.message.should match(/Unauthorized/)
471 context '検証、保存に失敗したとき' do
473 DemanderStatus.any_instance.stub(:request).with(any_args()).and_return(false)
476 it 'ステータスコード302 Foundを返す' do
478 response.status.should eq 302
480 it '借手ホーム(index)ページへ遷移する' do
482 response.should redirect_to(demanders_path)
484 it '一時的メッセージに処理失敗を設定する' do
486 flash[:notice].should eq I18n.t('demanders.flash.notice.not_requested')
490 it 'ステータスコード422 unprocessable_entity を返す' do
491 post :req, :format => :json
492 response.status.should eq 422
494 it '応答メッセージUnprocessable Entityを返す' do
495 post :req, :format => :json
496 response.message.should match(/Unprocessable/)
502 describe '借受停止に於いて' do
504 @ds = FactoryGirl.create :demander_status, :requested_at => Time.now, :approved_at => Time.now
505 @demander = FactoryGirl.create :demander, :demander_status_id => @ds.id
508 context '事前チェックしておく' do
509 it '借手モデルに編集取得を問い合わせている' do
510 Demander.stub(:edit).with(any_args()).and_return @demander
511 Demander.should_receive(:edit).exactly(1)
512 delete :destroy, :id => @demander.id
514 it '借手モデルに借受停止を依頼する' do
515 Demander.any_instance.stub(:stop).with(any_args).and_return true
516 Demander.any_instance.should_receive(:stop).exactly(1)
517 delete :destroy, :id => @demander.id
519 it '@demanderにアレを取得している' do
520 delete :destroy, :id => @demander.id
521 assigns(:demander).should eq(@demander)
524 context 'つつがなく終わるとき' do
526 Demander.any_instance.stub(:stop).with(any_args()).and_return(true)
529 it 'ステータスコード302 Foundを返す' do
530 delete :destroy, :id => @demander.id
531 response.status.should eq 302
533 it '借手ホーム(index)ページに遷移する' do
534 delete :destroy, :id => @demander.id
535 response.should redirect_to(demanders_path)
537 it '一時的メッセージに処理成功を設定する' do
538 delete :destroy, :id => @demander.id
539 flash[:notice].should eq I18n.t('demanders.flash.notice.stopped')
543 it 'ステータスコード200 OKを返す' do
544 delete :destroy, :id => @demander.id, :format => :json
545 response.should be_success
548 delete :destroy, :id => @demander.id, :format => :json
549 response.body.should match /./
553 context '借手権限がないとき' do
555 sign_out @demand_user
557 it 'ステータスコード302 Foundを返す' do
558 delete :destroy, :id => @demander.id
559 response.status.should eq 302
562 it 'サインインページへ遷移する' do
563 delete :destroy, :id => @demander.id
564 response.body.should redirect_to '/demand_users/sign_in'
568 it '応答メッセージにUnauthorizedを返す' do
569 delete :destroy, :id => @demander.id, :format => :json
570 response.message.should match(/Unauthorized/)
574 context '借受停止に失敗したとき' do
576 Demander.any_instance.stub(:stop).with(any_args).and_return(false)
579 it 'ステータスコード302 Foundを返す' do
580 delete :destroy, :id => @demander.id
581 response.status.should eq 302
583 it '借手ホーム(index)ページに遷移する' do
584 delete :destroy, :id => @demander.id
585 response.should redirect_to(demanders_path)
587 it '一時的メッセージに処理失敗を設定する' do
588 delete :destroy, :id => @demander.id
589 flash[:notice].should eq I18n.t('demanders.flash.notice.not_stopped')
593 it 'ステータスコード422 unprocessable_entity を返す' do
594 delete :destroy, :id => @demander.id, :format => :json
595 response.status.should eq 422
597 it '応答メッセージUnprocessable Entityを返す' do
598 delete :destroy, :id => @demander.id, :format => :json
599 response.message.should match(/Unprocessable/)
605 describe 'ライセンスエクスポートに於いて' do
607 @ds = FactoryGirl.create :demander_status
608 @demander = FactoryGirl.create :demander, :demander_status_id => @ds.id, :demand_user_id => @demand_user.id
611 context 'つつがなく終わるとき' do
613 Demander.any_instance.stub(:licenses_export).with(any_args).and_return([@license, @license, @license])
615 it 'ステータスコード200 OKを返す' do
616 get :licenses_export, :format => :json
617 response.should be_success
619 it '日付文字列変換を依頼している' do
620 DemandersController.any_instance.should_receive(:ymd_to_time).with('20111010').exactly(1)
621 get :licenses_export, :date => '20111010', :format => :json
623 it '借手モデルにライセンスエクスポートを問い合わせている' do
624 Demander.any_instance.should_receive(:licenses_export).with(Time.parse('2011/10/10')).exactly(1)
625 get :licenses_export, :date => '20111010', :format => :json
627 it '@licensesにリストを取得している' do
628 get :licenses_export, :format => :json
629 assigns(:licenses).should have_at_least(3).items
635 get :licenses_export, :format => :json
636 lambda{JSON.parse(response.body)}.should_not raise_error(JSON::ParserError)
638 it 'データがリスト構造になっている' do
639 get :licenses_export, :format => :json
640 json = JSON.parse response.body
641 json.should have_at_least(3).items
643 it 'リストの先頭くらいはライセンスっぽいものであって欲しい' do
644 get :licenses_export, :format => :json
645 json = JSON.parse response.body
646 json.first.has_key?("name").should be_true
647 json.first.has_key?("caption").should be_true
648 json.first.has_key?("url").should be_true
652 context '借手権限がないとき' do
654 sign_out @demand_user
657 it 'ステータスコード302 Foundを返す' do
659 response.status.should eq 302
661 it 'サインインページへ遷移する' do
663 response.body.should redirect_to '/demand_users/sign_in'
667 it 'ステータスコード401を返す' do
668 get :licenses_export, :format => :json
669 response.status.should eq 401
671 it '応答メッセージにUnauthorizedを返す' do
672 get :licenses_export, :format => :json
673 response.message.should match(/Unauthorized/)
677 context '借受権限がないとき' do
679 Demander.any_instance.stub(:status).and_return(1)
684 it 'ステータスコード403 forbiddenを返す' do
686 get :licenses_export, :format => :json
687 }.should raise_error(ActiveRecord::Forbidden)
693 describe '絵師エクスポートに於いて' do
695 @ds = FactoryGirl.create :demander_status
696 @demander = FactoryGirl.create :demander, :demander_status_id => @ds.id, :demand_user_id => @demand_user.id
697 @artist = FactoryGirl.create :artist, :author_id => @author.id
700 context 'つつがなく終わるとき' do
702 Demander.any_instance.stub(:artists_export).with(any_args).and_return([@artist, @artist, @artist])
704 it 'ステータスコード200 OKを返す' do
705 get :artists_export, :format => :json
706 response.should be_success
708 it '日付文字列変換を依頼している' do
709 DemandersController.any_instance.should_receive(:ymd_to_time).with('20111010').exactly(1)
710 get :artists_export, :date => '20111010', :format => :json
712 it '借手モデルに絵師エクスポートを問い合わせている' do
713 Demander.any_instance.should_receive(:artists_export).with(Time.parse('2011/10/10')).exactly(1)
714 get :artists_export, :date => '20111010', :format => :json
716 it '@artistsにリストを取得している' do
717 get :artists_export, :format => :json
718 assigns(:artists).should have_at_least(3).items
724 get :artists_export, :format => :json
725 lambda{JSON.parse(response.body)}.should_not raise_error(JSON::ParserError)
727 it 'データがリスト構造になっている' do
728 get :artists_export, :format => :json
729 json = JSON.parse response.body
730 json.should have_at_least(3).items
732 it 'リストの先頭くらいは絵師っぽいものであって欲しい' do
733 get :artists_export, :format => :json
734 json = JSON.parse response.body
735 json.first.has_key?("name").should be_true
736 json.first.has_key?("author_id").should be_true
740 context '借手権限がないとき' do
742 sign_out @demand_user
745 it 'ステータスコード302 Foundを返す' do
747 response.status.should eq 302
749 it 'サインインページへ遷移する' do
751 response.body.should redirect_to '/demand_users/sign_in'
755 it 'ステータスコード401を返す' do
756 get :artists_export, :format => :json
757 response.status.should eq 401
759 it '応答メッセージにUnauthorizedを返す' do
760 get :artists_export, :format => :json
761 response.message.should match(/Unauthorized/)
765 context '借受権限がないとき' do
767 Demander.any_instance.stub(:status).and_return(1)
772 it 'ステータスコード403 forbiddenを返す' do
774 get :artists_export, :format => :json
775 }.should raise_error(ActiveRecord::Forbidden)
781 describe '原画エクスポートに於いて' do
783 @ds = FactoryGirl.create :demander_status
784 @demander = FactoryGirl.create :demander, :demander_status_id => @ds.id, :demand_user_id => @demand_user.id
785 @artist = FactoryGirl.create :artist, :author_id => @author.id
786 @op = FactoryGirl.create :original_picture, :artist_id => @artist.id
789 context 'つつがなく終わるとき' do
791 Demander.any_instance.stub(:original_pictures_export).with(any_args).and_return([@op, @op, @op])
793 it 'ステータスコード200 OKを返す' do
794 get :original_pictures_export, :format => :json
795 response.should be_success
797 it '日付文字列変換を依頼している' do
798 DemandersController.any_instance.should_receive(:ymd_to_time).with('20111010').exactly(1)
799 get :original_pictures_export, :date => '20111010', :format => :json
801 it '借手モデルに原画エクスポートを問い合わせている' do
802 Demander.any_instance.should_receive(:original_pictures_export).with(Time.parse('2011/10/10')).exactly(1)
803 get :original_pictures_export, :date => '20111010', :format => :json
805 it '@original_picturesにリストを取得している' do
806 get :original_pictures_export, :format => :json
807 assigns(:original_pictures).should have_at_least(3).items
812 it '原画モデルにリストのjson化を依頼している' do
813 OriginalPicture.should_receive(:list_as_json_text).with(any_args).exactly(1)
814 OriginalPicture.stub(:list_as_json_text).with(any_args).and_return('[]')
815 get :original_pictures_export, :format => :json
818 get :original_pictures_export, :format => :json
819 lambda{JSON.parse(response.body)}.should_not raise_error(JSON::ParserError)
821 it 'データがリスト構造になっている' do
822 get :original_pictures_export, :format => :json
823 json = JSON.parse response.body
824 json.should have_at_least(3).items
826 it 'リストの先頭くらいは原画っぽいものであって欲しい' do
827 get :original_pictures_export, :format => :json
828 json = JSON.parse response.body
829 json.first.has_key?("ext").should be_true
830 json.first.has_key?("md5").should be_true
834 context '借手権限がないとき' do
836 sign_out @demand_user
839 it 'ステータスコード302 Foundを返す' do
840 get :original_pictures_export
841 response.status.should eq 302
843 it 'サインインページへ遷移する' do
844 get :original_pictures_export
845 response.body.should redirect_to '/demand_users/sign_in'
849 it 'ステータスコード401を返す' do
850 get :original_pictures_export, :format => :json
851 response.status.should eq 401
853 it '応答メッセージにUnauthorizedを返す' do
854 get :original_pictures_export, :format => :json
855 response.message.should match(/Unauthorized/)
859 context '借受権限がないとき' do
861 Demander.any_instance.stub(:status).and_return(1)
866 it 'ステータスコード403 forbiddenを返す' do
868 get :original_pictures_export, :format => :json
869 }.should raise_error(ActiveRecord::Forbidden)
875 describe '実素材エクスポートに於いて' do
877 @ds = FactoryGirl.create :demander_status
878 @demander = FactoryGirl.create :demander, :demander_status_id => @ds.id, :demand_user_id => @demand_user.id
879 @artist = FactoryGirl.create :artist, :author_id => @author.id
880 @op = FactoryGirl.create :original_picture, :artist_id => @artist.id
881 @p = FactoryGirl.create :picture, :artist_id => @artist.id, :original_picture_id => @op.id, :license_id => @license.id, :revision => 0
882 @rp = FactoryGirl.create :resource_picture, :artist_id => @artist.id, :original_picture_id => @op.id, :license_id => @license.id, :picture_id => @p.id
884 Picture.any_instance.stub(:restore).with(any_args).and_return('picture binary data')
886 context 'つつがなく終わるとき' do
888 Demander.any_instance.stub(:pictures_export).with(any_args).and_return([@p, @p, @p])
890 it 'ステータスコード200 OKを返す' do
891 get :pictures_export, :format => :json
892 response.should be_success
894 it '日付文字列変換を依頼している' do
895 DemandersController.any_instance.should_receive(:ymd_to_time).with('20111010').exactly(1)
896 get :pictures_export, :date => '20111010', :format => :json
898 it '借手モデルに実素材エクスポートを問い合わせている' do
899 Demander.any_instance.should_receive(:pictures_export).with(Time.parse('2011/10/10')).exactly(1)
900 get :pictures_export, :date => '20111010', :format => :json
902 it '@picturesにリストを取得している' do
903 get :pictures_export, :format => :json
904 assigns(:pictures).should have_at_least(3).items
909 it '実素材モデルにリストのjson化を依頼している' do
910 Picture.should_receive(:list_as_json_text).with(any_args).exactly(1)
911 Picture.stub(:list_as_json_text).with(any_args).and_return('[]')
912 get :pictures_export, :format => :json
915 get :pictures_export, :format => :json
916 lambda{JSON.parse(response.body)}.should_not raise_error(JSON::ParserError)
918 it 'データがリスト構造になっている' do
919 get :pictures_export, :format => :json
920 json = JSON.parse response.body
921 json.should have_at_least(3).items
923 it 'リストの先頭くらいは実素材っぽいものであって欲しい' do
924 get :pictures_export, :format => :json
925 json = JSON.parse response.body
926 json.first.has_key?("ext").should be_true
927 json.first.has_key?("revision").should be_true
931 context '借手権限がないとき' do
933 sign_out @demand_user
936 it 'ステータスコード302 Foundを返す' do
938 response.status.should eq 302
940 it 'サインインページへ遷移する' do
942 response.body.should redirect_to '/demand_users/sign_in'
946 it 'ステータスコード401を返す' do
947 get :pictures_export, :format => :json
948 response.status.should eq 401
950 it '応答メッセージにUnauthorizedを返す' do
951 get :pictures_export, :format => :json
952 response.message.should match(/Unauthorized/)
956 context '借受権限がないとき' do
958 Demander.any_instance.stub(:status).and_return(1)
963 it 'ステータスコード403 forbiddenを返す' do
965 get :pictures_export, :format => :json
966 }.should raise_error(ActiveRecord::Forbidden)
972 describe 'エクスポートに於いて' do
974 @ds = FactoryGirl.create :demander_status
975 @demander = FactoryGirl.create :demander, :demander_status_id => @ds.id, :demand_user_id => @demand_user.id
976 @artist = FactoryGirl.create :artist, :author_id => @author.id
977 @op = FactoryGirl.create :original_picture, :artist_id => @artist.id
978 @p = FactoryGirl.create :picture, :artist_id => @artist.id, :original_picture_id => @op.id, :license_id => @license.id, :revision => 0
979 @rp = FactoryGirl.create :resource_picture, :artist_id => @artist.id, :original_picture_id => @op.id, :license_id => @license.id, :picture_id => @p.id
982 context 'つつがなく終わるとき' do
984 Demander.any_instance.stub(:export).with(any_args).and_return({:licenses => [@license], :artists => [@artist], :original_pictures => [@op], :pictures => [@p]})
985 OriginalPicture.stub(:list_as_json_text).with(any_args).and_return('[]')
986 Picture.stub(:list_as_json_text).with(any_args).and_return('[]')
988 it 'ステータスコード200 OKを返す' do
989 get :export, :format => :json
990 response.should be_success
992 it '日付文字列変換を依頼している' do
993 DemandersController.any_instance.should_receive(:ymd_to_time).with('20111010').exactly(1)
994 get :export, :date => '20111010', :format => :json
996 it '借手モデルにエクスポートを問い合わせている' do
997 Demander.any_instance.should_receive(:export).with(Time.parse('2011/10/10')).exactly(1)
998 get :export, :date => '20111010', :format => :json
1000 it '@exportsにリストを取得している' do
1001 get :export, :format => :json
1002 assigns(:exports).is_a?(Hash).should be_true
1007 it '原画モデルにリストのjson化を依頼している' do
1008 OriginalPicture.should_receive(:list_as_json_text).with(any_args).exactly(1)
1009 OriginalPicture.stub(:list_as_json_text).with(any_args).and_return('[]')
1010 get :export, :format => :json
1012 it '実素材モデルにリストのjson化を依頼している' do
1013 Picture.should_receive(:list_as_json_text).with(any_args).exactly(1)
1014 Picture.stub(:list_as_json_text).with(any_args).and_return('[]')
1015 get :export, :format => :json
1018 get :export, :format => :json
1019 lambda{JSON.parse(response.body)}.should_not raise_error(JSON::ParserError)
1021 it 'データがHash構造になっている' do
1022 get :export, :format => :json
1023 json = JSON.parse response.body
1024 json.is_a?(Hash).should be_true
1026 it 'Hashっぽいものであって欲しい' do
1027 get :export, :format => :json
1028 json = JSON.parse response.body
1029 json.has_key?("licenses").should be_true
1030 json.has_key?("artists").should be_true
1031 json.has_key?("original_pictures").should be_true
1032 json.has_key?("pictures").should be_true
1036 context '借手権限がないとき' do
1038 sign_out @demand_user
1041 it 'ステータスコード302 Foundを返す' do
1043 response.status.should eq 302
1045 it 'サインインページへ遷移する' do
1047 response.body.should redirect_to '/demand_users/sign_in'
1051 it 'ステータスコード401を返す' do
1052 get :export, :format => :json
1053 response.status.should eq 401
1055 it '応答メッセージにUnauthorizedを返す' do
1056 get :export, :format => :json
1057 response.message.should match(/Unauthorized/)
1061 context '借受権限がないとき' do
1063 Demander.any_instance.stub(:status).and_return(1)
1068 it 'ステータスコード403 forbiddenを返す' do
1070 get :export, :format => :json
1071 }.should raise_error(ActiveRecord::Forbidden)