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 match /success/
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 match /not/
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 match /success/
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 match /not/
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
656 it 'ステータスコード302 Foundを返す' do
658 response.status.should eq 302
661 it 'サインインページへ遷移する' do
663 response.body.should redirect_to '/demand_users/sign_in'
667 it '応答メッセージにUnauthorizedを返す' do
668 get :licenses_export, :format => :json
669 response.message.should match(/Unauthorized/)
673 context '借受権限がないとき' do
675 Demander.any_instance.stub(:status).and_return(1)
680 it 'ステータスコード403 forbiddenを返す' do
682 get :licenses_export, :format => :json
683 }.should raise_error(ActiveRecord::Forbidden)
689 describe '絵師エクスポートに於いて' do
691 @ds = FactoryGirl.create :demander_status
692 @demander = FactoryGirl.create :demander, :demander_status_id => @ds.id, :demand_user_id => @demand_user.id
693 @artist = FactoryGirl.create :artist, :author_id => @author.id
696 context 'つつがなく終わるとき' do
698 Demander.any_instance.stub(:artists_export).with(any_args).and_return([@artist, @artist, @artist])
700 it 'ステータスコード200 OKを返す' do
701 get :artists_export, :format => :json
702 response.should be_success
704 it '日付文字列変換を依頼している' do
705 DemandersController.any_instance.should_receive(:ymd_to_time).with('20111010').exactly(1)
706 get :artists_export, :date => '20111010', :format => :json
708 it '借手モデルに絵師エクスポートを問い合わせている' do
709 Demander.any_instance.should_receive(:artists_export).with(Time.parse('2011/10/10')).exactly(1)
710 get :artists_export, :date => '20111010', :format => :json
712 it '@artistsにリストを取得している' do
713 get :artists_export, :format => :json
714 assigns(:artists).should have_at_least(3).items
720 get :artists_export, :format => :json
721 lambda{JSON.parse(response.body)}.should_not raise_error(JSON::ParserError)
723 it 'データがリスト構造になっている' do
724 get :artists_export, :format => :json
725 json = JSON.parse response.body
726 json.should have_at_least(3).items
728 it 'リストの先頭くらいは絵師っぽいものであって欲しい' do
729 get :artists_export, :format => :json
730 json = JSON.parse response.body
731 json.first.has_key?("name").should be_true
732 json.first.has_key?("author_id").should be_true
736 context '借手権限がないとき' do
738 sign_out @demand_user
740 it 'ステータスコード302 Foundを返す' do
742 response.status.should eq 302
745 it 'サインインページへ遷移する' do
747 response.body.should redirect_to '/demand_users/sign_in'
751 it '応答メッセージにUnauthorizedを返す' do
752 get :artists_export, :format => :json
753 response.message.should match(/Unauthorized/)
757 context '借受権限がないとき' do
759 Demander.any_instance.stub(:status).and_return(1)
764 it 'ステータスコード403 forbiddenを返す' do
766 get :artists_export, :format => :json
767 }.should raise_error(ActiveRecord::Forbidden)
773 describe '原画エクスポートに於いて' do
775 @ds = FactoryGirl.create :demander_status
776 @demander = FactoryGirl.create :demander, :demander_status_id => @ds.id, :demand_user_id => @demand_user.id
777 @artist = FactoryGirl.create :artist, :author_id => @author.id
778 @op = FactoryGirl.create :original_picture, :artist_id => @artist.id
781 context 'つつがなく終わるとき' do
783 Demander.any_instance.stub(:original_pictures_export).with(any_args).and_return([@op, @op, @op])
785 it 'ステータスコード200 OKを返す' do
786 get :original_pictures_export, :format => :json
787 response.should be_success
789 it '日付文字列変換を依頼している' do
790 DemandersController.any_instance.should_receive(:ymd_to_time).with('20111010').exactly(1)
791 get :original_pictures_export, :date => '20111010', :format => :json
793 it '借手モデルに原画エクスポートを問い合わせている' do
794 Demander.any_instance.should_receive(:original_pictures_export).with(Time.parse('2011/10/10')).exactly(1)
795 get :original_pictures_export, :date => '20111010', :format => :json
797 it '@original_picturesにリストを取得している' do
798 get :original_pictures_export, :format => :json
799 assigns(:original_pictures).should have_at_least(3).items
804 it '原画モデルにリストのjson化を依頼している' do
805 OriginalPicture.should_receive(:list_as_json_text).with(any_args).exactly(1)
806 OriginalPicture.stub(:list_as_json_text).with(any_args).and_return('[]')
807 get :original_pictures_export, :format => :json
810 get :original_pictures_export, :format => :json
811 lambda{JSON.parse(response.body)}.should_not raise_error(JSON::ParserError)
813 it 'データがリスト構造になっている' do
814 get :original_pictures_export, :format => :json
815 json = JSON.parse response.body
816 json.should have_at_least(3).items
818 it 'リストの先頭くらいは原画っぽいものであって欲しい' do
819 get :original_pictures_export, :format => :json
820 json = JSON.parse response.body
821 json.first.has_key?("ext").should be_true
822 json.first.has_key?("md5").should be_true
826 context '借手権限がないとき' do
828 sign_out @demand_user
830 it 'ステータスコード302 Foundを返す' do
831 get :original_pictures_export
832 response.status.should eq 302
835 it 'サインインページへ遷移する' do
836 get :original_pictures_export
837 response.body.should redirect_to '/demand_users/sign_in'
841 it '応答メッセージにUnauthorizedを返す' do
842 get :original_pictures_export, :format => :json
843 response.message.should match(/Unauthorized/)
847 context '借受権限がないとき' do
849 Demander.any_instance.stub(:status).and_return(1)
854 it 'ステータスコード403 forbiddenを返す' do
856 get :original_pictures_export, :format => :json
857 }.should raise_error(ActiveRecord::Forbidden)
863 describe '実素材エクスポートに於いて' do
865 @ds = FactoryGirl.create :demander_status
866 @demander = FactoryGirl.create :demander, :demander_status_id => @ds.id, :demand_user_id => @demand_user.id
867 @artist = FactoryGirl.create :artist, :author_id => @author.id
868 @op = FactoryGirl.create :original_picture, :artist_id => @artist.id
869 @p = FactoryGirl.create :picture, :artist_id => @artist.id, :original_picture_id => @op.id, :license_id => @license.id, :revision => 0
870 @rp = FactoryGirl.create :resource_picture, :artist_id => @artist.id, :original_picture_id => @op.id, :license_id => @license.id, :picture_id => @p.id
872 Picture.any_instance.stub(:restore).with(any_args).and_return('picture binary data')
874 context 'つつがなく終わるとき' do
876 Demander.any_instance.stub(:pictures_export).with(any_args).and_return([@p, @p, @p])
878 it 'ステータスコード200 OKを返す' do
879 get :pictures_export, :format => :json
880 response.should be_success
882 it '日付文字列変換を依頼している' do
883 DemandersController.any_instance.should_receive(:ymd_to_time).with('20111010').exactly(1)
884 get :pictures_export, :date => '20111010', :format => :json
886 it '借手モデルに実素材エクスポートを問い合わせている' do
887 Demander.any_instance.should_receive(:pictures_export).with(Time.parse('2011/10/10')).exactly(1)
888 get :pictures_export, :date => '20111010', :format => :json
890 it '@picturesにリストを取得している' do
891 get :pictures_export, :format => :json
892 assigns(:pictures).should have_at_least(3).items
897 it '実素材モデルにリストのjson化を依頼している' do
898 Picture.should_receive(:list_as_json_text).with(any_args).exactly(1)
899 Picture.stub(:list_as_json_text).with(any_args).and_return('[]')
900 get :pictures_export, :format => :json
903 get :pictures_export, :format => :json
904 lambda{JSON.parse(response.body)}.should_not raise_error(JSON::ParserError)
906 it 'データがリスト構造になっている' do
907 get :pictures_export, :format => :json
908 json = JSON.parse response.body
909 json.should have_at_least(3).items
911 it 'リストの先頭くらいは実素材っぽいものであって欲しい' do
912 get :pictures_export, :format => :json
913 json = JSON.parse response.body
914 json.first.has_key?("ext").should be_true
915 json.first.has_key?("revision").should be_true
919 context '借手権限がないとき' do
921 sign_out @demand_user
923 it 'ステータスコード302 Foundを返す' do
925 response.status.should eq 302
928 it 'サインインページへ遷移する' do
930 response.body.should redirect_to '/demand_users/sign_in'
934 it '応答メッセージにUnauthorizedを返す' do
935 get :pictures_export, :format => :json
936 response.message.should match(/Unauthorized/)
940 context '借受権限がないとき' do
942 Demander.any_instance.stub(:status).and_return(1)
947 it 'ステータスコード403 forbiddenを返す' do
949 get :pictures_export, :format => :json
950 }.should raise_error(ActiveRecord::Forbidden)