From f37a2be1c35736f9ae257bde83b4123dbe2ebd55 Mon Sep 17 00:00:00 2001 From: yasushiito Date: Wed, 17 Apr 2013 11:49:10 +0900 Subject: [PATCH] t#31079:approve_list added provider_status --- app/models/provider_status.rb | 9 +++++ spec/models/provider_status_spec.rb | 79 +++++++++++++++++++++++++++++++++++++ 2 files changed, 88 insertions(+) diff --git a/app/models/provider_status.rb b/app/models/provider_status.rb index bad08fd4..e9dc46d3 100644 --- a/app/models/provider_status.rb +++ b/app/models/provider_status.rb @@ -9,6 +9,7 @@ class ProviderStatus < ActiveRecord::Base before_save do |r| r.token = r.token.gsub(/\s/, '') if r.token + r.token = nil if r.token.blank? end def supply_default @@ -76,6 +77,14 @@ class ProviderStatus < ActiveRecord::Base ProviderStatus.find(:all, opt) end + def self.approve_list page = 1, page_size = self.default_page_size + opt = {} + opt.merge!(ProviderStatus.list_opt) + opt.merge!({:limit => page_size, :offset => (page -1) * page_size}) if page_size > 0 + opt.merge!({:conditions => ['provider_statuses.token is not null'], :order => 'providers.name'}) + ProviderStatus.find(:all, opt) + end + def self.list_opt {:include => {:provider => {}} } end diff --git a/spec/models/provider_status_spec.rb b/spec/models/provider_status_spec.rb index 466bef75..af1e290e 100644 --- a/spec/models/provider_status_spec.rb +++ b/spec/models/provider_status_spec.rb @@ -200,6 +200,7 @@ describe ProviderStatus do end end end + describe '待機中一覧取得に於いて' do before do @ps = FactoryGirl.create :provider_status @@ -276,6 +277,84 @@ describe ProviderStatus do end end end + + describe '承認済リスト一覧取得に於いて' do + before do + @ps = FactoryGirl.create :provider_status, :token => 'aaaaa' + @pd = FactoryGirl.create :provider, :provider_status_id => @ps.id, :name => "6" + end + context 'つつがなく終わるとき' do + it '一覧取得オプションを利用している' do + ProviderStatus.stub(:list_opt).with(any_args).and_return({:include => {:provider => {}} }) + ProviderStatus.should_receive(:list_opt).with(any_args).exactly(1) + r = ProviderStatus.approve_list + end + end + it 'リストを返す' do + r = ProviderStatus.approve_list + r.should eq [@ps] + end + it '管理名で並んでいる' do + @ps2 = FactoryGirl.create :provider_status, :token => 'aaaaa' + v = FactoryGirl.create :provider, :name => "0", :provider_status_id => @ps2.id + r = ProviderStatus.approve_list + r.should eq [@ps2, @ps] + end + it '借受状況のトークンが設定されている借受状況に限る' do + @ps2 = FactoryGirl.create :provider_status, :token => nil + v = FactoryGirl.create :provider, :name => "0", :provider_status_id => @ps2.id + r = ProviderStatus.approve_list + r.should eq [@ps] + end + context 'DBに5件あって1ページの件数を2件に変えたとして' do + before do + @ps2 = FactoryGirl.create :provider_status, :token => 'aaaaa' + @pd2 = FactoryGirl.create :provider, :provider_status_id => @ps2.id, :name => "5" + @ps3 = FactoryGirl.create :provider_status, :token => 'aaaaa' + @pd3 = FactoryGirl.create :provider, :provider_status_id => @ps3.id, :name => "4" + @ps4 = FactoryGirl.create :provider_status, :token => 'aaaaa' + @pd4 = FactoryGirl.create :provider, :provider_status_id => @ps4.id, :name => "3" + @ps5 = FactoryGirl.create :provider_status, :token => 'aaaaa' + @pd5 = FactoryGirl.create :provider, :provider_status_id => @ps5.id, :name => "2" + ProviderStatus.stub(:default_page_size).and_return(2) + end + it '通常は2件を返す' do + r = ProviderStatus.approve_list + r.should have(2).items + end + it 'page=1なら末尾2件を返す' do + #管理名で並んでいる + r = ProviderStatus.approve_list(1) + r.should eq [@ps5, @ps4] + end + it 'page=2なら中間2件を返す' do + r = ProviderStatus.approve_list(2) + r.should eq [@ps3, @ps2] + end + it 'page=3なら先頭1件を返す' do + r = ProviderStatus.approve_list(3) + r.should eq [@ps] + end + end + context 'DBに5件あって1ページの件数を2件に変えたとして' do + before do + @ps2 = FactoryGirl.create :provider_status, :token => 'aaaaa' + @pd2 = FactoryGirl.create :provider, :provider_status_id => @ps2.id, :name => "5" + @ps3 = FactoryGirl.create :provider_status, :token => 'aaaaa' + @pd3 = FactoryGirl.create :provider, :provider_status_id => @ps3.id, :name => "4" + @ps4 = FactoryGirl.create :provider_status, :token => 'aaaaa' + @pd4 = FactoryGirl.create :provider, :provider_status_id => @ps4.id, :name => "3" + @ps5 = FactoryGirl.create :provider_status, :token => 'aaaaa' + @pd5 = FactoryGirl.create :provider, :provider_status_id => @ps5.id, :name => "2" + ProviderStatus.stub(:default_page_size).and_return(2) + end + it '件数0は全件(5件)を返す' do + r = ProviderStatus.approve_list 5, 0 + r.should have(5).items + end + end + end + describe '一覧取得オプションに於いて' do it 'includeキーを含んでいる' do r = ProviderStatus.list_opt -- 2.11.0