From ebc737a8fca36b965e53899182f4ab7ccbd74b0d Mon Sep 17 00:00:00 2001
From: yasushiito
+ <%= t_m 'DemandUser.authentication_token' -%> + <%= (@demander.demand_user.authentication_token) if @demander.demand_user.authentication_token %> +
+<%= t_m 'DemanderStatus.receive_hour1' -%> <%= h(@demander.demander_status.receive_hour1) %>
diff --git a/app/views/provider_statuses/licenses_import.html.erb b/app/views/provider_statuses/licenses_import.html.erb new file mode 100644 index 00000000..eb414cc3 --- /dev/null +++ b/app/views/provider_statuses/licenses_import.html.erb @@ -0,0 +1,29 @@ +<%= notice %>
+ +<% if @failures.empty? %> +<%= t_m 'License.caption' -%> | +<%= t_m 'License.name' -%> | +
---|---|
+ <%= link_to h(license['caption']), license['url'] %> + | ++ <%= h(license['name']) %> + | +
<%= link_to t('provider_statuses.show.demander_open'), @provider_status.provider.demander_url %> -
- -
- <%= t('provider_statuses.show.receive_announce') %>
-- <% if @provider_status.status == 0 %> - <%= link_to t('provider_statuses.show.receive_start'), edit_provider_status_path(@provider_status) %> - <% else %> + +<% if @provider_status.status == 0 %> +
+ <%= t('provider_statuses.show.receive_announce') %> +
+ <%= link_to t('provider_statuses.show.receive_start'), edit_provider_status_path(@provider_status) %> +<% else %> ++ <%= link_to t('provider_statuses.show.licenses_import'), licenses_import_provider_status_path(@provider_status), :method => :post %> +
+<%= link_to t('provider_statuses.show.receive_stop'), provider_status_path(@provider_status), :method => :delete %> - <% end %> -
+ +<% end %> <%= link_to t('link.back'), provider_statuses_path %> diff --git a/config/environment.rb b/config/environment.rb index 89544d5b..a175c5d7 100644 --- a/config/environment.rb +++ b/config/environment.rb @@ -1,6 +1,7 @@ # Load the rails application require File.expand_path('../application', __FILE__) require 'RMagick' +require 'rest_client' # Initialize the rails application Pettanr::Application.initialize! diff --git a/config/locales/pettanr.ja.yml b/config/locales/pettanr.ja.yml index 57471073..9ab78885 100644 --- a/config/locales/pettanr.ja.yml +++ b/config/locales/pettanr.ja.yml @@ -257,6 +257,9 @@ ja: created_at: ä½æ updated_at: æ´æ° provider_license: + provider_id: 貸æ + providers_license_id: 貸æå´ã©ã¤ã»ã³ã¹ + demanders_license_id: åæå´ã©ã¤ã»ã³ã¹ created_at: ä½æ updated_at: æ´æ° provider_artist: @@ -622,10 +625,16 @@ ja: receive_announce: ååããã«ã¯åæã¨ãªã£ã¦ååç³è«ããã receive_start: ãã®è²¸æããã®ååãéå§ãã receive_stop: ååãåæ¢ãã + licenses_import: ã©ã¤ã»ã³ã¹ãã¤ã³ãã¼ããã new: title: ååç¶æ³ç»é² edit: title: ååç¶æ³ç·¨é + licenses_import: + title: ã©ã¤ã»ã³ã¹ã¤ã³ãã¼ã + success: ã¤ã³ãã¼ããå®äºãã¾ãã + fail: 次ã®ã©ã¤ã»ã³ã¹(%{size}件)ã§ã¨ã©ã¼ãããã¾ãããã©ã¤ã»ã³ã¹ã®ã¤ã³ã¹ãã¼ã«ç¶æ³ã確èªãã¦ãã ããã + to_show: ååç¶æ³ã表示ãã status: ç¶æ open: éã to_provider: 貸æã«åãæ¿ãã diff --git a/config/routes.rb b/config/routes.rb index 0bbd8ad7..f0b5e89f 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -298,6 +298,7 @@ Pettanr::Application.routes.draw do get :edit put :update delete :destroy + post :licenses_import end end resources :demanders do @@ -311,6 +312,7 @@ Pettanr::Application.routes.draw do get :list get :browse post :req + get :licenses_export end member do get :edit diff --git a/db/migrate/20121215010935_create_provider_licenses.rb b/db/migrate/20121215010935_create_provider_licenses.rb new file mode 100644 index 00000000..52c1d868 --- /dev/null +++ b/db/migrate/20121215010935_create_provider_licenses.rb @@ -0,0 +1,11 @@ +class CreateProviderLicenses < ActiveRecord::Migration + def change + create_table :provider_licenses do |t| + t.integer :provider_id, :null => false, :default => 0 + t.integer :providers_license_id, :null => false, :default => 0 + t.integer :demanders_license_id, :null => false, :default => 0 + + t.timestamps + end + end +end diff --git a/spec/controllers/demanders_controller_spec.rb b/spec/controllers/demanders_controller_spec.rb index c5f513f7..ed7b6f01 100644 --- a/spec/controllers/demanders_controller_spec.rb +++ b/spec/controllers/demanders_controller_spec.rb @@ -550,7 +550,7 @@ describe DemandersController do end end end - context '管çè 権éããªãã¨ã' do + context 'åæ権éããªãã¨ã' do before do sign_out @demand_user end @@ -601,5 +601,88 @@ describe DemandersController do end end end - + + describe 'ã©ã¤ã»ã³ã¹ã¨ã¯ã¹ãã¼ãã«æ¼ãã¦' do + before do + @ds = FactoryGirl.create :demander_status + @demander = FactoryGirl.create :demander, :demander_status_id => @ds.id, :demand_user_id => @demand_user.id + sign_in @demand_user + end + context 'ã¤ã¤ããªãçµããã¨ã' do + before do + Demander.any_instance.stub(:licenses_export).with(any_args).and_return([@license, @license, @license]) + end + it 'ã¹ãã¼ã¿ã¹ã³ã¼ã200 OKãè¿ã' do + get :licenses_export, :format => :json + response.should be_success + end + it 'æ¥ä»æååå¤æãä¾é ¼ãã¦ãã' do + DemandersController.any_instance.should_receive(:ymd_to_time).with('20111010').exactly(1) + get :licenses_export, :date => '20111010', :format => :json + end + it 'åæã¢ãã«ã«ã©ã¤ã»ã³ã¹ã¨ã¯ã¹ãã¼ããåãåããã¦ãã' do + Demander.any_instance.should_receive(:licenses_export).with(Time.parse('2011/10/10')).exactly(1) + get :licenses_export, :date => '20111010', :format => :json + end + it '@licensesã«ãªã¹ããåå¾ãã¦ãã' do + get :licenses_export, :format => :json + assigns(:licenses).should have_at_least(3).items + end + context 'htmlå½¢å¼' do + end + context 'jsonå½¢å¼' do + it 'jsonãã¼ã¿ãè¿ã' do + get :licenses_export, :format => :json + lambda{JSON.parse(response.body)}.should_not raise_error(JSON::ParserError) + end + it 'ãã¼ã¿ããªã¹ãæ§é ã«ãªã£ã¦ãã' do + get :licenses_export, :format => :json + json = JSON.parse response.body + json.should have_at_least(3).items + end + it 'ãªã¹ãã®å é ãããã¯ã©ã¤ã»ã³ã¹ã£ã½ããã®ã§ãã£ã¦æ¬²ãã' do + get :licenses_export, :format => :json + json = JSON.parse response.body + json.first.has_key?("name").should be_true + json.first.has_key?("caption").should be_true + json.first.has_key?("url").should be_true + end + end + end + context 'åæ権éããªãã¨ã' do + before do + sign_out @demand_user + end + it 'ã¹ãã¼ã¿ã¹ã³ã¼ã302 Foundãè¿ã' do + get :licenses_export + response.status.should eq 302 + end + context 'htmlå½¢å¼' do + it 'ãµã¤ã³ã¤ã³ãã¼ã¸ã¸é·ç§»ãã' do + get :licenses_export + response.body.should redirect_to '/demand_users/sign_in' + end + end + context 'jsonå½¢å¼' do + it 'å¿çã¡ãã»ã¼ã¸ã«Unauthorizedãè¿ã' do + get :licenses_export, :format => :json + response.message.should match(/Unauthorized/) + end + end + end + context 'åå権éããªãã¨ã' do + before do + Demander.any_instance.stub(:status).and_return(1) + end + context 'htmlå½¢å¼' do + end + context 'jsonå½¢å¼' do + it 'ã¹ãã¼ã¿ã¹ã³ã¼ã403 forbiddenãè¿ã' do + lambda{ + get :licenses_export, :format => :json + }.should raise_error(ActiveRecord::Forbidden) + end + end + end + end end diff --git a/spec/controllers/licenses_controller_spec.rb b/spec/controllers/licenses_controller_spec.rb index 4888255d..8085a255 100644 --- a/spec/controllers/licenses_controller_spec.rb +++ b/spec/controllers/licenses_controller_spec.rb @@ -18,7 +18,7 @@ describe LicensesController do sign_in @user License.stub(:list).and_return([@l, @l, @l]) end - context 'ã¤ã¤ããªãçµããã¨ã' do + context 'ã¤ã¤ããªãçµããã¨ã' do it 'ã¹ãã¼ã¿ã¹ã³ã¼ã200 OKãè¿ã' do get :index response.should be_success diff --git a/spec/controllers/provider_statuses_controller_spec.rb b/spec/controllers/provider_statuses_controller_spec.rb index e70216a8..ed08f0ef 100644 --- a/spec/controllers/provider_statuses_controller_spec.rb +++ b/spec/controllers/provider_statuses_controller_spec.rb @@ -357,5 +357,122 @@ describe ProviderStatusesController do end end end - + + describe 'ã©ã¤ã»ã³ã¹ã¤ã³ãã¼ãã«æ¼ãã¦' do + before do + @ps = FactoryGirl.create :provider_status, :token => 'aaaaaaaaaaaaaaaaa' + @provider = FactoryGirl.create :provider, :provider_status_id => @ps.id + ProviderStatus.stub(:show).and_return(@ps) + sign_in @admin + end + context 'äºåãã§ãã¯ãã¦ãã' do + before do + ProviderStatus.any_instance.stub(:status).with(any_args).and_return(1) + ProviderStatusesController.any_instance.stub(:ymd_to_time).with(any_args).and_return(nil) + ProviderStatusesController.any_instance.stub(:export_url).with(any_args).and_return(@ps) + ProviderStatusesController.any_instance.stub(:export_from_provider).with(any_args).and_return([@license.attributes]) + ProviderLicense.stub(:import).with(any_args).and_return([]) + end + it 'ååç¶æ³ã¢ãã«ã«åä½åå¾ãåãåããã¦ãã' do + ProviderStatus.should_receive(:show).exactly(1) + get :licenses_import, :id => @ps.id + end + it 'æ¥ä»æååå¤æãä¾é ¼ãã¦ãã' do + ProviderStatusesController.any_instance.should_receive(:ymd_to_time).with('20111010').exactly(1) + get :licenses_import, :id => @ps.id, :date => '20111010' + end + it 'ã¨ã¯ã¹ãã¼ãurlåå¾ãä¾é ¼ãã¦ãã' do + ProviderStatusesController.any_instance.stub(:ymd_to_time).with('20111010').and_return(Time.parse('2011/10/10')) + ProviderStatusesController.any_instance.should_receive(:export_url).with(@provider.demander_url, @ps.token, Time.parse('2011/10/10')).exactly(1) + get :licenses_import, :id => @ps.id, :date => '20111010' + end + it '貸æããã®ã¨ã¯ã¹ãã¼ããä¾é ¼ãã¦ãã' do + ProviderStatusesController.any_instance.should_receive(:export_from_provider).exactly(1) + get :licenses_import, :id => @ps.id + end + it 'ã©ã¤ã»ã³ã¹å¯¾ç §è¡¨ã¢ãã«ã«ã¤ã³ãã¼ããä¾é ¼ãã¦ãã' do + ProviderLicense.should_receive(:import).exactly(1) + get :licenses_import, :id => @ps.id + end + end + context 'ã¤ã¤ããªãçµããã¨ã' do + before do + ProviderStatus.any_instance.stub(:status).with(any_args).and_return(1) + ProviderStatusesController.any_instance.stub(:ymd_to_time).with('20111010').and_return(Time.parse('2011/10/10')) + ProviderStatusesController.any_instance.stub(:ymd_to_time).with(any_args).and_return(nil) + ProviderStatusesController.any_instance.stub(:export_url).with(any_args).and_return(@ps) + ProviderStatusesController.any_instance.stub(:export_from_provider).with(any_args).and_return([@license.attributes]) + ProviderLicense.stub(:import).with(any_args).and_return([]) + end + it 'ã¹ãã¼ã¿ã¹ã³ã¼ã200 OKãè¿ã' do + get :licenses_import, :id => @ps.id + response.should be_success + end + it '@provider_statusã«ååç¶æ³ãåå¾ãã¦ãã' do + get :licenses_import, :id => @ps.id + assigns(:provider_status).should eq(@ps) + end + it '@failuresã«ã¤ã³ãã¼ã失æãªã¹ããåå¾ãã¦ãã' do + get :licenses_import, :id => @ps.id + assigns(:failures).should eq([]) + end + context 'htmlå½¢å¼' do + it 'licenses_importãã³ãã¬ã¼ããæç»ãã' do + get :licenses_import, :id => @ps.id + response.should render_template("licenses_import") + end + end + context 'jsonå½¢å¼' do + it 'jsonãã¼ã¿ãè¿ã' do + get :licenses_import, :id => @ps.id, :format => :json + lambda{JSON.parse(response.body)}.should_not raise_error(JSON::ParserError) + end + end + end + context '管çè 権éããªãã¨ã' do + before do + sign_out @admin + end + context 'htmlå½¢å¼' do + it 'ã¹ãã¼ã¿ã¹ã³ã¼ã302 Foundãè¿ã' do + get :licenses_import, :id => @ps.id + response.status.should eq 302 + end + it 'ãµã¤ã³ã¤ã³ãã¼ã¸ã¸é·ç§»ãã' do + get :licenses_import, :id => @ps.id + response.body.should redirect_to '/admins/sign_in' + end + end + context 'jsonå½¢å¼' do + it 'ã¹ãã¼ã¿ã¹ã³ã¼ã401 Unauthorizedãè¿ã' do + get :licenses_import, :id => @ps.id, :format => :json + response.status.should eq 401 + end + it 'å¿çã¡ãã»ã¼ã¸ã«Unauthorizedãè¿ã' do + get :licenses_import, :id => @ps.id, :format => :json + response.message.should match(/Unauthorized/) + end + end + end + context 'åå権éããªãã¨ã' do + before do + ProviderStatus.any_instance.stub(:status).and_return(0) + end + context 'htmlå½¢å¼' do + it 'ä¾å¤403 forbiddenãè¿ã' do + lambda{ + get :licenses_import, :id => @ps.id + }.should raise_error(ActiveRecord::Forbidden) + end + end + context 'jsonå½¢å¼' do + it 'ä¾å¤403 forbiddenãè¿ã' do + lambda{ + get :licenses_import, :id => @ps.id, :format => :json + }.should raise_error(ActiveRecord::Forbidden) + end + end + end + end + end diff --git a/spec/factories.rb b/spec/factories.rb index 5c940d96..2fe602a5 100644 --- a/spec/factories.rb +++ b/spec/factories.rb @@ -243,4 +243,10 @@ FactoryGirl.define do demander_status.receive_hour1 nil demander_status.receive_hour2 nil end + + factory :provider_license, :class => ProviderLicense do |provider_license| + provider_license.provider_id nil + provider_license.providers_license_id nil + provider_license.demanders_license_id nil + end end diff --git a/spec/models/demander_spec.rb b/spec/models/demander_spec.rb index da6c9cea..525e7175 100644 --- a/spec/models/demander_spec.rb +++ b/spec/models/demander_spec.rb @@ -497,4 +497,51 @@ describe Demander do end end end + + describe 'ã©ã¤ã»ã³ã¹ã¨ã¯ã¹ãã¼ãã«æ¼ãã¦' do + before do + @ds = FactoryGirl.create :demander_status, :requested_at => Time.now, :approved_at => Time.now, :rejected_at => Time.now, :receive_hour1 => 0, :receive_hour2 => 0 + @demander = FactoryGirl.create :demander, :demander_status_id => @ds.id + end + context 'äºåãã§ãã¯ãã' do + before do + Demander.any_instance.stub(:status).and_return(3) + end + it 'ã©ã¤ã»ã³ã¹ã¢ãã«ã«ã¨ã¯ã¹ãã¼ããä¾é ¼ãã¦ãã' do + License.stub(:export).with(nil).and_return([@license]) + License.should_receive(:export).with(nil).exactly(1) + r = @demander.licenses_export + end + end + context 'ã¤ã¤ããªãçµããã¨ã' do + before do + Demander.any_instance.stub(:status).and_return(3) + end + it 'ã©ã¤ã»ã³ã¹ãªã¹ããè¿ã' do + License.stub(:export).with(Time.parse('2011/10/10')).and_return([@license]) + r = @demander.licenses_export Time.parse('2011/10/10') + r.should eq [@license] + end + end + context 'æ¥ææå®ããªãã¨ã' do + before do + Demander.any_instance.stub(:status).and_return(3) + end + it 'ãã©ã¡ã¼ã¿ãªãã§ãªã¹ããåå¾ãã' do + License.stub(:export).with(nil).and_return([@license]) + License.should_receive(:export).with(nil).exactly(1) + r = @demander.licenses_export nil + end + end + #ä¾å¤ã±ã¼ã¹ + context 'ç¶æ ã貸ä¸ä¸ã§ãªãã¨ã' do + it 'ä¾å¤403 ActiveRecord::Forbiddenãçºçããã' do + Demander.any_instance.stub(:status).and_return(2) + lambda{ + r = @demander.licenses_export + }.should raise_error(ActiveRecord::Forbidden) + end + end + end + end diff --git a/spec/models/license_spec.rb b/spec/models/license_spec.rb index a81390fb..e0dafd4e 100644 --- a/spec/models/license_spec.rb +++ b/spec/models/license_spec.rb @@ -32,14 +32,14 @@ describe License do @l.license_group_id = '' @l.should_not be_valid end - it 'æ°å¤ã§ãªããã°å¤±æãã' do - @l.license_group_id = 'a' - @l.should_not be_valid - end - it 'åå¨ããã©ã¤ã»ã³ã¹ã°ã«ã¼ãã§ãªããã°å¤±æãã' do - @l.license_group_id = 0 - @l.should_not be_valid - end + it 'æ°å¤ã§ãªããã°å¤±æãã' do + @l.license_group_id = 'a' + @l.should_not be_valid + end + it 'åå¨ããã©ã¤ã»ã³ã¹ã°ã«ã¼ãã§ãªããã°å¤±æãã' do + @l.license_group_id = 0 + @l.should_not be_valid + end end context 'nameãæ¤è¨¼ããã¨ã' do it 'nullãªã失æãã' do @@ -75,8 +75,8 @@ describe License do @l.should_not be_valid end it 'urlå½¢å¼ã§ãªããªã失æãã' do - @l.url = 'a'*200 - @l.should_not be_valid + @l.url = 'a'*200 + @l.should_not be_valid end end context 'system_picture_idãæ¤è¨¼ããã¨ã' do @@ -84,14 +84,14 @@ describe License do @l.system_picture_id = '' @l.should_not be_valid end - it 'æ°å¤ã§ãªããã°å¤±æãã' do - @l.system_picture_id = 'a' - @l.should_not be_valid - end - it 'åå¨ããã·ã¹ãã ç»åã§ãªããã°å¤±æãã' do - @l.system_picture_id = 0 - @l.should_not be_valid - end + it 'æ°å¤ã§ãªããã°å¤±æãã' do + @l.system_picture_id = 'a' + @l.should_not be_valid + end + it 'åå¨ããã·ã¹ãã ç»åã§ãªããã°å¤±æãã' do + @l.system_picture_id = 0 + @l.should_not be_valid + end end end @@ -124,13 +124,13 @@ describe License do @l = FactoryGirl.create :license, :name => 'peta2.0', :license_group_id => @lg.id, :system_picture_id => @sp.id @lg2 = FactoryGirl.create :license_group, :name => 'pubdm' end - context 'ã¤ã¤ããªãçµããã¨ã' do - it 'ä¸è¦§åå¾ãªãã·ã§ã³ãå©ç¨ãã¦ãã' do - License.stub(:list_opt).with(any_args).and_return({}) - License.should_receive(:list_opt).with(any_args).exactly(1) + context 'ã¤ã¤ããªãçµããã¨ã' do + it 'ä¸è¦§åå¾ãªãã·ã§ã³ãå©ç¨ãã¦ãã' do + License.stub(:list_opt).with(any_args).and_return({}) + License.should_receive(:list_opt).with(any_args).exactly(1) r = License.list - end - end + end + end it 'ãªã¹ããè¿ã' do l = License.list l.should eq [@l] @@ -176,24 +176,24 @@ describe License do @lg = FactoryGirl.create :license_group @l = FactoryGirl.create :license, :license_group_id => @lg.id, :system_picture_id => @sp.id end - context 'ã¤ã¤ããªãçµããã¨ã' do - it 'åä½åå¾ãªãã·ã§ã³ãå©ç¨ãã¦ãã' do - License.stub(:show_opt).with(any_args).and_return({}) - License.should_receive(:show_opt).with(any_args).exactly(1) + context 'ã¤ã¤ããªãçµããã¨ã' do + it 'åä½åå¾ãªãã·ã§ã³ãå©ç¨ãã¦ãã' do + License.stub(:show_opt).with(any_args).and_return({}) + License.should_receive(:show_opt).with(any_args).exactly(1) r = License.show @l.id - end - end + end + end it 'æå®ã®ã©ã¤ã»ã³ã¹ãè¿ã' do l = License.show @l.id l.should eq @l end - context 'åå¨ããªãã©ã¤ã»ã³ã¹ãéããã¨ããã¨ã' do - it '404RecordNotFoundä¾å¤ãè¿ã' do - lambda{ - License.show 110 - }.should raise_error(ActiveRecord::RecordNotFound) - end - end + context 'åå¨ããªãã©ã¤ã»ã³ã¹ãéããã¨ããã¨ã' do + it '404RecordNotFoundä¾å¤ãè¿ã' do + lambda{ + License.show 110 + }.should raise_error(ActiveRecord::RecordNotFound) + end + end end describe 'åä½åå¾ãªãã·ã§ã³ã«æ¼ãã¦' do it 'includeãã¼ãå«ãã§ãã' do @@ -341,4 +341,21 @@ describe License do end end + describe 'ã¨ã¯ã¹ãã¼ãã«æ¼ãã¦' do + before do + @sp = FactoryGirl.create :system_picture + @lg = FactoryGirl.create :license_group + @l = FactoryGirl.create :license, :license_group_id => @lg.id, :system_picture_id => @sp.id + @l2 = FactoryGirl.create :license, :name => 'l2[old ls]', :url => @l.url+'2', :license_group_id => @lg.id, :system_picture_id => @sp.id, :updated_at => Time.now - 3000 + end + it 'éå§æ¥æãçç¥ãããå ´åã¯ãã¹ã¦ã®ã©ã¤ã»ã³ã¹ãè¿ã' do + r = License.export + r.should eq [@l, @l2] + end + it 'éå§æ¥æ以éã«æ´æ°ãããã©ã¤ã»ã³ã¹ãè¿ã' do + r = License.export @l.updated_at - 100 + r.should eq [@l] + end + end + end diff --git a/spec/models/provider_license_spec.rb b/spec/models/provider_license_spec.rb new file mode 100644 index 00000000..50501fcf --- /dev/null +++ b/spec/models/provider_license_spec.rb @@ -0,0 +1,146 @@ +# -*- encoding: utf-8 -*- +#ã©ã¤ã»ã³ã¹å¯¾ç §è¡¨ +require 'spec_helper' + +describe ProviderLicense do + before do + @admin = FactoryGirl.create :admin + @sp = FactoryGirl.create :system_picture + @lg = FactoryGirl.create :license_group + @license = FactoryGirl.create :license, :license_group_id => @lg.id, :system_picture_id => @sp.id + @user = FactoryGirl.create :user_yas + @author = @user.author #ã¦ã¼ã¶ä½ææã«é£åãã¦ä½æããã + @provider_status = FactoryGirl.create :provider_status + @provider = FactoryGirl.create :provider, :provider_status_id => @provider_status.id + end + describe 'æ¤è¨¼ã«æ¼ãã¦' do + before do + @pl = FactoryGirl.build :provider_license, :provider_id => @provider.id, :providers_license_id => 2, :demanders_license_id => @license.id + end + + context 'ãªã¼ã½ããã¯ã¹ãªãã¼ã¿ã®ã¨ã' do + it 'ä¸éãã¼ã¿ãéã' do + @pl.should be_valid + end + it 'ä¸éãã¼ã¿ãéã' do + @pl.should be_valid + end + end + + context 'provider_idãæ¤è¨¼ããã¨ã' do + it 'nullãªã失æãã' do + @pl.provider_id = nil + @pl.should_not be_valid + end + it 'æ°å¤ã§ãªããã°å¤±æãã' do + @pl.provider_id = 'a' + @pl.should_not be_valid + end + it 'åå¨ãã貸æã¦ã¼ã¶ã§ãªããã°å¤±æãã' do + @pl.provider_id = 0 + @pl.should_not be_valid + end + end + context 'providers_license_idãæ¤è¨¼ããã¨ã' do + it 'nullãªã失æãã' do + @pl.providers_license_id = nil + @pl.should_not be_valid + end + it 'æ°å¤ã§ãªããã°å¤±æãã' do + @pl.providers_license_id = 'a' + @pl.should_not be_valid + end + end + context 'demanders_license_idãæ¤è¨¼ããã¨ã' do + it 'nullãªã失æãã' do + @pl.demanders_license_id = nil + @pl.should_not be_valid + end + it 'æ°å¤ã§ãªããã°å¤±æãã' do + @pl.demanders_license_id = 'a' + @pl.should_not be_valid + end + end + end + + describe 'å¯¾ç §è¡¨åå¾ã«æ¼ãã¦' do + before do + @pl = FactoryGirl.create :provider_license, :provider_id => @provider.id, :providers_license_id => 2, :demanders_license_id => @license.id + end + it 'åå¾ã§ããã°çãè¿ã' do + r = ProviderLicense.exist_license @provider.id, 2 + r.should be_true + end + it 'åå¾ã§ããªããã°å½ãè¿ã' do + r = ProviderLicense.exist_license @provider.id, 1 + r.should be_false + r = ProviderLicense.exist_license 0, 2 + r.should be_false + end + end + + describe 'ã¤ã³ãã¼ãã«æ¼ãã¦' do + before do + @license2 = FactoryGirl.create :license, :license_group_id => @lg.id, :system_picture_id => @sp.id, :name => 'license2', :url => 'http://licen.se/2' + end + context 'äºåãã§ãã¯ãã' do + it 'å¯¾ç §è¡¨åå¾ãåãåããã¦ãã' do + ProviderLicense.stub(:exist_license).with(any_args).and_return(true) + ProviderLicense.should_receive(:exist_license).with(any_args).exactly(1) + r = ProviderLicense.import @provider.id, [@license.attributes] + end + it 'ã©ã¤ã»ã³ã¹ã¢ãã«ã«ç®¡çååå¾ãä¾é ¼ãã¦ãã' do + License.stub(:find_by_name).with(any_args).and_return(@license) + License.should_receive(:find_by_name).with(any_args).exactly(1) + r = ProviderLicense.import @provider.id, [@license.attributes] + end + it 'å¯¾ç §è¡¨ãªãã¸ã§ã¯ããä¿åãã¦ãã' do + ProviderLicense.any_instance.stub(:save).with(any_args).and_return(true) + ProviderLicense.any_instance.should_receive(:save).with(any_args).exactly(1) + r = ProviderLicense.import @provider.id, [@license.attributes] + end + end + context 'ã¤ã¤ããªãçµããã¨ã' do + it '空ã£ã½ã®é åãè¿ã' do + r = ProviderLicense.import @provider.id, [@license.attributes] + r.should be_empty + end + it 'å¯¾ç §è¡¨ã追å ããã' do + lambda { + r = ProviderLicense.import @provider.id, [@license.attributes] + }.should change ProviderLicense, :count + end + end + context 'è¤æ°ã¤ã³ãã¼ãã®ã¨ã' do + it '空ã£ã½ã®é åãè¿ã' do + r = ProviderLicense.import @provider.id, [@license.attributes, @license2.attributes] + r.should be_empty + end + it 'å¯¾ç §è¡¨ã追å ããã' do + lambda { + r = ProviderLicense.import @provider.id, [@license.attributes, @license2.attributes] + }.should change(ProviderLicense, :count).by(2) + end + end + #è¦åã±ã¼ã¹ + context 'å¯¾ç §è¡¨ãªãã¸ã§ã¯ãã®ä¿åã«å¤±æããã¨ã' do + before do + ProviderLicense.any_instance.stub(:save).with(any_args).and_return(false) + end + it 'çµæã«è²¸æå´ã©ã¤ã»ã³ã¹ã®ã«ã©ã å¤ã追å ãã¦ãã' do + r = ProviderLicense.import @provider.id, [@license.attributes] + r.should_not be_empty + end + end + context 'ã©ã¤ã»ã³ã¹ã®ç®¡çååå¾ã«å¤±æããã¨ã' do + before do + License.stub(:find_by_name).with(any_args).and_return(nil) + end + it 'çµæã«è²¸æå´ã©ã¤ã»ã³ã¹ã®ã«ã©ã å¤ã追å ãã¦ãã' do + r = ProviderLicense.import @provider.id, [@license.attributes] + r.should_not be_empty + end + end + end +end + -- 2.11.0