1 # -*- encoding: utf-8 -*-
\r
2 require 'spec_helper'
\r
4 describe PanelsController do
\r
6 @admin = FactoryGirl.create :admin
\r
7 @sp = FactoryGirl.create :system_picture
\r
8 @lg = FactoryGirl.create :license_group
\r
9 @license = FactoryGirl.create :license, :license_group_id => @lg.id, :system_picture_id => @sp.id
\r
10 @user = FactoryGirl.create :user_yas
\r
11 @author = FactoryGirl.create :author, :user_id => @user.id
\r
14 if MagicNumber['run_mode'] == 1
\r
15 describe '一覧表示に於いて' do
\r
17 @panel = FactoryGirl.create :panel, :author_id => @author.id
\r
18 Panel.stub(:list).and_return([@panel, @panel, @panel])
\r
21 context '事前チェックする' do
\r
22 it '与えられたpageがセットされている' do
\r
23 get :index, :page => 5
\r
24 assigns(:page).should eq 5
\r
26 it '省略されると@pageに1値が入る' do
\r
28 assigns(:page).should eq 1
\r
30 it '与えられたpage_sizeがセットされている' do
\r
31 get :index, :page_size => 15
\r
32 assigns(:page_size).should eq 15
\r
34 it '省略されると@page_sizeにデフォルト値が入る' do
\r
36 assigns(:page_size).should eq Panel.default_page_size
\r
38 it '最大を超えると@page_sizeにデフォルト最大値が入る' do
\r
39 get :index, :page_size => 1500
\r
40 assigns(:page_size).should eq Panel.max_page_size
\r
42 it '不正な値が入ると@page_sizeにデフォルト最大値が入る' do
\r
43 get :index, :page_size => 0
\r
44 assigns(:page_size).should eq Panel.default_page_size
\r
47 context 'つつがなく終わるとき' do
\r
48 it 'コマモデルに一覧を問い合わせている' do
\r
49 Panel.should_receive(:list).exactly(1)
\r
52 it '@panelsにリストを取得している' do
\r
54 assigns(:panels).should have_at_least(3).items
\r
57 it 'ステータスコード200 OKを返す' do
\r
59 response.should be_success
\r
61 it 'indexテンプレートを描画する' do
\r
63 response.should render_template("index")
\r
67 it 'ステータスコード200 OKを返す' do
\r
68 get :index, :format => :json
\r
69 response.should be_success
\r
72 get :index, :format => :json
\r
73 lambda{JSON.parse(response.body)}.should_not raise_error(JSON::ParserError)
\r
75 it 'コマモデルにコマリストのjson出力を問い合わせている' do
\r
76 Panel.should_receive(:list_as_json_text).exactly(1)
\r
77 get :index, :format => :json
\r
79 it 'データがリスト構造になっている' do
\r
80 get :index, :format => :json
\r
81 json = JSON.parse response.body
\r
82 json.should have_at_least(3).items
\r
84 it 'リストの先頭くらいはコマっぽいものであって欲しい' do
\r
85 get :index, :format => :json
\r
86 json = JSON.parse response.body
\r
87 json.first.has_key?("border").should be_true
\r
91 context 'ユーザ権限がないとき' do
\r
96 it 'ステータスコード302 Foundを返す' do
\r
98 response.status.should eq 302
\r
100 it 'サインインページへ遷移する' do
\r
102 response.should redirect_to '/users/sign_in'
\r
105 context 'json形式' do
\r
106 it 'ステータスコード401 Unauthorizedを返す' do
\r
107 get :index, :format => :json
\r
108 response.status.should eq 401
\r
110 it '応答メッセージにUnauthorizedを返す' do
\r
111 get :index, :format => :json
\r
112 response.message.should match(/Unauthorized/)
\r
116 context 'ユーザ権限はないが管理者権限があるとき' do
\r
121 it 'ステータスコード200 OKを返す' do
\r
123 response.should be_success
\r
126 context 'ユーザだが作家登録していないとき' do
\r
130 it 'ステータスコード200 OKを返す' do
\r
132 response.should be_success
\r
137 describe '単体表示に於いて' do
\r
139 @panel = FactoryGirl.create :panel, :author_id => @user.author.id
\r
140 Panel.stub(:show).with(@panel.id.to_s, [@user, nil]).and_return(@panel)
\r
141 Panel.stub(:show).with(@panel.id.to_s, [nil, @admin]).and_return(@panel)
\r
144 context 'つつがなく終わるとき' do
\r
145 it 'コマモデルに単体取得を問い合わせている' do
\r
146 Panel.should_receive(:show).exactly(1)
\r
149 it '@panelにアレを取得している' do
\r
150 get :show, :id => @panel.id
\r
151 assigns(:panel).id.should eq(@panel.id)
\r
153 context 'html形式' do
\r
154 it 'ステータスコード200 OKを返す' do
\r
155 get :show, :id => @panel.id
\r
156 response.should be_success
\r
158 it 'showテンプレートを描画する' do
\r
159 get :show, :id => @panel.id
\r
160 response.should render_template("show")
\r
163 context 'json形式' do
\r
164 it 'ステータスコード200 OKを返す' do
\r
165 get :show, :id => @panel.id, :format => :json
\r
166 response.should be_success
\r
169 get :show, :id => @panel.id, :format => :json
\r
170 lambda{JSON.parse(response.body)}.should_not raise_error(JSON::ParserError)
\r
172 it 'コマモデルにコマのjson出力を問い合わせている' do
\r
173 Panel.any_instance.should_receive(:panel_elements_as_json).exactly(1)
\r
174 get :show, :id => @panel.id, :format => :json
\r
176 it 'データがアレになっている' do
\r
177 get :show, :id => @panel.id, :format => :json
\r
178 json = JSON.parse response.body
\r
179 json["width"].should eq 100
\r
183 context 'ユーザ権限がないとき' do
\r
187 context 'html形式' do
\r
188 it 'ステータスコード302 Foundを返す' do
\r
189 get :show, :id => @panel.id
\r
190 response.status.should eq 302
\r
192 it 'サインインページへ遷移する' do
\r
193 get :show, :id => @panel.id
\r
194 response.body.should redirect_to '/users/sign_in'
\r
197 context 'json形式' do
\r
198 it 'ステータスコード401 Unauthorizedを返す' do
\r
199 get :show, :id => @panel.id, :format => :json
\r
200 response.status.should eq 401
\r
202 it '応答メッセージにUnauthorizedを返す' do
\r
203 get :show, :id => @panel.id, :format => :json
\r
204 response.message.should match(/Unauthorized/)
\r
208 context 'ユーザ権限はないが管理者権限があるとき' do
\r
213 it 'ステータスコード200 OKを返す' do
\r
214 get :show, :id => @panel.id
\r
215 response.should be_success
\r
218 context 'ユーザだが作家登録していないとき' do
\r
222 it 'ステータスコード200 OKを返す' do
\r
223 get :show, :id => @panel.id
\r
224 response.should be_success
\r
228 context '対象コマがないとき' do
\r
229 context 'html形式' do
\r
230 it '例外404 not_foundを返す' do
\r
232 get :show, :id => 0
\r
233 }.should raise_error(ActiveRecord::RecordNotFound)
\r
236 context 'json形式' do
\r
237 it '例外404 not_foundを返す' do
\r
239 get :show, :id => 0, :format => :json
\r
240 }.should raise_error(ActiveRecord::RecordNotFound)
\r
244 context '非公開コマを見ようとしたとき' do
\r
245 context 'html形式' do
\r
246 it '例外403 forbiddenを返す' do
\r
247 Panel.any_instance.stub(:visible?).with(any_args()).and_return(false)
\r
248 hidden = FactoryGirl.create :hidden_panel, :author_id => @author.id
\r
250 get :show, :id => hidden
\r
251 }.should raise_error(ActiveRecord::Forbidden)
\r
254 context 'json形式' do
\r
255 it '例外403 forbiddenを返す' do
\r
256 Panel.any_instance.stub(:visible?).with(any_args()).and_return(false)
\r
257 hidden = FactoryGirl.create :hidden_panel, :author_id => @author.id
\r
259 get :show, :id => hidden, :format => :json
\r
260 }.should raise_error(ActiveRecord::Forbidden)
\r
267 describe 'コマ数取得に於いて' do
\r
269 Panel.should_receive(:visible_count).and_return(3)
\r
272 context 'つつがなく終わるとき' do
\r
273 it 'ステータスコード200 OKを返す' do
\r
274 get :count, :format => :json
\r
275 response.should be_success
\r
277 context 'json形式' do
\r
279 get :count, :format => :json
\r
280 lambda{JSON.parse(response.body)}.should_not raise_error(JSON::ParserError)
\r
282 it 'データがHash構造になっていてコマ数が1である' do
\r
283 get :count, :format => :json
\r
284 json = JSON.parse response.body
\r
285 json["count"].should == 3
\r
291 describe '新規作成フォーム表示に於いて' do
\r
295 context 'つつがなく終わるとき' do
\r
296 it '@panelに新規データを用意している' do
\r
298 assigns(:panel).should be_a_new(Panel)
\r
300 it 'コマモデルにデフォルト値補充を依頼している' do
\r
301 Panel.any_instance.should_receive(:supply_default).exactly(1)
\r
304 context 'html形式' do
\r
305 it 'ステータスコード200 OKを返す' do
\r
307 response.should be_success
\r
309 it 'newテンプレートを描画する' do
\r
311 response.should render_template("new")
\r
315 it 'new.jsテンプレートを描画する' do
\r
316 get :new, :format => :js
\r
317 response.should render_template("new")
\r
320 context 'json形式' do
\r
322 get :new, :format => :json
\r
323 lambda{JSON.parse(response.body)}.should_not raise_error(JSON::ParserError)
\r
325 it 'コマモデルにコマのjson出力を問い合わせている' do
\r
326 Panel.any_instance.should_receive(:panel_elements_as_json).exactly(1)
\r
327 get :new, :format => :json
\r
331 context 'ユーザ権限がないとき' do
\r
335 context 'html形式' do
\r
336 it 'ステータスコード302 Foundを返す' do
\r
338 response.status.should eq 302
\r
340 it 'サインインページへ遷移する' do
\r
342 response.body.should redirect_to '/users/sign_in'
\r
346 it 'ステータスコード401 Unauthorizedを返す' do
\r
347 get :new, :format => :js
\r
348 response.status.should eq 401
\r
350 it '応答メッセージにUnauthorizedを返す' do
\r
351 get :new, :format => :js
\r
352 response.message.should match(/Unauthorized/)
\r
356 context 'ユーザ権限はないが管理者権限があるとき' do
\r
361 context 'html形式' do
\r
362 it 'ステータスコード302 Foundを返す' do
\r
364 response.status.should eq 302
\r
366 it 'サインインページへ遷移する' do
\r
368 response.body.should redirect_to '/users/sign_in'
\r
372 context 'ユーザだが作家登録していないとき' do
\r
376 context 'html形式' do
\r
377 it 'ステータスコード302 Foundを返す' do
\r
379 response.status.should eq 302
\r
381 it '作家登録ページへ遷移する' do
\r
383 response.body.should redirect_to new_author_path
\r
389 describe '新規作成に於いて' do
\r
391 @panel = FactoryGirl.build :panel, :author_id => @author.id
\r
392 @attr = FactoryGirl.attributes_for(:panel, :author_id => @author.id)
\r
395 context '事前チェックする' do
\r
397 Panel.stub(:count).and_return(10)
\r
399 it 'panelがパラメータにあれば、展開する' do
\r
400 post :create, :panel => @attr
\r
401 assigns(:prm)['border'].to_i.should eq @panel.border
\r
403 it 'jsonがパラメータにあれば、展開する' do
\r
404 post :create, :json => FactoryGirl.attributes_for(:panel, :border => 4).to_json
\r
405 assigns(:prm)['border'].to_i.should eq 4
\r
407 it 'panel・json両パラメータがあれば、panelを優先して展開する' do
\r
409 :panel => FactoryGirl.attributes_for(:panel),
\r
410 :json => FactoryGirl.attributes_for(:panel, :border => 4).to_json
\r
412 assigns(:prm)['border'].to_i.should eq @panel.border
\r
414 it 'コマモデルにデフォルト値補充を依頼している' do
\r
415 Panel.any_instance.should_receive(:supply_default).exactly(1)
\r
416 post :create, :panel => @attr
\r
419 Panel.any_instance.should_receive(:store).exactly(1)
\r
420 post :create, :panel => @attr
\r
423 context 'つつがなく終わるとき' do
\r
424 it "@panelに作成されたコマを保持していて、それがDBにある" do
\r
425 post :create, :panel => @attr
\r
426 assigns(:panel).should be_a(Panel)
\r
427 assigns(:panel).should be_persisted
\r
429 context 'html形式' do
\r
430 it 'ステータスコード302 Foundを返す' do
\r
431 Panel.any_instance.stub(:store).and_return(true)
\r
432 post :create, :panel => @attr
\r
433 response.status.should eq 302
\r
435 it '作成されたコマの表示ページへ遷移する' do
\r
436 # Panel.any_instance.stub(:store).and_return(true)
\r
437 post :create, :panel => @attr
\r
438 response.should redirect_to(Panel.last)
\r
441 context 'json形式' do
\r
442 it 'ステータスコード200 OKを返す' do
\r
443 # Panel.any_instance.stub(:store).and_return(true)
\r
444 post :create, :panel => @attr, :format => :json
\r
445 response.should be_success
\r
447 it '作成されたコマをjsonデータで返す' do
\r
448 post :create, :panel => @attr, :format => :json
\r
449 lambda{JSON.parse(response.body)}.should_not raise_error(JSON::ParserError)
\r
451 it 'コマモデルにコマのjson出力を問い合わせている' do
\r
452 Panel.any_instance.should_receive(:panel_elements_as_json).exactly(1)
\r
453 post :create, :panel => @attr, :format => :json
\r
455 it 'データがアレになっている' do
\r
456 post :create, :panel => @attr, :format => :json
\r
457 json = JSON.parse response.body
\r
458 json["width"].should eq @panel.width
\r
462 context 'ユーザ権限がないとき' do
\r
466 context 'html形式' do
\r
467 it 'ステータスコード302 Foundを返す' do
\r
468 post :create, :panel => @attr
\r
469 response.status.should eq 302
\r
471 it 'サインインページへ遷移する' do
\r
472 post :create, :panel => @attr
\r
473 response.body.should redirect_to '/users/sign_in'
\r
476 context 'json形式' do
\r
477 it 'ステータスコード401 Unauthorizedを返す' do
\r
478 post :create, :panel => @attr, :format => :json
\r
479 response.status.should eq 401
\r
481 it '応答メッセージにUnauthorizedを返す' do
\r
482 post :create, :panel => @attr, :format => :json
\r
483 response.message.should match(/Unauthorized/)
\r
487 context 'ユーザ権限はないが管理者権限があるとき' do
\r
492 context 'html形式' do
\r
493 it 'ステータスコード302 Foundを返す' do
\r
494 post :create, :panel => @attr
\r
495 response.status.should eq 302
\r
497 it 'サインインページへ遷移する' do
\r
498 post :create, :panel => @attr
\r
499 response.body.should redirect_to '/users/sign_in'
\r
503 context 'ユーザだが作家登録していないとき' do
\r
507 context 'html形式' do
\r
508 it 'ステータスコード302 Foundを返す' do
\r
509 post :create, :panel => @attr
\r
510 response.status.should eq 302
\r
512 it '作家登録ページへ遷移する' do
\r
513 post :create, :panel => @attr
\r
514 response.body.should redirect_to new_author_path
\r
518 context '検証、保存に失敗した' do
\r
520 Panel.any_instance.stub(:store).and_return(false)
\r
522 it "未保存のコマを保持している" do
\r
523 post :create, :panel => @attr
\r
524 assigns(:panel).should be_a_new(Panel)
\r
526 context 'html形式' do
\r
527 it 'ステータスコード200 OKを返す' do
\r
528 post :create, :panel => @attr
\r
529 response.status.should eq 200
\r
532 post :create, :panel => @attr
\r
533 response.should render_template("new")
\r
536 context 'json形式' do
\r
537 it 'ステータスコード422 unprocessable_entity を返す' do
\r
538 post :create, :panel => @attr, :format => :json
\r
539 response.status.should eq 422
\r
541 it '応答メッセージUnprocessable Entityを返す' do
\r
542 post :create, :panel => @attr, :format => :json
\r
543 response.message.should match(/Unprocessable/)
\r
549 describe '編集フォーム表示に於いて' do
\r
551 @panel = FactoryGirl.create :panel, :author_id => @author.id
\r
553 Panel.stub(:show).and_return(@panel)
\r
555 context 'つつがなく終わるとき' do
\r
556 it 'コマモデルに編集取得を問い合わせている' do
\r
557 Panel.should_receive(:edit).exactly(1)
\r
558 get :edit, :id => @panel.id
\r
560 it '@panelにデータを用意している' do
\r
561 get :edit, :id => @panel.id
\r
562 assigns(:panel).should eq @panel
\r
564 context 'html形式' do
\r
565 it 'ステータスコード200 OKを返す' do
\r
566 get :edit, :id => @panel.id
\r
567 response.should be_success
\r
569 it 'editテンプレートを描画する' do
\r
570 get :edit, :id => @panel.id
\r
571 response.should render_template("edit")
\r
575 it 'ステータスコード200 OKを返す' do
\r
576 get :edit, :id => @panel.id, :format => :js
\r
577 response.should be_success
\r
579 it 'edit.jsテンプレートを描画する' do
\r
580 get :edit, :id => @panel.id, :format => :js
\r
581 response.should render_template("edit")
\r
585 context 'ユーザ権限がないとき' do
\r
589 context 'html形式' do
\r
590 it 'ステータスコード302 Foundを返す' do
\r
591 get :edit, :id => @panel.id
\r
592 response.status.should eq 302
\r
594 it 'サインインページへ遷移する' do
\r
595 get :edit, :id => @panel.id
\r
596 response.body.should redirect_to '/users/sign_in'
\r
600 it 'ステータスコード401 Unauthorizedを返す' do
\r
601 get :edit, :id => @panel.id, :format => :js
\r
602 response.status.should eq 401
\r
604 it '応答メッセージにUnauthorizedを返す' do
\r
605 get :edit, :id => @panel.id, :format => :js
\r
606 response.message.should match(/Unauthorized/)
\r
610 context 'ユーザ権限はないが管理者権限があるとき' do
\r
615 context 'html形式' do
\r
616 it 'ステータスコード302 Foundを返す' do
\r
617 get :edit, :id => @panel.id
\r
618 response.status.should eq 302
\r
620 it 'サインインページへ遷移する' do
\r
621 get :edit, :id => @panel.id
\r
622 response.body.should redirect_to '/users/sign_in'
\r
626 context 'ユーザだが作家登録していないとき' do
\r
630 context 'html形式' do
\r
631 it 'ステータスコード302 Foundを返す' do
\r
632 get :edit, :id => @panel.id
\r
633 response.status.should eq 302
\r
635 it '作家登録ページへ遷移する' do
\r
636 get :edit, :id => @panel.id
\r
637 response.body.should redirect_to new_author_path
\r
643 describe '更新に於いて' do
\r
645 @panel = FactoryGirl.create :panel, :author_id => @user.author.id
\r
646 @attr = FactoryGirl.attributes_for(:panel, :author_id => @author.id)
\r
649 context '事前チェックする' do
\r
652 Panel.stub(:count).and_return(10)
\r
654 it 'panelがパラメータにあれば、展開する' do
\r
655 put :update, :id => @panel.id, :panel => @attr
\r
656 assigns(:prm)['border'].to_i.should eq @panel.border
\r
658 it 'jsonがパラメータにあれば、展開する' do
\r
659 put :update, :id => @panel.id, :json => FactoryGirl.attributes_for(:panel, :border => 4).to_json
\r
660 assigns(:prm)['border'].to_i.should eq 4
\r
662 it 'panel・json両パラメータがあれば、panelを優先して展開する' do
\r
665 :panel => FactoryGirl.attributes_for(:panel),
\r
666 :json => FactoryGirl.attributes_for(:panel, :border => 4).to_json
\r
668 assigns(:prm)['border'].to_i.should eq @panel.border
\r
671 context 'つつがなく終わるとき' do
\r
672 it 'モデルに編集取得依頼する' do
\r
673 Panel.stub(:edit).with(any_args).and_return(@panel)
\r
674 Panel.should_receive(:edit).exactly(1)
\r
675 put :update, :id => @panel.id, :panel => @attr
\r
678 Panel.any_instance.should_receive(:store).exactly(1)
\r
679 put :update, :id => @panel.id, :panel => @attr
\r
681 it "@panelに作成されたコマを保持していて、それがDBにある" do
\r
682 put :update, :id => @panel.id, :panel => @attr
\r
683 assigns(:panel).should be_a(Panel)
\r
684 assigns(:panel).should be_persisted
\r
686 context 'html形式' do
\r
687 it 'ステータスコード302 Foundを返す' do
\r
688 Panel.any_instance.stub(:store).and_return(true)
\r
689 put :update, :id => @panel.id, :panel => @attr
\r
690 response.status.should eq 302
\r
692 it '作成されたコマの表示ページへ遷移する' do
\r
693 # Panel.any_instance.stub(:store).and_return(true)
\r
694 put :update, :id => @panel.id, :panel => @attr
\r
695 response.should redirect_to(Panel.last)
\r
698 context 'json形式' do
\r
699 it 'ステータスコード200 OKを返す' do
\r
700 # Panel.any_instance.stub(:store).and_return(true)
\r
701 put :update, :id => @panel.id, :panel => @attr, :format => :json
\r
702 response.should be_success
\r
704 it 'ページ本体は特に返さない' do
\r
705 Panel.any_instance.stub(:save).with(any_args()).and_return(true)
\r
706 put :update, :id => @panel.id, :panel => @attr, :format => :json
\r
707 response.body.should match /./
\r
711 context 'ユーザ権限がないとき' do
\r
715 context 'html形式' do
\r
716 it 'ステータスコード302 Foundを返す' do
\r
717 put :update, :id => @panel.id, :panel => @attr
\r
718 response.status.should eq 302
\r
720 it 'サインインページへ遷移する' do
\r
721 put :update, :id => @panel.id, :panel => @attr
\r
722 response.body.should redirect_to '/users/sign_in'
\r
725 context 'json形式' do
\r
726 it 'ステータスコード401 Unauthorizedを返す' do
\r
727 put :update, :id => @panel.id, :panel => @attr, :format => :json
\r
728 response.status.should eq 401
\r
730 it '応答メッセージにUnauthorizedを返す' do
\r
731 put :update, :id => @panel.id, :panel => @attr, :format => :json
\r
732 response.message.should match(/Unauthorized/)
\r
736 context 'ユーザ権限はないが管理者権限があるとき' do
\r
741 context 'html形式' do
\r
742 it 'ステータスコード302 Foundを返す' do
\r
743 put :update, :id => @panel.id, :panel => @attr
\r
744 response.status.should eq 302
\r
746 it 'サインインページへ遷移する' do
\r
747 put :update, :id => @panel.id, :panel => @attr
\r
748 response.body.should redirect_to '/users/sign_in'
\r
752 context 'ユーザだが作家登録していないとき' do
\r
756 context 'html形式' do
\r
757 it 'ステータスコード302 Foundを返す' do
\r
758 put :update, :id => @panel.id, :panel => @attr
\r
759 response.status.should eq 302
\r
761 it '作家登録ページへ遷移する' do
\r
762 put :update, :id => @panel.id, :panel => @attr
\r
763 response.body.should redirect_to new_author_path
\r
767 context '検証、保存に失敗した' do
\r
769 Panel.any_instance.stub(:store).and_return(false)
\r
771 it "指定のコマを保持している" do
\r
772 put :update, :id => @panel.id, :panel => @attr
\r
773 assigns(:panel).should eq @panel
\r
775 context 'html形式' do
\r
776 it 'ステータスコード200 OKを返す' do
\r
777 put :update, :id => @panel.id, :panel => @attr
\r
778 response.status.should eq 200
\r
781 put :update, :id => @panel.id, :panel => @attr
\r
782 response.should render_template("edit")
\r
785 context 'json形式' do
\r
786 it 'ステータスコード422 unprocessable_entity を返す' do
\r
787 put :update, :id => @panel.id, :panel => @attr, :format => :json
\r
788 response.status.should eq 422
\r
790 it '応答メッセージUnprocessable Entityを返す' do
\r
791 put :update, :id => @panel.id, :panel => @attr, :format => :json
\r
792 response.message.should match(/Unprocessable/)
\r
798 describe '削除に於いて' do
\r
800 @panel = FactoryGirl.create :panel, :author_id => @user.author.id
\r
801 Panel.stub(:edit).and_return(@panel)
\r
804 context 'つつがなく終わるとき' do
\r
805 it 'コマモデルに編集取得を問い合わせている' do
\r
806 Panel.should_receive(:edit).exactly(1)
\r
807 delete :destroy, :id => @panel.id
\r
809 it '@panelにアレを取得している' do
\r
810 delete :destroy, :id => @panel.id
\r
811 assigns(:panel).id.should eq(@panel.id)
\r
815 delete :destroy, :id => @panel.id
\r
816 }.should change(Panel, :count)
\r
818 context 'html形式' do
\r
819 it 'ステータスコード302 Foundを返す' do
\r
820 delete :destroy, :id => @panel.id
\r
821 response.status.should eq 302
\r
823 it 'マイコマ一覧ページへ遷移する' do
\r
824 delete :destroy, :id => @panel.id
\r
825 response.should redirect_to('/home/panel')
\r
828 context 'json形式' do
\r
829 it 'ステータスコード200 OKを返す' do
\r
830 delete :destroy, :id => @panel.id, :format => :json
\r
831 response.should be_success
\r
835 context 'ユーザ権限がないとき' do
\r
839 context 'html形式' do
\r
840 it 'ステータスコード302 Foundを返す' do
\r
841 delete :destroy, :id => @panel.id
\r
842 response.status.should eq 302
\r
844 it 'サインインページへ遷移する' do
\r
845 delete :destroy, :id => @panel.id
\r
846 response.body.should redirect_to '/users/sign_in'
\r
849 context 'json形式' do
\r
850 it 'ステータスコード401 Unauthorizedを返す' do
\r
851 delete :destroy, :id => @panel.id, :format => :json
\r
852 response.status.should eq 401
\r
854 it '応答メッセージにUnauthorizedを返す' do
\r
855 delete :destroy, :id => @panel.id, :format => :json
\r
856 response.message.should match(/Unauthorized/)
\r
860 context 'ユーザ権限はないが管理者権限があるとき' do
\r
865 context 'html形式' do
\r
866 it 'ステータスコード302 Foundを返す' do
\r
867 delete :destroy, :id => @panel.id
\r
868 response.status.should eq 302
\r
870 it 'サインインページへ遷移する' do
\r
871 delete :destroy, :id => @panel.id
\r
872 response.body.should redirect_to '/users/sign_in'
\r
876 context 'ユーザだが作家登録していないとき' do
\r
880 context 'html形式' do
\r
881 it 'ステータスコード302 Foundを返す' do
\r
882 delete :destroy, :id => @panel.id
\r
883 response.status.should eq 302
\r
885 it '作家登録ページへ遷移する' do
\r
886 delete :destroy, :id => @panel.id
\r
887 response.body.should redirect_to new_author_path
\r
891 context '削除に失敗したとき' do
\r
893 Panel.any_instance.stub(:destroy_with_elements).and_return(false)
\r
895 context 'html形式' do
\r
896 it 'ステータスコード302 Foundを返す' do
\r
897 delete :destroy, :id => @panel.id
\r
898 response.status.should eq 302
\r
900 it 'そのコマの詳細ページへ遷移する' do
\r
901 delete :destroy, :id => @panel.id
\r
902 response.should redirect_to(panel_path(@panel))
\r
905 context 'json形式' do
\r
906 it 'ステータスコード422 unprocessable_entity を返す' do
\r
907 delete :destroy, :id => @panel.id, :format => :json
\r
908 response.status.should eq 422
\r
910 it '応答メッセージUnprocessable Entityを返す' do
\r
911 delete :destroy, :id => @panel.id, :format => :json
\r
912 response.message.should match(/Unprocessable/)
\r
917 context '対象コマがないとき' do
\r
919 context '他人のコマだったとき' do
\r
925 describe '一覧表示に於いて' do
\r
927 @panel = FactoryGirl.create :panel, :author_id => @author.id
\r
928 Panel.stub(:list).and_return([@panel, @panel, @panel])
\r
931 context 'つつがなく終わるとき' do
\r
932 context 'html形式' do
\r
933 it 'ステータスコード200 OKを返す' do
\r
935 response.should be_success
\r
937 it 'indexテンプレートを描画する' do
\r
939 response.should render_template("index")
\r
942 context 'json形式' do
\r
943 it 'ステータスコード200 OKを返す' do
\r
944 get :index, :format => :json
\r
945 response.should be_success
\r
948 get :index, :format => :json
\r
949 lambda{JSON.parse(response.body)}.should_not raise_error(JSON::ParserError)
\r
953 context 'ユーザ権限がないとき' do
\r
957 context 'html形式' do
\r
958 it 'ステータスコード200 OKを返す' do
\r
960 response.should be_success
\r
962 it 'indexテンプレートを描画する' do
\r
964 response.should render_template("index")
\r
967 context 'json形式' do
\r
968 it 'ステータスコード200 OKを返す' do
\r
969 get :index, :format => :json
\r
970 response.should be_success
\r
973 get :index, :format => :json
\r
974 lambda{JSON.parse(response.body)}.should_not raise_error(JSON::ParserError)
\r
980 describe '単体表示に於いて' do
\r
982 @panel = FactoryGirl.create :panel, :author_id => @user.author.id
\r
983 Panel.stub(:show).with(@panel.id.to_s, [nil, nil]).and_return(@panel)
\r
984 Panel.stub(:show).with(@panel.id.to_s, [@user, nil]).and_return(@panel)
\r
985 Panel.stub(:show).with(@panel.id.to_s, [nil, @admin]).and_return(@panel)
\r
988 context 'つつがなく終わるとき' do
\r
989 context 'html形式' do
\r
990 it 'ステータスコード200 OKを返す' do
\r
991 get :show, :id => @panel.id
\r
992 response.should be_success
\r
994 it 'showテンプレートを描画する' do
\r
995 get :show, :id => @panel.id
\r
996 response.should render_template("show")
\r
999 context 'json形式' do
\r
1000 it 'ステータスコード200 OKを返す' do
\r
1001 get :show, :id => @panel.id, :format => :json
\r
1002 response.should be_success
\r
1004 it 'jsonデータを返す' do
\r
1005 get :show, :id => @panel.id, :format => :json
\r
1006 lambda{JSON.parse(response.body)}.should_not raise_error(JSON::ParserError)
\r
1010 context 'ユーザ権限がないとき' do
\r
1014 context 'html形式' do
\r
1015 it 'ステータスコード200 OKを返す' do
\r
1016 get :show, :id => @panel.id
\r
1017 response.should be_success
\r
1019 it 'showテンプレートを描画する' do
\r
1020 get :show, :id => @panel.id
\r
1021 response.should render_template("show")
\r
1024 context 'json形式' do
\r
1025 it 'ステータスコード200 OKを返す' do
\r
1026 get :show, :id => @panel.id, :format => :json
\r
1027 response.should be_success
\r
1029 it 'jsonデータを返す' do
\r
1030 get :show, :id => @panel.id, :format => :json
\r
1031 lambda{JSON.parse(response.body)}.should_not raise_error(JSON::ParserError)
\r
1037 describe 'コマ数取得に於いて' do
\r
1039 Panel.should_receive(:visible_count).and_return(3)
\r
1042 context 'つつがなく終わるとき' do
\r
1043 it 'ステータスコード200 OKを返す' do
\r
1044 get :count, :format => :json
\r
1045 response.should be_success
\r
1047 context 'json形式' do
\r
1048 it 'jsonデータを返す' do
\r
1049 get :count, :format => :json
\r
1050 lambda{JSON.parse(response.body)}.should_not raise_error(JSON::ParserError)
\r
1056 describe '新規作成フォーム表示に於いて' do
\r
1060 context 'つつがなく終わるとき' do
\r
1061 context 'html形式' do
\r
1062 it 'ステータスコード200 OKを返す' do
\r
1064 response.should be_success
\r
1066 it 'newテンプレートを描画する' do
\r
1068 response.should render_template("new")
\r
1072 it 'new.jsテンプレートを描画する' do
\r
1073 get :new, :format => :js
\r
1074 response.should render_template("new")
\r
1077 context 'json形式' do
\r
1078 it 'jsonデータを返す' do
\r
1079 get :new, :format => :json
\r
1080 lambda{JSON.parse(response.body)}.should_not raise_error(JSON::ParserError)
\r
1084 context 'ユーザ権限がないとき' do
\r
1088 context 'html形式' do
\r
1089 it 'ステータスコード302 Foundを返す' do
\r
1091 response.status.should eq 302
\r
1093 it 'サインインページへ遷移する' do
\r
1095 response.body.should redirect_to '/users/sign_in'
\r
1099 it 'ステータスコード401 Unauthorizedを返す' do
\r
1100 get :new, :format => :js
\r
1101 response.status.should eq 401
\r
1103 it '応答メッセージにUnauthorizedを返す' do
\r
1104 get :new, :format => :js
\r
1105 response.message.should match(/Unauthorized/)
\r
1111 describe '新規作成に於いて' do
\r
1113 @panel = FactoryGirl.build :panel, :author_id => @author.id
\r
1114 @attr = FactoryGirl.attributes_for(:panel, :author_id => @author.id)
\r
1117 context 'つつがなく終わるとき' do
\r
1118 context 'html形式' do
\r
1119 it 'ステータスコード302 Foundを返す' do
\r
1120 Panel.any_instance.stub(:store).and_return(true)
\r
1121 post :create, :panel => @attr
\r
1122 response.status.should eq 302
\r
1124 it '作成されたコマの表示ページへ遷移する' do
\r
1125 # Panel.any_instance.stub(:store).and_return(true)
\r
1126 post :create, :panel => @attr
\r
1127 response.should redirect_to(Panel.last)
\r
1130 context 'json形式' do
\r
1131 it 'ステータスコード200 OKを返す' do
\r
1132 # Panel.any_instance.stub(:store).and_return(true)
\r
1133 post :create, :panel => @attr, :format => :json
\r
1134 response.should be_success
\r
1136 it '作成されたコマをjsonデータで返す' do
\r
1137 post :create, :panel => @attr, :format => :json
\r
1138 lambda{JSON.parse(response.body)}.should_not raise_error(JSON::ParserError)
\r
1142 context 'ユーザ権限がないとき' do
\r
1146 context 'html形式' do
\r
1147 it 'ステータスコード302 Foundを返す' do
\r
1148 post :create, :panel => @attr
\r
1149 response.status.should eq 302
\r
1151 it 'サインインページへ遷移する' do
\r
1152 post :create, :panel => @attr
\r
1153 response.body.should redirect_to '/users/sign_in'
\r
1156 context 'json形式' do
\r
1157 it 'ステータスコード401 Unauthorizedを返す' do
\r
1158 post :create, :panel => @attr, :format => :json
\r
1159 response.status.should eq 401
\r
1161 it '応答メッセージにUnauthorizedを返す' do
\r
1162 post :create, :panel => @attr, :format => :json
\r
1163 response.message.should match(/Unauthorized/)
\r
1169 describe '編集フォーム表示に於いて' do
\r
1171 @panel = FactoryGirl.create :panel, :author_id => @author.id
\r
1173 Panel.stub(:show).and_return(@panel)
\r
1175 context 'つつがなく終わるとき' do
\r
1176 context 'html形式' do
\r
1177 it 'ステータスコード200 OKを返す' do
\r
1178 get :edit, :id => @panel.id
\r
1179 response.should be_success
\r
1181 it 'editテンプレートを描画する' do
\r
1182 get :edit, :id => @panel.id
\r
1183 response.should render_template("edit")
\r
1187 it 'ステータスコード200 OKを返す' do
\r
1188 get :edit, :id => @panel.id, :format => :js
\r
1189 response.should be_success
\r
1191 it 'edit.jsテンプレートを描画する' do
\r
1192 get :edit, :id => @panel.id, :format => :js
\r
1193 response.should render_template("edit")
\r
1197 context 'ユーザ権限がないとき' do
\r
1201 context 'html形式' do
\r
1202 it 'ステータスコード302 Foundを返す' do
\r
1203 get :edit, :id => @panel.id
\r
1204 response.status.should eq 302
\r
1206 it 'サインインページへ遷移する' do
\r
1207 get :edit, :id => @panel.id
\r
1208 response.body.should redirect_to '/users/sign_in'
\r
1212 it 'ステータスコード401 Unauthorizedを返す' do
\r
1213 get :edit, :id => @panel.id, :format => :js
\r
1214 response.status.should eq 401
\r
1216 it '応答メッセージにUnauthorizedを返す' do
\r
1217 get :edit, :id => @panel.id, :format => :js
\r
1218 response.message.should match(/Unauthorized/)
\r
1224 describe '更新に於いて' do
\r
1226 @panel = FactoryGirl.create :panel, :author_id => @user.author.id
\r
1227 @attr = FactoryGirl.attributes_for(:panel, :author_id => @author.id)
\r
1230 context 'つつがなく終わるとき' do
\r
1231 context 'html形式' do
\r
1232 it 'ステータスコード302 Foundを返す' do
\r
1233 Panel.any_instance.stub(:store).and_return(true)
\r
1234 put :update, :id => @panel.id, :panel => @attr
\r
1235 response.status.should eq 302
\r
1237 it '作成されたコマの表示ページへ遷移する' do
\r
1238 # Panel.any_instance.stub(:store).and_return(true)
\r
1239 put :update, :id => @panel.id, :panel => @attr
\r
1240 response.should redirect_to(Panel.last)
\r
1243 context 'json形式' do
\r
1244 it 'ステータスコード200 OKを返す' do
\r
1245 # Panel.any_instance.stub(:store).and_return(true)
\r
1246 put :update, :id => @panel.id, :panel => @attr, :format => :json
\r
1247 response.should be_success
\r
1249 it 'ページ本体は特に返さない' do
\r
1250 Panel.any_instance.stub(:save).with(any_args()).and_return(true)
\r
1251 put :update, :id => @panel.id, :panel => @attr, :format => :json
\r
1252 response.body.should match /./
\r
1256 context 'ユーザ権限がないとき' do
\r
1260 context 'html形式' do
\r
1261 it 'ステータスコード302 Foundを返す' do
\r
1262 put :update, :id => @panel.id, :panel => @attr
\r
1263 response.status.should eq 302
\r
1265 it 'サインインページへ遷移する' do
\r
1266 put :update, :id => @panel.id, :panel => @attr
\r
1267 response.body.should redirect_to '/users/sign_in'
\r
1270 context 'json形式' do
\r
1271 it 'ステータスコード401 Unauthorizedを返す' do
\r
1272 put :update, :id => @panel.id, :panel => @attr, :format => :json
\r
1273 response.status.should eq 401
\r
1275 it '応答メッセージにUnauthorizedを返す' do
\r
1276 put :update, :id => @panel.id, :panel => @attr, :format => :json
\r
1277 response.message.should match(/Unauthorized/)
\r
1283 describe '削除に於いて' do
\r
1285 @panel = FactoryGirl.create :panel, :author_id => @user.author.id
\r
1286 Panel.stub(:edit).and_return(@panel)
\r
1289 context 'つつがなく終わるとき' do
\r
1290 context 'html形式' do
\r
1291 it 'ステータスコード302 Foundを返す' do
\r
1292 delete :destroy, :id => @panel.id
\r
1293 response.status.should eq 302
\r
1295 it 'マイコマ一覧ページへ遷移する' do
\r
1296 delete :destroy, :id => @panel.id
\r
1297 response.should redirect_to('/home/panel')
\r
1300 context 'json形式' do
\r
1301 it 'ステータスコード200 OKを返す' do
\r
1302 delete :destroy, :id => @panel.id, :format => :json
\r
1303 response.should be_success
\r
1307 context 'ユーザ権限がないとき' do
\r
1311 context 'html形式' do
\r
1312 it 'ステータスコード302 Foundを返す' do
\r
1313 delete :destroy, :id => @panel.id
\r
1314 response.status.should eq 302
\r
1316 it 'サインインページへ遷移する' do
\r
1317 delete :destroy, :id => @panel.id
\r
1318 response.body.should redirect_to '/users/sign_in'
\r
1321 context 'json形式' do
\r
1322 it 'ステータスコード401 Unauthorizedを返す' do
\r
1323 delete :destroy, :id => @panel.id, :format => :json
\r
1324 response.status.should eq 401
\r
1326 it '応答メッセージにUnauthorizedを返す' do
\r
1327 delete :destroy, :id => @panel.id, :format => :json
\r
1328 response.message.should match(/Unauthorized/)
\r