OSDN Git Service

t#29050:fix edit permissin
[pettanr/pettanr.git] / spec / controllers / stories_controller_spec.rb
index 13985d9..5124482 100644 (file)
@@ -262,9 +262,9 @@ describe StoriesController do
       sign_in @user
     end
     context 'つつがなく終わるとき' do
-      it 'モデルに取得依頼する' do
-        Story.stub(:show).with(any_args).and_return(@story)
-        Story.should_receive(:show).exactly(1)
+      it 'モデルに編集取得依頼する' do
+        Story.stub(:edit).with(any_args).and_return(@story)
+        Story.should_receive(:edit).exactly(1)
         put :update, :id => @story.id, :story => @attr
       end
       it 'POSTデータから、カラム値を復元している' do
@@ -361,4 +361,74 @@ describe StoriesController do
     end
   end
 
+  describe '削除に於いて' do\r
+    before do\r
+      @story = Factory :story, :author_id => @author.id
+      sign_in @user
+      Story.stub(:edit).and_return(@story)\r
+    end\r
+    context 'つつがなく終わるとき' do\r
+      it 'ストーリーモデルに編集取得を問い合わせている' do\r
+        Story.should_receive(:edit).exactly(1)\r
+        delete :destroy, :id => @story.id\r
+      end\r
+      it '@storyにアレを取得している' do\r
+        delete :destroy, :id => @story.id\r
+        assigns(:story).id.should eq(@story.id)\r
+      end\r
+      it 'そのストーリーを一つのトランザクションで削除する' do\r
+        lambda {\r
+          delete :destroy, :id => @story.id\r
+        }.should change(Story, :count)\r
+      end\r
+      context 'html形式' do\r
+        it 'ステータスコード302 Foundを返す' do\r
+          delete :destroy, :id => @story.id\r
+          response.status.should eq 302\r
+        end\r
+        it 'ストーリー一覧ページへ遷移する' do\r
+          delete :destroy, :id => @story.id\r
+          response.should redirect_to(story_path(@story.comic_id))\r
+        end\r
+      end\r
+      context 'json形式' do\r
+        it 'ステータスコード200 OKを返す' do\r
+          delete :destroy, :id => @story.id, :format => :json\r
+          response.should be_success\r
+        end\r
+      end\r
+    end\r
+    context '作家権限がないとき' do\r
+      before do\r
+        sign_out @user\r
+      end\r
+      context 'html形式' do\r
+        it 'ステータスコード302 Foundを返す' do\r
+          delete :destroy, :id => @story.id\r
+          response.status.should eq 302\r
+        end\r
+        it 'サインインページへ遷移する' do\r
+          delete :destroy, :id => @story.id\r
+          response.body.should redirect_to '/users/sign_in'\r
+        end\r
+      end\r
+      context 'json形式' do\r
+        it 'ステータスコード401 Unauthorizedを返す' do\r
+          delete :destroy, :id => @story.id, :format => :json\r
+          response.status.should eq 401\r
+        end\r
+        it '応答メッセージにUnauthorizedを返す' do\r
+          delete :destroy, :id => @story.id, :format => :json\r
+          response.message.should match(/Unauthorized/)\r
+        end\r
+      end\r
+    end\r
+=begin\r
+    context '対象ストーリーがないとき' do\r
+    end\r
+    context '他人のストーリーだったとき' do\r
+    end\r
+=end\r
+  end\r
+  \r
 end