+ \r
+ describe '自分の素材一覧取得に於いて' do\r
+ before do\r
+ @op = FactoryGirl.create :original_picture, :artist_id => @artist.id\r
+ @p = FactoryGirl.create :picture, :original_picture_id => @op.id, :license_id => @license.id, :artist_id => @artist.id\r
+ @rp = FactoryGirl.create :resource_picture, :artist_id => @artist.id, :license_id => @license.id, :original_picture_id => @op.id, :picture_id => @p.id\r
+ end\r
+ context 'つつがなく終わるとき' do\r
+ it '一覧取得オプションを利用している' do\r
+ ResourcePicture.stub(:list_opt).with(any_args).and_return({})\r
+ ResourcePicture.should_receive(:list_opt).with(any_args).exactly(1)\r
+ r = ResourcePicture.mylist @artist\r
+ end\r
+ end\r
+ it 'リストを返す' do\r
+ c = ResourcePicture.mylist @artist\r
+ c.should eq [@rp]\r
+ end\r
+ it '時系列で並んでいる' do\r
+ nop = FactoryGirl.create :original_picture, :artist_id => @artist.id\r
+ nrp = FactoryGirl.create :resource_picture, :artist_id => @artist.id, :license_id => @license.id, :original_picture_id => nop.id, :picture_id => @p.id, :updated_at => Time.now + 100\r
+ cl = ResourcePicture.mylist @artist\r
+ cl.should eq [nrp, @rp]\r
+ end\r
+ it '他人の素材は含まない' do\r
+ nop = FactoryGirl.create :original_picture, :artist_id => @other_artist.id\r
+ nrp = FactoryGirl.create :resource_picture, :artist_id => @other_artist.id, :license_id => @license.id, :original_picture_id => nop.id, :picture_id => @p.id, :updated_at => Time.now + 100\r
+ cl = ResourcePicture.mylist @artist\r
+ cl.should eq [@rp]\r
+ end\r
+ context 'DBに5件あって1ページの件数を2件に変えたとして' do\r
+ before do\r
+ @op2 = FactoryGirl.create :original_picture, :artist_id => @artist.id\r
+ @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\r
+ @op3 = FactoryGirl.create :original_picture, :artist_id => @artist.id\r
+ @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\r
+ @op4 = FactoryGirl.create :original_picture, :artist_id => @artist.id\r
+ @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\r
+ @op5 = FactoryGirl.create :original_picture, :artist_id => @artist.id\r
+ @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\r
+ end\r
+ it '通常は2件を返す' do\r
+ c = ResourcePicture.mylist @artist, 1, 2\r
+ c.should have(2).items \r
+ end\r
+ it 'page=1なら末尾2件を返す' do\r
+ #時系列で並んでいる\r
+ c = ResourcePicture.mylist(@artist, 1, 2)\r
+ c.should eq [@rp5, @rp4]\r
+ end\r
+ it 'page=2なら中間2件を返す' do\r
+ c = ResourcePicture.mylist(@artist, 2, 2)\r
+ c.should eq [@rp3, @rp2]\r
+ end\r
+ it 'page=3なら先頭1件を返す' do\r
+ c = ResourcePicture.mylist(@artist, 3, 2)\r
+ c.should eq [@rp]\r
+ end\r
+ end\r
+ end\r
+ \r
+ describe '他作家の素材一覧取得に於いて' do\r
+ before do\r
+ @op = FactoryGirl.create :original_picture, :artist_id => @artist.id\r
+ @p = FactoryGirl.create :picture, :original_picture_id => @op.id, :license_id => @license.id, :artist_id => @artist.id\r
+ @rp = FactoryGirl.create :resource_picture, :artist_id => @artist.id, :license_id => @license.id, :original_picture_id => @op.id, :picture_id => @p.id\r
+ @other_op = FactoryGirl.create :original_picture, :artist_id => @other_artist.id\r
+ @other_p = FactoryGirl.create :picture, :original_picture_id => @other_op.id, :license_id => @license.id, :artist_id => @other_artist.id\r
+ @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\r
+ end\r
+ context 'つつがなく終わるとき' do\r
+ it '一覧取得オプションを利用している' do\r
+ ResourcePicture.stub(:list_opt).with(any_args).and_return({})\r
+ ResourcePicture.should_receive(:list_opt).with(any_args).exactly(1)\r
+ r = ResourcePicture.himlist @other_artist\r
+ end\r
+ end\r
+ it '指定した作家のリストを返す' do\r
+ r = ResourcePicture.himlist @other_artist\r
+ r.should eq [@other_rp]\r
+ end\r
+ it '時系列で並んでいる' do\r
+ nop = FactoryGirl.create :original_picture, :artist_id => @other_artist.id\r
+ 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
+ r = ResourcePicture.himlist @other_artist\r
+ r.should eq [nrp, @other_rp]\r
+ end\r
+ context 'DBに5件あって1ページの件数を2件に変えたとして' do\r
+ before do\r
+ @op2 = FactoryGirl.create :original_picture, :artist_id => @other_artist.id\r
+ @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\r
+ @op3 = FactoryGirl.create :original_picture, :artist_id => @other_artist.id\r
+ @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\r
+ @op4 = FactoryGirl.create :original_picture, :artist_id => @other_artist.id\r
+ @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\r
+ @op5 = FactoryGirl.create :original_picture, :artist_id => @other_artist.id\r
+ @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\r
+ end\r
+ it '通常は2件を返す' do\r
+ r = ResourcePicture.himlist @other_artist, 1, 2\r
+ r.should have(2).items \r
+ end\r
+ it 'page=1なら末尾2件を返す' do\r
+ #時系列で並んでいる\r
+ r = ResourcePicture.himlist(@other_artist, 1, 2)\r
+ r.should eq [@rp5, @rp4]\r
+ end\r
+ it 'page=2なら中間2件を返す' do\r
+ r = ResourcePicture.himlist(@other_artist, 2, 2)\r
+ r.should eq [@rp3, @rp2]\r
+ end\r
+ it 'page=3なら先頭1件を返す' do\r
+ r = ResourcePicture.himlist(@other_artist, 3, 2)\r
+ r.should eq [@other_rp]\r
+ end\r
+ end\r
+ end\r
+ \r
+ describe '一覧ページ制御に於いて' do\r
+ before do\r
+ ResourcePicture.stub(:count).with(any_args).and_return(100)\r
+ end\r
+ it 'ページ制御を返す' do\r
+ r = ResourcePicture.list_paginate\r
+ r.is_a?(Kaminari::PaginatableArray).should be_true\r
+ end\r
+ it 'ページ件数10のとき、3ページ目のオフセットは20から始まる' do\r
+ r = ResourcePicture.list_paginate 3, 10\r
+ r.limit_value.should eq 10\r
+ r.offset_value.should eq 20\r
+ end\r
+ end\r
+ \r
+ describe '自分の素材一覧ページ制御に於いて' do\r
+ before do\r
+ ResourcePicture.stub(:count).with(any_args).and_return(100)\r
+ end\r
+ it 'ページ制御を返す' do\r
+ r = ResourcePicture.mylist_paginate @artist\r
+ r.is_a?(Kaminari::PaginatableArray).should be_true\r
+ end\r
+ it '自分の素材一覧の取得条件を利用している' do\r
+ ResourcePicture.stub(:mylist_where).with(any_args).and_return('')\r
+ ResourcePicture.should_receive(:mylist_where).with(any_args).exactly(1)\r
+ r = ResourcePicture.mylist_paginate @artist\r
+ end\r
+ it 'ページ件数10のとき、3ページ目のオフセットは20から始まる' do\r
+ r = ResourcePicture.mylist_paginate @artist, 3, 10\r
+ r.limit_value.should eq 10\r
+ r.offset_value.should eq 20\r
+ end\r
+ end\r
+ \r
+ describe '他作家の素材一覧ページ制御に於いて' do\r
+ before do\r
+ ResourcePicture.stub(:count).with(any_args).and_return(100)\r
+ end\r
+ it 'ページ制御を返す' do\r
+ r = ResourcePicture.himlist_paginate @other_artist\r
+ r.is_a?(Kaminari::PaginatableArray).should be_true\r
+ end\r
+ it '他作家の素材一覧の取得条件を利用している' do\r
+ ResourcePicture.stub(:himlist_where).with(any_args).and_return('')\r
+ ResourcePicture.should_receive(:himlist_where).with(any_args).exactly(1)\r
+ r = ResourcePicture.himlist_paginate @other_artist\r
+ end\r
+ it 'ページ件数10のとき、3ページ目のオフセットは20から始まる' do\r
+ r = ResourcePicture.himlist_paginate @other_artist, 3, 10\r
+ r.limit_value.should eq 10\r
+ r.offset_value.should eq 20\r
+ end\r
+ end\r
+ \r