1 # -*- encoding: utf-8 -*-
5 describe PanelColorsController do
7 @admin = FactoryGirl.create :admin
8 @user = FactoryGirl.create( :user_yas)
9 @sp = FactoryGirl.create :system_picture
10 @lg = FactoryGirl.create :license_group, :name => 'peta'
11 @license = FactoryGirl.create :license, :license_group_id => @lg.id, :system_picture_id => @sp.id
12 @author = FactoryGirl.create :author, :user_id => @user.id
13 @artist = FactoryGirl.create :artist_yas, :author_id => @author.id
14 @panel = FactoryGirl.create :panel, :author_id => @author.id
17 if MagicNumber['run_mode'] == 1
18 describe '一覧表示に於いて' do
21 @pc = FactoryGirl.create :panel_color, :panel_id => @panel.id
22 PanelColor.stub(:list).and_return([@pc, @pc, @pc])
24 context 'パラメータpageについて' do
26 get :index, :page => 5
27 assigns(:page).should eq 5
29 it '省略されると@pageに1値が入る' do
31 assigns(:page).should eq 1
33 it '与えられたpage_sizeがセットされている' do
34 get :index, :page_size => 15
35 assigns(:page_size).should eq 15
37 it '省略されると@page_sizeにデフォルト値が入る' do
39 assigns(:page_size).should eq PanelColor.default_page_size
41 it '最大を超えると@page_sizeにデフォルト最大値が入る' do
42 get :index, :page_size => 1500
43 assigns(:page_size).should eq PanelColor.max_page_size
45 it '不正な値が入ると@page_sizeにデフォルト最大値が入る' do
46 get :index, :page_size => 0
47 assigns(:page_size).should eq PanelColor.default_page_size
50 context 'つつがなく終わるとき' do
51 it 'ステータスコード200 OKを返す' do
53 response.should be_success
55 it '指定色地モデルに一覧を問い合わせている' do
56 PanelColor.should_receive(:list).exactly(1)
59 it '@panel_colorsにリストを取得している' do
61 assigns(:panel_colors).should have_at_least(3).items
64 it 'indexテンプレートを描画する' do
66 response.should render_template("index")
71 get :index, :format => :json
72 lambda{JSON.parse(response.body)}.should_not raise_error(JSON::ParserError)
74 it '指定色地モデルにjson一覧出力オプションを問い合わせている' do
75 PanelColor.should_receive(:list_json_opt).exactly(1)
76 get :index, :format => :json
78 it 'データがリスト構造になっている' do
79 get :index, :format => :json
80 json = JSON.parse response.body
81 json.should have_at_least(3).items
83 it 'リストの先頭くらいは指定色地っぽいものであって欲しい' do
84 get :index, :format => :json
85 json = JSON.parse response.body
86 json.first.has_key?("panel_id").should be_true
87 json.first.has_key?("code").should be_true
88 json.first.has_key?("z").should be_true
92 context '作家権限がないとき' do
97 it 'ステータスコード302 Foundを返す' do
99 response.status.should eq 302
101 it 'サインインページへ遷移する' do
103 response.should redirect_to '/users/sign_in'
107 it 'ステータスコード401 Unauthorizedを返す' do
108 get :index, :format => :json
109 response.status.should eq 401
111 it '応答メッセージにUnauthorizedを返す' do
112 get :index, :format => :json
113 response.message.should match(/Unauthorized/)
117 context '作家権限はないが管理者権限があるとき' do
122 it 'ステータスコード200 OKを返す' do
124 response.should be_success
129 describe '単体表示に於いて' do
132 @pc = FactoryGirl.create :panel_color, :panel_id => @panel.id
133 PanelColor.stub(:show).and_return(@pc)
135 context 'つつがなく終わるとき' do
136 it 'ステータスコード200 OKを返す' do
137 get :show, :id => @pc.id
138 response.should be_success
140 it '指定色地モデルに単体取得を問い合わせている' do
141 PanelColor.should_receive(:show).exactly(1)
144 it '@panel_colorにアレを取得している' do
145 get :show, :id => @pc.id
146 assigns(:panel_color).should eq(@pc)
149 it 'showテンプレートを描画する' do
150 get :show, :id => @pc.id
151 response.should render_template("show")
156 get :show, :id => @pc.id, :format => :json
157 lambda{JSON.parse(response.body)}.should_not raise_error(JSON::ParserError)
159 it '指定色地モデルにjson単体出力オプションを問い合わせている' do
160 PanelColor.should_receive(:show_json_opt).exactly(1)
161 get :show, :id => @pc.id, :format => :json
164 get :show, :id => @pc.id, :format => :json
165 json = JSON.parse response.body
166 json["panel_id"].should_not be_nil
167 json["z"].should_not be_nil
168 json["code"].should_not be_nil
172 context '作家権限がないとき' do
177 it 'ステータスコード302 Foundを返す' do
178 get :show, :id => @pc.id
179 response.status.should eq 302
181 it 'サインインページへ遷移する' do
182 get :show, :id => @pc.id
183 response.body.should redirect_to '/users/sign_in'
187 it 'ステータスコード401 Unauthorizedを返す' do
188 get :show, :id => @pc.id, :format => :json
189 response.status.should eq 401
191 it '応答メッセージにUnauthorizedを返す' do
192 get :show, :id => @pc.id, :format => :json
193 response.message.should match(/Unauthorized/)
197 context '作家権限はないが管理者権限があるとき' do
202 it 'ステータスコード200 OKを返す' do
203 get :show, :id => @pc.id
204 response.should be_success
210 describe '一覧表示に於いて' do
213 @pc = FactoryGirl.create :panel_color, :panel_id => @panel.id
214 PanelColor.stub(:list).and_return([@pc, @pc, @pc])
216 context 'つつがなく終わるとき' do
217 it 'ステータスコード200 OKを返す' do
219 response.should be_success
222 it 'indexテンプレートを描画する' do
224 response.should render_template("index")
229 get :index, :format => :json
230 lambda{JSON.parse(response.body)}.should_not raise_error(JSON::ParserError)
234 context '作家権限がないとき' do
238 it 'ステータスコード200 OKを返す' do
240 response.should be_success
243 it 'indexテンプレートを描画する' do
245 response.should render_template("index")
250 get :index, :format => :json
251 lambda{JSON.parse(response.body)}.should_not raise_error(JSON::ParserError)
257 describe '単体表示に於いて' do
260 @pc = FactoryGirl.create :panel_color, :panel_id => @panel.id
261 PanelColor.stub(:show).and_return(@pc)
263 context 'つつがなく終わるとき' do
264 it 'ステータスコード200 OKを返す' do
265 get :show, :id => @pc.id
266 response.should be_success
269 it 'showテンプレートを描画する' do
270 get :show, :id => @pc.id
271 response.should render_template("show")
276 get :show, :id => @pc.id, :format => :json
277 lambda{JSON.parse(response.body)}.should_not raise_error(JSON::ParserError)
281 context '作家権限がないとき' do
285 it 'ステータスコード200 OKを返す' do
286 get :show, :id => @pc.id
287 response.should be_success
290 it 'showテンプレートを描画する' do
291 get :show, :id => @pc.id
292 response.should render_template("show")
297 get :show, :id => @pc.id, :format => :json
298 lambda{JSON.parse(response.body)}.should_not raise_error(JSON::ParserError)