1 # -*- encoding: utf-8 -*-
5 describe ProviderLicense 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 = @user.author #ユーザ作成時に連動して作成される
13 @provider_status = FactoryGirl.create :provider_status
14 @provider = FactoryGirl.create :provider, :provider_status_id => @provider_status.id
18 @pl = FactoryGirl.build :provider_license, :provider_id => @provider.id, :providers_license_id => 2, :demanders_license_id => @license.id
21 context 'オーソドックスなデータのとき' do
30 context 'provider_idを検証するとき' do
33 @pl.should_not be_valid
37 @pl.should_not be_valid
39 it '存在する貸手でなければ失敗する' do
41 @pl.should_not be_valid
44 context 'providers_license_idを検証するとき' do
46 @pl.providers_license_id = nil
47 @pl.should_not be_valid
50 @pl.providers_license_id = 'a'
51 @pl.should_not be_valid
54 context 'demanders_license_idを検証するとき' do
56 @pl.demanders_license_id = nil
57 @pl.should_not be_valid
60 @pl.demanders_license_id = 'a'
61 @pl.should_not be_valid
66 describe '対照表取得に於いて' do
68 @pl = FactoryGirl.create :provider_license, :provider_id => @provider.id, :providers_license_id => 2, :demanders_license_id => @license.id
71 r = ProviderLicense.exist_license @provider.id, 2
75 r = ProviderLicense.exist_license @provider.id, 1
77 r = ProviderLicense.exist_license 0, 2
82 describe 'インポートに於いて' do
84 @license2 = FactoryGirl.create :license, :license_group_id => @lg.id, :system_picture_id => @sp.id, :name => 'license2', :url => 'http://licen.se/2'
87 it '対照表取得を問い合わせている' do
88 ProviderLicense.stub(:exist_license).with(any_args).and_return(true)
89 ProviderLicense.should_receive(:exist_license).with(any_args).exactly(1)
90 r = ProviderLicense.import @provider.id, [@license.attributes]
92 it 'ライセンスモデルに管理名取得を依頼している' do
93 License.stub(:find_by_name).with(any_args).and_return(@license)
94 License.should_receive(:find_by_name).with(any_args).exactly(1)
95 r = ProviderLicense.import @provider.id, [@license.attributes]
97 it '対照表オブジェクトを保存している' do
98 ProviderLicense.any_instance.stub(:save).with(any_args).and_return(true)
99 ProviderLicense.any_instance.should_receive(:save).with(any_args).exactly(1)
100 r = ProviderLicense.import @provider.id, [@license.attributes]
103 context 'つつがなく終わるとき' do
104 it 'ImportResultを返す' do
105 r = ProviderLicense.import @provider.id, [@license.attributes]
106 r.is_a?(ImportResult).should be_true
111 r = ProviderLicense.import @provider.id, [@license.attributes]
112 }.should change ProviderLicense, :count
115 context '複数インポートのとき' do
116 it 'ImportResultを返す' do
117 r = ProviderLicense.import @provider.id, [@license.attributes, @license2.attributes]
118 r.is_a?(ImportResult).should be_true
123 r = ProviderLicense.import @provider.id, [@license.attributes, @license2.attributes]
124 }.should change(ProviderLicense, :count).by(2)
128 context '対照表オブジェクトの保存に失敗したとき' do
130 ProviderLicense.any_instance.stub(:save).with(any_args).and_return(false)
133 r = ProviderLicense.import @provider.id, [@license.attributes]
134 r.should_not be_success
135 r.failures.should_not be_empty
138 context 'ライセンスの管理名取得に失敗したとき' do
140 License.stub(:find_by_name).with(any_args).and_return(nil)
143 r = ProviderLicense.import @provider.id, [@license.attributes]
144 r.should_not be_success
145 r.failures.should_not be_empty