OSDN Git Service

fix test
[pettanr/pettanr.git] / spec / support / binder_macros.rb
diff --git a/spec/support/binder_macros.rb b/spec/support/binder_macros.rb
new file mode 100644 (file)
index 0000000..afa1290
--- /dev/null
@@ -0,0 +1,127 @@
+module BinderMacros\r
+  def define_leaf_items?\r
+    # ステータス OKを返す\r
+    expect(response).to be_success\r
+  end\r
+  \r
+  def render_json?\r
+    # jsonデータを返す\r
+    expect {JSON.parse(response.body)}.not_to raise_error\r
+  end\r
+  \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 url\r
+  end\r
+  \r
+  # ゲストがapiからコンテンツにアクセスしようとした時の動作を確認する\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
+  def render_unprocessable?\r
+    expect(response.status).to eq(422)\r
+    expect(response.message).to match(/Unprocessable/)\r
+  end\r
+  \r
+  def render_complated?\r
+    expect(response.message).to match /./\r
+  end\r
+  \r
+  def set_model? model_class, var_name = :my_model_class\r
+    expect(assigns(var_name)).to be model_class\r
+  end\r
+  \r
+  def set_list_model? model_class, var_name = :my_list_model_class\r
+    expect(assigns(var_name)).to be model_class\r
+  end\r
+  \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 set_play_list? model_class\r
+    expect(assigns(:items).size).to be >= 3\r
+    expect(assigns(:count)).to be >= 3\r
+    expect(assigns(:pager)).not_to be nil\r
+    expect(assigns(:items).first.class).to be model_class\r
+  end\r
+  \r
+  def let_filer? var_name = :filer\r
+    expect(assigns(var_name).class).to eq(Locmare::Filer)\r
+  end\r
+  \r
+  def let_profiler? var_name = :profiler\r
+    expect(assigns(var_name).class).to eq(Locmare::Profiler)\r
+  end\r
+  \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 boost? names, var_name = :item\r
+    if names.empty?\r
+      assigns(var_name).boosters.empty?\r
+    else\r
+      names.each do |boost_name|\r
+        expect(assigns(var_name).boosters[boost_name]).to_not be nil\r
+      end\r
+    end\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(ActiveRecord::Forbidden)\r
+  end\r
+  \r
+  # 保存処理を成功したことにしてスキップする\r
+  def allow_save my_model_class\r
+    allow_any_instance_of(my_model_class).to receive(:save).and_return(true)\r
+  end\r
+  \r
+  # 保存処理を失敗したことにしてスキップする\r
+  def reject_save my_model_class\r
+    allow_any_instance_of(my_model_class).to receive(:save).and_return(false)\r
+  end\r
+  \r
+  # 削除処理を成功したことにしてスキップする\r
+  def allow_destroy my_model_class\r
+    allow_any_instance_of(my_model_class).to receive(:destroy).and_return(true)\r
+  end\r
+  \r
+  # 削除処理を失敗したことにしてスキップする\r
+  def reject_destroy my_model_class\r
+    allow_any_instance_of(my_model_class).to receive(:destroy).and_return(false)\r
+  end\r
+  \r
+  def factory_contents factory_name, author, count = 5\r
+    FactoryGirl.create_list(factory_name, count, author: author)\r
+  end\r
+  \r
+end\r
+\r