1 module ControllerMacros
\r
2 def list_should_return_filer_or_json action, params = {}
\r
7 expect(response).to be_success
\r
8 expect(response).to render_template("templates/r/filer/filer")
\r
12 get action, params.merge(:format => :json)
\r
13 expect(response).to be_success
\r
14 expect {JSON.parse(response.body)}.not_to raise_error
\r
17 # ゲストが画面からコンテンツにアクセスしようとした時の動作を確認する
\r
18 def announce_sign_in_for_html
\r
19 # html形式: ステータスコード302 Foundを返す
\r
20 expect(response.status).to eq(302)
\r
21 expect(response).to redirect_to '/users/sign_in'
\r
24 # ゲストがapiからコンテンツにアクセスしようとした時の動作を確認する
\r
25 def announce_sign_in_for_json
\r
26 # json形式: ステータスコード401 Unauthorizedを返す
\r
27 expect(response.status).to eq(401)
\r
28 expect(response.message).to match(/Unauthorized/)
\r
31 # ゲストがコンテンツにアクセスしようとしたとき、サインインページに遷移する。
\r
32 # ほとんどすべての機能から利用されるので、 htmlとjsonをまとめて処理している。
\r
33 # 作成と更新はメソッドが違うので、個別にチェックする。
\r
34 def announce_sign_in_at_get action, params = {}
\r
36 announce_sign_in_for_html
\r
37 get action, params.merge(:format => :json)
\r
38 announce_sign_in_for_json
\r
41 # 作家活動をしていないユーザーが画面から創作活動をしようとしたとき、作家登録ページに遷移する
\r
42 def announce_regist_author_for_html
\r
43 expect(response.status).to eq(302)
\r
44 expect(response).to redirect_to new_author_path
\r
47 # 作家活動していないユーザーがAPIから創作活動をしようとしたとき、例外を発生させる。
\r
48 # 暫定的な仕様なので、良い方法があれば変えるかもしれない。メンテしやすいように切り分けてある。
\r
49 # リクエストして例外が発生したところとらえるので、リクエストと検証を同時に行う
\r
50 def announce_regist_author_for_json method, params = {}, action = :create
\r
51 expect {__send__(method, action, params.merge(:format => :json))}.to raise_error
\r
54 def return_ok_at_get action, params = {}
\r
57 expect(response).to be_success
\r
60 def post_save params, action = :create
\r
64 def put_save params, action = :update
\r
68 # 保存処理を成功したことにしてスキップする
\r
69 def allow_save my_model_class
\r
70 allow_any_instance_of(my_model_class).to receive(:save).and_return(true)
\r
73 # 保存処理を失敗したことにしてスキップする
\r
74 def reject_save my_model_class
\r
75 allow_any_instance_of(my_model_class).to receive(:save).and_return(false)
\r
78 def show_action_return_profiler item_id
\r
79 # prof形式: ステータスコード200 OKを返す
\r
80 get :show, :id => item_id, :format => :prof
\r
81 expect(response).to be_success
\r
82 # json形式: ステータスコード200 OKを返す
\r
83 get action, params.merge(:format => :json)
\r
84 expect(response).to be_success
\r
87 def announce_regist_owner_in_at_get action, params = {}
\r
88 # html形式: ステータスコード302 Foundを返す
\r
90 expect(response.status).to eq(302)
\r
91 expect(response).to redirect_to '/users/sign_in'
\r
92 # json形式: ステータスコード401 Unauthorizedを返す
\r
93 get action, params.merge(:format => :json)
\r
94 expect(response.status).to eq(401)
\r
95 expect(response.message).to match(/Unauthorized/)
\r
98 def factory_contents factory_name, author, count = 5
\r
99 FactoryGirl.create_list(factory_name, count, author: author)
\r