OSDN Git Service

t#30328:pull porting
[pettanr/pettanr.git] / spec / models / demander_spec.rb
index da6c9ce..b416544 100644 (file)
@@ -9,7 +9,7 @@ describe Demander do
     @lg = FactoryGirl.create :license_group
     @license = FactoryGirl.create :license, :license_group_id => @lg.id, :system_picture_id => @sp.id
     @user = FactoryGirl.create :user_yas
-    @author = @user.author    #ユーザ作成時に連動して作成される
+    @author = FactoryGirl.create :author, :user_id => @user.id
     @demand_user = FactoryGirl.create :demand_user
   end
   describe '検証に於いて' do
@@ -497,4 +497,195 @@ describe Demander do
       end
     end
   end
+  
+  describe 'ライセンスエクスポートに於いて' do
+    before do
+      @ds = FactoryGirl.create :demander_status, :requested_at => Time.now, :approved_at => Time.now, :rejected_at => Time.now, :receive_hour1 => 0, :receive_hour2 => 0
+      @demander = FactoryGirl.create :demander, :demander_status_id => @ds.id
+    end
+    context '事前チェックする' do
+      before do
+        Demander.any_instance.stub(:status).and_return(3)
+      end
+      it 'ライセンスモデルにエクスポートを依頼している' do
+        License.stub(:export).with(nil).and_return([@license])
+        License.should_receive(:export).with(nil).exactly(1)
+        r = @demander.licenses_export
+      end
+    end
+    context 'つつがなく終わるとき' do
+      before do
+        Demander.any_instance.stub(:status).and_return(3)
+      end
+      it 'ライセンスリストを返す' do
+        License.stub(:export).with(Time.parse('2011/10/10')).and_return([@license])
+        r = @demander.licenses_export Time.parse('2011/10/10')
+        r.should eq [@license]
+      end
+    end
+    context '日時指定しないとき' do
+      before do
+        Demander.any_instance.stub(:status).and_return(3)
+      end
+      it 'パラメータなしでリストを取得する' do
+        License.stub(:export).with(nil).and_return([@license])
+        License.should_receive(:export).with(nil).exactly(1)
+        r = @demander.licenses_export nil
+      end
+    end
+    #例外ケース
+    context '状態が貸与中でないとき' do
+      it '例外403 ActiveRecord::Forbiddenを発生させる' do
+        Demander.any_instance.stub(:status).and_return(2)
+        lambda{
+          r = @demander.licenses_export
+        }.should raise_error(ActiveRecord::Forbidden)
+      end
+    end
+  end
+  
+  describe '絵師エクスポートに於いて' do
+    before do
+      @ds = FactoryGirl.create :demander_status, :requested_at => Time.now, :approved_at => Time.now, :rejected_at => Time.now, :receive_hour1 => 0, :receive_hour2 => 0
+      @demander = FactoryGirl.create :demander, :demander_status_id => @ds.id
+      @artist = FactoryGirl.create :artist, :author_id => @author.id
+    end
+    context '事前チェックする' do
+      before do
+        Demander.any_instance.stub(:status).and_return(3)
+      end
+      it '絵師モデルにエクスポートを依頼している' do
+        Artist.stub(:export).with(nil).and_return([@artist])
+        Artist.should_receive(:export).with(nil).exactly(1)
+        r = @demander.artists_export
+      end
+    end
+    context 'つつがなく終わるとき' do
+      before do
+        Demander.any_instance.stub(:status).and_return(3)
+      end
+      it '絵師リストを返す' do
+        Artist.stub(:export).with(Time.parse('2011/10/10')).and_return([@artist])
+        r = @demander.artists_export Time.parse('2011/10/10')
+        r.should eq [@artist]
+      end
+    end
+    context '日時指定しないとき' do
+      before do
+        Demander.any_instance.stub(:status).and_return(3)
+      end
+      it 'パラメータなしでリストを取得する' do
+        Artist.stub(:export).with(nil).and_return([@artist])
+        Artist.should_receive(:export).with(nil).exactly(1)
+        r = @demander.artists_export nil
+      end
+    end
+    #例外ケース
+    context '状態が貸与中でないとき' do
+      it '例外403 ActiveRecord::Forbiddenを発生させる' do
+        Demander.any_instance.stub(:status).and_return(2)
+        lambda{
+          r = @demander.artists_export
+        }.should raise_error(ActiveRecord::Forbidden)
+      end
+    end
+  end
+  
+  describe '原画エクスポートに於いて' do
+    before do
+      @ds = FactoryGirl.create :demander_status, :requested_at => Time.now, :approved_at => Time.now, :rejected_at => Time.now, :receive_hour1 => 0, :receive_hour2 => 0
+      @demander = FactoryGirl.create :demander, :demander_status_id => @ds.id
+      @artist = FactoryGirl.create :artist, :author_id => @author.id
+      @op = FactoryGirl.create :original_picture, :artist_id => @artist.id
+    end
+    context '事前チェックする' do
+      before do
+        Demander.any_instance.stub(:status).and_return(3)
+      end
+      it '原画モデルに内原画エクスポートを依頼している' do
+        OriginalPicture.stub(:export).with(nil).and_return([@op])
+        OriginalPicture.should_receive(:export).with(nil).exactly(1)
+        r = @demander.original_pictures_export
+      end
+    end
+    context 'つつがなく終わるとき' do
+      before do
+        Demander.any_instance.stub(:status).and_return(3)
+      end
+      it '内原画リストを返す' do
+        OriginalPicture.stub(:export).with(Time.parse('2011/10/10')).and_return([@op])
+        r = @demander.original_pictures_export Time.parse('2011/10/10')
+        r.should eq [@op]
+      end
+    end
+    context '日時指定しないとき' do
+      before do
+        Demander.any_instance.stub(:status).and_return(3)
+      end
+      it 'パラメータなしでリストを取得する' do
+        OriginalPicture.stub(:export).with(nil).and_return([@op])
+        OriginalPicture.should_receive(:export).with(nil).exactly(1)
+        r = @demander.original_pictures_export nil
+      end
+    end
+    #例外ケース
+    context '状態が貸与中でないとき' do
+      it '例外403 ActiveRecord::Forbiddenを発生させる' do
+        Demander.any_instance.stub(:status).and_return(2)
+        lambda{
+          r = @demander.original_pictures_export
+        }.should raise_error(ActiveRecord::Forbidden)
+      end
+    end
+  end
+  
+  describe '実素材エクスポートに於いて' do
+    before do
+      @ds = FactoryGirl.create :demander_status, :requested_at => Time.now, :approved_at => Time.now, :rejected_at => Time.now, :receive_hour1 => 0, :receive_hour2 => 0
+      @demander = FactoryGirl.create :demander, :demander_status_id => @ds.id
+      @artist = FactoryGirl.create :artist, :author_id => @author.id
+      @op = FactoryGirl.create :original_picture, :artist_id => @artist.id
+      @p = FactoryGirl.create :picture, :artist_id => @artist.id, :original_picture_id => @op.id, :license_id => @license.id, :revision => 0
+    end
+    context '事前チェックする' do
+      before do
+        Demander.any_instance.stub(:status).and_return(3)
+      end
+      it '実素材モデルにエクスポートを依頼している' do
+        Picture.stub(:export).with(nil).and_return([@p])
+        Picture.should_receive(:export).with(nil).exactly(1)
+        r = @demander.pictures_export
+      end
+    end
+    context 'つつがなく終わるとき' do
+      before do
+        Demander.any_instance.stub(:status).and_return(3)
+      end
+      it '実素材リストを返す' do
+        Picture.stub(:export).with(Time.parse('2011/10/10')).and_return([@p])
+        r = @demander.pictures_export Time.parse('2011/10/10')
+        r.should eq [@p]
+      end
+    end
+    context '日時指定しないとき' do
+      before do
+        Demander.any_instance.stub(:status).and_return(3)
+      end
+      it 'パラメータなしでリストを取得する' do
+        Picture.stub(:export).with(nil).and_return([@p])
+        Picture.should_receive(:export).with(nil).exactly(1)
+        r = @demander.pictures_export nil
+      end
+    end
+    #例外ケース
+    context '状態が貸与中でないとき' do
+      it '例外403 ActiveRecord::Forbiddenを発生させる' do
+        Demander.any_instance.stub(:status).and_return(2)
+        lambda{
+          r = @demander.pictures_export
+        }.should raise_error(ActiveRecord::Forbidden)
+      end
+    end
+  end
+  
 end