diff options
4 files changed, 69 insertions, 24 deletions
| diff --git a/app/helpers/compliance_controls_helper.rb b/app/helpers/compliance_controls_helper.rb new file mode 100644 index 000000000..ee7e56514 --- /dev/null +++ b/app/helpers/compliance_controls_helper.rb @@ -0,0 +1,2 @@ +module ComplianceControlsHelper +end  diff --git a/app/models/compliance_control.rb b/app/models/compliance_control.rb index e00a2c109..49fb6513f 100644 --- a/app/models/compliance_control.rb +++ b/app/models/compliance_control.rb @@ -11,6 +11,17 @@ class ComplianceControl < ActiveRecord::Base        ComplianceControlPolicy      end +    def subclass_patterns +      {  +        generic: 'Generic', +        journey_pattern: 'JourneyPattern', +        line: 'Line', +        route: 'Route', +        routing_constraint_zone: 'RoutingConstraint', +        vehicle_journey: 'VehicleJourney' +      } +    end +      def inherited(child)        child.instance_eval do          def model_name @@ -35,23 +46,23 @@ class ComplianceControl < ActiveRecord::Base    validates :compliance_control_set, presence: true    validate def coherent_control_set -    return true if compliance_control_block_id.nil? -    ids = [compliance_control_block.compliance_control_set_id, compliance_control_set_id] -    return true if ids.first == ids.last -    names = ids.map{|id| ComplianceControlSet.find(id).name} -    errors.add(:coherent_control_set, -               I18n.t('compliance_controls.errors.incoherent_control_sets', -                      indirect_set_name: names.first, -                      direct_set_name: names.last)) -  end +  return true if compliance_control_block_id.nil? +  ids = [compliance_control_block.compliance_control_set_id, compliance_control_set_id] +  return true if ids.first == ids.last +  names = ids.map{|id| ComplianceControlSet.find(id).name} +  errors.add(:coherent_control_set, +             I18n.t('compliance_controls.errors.incoherent_control_sets', +                    indirect_set_name: names.first, +                    direct_set_name: names.last)) +end -  def initialize(attributes = {}) -    super -    self.name ||= I18n.t("activerecord.models.#{self.class.name.underscore}.one") -    self.code ||= self.class.default_code -    self.origin_code ||= self.class.default_code -  end +def initialize(attributes = {}) +  super +  self.name ||= I18n.t("activerecord.models.#{self.class.name.underscore}.one") +  self.code ||= self.class.default_code +  self.origin_code ||= self.class.default_code +end  end diff --git a/spec/features/compliance_control_sets_spec.rb b/spec/features/compliance_control_sets_spec.rb index f52e2737e..cbe73f866 100644 --- a/spec/features/compliance_control_sets_spec.rb +++ b/spec/features/compliance_control_sets_spec.rb @@ -10,8 +10,6 @@ RSpec.describe "ComplianceControlSets", type: :feature do    let(:blox){      2.times.map{ | _ | create :compliance_control_block, compliance_control_set: control_set }    } -  let( :controls_hash ){ Hash.new{ |h, k| h[k] = [] } } -    before do      blox.first.update transport_mode: 'bus', transport_submode: 'bus' @@ -33,19 +31,39 @@ RSpec.describe "ComplianceControlSets", type: :feature do        end      end -    it 'we can apply a filter' do +    it 'we can apply a severity filter' do +      controls.take(2).each do | control | +        control.update criticity: 'error' +      end        within('#severity-filter') do          find('input[value="error"]').click        end        click_on('Filtrer') -      controls_hash['error'].each do +      controls.take(2).each do | control |          expect( page ).to have_content(control.code)        end -      controls_hash['warning'].each do +      controls.drop(2).each do | control |          expect( page ).not_to have_content(control.code)        end      end +    # it 'we can apply a subclass filter' do +    #   controls.first.update(origin_code: 'x-Route-y') +    #   controls.second.update(origin_code: 'x-Line-y') + +    #   within('#subclass-filter') do +    #     find('input[value="Itinéraire"]').click +    #     find('input[value="Ligne"]').click +    #   end +    #   click_on('Filtrer') +    #   controls.take(2).each do | control | +    #     expect( page ).to have_content(control.code) +    #   end +    #   controls.drop(2).each do | control | +    #     expect( page ).not_to have_content(control.code) +    #   end +    # end +    end    def make_control ccblock=nil, times: 1, severity: :warning @@ -58,10 +76,7 @@ RSpec.describe "ComplianceControlSets", type: :feature do        create( :generic_attribute_control_min_max,          code: random_string,          compliance_control_block: ccblock, -        compliance_control_set: control_set, -        criticity: severity ).tap do | ctrl | -          controls_hash[severity] << ctrl -        end +        compliance_control_set: control_set)    end  end diff --git a/spec/models/compliance_control_class_level_defaults/compliance_control_subclass_pattern_spec.rb b/spec/models/compliance_control_class_level_defaults/compliance_control_subclass_pattern_spec.rb new file mode 100644 index 000000000..868eca984 --- /dev/null +++ b/spec/models/compliance_control_class_level_defaults/compliance_control_subclass_pattern_spec.rb @@ -0,0 +1,17 @@ +RSpec.describe ComplianceControl do +  let( :subject ){ described_class.subclass_patterns } + +  context 'subclass_patterns' do +    it 'are correctly defined' do +      expect_it.to eq( +        generic: 'Generic', +        journey_pattern: 'JourneyPattern', +        line: 'Line', +        route: 'Route', +        routing_constraint_zone: 'RoutingConstraint', +        vehicle_journey: 'VehicleJourney' +      ) +    end +  end + +end | 
