diff options
| author | Robert | 2017-11-15 17:15:24 +0100 |
|---|---|---|
| committer | Robert | 2017-11-17 14:49:19 +0100 |
| commit | 2b925fe2bf8f33a0d10dfe1307b086d9e3f0add4 (patch) | |
| tree | 877a1b225c4387c4f51807d26599592e8f506b22 | |
| parent | 21ddaefb9fc092463261284b0b7b493709201a3b (diff) | |
| download | chouette-core-2b925fe2bf8f33a0d10dfe1307b086d9e3f0add4.tar.bz2 | |
Fixes: #4461@2h; Specing and Implementing
| -rw-r--r-- | app/controllers/api/v1/netex_imports_controller.rb | 6 | ||||
| -rw-r--r-- | app/models/netex_import.rb | 27 | ||||
| -rw-r--r-- | spec/models/import/netex_import_spec.rb | 23 |
3 files changed, 32 insertions, 24 deletions
diff --git a/app/controllers/api/v1/netex_imports_controller.rb b/app/controllers/api/v1/netex_imports_controller.rb index 0934ce915..8e8c48986 100644 --- a/app/controllers/api/v1/netex_imports_controller.rb +++ b/app/controllers/api/v1/netex_imports_controller.rb @@ -30,11 +30,7 @@ module Api def create_netex_import attributes = netex_import_params.merge creator: "Webservice" - if @new_referential.persisted? - attributes = attributes.merge referential_id: @new_referential.id - else - attributes = attributes.merge status: "aborted" - end + attributes = attributes.merge referential_id: @new_referential.id @netex_import = NetexImport.new attributes @netex_import.save! diff --git a/app/models/netex_import.rb b/app/models/netex_import.rb index b0033264d..535ca58f3 100644 --- a/app/models/netex_import.rb +++ b/app/models/netex_import.rb @@ -1,21 +1,17 @@ require 'net/http' class NetexImport < Import - after_commit :launch_java_import, on: :create before_destroy :destroy_non_ready_referential + after_commit :launch_java_import, on: :create + before_save def abort_unless_referential + self.status = 'aborted' unless referential + end + validates_presence_of :parent def launch_java_import return if self.class.finished_statuses.include?(status) - - Thread.new do - begin - Net::HTTP.get(URI("#{Rails.configuration.iev_url}/boiv_iev/referentials/importer/new?id=#{id}")) - rescue Exception => e - logger.error "IEV server error : #{e.message}" - logger.error e.backtrace.inspect - end - end + threaded_call_boiv_iev end private @@ -26,4 +22,15 @@ class NetexImport < Import end end + def threaded_call_boiv_iev + Thread.new(&method(:call_boiv_iev)) + end + + def call_boiv_iev + Net::HTTP.get(URI("#{Rails.configuration.iev_url}/boiv_iev/referentials/importer/new?id=#{id}")) + rescue Exception => e + logger.error "IEV server error : #{e.message}" + logger.error e.backtrace.inspect + end + end diff --git a/spec/models/import/netex_import_spec.rb b/spec/models/import/netex_import_spec.rb index e15fbb977..b23abf776 100644 --- a/spec/models/import/netex_import_spec.rb +++ b/spec/models/import/netex_import_spec.rb @@ -1,23 +1,28 @@ RSpec.describe NetexImport, type: :model do + let( :invoked_calls ){ [] } + + let( :http_service ){ double 'Net::HTTP' } + before do + stub_const 'Net::HTTP', http_service + allow(http_service).to receive( :get ){ invoked_calls << :called } + end context 'with referential' do + subject { build :netex_import } it 'will trigger the Java API' do - + subject.save + expect( invoked_calls ).to eq([:called]) end end context 'without referential' do subject { build :netex_import, referential_id: nil } - it 'is aborted if it does not have a referential' do - require 'pry'; binding.pry - - - end - - it 'will not trigger the Java API' do - + it 'its status is forced to aborted and the Java API is not callled' do + subject.save! + expect( subject.reload.status ).to eq('aborted') + expect( invoked_calls ).to be_empty end end |
