1 # -*- encoding: utf-8 -*-
4 describe SheetPanelsController do
6 @admin = FactoryGirl.create :admin
7 @sp = FactoryGirl.create :system_picture
8 @lg = FactoryGirl.create :license_group
9 @license = FactoryGirl.create :license, :license_group_id => @lg.id, :system_picture_id => @sp.id
10 @user = FactoryGirl.create :user_yas
11 @author = FactoryGirl.create :author, :user_id => @user.id
12 @sheet = FactoryGirl.create :sheet, :author_id => @user.author.id
13 @panel = FactoryGirl.create :panel, :author_id => @author.id
16 if MagicNumber['run_mode'] == 1
17 describe '一覧表示に於いて' do
20 @sheet_panel = FactoryGirl.create :sheet_panel, :t => 0, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id
21 SheetPanel.stub(:list).and_return([@sheet_panel, @sheet_panel, @sheet_panel])
23 context 'パラメータpageについて' do
25 get :index, :page => 5
26 assigns(:page).should eq 5
28 it '省略されると@pageに1値が入る' do
30 assigns(:page).should eq 1
32 it '与えられたpage_sizeがセットされている' do
33 get :index, :page_size => 15
34 assigns(:page_size).should eq 15
36 it '省略されると@page_sizeにデフォルト値が入る' do
38 assigns(:page_size).should eq SheetPanel.default_page_size
40 it '最大を超えると@page_sizeにデフォルト最大値が入る' do
41 get :index, :page_size => 1500
42 assigns(:page_size).should eq SheetPanel.max_page_size
44 it '不正な値が入ると@page_sizeにデフォルト最大値が入る' do
45 get :index, :page_size => 0
46 assigns(:page_size).should eq SheetPanel.default_page_size
49 context 'つつがなく終わるとき' do
50 it 'ステータスコード200 OKを返す' do
52 response.should be_success
54 it '紙コマモデルに一覧を問い合わせている' do
55 SheetPanel.should_receive(:list).exactly(1)
58 it '@sheet_panelsにリストを取得している' do
60 assigns(:sheet_panels).should have_at_least(3).items
63 it '@paginateにページ制御を取得している' do
65 assigns(:paginate).is_a?(Kaminari::PaginatableArray).should be_true
67 it 'indexテンプレートを描画する' do
69 response.should render_template("index")
74 get :index, :format => :json
75 lambda{JSON.parse(response.body)}.should_not raise_error(JSON::ParserError)
77 it '紙コマモデルにjson一覧出力オプションを問い合わせている' do
78 SheetPanel.should_receive(:list_json_opt).exactly(1)
79 get :index, :format => :json
81 it 'データがリスト構造になっている' do
82 get :index, :format => :json
83 json = JSON.parse response.body
84 json.should have_at_least(3).items
86 it 'リストの先頭くらいは紙コマっぽいものであって欲しい' do
87 get :index, :format => :json
88 json = JSON.parse response.body
89 json.first.has_key?("panel_id").should be_true
90 json.first.has_key?("sheet_id").should be_true
91 json.first.has_key?("t").should be_true
95 context 'ユーザ権限がないとき' do
100 it 'ステータスコード302 Foundを返す' do
102 response.status.should eq 302
104 it 'サインインページへ遷移する' do
106 response.should redirect_to '/users/sign_in'
110 it 'ステータスコード401 Unauthorizedを返す' do
111 get :index, :format => :json
112 response.status.should eq 401
114 it '応答メッセージにUnauthorizedを返す' do
115 get :index, :format => :json
116 response.message.should match(/Unauthorized/)
120 context 'ユーザ権限はないが管理者権限があるとき' do
125 it 'ステータスコード200 OKを返す' do
127 response.should be_success
130 context 'ユーザだが作家登録していないとき' do
134 it 'ステータスコード200 OKを返す' do
136 response.should be_success
141 describe '単体表示に於いて' do
144 @sheet_panel = FactoryGirl.create :sheet_panel, :t => 0, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id
145 Sheet.stub(:show).with(@sheet.id.to_s, [@user, nil]).and_return(@sheet)
146 Sheet.stub(:show).with(@sheet.id.to_s, [nil, @admin]).and_return(@sheet)
147 SheetPanel.stub(:show).with(@sheet_panel.id.to_s, [@user, nil]).and_return(@sheet_panel)
148 SheetPanel.stub(:show).with(@sheet_panel.id.to_s, [nil, @admin]).and_return(@sheet_panel)
150 context 'つつがなく終わるとき' do
151 it '紙コマモデルに単体取得を問い合わせている' do
152 SheetPanel.should_receive(:show).with(@sheet_panel.id.to_s, [@user, nil]).exactly(1)
153 get :show, :id => @sheet_panel.id
155 it '@sheet_panelにアレを取得している' do
156 get :show, :id => @sheet_panel.id
157 assigns(:sheet_panel).should eq @sheet_panel
160 it 'ステータスコード200 OKを返す' do
161 get :show, :id => @sheet_panel.id
162 response.should be_success
164 it 'showテンプレートを描画する' do
165 get :show, :id => @sheet_panel.id
166 response.should render_template("show")
170 it 'ステータスコード200 OKを返す' do
171 get :show, :id => @sheet_panel.id, :format => :json
172 response.should be_success
175 get :show, :id => @sheet_panel.id, :format => :json
176 lambda{JSON.parse(response.body)}.should_not raise_error(JSON::ParserError)
178 it '紙コマモデルに紙コマjson出力を問い合わせている' do
179 SheetPanel.any_instance.should_receive(:sheet_panel_as_json).exactly(1)
180 get :show, :id => @sheet_panel.id, :format => :json
183 get :show, :id => @sheet_panel.id, :format => :json
184 json = JSON.parse response.body
185 json.has_key?("panel_id").should be_true
186 json.has_key?("sheet_id").should be_true
187 json.has_key?("author_id").should be_true
191 context 'ユーザ権限がないとき' do
196 it 'ステータスコード302 Foundを返す' do
197 get :show, :id => @sheet_panel.id
198 response.status.should eq 302
200 it 'サインインページへ遷移する' do
201 get :show, :id => @sheet_panel.id
202 response.body.should redirect_to '/users/sign_in'
206 it 'ステータスコード401 Unauthorizedを返す' do
207 get :show, :id => @sheet_panel.id, :format => :json
208 response.status.should eq 401
210 it '応答メッセージにUnauthorizedを返す' do
211 get :show, :id => @sheet_panel.id, :format => :json
212 response.message.should match(/Unauthorized/)
216 context 'ユーザ権限はないが管理者権限があるとき' do
221 it 'ステータスコード200 OKを返す' do
222 get :show, :id => @sheet_panel.id
223 response.should be_success
226 context 'ユーザだが作家登録していないとき' do
230 it 'ステータスコード200 OKを返す' do
231 get :show, :id => @sheet_panel.id
232 response.should be_success
237 describe '新規作成フォーム表示に於いて' do
241 context 'つつがなく終わるとき' do
242 it '@sheet_panelに新規データを用意している' do
244 assigns(:sheet_panel).should be_a_new(SheetPanel)
246 it 'モデルにデフォルト値補充を依頼している' do
247 SheetPanel.any_instance.should_receive(:supply_default).exactly(1)
251 it 'ステータスコード200 OKを返す' do
253 response.should be_success
255 it 'newテンプレートを描画する' do
257 response.should render_template("new")
261 it 'ステータスコード200 OKを返す' do
262 get :new, :format => :js
263 response.should be_success
265 it 'new.jsテンプレートを描画する' do
266 get :new, :format => :js
267 response.should render_template("new")
271 it 'ステータスコード200 OKを返す' do
272 get :new, :format => :json
273 response.should be_success
276 get :new, :format => :json
277 lambda{JSON.parse(response.body)}.should_not raise_error(JSON::ParserError)
279 it '紙コマモデルの紙コマのjson出力を問い合わせている' do
280 SheetPanel.any_instance.should_receive(:sheet_panel_as_json).exactly(1)
281 get :new, :format => :json
284 get :new, :format => :json
285 json = JSON.parse response.body
286 json.has_key?("panel_id").should be_true
287 json.has_key?("sheet_id").should be_true
288 json.has_key?("author_id").should be_true
292 context 'ユーザ権限がないとき' do
297 it 'ステータスコード302 Foundを返す' do
299 response.status.should eq 302
301 it 'サインインページへ遷移する' do
303 response.body.should redirect_to '/users/sign_in'
307 it 'ステータスコード401 Unauthorizedを返す' do
308 get :new, :format => :json
309 response.status.should eq 401
311 it '応答メッセージにUnauthorizedを返す' do
312 get :new, :format => :json
313 response.message.should match(/Unauthorized/)
317 context 'ユーザ権限はないが管理者権限があるとき' do
323 it 'ステータスコード302 Foundを返す' do
325 response.status.should eq 302
327 it 'サインインページへ遷移する' do
329 response.body.should redirect_to '/users/sign_in'
333 context 'ユーザだが作家登録していないとき' do
338 it 'ステータスコード302 Foundを返す' do
340 response.status.should eq 302
344 response.body.should redirect_to new_author_path
350 describe '新規作成に於いて' do
352 @attr = FactoryGirl.attributes_for(:sheet_panel, :t => nil, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id)
355 context 'つつがなく終わるとき' do
356 it 'デフォルト値補充を依頼する' do
357 SheetPanel.any_instance.should_receive(:supply_default).exactly(1)
358 post :create, :sheet_panel => @attr
360 it 'POSTデータから、カラム値を復元している' do
361 SheetPanel.any_instance.stub(:store).and_return(true)
362 post :create, :sheet_panel => @attr
363 assigns(:sheet_panel).sheet_id.should eq @sheet.id
364 assigns(:sheet_panel).panel_id.should eq @panel.id
367 SheetPanel.any_instance.should_receive(:overwrite).exactly(1)
368 post :create, :sheet_panel => @attr
370 it '用紙モデルに編集取得を依頼している' do
371 Sheet.stub(:edit).and_return(@sheet)
372 Sheet.should_receive(:edit).with(@sheet.id, @author).exactly(1)
373 post :create, :sheet_panel => @attr
375 it 'コマモデルに単体取得を依頼している' do
376 Panel.should_receive(:show).with(@panel.id, @author).exactly(1)
377 post :create, :sheet_panel => @attr
380 SheetPanel.any_instance.should_receive(:store).exactly(1)
381 post :create, :sheet_panel => @attr
383 it "@sheet_panelに作成された紙コマを保持していて、それがDBにある" do
384 post :create, :sheet_panel => @attr
385 assigns(:sheet_panel).should be_a(SheetPanel)
386 assigns(:sheet_panel).should be_persisted
389 it 'ステータスコード302 Foundを返す' do
390 SheetPanel.any_instance.stub(:store).and_return(true)
391 post :create, :sheet_panel => @attr
392 response.status.should eq 302
394 it '用紙の紙コマ表示へ遷移する' do
395 # SheetPanel.any_instance.stub(:store).and_return(true)
396 post :create, :sheet_panel => @attr
397 response.should redirect_to(play_sheet_path(@attr[:sheet_id]))
401 it 'ステータスコード200 OKを返す' do
402 # SheetPanel.any_instance.stub(:store).and_return(true)
403 post :create, :sheet_panel => @attr, :format => :json
404 response.should be_success
406 it '作成された紙コマをjsonデータで返す' do
407 post :create, :sheet_panel => @attr, :format => :json
408 lambda{JSON.parse(response.body)}.should_not raise_error(JSON::ParserError)
410 it '紙コマモデルの紙コマのjson出力を問い合わせている' do
411 SheetPanel.any_instance.should_receive(:sheet_panel_as_json).exactly(1)
412 post :create, :sheet_panel => @attr, :format => :json
415 post :create, :sheet_panel => @attr, :format => :json
416 json = JSON.parse response.body
417 json["t"].should eq 0
421 context 'ユーザ権限がないとき' do
426 it 'ステータスコード302 Foundを返す' do
427 post :create, :sheet_panel => @attr
428 response.status.should eq 302
430 it 'サインインページへ遷移する' do
431 post :create, :sheet_panel => @attr
432 response.body.should redirect_to '/users/sign_in'
436 it 'ステータスコード401 Unauthorizedを返す' do
437 post :create, :sheet_panel => @attr, :format => :json
438 response.status.should eq 401
440 it '応答メッセージにUnauthorizedを返す' do
441 post :create, :sheet_panel => @attr, :format => :json
442 response.message.should match(/Unauthorized/)
446 context 'ユーザ権限はないが管理者権限があるとき' do
452 it 'ステータスコード302 Foundを返す' do
453 post :create, :sheet_panel => @attr
454 response.status.should eq 302
456 it 'サインインページへ遷移する' do
457 post :create, :sheet_panel => @attr
458 response.body.should redirect_to '/users/sign_in'
462 context 'ユーザだが作家登録していないとき' do
467 it 'ステータスコード302 Foundを返す' do
468 post :create, :sheet_panel => @attr
469 response.status.should eq 302
472 post :create, :sheet_panel => @attr
473 response.body.should redirect_to new_author_path
477 context '検証、保存に失敗した' do
479 SheetPanel.any_instance.stub(:store).and_return(false)
481 it "未保存の紙コマを保持している" do
482 post :create, :sheet_panel => @attr
483 assigns(:sheet_panel).should be_a_new(SheetPanel)
486 it 'ステータスコード200 OKを返す' do
487 post :create, :sheet_panel => @attr
488 response.status.should eq 200
491 post :create, :sheet_panel => @attr
492 response.should render_template("new")
496 it 'ステータスコード422 unprocessable_entity を返す' do
497 post :create, :sheet_panel => @attr, :format => :json
498 response.status.should eq 422
500 it '応答メッセージUnprocessable Entityを返す' do
501 post :create, :sheet_panel => @attr, :format => :json
502 response.message.should match(/Unprocessable/)
508 describe '編集フォーム表示に於いて' do
510 @sheet_panel = FactoryGirl.create :sheet_panel, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id
512 SheetPanel.stub(:show).and_return(@sheet_panel)
514 context 'つつがなく終わるとき' do
515 it '紙コマモデルに編集取得を問い合わせている' do
516 SheetPanel.should_receive(:edit).exactly(1)
517 get :edit, :id => @sheet_panel.id
519 it '@sheet_panelにデータを用意している' do
520 get :edit, :id => @sheet_panel.id
521 assigns(:sheet_panel).should eq @sheet_panel
524 it 'ステータスコード200 OKを返す' do
525 get :edit, :id => @sheet_panel.id
526 response.should be_success
528 it 'editテンプレートを描画する' do
529 get :edit, :id => @sheet_panel.id
530 response.should render_template("edit")
534 it 'ステータスコード200 OKを返す' do
535 get :edit, :id => @sheet_panel.id, :format => :js
536 response.should be_success
538 it 'edit.jsテンプレートを描画する' do
539 get :edit, :id => @sheet_panel.id, :format => :js
540 response.should render_template("edit")
544 context 'ユーザ権限がないとき' do
549 it 'ステータスコード302 Foundを返す' do
550 get :edit, :id => @sheet_panel.id
551 response.status.should eq 302
553 it 'サインインページへ遷移する' do
554 get :edit, :id => @sheet_panel.id
555 response.body.should redirect_to '/users/sign_in'
559 it 'ステータスコード401 Unauthorizedを返す' do
560 get :edit, :id => @sheet_panel.id, :format => :js
561 response.status.should eq 401
563 it '応答メッセージにUnauthorizedを返す' do
564 get :edit, :id => @sheet_panel.id, :format => :js
565 response.message.should match(/Unauthorized/)
569 context 'ユーザ権限はないが管理者権限があるとき' do
575 it 'ステータスコード302 Foundを返す' do
576 get :edit, :id => @sheet_panel.id
577 response.status.should eq 302
579 it 'サインインページへ遷移する' do
580 get :edit, :id => @sheet_panel.id
581 response.body.should redirect_to '/users/sign_in'
585 context 'ユーザだが作家登録していないとき' do
590 it 'ステータスコード302 Foundを返す' do
591 get :edit, :id => @sheet_panel.id
592 response.status.should eq 302
595 get :edit, :id => @sheet_panel.id
596 response.body.should redirect_to new_author_path
604 @sheet_panel = FactoryGirl.create :sheet_panel, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @user.author.id
605 @attr = FactoryGirl.attributes_for(:sheet_panel, :x => 5566, :author_id => @author.id)
608 context 'つつがなく終わるとき' do
610 SheetPanel.stub(:edit).with(any_args).and_return(@sheet_panel)
611 SheetPanel.should_receive(:edit).exactly(1)
612 put :update, :id => @sheet_panel.id, :sheet_panel => @attr
614 it 'POSTデータから、カラム値を復元している' do
615 SheetPanel.any_instance.stub(:store).and_return(true)
616 SheetPanel.any_instance.should_receive(:attributes=).exactly(1)
617 put :update, :id => @sheet_panel.id, :sheet_panel => @attr
620 SheetPanel.any_instance.should_receive(:overwrite).exactly(1)
621 put :update, :id => @sheet_panel.id, :sheet_panel => @attr
624 SheetPanel.any_instance.should_receive(:store).exactly(1)
625 put :update, :id => @sheet_panel.id, :sheet_panel => @attr
627 it "@sheet_panelに更新された紙コマを保持していて、それがDBにある" do
628 put :update, :id => @sheet_panel.id, :sheet_panel => @attr
629 assigns(:sheet_panel).should be_a(SheetPanel)
630 assigns(:sheet_panel).should be_persisted
631 assigns(:sheet_panel).x.should eq 5566
634 it 'ステータスコード302 Foundを返す' do
635 SheetPanel.any_instance.stub(:store).and_return(true)
636 put :update, :id => @sheet_panel.id, :sheet_panel => @attr
637 response.status.should eq 302
640 # SheetPanel.any_instance.stub(:store).and_return(true)
641 put :update, :id => @sheet_panel.id, :sheet_panel => @attr
642 response.should redirect_to(play_sheet_path(@attr[:sheet_id]))
646 it 'ステータスコード200 OKを返す' do
647 # SheetPanel.any_instance.stub(:store).and_return(true)
648 put :update, :id => @sheet_panel.id, :sheet_panel => @attr, :format => :json
649 response.should be_success
653 context 'ユーザ権限がないとき' do
658 it 'ステータスコード302 Foundを返す' do
659 put :update, :id => @sheet_panel.id, :sheet_panel => @attr
660 response.status.should eq 302
662 it 'サインインページへ遷移する' do
663 put :update, :id => @sheet_panel.id, :sheet_panel => @attr
664 response.body.should redirect_to '/users/sign_in'
668 it 'ステータスコード401 Unauthorizedを返す' do
669 put :update, :id => @sheet_panel.id, :sheet_panel => @attr, :format => :json
670 response.status.should eq 401
672 it '応答メッセージにUnauthorizedを返す' do
673 put :update, :id => @sheet_panel.id, :sheet_panel => @attr, :format => :json
674 response.message.should match(/Unauthorized/)
678 context 'ユーザ権限はないが管理者権限があるとき' do
684 it 'ステータスコード302 Foundを返す' do
685 put :update, :id => @sheet_panel.id, :sheet_panel => @attr
686 response.status.should eq 302
688 it 'サインインページへ遷移する' do
689 put :update, :id => @sheet_panel.id, :sheet_panel => @attr
690 response.body.should redirect_to '/users/sign_in'
694 context 'ユーザだが作家登録していないとき' do
699 it 'ステータスコード302 Foundを返す' do
700 put :update, :id => @sheet_panel.id, :sheet_panel => @attr
701 response.status.should eq 302
704 put :update, :id => @sheet_panel.id, :sheet_panel => @attr
705 response.body.should redirect_to new_author_path
709 context '検証、保存に失敗した' do
711 SheetPanel.any_instance.stub(:store).and_return(false)
713 it "指定の紙コマを保持している" do
714 put :update, :id => @sheet_panel.id, :sheet_panel => @attr
715 assigns(:sheet_panel).should eq @sheet_panel
718 it 'ステータスコード200 OKを返す' do
719 put :update, :id => @sheet_panel.id, :sheet_panel => @attr
720 response.status.should eq 200
723 put :update, :id => @sheet_panel.id, :sheet_panel => @attr
724 response.should render_template("edit")
728 it 'ステータスコード422 unprocessable_entity を返す' do
729 put :update, :id => @sheet_panel.id, :sheet_panel => @attr, :format => :json
730 response.status.should eq 422
732 it '応答メッセージUnprocessable Entityを返す' do
733 put :update, :id => @sheet_panel.id, :sheet_panel => @attr, :format => :json
734 response.message.should match(/Unprocessable/)
742 @sheet_panel = FactoryGirl.create :sheet_panel, :author_id => @author.id
744 SheetPanel.stub(:edit).and_return(@sheet_panel)
746 context '事前チェックしておく' do
748 SheetPanel.stub(:edit).with(any_args()).and_return @sheet_panel
749 SheetPanel.any_instance.stub(:destroy_and_shorten).with(any_args()).and_return(true)
751 it '紙コマモデルに編集取得を問い合わせている' do
752 SheetPanel.should_receive(:edit).exactly(1)
753 delete :destroy, :id => @sheet_panel.id
756 SheetPanel.any_instance.should_receive(:destroy_and_shorten).exactly(1)
757 delete :destroy, :id => @sheet_panel.id
759 it '@sheet_panelにアレを取得している' do
760 delete :destroy, :id => @sheet_panel.id
761 assigns(:sheet_panel).id.should eq(@sheet_panel.id)
764 context 'つつがなく終わるとき' do
766 SheetPanel.any_instance.stub(:destroy_and_shorten).with(any_args()).and_return(true)
769 it 'ステータスコード302 Foundを返す' do
770 delete :destroy, :id => @sheet_panel.id
771 response.status.should eq 302
774 delete :destroy, :id => @sheet_panel.id
775 response.should redirect_to(play_sheet_path(@sheet_panel.sheet_id))
779 it 'ステータスコード200 OKを返す' do
780 delete :destroy, :id => @sheet_panel.id, :format => :json
781 response.should be_success
785 context 'ユーザ権限がないとき' do
790 it 'ステータスコード302 Foundを返す' do
791 delete :destroy, :id => @sheet_panel.id
792 response.status.should eq 302
794 it 'サインインページへ遷移する' do
795 delete :destroy, :id => @sheet_panel.id
796 response.body.should redirect_to '/users/sign_in'
800 it 'ステータスコード401 Unauthorizedを返す' do
801 delete :destroy, :id => @sheet_panel.id, :format => :json
802 response.status.should eq 401
804 it '応答メッセージにUnauthorizedを返す' do
805 delete :destroy, :id => @sheet_panel.id, :format => :json
806 response.message.should match(/Unauthorized/)
810 context 'ユーザ権限はないが管理者権限があるとき' do
816 it 'ステータスコード302 Foundを返す' do
817 delete :destroy, :id => @sheet_panel.id
818 response.status.should eq 302
820 it 'サインインページへ遷移する' do
821 delete :destroy, :id => @sheet_panel.id
822 response.body.should redirect_to '/users/sign_in'
826 context 'ユーザだが作家登録していないとき' do
831 it 'ステータスコード302 Foundを返す' do
832 delete :destroy, :id => @sheet_panel.id
833 response.status.should eq 302
836 delete :destroy, :id => @sheet_panel.id
837 response.body.should redirect_to new_author_path
841 context '削除に失敗したとき' do
843 SheetPanel.any_instance.stub(:destroy_and_shorten).with(any_args()).and_return(false)
846 it 'ステータスコード302 Foundを返す' do
847 delete :destroy, :id => @sheet_panel.id
848 response.status.should eq 302
850 it 'その用紙の詳細ページへ遷移する' do
851 delete :destroy, :id => @sheet_panel.id
852 response.should redirect_to(sheet_panel_path(@sheet_panel))
856 it 'ステータスコード422 unprocessable_entity を返す' do
857 delete :destroy, :id => @sheet_panel.id, :format => :json
858 response.status.should eq 422
860 it '応答メッセージUnprocessable Entityを返す' do
861 delete :destroy, :id => @sheet_panel.id, :format => :json
862 response.message.should match(/Unprocessable/)
867 context '対象紙コマがないとき' do
869 context '他人の紙コマだったとき' do
875 describe '一覧表示に於いて' do
878 @sheet_panel = FactoryGirl.create :sheet_panel, :t => 0, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id
879 SheetPanel.stub(:list).and_return([@sheet_panel, @sheet_panel, @sheet_panel])
881 context 'つつがなく終わるとき' do
882 it 'ステータスコード200 OKを返す' do
884 response.should be_success
887 it 'indexテンプレートを描画する' do
889 response.should render_template("index")
894 get :index, :format => :json
895 lambda{JSON.parse(response.body)}.should_not raise_error(JSON::ParserError)
899 context 'ユーザ権限がないとき' do
903 it 'ステータスコード200 OKを返す' do
905 response.should be_success
908 it 'indexテンプレートを描画する' do
910 response.should render_template("index")
915 get :index, :format => :json
916 lambda{JSON.parse(response.body)}.should_not raise_error(JSON::ParserError)
922 describe '単体表示に於いて' do
925 @sheet_panel = FactoryGirl.create :sheet_panel, :t => 0, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id
926 Sheet.stub(:show).with(@sheet.id.to_s, [nil, nil]).and_return(@sheet)
927 Sheet.stub(:show).with(@sheet.id.to_s, [@user, nil]).and_return(@sheet)
928 Sheet.stub(:show).with(@sheet.id.to_s, [nil, @admin]).and_return(@sheet)
929 SheetPanel.stub(:show).with(@sheet_panel.id.to_s, [nil, nil]).and_return(@sheet_panel)
930 SheetPanel.stub(:show).with(@sheet_panel.id.to_s, [@user, nil]).and_return(@sheet_panel)
931 SheetPanel.stub(:show).with(@sheet_panel.id.to_s, [nil, @admin]).and_return(@sheet_panel)
933 context 'つつがなく終わるとき' do
935 it 'ステータスコード200 OKを返す' do
936 get :show, :id => @sheet_panel.id
937 response.should be_success
939 it 'showテンプレートを描画する' do
940 get :show, :id => @sheet_panel.id
941 response.should render_template("show")
945 it 'ステータスコード200 OKを返す' do
946 get :show, :id => @sheet_panel.id, :format => :json
947 response.should be_success
950 get :show, :id => @sheet_panel.id, :format => :json
951 lambda{JSON.parse(response.body)}.should_not raise_error(JSON::ParserError)
955 context 'ユーザ権限がないとき' do
960 it 'ステータスコード200 OKを返す' do
961 get :show, :id => @sheet_panel.id
962 response.should be_success
964 it 'showテンプレートを描画する' do
965 get :show, :id => @sheet_panel.id
966 response.should render_template("show")
970 it 'ステータスコード200 OKを返す' do
971 get :show, :id => @sheet_panel.id, :format => :json
972 response.should be_success
975 get :show, :id => @sheet_panel.id, :format => :json
976 lambda{JSON.parse(response.body)}.should_not raise_error(JSON::ParserError)
984 @sheet_panel = FactoryGirl.create :sheet_panel, :t => 0, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id
985 Sheet.stub(:show).with(@sheet.id.to_s, [nil, nil]).and_return(@sheet)
986 Sheet.stub(:show).with(@sheet.id.to_s, [@user, nil]).and_return(@sheet)
987 Sheet.stub(:show).with(@sheet.id.to_s, [nil, @admin]).and_return(@sheet)
988 SheetPanel.stub(:count).and_return(10)
989 SheetPanel.stub(:play_list).with(any_args).and_return([@sheet_panel, @sheet_panel, @sheet_panel])
992 context 'つつがなく終わるとき' do
994 it 'ステータスコード200 OKを返す' do
995 get :sheet, :id => @sheet.id
996 response.should be_success
998 it 'sheetテンプレートを描画する' do
999 get :sheet, :id => @sheet.id
1000 response.should render_template("sheet")
1004 it 'ステータスコード200 OKを返す' do
1005 get :sheet, :id => @sheet.id, :format => :json
1006 response.should be_success
1009 get :sheet, :id => @sheet.id, :format => :json
1010 lambda{JSON.parse(response.body)}.should_not raise_error(JSON::ParserError)
1014 context 'ユーザ権限がないとき' do
1019 it 'ステータスコード200 OKを返す' do
1020 get :sheet, :id => @sheet.id
1021 response.should be_success
1023 it 'sheetテンプレートを描画する' do
1024 get :sheet, :id => @sheet.id
1025 response.should render_template("sheet")
1029 it 'ステータスコード200 OKを返す' do
1030 get :sheet, :id => @sheet.id, :format => :json
1031 response.should be_success
1034 get :sheet, :id => @sheet.id, :format => :json
1035 lambda{JSON.parse(response.body)}.should_not raise_error(JSON::ParserError)
1041 describe '新規作成フォーム表示に於いて' do
1045 context 'つつがなく終わるとき' do
1047 it 'ステータスコード200 OKを返す' do
1049 response.should be_success
1051 it 'newテンプレートを描画する' do
1053 response.should render_template("new")
1057 it 'ステータスコード200 OKを返す' do
1058 get :new, :format => :js
1059 response.should be_success
1061 it 'new.jsテンプレートを描画する' do
1062 get :new, :format => :js
1063 response.should render_template("new")
1067 it 'ステータスコード200 OKを返す' do
1068 get :new, :format => :json
1069 response.should be_success
1072 get :new, :format => :json
1073 lambda{JSON.parse(response.body)}.should_not raise_error(JSON::ParserError)
1077 context 'ユーザ権限がないとき' do
1082 it 'ステータスコード302 Foundを返す' do
1084 response.status.should eq 302
1086 it 'サインインページへ遷移する' do
1088 response.body.should redirect_to '/users/sign_in'
1092 it 'ステータスコード401 Unauthorizedを返す' do
1093 get :new, :format => :json
1094 response.status.should eq 401
1096 it '応答メッセージにUnauthorizedを返す' do
1097 get :new, :format => :json
1098 response.message.should match(/Unauthorized/)
1104 describe '新規作成に於いて' do
1106 @attr = FactoryGirl.attributes_for(:sheet_panel, :t => nil, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id)
1109 context 'つつがなく終わるとき' do
1111 it 'ステータスコード302 Foundを返す' do
1112 SheetPanel.any_instance.stub(:store).and_return(true)
1113 post :create, :sheet_panel => @attr
1114 response.status.should eq 302
1116 it '用紙の紙コマ表示へ遷移する' do
1117 # SheetPanel.any_instance.stub(:store).and_return(true)
1118 post :create, :sheet_panel => @attr
1119 response.should redirect_to(:action => :sheet, :id => @attr[:sheet_id])
1123 it 'ステータスコード200 OKを返す' do
1124 # SheetPanel.any_instance.stub(:store).and_return(true)
1125 post :create, :sheet_panel => @attr, :format => :json
1126 response.should be_success
1128 it '作成されたコマをjsonデータで返す' do
1129 post :create, :sheet_panel => @attr, :format => :json
1130 lambda{JSON.parse(response.body)}.should_not raise_error(JSON::ParserError)
1134 context 'ユーザ権限がないとき' do
1139 it 'ステータスコード302 Foundを返す' do
1140 post :create, :sheet_panel => @attr
1141 response.status.should eq 302
1143 it 'サインインページへ遷移する' do
1144 post :create, :sheet_panel => @attr
1145 response.body.should redirect_to '/users/sign_in'
1149 it 'ステータスコード401 Unauthorizedを返す' do
1150 post :create, :sheet_panel => @attr, :format => :json
1151 response.status.should eq 401
1153 it '応答メッセージにUnauthorizedを返す' do
1154 post :create, :sheet_panel => @attr, :format => :json
1155 response.message.should match(/Unauthorized/)
1161 describe '編集フォーム表示に於いて' do
1163 @sheet_panel = FactoryGirl.create :sheet_panel, :author_id => @author.id
1165 SheetPanel.stub(:show).and_return(@sheet_panel)
1167 context 'つつがなく終わるとき' do
1169 it 'ステータスコード200 OKを返す' do
1170 get :edit, :id => @sheet_panel.id
1171 response.should be_success
1173 it 'editテンプレートを描画する' do
1174 get :edit, :id => @sheet_panel.id
1175 response.should render_template("edit")
1179 it 'ステータスコード200 OKを返す' do
1180 get :edit, :id => @sheet_panel.id, :format => :js
1181 response.should be_success
1183 it 'edit.jsテンプレートを描画する' do
1184 get :edit, :id => @sheet_panel.id, :format => :js
1185 response.should render_template("edit")
1189 context 'ユーザ権限がないとき' do
1194 it 'ステータスコード302 Foundを返す' do
1195 get :edit, :id => @sheet_panel.id
1196 response.status.should eq 302
1198 it 'サインインページへ遷移する' do
1199 get :edit, :id => @sheet_panel.id
1200 response.body.should redirect_to '/users/sign_in'
1204 it 'ステータスコード401 Unauthorizedを返す' do
1205 get :edit, :id => @sheet_panel.id, :format => :js
1206 response.status.should eq 401
1208 it '応答メッセージにUnauthorizedを返す' do
1209 get :edit, :id => @sheet_panel.id, :format => :js
1210 response.message.should match(/Unauthorized/)
1216 describe '更新に於いて' do
1218 @sheet_panel = FactoryGirl.create :sheet_panel, :author_id => @user.author.id
1219 @attr = FactoryGirl.attributes_for(:sheet_panel, :author_id => @author.id)
1222 context 'つつがなく終わるとき' do
1224 it 'ステータスコード302 Foundを返す' do
1225 SheetPanel.any_instance.stub(:store).and_return(true)
1226 put :update, :id => @sheet_panel.id, :sheet_panel => @attr
1227 response.status.should eq 302
1230 # SheetPanel.any_instance.stub(:store).and_return(true)
1231 put :update, :id => @sheet_panel.id, :sheet_panel => @attr
1232 response.should redirect_to(:action => :sheet, :id => @attr[:sheet_id])
1236 it 'ステータスコード200 OKを返す' do
1237 # SheetPanel.any_instance.stub(:store).and_return(true)
1238 put :update, :id => @sheet_panel.id, :sheet_panel => @attr, :format => :json
1239 response.should be_success
1243 context 'ユーザ権限がないとき' do
1248 it 'ステータスコード302 Foundを返す' do
1249 put :update, :id => @sheet_panel.id, :sheet_panel => @attr
1250 response.status.should eq 302
1252 it 'サインインページへ遷移する' do
1253 put :update, :id => @sheet_panel.id, :sheet_panel => @attr
1254 response.body.should redirect_to '/users/sign_in'
1258 it 'ステータスコード401 Unauthorizedを返す' do
1259 put :update, :id => @sheet_panel.id, :sheet_panel => @attr, :format => :json
1260 response.status.should eq 401
1262 it '応答メッセージにUnauthorizedを返す' do
1263 put :update, :id => @sheet_panel.id, :sheet_panel => @attr, :format => :json
1264 response.message.should match(/Unauthorized/)
1270 describe '削除に於いて' do
1272 @sheet_panel = FactoryGirl.create :sheet_panel, :author_id => @author.id
1274 SheetPanel.stub(:edit).and_return(@sheet_panel)
1276 context 'つつがなく終わるとき' do
1278 SheetPanel.any_instance.stub(:destroy_and_shorten).with(any_args()).and_return(true)
1281 it 'ステータスコード302 Foundを返す' do
1282 delete :destroy, :id => @sheet_panel.id
1283 response.status.should eq 302
1286 delete :destroy, :id => @sheet_panel.id
1287 response.should redirect_to(:controller => 'sheet_panels', :action => :sheet, :id => @sheet_panel.sheet_id)
1291 it 'ステータスコード200 OKを返す' do
1292 delete :destroy, :id => @sheet_panel.id, :format => :json
1293 response.should be_success
1297 context 'ユーザ権限がないとき' do
1302 it 'ステータスコード302 Foundを返す' do
1303 delete :destroy, :id => @sheet_panel.id
1304 response.status.should eq 302
1306 it 'サインインページへ遷移する' do
1307 delete :destroy, :id => @sheet_panel.id
1308 response.body.should redirect_to '/users/sign_in'
1312 it 'ステータスコード401 Unauthorizedを返す' do
1313 delete :destroy, :id => @sheet_panel.id, :format => :json
1314 response.status.should eq 401
1316 it '応答メッセージにUnauthorizedを返す' do
1317 delete :destroy, :id => @sheet_panel.id, :format => :json
1318 response.message.should match(/Unauthorized/)