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 @p = FactoryGirl.create :picture, :original_picture_id => @op.id, :license_id => @license.id, :artist_id => @artist.id
258 @rpattr = {:original_picture_id => @op.id, :picture_id => 3, :license_id => @license.id, :artist_id => @artist.id, :artist_name => 'tester',
259 :credit => '{}', :settings => {:reverse => 1, :gif_convert => 1}.to_json.to_s}
261 context '事前チェックする' do
263 Picture.stub(:head).with(any_args).and_return(@p)
265 it '実素材にhead取得を問い合わせている' do
266 Picture.should_receive(:head).with(any_args).exactly(1)
267 r = ProviderOriginalPicture.replace_picture @provider.id, @rpattr
270 context 'つつがなく終わるとき' do
272 Picture.stub(:head).with(any_args).and_return(@p)
275 r = ProviderOriginalPicture.replace_picture @provider.id, @rpattr
278 it 'カラム値の実素材idを借手側の実素材のidで置き換える' do
279 r = ProviderOriginalPicture.replace_picture @provider.id, @rpattr
280 @rpattr['picture_id'].should eq @p.id
283 context '借手側の実素材がなかったとき' do
285 Picture.stub(:head).with(any_args).and_return(nil)
288 r = ProviderOriginalPicture.replace_picture @provider.id, @rpattr
294 describe '原画id置換に於いて' do
296 @op = FactoryGirl.create :original_picture, :artist_id => @artist.id
297 @other_op = FactoryGirl.create :original_picture, :artist_id => @artist.id
298 @pop = FactoryGirl.create :provider_original_picture, :provider_id => @provider.id, :providers_original_picture_id => 6, :demanders_original_picture_id => @op.id
299 @pop2 = FactoryGirl.create :provider_original_picture, :provider_id => @provider.id, :providers_original_picture_id => 9, :demanders_original_picture_id => @other_op.id
301 context 'つつがなく終わるとき' do
305 @attr6 = {'original_picture_id' => 6}
306 r = ProviderOriginalPicture.replace_original_picture @provider.id, @attr6
309 it 'カラム値の原画idを借手側の原画のidで置き換える' do
310 @attr6 = {'original_picture_id' => 6}
311 r = ProviderOriginalPicture.replace_original_picture @provider.id, @attr6
312 @attr6['original_picture_id'].should eq @op.id
313 @attr9 = {'original_picture_id' => 9}
314 r = ProviderOriginalPicture.replace_original_picture @provider.id, @attr9
315 @attr9['original_picture_id'].should eq @other_op.id
318 context '借手側の原画がなかったとき' do
322 @attr = {'original_picture_id' => 1}
323 r = ProviderOriginalPicture.replace_original_picture @provider.id, @attr
329 describe '素材停止に於いて' do
331 @op = FactoryGirl.create :original_picture, :artist_id => @artist.id
332 @p = FactoryGirl.create :picture, :original_picture_id => @op.id, :license_id => @license.id, :artist_id => @artist.id
333 rpattr = {:original_picture_id => @op.id, :picture_id => @p.id, :license_id => @license.id, :artist_id => @artist.id, :artist_name => 'tester',
334 :credit => '{}', :settings => {:reverse => 1, :gif_convert => 1}.to_json.to_s}
335 @rp = FactoryGirl.create :resource_picture, rpattr
337 context '貸手側原画のカラム値の停止日時が設定されているとき' do
339 @pop = ProviderOriginalPicture.create :provider_id => @provider.id, :providers_original_picture_id => 1, :demanders_original_picture_id => @op.id
340 @stopped_op = FactoryGirl.build :original_picture, :artist_id => @artist.id, :stopped_at => Time.now + 400
341 @stopped_op_attr = @stopped_op.attributes
342 ResourcePicture.any_instance.stub(:unpublish).with(any_args).and_return(true)
344 context '対照表から素材を取得できるとき' do
346 @stopped_op = FactoryGirl.build :original_picture, :artist_id => @artist.id, :stopped_at => Time.now + 400
349 ResourcePicture.any_instance.should_receive(:unpublish).with(any_args).exactly(1)
350 r = ProviderOriginalPicture.unpublish_resource_picture @pop, @stopped_op_attr
353 context '対照表から原画を取得できないとき' do
355 @pop = ProviderOriginalPicture.new
357 it '素材に停止を依頼していない' do
358 ResourcePicture.any_instance.should_not_receive(:unpublish).with(any_args)
359 r = ProviderOriginalPicture.unpublish_resource_picture @pop, @stopped_op_attr
362 context '対照表から素材を取得できないとき' do
366 it '素材に停止を依頼していない' do
367 ResourcePicture.any_instance.should_not_receive(:unpublish).with(any_args)
368 r = ProviderOriginalPicture.unpublish_resource_picture @pop, @stopped_op_attr
372 context '貸手側原画のカラム値の停止日時が設定されていないとき' do
374 @pop = ProviderOriginalPicture.create :provider_id => @provider.id, :providers_original_picture_id => 1, :demanders_original_picture_id => @op.id
375 @stopped_op = FactoryGirl.build :original_picture, :artist_id => @artist.id, :stopped_at => nil
376 @stopped_op_attr = @stopped_op.attributes
377 ResourcePicture.any_instance.stub(:unpublish).with(any_args).and_return(true)
379 it '素材に停止を依頼していない' do
380 ResourcePicture.any_instance.should_not_receive(:unpublish).with(any_args)
381 r = ProviderOriginalPicture.unpublish_resource_picture @pop, @stopped_op_attr
384 context 'つつがなく終わるとき' do
386 @pop = ProviderOriginalPicture.create :provider_id => @provider.id, :providers_original_picture_id => 1, :demanders_original_picture_id => @op.id
387 @stopped_op = FactoryGirl.build :original_picture, :artist_id => @artist.id, :stopped_at => Time.now + 400
388 @stopped_op_attr = @stopped_op.attributes
389 ResourcePicture.any_instance.stub(:unpublish).with(any_args).and_return(true)
392 r = ProviderOriginalPicture.unpublish_resource_picture @pop, @stopped_op_attr
396 context '素材停止に失敗したとき' do
398 @pop = ProviderOriginalPicture.create :provider_id => @provider.id, :providers_original_picture_id => 1, :demanders_original_picture_id => @op.id
399 @stopped_op = FactoryGirl.build :original_picture, :artist_id => @artist.id, :stopped_at => Time.now + 400
400 @stopped_op_attr = @stopped_op.attributes
401 ResourcePicture.any_instance.stub(:unpublish).with(any_args).and_return(false)
404 r = ProviderOriginalPicture.unpublish_resource_picture @pop, @stopped_op_attr
410 describe '原画インポートに於いて' do
412 @op = FactoryGirl.create :original_picture, :artist_id => @artist.id
413 @other_op = FactoryGirl.create :original_picture, :artist_id => @artist.id
415 context '事前チェックする' do
417 ProviderOriginalPicture.stub(:get_one).with(any_args).and_return(ProviderOriginalPicture.new)
418 ProviderOriginalPicture.stub(:replace_artist).with(any_args).and_return(true)
419 ProviderOriginalPicture.stub(:unpublish_resource_picture).with(any_args).and_return(true)
420 ProviderOriginalPicture.any_instance.stub(:modify_original_picture).with(any_args).and_return(@op)
421 OriginalPicture.any_instance.stub(:valid?).with(any_args).and_return(true)
422 ProviderOriginalPicture.any_instance.stub(:save).with(any_args).and_return(true)
424 it '対照表取得を問い合わせている' do
425 ProviderOriginalPicture.should_receive(:get_one).with(any_args).exactly(1)
426 r = ProviderOriginalPicture.import_original_pictures @provider.id, [@op.attributes]
428 it '絵師id置換を依頼している' do
429 ProviderOriginalPicture.should_receive(:replace_artist).with(any_args).exactly(1)
430 r = ProviderOriginalPicture.import_original_pictures @provider.id, [@op.attributes]
433 ProviderOriginalPicture.should_receive(:unpublish_resource_picture).with(any_args).exactly(1)
434 r = ProviderOriginalPicture.import_original_pictures @provider.id, [@op.attributes]
436 it '対照表に原画同期を依頼している' do
437 ProviderOriginalPicture.any_instance.should_receive(:modify_original_picture).with(any_args).exactly(1)
438 r = ProviderOriginalPicture.import_original_pictures @provider.id, [@op.attributes]
441 OriginalPicture.any_instance.should_receive(:valid?).with(any_args).exactly(1)
442 r = ProviderOriginalPicture.import_original_pictures @provider.id, [@op.attributes]
444 it '対照表オブジェクトを保存している' do
445 ProviderOriginalPicture.any_instance.should_receive(:save).with(any_args).exactly(1)
446 r = ProviderOriginalPicture.import_original_pictures @provider.id, [@op.attributes]
449 context 'つつがなく終わるとき' do
451 ProviderOriginalPicture.stub(:replace_artist).with(any_args).and_return(true)
454 r = ProviderOriginalPicture.import_original_pictures @provider.id, [@op.attributes]
459 r = ProviderOriginalPicture.import_original_pictures @provider.id, [@op.attributes]
460 }.should change ProviderOriginalPicture, :count
463 context '複数インポートのとき' do
466 @other_p = FactoryGirl.create :picture, :original_picture_id => @other_op.id, :license_id => @license.id, :artist_id => @artist.id
467 rpattr = {:original_picture_id => @other_op.id, :picture_id => @other_p.id, :license_id => @license.id, :artist_id => @artist.id, :artist_name => 'tester',
468 :credit => '{}', :settings => {:reverse => 1, :gif_convert => 1}.to_json.to_s}
469 @other_rp = FactoryGirl.create :resource_picture, rpattr
471 @pop = ProviderOriginalPicture.create :provider_id => @provider.id, :providers_original_picture_id => @other_op.id, :demanders_original_picture_id => @other_op.id
473 @other_op_attr = @other_op.attributes
474 @other_op_attr['stopped_at'] = Time.now - 100
475 @other_op_attr['created_at'] = Time.now - 100
476 @other_op_attr['updated_at'] = Time.now - 100
477 ProviderOriginalPicture.stub(:replace_artist).with(any_args).and_return(true)
480 r = ProviderOriginalPicture.import_original_pictures @provider.id, [@op.attributes, @other_op_attr]
483 it '新規分の対照表が追加される' do
485 r = ProviderOriginalPicture.import_original_pictures @provider.id, [@op.attributes, @other_op_attr]
486 }.should change(ProviderOriginalPicture, :count)
488 it '停止された素材が削除される' do
490 r = ProviderOriginalPicture.import_original_pictures @provider.id, [@op.attributes, @other_op_attr]
491 }.should change(ResourcePicture, :count)
493 it '原画の日時は貸手と一致しており、素材停止の影響を受けていない' do
494 r = ProviderOriginalPicture.import_original_pictures @provider.id, [@op.attributes, @other_op_attr]
496 @other_op.updated_at.should eq @other_op_attr['updated_at']
500 context '絵師id置換に失敗したとき' do
502 ProviderOriginalPicture.stub(:replace_artist).with(any_args).and_return(false)
504 it '結果に原画のカラム値を追加している' do
505 r = ProviderOriginalPicture.import_original_pictures @provider.id, [@op.attributes, @op.attributes]
506 r.should_not be_empty
509 context '原画の検証に失敗したとき' do
511 OriginalPicture.any_instance.stub(:valid?).with(any_args).and_return(false)
513 it '結果に貸手側原画のカラム値を追加している' do
514 r = ProviderOriginalPicture.import_original_pictures @provider.id, [@op.attributes]
515 r.should_not be_empty
518 context '対照表オブジェクトの保存に失敗したとき' do
520 ProviderOriginalPicture.any_instance.stub(:save).with(any_args).and_return(false)
522 it '結果に貸手側原画のカラム値を追加している' do
523 r = ProviderOriginalPicture.import_original_pictures @provider.id, [@op.attributes]
524 r.should_not be_empty
527 context '原画オブジェクトの保存に失敗したとき' do
529 OriginalPicture.any_instance.stub(:save).with(any_args).and_return(false)
531 it '結果に貸手側原画のカラム値を追加している' do
532 r = ProviderOriginalPicture.import_original_pictures @provider.id, [@op.attributes]
533 r.should_not be_empty
538 describe '実素材インポートに於いて' do
540 @op = FactoryGirl.create :original_picture, :artist_id => @artist.id
541 @p = FactoryGirl.create :picture, :original_picture_id => @op.id, :license_id => @license.id, :artist_id => @artist.id
542 @imager = ImagerTest.load "abc\ndef\nghi"
543 @attr = @p.attributes
544 @attr['picture_data'] = "abc\ndef\nghi"
546 context '事前チェックする' do
548 ProviderOriginalPicture.stub(:replace_original_picture).with(any_args).and_return(true)
549 ProviderOriginalPicture.stub(:replace_artist).with(any_args).and_return(true)
550 ProviderOriginalPicture.stub(:replace_license).with(any_args).and_return(true)
551 Base64.stub(:decode64).with(any_args).and_return("abc\ndef\nghi")
552 PettanImager.stub(:load).with("abc\ndef\nghi").and_return(@imager)
553 ProviderOriginalPicture.stub(:modify_picture).with(any_args).and_return(@p)
554 Picture.any_instance.stub(:store).with(any_args).and_return(true)
556 it '原画id置換を依頼している' do
557 ProviderOriginalPicture.should_receive(:replace_original_picture).with(any_args).exactly(1)
558 r = ProviderOriginalPicture.import_pictures @provider.id, [@attr]
560 it '絵師id置換を依頼している' do
561 ProviderOriginalPicture.should_receive(:replace_artist).with(any_args).exactly(1)
562 r = ProviderOriginalPicture.import_pictures @provider.id, [@attr]
564 it 'ライセンスid置換を依頼している' do
565 ProviderOriginalPicture.should_receive(:replace_license).with(any_args).exactly(1)
566 r = ProviderOriginalPicture.import_pictures @provider.id, [@attr]
568 it '画像データをデコードしている' do
569 Base64.should_receive(:decode64).with(any_args).exactly(1)
570 r = ProviderOriginalPicture.import_pictures @provider.id, [@attr]
572 it '画像ライブラリにロードを依頼している' do
573 PettanImager.should_receive(:load).with(any_args).exactly(1)
574 r = ProviderOriginalPicture.import_pictures @provider.id, [@attr]
576 it '対照表モデルに貸手側実素材同期を依頼している' do
577 ProviderOriginalPicture.should_receive(:modify_picture).with(any_args).exactly(1)
578 r = ProviderOriginalPicture.import_pictures @provider.id, [@attr]
581 Picture.any_instance.should_receive(:store).with(any_args).exactly(1)
582 r = ProviderOriginalPicture.import_pictures @provider.id, [@attr]
585 context 'つつがなく終わるとき' do
587 ProviderOriginalPicture.stub(:replace_original_picture).with(any_args).and_return(true)
588 ProviderOriginalPicture.stub(:replace_artist).with(any_args).and_return(true)
589 ProviderOriginalPicture.stub(:replace_license).with(any_args).and_return(true)
590 Base64.stub(:decode64).with(any_args).and_return("abc\ndef\nghi")
591 PettanImager.stub(:load).with("abc\ndef\nghi").and_return(@imager)
592 @newp = FactoryGirl.build :picture, :original_picture_id => @op.id, :license_id => @license.id, :artist_id => @artist.id, :revision => 1
593 @newattr = @newp.attributes
594 @newattr['picture_data'] = "abc\ndef\nghi"
597 r = ProviderOriginalPicture.import_pictures @provider.id, [@newattr]
602 r = ProviderOriginalPicture.import_pictures @provider.id, [@newattr]
603 }.should change Picture, :count
607 context '原画id置換に失敗したとき' do
609 ProviderOriginalPicture.stub(:replace_original_picture).with(any_args).and_return(false)
611 it '結果に実素材のカラム値を追加している' do
612 r = ProviderOriginalPicture.import_pictures @provider.id, [@attr]
613 r.should_not be_empty
616 context '絵師id置換に失敗したとき' do
618 ProviderOriginalPicture.stub(:replace_original_picture).with(any_args).and_return(true)
619 ProviderOriginalPicture.stub(:replace_artist).with(any_args).and_return(false)
621 it '結果に実素材のカラム値を追加している' do
622 r = ProviderOriginalPicture.import_pictures @provider.id, [@attr]
623 r.should_not be_empty
626 context 'ライセンスid置換に失敗したとき' do
628 ProviderOriginalPicture.stub(:replace_original_picture).with(any_args).and_return(true)
629 ProviderOriginalPicture.stub(:replace_artist).with(any_args).and_return(true)
630 ProviderOriginalPicture.stub(:replace_license).with(any_args).and_return(false)
632 it '結果に実素材のカラム値を追加している' do
633 r = ProviderOriginalPicture.import_pictures @provider.id, [@attr]
634 r.should_not be_empty
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 PettanImager.stub(:load).with(any_args).and_return(false)
644 it '結果に実素材のカラム値を追加している' do
645 r = ProviderOriginalPicture.import_pictures @provider.id, [@attr]
646 r.should_not be_empty
649 context '実素材の保存に失敗したとき' do
651 ProviderOriginalPicture.stub(:replace_original_picture).with(any_args).and_return(true)
652 ProviderOriginalPicture.stub(:replace_artist).with(any_args).and_return(true)
653 ProviderOriginalPicture.stub(:replace_license).with(any_args).and_return(true)
654 PettanImager.stub(:load).with(any_args).and_return(@imager)
655 ProviderOriginalPicture.stub(:modify_picture).with(any_args).and_return(@p)
656 Picture.any_instance.stub(:store).with(any_args).and_return(false)
658 it '結果に実素材のカラム値を追加している' do
659 r = ProviderOriginalPicture.import_pictures @provider.id, [@attr]
660 r.should_not be_empty
665 describe '素材インポートに於いて' do
667 @op = FactoryGirl.create :original_picture, :artist_id => @artist.id
668 @p = FactoryGirl.create :picture, :artist_id => @artist.id, :original_picture_id => @op.id, :license_id => @license.id, :revision => 0
669 rpattr = {:original_picture_id => @op.id, :picture_id => @p.id, :license_id => @license.id, :artist_id => @artist.id, :artist_name => 'tester',
670 :credit => '{}', :settings => {:reverse => 1, :gif_convert => 1}.to_json.to_s}
671 @rp = FactoryGirl.create :resource_picture, rpattr
672 @imager = ImagerTest.load "abc\ndef\nghi"
673 @attr = @op.attributes
674 @attr['resource_picture'] = @rp.attributes
675 @attr['resource_picture']['picture_data'] = "abc\ndef\nghi"
677 context '事前チェックする' do
679 ProviderOriginalPicture.stub(:replace_original_picture).with(any_args).and_return(true)
680 ProviderOriginalPicture.stub(:replace_artist).with(any_args).and_return(true)
681 ProviderOriginalPicture.stub(:replace_license).with(any_args).and_return(true)
682 ProviderOriginalPicture.stub(:replace_picture).with(any_args).and_return(true)
683 Base64.stub(:decode64).with(any_args).and_return("abc\ndef\nghi")
684 PettanImager.stub(:load).with("abc\ndef\nghi").and_return(@imager)
685 ProviderOriginalPicture.stub(:modify_resource_picture).with(any_args).and_return(@rp)
686 ResourcePicture.any_instance.stub(:store_picture_with_gif).with(any_args).and_return(true)
687 ResourcePicture.any_instance.stub(:save).with(any_args).and_return(true)
689 it '原画id置換を依頼している' do
690 ProviderOriginalPicture.should_receive(:replace_original_picture).with(any_args).exactly(1)
691 r = ProviderOriginalPicture.import_resource_pictures @provider.id, [@attr]
693 it '絵師id置換を依頼している' do
694 ProviderOriginalPicture.should_receive(:replace_artist).with(any_args).exactly(1)
695 r = ProviderOriginalPicture.import_resource_pictures @provider.id, [@attr]
697 it 'ライセンスid置換を依頼している' do
698 ProviderOriginalPicture.should_receive(:replace_license).with(any_args).exactly(1)
699 r = ProviderOriginalPicture.import_resource_pictures @provider.id, [@attr]
701 it '実素材id置換を依頼している' do
702 ProviderOriginalPicture.should_receive(:replace_picture).with(any_args).exactly(1)
703 r = ProviderOriginalPicture.import_resource_pictures @provider.id, [@attr]
705 it '画像データをデコードしている' do
706 Base64.should_receive(:decode64).with(any_args).exactly(1)
707 r = ProviderOriginalPicture.import_resource_pictures @provider.id, [@attr]
709 it '画像ライブラリにロードを依頼している' do
710 PettanImager.should_receive(:load).with(any_args).exactly(1)
711 r = ProviderOriginalPicture.import_resource_pictures @provider.id, [@attr]
713 it '対照表モデルに貸手側素材同期を依頼している' do
714 ProviderOriginalPicture.should_receive(:modify_resource_picture).with(any_args).exactly(1)
715 r = ProviderOriginalPicture.import_resource_pictures @provider.id, [@attr]
718 ResourcePicture.any_instance.should_receive(:save).with(any_args).exactly(1)
719 r = ProviderOriginalPicture.import_resource_pictures @provider.id, [@attr]
721 it '素材にgif付き画像ファイルの作成・更新を依頼している' do
722 ResourcePicture.any_instance.should_receive(:store_picture_with_gif).with(any_args).exactly(1)
723 r = ProviderOriginalPicture.import_resource_pictures @provider.id, [@attr]
725 context '素材のカラム値を取得できないとき' do
727 @attr['resource_picture'] = nil
728 ProviderOriginalPicture.stub(:import_resource_picture).with(any_args).and_return(nil)
730 it '素材インポートを依頼していない' do
731 ProviderOriginalPicture.should_not_receive(:import_resource_picture).with(any_args)
732 r = ProviderOriginalPicture.import_resource_pictures @provider.id, [@attr]
736 context 'つつがなく終わるとき' do
738 ProviderOriginalPicture.stub(:replace_original_picture).with(any_args).and_return(true)
739 ProviderOriginalPicture.stub(:replace_artist).with(any_args).and_return(true)
740 ProviderOriginalPicture.stub(:replace_license).with(any_args).and_return(true)
741 Base64.stub(:decode64).with(any_args).and_return("abc\ndef\nghi")
742 PettanImager.stub(:load).with("abc\ndef\nghi").and_return(@imager)
743 @op2 = FactoryGirl.create :original_picture, :artist_id => @artist.id
744 @p2 = FactoryGirl.create :picture, :artist_id => @artist.id, :original_picture_id => @op2.id, :license_id => @license.id, :revision => 0
745 newrpattr = {:original_picture_id => @op2.id, :picture_id => @p2.id, :license_id => @license.id, :artist_id => @artist.id, :artist_name => 'tester',
746 :credit => '{}', :settings => {:reverse => 1, :gif_convert => 1, :thumbnail => 0}.to_json.to_s}
747 @rp2 = FactoryGirl.build :resource_picture, newrpattr
748 @newattr = @op2.attributes
749 @newattr['resource_picture'] = @rp2.attributes
750 @newattr['resource_picture']['picture_data'] = "abc\ndef\nghi"
753 r = ProviderOriginalPicture.import_resource_pictures @provider.id, [@newattr]
758 r = ProviderOriginalPicture.import_resource_pictures @provider.id, [@newattr]
759 }.should change ResourcePicture, :count
763 context '原画id置換に失敗したとき' do
765 ProviderOriginalPicture.stub(:replace_original_picture).with(any_args).and_return(false)
767 it '結果に素材のカラム値を追加している' do
768 r = ProviderOriginalPicture.import_resource_pictures @provider.id, [@attr]
769 r.should_not be_empty
772 context '絵師id置換に失敗したとき' do
774 ProviderOriginalPicture.stub(:replace_original_picture).with(any_args).and_return(true)
775 ProviderOriginalPicture.stub(:replace_artist).with(any_args).and_return(false)
777 it '結果に素材のカラム値を追加している' do
778 r = ProviderOriginalPicture.import_resource_pictures @provider.id, [@attr]
779 r.should_not be_empty
782 context 'ライセンスid置換に失敗したとき' do
784 ProviderOriginalPicture.stub(:replace_original_picture).with(any_args).and_return(true)
785 ProviderOriginalPicture.stub(:replace_artist).with(any_args).and_return(true)
786 ProviderOriginalPicture.stub(:replace_license).with(any_args).and_return(false)
788 it '結果に素材のカラム値を追加している' do
789 r = ProviderOriginalPicture.import_resource_pictures @provider.id, [@attr]
790 r.should_not be_empty
793 context '実素材id置換に失敗したとき' do
795 ProviderOriginalPicture.stub(:replace_original_picture).with(any_args).and_return(true)
796 ProviderOriginalPicture.stub(:replace_artist).with(any_args).and_return(true)
797 ProviderOriginalPicture.stub(:replace_license).with(any_args).and_return(true)
798 ProviderOriginalPicture.stub(:replace_picture).with(any_args).and_return(false)
800 it '結果に素材のカラム値を追加している' do
801 r = ProviderOriginalPicture.import_resource_pictures @provider.id, [@attr]
802 r.should_not be_empty
805 context '画像ライブラリのロードに失敗したとき' do
807 ProviderOriginalPicture.stub(:replace_original_picture).with(any_args).and_return(true)
808 ProviderOriginalPicture.stub(:replace_artist).with(any_args).and_return(true)
809 ProviderOriginalPicture.stub(:replace_license).with(any_args).and_return(true)
810 PettanImager.stub(:load).with(any_args).and_return(false)
812 it '結果に素材のカラム値を追加している' do
813 r = ProviderOriginalPicture.import_resource_pictures @provider.id, [@attr]
814 r.should_not be_empty
817 context '素材の保存に失敗したとき' do
819 ProviderOriginalPicture.stub(:replace_original_picture).with(any_args).and_return(true)
820 ProviderOriginalPicture.stub(:replace_artist).with(any_args).and_return(true)
821 ProviderOriginalPicture.stub(:replace_license).with(any_args).and_return(true)
822 PettanImager.stub(:load).with(any_args).and_return(@imager)
823 ProviderOriginalPicture.stub(:modify_resource_picture).with(any_args).and_return(@rp)
824 ResourcePicture.any_instance.stub(:store_picture_with_gif).with(any_args).and_return(true)
825 ResourcePicture.any_instance.stub(:save).with(any_args).and_return(false)
827 it '結果に素材のカラム値を追加している' do
828 r = ProviderOriginalPicture.import_resource_pictures @provider.id, [@attr]
829 r.should_not be_empty
832 context 'gif付き画像ファイルの作成・更新に失敗したとき' do
834 ProviderOriginalPicture.stub(:replace_original_picture).with(any_args).and_return(true)
835 ProviderOriginalPicture.stub(:replace_artist).with(any_args).and_return(true)
836 ProviderOriginalPicture.stub(:replace_license).with(any_args).and_return(true)
837 PettanImager.stub(:load).with(any_args).and_return(@imager)
838 ProviderOriginalPicture.stub(:modify_resource_picture).with(any_args).and_return(@rp)
839 ResourcePicture.any_instance.stub(:store_picture_with_gif).with(any_args).and_return(false)
841 it '結果に素材のカラム値を追加している' do
842 r = ProviderOriginalPicture.import_resource_pictures @provider.id, [@attr]
843 r.should_not be_empty
848 describe 'インポートに於いて' do
850 @op = FactoryGirl.create :original_picture, :artist_id => @artist.id
851 @p = FactoryGirl.create :picture, :artist_id => @artist.id, :original_picture_id => @op.id, :license_id => @license.id, :revision => 0
852 @opattr = @op.attributes
853 @pattr = @p.attributes
854 @pattr['picture_data'] = "abc\ndef\nghi"
855 @rpattr = {:original_picture_id => @op.id, :picture_id => @p.id, :license_id => @license.id, :artist_id => @artist.id, :artist_name => 'tester',
856 :credit => '{}', :settings => {:reverse => 1, :gif_convert => 1}.to_json.to_s}
857 @opattr['resource_picture'] = @rpattr
858 @opattr['resource_picture']['picture_data'] = "abc\ndef\nghi"
860 context '事前チェックする' do
862 ProviderOriginalPicture.stub(:import_original_pictures).with(any_args).and_return([])
863 ProviderOriginalPicture.stub(:import_pictures).with(any_args).and_return([])
864 ProviderOriginalPicture.stub(:import_resource_pictures).with(any_args).and_return([])
866 it '自身に原画インポートを依頼している' do
867 ProviderOriginalPicture.should_receive(:import_original_pictures).with(any_args).exactly(1)
868 r = ProviderOriginalPicture.import @provider.id, [@opattr], [@pattr]
870 it '自身に実素材インポートを依頼している' do
871 ProviderOriginalPicture.should_receive(:import_pictures).with(any_args).exactly(1)
872 r = ProviderOriginalPicture.import @provider.id, [@opattr], [@pattr]
874 it '自身に素材インポートを依頼している' do
875 ProviderOriginalPicture.should_receive(:import_resource_pictures).with(any_args).exactly(1)
876 r = ProviderOriginalPicture.import @provider.id, [@opattr], [@pattr]
879 context 'つつがなく終わるとき' do
881 ProviderOriginalPicture.stub(:import_original_pictures).with(any_args).and_return([])
882 ProviderOriginalPicture.stub(:import_pictures).with(any_args).and_return([])
883 ProviderOriginalPicture.stub(:import_resource_pictures).with(any_args).and_return([])
885 it '各失敗したカラム値をHashで返す' do
886 r = ProviderOriginalPicture.import @provider.id, [@opattr], [@pattr]
887 r[:original_pictures].should be_empty
888 r[:pictures].should be_empty
889 r[:resource_pictures].should be_empty
893 context '原画インポートに失敗したとき' do
895 ProviderOriginalPicture.stub(:import_original_pictures).with(any_args).and_return([@opattr])
896 ProviderOriginalPicture.stub(:import_pictures).with(any_args).and_return([])
897 ProviderOriginalPicture.stub(:import_resource_pictures).with(any_args).and_return([])
899 it '失敗した原画のカラム値を配列でoriginal_picturesに追加している' do
900 r = ProviderOriginalPicture.import @provider.id, [@opattr], [@pattr]
901 r[:original_pictures].should_not be_empty
902 r[:pictures].should be_empty
903 r[:resource_pictures].should be_empty
906 context '実素材インポートに失敗したとき' do
908 ProviderOriginalPicture.stub(:import_original_pictures).with(any_args).and_return([])
909 ProviderOriginalPicture.stub(:import_pictures).with(any_args).and_return([@pattr])
910 ProviderOriginalPicture.stub(:import_resource_pictures).with(any_args).and_return([])
912 it '失敗した原画のカラム値を配列でpicturesに追加している' do
913 r = ProviderOriginalPicture.import @provider.id, [@opattr], [@pattr]
914 r[:original_pictures].should be_empty
915 r[:pictures].should_not be_empty
916 r[:resource_pictures].should be_empty
919 context '素材インポートに失敗したとき' do
921 ProviderOriginalPicture.stub(:import_original_pictures).with(any_args).and_return([])
922 ProviderOriginalPicture.stub(:import_pictures).with(any_args).and_return([])
923 ProviderOriginalPicture.stub(:import_resource_pictures).with(any_args).and_return([@rpattr])
925 it '失敗した原画のカラム値を配列でresource_picturesに追加している' do
926 r = ProviderOriginalPicture.import @provider.id, [@opattr], [@pattr]
927 r[:original_pictures].should be_empty
928 r[:pictures].should be_empty
929 r[:resource_pictures].should_not be_empty