OSDN Git Service

fix test
[pettanr/pettanr.git] / spec / support / controller_macros.rb
index 7b8981a..3df49f6 100644 (file)
@@ -1,72 +1,84 @@
 module ControllerMacros\r
-  def list_should_return_filer_or_json action, params = {}\r
-    # html形式: \r
-    # ステータスコード200 OKを返す\r
-    # filerテンプレートを描画する\r
-    get action, params\r
+  def sign_in_url\r
+    '/users/sign_in'\r
+  end\r
+  \r
+  def return_ok?\r
+    # ステータス OKを返す\r
     expect(response).to be_success\r
-    expect(response).to render_template("templates/r/filer/filer")\r
-    # json形式\r
-    # ステータスコード200 OKを返す\r
+  end\r
+  \r
+  def render_json?\r
     # jsonデータを返す\r
-    get action, params.merge(:format => :json)\r
-    expect(response).to be_success\r
     expect {JSON.parse(response.body)}.not_to raise_error\r
   end\r
   \r
-  # ゲストが画面からコンテンツにアクセスしようとした時の動作を確認する\r
-  def announce_sign_in_for_html\r
+  def render_filer?\r
+    # filerテンプレートを描画する\r
+    expect(response).to render_template("templates/r/filer/filer")\r
+  end\r
+  \r
+  def render_profiler?\r
+    # profilerテンプレートを描画する\r
+    expect(response).to render_template("templates/r/profiler/profiler")\r
+  end\r
+  \r
+  def render_form?\r
+    # formテンプレートを描画する\r
+    expect(response).to render_template("templates/r/form/form")\r
+  end\r
+  \r
+  def redirect? url\r
     # html形式: ステータスコード302 Foundを返す\r
     expect(response.status).to eq(302)\r
-    expect(response).to redirect_to '/users/sign_in'\r
+    expect(response).to redirect_to url\r
   end\r
   \r
   # ゲストがapiからコンテンツにアクセスしようとした時の動作を確認する\r
-  def announce_sign_in_for_json\r
+  def render_unauthorized?\r
     # json形式: ステータスコード401 Unauthorizedを返す\r
     expect(response.status).to eq(401)\r
     expect(response.message).to match(/Unauthorized/)\r
   end\r
   \r
-  # ゲストがコンテンツにアクセスしようとしたとき、サインインページに遷移する。\r
-  # ほとんどすべての機能から利用されるので、 htmlとjsonをまとめて処理している。\r
-  # 作成と更新はメソッドが違うので、個別にチェックする。\r
-  def announce_sign_in_at_get action, params = {}\r
-    get action, params\r
-    announce_sign_in_for_html\r
-    get action, params.merge(:format => :json)\r
-    announce_sign_in_for_json\r
+  # 処理不能を返す\r
+  def render_unprocessable?\r
+    expect(response.status).to eq(422)\r
+    expect(response.message).to match(/Unprocessable/)\r
   end\r
   \r
-  # 作家活動をしていないユーザーが画面から創作活動をしようとしたとき、作家登録ページに遷移する\r
-  def announce_regist_author_for_html\r
-    expect(response.status).to eq(302)\r
-    expect(response).to redirect_to new_author_path\r
+  def set_model? model_class, var_name = :my_model_class\r
+    # @filerにファイラーを取得している\r
+    expect(assigns(var_name).class).to be model_class.class\r
   end\r
   \r
-  # 作家活動していないユーザーがAPIから創作活動をしようとしたとき、例外を発生させる。\r
-  # 暫定的な仕様なので、良い方法があれば変えるかもしれない。メンテしやすいように切り分けてある。\r
-  # リクエストして例外が発生したところとらえるので、リクエストと検証を同時に行う\r
-  def announce_regist_author_for_json method, params = {}, action = :create\r
-    expect {__send__(method, action, params.merge(:format => :json))}.to raise_error\r
+  def set_list? item_name, list_name, var_name = :list\r
+    expect(assigns(var_name).item_name).to eq(item_name)\r
+    expect(assigns(var_name).list_name).to eq(list_name)\r
   end\r
   \r
-  def return_ok_at_get action, params = {}\r
-    # ステータスコード200 OKを返す\r
-    get action, params\r
-    expect(response).to be_success\r
+  def set_play_list?\r
+    expect(assigns(:items).size).to be >= 3\r
+    expect(assigns(:count)).to be >= 3\r
+    expect(assigns(:pager)).not_to be nil\r
   end\r
   \r
-  def post_save params, action = :create\r
-    post action, params\r
+  def let_filer? var_name = :filer\r
+    expect(assigns(var_name).class).to eq(Locmare::Filer)\r
   end\r
   \r
-  def put_save params, action = :update\r
-    put action, params\r
+  def set_bucket? item, var_name = :form\r
+    # @filerにファイラーを取得している\r
+    expect(assigns(var_name).item).to eq(item)\r
+    expect(assigns(var_name).mounted).to eq(true)\r
+    expect(assigns(var_name).submit).to eq(true)\r
   end\r
   \r
-  def destroy_save params, action = :destroy\r
-    delete action, params\r
+  # 作家活動していないユーザーがAPIから創作活動をしようとしたとき、例外を発生させる。\r
+  # 暫定的な仕様なので、良い方法があれば変えるかもしれない。メンテしやすいように切り分けてある。\r
+  # リクエストして例外が発生したところとらえるので、リクエストと検証を同時に行う\r
+  def announce_regist_author_for_json method, params = {}, action = :create\r
+    expect {__send__(method, action, params.merge(:format => :json))}.to raise_error(ActiveRecord::Forbidden)\r
   end\r
   \r
   # 保存処理を成功したことにしてスキップする\r
@@ -89,26 +101,6 @@ module ControllerMacros
     allow_any_instance_of(my_model_class).to receive(:destroy).and_return(false)\r
   end\r
   \r
-  def show_action_return_profiler item_id\r
-    # prof形式: ステータスコード200 OKを返す\r
-    get :show, :id => item_id, :format => :prof\r
-    expect(response).to be_success\r
-    # json形式: ステータスコード200 OKを返す\r
-    get action, params.merge(:format => :json)\r
-    expect(response).to be_success\r
-  end\r
-  \r
-  def announce_regist_owner_in_at_get action, params = {}\r
-    # html形式: ステータスコード302 Foundを返す\r
-    get action, params\r
-    expect(response.status).to eq(302)\r
-    expect(response).to redirect_to '/users/sign_in'\r
-    # json形式: ステータスコード401 Unauthorizedを返す\r
-    get action, params.merge(:format => :json)\r
-    expect(response.status).to eq(401)\r
-    expect(response.message).to match(/Unauthorized/)\r
-  end\r
-  \r
   def factory_contents factory_name, author, count = 5\r
     FactoryGirl.create_list(factory_name, count, author: author)\r
   end\r