1 # -*- encoding: utf-8 -*-
5 describe ProviderOriginalPicture do
7 @admin = FactoryGirl.create :admin
8 @sp = FactoryGirl.create :system_picture
9 @lg = FactoryGirl.create :license_group
10 @license = FactoryGirl.create :license, :license_group_id => @lg.id, :system_picture_id => @sp.id
11 @user = FactoryGirl.create :user_yas
12 @author = FactoryGirl.create :author, :user_id => @user.id
13 @artist = FactoryGirl.create :artist, :author_id => @author.id
14 @other_user = FactoryGirl.create :user_yas
15 @other_author = FactoryGirl.create :author, :user_id => @other_user.id
16 @other_artist = FactoryGirl.create :artist, :author_id => @other_author.id
17 @provider_status = FactoryGirl.create :provider_status
18 @provider = FactoryGirl.create :provider, :provider_status_id => @provider_status.id
22 @op = FactoryGirl.create :original_picture, :artist_id => @artist.id
23 @pop = FactoryGirl.build :provider_original_picture, :provider_id => @provider.id, :providers_original_picture_id => 2, :demanders_original_picture_id => @op.id
26 context 'オーソドックスなデータのとき' do
35 context 'provider_idを検証するとき' do
37 @pop.provider_id = nil
38 @pop.should_not be_valid
41 @pop.provider_id = 'a'
42 @pop.should_not be_valid
44 it '存在する貸手でなければ失敗する' do
46 @pop.should_not be_valid
49 context 'providers_original_picture_idを検証するとき' do
51 @pop.providers_original_picture_id = nil
52 @pop.should_not be_valid
55 @pop.providers_original_picture_id = 'a'
56 @pop.should_not be_valid
59 context 'demanders_original_picture_idを検証するとき' do
61 @pop.demanders_original_picture_id = nil
62 @pop.should_not be_valid
65 @pop.demanders_original_picture_id = 'a'
66 @pop.should_not be_valid
71 describe '対照表取得に於いて' do
73 @op = FactoryGirl.create :original_picture, :artist_id => @artist.id
74 @pop = FactoryGirl.create :provider_original_picture, :provider_id => @provider.id, :providers_original_picture_id => 2, :demanders_original_picture_id => @op.id
77 r = ProviderOriginalPicture.get_one @provider.id, 2
80 it '該当する対照表が存在しなかったら、新規に興した対照表オブジェクトを返す' do
81 r = ProviderOriginalPicture.get_one @provider.id, 1
82 r.should be_a_new ProviderOriginalPicture
83 r = ProviderOriginalPicture.get_one 0, 2
84 r.should be_a_new ProviderOriginalPicture
88 describe '貸手側原画同期に於いて' do
90 @op = FactoryGirl.create :original_picture, :artist_id => @artist.id
91 @pop = FactoryGirl.create :provider_original_picture, :provider_id => @provider.id, :providers_original_picture_id => 2, :demanders_original_picture_id => @op.id
92 @newpop = ProviderOriginalPicture.new
94 context '自身に原画がリンクしてないとき' do
97 it '原画オブジェクトを新規に興す' do
99 r = @newpop.modify_original_picture @op.attributes
100 }.should change OriginalPicture, :count
103 context '自身に原画がリンクしているとき' do
106 r = @pop.modify_original_picture @op.attributes
107 }.should_not change OriginalPicture, :count
110 it '貸手側原画カラム値からカラム値をセットする 原画オブジェクトを保存する' do
111 r = @pop.modify_original_picture :filesize => 3346
113 @op.filesize.should eq 3346
116 r = @pop.modify_original_picture @op.attributes
121 describe '貸手側実素材同期に於いて' do
123 @op = FactoryGirl.create :original_picture, :artist_id => @artist.id
124 @p = FactoryGirl.create :picture, :artist_id => @artist.id, :license_id => @license.id, :revision => 0,
125 :original_picture_id => @op.id
126 @p2 = FactoryGirl.build :picture, :artist_id => @artist.id, :license_id => @license.id, :revision => 1,
127 :original_picture_id => @op.id
129 context '実素材が取得できないとき' do
132 it '実素材オブジェクトを新規に興す' do
133 r = ProviderOriginalPicture.modify_picture @p2.attributes
134 r.should be_a_new Picture
137 context '実素材が取得できるとき' do
138 it '実素材に原画idRevision取得を依頼して、実素材を取得している' do
139 r = ProviderOriginalPicture.modify_picture @p.attributes
140 r.should_not be_a_new Picture
144 it '実素材にカラム値をセットする' do
145 r = ProviderOriginalPicture.modify_picture({:original_picture_id => @p.id, :revision => 0, :filesize => 3346})
146 r.filesize.should eq 3346
149 r = ProviderOriginalPicture.modify_picture @p.attributes
154 describe '貸手側素材同期に於いて' do
156 @op = FactoryGirl.create :original_picture, :artist_id => @artist.id
157 @p = FactoryGirl.create :picture, :artist_id => @artist.id, :license_id => @license.id, :revision => 0,
158 :original_picture_id => @op.id
159 @rp = FactoryGirl.create :resource_picture, :artist_id => @artist.id, :original_picture_id => @op.id, :license_id => @license.id, :picture_id => @p.id
160 @attr = FactoryGirl.attributes_for :resource_picture, :artist_id => @artist.id, :original_picture_id => 111, :license_id => @license.id, :picture_id => @p.id, :filesize => 36225
162 context '素材が取得できないとき' do
165 it '素材オブジェクトを新規に興す' do
166 r = ProviderOriginalPicture.modify_resource_picture @attr
167 r.should be_a_new ResourcePicture
170 context '素材が取得できるとき' do
171 it '素材に原画id取得を依頼して、素材を取得している' do
172 r = ProviderOriginalPicture.modify_resource_picture @rp.attributes
173 r.should_not be_a_new ResourcePicture
177 it '素材にカラム値をセットする' do
178 r = ProviderOriginalPicture.modify_resource_picture @attr
179 r.filesize.should eq 36225
182 r = ProviderOriginalPicture.modify_resource_picture @rp.attributes
187 describe '絵師id置換に於いて' do
189 @pa = FactoryGirl.create :provider_artist, :provider_id => @provider.id, :providers_artist_id => 5, :demanders_artist_id => @artist.id
190 @pa2 = FactoryGirl.create :provider_artist, :provider_id => @provider.id, :providers_artist_id => 3, :demanders_artist_id => @other_artist.id
192 context 'つつがなく終わるとき' do
196 @attr5 = {'artist_id' => 5}
197 r = ProviderOriginalPicture.replace_artist @provider.id, @attr5
200 it 'カラム値の絵師idを借手側の絵師のidで置き換える' do
201 @attr5 = {'artist_id' => 5}
202 r = ProviderOriginalPicture.replace_artist @provider.id, @attr5
203 @attr5['artist_id'].should eq @artist.id
204 @attr3 = {'artist_id' => 3}
205 r = ProviderOriginalPicture.replace_artist @provider.id, @attr3
206 @attr3['artist_id'].should eq @other_artist.id
209 context '借手側の絵師がなかったとき' do
213 @attr = {'artist_id' => 1}
214 r = ProviderOriginalPicture.replace_artist @provider.id, @attr
220 describe 'ライセンスid置換に於いて' do
222 @other_license = FactoryGirl.create :license, :license_group_id => @lg.id, :system_picture_id => @sp.id, :url => 'http://other.license', :name => 'other_license'
223 @pl = FactoryGirl.create :provider_license, :provider_id => @provider.id, :providers_license_id => 4, :demanders_license_id => @license.id
224 @pl2 = FactoryGirl.create :provider_license, :provider_id => @provider.id, :providers_license_id => 2, :demanders_license_id => @other_license.id
226 context 'つつがなく終わるとき' do
230 @attr5 = {'license_id' => 4}
231 r = ProviderOriginalPicture.replace_license @provider.id, @attr5
234 it 'カラム値のライセンスidを借手側のライセンスのidで置き換える' do
235 @attr4 = {'license_id' => 4}
236 r = ProviderOriginalPicture.replace_license @provider.id, @attr4
237 @attr4['license_id'].should eq @license.id
238 @attr2 = {'license_id' => 2}
239 r = ProviderOriginalPicture.replace_license @provider.id, @attr2
240 @attr2['license_id'].should eq @other_license.id
243 context '借手側のライセンスがなかったとき' do
247 @attr = {'license_id' => 1}
248 r = ProviderOriginalPicture.replace_license @provider.id, @attr
254 describe '原画id置換に於いて' do
256 @op = FactoryGirl.create :original_picture, :artist_id => @artist.id
257 @other_op = FactoryGirl.create :original_picture, :artist_id => @artist.id
258 @pop = FactoryGirl.create :provider_original_picture, :provider_id => @provider.id, :providers_original_picture_id => 6, :demanders_original_picture_id => @op.id
259 @pop2 = FactoryGirl.create :provider_original_picture, :provider_id => @provider.id, :providers_original_picture_id => 9, :demanders_original_picture_id => @other_op.id
261 context 'つつがなく終わるとき' do
265 @attr6 = {'original_picture_id' => 6}
266 r = ProviderOriginalPicture.replace_original_picture @provider.id, @attr6
269 it 'カラム値の原画idを借手側の原画のidで置き換える' do
270 @attr6 = {'original_picture_id' => 6}
271 r = ProviderOriginalPicture.replace_original_picture @provider.id, @attr6
272 @attr6['original_picture_id'].should eq @op.id
273 @attr9 = {'original_picture_id' => 9}
274 r = ProviderOriginalPicture.replace_original_picture @provider.id, @attr9
275 @attr9['original_picture_id'].should eq @other_op.id
278 context '借手側の原画がなかったとき' do
282 @attr = {'original_picture_id' => 1}
283 r = ProviderOriginalPicture.replace_original_picture @provider.id, @attr
289 describe '素材停止に於いて' do
291 @op = FactoryGirl.create :original_picture, :artist_id => @artist.id
292 @p = FactoryGirl.create :picture, :original_picture_id => @op.id, :license_id => @license.id, :artist_id => @artist.id
293 rpattr = {:original_picture_id => @op.id, :picture_id => @p.id, :license_id => @license.id, :artist_id => @artist.id, :artist_name => 'tester',
294 :credit => '{}', :settings => {:reverse => 1, :gif_convert => 1}.to_json.to_s}
295 @rp = FactoryGirl.create :resource_picture, rpattr
297 context '貸手側原画のカラム値の停止日時が設定されているとき' do
299 @pop = ProviderOriginalPicture.create :provider_id => @provider.id, :providers_original_picture_id => 1, :demanders_original_picture_id => @op.id
300 @stopped_op = FactoryGirl.build :original_picture, :artist_id => @artist.id, :stopped_at => Time.now + 400
301 @stopped_op_attr = @stopped_op.attributes
302 ResourcePicture.any_instance.stub(:unpublish).with(any_args).and_return(true)
304 context '対照表から素材を取得できるとき' do
306 @stopped_op = FactoryGirl.build :original_picture, :artist_id => @artist.id, :stopped_at => Time.now + 400
309 ResourcePicture.any_instance.should_receive(:unpublish).with(any_args).exactly(1)
310 r = ProviderOriginalPicture.unpublish_resource_picture @pop, @stopped_op_attr
313 context '対照表から原画を取得できないとき' do
315 @pop = ProviderOriginalPicture.new
317 it '素材に停止を依頼していない' do
318 ResourcePicture.any_instance.should_not_receive(:unpublish).with(any_args)
319 r = ProviderOriginalPicture.unpublish_resource_picture @pop, @stopped_op_attr
322 context '対照表から素材を取得できないとき' do
326 it '素材に停止を依頼していない' do
327 ResourcePicture.any_instance.should_not_receive(:unpublish).with(any_args)
328 r = ProviderOriginalPicture.unpublish_resource_picture @pop, @stopped_op_attr
332 context '貸手側原画のカラム値の停止日時が設定されていないとき' do
334 @pop = ProviderOriginalPicture.create :provider_id => @provider.id, :providers_original_picture_id => 1, :demanders_original_picture_id => @op.id
335 @stopped_op = FactoryGirl.build :original_picture, :artist_id => @artist.id, :stopped_at => nil
336 @stopped_op_attr = @stopped_op.attributes
337 ResourcePicture.any_instance.stub(:unpublish).with(any_args).and_return(true)
339 it '素材に停止を依頼していない' do
340 ResourcePicture.any_instance.should_not_receive(:unpublish).with(any_args)
341 r = ProviderOriginalPicture.unpublish_resource_picture @pop, @stopped_op_attr
344 context 'つつがなく終わるとき' do
346 @pop = ProviderOriginalPicture.create :provider_id => @provider.id, :providers_original_picture_id => 1, :demanders_original_picture_id => @op.id
347 @stopped_op = FactoryGirl.build :original_picture, :artist_id => @artist.id, :stopped_at => Time.now + 400
348 @stopped_op_attr = @stopped_op.attributes
349 ResourcePicture.any_instance.stub(:unpublish).with(any_args).and_return(true)
352 r = ProviderOriginalPicture.unpublish_resource_picture @pop, @stopped_op_attr
356 context '素材停止に失敗したとき' do
358 @pop = ProviderOriginalPicture.create :provider_id => @provider.id, :providers_original_picture_id => 1, :demanders_original_picture_id => @op.id
359 @stopped_op = FactoryGirl.build :original_picture, :artist_id => @artist.id, :stopped_at => Time.now + 400
360 @stopped_op_attr = @stopped_op.attributes
361 ResourcePicture.any_instance.stub(:unpublish).with(any_args).and_return(false)
364 r = ProviderOriginalPicture.unpublish_resource_picture @pop, @stopped_op_attr
370 describe '原画インポートに於いて' do
372 @op = FactoryGirl.create :original_picture, :artist_id => @artist.id
373 @other_op = FactoryGirl.create :original_picture, :artist_id => @artist.id
375 context '事前チェックする' do
377 ProviderOriginalPicture.stub(:get_one).with(any_args).and_return(ProviderOriginalPicture.new)
378 ProviderOriginalPicture.stub(:replace_artist).with(any_args).and_return(true)
379 ProviderOriginalPicture.stub(:unpublish_resource_picture).with(any_args).and_return(true)
380 ProviderOriginalPicture.any_instance.stub(:modify_original_picture).with(any_args).and_return(@op)
381 OriginalPicture.any_instance.stub(:valid?).with(any_args).and_return(true)
382 ProviderOriginalPicture.any_instance.stub(:save).with(any_args).and_return(true)
384 it '対照表取得を問い合わせている' do
385 ProviderOriginalPicture.should_receive(:get_one).with(any_args).exactly(1)
386 r = ProviderOriginalPicture.import_original_pictures @provider.id, [@op.attributes]
388 it '絵師id置換を依頼している' do
389 ProviderOriginalPicture.should_receive(:replace_artist).with(any_args).exactly(1)
390 r = ProviderOriginalPicture.import_original_pictures @provider.id, [@op.attributes]
393 ProviderOriginalPicture.should_receive(:unpublish_resource_picture).with(any_args).exactly(1)
394 r = ProviderOriginalPicture.import_original_pictures @provider.id, [@op.attributes]
396 it '対照表に原画同期を依頼している' do
397 ProviderOriginalPicture.any_instance.should_receive(:modify_original_picture).with(any_args).exactly(1)
398 r = ProviderOriginalPicture.import_original_pictures @provider.id, [@op.attributes]
401 OriginalPicture.any_instance.should_receive(:valid?).with(any_args).exactly(1)
402 r = ProviderOriginalPicture.import_original_pictures @provider.id, [@op.attributes]
404 it '対照表オブジェクトを保存している' do
405 ProviderOriginalPicture.any_instance.should_receive(:save).with(any_args).exactly(1)
406 r = ProviderOriginalPicture.import_original_pictures @provider.id, [@op.attributes]
409 context 'つつがなく終わるとき' do
411 ProviderOriginalPicture.stub(:replace_artist).with(any_args).and_return(true)
414 r = ProviderOriginalPicture.import_original_pictures @provider.id, [@op.attributes]
419 r = ProviderOriginalPicture.import_original_pictures @provider.id, [@op.attributes]
420 }.should change ProviderOriginalPicture, :count
423 context '複数インポートのとき' do
426 @other_p = FactoryGirl.create :picture, :original_picture_id => @other_op.id, :license_id => @license.id, :artist_id => @artist.id
427 rpattr = {:original_picture_id => @other_op.id, :picture_id => @other_p.id, :license_id => @license.id, :artist_id => @artist.id, :artist_name => 'tester',
428 :credit => '{}', :settings => {:reverse => 1, :gif_convert => 1}.to_json.to_s}
429 @other_rp = FactoryGirl.create :resource_picture, rpattr
431 @pop = ProviderOriginalPicture.create :provider_id => @provider.id, :providers_original_picture_id => @other_op.id, :demanders_original_picture_id => @other_op.id
433 @other_op_attr = @other_op.attributes
434 @other_op_attr['stopped_at'] = Time.now - 100
435 @other_op_attr['created_at'] = Time.now - 100
436 @other_op_attr['updated_at'] = Time.now - 100
437 ProviderOriginalPicture.stub(:replace_artist).with(any_args).and_return(true)
440 r = ProviderOriginalPicture.import_original_pictures @provider.id, [@op.attributes, @other_op_attr]
443 it '新規分の対照表が追加される' do
445 r = ProviderOriginalPicture.import_original_pictures @provider.id, [@op.attributes, @other_op_attr]
446 }.should change(ProviderOriginalPicture, :count)
448 it '停止された素材が削除される' do
450 r = ProviderOriginalPicture.import_original_pictures @provider.id, [@op.attributes, @other_op_attr]
451 }.should change(ResourcePicture, :count)
453 it '原画の日時は貸手と一致しており、素材停止の影響を受けていない' do
454 r = ProviderOriginalPicture.import_original_pictures @provider.id, [@op.attributes, @other_op_attr]
456 @other_op.updated_at.should eq @other_op_attr['updated_at']
460 context '絵師id置換に失敗したとき' do
462 ProviderOriginalPicture.stub(:replace_artist).with(any_args).and_return(false)
464 it '結果に原画のカラム値を追加している' do
465 r = ProviderOriginalPicture.import_original_pictures @provider.id, [@op.attributes, @op.attributes]
466 r.should_not be_empty
469 context '原画の検証に失敗したとき' do
471 OriginalPicture.any_instance.stub(:valid?).with(any_args).and_return(false)
473 it '結果に貸手側原画のカラム値を追加している' do
474 r = ProviderOriginalPicture.import_original_pictures @provider.id, [@op.attributes]
475 r.should_not be_empty
478 context '対照表オブジェクトの保存に失敗したとき' do
480 ProviderOriginalPicture.any_instance.stub(:save).with(any_args).and_return(false)
482 it '結果に貸手側原画のカラム値を追加している' do
483 r = ProviderOriginalPicture.import_original_pictures @provider.id, [@op.attributes]
484 r.should_not be_empty
487 context '原画オブジェクトの保存に失敗したとき' do
489 OriginalPicture.any_instance.stub(:save).with(any_args).and_return(false)
491 it '結果に貸手側原画のカラム値を追加している' do
492 r = ProviderOriginalPicture.import_original_pictures @provider.id, [@op.attributes]
493 r.should_not be_empty
498 describe '実素材インポートに於いて' do
500 @op = FactoryGirl.create :original_picture, :artist_id => @artist.id
501 @p = FactoryGirl.create :picture, :original_picture_id => @op.id, :license_id => @license.id, :artist_id => @artist.id
502 @imager = ImagerTest.load "abc\ndef\nghi"
503 @attr = @p.attributes
504 @attr['picture_data'] = "abc\ndef\nghi"
506 context '事前チェックする' do
508 ProviderOriginalPicture.stub(:replace_original_picture).with(any_args).and_return(true)
509 ProviderOriginalPicture.stub(:replace_artist).with(any_args).and_return(true)
510 ProviderOriginalPicture.stub(:replace_license).with(any_args).and_return(true)
511 Base64.stub(:decode64).with(any_args).and_return("abc\ndef\nghi")
512 PettanImager.stub(:load).with("abc\ndef\nghi").and_return(@imager)
513 ProviderOriginalPicture.stub(:modify_picture).with(any_args).and_return(@p)
514 Picture.any_instance.stub(:store).with(any_args).and_return(true)
516 it '原画id置換を依頼している' do
517 ProviderOriginalPicture.should_receive(:replace_original_picture).with(any_args).exactly(1)
518 r = ProviderOriginalPicture.import_pictures @provider.id, [@attr]
520 it '絵師id置換を依頼している' do
521 ProviderOriginalPicture.should_receive(:replace_artist).with(any_args).exactly(1)
522 r = ProviderOriginalPicture.import_pictures @provider.id, [@attr]
524 it 'ライセンスid置換を依頼している' do
525 ProviderOriginalPicture.should_receive(:replace_license).with(any_args).exactly(1)
526 r = ProviderOriginalPicture.import_pictures @provider.id, [@attr]
528 it '画像データをデコードしている' do
529 Base64.should_receive(:decode64).with(any_args).exactly(1)
530 r = ProviderOriginalPicture.import_pictures @provider.id, [@attr]
532 it '画像ライブラリにロードを依頼している' do
533 PettanImager.should_receive(:load).with(any_args).exactly(1)
534 r = ProviderOriginalPicture.import_pictures @provider.id, [@attr]
536 it '対照表モデルに貸手側実素材同期を依頼している' do
537 ProviderOriginalPicture.should_receive(:modify_picture).with(any_args).exactly(1)
538 r = ProviderOriginalPicture.import_pictures @provider.id, [@attr]
541 Picture.any_instance.should_receive(:store).with(any_args).exactly(1)
542 r = ProviderOriginalPicture.import_pictures @provider.id, [@attr]
545 context 'つつがなく終わるとき' do
547 ProviderOriginalPicture.stub(:replace_original_picture).with(any_args).and_return(true)
548 ProviderOriginalPicture.stub(:replace_artist).with(any_args).and_return(true)
549 ProviderOriginalPicture.stub(:replace_license).with(any_args).and_return(true)
550 Base64.stub(:decode64).with(any_args).and_return("abc\ndef\nghi")
551 PettanImager.stub(:load).with("abc\ndef\nghi").and_return(@imager)
552 @newp = FactoryGirl.build :picture, :original_picture_id => @op.id, :license_id => @license.id, :artist_id => @artist.id, :revision => 1
553 @newattr = @newp.attributes
554 @newattr['picture_data'] = "abc\ndef\nghi"
557 r = ProviderOriginalPicture.import_pictures @provider.id, [@newattr]
562 r = ProviderOriginalPicture.import_pictures @provider.id, [@newattr]
563 }.should change Picture, :count
567 context '原画id置換に失敗したとき' do
569 ProviderOriginalPicture.stub(:replace_original_picture).with(any_args).and_return(false)
571 it '結果に実素材のカラム値を追加している' do
572 r = ProviderOriginalPicture.import_pictures @provider.id, [@attr]
573 r.should_not be_empty
576 context '絵師id置換に失敗したとき' do
578 ProviderOriginalPicture.stub(:replace_original_picture).with(any_args).and_return(true)
579 ProviderOriginalPicture.stub(:replace_artist).with(any_args).and_return(false)
581 it '結果に実素材のカラム値を追加している' do
582 r = ProviderOriginalPicture.import_pictures @provider.id, [@attr]
583 r.should_not be_empty
586 context 'ライセンスid置換に失敗したとき' do
588 ProviderOriginalPicture.stub(:replace_original_picture).with(any_args).and_return(true)
589 ProviderOriginalPicture.stub(:replace_artist).with(any_args).and_return(true)
590 ProviderOriginalPicture.stub(:replace_license).with(any_args).and_return(false)
592 it '結果に実素材のカラム値を追加している' do
593 r = ProviderOriginalPicture.import_pictures @provider.id, [@attr]
594 r.should_not be_empty
597 context '画像ライブラリのロードに失敗したとき' do
599 ProviderOriginalPicture.stub(:replace_original_picture).with(any_args).and_return(true)
600 ProviderOriginalPicture.stub(:replace_artist).with(any_args).and_return(true)
601 ProviderOriginalPicture.stub(:replace_license).with(any_args).and_return(true)
602 PettanImager.stub(:load).with(any_args).and_return(false)
604 it '結果に実素材のカラム値を追加している' do
605 r = ProviderOriginalPicture.import_pictures @provider.id, [@attr]
606 r.should_not be_empty
609 context '実素材の保存に失敗したとき' do
611 ProviderOriginalPicture.stub(:replace_original_picture).with(any_args).and_return(true)
612 ProviderOriginalPicture.stub(:replace_artist).with(any_args).and_return(true)
613 ProviderOriginalPicture.stub(:replace_license).with(any_args).and_return(true)
614 PettanImager.stub(:load).with(any_args).and_return(@imager)
615 ProviderOriginalPicture.stub(:modify_picture).with(any_args).and_return(@p)
616 Picture.any_instance.stub(:store).with(any_args).and_return(false)
618 it '結果に実素材のカラム値を追加している' do
619 r = ProviderOriginalPicture.import_pictures @provider.id, [@attr]
620 r.should_not be_empty
625 describe '素材インポートに於いて' do
627 @op = FactoryGirl.create :original_picture, :artist_id => @artist.id
628 @p = FactoryGirl.create :picture, :artist_id => @artist.id, :original_picture_id => @op.id, :license_id => @license.id, :revision => 0
629 rpattr = {:original_picture_id => @op.id, :picture_id => @p.id, :license_id => @license.id, :artist_id => @artist.id, :artist_name => 'tester',
630 :credit => '{}', :settings => {:reverse => 1, :gif_convert => 1}.to_json.to_s}
631 @rp = FactoryGirl.create :resource_picture, rpattr
632 @imager = ImagerTest.load "abc\ndef\nghi"
633 @attr = @op.attributes
634 @attr['resource_picture'] = @rp.attributes
635 @attr['resource_picture']['picture_data'] = "abc\ndef\nghi"
637 context '事前チェックする' do
639 ProviderOriginalPicture.stub(:replace_original_picture).with(any_args).and_return(true)
640 ProviderOriginalPicture.stub(:replace_artist).with(any_args).and_return(true)
641 ProviderOriginalPicture.stub(:replace_license).with(any_args).and_return(true)
642 Base64.stub(:decode64).with(any_args).and_return("abc\ndef\nghi")
643 PettanImager.stub(:load).with("abc\ndef\nghi").and_return(@imager)
644 ProviderOriginalPicture.stub(:modify_resource_picture).with(any_args).and_return(@rp)
645 ResourcePicture.any_instance.stub(:store_picture_with_gif).with(any_args).and_return(true)
646 ResourcePicture.any_instance.stub(:save).with(any_args).and_return(true)
648 it '原画id置換を依頼している' do
649 ProviderOriginalPicture.should_receive(:replace_original_picture).with(any_args).exactly(1)
650 r = ProviderOriginalPicture.import_resource_pictures @provider.id, [@attr]
652 it '絵師id置換を依頼している' do
653 ProviderOriginalPicture.should_receive(:replace_artist).with(any_args).exactly(1)
654 r = ProviderOriginalPicture.import_resource_pictures @provider.id, [@attr]
656 it 'ライセンスid置換を依頼している' do
657 ProviderOriginalPicture.should_receive(:replace_license).with(any_args).exactly(1)
658 r = ProviderOriginalPicture.import_resource_pictures @provider.id, [@attr]
660 it '画像データをデコードしている' do
661 Base64.should_receive(:decode64).with(any_args).exactly(1)
662 r = ProviderOriginalPicture.import_resource_pictures @provider.id, [@attr]
664 it '画像ライブラリにロードを依頼している' do
665 PettanImager.should_receive(:load).with(any_args).exactly(1)
666 r = ProviderOriginalPicture.import_resource_pictures @provider.id, [@attr]
668 it '対照表モデルに貸手側素材同期を依頼している' do
669 ProviderOriginalPicture.should_receive(:modify_resource_picture).with(any_args).exactly(1)
670 r = ProviderOriginalPicture.import_resource_pictures @provider.id, [@attr]
672 it '素材にgif付き画像ファイルの作成・更新を依頼している' do
673 ResourcePicture.any_instance.should_receive(:store_picture_with_gif).with(any_args).exactly(1)
674 r = ProviderOriginalPicture.import_resource_pictures @provider.id, [@attr]
677 ResourcePicture.any_instance.should_receive(:save).with(any_args).exactly(1)
678 r = ProviderOriginalPicture.import_resource_pictures @provider.id, [@attr]
680 context '素材のカラム値を取得できないとき' do
682 @attr['resource_picture'] = nil
683 ProviderOriginalPicture.stub(:import_resource_picture).with(any_args).and_return(nil)
685 it '素材インポートを依頼していない' do
686 ProviderOriginalPicture.should_not_receive(:import_resource_picture).with(any_args)
687 r = ProviderOriginalPicture.import_resource_pictures @provider.id, [@attr]
691 context 'つつがなく終わるとき' do
693 ProviderOriginalPicture.stub(:replace_original_picture).with(any_args).and_return(true)
694 ProviderOriginalPicture.stub(:replace_artist).with(any_args).and_return(true)
695 ProviderOriginalPicture.stub(:replace_license).with(any_args).and_return(true)
696 Base64.stub(:decode64).with(any_args).and_return("abc\ndef\nghi")
697 PettanImager.stub(:load).with("abc\ndef\nghi").and_return(@imager)
698 @op2 = FactoryGirl.create :original_picture, :artist_id => @artist.id
699 @p2 = FactoryGirl.create :picture, :artist_id => @artist.id, :original_picture_id => @op2.id, :license_id => @license.id, :revision => 0
700 newrpattr = {:original_picture_id => @op2.id, :picture_id => @p2.id, :license_id => @license.id, :artist_id => @artist.id, :artist_name => 'tester',
701 :credit => '{}', :settings => {:reverse => 1, :gif_convert => 1, :thumbnail => 0}.to_json.to_s}
702 @rp2 = FactoryGirl.build :resource_picture, newrpattr
703 @newattr = @op2.attributes
704 @newattr['resource_picture'] = @rp2.attributes
705 @newattr['resource_picture']['picture_data'] = "abc\ndef\nghi"
708 r = ProviderOriginalPicture.import_resource_pictures @provider.id, [@newattr]
713 r = ProviderOriginalPicture.import_resource_pictures @provider.id, [@newattr]
714 }.should change ResourcePicture, :count
718 context '原画id置換に失敗したとき' do
720 ProviderOriginalPicture.stub(:replace_original_picture).with(any_args).and_return(false)
722 it '結果に素材のカラム値を追加している' do
723 r = ProviderOriginalPicture.import_resource_pictures @provider.id, [@attr]
724 r.should_not be_empty
727 context '絵師id置換に失敗したとき' do
729 ProviderOriginalPicture.stub(:replace_original_picture).with(any_args).and_return(true)
730 ProviderOriginalPicture.stub(:replace_artist).with(any_args).and_return(false)
732 it '結果に素材のカラム値を追加している' do
733 r = ProviderOriginalPicture.import_resource_pictures @provider.id, [@attr]
734 r.should_not be_empty
737 context 'ライセンスid置換に失敗したとき' do
739 ProviderOriginalPicture.stub(:replace_original_picture).with(any_args).and_return(true)
740 ProviderOriginalPicture.stub(:replace_artist).with(any_args).and_return(true)
741 ProviderOriginalPicture.stub(:replace_license).with(any_args).and_return(false)
743 it '結果に素材のカラム値を追加している' do
744 r = ProviderOriginalPicture.import_resource_pictures @provider.id, [@attr]
745 r.should_not be_empty
748 context '画像ライブラリのロードに失敗したとき' do
750 ProviderOriginalPicture.stub(:replace_original_picture).with(any_args).and_return(true)
751 ProviderOriginalPicture.stub(:replace_artist).with(any_args).and_return(true)
752 ProviderOriginalPicture.stub(:replace_license).with(any_args).and_return(true)
753 PettanImager.stub(:load).with(any_args).and_return(false)
755 it '結果に素材のカラム値を追加している' do
756 r = ProviderOriginalPicture.import_resource_pictures @provider.id, [@attr]
757 r.should_not be_empty
760 context 'gif付き画像ファイルの作成・更新に失敗したとき' do
762 ProviderOriginalPicture.stub(:replace_original_picture).with(any_args).and_return(true)
763 ProviderOriginalPicture.stub(:replace_artist).with(any_args).and_return(true)
764 ProviderOriginalPicture.stub(:replace_license).with(any_args).and_return(true)
765 PettanImager.stub(:load).with(any_args).and_return(@imager)
766 ProviderOriginalPicture.stub(:modify_resource_picture).with(any_args).and_return(@rp)
767 ResourcePicture.any_instance.stub(:store_picture_with_gif).with(any_args).and_return(false)
769 it '結果に素材のカラム値を追加している' do
770 r = ProviderOriginalPicture.import_resource_pictures @provider.id, [@attr]
771 r.should_not be_empty
774 context '素材の保存に失敗したとき' do
776 ProviderOriginalPicture.stub(:replace_original_picture).with(any_args).and_return(true)
777 ProviderOriginalPicture.stub(:replace_artist).with(any_args).and_return(true)
778 ProviderOriginalPicture.stub(:replace_license).with(any_args).and_return(true)
779 PettanImager.stub(:load).with(any_args).and_return(@imager)
780 ProviderOriginalPicture.stub(:modify_resource_picture).with(any_args).and_return(@rp)
781 ResourcePicture.any_instance.stub(:store_picture_with_gif).with(any_args).and_return(true)
782 ResourcePicture.any_instance.stub(:save).with(any_args).and_return(false)
784 it '結果に素材のカラム値を追加している' do
785 r = ProviderOriginalPicture.import_resource_pictures @provider.id, [@attr]
786 r.should_not be_empty
791 describe 'インポートに於いて' do
793 @op = FactoryGirl.create :original_picture, :artist_id => @artist.id
794 @p = FactoryGirl.create :picture, :artist_id => @artist.id, :original_picture_id => @op.id, :license_id => @license.id, :revision => 0
795 @opattr = @op.attributes
796 @pattr = @p.attributes
797 @pattr['picture_data'] = "abc\ndef\nghi"
798 @rpattr = {:original_picture_id => @op.id, :picture_id => @p.id, :license_id => @license.id, :artist_id => @artist.id, :artist_name => 'tester',
799 :credit => '{}', :settings => {:reverse => 1, :gif_convert => 1}.to_json.to_s}
800 @opattr['resource_picture'] = @rpattr
801 @opattr['resource_picture']['picture_data'] = "abc\ndef\nghi"
803 context '事前チェックする' do
805 ProviderOriginalPicture.stub(:import_original_pictures).with(any_args).and_return([])
806 ProviderOriginalPicture.stub(:import_pictures).with(any_args).and_return([])
807 ProviderOriginalPicture.stub(:import_resource_pictures).with(any_args).and_return([])
809 it '自身に原画インポートを依頼している' do
810 ProviderOriginalPicture.should_receive(:import_original_pictures).with(any_args).exactly(1)
811 r = ProviderOriginalPicture.import @provider.id, [@opattr], [@pattr]
813 it '自身に実素材インポートを依頼している' do
814 ProviderOriginalPicture.should_receive(:import_pictures).with(any_args).exactly(1)
815 r = ProviderOriginalPicture.import @provider.id, [@opattr], [@pattr]
817 it '自身に素材インポートを依頼している' do
818 ProviderOriginalPicture.should_receive(:import_resource_pictures).with(any_args).exactly(1)
819 r = ProviderOriginalPicture.import @provider.id, [@opattr], [@pattr]
822 context 'つつがなく終わるとき' do
824 ProviderOriginalPicture.stub(:import_original_pictures).with(any_args).and_return([])
825 ProviderOriginalPicture.stub(:import_pictures).with(any_args).and_return([])
826 ProviderOriginalPicture.stub(:import_resource_pictures).with(any_args).and_return([])
828 it '各失敗したカラム値をHashで返す' do
829 r = ProviderOriginalPicture.import @provider.id, [@opattr], [@pattr]
830 r[:original_pictures].should be_empty
831 r[:pictures].should be_empty
832 r[:resource_pictures].should be_empty
836 context '原画インポートに失敗したとき' do
838 ProviderOriginalPicture.stub(:import_original_pictures).with(any_args).and_return([@opattr])
839 ProviderOriginalPicture.stub(:import_pictures).with(any_args).and_return([])
840 ProviderOriginalPicture.stub(:import_resource_pictures).with(any_args).and_return([])
842 it '失敗した原画のカラム値を配列でoriginal_picturesに追加している' do
843 r = ProviderOriginalPicture.import @provider.id, [@opattr], [@pattr]
844 r[:original_pictures].should_not be_empty
845 r[:pictures].should be_empty
846 r[:resource_pictures].should be_empty
849 context '実素材インポートに失敗したとき' do
851 ProviderOriginalPicture.stub(:import_original_pictures).with(any_args).and_return([])
852 ProviderOriginalPicture.stub(:import_pictures).with(any_args).and_return([@pattr])
853 ProviderOriginalPicture.stub(:import_resource_pictures).with(any_args).and_return([])
855 it '失敗した原画のカラム値を配列でpicturesに追加している' do
856 r = ProviderOriginalPicture.import @provider.id, [@opattr], [@pattr]
857 r[:original_pictures].should be_empty
858 r[:pictures].should_not be_empty
859 r[:resource_pictures].should be_empty
862 context '素材インポートに失敗したとき' do
864 ProviderOriginalPicture.stub(:import_original_pictures).with(any_args).and_return([])
865 ProviderOriginalPicture.stub(:import_pictures).with(any_args).and_return([])
866 ProviderOriginalPicture.stub(:import_resource_pictures).with(any_args).and_return([@rpattr])
868 it '失敗した原画のカラム値を配列でresource_picturesに追加している' do
869 r = ProviderOriginalPicture.import @provider.id, [@opattr], [@pattr]
870 r[:original_pictures].should be_empty
871 r[:pictures].should be_empty
872 r[:resource_pictures].should_not be_empty