X-Git-Url: http://git.osdn.net/view?p=pettanr%2Fpettanr.git;a=blobdiff_plain;f=spec%2Fmodels%2Fresource_picture_spec.rb;h=cccf4c47bc4d47061602ed6d70ae6489601bc5c1;hp=49880950d291e3bbac97ea129e7dbb25f9708c1d;hb=2bcff4ea2e955de6c21e19239313f00ac323f410;hpb=d861413e02b5fba80f6e2b104ab98ef0928c770a diff --git a/spec/models/resource_picture_spec.rb b/spec/models/resource_picture_spec.rb index 49880950..cccf4c47 100644 --- a/spec/models/resource_picture_spec.rb +++ b/spec/models/resource_picture_spec.rb @@ -472,73 +472,20 @@ describe ResourcePicture do r.should eq [@rp] end end - context 'DBに5件あって1ページの件数を2件に変えたとして' do - before do - nop2 = FactoryGirl.create :original_picture, :artist_id => @artist.id - @nrp2 = FactoryGirl.create :resource_picture, :artist_id => @artist.id, :license_id => @license.id, :original_picture_id => nop2.id, :picture_id => @p.id, :updated_at => Time.now + 100 - nop3 = FactoryGirl.create :original_picture, :artist_id => @artist.id - @nrp3 = FactoryGirl.create :resource_picture, :artist_id => @artist.id, :license_id => @license.id, :original_picture_id => nop3.id, :picture_id => @p.id, :updated_at => Time.now + 200 - nop4 = FactoryGirl.create :original_picture, :artist_id => @artist.id - @nrp4 = FactoryGirl.create :resource_picture, :artist_id => @artist.id, :license_id => @license.id, :original_picture_id => nop4.id, :picture_id => @p.id, :updated_at => Time.now + 300 - nop5 = FactoryGirl.create :original_picture, :artist_id => @artist.id - @nrp5 = FactoryGirl.create :resource_picture, :artist_id => @artist.id, :license_id => @license.id, :original_picture_id => nop5.id, :picture_id => @p.id, :updated_at => Time.now + 400 - ResourcePicture.stub(:default_page_size).and_return(2) - end - it '件数0は全件(5件)を返す' do - r = ResourcePicture.list 5, 0 - r.should have(5).items - end - end end - describe '一覧取得オプションに於いて' do - it 'includeキーを含んでいる' do - r = ResourcePicture.list_opt - r.has_key?(:include).should be_true - end - it '3つの項目を含んでいる' do - r = ResourcePicture.list_opt[:include] - r.should have(3).items - end - it 'ライセンスを含んでいる' do - r = ResourcePicture.list_opt[:include] - r.has_key?(:license).should be_true - end - it '絵師を含んでいる' do - r = ResourcePicture.list_opt[:include] - r.has_key?(:artist).should be_true - end - it '実素材を含んでいる' do - r = ResourcePicture.list_opt[:include] - r.has_key?(:picture).should be_true - end - end - describe 'json一覧出力オプションに於いて' do + + describe '一覧ページ制御に於いて' do before do - @op = FactoryGirl.create :original_picture, :artist_id => @artist.id - @p = FactoryGirl.create :picture, :original_picture_id => @op.id, :license_id => @license.id, :artist_id => @artist.id - @rp = FactoryGirl.create :resource_picture, :artist_id => @artist.id, :license_id => @license.id, :original_picture_id => @op.id, :picture_id => @p.id - @sbt = FactoryGirl.create :speech_balloon_template - @comic = FactoryGirl.create :comic, :author_id => @author.id, :visible => 1 - @panel = FactoryGirl.create :panel, :author_id => @author.id, :publish => 1 - @story = FactoryGirl.create :story, :author_id => @author.id, :comic_id => @comic.id, :panel_id => @panel.id + ResourcePicture.stub(:count).with(any_args).and_return(100) end - it 'ライセンスを含んでいる' do - r = ResourcePicture.list.to_json ResourcePicture.list_json_opt - j = JSON.parse r - i = j.first - i.has_key?('license').should be_true + it 'ページ制御を返す' do + r = ResourcePicture.list_paginate + r.is_a?(Kaminari::PaginatableArray).should be_true end - it '絵師を含んでいる' do - r = ResourcePicture.list.to_json ResourcePicture.list_json_opt - j = JSON.parse r - i = j.first - i.has_key?('artist').should be_true - end - it '実素材を含んでいる' do - r = ResourcePicture.list.to_json ResourcePicture.list_json_opt - j = JSON.parse r - i = j.first - i.has_key?('picture').should be_true + it 'ページ件数10のとき、3ページ目のオフセットは20から始まる' do + r = ResourcePicture.list_paginate 3, 10 + r.limit_value.should eq 10 + r.offset_value.should eq 20 end end @@ -600,22 +547,150 @@ describe ResourcePicture do c.should eq [@rp] end end - context 'DBに5件あって1ページの件数を0件に変えたとして' do + end + + describe '自分の素材一覧ページ制御に於いて' do + before do + ResourcePicture.stub(:count).with(any_args).and_return(100) + end + it 'ページ制御を返す' do + r = ResourcePicture.mylist_paginate @artist + r.is_a?(Kaminari::PaginatableArray).should be_true + end + it '自分の素材一覧の取得条件を利用している' do + ResourcePicture.stub(:mylist_where).with(any_args).and_return('') + ResourcePicture.should_receive(:mylist_where).with(any_args).exactly(1) + r = ResourcePicture.mylist_paginate @artist + end + it 'ページ件数10のとき、3ページ目のオフセットは20から始まる' do + r = ResourcePicture.mylist_paginate @artist, 3, 10 + r.limit_value.should eq 10 + r.offset_value.should eq 20 + end + end + + describe '他作家の素材一覧取得に於いて' do + before do + @op = FactoryGirl.create :original_picture, :artist_id => @artist.id + @p = FactoryGirl.create :picture, :original_picture_id => @op.id, :license_id => @license.id, :artist_id => @artist.id + @rp = FactoryGirl.create :resource_picture, :artist_id => @artist.id, :license_id => @license.id, :original_picture_id => @op.id, :picture_id => @p.id + @other_op = FactoryGirl.create :original_picture, :artist_id => @other_artist.id + @other_p = FactoryGirl.create :picture, :original_picture_id => @other_op.id, :license_id => @license.id, :artist_id => @other_artist.id + @other_rp = FactoryGirl.create :resource_picture, :artist_id => @other_artist.id, :license_id => @license.id, :original_picture_id => @other_op.id, :picture_id => @other_p.id + end + context 'つつがなく終わるとき' do + it '一覧取得オプションを利用している' do + ResourcePicture.stub(:list_opt).with(any_args).and_return({}) + ResourcePicture.should_receive(:list_opt).with(any_args).exactly(1) + r = ResourcePicture.himlist @other_artist + end + end + it '指定した作家のリストを返す' do + r = ResourcePicture.himlist @other_artist + r.should eq [@other_rp] + end + it '時系列で並んでいる' do + nop = FactoryGirl.create :original_picture, :artist_id => @other_artist.id + nrp = FactoryGirl.create :resource_picture, :artist_id => @other_artist.id, :license_id => @license.id, :original_picture_id => nop.id, :picture_id => @other_p.id, :updated_at => Time.now + 100 + r = ResourcePicture.himlist @other_artist + r.should eq [nrp, @other_rp] + end + context 'DBに5件あって1ページの件数を2件に変えたとして' do before do - @op2 = FactoryGirl.create :original_picture, :artist_id => @artist.id - @rp2 = FactoryGirl.create :resource_picture, :artist_id => @artist.id, :license_id => @license.id, :original_picture_id => @op2.id, :picture_id => @p.id, :updated_at => Time.now + 100 - @op3 = FactoryGirl.create :original_picture, :artist_id => @artist.id - @rp3 = FactoryGirl.create :resource_picture, :artist_id => @artist.id, :license_id => @license.id, :original_picture_id => @op3.id, :picture_id => @p.id, :updated_at => Time.now + 200 - @op4 = FactoryGirl.create :original_picture, :artist_id => @artist.id - @rp4 = FactoryGirl.create :resource_picture, :artist_id => @artist.id, :license_id => @license.id, :original_picture_id => @op4.id, :picture_id => @p.id, :updated_at => Time.now + 300 - @op5 = FactoryGirl.create :original_picture, :artist_id => @artist.id - @rp5 = FactoryGirl.create :resource_picture, :artist_id => @artist.id, :license_id => @license.id, :original_picture_id => @op5.id, :picture_id => @p.id, :updated_at => Time.now + 400 - Author.stub(:default_resource_picture_page_size).and_return(2) + @op2 = FactoryGirl.create :original_picture, :artist_id => @other_artist.id + @rp2 = FactoryGirl.create :resource_picture, :artist_id => @other_artist.id, :license_id => @license.id, :original_picture_id => @op2.id, :picture_id => @p.id, :updated_at => Time.now + 100 + @op3 = FactoryGirl.create :original_picture, :artist_id => @other_artist.id + @rp3 = FactoryGirl.create :resource_picture, :artist_id => @other_artist.id, :license_id => @license.id, :original_picture_id => @op3.id, :picture_id => @p.id, :updated_at => Time.now + 200 + @op4 = FactoryGirl.create :original_picture, :artist_id => @other_artist.id + @rp4 = FactoryGirl.create :resource_picture, :artist_id => @other_artist.id, :license_id => @license.id, :original_picture_id => @op4.id, :picture_id => @p.id, :updated_at => Time.now + 300 + @op5 = FactoryGirl.create :original_picture, :artist_id => @other_artist.id + @rp5 = FactoryGirl.create :resource_picture, :artist_id => @other_artist.id, :license_id => @license.id, :original_picture_id => @op5.id, :picture_id => @p.id, :updated_at => Time.now + 400 + end + it '通常は2件を返す' do + r = ResourcePicture.himlist @other_artist, 1, 2 + r.should have(2).items end - it '通常は全件(5件)を返す' do - r = ResourcePicture.mylist @artist, 5, 0 - r.should have(5).items + it 'page=1なら末尾2件を返す' do + #時系列で並んでいる + r = ResourcePicture.himlist(@other_artist, 1, 2) + r.should eq [@rp5, @rp4] + end + it 'page=2なら中間2件を返す' do + r = ResourcePicture.himlist(@other_artist, 2, 2) + r.should eq [@rp3, @rp2] end + it 'page=3なら先頭1件を返す' do + r = ResourcePicture.himlist(@other_artist, 3, 2) + r.should eq [@other_rp] + end + end + end + + describe '他作家の素材一覧ページ制御に於いて' do + before do + ResourcePicture.stub(:count).with(any_args).and_return(100) + end + it 'ページ制御を返す' do + r = ResourcePicture.himlist_paginate @artist + r.is_a?(Kaminari::PaginatableArray).should be_true + end + it '自分の素材一覧の取得条件を利用している' do + ResourcePicture.stub(:himlist_where).with(any_args).and_return('') + ResourcePicture.should_receive(:himlist_where).with(any_args).exactly(1) + r = ResourcePicture.himlist_paginate @artist + end + it 'ページ件数10のとき、3ページ目のオフセットは20から始まる' do + r = ResourcePicture.himlist_paginate @artist, 3, 10 + r.limit_value.should eq 10 + r.offset_value.should eq 20 + end + end + + describe '一覧取得オプションに於いて' do + it '3つの項目を含んでいる' do + r = ResourcePicture.list_opt + r.should have(3).items + end + it 'ライセンスを含んでいる' do + r = ResourcePicture.list_opt + r.has_key?(:license).should be_true + end + it '絵師を含んでいる' do + r = ResourcePicture.list_opt + r.has_key?(:artist).should be_true + end + it '実素材を含んでいる' do + r = ResourcePicture.list_opt + r.has_key?(:picture).should be_true + end + end + describe 'json一覧出力オプションに於いて' do + before do + @op = FactoryGirl.create :original_picture, :artist_id => @artist.id + @p = FactoryGirl.create :picture, :original_picture_id => @op.id, :license_id => @license.id, :artist_id => @artist.id + @rp = FactoryGirl.create :resource_picture, :artist_id => @artist.id, :license_id => @license.id, :original_picture_id => @op.id, :picture_id => @p.id + @sbt = FactoryGirl.create :speech_balloon_template + @comic = FactoryGirl.create :comic, :author_id => @author.id, :visible => 1 + @panel = FactoryGirl.create :panel, :author_id => @author.id, :publish => 1 + @story = FactoryGirl.create :story, :author_id => @author.id, :comic_id => @comic.id, :panel_id => @panel.id + end + it 'ライセンスを含んでいる' do + r = ResourcePicture.list.to_json ResourcePicture.list_json_opt + j = JSON.parse r + i = j.first + i.has_key?('license').should be_true + end + it '絵師を含んでいる' do + r = ResourcePicture.list.to_json ResourcePicture.list_json_opt + j = JSON.parse r + i = j.first + i.has_key?('artist').should be_true + end + it '実素材を含んでいる' do + r = ResourcePicture.list.to_json ResourcePicture.list_json_opt + j = JSON.parse r + i = j.first + i.has_key?('picture').should be_true end end