--- /dev/null
+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