OSDN Git Service

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