aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorZog2018-06-01 12:10:11 +0200
committerZog2018-06-01 12:10:11 +0200
commit1e6b830a083e4c30f9f65c7fa51a9f066742f66d (patch)
tree5bd2e7e6b6685246f95f8b887f451ec9d050a5c3
parent12b974e13538b9f1952e4282c88d1b1a913c7f84 (diff)
downloadchouette-core-6979-ruby-controls-sets.tar.bz2
Refs #6979; Flag controls intended to be handled by the Java third-party app6979-ruby-controls-sets
And prevent calls to the java API when it is not needed
-rw-r--r--app/models/compliance_check_set.rb4
-rw-r--r--app/models/compliance_control.rb6
-rw-r--r--app/models/dummy_control/dummy.rb7
-rw-r--r--app/workers/compliance_control_set_copy_worker.rb14
-rw-r--r--config/locales/compliance_controls.en.yml3
-rw-r--r--config/locales/compliance_controls.fr.yml3
-rw-r--r--db/migrate/20180601094209_add_iev_enabled_check_to_compliance_checks.rb6
-rw-r--r--lib/compliance_control_set_copier.rb1
-rw-r--r--spec/lib/compliance_control_set_copier_spec.rb3
-rw-r--r--spec/models/compliance_check_spec.rb4
-rw-r--r--spec/workers/compliance_control_set_copy_worker_spec.rb15
11 files changed, 58 insertions, 8 deletions
diff --git a/app/models/compliance_check_set.rb b/app/models/compliance_check_set.rb
index f29ff4de5..652406e11 100644
--- a/app/models/compliance_check_set.rb
+++ b/app/models/compliance_check_set.rb
@@ -30,6 +30,10 @@ class ComplianceCheckSet < ApplicationModel
status.to_s == "successful"
end
+ def should_call_iev?
+ true
+ end
+
def self.abort_old
where(
'created_at < ? AND status NOT IN (?)',
diff --git a/app/models/compliance_control.rb b/app/models/compliance_control.rb
index 4a2a6e91c..fc6db3d09 100644
--- a/app/models/compliance_control.rb
+++ b/app/models/compliance_control.rb
@@ -16,14 +16,15 @@ class ComplianceControl < ApplicationModel
line: 'Line',
route: 'Route',
routing_constraint_zone: 'RoutingConstraint',
- vehicle_journey: 'VehicleJourney'
+ vehicle_journey: 'VehicleJourney',
+ dummy: 'Dummy',
}
end
def subclasses_to_hash
ComplianceControl.subclasses.inject(Hash.new{ |h, k| h[k] = [] } ) do |h, klass|
h[ComplianceControl.subclass_patterns.key(klass.object_type)] << klass
- h
+ h
end
end
@@ -109,3 +110,4 @@ require_dependency 'vehicle_journey_control/waiting_time'
require_dependency 'vehicle_journey_control/speed'
require_dependency 'vehicle_journey_control/time_table'
require_dependency 'vehicle_journey_control/vehicle_journey_at_stops'
+require_dependency 'dummy_control/dummy'
diff --git a/app/models/dummy_control/dummy.rb b/app/models/dummy_control/dummy.rb
new file mode 100644
index 000000000..796a13ba0
--- /dev/null
+++ b/app/models/dummy_control/dummy.rb
@@ -0,0 +1,7 @@
+module DummyControl
+ class Dummy < ComplianceControl
+ enumerize :criticity, in: %i(error), scope: true, default: :error
+
+ def self.default_code; "00-Dummy-00" end
+ end
+end
diff --git a/app/workers/compliance_control_set_copy_worker.rb b/app/workers/compliance_control_set_copy_worker.rb
index b87f5ad8e..9271cdba3 100644
--- a/app/workers/compliance_control_set_copy_worker.rb
+++ b/app/workers/compliance_control_set_copy_worker.rb
@@ -5,11 +5,15 @@ class ComplianceControlSetCopyWorker
check_set = ComplianceControlSetCopier.new.copy(control_set_id, referential_id)
check_set.update parent_type: parent_type, parent_id: parent_id if parent_type && parent_id
- begin
- Net::HTTP.get(URI("#{Rails.configuration.iev_url}/boiv_iev/referentials/validator/new?id=#{check_set.id}"))
- rescue Exception => e
- logger.error "IEV server error : #{e.message}"
- logger.error e.backtrace.inspect
+ if check_set.should_call_iev?
+ begin
+ Net::HTTP.get(URI("#{Rails.configuration.iev_url}/boiv_iev/referentials/validator/new?id=#{check_set.id}"))
+ rescue Exception => e
+ logger.error "IEV server error : #{e.message}"
+ logger.error e.backtrace.inspect
+ end
+ else
+ check_set.perform_internal_checks
end
end
end
diff --git a/config/locales/compliance_controls.en.yml b/config/locales/compliance_controls.en.yml
index 73979c168..113e81937 100644
--- a/config/locales/compliance_controls.en.yml
+++ b/config/locales/compliance_controls.en.yml
@@ -167,6 +167,7 @@ en:
3_shape_1: "Tracé %{source_objectid} : le tracé passe trop loin de l'arrêt %{target_0_label} (%{target_0_objectid}) : %{error_value} > %{reference_value}"
3_shape_2: "Tracé %{source_objectid} : le tracé n'est pas défini entre les arrêts %{target_0_label} (%{target_0_objectid}) et %{target_1_label} (%{target_1_objectid})"
3_shape_3: "Le tracé de l'itinéraire %{source_objectid} est en écart avec la voirie sur %{error_value} sections"
+
activerecord:
models:
compliance_control:
@@ -222,6 +223,8 @@ en:
one: "Min, max values of numeric fields"
generic_attribute_control/uniqueness:
one: "Attribute uniqueness of an object in a line"
+ dummy_control/dummy:
+ one: "Dummy"
attributes:
compliance_control:
diff --git a/config/locales/compliance_controls.fr.yml b/config/locales/compliance_controls.fr.yml
index e46aa7693..df376943c 100644
--- a/config/locales/compliance_controls.fr.yml
+++ b/config/locales/compliance_controls.fr.yml
@@ -164,6 +164,7 @@ fr:
3_shape_1: "Tracé %{source_objectid} : le tracé passe trop loin de l'arrêt %{target_0_label} (%{target_0_objectid}) : %{error_value} > %{reference_value}"
3_shape_2: "Tracé %{source_objectid} : le tracé n'est pas défini entre les arrêts %{target_0_label} (%{target_0_objectid}) et %{target_1_label} (%{target_1_objectid})"
3_shape_3: "Le tracé de l'itinéraire %{source_objectid} est en écart avec la voirie sur %{error_value} sections"
+
activerecord:
models:
compliance_control:
@@ -219,6 +220,8 @@ fr:
one: "Valeur min, max de champs numériques"
generic_attribute_control/uniqueness:
one: "Unicité d'un attribut d'un objet dans une ligne"
+ dummy_control/dummy:
+ one: "Dummy"
attributes:
compliance_control:
diff --git a/db/migrate/20180601094209_add_iev_enabled_check_to_compliance_checks.rb b/db/migrate/20180601094209_add_iev_enabled_check_to_compliance_checks.rb
new file mode 100644
index 000000000..7044d3cd4
--- /dev/null
+++ b/db/migrate/20180601094209_add_iev_enabled_check_to_compliance_checks.rb
@@ -0,0 +1,6 @@
+class AddIevEnabledCheckToComplianceChecks < ActiveRecord::Migration
+ def change
+ add_column :compliance_checks, :iev_enabled_check, :boolean, default: true
+ add_column :compliance_controls, :iev_enabled_check, :boolean, default: true
+ end
+end
diff --git a/lib/compliance_control_set_copier.rb b/lib/compliance_control_set_copier.rb
index 06622f302..3f95c38b4 100644
--- a/lib/compliance_control_set_copier.rb
+++ b/lib/compliance_control_set_copier.rb
@@ -67,6 +67,7 @@ class ComplianceControlSetCopier
comment: compliance_control.comment,
code: compliance_control.code,
origin_code: compliance_control.origin_code,
+ iev_enabled_check: compliance_control.iev_enabled_check,
compliance_control_name: compliance_control.class.name
).tap do | compliance_check |
control_id_to_check.update compliance_control.id => compliance_check
diff --git a/spec/lib/compliance_control_set_copier_spec.rb b/spec/lib/compliance_control_set_copier_spec.rb
index d1a56cd7f..954b1f73e 100644
--- a/spec/lib/compliance_control_set_copier_spec.rb
+++ b/spec/lib/compliance_control_set_copier_spec.rb
@@ -75,6 +75,7 @@ RSpec.describe ComplianceControlSetCopier do
let!( :control ){ create :compliance_control,
compliance_control_set: cc_set,
compliance_control_block: cc_block,
+ iev_enabled_check: false,
name: 'control' }
let( :cck_set ) { ComplianceCheckSet.last }
@@ -92,7 +93,7 @@ RSpec.describe ComplianceControlSetCopier do
expect( cck_block.condition_attributes ).to eq(cc_block.condition_attributes)
# Control/Check
- att_names = %w{ control_attributes code criticity comment origin_code }
+ att_names = %w{control_attributes code criticity comment origin_code iev_enabled_check}
expected = control.attributes.values_at(*att_names) << mk_name(control.name)
actual = cck.attributes.values_at(*(att_names << 'name'))
diff --git a/spec/models/compliance_check_spec.rb b/spec/models/compliance_check_spec.rb
index ffa59245c..cfceaa094 100644
--- a/spec/models/compliance_check_spec.rb
+++ b/spec/models/compliance_check_spec.rb
@@ -4,6 +4,10 @@ RSpec.describe ComplianceCheck, type: :model do
expect(FactoryGirl.build(:compliance_check)).to be_valid
end
+ it 'should rely on IEV by default' do
+ expect(FactoryGirl.build(:compliance_check).iev_enabled_check).to be_truthy
+ end
+
it 'has STI disabled' do
expect( described_class.inheritance_column ).to be_blank
end
diff --git a/spec/workers/compliance_control_set_copy_worker_spec.rb b/spec/workers/compliance_control_set_copy_worker_spec.rb
index 0ff721e75..7605555a7 100644
--- a/spec/workers/compliance_control_set_copy_worker_spec.rb
+++ b/spec/workers/compliance_control_set_copy_worker_spec.rb
@@ -13,6 +13,9 @@ RSpec.describe ComplianceControlSetCopyWorker do
allow_any_instance_of(
ComplianceControlSetCopier
).to receive(:copy).and_return(check_set)
+ allow(
+ check_set
+ ).to receive(:should_call_iev?).and_return(true)
stub_validation_request
end
@@ -32,4 +35,16 @@ RSpec.describe ComplianceControlSetCopyWorker do
expect(stub_validation_request).to have_been_requested
end
+
+ context "when JAVA is not needed" do
+ before do
+ expect(check_set).to receive(:should_call_iev?).and_return(false)
+ end
+
+ it "should not call it" do
+ expect(stub_validation_request).to_not have_been_requested
+ expect(check_set).to receive :perform_internal_checks
+ ComplianceControlSetCopyWorker.new.perform(control_set_id, referential_id)
+ end
+ end
end