1 # -*- encoding: utf-8 -*-
5 describe ProviderStatus do
7 @admin = FactoryGirl.create :admin
8 @sp = FactoryGirl.create :system_picture
9 @lg = FactoryGirl.create :license_group
10 @license = FactoryGirl.create :license, :license_group_id => @lg.id, :system_picture_id => @sp.id
11 @user = FactoryGirl.create :user_yas
12 @author = @user.author #ユーザ作成時に連動して作成される
16 @ps = FactoryGirl.build :provider_status
19 context 'オーソドックスなデータのとき' do
21 @ps.receive_hour1 = -99999
22 @ps.receive_hour2 = -99999
26 @ps.receive_hour1 = 99999
27 @ps.receive_hour2 = 99999
32 context 'receive_hour1を検証するとき' do
34 @ps.receive_hour1 = 'a'
35 @ps.should_not be_valid
38 context 'receive_hour2を検証するとき' do
40 @ps.receive_hour2 = 'a'
41 @ps.should_not be_valid
46 describe 'デフォルト値補充に於いて' do
48 @ps = FactoryGirl.build :provider_status
53 describe '上書き補充に於いて' do
55 @ps = FactoryGirl.build :provider_status
60 describe '所持判定に於いて' do
62 @ps = FactoryGirl.create :provider_status
65 @ps.own?(@admin).should == true
68 @ps.own?(@author).should == false
70 it 'パラメータが管理者でないならno' do
71 @ps.own?(nil).should == false
75 describe '閲覧許可に於いて' do
77 @ps = FactoryGirl.create :provider_status
80 r = @ps.visible?(@admin)
84 r = @ps.visible?(@author)
87 it 'それ以外のとき不許可を返す。' do
96 it '借り受けしていないのとき0を返す' do
97 @ps = FactoryGirl.create :provider_status, :token => nil
101 it '借り受けしているのとき1を返す' do
102 @ps = FactoryGirl.create :provider_status, :token => 'a'
108 describe '一覧取得に於いて' do
110 @ps = FactoryGirl.create :provider_status
111 @pd = FactoryGirl.create :provider, :provider_status_id => @ps.id, :name => "6"
113 context 'page補正について' do
114 it '文字列から数値に変換される' do
115 ProviderStatus.page('8').should eq 8
118 ProviderStatus.page().should eq 1
121 ProviderStatus.page('0').should eq 1
124 context 'page_size補正について' do
125 it '文字列から数値に変換される' do
126 ProviderStatus.page_size('7').should eq 7
128 it 'nilの場合はProviderStatus.default_page_sizeになる' do
129 ProviderStatus.page_size().should eq ProviderStatus.default_page_size
131 it '0以下の場合はProviderStatus.default_page_sizeになる' do
132 ProviderStatus.page_size('0').should eq ProviderStatus.default_page_size
134 it 'ProviderStatus.max_page_sizeを超えた場合はProviderStatus.max_page_sizeになる' do
135 ProviderStatus.page_size('1000').should eq ProviderStatus.max_page_size
138 context 'つつがなく終わるとき' do
139 it '一覧取得オプションを利用している' do
140 ProviderStatus.stub(:list_opt).with(any_args).and_return({:include => {:provider => {}} })
141 ProviderStatus.should_receive(:list_opt).with(any_args).exactly(1)
142 r = ProviderStatus.list
146 r = ProviderStatus.list
150 v = FactoryGirl.create :provider_status
151 vd = FactoryGirl.create :provider, :provider_status_id => v.id, :name => "0"
152 r = ProviderStatus.list
155 context 'DBに5件あって1ページの件数を2件に変えたとして' do
157 @ps2 = FactoryGirl.create :provider_status
158 @pd2 = FactoryGirl.create :provider, :provider_status_id => @ps2.id, :name => "5"
159 @ps3 = FactoryGirl.create :provider_status
160 @pd3 = FactoryGirl.create :provider, :provider_status_id => @ps3.id, :name => "4"
161 @ps4 = FactoryGirl.create :provider_status
162 @pd4 = FactoryGirl.create :provider, :provider_status_id => @ps4.id, :name => "3"
163 @ps5 = FactoryGirl.create :provider_status
164 @pd5 = FactoryGirl.create :provider, :provider_status_id => @ps5.id, :name => "2"
165 ProviderStatus.stub(:default_page_size).and_return(2)
168 r = ProviderStatus.list
169 r.should have(2).items
171 it 'page=1なら末尾2件を返す' do
173 r = ProviderStatus.list(1)
174 r.should eq [@ps5, @ps4]
176 it 'page=2なら中間2件を返す' do
177 r = ProviderStatus.list(2)
178 r.should eq [@ps3, @ps2]
180 it 'page=3なら先頭1件を返す' do
181 r = ProviderStatus.list(3)
185 context 'DBに5件あって1ページの件数を2件に変えたとして' do
187 @ps2 = FactoryGirl.create :provider_status
188 @pd2 = FactoryGirl.create :provider, :provider_status_id => @ps2.id, :name => "5"
189 @ps3 = FactoryGirl.create :provider_status
190 @pd3 = FactoryGirl.create :provider, :provider_status_id => @ps3.id, :name => "4"
191 @ps4 = FactoryGirl.create :provider_status
192 @pd4 = FactoryGirl.create :provider, :provider_status_id => @ps4.id, :name => "3"
193 @ps5 = FactoryGirl.create :provider_status
194 @pd5 = FactoryGirl.create :provider, :provider_status_id => @ps5.id, :name => "2"
195 ProviderStatus.stub(:default_page_size).and_return(2)
197 it '件数0は全件(5件)を返す' do
198 r = ProviderStatus.list 5, 0
199 r.should have(5).items
203 describe '待機中一覧取得に於いて' do
205 @ps = FactoryGirl.create :provider_status
206 @pd = FactoryGirl.create :provider, :provider_status_id => @ps.id, :name => "6"
208 context 'つつがなく終わるとき' do
209 it '一覧取得オプションを利用している' do
210 ProviderStatus.stub(:list_opt).with(any_args).and_return({:include => {:provider => {}} })
211 ProviderStatus.should_receive(:list_opt).with(any_args).exactly(1)
212 r = ProviderStatus.available_list
216 r = ProviderStatus.available_list
220 @ps2 = FactoryGirl.create :provider_status
221 v = FactoryGirl.create :provider, :name => "0", :provider_status_id => @ps2.id
222 r = ProviderStatus.available_list
223 r.should eq [@ps2, @ps]
225 it '借受状況のトークンが設定されていない借受状況に限る' do
226 @ps2 = FactoryGirl.create :provider_status, :token => 'aaaaa'
227 v = FactoryGirl.create :provider, :name => "0", :provider_status_id => @ps2.id
228 r = ProviderStatus.available_list
231 context 'DBに5件あって1ページの件数を2件に変えたとして' do
233 @ps2 = FactoryGirl.create :provider_status
234 @pd2 = FactoryGirl.create :provider, :provider_status_id => @ps2.id, :name => "5"
235 @ps3 = FactoryGirl.create :provider_status
236 @pd3 = FactoryGirl.create :provider, :provider_status_id => @ps3.id, :name => "4"
237 @ps4 = FactoryGirl.create :provider_status
238 @pd4 = FactoryGirl.create :provider, :provider_status_id => @ps4.id, :name => "3"
239 @ps5 = FactoryGirl.create :provider_status
240 @pd5 = FactoryGirl.create :provider, :provider_status_id => @ps5.id, :name => "2"
241 ProviderStatus.stub(:default_page_size).and_return(2)
244 r = ProviderStatus.available_list
245 r.should have(2).items
247 it 'page=1なら末尾2件を返す' do
249 r = ProviderStatus.available_list(1)
250 r.should eq [@ps5, @ps4]
252 it 'page=2なら中間2件を返す' do
253 r = ProviderStatus.available_list(2)
254 r.should eq [@ps3, @ps2]
256 it 'page=3なら先頭1件を返す' do
257 r = ProviderStatus.available_list(3)
261 context 'DBに5件あって1ページの件数を2件に変えたとして' do
263 @ps2 = FactoryGirl.create :provider_status
264 @pd2 = FactoryGirl.create :provider, :provider_status_id => @ps2.id, :name => "5"
265 @ps3 = FactoryGirl.create :provider_status
266 @pd3 = FactoryGirl.create :provider, :provider_status_id => @ps3.id, :name => "4"
267 @ps4 = FactoryGirl.create :provider_status
268 @pd4 = FactoryGirl.create :provider, :provider_status_id => @ps4.id, :name => "3"
269 @ps5 = FactoryGirl.create :provider_status
270 @pd5 = FactoryGirl.create :provider, :provider_status_id => @ps5.id, :name => "2"
271 ProviderStatus.stub(:default_page_size).and_return(2)
273 it '件数0は全件(5件)を返す' do
274 r = ProviderStatus.available_list 5, 0
275 r.should have(5).items
279 describe '一覧取得オプションに於いて' do
280 it 'includeキーを含んでいる' do
281 r = ProviderStatus.list_opt
282 r.has_key?(:include).should be_true
285 r = ProviderStatus.list_opt[:include]
286 r.should have(1).items
289 r = ProviderStatus.list_opt[:include]
290 r.has_key?(:provider).should be_true
293 describe 'json一覧出力オプションに於いて' do
295 @ps = FactoryGirl.create :provider_status
296 @pd = FactoryGirl.create :provider, :provider_status_id => @ps.id
299 r = ProviderStatus.list.to_json ProviderStatus.list_json_opt
302 i.has_key?('provider').should be_true
306 describe '単体取得に於いて' do
308 @ps = FactoryGirl.create :provider_status
309 @pd = FactoryGirl.create :provider, :provider_status_id => @ps.id
311 context 'つつがなく終わるとき' do
312 it '単体取得オプションを利用している' do
313 ProviderStatus.stub(:show_opt).with(any_args).and_return({})
314 ProviderStatus.should_receive(:show_opt).with(any_args).exactly(1)
315 r = ProviderStatus.show @ps.id, @admin
317 it '閲覧許可を問い合わせている' do
318 ProviderStatus.any_instance.stub(:visible?).with(any_args).and_return(true)
319 ProviderStatus.any_instance.should_receive(:visible?).with(any_args).exactly(1)
320 r = ProviderStatus.show @ps.id, @admin
324 r = ProviderStatus.show @ps.id, @admin
327 context '閲覧許可が出なかったとき' do
328 it '403Forbidden例外を返す' do
329 ProviderStatus.any_instance.stub(:visible?).and_return(false)
331 ProviderStatus.show @ps.id, @admin
332 }.should raise_error(ActiveRecord::Forbidden)
335 context '存在しない借受状況を開こうとしたとき' do
336 it '404RecordNotFound例外を返す' do
338 ProviderStatus.show 110, @admin
339 }.should raise_error(ActiveRecord::RecordNotFound)
344 describe '編集取得に於いて' do
346 @ps = FactoryGirl.create :provider_status
347 @pd = FactoryGirl.create :provider, :provider_status_id => @ps.id
349 context 'つつがなく終わるとき' do
350 it '単体取得オプションを利用している' do
351 ProviderStatus.stub(:show_opt).with(any_args).and_return({})
352 ProviderStatus.should_receive(:show_opt).with(any_args).exactly(1)
353 r = ProviderStatus.edit @ps.id, @admin
355 it '所持判定を問い合わせている' do
356 ProviderStatus.any_instance.stub(:own?).with(any_args).and_return(true)
357 ProviderStatus.any_instance.should_receive(:own?).with(any_args).exactly(1)
358 r = ProviderStatus.edit @ps.id, @admin
362 ProviderStatus.any_instance.stub(:own?).and_return(true)
363 r = ProviderStatus.edit @ps.id, @admin
366 context '権限がなかったとき' do
367 it '403Forbidden例外を返す' do
368 ProviderStatus.any_instance.stub(:own?).and_return(false)
370 ProviderStatus.edit @ps.id, @admin
371 }.should raise_error(ActiveRecord::Forbidden)
374 context '存在しない借受状況を開こうとしたとき' do
375 it '404RecordNotFound例外を返す' do
377 ProviderStatus.edit 110, @admin
378 }.should raise_error(ActiveRecord::RecordNotFound)
382 describe '単体取得オプションに於いて' do
383 it 'includeキーを含んでいる' do
384 r = ProviderStatus.show_opt
385 r.has_key?(:include).should be_true
388 r = ProviderStatus.show_opt[:include]
389 r.should have(1).items
392 r = ProviderStatus.show_opt[:include]
393 r.has_key?(:provider).should be_true
396 describe 'json単体出力オプションに於いて' do
398 @ps = FactoryGirl.create :provider_status
399 @pd = FactoryGirl.create :provider, :provider_status_id => @ps.id
402 r = ProviderStatus.show(@ps.id, @admin).to_json ProviderStatus.show_json_opt
405 i.has_key?('provider').should be_true