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
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)
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]
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
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)
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]
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
#警告ケース
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
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
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