diff options
| author | Zog | 2018-06-01 12:10:11 +0200 |
|---|---|---|
| committer | Zog | 2018-06-01 12:10:11 +0200 |
| commit | 1e6b830a083e4c30f9f65c7fa51a9f066742f66d (patch) | |
| tree | 5bd2e7e6b6685246f95f8b887f451ec9d050a5c3 | |
| parent | 12b974e13538b9f1952e4282c88d1b1a913c7f84 (diff) | |
| download | chouette-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.rb | 4 | ||||
| -rw-r--r-- | app/models/compliance_control.rb | 6 | ||||
| -rw-r--r-- | app/models/dummy_control/dummy.rb | 7 | ||||
| -rw-r--r-- | app/workers/compliance_control_set_copy_worker.rb | 14 | ||||
| -rw-r--r-- | config/locales/compliance_controls.en.yml | 3 | ||||
| -rw-r--r-- | config/locales/compliance_controls.fr.yml | 3 | ||||
| -rw-r--r-- | db/migrate/20180601094209_add_iev_enabled_check_to_compliance_checks.rb | 6 | ||||
| -rw-r--r-- | lib/compliance_control_set_copier.rb | 1 | ||||
| -rw-r--r-- | spec/lib/compliance_control_set_copier_spec.rb | 3 | ||||
| -rw-r--r-- | spec/models/compliance_check_spec.rb | 4 | ||||
| -rw-r--r-- | spec/workers/compliance_control_set_copy_worker_spec.rb | 15 |
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 |
