OSDN Git Service

fix test
[pettanr/pettanr.git] / spec / support / controller_macros.rb
1 module ControllerMacros\r
2   def sign_in_url\r
3     '/users/sign_in'\r
4   end\r
5   \r
6   def return_ok?\r
7     # ステータス OKを返す\r
8     expect(response).to be_success\r
9   end\r
10   \r
11   def render_json?\r
12     # jsonデータを返す\r
13     expect {JSON.parse(response.body)}.not_to raise_error\r
14   end\r
15   \r
16   def render_filer?\r
17     # filerテンプレートを描画する\r
18     expect(response).to render_template("templates/r/filer/filer")\r
19   end\r
20   \r
21   def render_profiler?\r
22     # profilerテンプレートを描画する\r
23     expect(response).to render_template("templates/r/profiler/profiler")\r
24   end\r
25   \r
26   def render_form?\r
27     # formテンプレートを描画する\r
28     expect(response).to render_template("templates/r/form/form")\r
29   end\r
30   \r
31   def redirect? url\r
32     # html形式: ステータスコード302 Foundを返す\r
33     expect(response.status).to eq(302)\r
34     expect(response).to redirect_to url\r
35   end\r
36   \r
37   # ゲストがapiからコンテンツにアクセスしようとした時の動作を確認する\r
38   def render_unauthorized?\r
39     # json形式: ステータスコード401 Unauthorizedを返す\r
40     expect(response.status).to eq(401)\r
41     expect(response.message).to match(/Unauthorized/)\r
42   end\r
43   \r
44   # 処理不能を返す\r
45   def render_unprocessable?\r
46     expect(response.status).to eq(422)\r
47     expect(response.message).to match(/Unprocessable/)\r
48   end\r
49   \r
50   def set_model? model_class, var_name = :my_model_class\r
51     # @filerにファイラーを取得している\r
52     expect(assigns(var_name).class).to be model_class.class\r
53   end\r
54   \r
55   def set_list? item_name, list_name, var_name = :list\r
56     expect(assigns(var_name).item_name).to eq(item_name)\r
57     expect(assigns(var_name).list_name).to eq(list_name)\r
58   end\r
59   \r
60   def set_play_list?\r
61     expect(assigns(:items).size).to be >= 3\r
62     expect(assigns(:count)).to be >= 3\r
63     expect(assigns(:pager)).not_to be nil\r
64   end\r
65   \r
66   def let_filer? var_name = :filer\r
67     expect(assigns(var_name).class).to eq(Locmare::Filer)\r
68   end\r
69   \r
70   def set_bucket? item, var_name = :form\r
71     # @filerにファイラーを取得している\r
72     expect(assigns(var_name).item).to eq(item)\r
73     expect(assigns(var_name).mounted).to eq(true)\r
74     expect(assigns(var_name).submit).to eq(true)\r
75   end\r
76   \r
77   # 作家活動していないユーザーがAPIから創作活動をしようとしたとき、例外を発生させる。\r
78   # 暫定的な仕様なので、良い方法があれば変えるかもしれない。メンテしやすいように切り分けてある。\r
79   # リクエストして例外が発生したところとらえるので、リクエストと検証を同時に行う\r
80   def announce_regist_author_for_json method, params = {}, action = :create\r
81     expect {__send__(method, action, params.merge(:format => :json))}.to raise_error(ActiveRecord::Forbidden)\r
82   end\r
83   \r
84   # 保存処理を成功したことにしてスキップする\r
85   def allow_save my_model_class\r
86     allow_any_instance_of(my_model_class).to receive(:save).and_return(true)\r
87   end\r
88   \r
89   # 保存処理を失敗したことにしてスキップする\r
90   def reject_save my_model_class\r
91     allow_any_instance_of(my_model_class).to receive(:save).and_return(false)\r
92   end\r
93   \r
94   # 削除処理を成功したことにしてスキップする\r
95   def allow_destroy my_model_class\r
96     allow_any_instance_of(my_model_class).to receive(:destroy).and_return(true)\r
97   end\r
98   \r
99   # 削除処理を失敗したことにしてスキップする\r
100   def reject_destroy my_model_class\r
101     allow_any_instance_of(my_model_class).to receive(:destroy).and_return(false)\r
102   end\r
103   \r
104   def factory_contents factory_name, author, count = 5\r
105     FactoryGirl.create_list(factory_name, count, author: author)\r
106   end\r
107   \r
108 end\r
109 \r