aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRobert2017-11-15 17:15:24 +0100
committerRobert2017-11-17 14:49:19 +0100
commit2b925fe2bf8f33a0d10dfe1307b086d9e3f0add4 (patch)
tree877a1b225c4387c4f51807d26599592e8f506b22
parent21ddaefb9fc092463261284b0b7b493709201a3b (diff)
downloadchouette-core-2b925fe2bf8f33a0d10dfe1307b086d9e3f0add4.tar.bz2
Fixes: #4461@2h; Specing and Implementing
-rw-r--r--app/controllers/api/v1/netex_imports_controller.rb6
-rw-r--r--app/models/netex_import.rb27
-rw-r--r--spec/models/import/netex_import_spec.rb23
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