OSDN Git Service

Merge branch 'v06' of git.sourceforge.jp:/gitroot/pettanr/pettanr into v06
[pettanr/pettanr.git] / spec / models / provider_original_picture_spec.rb
index 10c6135..7d3ca0d 100644 (file)
@@ -251,6 +251,46 @@ describe ProviderOriginalPicture do
     end
   end
   
+  describe '実素材id置換に於いて' 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
+      @rpattr = {:original_picture_id => @op.id, :picture_id => 3, :license_id => @license.id, :artist_id => @artist.id, :artist_name => 'tester', 
+        :credit => '{}', :settings => {:reverse => 1, :gif_convert => 1}.to_json.to_s}
+    end
+    context '事前チェックする' do
+      before do
+        Picture.stub(:head).with(any_args).and_return(@p)
+      end
+      it '実素材にhead取得を問い合わせている' do
+        Picture.should_receive(:head).with(any_args).exactly(1)
+        r = ProviderOriginalPicture.replace_picture @provider.id, @rpattr
+      end
+    end
+    context 'つつがなく終わるとき' do
+      before do
+        Picture.stub(:head).with(any_args).and_return(@p)
+      end
+      it 'trueを返す' do
+        r = ProviderOriginalPicture.replace_picture @provider.id, @rpattr
+        r.should be_true
+      end
+      it 'カラム値の実素材idを借手側の実素材のidで置き換える' do
+        r = ProviderOriginalPicture.replace_picture @provider.id, @rpattr
+        @rpattr['picture_id'].should eq @p.id
+      end
+    end
+    context '借手側の実素材がなかったとき' do
+      before do
+        Picture.stub(:head).with(any_args).and_return(nil)
+      end
+      it 'falseを返す' do
+        r = ProviderOriginalPicture.replace_picture @provider.id, @rpattr
+        r.should be_false
+      end
+    end
+  end
+  
   describe '原画id置換に於いて' do
     before do
       @op = FactoryGirl.create :original_picture, :artist_id => @artist.id
@@ -639,6 +679,7 @@ describe ProviderOriginalPicture do
         ProviderOriginalPicture.stub(:replace_original_picture).with(any_args).and_return(true)
         ProviderOriginalPicture.stub(:replace_artist).with(any_args).and_return(true)
         ProviderOriginalPicture.stub(:replace_license).with(any_args).and_return(true)
+        ProviderOriginalPicture.stub(:replace_picture).with(any_args).and_return(true)
         Base64.stub(:decode64).with(any_args).and_return("abc\ndef\nghi")
         PettanImager.stub(:load).with("abc\ndef\nghi").and_return(@imager)
         ProviderOriginalPicture.stub(:modify_resource_picture).with(any_args).and_return(@rp)
@@ -657,6 +698,10 @@ describe ProviderOriginalPicture do
         ProviderOriginalPicture.should_receive(:replace_license).with(any_args).exactly(1)
         r = ProviderOriginalPicture.import_resource_pictures @provider.id, [@attr]
       end
+      it '実素材id置換を依頼している' do
+        ProviderOriginalPicture.should_receive(:replace_picture).with(any_args).exactly(1)
+        r = ProviderOriginalPicture.import_resource_pictures @provider.id, [@attr]
+      end
       it '画像データをデコードしている' do
         Base64.should_receive(:decode64).with(any_args).exactly(1)
         r = ProviderOriginalPicture.import_resource_pictures @provider.id, [@attr]
@@ -669,14 +714,14 @@ describe ProviderOriginalPicture do
         ProviderOriginalPicture.should_receive(:modify_resource_picture).with(any_args).exactly(1)
         r = ProviderOriginalPicture.import_resource_pictures @provider.id, [@attr]
       end
-      it '素材にgif付き画像ファイルの作成・更新を依頼している' do
-        ResourcePicture.any_instance.should_receive(:store_picture_with_gif).with(any_args).exactly(1)
-        r = ProviderOriginalPicture.import_resource_pictures @provider.id, [@attr]
-      end
       it '素材を保存している' do
         ResourcePicture.any_instance.should_receive(:save).with(any_args).exactly(1)
         r = ProviderOriginalPicture.import_resource_pictures @provider.id, [@attr]
       end
+      it '素材にgif付き画像ファイルの作成・更新を依頼している' do
+        ResourcePicture.any_instance.should_receive(:store_picture_with_gif).with(any_args).exactly(1)
+        r = ProviderOriginalPicture.import_resource_pictures @provider.id, [@attr]
+      end
       context '素材のカラム値を取得できないとき' do
         before do
           @attr['resource_picture'] =  nil
@@ -745,6 +790,18 @@ describe ProviderOriginalPicture do
         r.should_not be_empty
       end
     end
+    context '実素材id置換に失敗したとき' do
+      before do
+        ProviderOriginalPicture.stub(:replace_original_picture).with(any_args).and_return(true)
+        ProviderOriginalPicture.stub(:replace_artist).with(any_args).and_return(true)
+        ProviderOriginalPicture.stub(:replace_license).with(any_args).and_return(true)
+        ProviderOriginalPicture.stub(:replace_picture).with(any_args).and_return(false)
+      end
+      it '結果に素材のカラム値を追加している' do
+        r = ProviderOriginalPicture.import_resource_pictures @provider.id, [@attr]
+        r.should_not be_empty
+      end
+    end
     context '画像ライブラリのロードに失敗したとき' do
       before do
         ProviderOriginalPicture.stub(:replace_original_picture).with(any_args).and_return(true)
@@ -757,29 +814,29 @@ describe ProviderOriginalPicture do
         r.should_not be_empty
       end
     end
-    context 'gif付き画像ファイルの作成・更新に失敗したとき' do
+    context '素材の保存に失敗したとき' do
       before do
         ProviderOriginalPicture.stub(:replace_original_picture).with(any_args).and_return(true)
         ProviderOriginalPicture.stub(:replace_artist).with(any_args).and_return(true)
         ProviderOriginalPicture.stub(:replace_license).with(any_args).and_return(true)
         PettanImager.stub(:load).with(any_args).and_return(@imager)
         ProviderOriginalPicture.stub(:modify_resource_picture).with(any_args).and_return(@rp)
-        ResourcePicture.any_instance.stub(:store_picture_with_gif).with(any_args).and_return(false)
+        ResourcePicture.any_instance.stub(:store_picture_with_gif).with(any_args).and_return(true)
+        ResourcePicture.any_instance.stub(:save).with(any_args).and_return(false)
       end
       it '結果に素材のカラム値を追加している' do
         r = ProviderOriginalPicture.import_resource_pictures @provider.id, [@attr]
         r.should_not be_empty
       end
     end
-    context '素材の保存に失敗したとき' do
+    context 'gif付き画像ファイルの作成・更新に失敗したとき' do
       before do
         ProviderOriginalPicture.stub(:replace_original_picture).with(any_args).and_return(true)
         ProviderOriginalPicture.stub(:replace_artist).with(any_args).and_return(true)
         ProviderOriginalPicture.stub(:replace_license).with(any_args).and_return(true)
         PettanImager.stub(:load).with(any_args).and_return(@imager)
         ProviderOriginalPicture.stub(:modify_resource_picture).with(any_args).and_return(@rp)
-        ResourcePicture.any_instance.stub(:store_picture_with_gif).with(any_args).and_return(true)
-        ResourcePicture.any_instance.stub(:save).with(any_args).and_return(false)
+        ResourcePicture.any_instance.stub(:store_picture_with_gif).with(any_args).and_return(false)
       end
       it '結果に素材のカラム値を追加している' do
         r = ProviderOriginalPicture.import_resource_pictures @provider.id, [@attr]
@@ -825,11 +882,10 @@ describe ProviderOriginalPicture do
         ProviderOriginalPicture.stub(:import_pictures).with(any_args).and_return([])
         ProviderOriginalPicture.stub(:import_resource_pictures).with(any_args).and_return([])
       end
-      it '各失敗したカラム値をHashで返す' do
+      it 'ImportResultを返す' do
         r = ProviderOriginalPicture.import @provider.id, [@opattr], [@pattr]
-        r[:original_pictures].should be_empty
-        r[:pictures].should be_empty
-        r[:resource_pictures].should be_empty
+        r.is_a?(ImportResult).should be_true
+        r.should be_success
       end
     end
     #警告ケース
@@ -839,11 +895,11 @@ describe ProviderOriginalPicture do
         ProviderOriginalPicture.stub(:import_pictures).with(any_args).and_return([])
         ProviderOriginalPicture.stub(:import_resource_pictures).with(any_args).and_return([])
       end
-      it '失敗した原画のカラム値を配列でoriginal_picturesに追加している' do
+      it '結果が失敗している' do
         r = ProviderOriginalPicture.import @provider.id, [@opattr], [@pattr]
-        r[:original_pictures].should_not be_empty
-        r[:pictures].should be_empty
-        r[:resource_pictures].should be_empty
+        r.should_not be_success
+        r.is_a?(OriginalPictureImportResult).should be_true
+        r.failures.should_not be_empty
       end
     end
     context '実素材インポートに失敗したとき' do
@@ -852,11 +908,11 @@ describe ProviderOriginalPicture do
         ProviderOriginalPicture.stub(:import_pictures).with(any_args).and_return([@pattr])
         ProviderOriginalPicture.stub(:import_resource_pictures).with(any_args).and_return([])
       end
-      it '失敗した原画のカラム値を配列でpicturesに追加している' do
+      it '結果が失敗している' do
         r = ProviderOriginalPicture.import @provider.id, [@opattr], [@pattr]
-        r[:original_pictures].should be_empty
-        r[:pictures].should_not be_empty
-        r[:resource_pictures].should be_empty
+        r.should_not be_success
+        r.is_a?(PictureImportResult).should be_true
+        r.failures.should_not be_empty
       end
     end
     context '素材インポートに失敗したとき' do
@@ -865,11 +921,11 @@ describe ProviderOriginalPicture do
         ProviderOriginalPicture.stub(:import_pictures).with(any_args).and_return([])
         ProviderOriginalPicture.stub(:import_resource_pictures).with(any_args).and_return([@rpattr])
       end
-      it '失敗した原画のカラム値を配列でresource_picturesに追加している' do
+      it '結果が失敗している' do
         r = ProviderOriginalPicture.import @provider.id, [@opattr], [@pattr]
-        r[:original_pictures].should be_empty
-        r[:pictures].should be_empty
-        r[:resource_pictures].should_not be_empty
+        r.should_not be_success
+        r.is_a?(ResourcePictureImportResult).should be_true
+        r.failures.should_not be_empty
       end
     end
   end