diff options
87 files changed, 759 insertions, 1298 deletions
| diff --git a/app/controllers/api/v1/netex_imports_controller.rb b/app/controllers/api/v1/netex_imports_controller.rb index fc85e35dd..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: "failed" -        end +        attributes = attributes.merge referential_id: @new_referential.id          @netex_import = NetexImport.new attributes          @netex_import.save! diff --git a/app/controllers/compliance_check_sets_controller.rb b/app/controllers/compliance_check_sets_controller.rb index 95dcfbf05..175c22191 100644 --- a/app/controllers/compliance_check_sets_controller.rb +++ b/app/controllers/compliance_check_sets_controller.rb @@ -18,4 +18,35 @@ class ComplianceCheckSetsController < InheritedResources::Base        }      end    end + +  def executed +    show! do |format|  +      # But now nobody is aware anymore that `format.html` passes a parameter into the block +      format.html { executed_for_html } +    end  +  end + + +  private + +  # Action Implementation +  # --------------------- + +  def executed_for_html +    @q_checks_form        = @compliance_check_set.compliance_checks.ransack(params[:q]) +    @compliance_check_set = @compliance_check_set.decorate +    compliance_checks    = +      decorate_compliance_checks( @q_checks_form.result) +        .group_by(&:compliance_check_block) +    @direct_compliance_checks        = compliance_checks.delete nil +    @blocks_to_compliance_checks_map = compliance_checks +  end + +  # Decoration +  # ---------- +  def decorate_compliance_checks(compliance_checks) +    ModelDecorator.decorate( +      compliance_checks, +      with: ComplianceCheckDecorator) +  end  end diff --git a/app/controllers/compliance_checks_controller.rb b/app/controllers/compliance_checks_controller.rb index 07438cf99..81749e292 100644 --- a/app/controllers/compliance_checks_controller.rb +++ b/app/controllers/compliance_checks_controller.rb @@ -1,4 +1,4 @@ -class ComplianceChecksController < ChouetteController +class ComplianceChecksController <  InheritedResources::Base  end diff --git a/app/controllers/compliance_control_sets_controller.rb b/app/controllers/compliance_control_sets_controller.rb index 5c78d09e3..83a345c6f 100644 --- a/app/controllers/compliance_control_sets_controller.rb +++ b/app/controllers/compliance_control_sets_controller.rb @@ -17,17 +17,12 @@ class ComplianceControlSetsController < InheritedResources::Base    def show      show! do |format| -      format.html { -        @q_controls_form        = @compliance_control_set.compliance_controls.ransack(params[:q]) -        @compliance_control_set = @compliance_control_set.decorate -        @compliance_controls    = -          decorate_compliance_controls( @q_controls_form.result) -            .group_by(&:compliance_control_block) -        @indirect_compliance_controls = @compliance_controls.delete nil -      } +      # But now nobody is aware anymore that `format.html` passes a parameter into the block +      format.html { show_for_html }      end    end +    def clone      ComplianceControlSetCloner.new.copy(params[:id], current_organisation.id)      flash[:notice] = I18n.t("compliance_control_sets.errors.operation_in_progress") @@ -59,4 +54,14 @@ class ComplianceControlSetsController < InheritedResources::Base    def compliance_control_set_params      params.require(:compliance_control_set).permit(:name, :id)    end + +  def show_for_html +    @q_controls_form        = @compliance_control_set.compliance_controls.ransack(params[:q]) +    @compliance_control_set = @compliance_control_set.decorate +    compliance_controls    = +      decorate_compliance_controls( @q_controls_form.result) +      .group_by(&:compliance_control_block) +    @direct_compliance_controls        = compliance_controls.delete nil +    @blocks_to_compliance_controls_map = compliance_controls +  end  end diff --git a/app/controllers/rule_parameter_sets_controller.rb b/app/controllers/rule_parameter_sets_controller.rb deleted file mode 100644 index de4863a08..000000000 --- a/app/controllers/rule_parameter_sets_controller.rb +++ /dev/null @@ -1,53 +0,0 @@ -class RuleParameterSetsController < InheritedResources::Base -  defaults :resource_class => RuleParameterSet -  respond_to :html -  respond_to :js, :only => [ :mode ] - -  def new -    @rule_parameter_set = RuleParameterSet.default( current_organisation) -    new! -  end - -  def destroy -    if current_organisation.rule_parameter_sets.count == 1 -      flash[:alert] = t('rule_parameter_sets.destroy.last_rps_protected') -      redirect_to organisation_rule_parameter_sets_path -    else -      destroy! do |success, failure| -        success.html { redirect_to organisation_rule_parameter_sets_path } -      end -    end -  end - -  def update -    update!(rule_parameter_set_params) do |success, failure| -      success.html { redirect_to organisation_rule_parameter_sets_path } -    end -  end - -  def create -    create!(rule_parameter_set_params) do |success, failure| -      success.html { redirect_to organisation_rule_parameter_sets_path } -    end -  end - -  protected - -  alias_method :rule_parameter_set, :resource - -  def collection -    @rule_parameter_sets = current_organisation.rule_parameter_sets -  end - -  def create_resource(rule_parameter_sets) -    rule_parameter_sets.organisation = current_organisation -    super -  end - -  private - -  def rule_parameter_set_params -    params.require(:rule_parameter_set).permit(:organisation, :name, :inter_stop_area_distance_min, :parent_stop_area_distance_max, :stop_areas_area, :inter_access_point_distance_min, :inter_connection_link_distance_max, :walk_default_speed_max, :walk_occasional_traveller_speed_max, :walk_frequent_traveller_speed_max, :walk_mobility_restricted_traveller_speed_max, :inter_access_link_distance_max, :inter_stop_duration_max, :facility_stop_area_distance_max, :check_lines_in_groups, :check_line_routes, :check_stop_parent, :check_connection_link_on_physical, :check_allowed_transport_modes, :allowed_transport_mode_coach, :inter_stop_area_distance_min_mode_coach, :inter_stop_area_distance_max_mode_coach, :speed_max_mode_coach, :speed_min_mode_coach, :inter_stop_duration_variation_max_mode_coach, :allowed_transport_mode_air, :inter_stop_area_distance_min_mode_air, :inter_stop_area_distance_max_mode_air, :speed_max_mode_air, :speed_min_mode_air, :inter_stop_duration_variation_max_mode_air, :allowed_transport_mode_waterborne, :inter_stop_area_distance_min_mode_waterborne, :inter_stop_area_distance_max_mode_waterborne, :speed_max_mode_waterborne, :speed_min_mode_waterborne, :inter_stop_duration_variation_max_mode_waterborne, :allowed_transport_mode_bus, :inter_stop_area_distance_min_mode_bus, :inter_stop_area_distance_max_mode_bus, :speed_max_mode_bus, :speed_min_mode_bus, :inter_stop_duration_variation_max_mode_bus, :allowed_transport_mode_ferry, :inter_stop_area_distance_min_mode_ferry, :inter_stop_area_distance_max_mode_ferry, :speed_max_mode_ferry, :speed_min_mode_ferry, :inter_stop_duration_variation_max_mode_ferry, :allowed_transport_mode_walk, :inter_stop_area_distance_min_mode_walk, :inter_stop_area_distance_max_mode_walk, :speed_max_mode_walk, :speed_min_mode_walk, :inter_stop_duration_variation_max_mode_walk, :allowed_transport_mode_metro, :inter_stop_area_distance_min_mode_metro, :inter_stop_area_distance_max_mode_metro, :speed_max_mode_metro, :speed_min_mode_metro, :inter_stop_duration_variation_max_mode_metro, :allowed_transport_mode_shuttle, :inter_stop_area_distance_min_mode_shuttle, :inter_stop_area_distance_max_mode_shuttle, :speed_max_mode_shuttle, :speed_min_mode_shuttle, :inter_stop_duration_variation_max_mode_shuttle, :allowed_transport_mode_rapid_transit, :inter_stop_area_distance_min_mode_rapid_transit, :inter_stop_area_distance_max_mode_rapid_transit, :speed_max_mode_rapid_transit, :speed_min_mode_rapid_transit, :inter_stop_duration_variation_max_mode_rapid_transit, :allowed_transport_mode_taxi, :inter_stop_area_distance_min_mode_taxi, :inter_stop_area_distance_max_mode_taxi, :speed_max_mode_taxi, :speed_min_mode_taxi, :inter_stop_duration_variation_max_mode_taxi, :allowed_transport_mode_local_train, :inter_stop_area_distance_min_mode_local_train, :inter_stop_area_distance_max_mode_local_train, :speed_max_mode_local_train, :speed_min_mode_local_train, :inter_stop_duration_variation_max_mode_local_train, :allowed_transport_mode_train, :inter_stop_area_distance_min_mode_train, :inter_stop_area_distance_max_mode_train, :speed_max_mode_train, :speed_min_mode_train, :inter_stop_duration_variation_max_mode_train, :allowed_transport_mode_long_distance_train, :inter_stop_area_distance_min_mode_long_distance_train, :inter_stop_area_distance_max_mode_long_distance_train, :speed_max_mode_long_distance_train, :speed_min_mode_long_distance_train, :inter_stop_duration_variation_max_mode_long_distance_train, :allowed_transport_mode_tramway, :inter_stop_area_distance_min_mode_tramway, :inter_stop_area_distance_max_mode_tramway, :speed_max_mode_tramway, :speed_min_mode_tramway, :inter_stop_duration_variation_max_mode_tramway, :allowed_transport_mode_trolleybus, :inter_stop_area_distance_min_mode_trolleybus, :inter_stop_area_distance_max_mode_trolleybus, :speed_max_mode_trolleybus, :speed_min_mode_trolleybus, :inter_stop_duration_variation_max_mode_trolleybus, :allowed_transport_mode_private_vehicle, :inter_stop_area_distance_min_mode_private_vehicle, :inter_stop_area_distance_max_mode_private_vehicle, :speed_max_mode_private_vehicle, :speed_min_mode_private_vehicle, :inter_stop_duration_variation_max_mode_private_vehicle, :allowed_transport_mode_bicycle, :inter_stop_area_distance_min_mode_bicycle, :inter_stop_area_distance_max_mode_bicycle, :speed_max_mode_bicycle, :speed_min_mode_bicycle, :inter_stop_duration_variation_max_mode_bicycle, :allowed_transport_mode_other, :inter_stop_area_distance_min_mode_other, :inter_stop_area_distance_max_mode_other, :speed_max_mode_other, :speed_min_mode_other, :inter_stop_duration_variation_max_mode_other, :check_network, :unique_column_objectid_object_network, :pattern_column_objectid_object_network, :min_size_column_objectid_object_network, :max_size_column_objectid_object_network, :unique_column_name_object_network, :pattern_column_name_object_network, :min_size_column_name_object_network, :max_size_column_name_object_network, :unique_column_registration_number_object_network, :pattern_column_registration_number_object_network, :min_size_column_registration_number_object_network, :max_size_column_registration_number_object_network, :check_company, :unique_column_objectid_object_company, :pattern_column_objectid_object_company, :min_size_column_objectid_object_company, :max_size_column_objectid_object_company, :unique_column_name_object_company, :pattern_column_name_object_company, :min_size_column_name_object_company, :max_size_column_name_object_company, :unique_column_registration_number_object_company, :pattern_column_registration_number_object_company, :min_size_column_registration_number_object_company, :max_size_column_registration_number_object_company, :check_group_of_line, :unique_column_objectid_object_group_of_line, :pattern_column_objectid_object_group_of_line, :min_size_column_objectid_object_group_of_line, :max_size_column_objectid_object_group_of_line, :unique_column_name_object_group_of_line, :pattern_column_name_object_group_of_line, :min_size_column_name_object_group_of_line, :max_size_column_name_object_group_of_line, :unique_column_registration_number_object_group_of_line, :pattern_column_registration_number_object_group_of_line, :min_size_column_registration_number_object_group_of_line, :max_size_column_registration_number_object_group_of_line, :check_stop_area, :unique_column_objectid_object_stop_area, :pattern_column_objectid_object_stop_area, :min_size_column_objectid_object_stop_area, :max_size_column_objectid_object_stop_area, :unique_column_name_object_stop_area, :pattern_column_name_object_stop_area, :min_size_column_name_object_stop_area, :max_size_column_name_object_stop_area, :unique_column_registration_number_object_stop_area, :pattern_column_registration_number_object_stop_area, :min_size_column_registration_number_object_stop_area, :max_size_column_registration_number_object_stop_area, :unique_column_city_name_object_stop_area, :pattern_column_city_name_object_stop_area, :min_size_column_city_name_object_stop_area, :max_size_column_city_name_object_stop_area, :unique_column_country_code_object_stop_area, :pattern_column_country_code_object_stop_area, :min_size_column_country_code_object_stop_area, :max_size_column_country_code_object_stop_area, :unique_column_zip_code_object_stop_area, :pattern_column_zip_code_object_stop_area, :min_size_column_zip_code_object_stop_area, :max_size_column_zip_code_object_stop_area, :check_access_point, :unique_column_objectid_object_access_point, :pattern_column_objectid_object_access_point, :min_size_column_objectid_object_access_point, :max_size_column_objectid_object_access_point, :unique_column_name_object_access_point, :pattern_column_name_object_access_point, :min_size_column_name_object_access_point, :max_size_column_name_object_access_point, :unique_column_city_name_object_access_point, :pattern_column_city_name_object_access_point, :min_size_column_city_name_object_access_point, :max_size_column_city_name_object_access_point, :unique_column_country_code_object_access_point, :pattern_column_country_code_object_access_point, :min_size_column_country_code_object_access_point, :max_size_column_country_code_object_access_point, :unique_column_zip_code_object_access_point, :pattern_column_zip_code_object_access_point, :min_size_column_zip_code_object_access_point, :max_size_column_zip_code_object_access_point, :check_access_link, :unique_column_objectid_object_access_link, :pattern_column_objectid_object_access_link, :min_size_column_objectid_object_access_link, :max_size_column_objectid_object_access_link, :unique_column_name_object_access_link, :pattern_column_name_object_access_link, :min_size_column_name_object_access_link, :max_size_column_name_object_access_link, :unique_column_link_distance_object_access_link, :min_size_column_link_distance_object_access_link, :max_size_column_link_distance_object_access_link, :unique_column_default_duration_object_access_link, :min_size_column_default_duration_object_access_link, :max_size_column_default_duration_object_access_link, :check_connection_link, :unique_column_objectid_object_connection_link, :pattern_column_objectid_object_connection_link, :min_size_column_objectid_object_connection_link, :max_size_column_objectid_object_connection_link, :unique_column_name_object_connection_link, :pattern_column_name_object_connection_link, :min_size_column_name_object_connection_link, :max_size_column_name_object_connection_link, :unique_column_link_distance_object_connection_link, :min_size_column_link_distance_object_connection_link, :max_size_column_link_distance_object_connection_link, :unique_column_default_duration_object_connection_link, :min_size_column_default_duration_object_connection_link, :max_size_column_default_duration_object_connection_link, :check_time_table, :unique_column_objectid_object_time_table, :pattern_column_objectid_object_time_table, :min_size_column_objectid_object_time_table, :max_size_column_objectid_object_time_table, :unique_column_comment_object_time_table, :pattern_column_comment_object_time_table, :min_size_column_comment_object_time_table, :max_size_column_comment_object_time_table, :unique_column_version_object_time_table, :pattern_column_version_object_time_table, :min_size_column_version_object_time_table, :max_size_column_version_object_time_table, :check_line, :unique_column_objectid_object_line, :pattern_column_objectid_object_line, :min_size_column_objectid_object_line, :max_size_column_objectid_object_line, :unique_column_name_object_line, :pattern_column_name_object_line, :min_size_column_name_object_line, :max_size_column_name_object_line, :unique_column_registration_number_object_line, :pattern_column_registration_number_object_line, :min_size_column_registration_number_object_line, :max_size_column_registration_number_object_line, :unique_column_number_object_line, :pattern_column_number_object_line, :min_size_column_number_object_line, :max_size_column_number_object_line, :unique_column_published_name_object_line, :pattern_column_published_name_object_line, :min_size_column_published_name_object_line, :max_size_column_published_name_object_line, :check_route, :unique_column_objectid_object_route, :pattern_column_objectid_object_route, :min_size_column_objectid_object_route, :max_size_column_objectid_object_route, :unique_column_name_object_route, :pattern_column_name_object_route, :min_size_column_name_object_route, :max_size_column_name_object_route, :unique_column_number_object_route, :pattern_column_number_object_route, :min_size_column_number_object_route, :max_size_column_number_object_route, :unique_column_published_name_object_route, :pattern_column_published_name_object_route, :min_size_column_published_name_object_route, :max_size_column_published_name_object_route, :check_journey_pattern, :unique_column_objectid_object_journey_pattern, :pattern_column_objectid_object_journey_pattern, :min_size_column_objectid_object_journey_pattern, :max_size_column_objectid_object_journey_pattern, :unique_column_name_object_journey_pattern, :pattern_column_name_object_journey_pattern, :min_size_column_name_object_journey_pattern, :max_size_column_name_object_journey_pattern, :unique_column_registration_number_object_journey_pattern, :pattern_column_registration_number_object_journey_pattern, :min_size_column_registration_number_object_journey_pattern, :max_size_column_registration_number_object_journey_pattern, :unique_column_published_name_object_journey_pattern, :pattern_column_published_name_object_journey_pattern, :min_size_column_published_name_object_journey_pattern, :max_size_column_published_name_object_journey_pattern, :check_vehicle_journey, :unique_column_objectid_object_vehicle_journey, :pattern_column_objectid_object_vehicle_journey, :min_size_column_objectid_object_vehicle_journey, :max_size_column_objectid_object_vehicle_journey, :unique_column_published_journey_name_object_vehicle_journey, :pattern_column_published_journey_name_object_vehicle_journey, :min_size_column_published_journey_name_object_vehicle_journey, :max_size_column_published_journey_name_object_vehicle_journey, :unique_column_published_journey_identifier_object_vehicle_journey, :pattern_column_published_journey_identifier_object_vehicle_journey, :min_size_column_published_journey_identifier_object_vehicle_journey, :max_size_column_published_journey_identifier_object_vehicle_journey, :unique_column_number_object_vehicle_journey, :min_size_column_number_object_vehicle_journey, :max_size_column_number_object_vehicle_journey) -  end -end - diff --git a/app/decorators/compliance_check_decorator.rb b/app/decorators/compliance_check_decorator.rb new file mode 100644 index 000000000..5431f5796 --- /dev/null +++ b/app/decorators/compliance_check_decorator.rb @@ -0,0 +1,8 @@ +class ComplianceCheckDecorator < Draper::Decorator +  delegate_all + +  def action_links +    [] +  end + +end diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index 9f2e2765f..0a7b0fb75 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -73,8 +73,6 @@ module ApplicationHelper        "time_tables"      when path.include?("/timebands")        "timebands" -     when path.include?("/rule_parameter_set") -      "parametersets"      when path.include?("/import_tasks")        "imports"      when path.include?("/exports") diff --git a/app/helpers/compliance_check_blocks_helper.rb b/app/helpers/compliance_check_blocks_helper.rb new file mode 100644 index 000000000..b4d858b07 --- /dev/null +++ b/app/helpers/compliance_check_blocks_helper.rb @@ -0,0 +1,3 @@ +module ComplianceCheckBlocksHelper +  include TransportModeHelper +end diff --git a/app/helpers/compliance_check_sets_helper.rb b/app/helpers/compliance_check_sets_helper.rb new file mode 100644 index 000000000..fc7165fed --- /dev/null +++ b/app/helpers/compliance_check_sets_helper.rb @@ -0,0 +1,16 @@ +module ComplianceCheckSetsHelper +  def compliance_check_set_path(compliance_check_set) +    workbench_compliance_check_set_path(compliance_check_set.workbench, compliance_check_set) +  end + +  def executed_compliance_check_set_path(compliance_check_set) +    executed_workbench_compliance_check_set_path(compliance_check_set.workbench, compliance_check_set) +  end + +  def compliance_check_path(compliance_check) +    workbench_compliance_check_set_compliance_check_path( +      compliance_check.compliance_check_set.workbench, +      compliance_check.compliance_check_set, +      compliance_check) +  end +end diff --git a/app/helpers/compliance_control_blocks_helper.rb b/app/helpers/compliance_control_blocks_helper.rb index 311e6fb46..b53ac17ae 100644 --- a/app/helpers/compliance_control_blocks_helper.rb +++ b/app/helpers/compliance_control_blocks_helper.rb @@ -1,5 +1,5 @@  module ComplianceControlBlocksHelper -  def transport_mode(transport_mode, transport_submode) +  def compliance_transport_mode(transport_mode, transport_submode)      return "[Tous les modes de transport]" if transport_mode == ""      if transport_submode == ""         "[" + t("enumerize.transport_mode.#{transport_mode}") + "]" diff --git a/app/helpers/referentials_helper.rb b/app/helpers/referentials_helper.rb index f3c18d9f8..01e5a5879 100644 --- a/app/helpers/referentials_helper.rb +++ b/app/helpers/referentials_helper.rb @@ -1,12 +1,13 @@  module ReferentialsHelper -  # Line statuses helper +  # Outputs a green check icon and the text "Oui" or a red exclamation mark +  # icon and the text "Non" based on `status`    def line_status(status)      if status -    cls = 'danger' -      content_tag :span, status ? " #{t('false')} " : " #{t('true')}", class: "fa fa-exclamation-circle fa-lg text-#{cls}" +      content_tag(:span, nil, class: 'fa fa-exclamation-circle fa-lg text-danger') + +        t('false')      else -    cls = 'success' -      content_tag :span, status ? " #{t('false')} " : " #{t('true')}", class: "fa fa-check-circle fa-lg text-#{cls}" +      content_tag(:span, nil, class: 'fa fa-check-circle fa-lg text-success') + +        t('true')      end    end  end diff --git a/app/helpers/rule_parameter_sets_helper.rb b/app/helpers/rule_parameter_sets_helper.rb deleted file mode 100644 index bb210d9cd..000000000 --- a/app/helpers/rule_parameter_sets_helper.rb +++ /dev/null @@ -1,28 +0,0 @@ -module RuleParameterSetsHelper - -  def unique( value) -    return t("true") if value == "1" -    t "false" -  end - -  def pattern(value) -    return t("rule_parameter_sets.labels.free_char") if value == "0" -    return t("rule_parameter_sets.labels.num_char") if value == "1" -    return t("rule_parameter_sets.labels.alpha_char") if value == "2" -    return t("rule_parameter_sets.labels.upper_char") if value == "3" -    return t("rule_parameter_sets.labels.lower_char") if value == "4" -  end -   -  def boolean_value(value) -    return t("true") if value == "1" -    t "false" -  end -   -  def transport_mode_label_pairs -    Chouette::TransportMode -      .all -      .zip_map { |mode| t("transport_modes.label.#{mode}") } -  end -end - - diff --git a/app/helpers/transport_mode_helper.rb b/app/helpers/transport_mode_helper.rb new file mode 100644 index 000000000..7a486fc2d --- /dev/null +++ b/app/helpers/transport_mode_helper.rb @@ -0,0 +1,16 @@ +module TransportModeHelper +  def transport_mode_text(transport_modable=nil) +    mode    = transport_modable.try(:transport_mode) +    return "[Tous les modes de transport]" if mode.blank? + +    submode = transport_modable.try(:transport_submode) +    [translated_mode_name(:mode, mode), translated_mode_name(:submode, submode)].join +  end + +  private +  def translated_mode_name mode_type, value +    return "" if value.blank? +    "[#{I18n.t("enumerize.transport_#{mode_type}.#{value}")}]" +  end + +end diff --git a/app/models/compliance_check_block.rb b/app/models/compliance_check_block.rb index ee60a8bb1..05240b428 100644 --- a/app/models/compliance_check_block.rb +++ b/app/models/compliance_check_block.rb @@ -1,5 +1,13 @@  class ComplianceCheckBlock < ActiveRecord::Base +  include StifTransportModeEnumerations +  include StifTransportSubmodeEnumerations +    belongs_to :compliance_check_set    has_many :compliance_checks + +  hstore_accessor :condition_attributes, +    transport_mode: :string, +    transport_submode: :string +  end diff --git a/app/models/compliance_control_block.rb b/app/models/compliance_control_block.rb index 5721c00f4..cfcdfd1a6 100644 --- a/app/models/compliance_control_block.rb +++ b/app/models/compliance_control_block.rb @@ -1,6 +1,6 @@  class ComplianceControlBlock < ActiveRecord::Base -  extend StifTransportModeEnumerations -  extend StifTransportSubmodeEnumerations +  include StifTransportModeEnumerations +  include StifTransportSubmodeEnumerations    belongs_to :compliance_control_set    has_many :compliance_controls, dependent: :destroy diff --git a/app/models/concerns/stif_transport_mode_enumerations.rb b/app/models/concerns/stif_transport_mode_enumerations.rb index c2d38c2c6..74621dfc5 100644 --- a/app/models/concerns/stif_transport_mode_enumerations.rb +++ b/app/models/concerns/stif_transport_mode_enumerations.rb @@ -1,19 +1,18 @@  module StifTransportModeEnumerations    extend ActiveSupport::Concern -  extend Enumerize -  extend self -  enumerize :transport_mode, in: %w(bus -                                    metro -                                    rail -                                    tram -                                    funicular) - -  def transport_modes -    StifTransportModeEnumerations.transport_mode.values +  class << self +    def transport_modes +      %w(bus metro rail tram funicular) +    end +    def sorted_transport_modes +      transport_modes.sort_by{|m| I18n.t("enumerize.transport_mode.#{m}").parameterize } +    end    end - -  def sorted_transport_modes -    self.transport_modes.sort_by{|m| I18n.t("enumerize.transport_mode.#{m}").parameterize } +   +  included do +    extend Enumerize +    enumerize :transport_mode, in: StifTransportModeEnumerations.transport_modes    end +  end diff --git a/app/models/concerns/stif_transport_submode_enumerations.rb b/app/models/concerns/stif_transport_submode_enumerations.rb index cf314badd..eb3e56eac 100644 --- a/app/models/concerns/stif_transport_submode_enumerations.rb +++ b/app/models/concerns/stif_transport_submode_enumerations.rb @@ -1,24 +1,28 @@  module StifTransportSubmodeEnumerations    extend ActiveSupport::Concern -  extend Enumerize -  extend self -  enumerize :transport_submode, in: %w(demandAndResponseBus -                                       nightBus -                                       airportLinkBus -                                       highFrequencyBus -                                       expressBus -                                       railShuttle -                                       suburbanRailway -                                       regionalRail -                                       interregionalRail -) +  class << self +    def transport_submodes +      %w( +      demandAndResponseBus +      nightBus +      airportLinkBus +      highFrequencyBus +      expressBus +      railShuttle +      suburbanRailway +      regionalRail +      interregionalRail) +    end -  def transport_submodes -    StifTransportSubmodeEnumerations.transport_submode.values +    def sorted_transport_submodes +      transport_submodes.sort_by{|m| I18n.t("enumerize.transport_submode.#{m}").parameterize } +    end    end -  def sorted_transport_submodes -    self.transport_submodes.sort_by{|m| I18n.t("enumerize.transport_submode.#{m}").parameterize } +  included do +    extend Enumerize +    enumerize :transport_submode, in: StifTransportSubmodeEnumerations.transport_submodes    end +    end diff --git a/app/models/import_task.rb b/app/models/import_task.rb index 0e1ab65be..7dfa2c644 100644 --- a/app/models/import_task.rb +++ b/app/models/import_task.rb @@ -12,7 +12,7 @@ class ImportTask    cattr_accessor :root    enumerize :data_format, in: %w( neptune netex gtfs ) -  attr_accessor :rule_parameter_set_id, :referential_id, :user_id, :user_name, :data_format, :resources, :name, :no_save +  attr_accessor :referential_id, :user_id, :user_name, :data_format, :resources, :name, :no_save    validates_presence_of :referential_id    validates_presence_of :resources @@ -34,10 +34,6 @@ class ImportTask      referential.organisation    end -  def rule_parameter_set -    organisation.rule_parameter_sets.find(rule_parameter_set_id) if rule_parameter_set_id.present? -  end -    def save      if valid?        # Save resources @@ -68,20 +64,10 @@ class ImportTask    def params      {}.tap do |h| -      h["parameters"] = validation_params ? action_params.merge(validation_params) : action_params +      h["parameters"] = {}      end    end -  def action_params -    {} -  end - -  def validation_params -    { -      "validation" => rule_parameter_set.parameters -    } if rule_parameter_set.present? -  end -    def self.data_formats      self.data_format.values    end diff --git a/app/models/netex_import.rb b/app/models/netex_import.rb index 32939a741..a7a5bb9b8 100644 --- a/app/models/netex_import.rb +++ b/app/models/netex_import.rb @@ -1,19 +1,36 @@  require 'net/http'  class NetexImport < Import +  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) +    threaded_call_boiv_iev +  end -    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 +  private + +  def destroy_non_ready_referential +    if referential && !referential.ready +      referential.destroy      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/app/models/organisation.rb b/app/models/organisation.rb index 6104b4431..f6fba2d67 100644 --- a/app/models/organisation.rb +++ b/app/models/organisation.rb @@ -3,7 +3,6 @@ class Organisation < ActiveRecord::Base    has_many :users, :dependent => :destroy    has_many :referentials, :dependent => :destroy -  # has_many :rule_parameter_sets, :dependent => :destroy    has_many :compliance_control_sets, :dependent => :destroy    has_many :stop_area_referential_memberships @@ -19,12 +18,6 @@ class Organisation < ActiveRecord::Base    validates_presence_of :name    validates_uniqueness_of :code -  # after_create :add_rule_parameter_set - -  # def add_rule_parameter_set -  #   RuleParameterSet.default_for_all_modes( self).save -  # end -    def self.portail_api_request      conf = Rails.application.config.try(:stif_portail_api)      raise 'Rails.application.config.stif_portail_api configuration is not defined' unless conf @@ -62,6 +55,7 @@ class Organisation < ActiveRecord::Base      organisation_referential = referentials.find_by id: referential_id      return organisation_referential if organisation_referential +    # TODO: Replace each with find      workbenches.each do |workbench|        workbench_referential = workbench.all_referentials.find_by id: referential_id        return workbench_referential if workbench_referential diff --git a/app/models/rule_parameter_set.rb b/app/models/rule_parameter_set.rb deleted file mode 100644 index 91e575822..000000000 --- a/app/models/rule_parameter_set.rb +++ /dev/null @@ -1,392 +0,0 @@ -class RuleParameterSet < ActiveRecord::Base -  belongs_to :organisation - -  #validates_presence_of :referential -  validates_presence_of :name - -  # Access to parent object -  attr_accessor :import, :compliance_check - -  serialize :parameters, JSON - -  def self.mode_attribute_prefixes -    %w( allowed_transport inter_stop_area_distance_min inter_stop_area_distance_max speed_max speed_min inter_stop_duration_variation_max) -  end -  def self.general_attributes -    %w( inter_stop_area_distance_min parent_stop_area_distance_max stop_areas_area inter_access_point_distance_min -      inter_connection_link_distance_max walk_default_speed_max -      walk_occasional_traveller_speed_max walk_frequent_traveller_speed_max walk_mobility_restricted_traveller_speed_max -      inter_access_link_distance_max inter_stop_duration_max facility_stop_area_distance_max -      check_allowed_transport_modes check_lines_in_groups check_line_routes -      check_stop_parent check_connection_link_on_physical) -  end - -  def self.validable_objects -      [Chouette::Network,Chouette::Company,Chouette::GroupOfLine, -        Chouette::StopArea,Chouette::AccessPoint,Chouette::AccessLink,Chouette::ConnectionLink, -        Chouette::TimeTable,Chouette::Line,Chouette::Route, -        Chouette::JourneyPattern,Chouette::VehicleJourney] -  end - -  def self.validable_object_names -    %w( network company group_of_line stop_area access_point access_link connection_link time_table line route -        journey_pattern vehicle_journey ) -  end - -  def self.validable_columns -      { 'network' => ['objectid','name','registration_number'], -        'company' => ['objectid','name','registration_number'], -        'group_of_line' => ['objectid','name','registration_number'], -        'stop_area' => ['objectid','name','registration_number','city_name','country_code','zip_code'], -        'access_point' => ['objectid','name','city_name','country_code','zip_code'], -        'access_link' => ['objectid','name','link_distance','default_duration'], -        'connection_link' => ['objectid','name','link_distance','default_duration'], -        'time_table' => ['objectid','comment','version'], -        'line' => ['objectid','name','registration_number','number','published_name'], -        'route' => ['objectid','name','number','published_name'], -        'journey_pattern' => ['objectid','name','registration_number','published_name'], -        'vehicle_journey' => ['objectid','published_journey_name','published_journey_identifier','number'] } -  end - -  @@objects_by_name = Hash[[validable_object_names, validable_objects].transpose].freeze - -  def self.validable_object_class(object_name) -    @@objects_by_name[object_name] -  end - -  def self.validable_column_type(object_name, column) -    if object_class = validable_object_class(object_name) -      object_class.columns_hash[column].try(:type) -    end -  end - -  def self.column_attribute_prefixes -    %w( unique pattern min_size max_size ) -  end - -  def self.all_modes -    ["interchange", - "unknown", - "coach", - "air", - "waterborne", - "bus", - "ferry", - "walk", - "metro", - "shuttle", - "rapid_transit", - "taxi", - "local_train", - "train", - "long_distance_train", - "tramway", - "trolleybus", - "private_vehicle", - "bicycle", - "other"] -  end - -  def self.mode_attribute?( method_name ) -    pattern = /(\w+)_mode_(\w+)/ -    return false unless method_name.match( pattern) - -    mode_attribute_prefixes.include?( $1) && self.class.all_modes.include?( $2) -  end - -  def self.column_attribute?( method_name ) -    pattern = /(\w+)_column_(\w+)_object_(\w+)/ -    return false unless method_name.match( pattern) -    return false unless validable_object_names.include?($3) -    column_attribute_prefixes.include?( $1) && validable_columns[$3].include?( $2) -  end - -  def self.mode_of_mode_attribute( method_name ) -    method_name.match( /(\w+)_mode_(\w+)/) -    $2 -  end -  def self.attribute_of_mode_attribute( method_name ) -    method_name.match( /(\w+)_mode_(\w+)/) -    $1 -  end - -  def self.object_of_column_attribute( method_name ) -    method_name.match(  /(\w+)_column_(\w+)_object_(\w+)/) -    $3 -  end -  def self.column_of_column_attribute( method_name ) -    method_name.match(  /(\w+)_column_(\w+)_object_(\w+)/) -    $2 -  end -  def self.attribute_of_column_attribute( method_name ) -    method_name.match(  /(\w+)_column_(\w+)_object_(\w+)/) -    $1 -  end - - -  def self.mode_parameter(name) -    name = name.to_s -    #attr_accessible name - -    define_method(name) do -      attribute_name, mode = RuleParameterSet.attribute_of_mode_attribute( name), RuleParameterSet.mode_of_mode_attribute( name) -      self.parameters and self.parameters["mode_#{mode}"] and -        self.parameters["mode_#{mode}"][attribute_name] -    end - -    define_method("#{name}=") do |prefix| -      attribute_name, mode = RuleParameterSet.attribute_of_mode_attribute( name), RuleParameterSet.mode_of_mode_attribute( name) -      ((self.parameters ||= {})["mode_#{mode}"] ||= {})[attribute_name] = prefix -    end -  end - -  def self.column_parameter(obj,column,prefix) -    name = "#{prefix}_column_#{column}_object_#{obj}" -    #attr_accessible name -    define_method(name) do -      attribute_name, column, obj = prefix, column, obj -      self.parameters and self.parameters[obj] and -        self.parameters[obj][column] and self.parameters[obj][column][attribute_name] -    end - -    define_method("#{name}=") do |key| -      attribute_name, column, obj = prefix, column, obj -      (((self.parameters ||= {})[obj] ||= {})[column]||= {})[attribute_name] = key -    end - -   end - -  def self.object_parameter(clazz) -    name = clazz.table_name.singularize -    #attr_accessible name - -    parameter "check_#{clazz.table_name.singularize}" -    validable_columns[name].each do |column| -      column_attribute_prefixes.each do |prefix| -         column_parameter name,column,prefix -      end - -    end - -  end - -  def self.parameter(name) -    name = name.to_s -    #attr_accessible name - -    define_method(name) do -        self.parameters and self.parameters[name] -    end - -    define_method("#{name}=") do |prefix| -        (self.parameters ||= {})[name] = prefix -    end -  end - -  def self.default_params(mode=nil) -    base = { :inter_stop_area_distance_min          => 20, -      :parent_stop_area_distance_max                => 300, -      :inter_access_point_distance_min              => 20, -      :inter_connection_link_distance_max           => 400, -      :walk_default_speed_max                       => 4, -      :walk_occasional_traveller_speed_max          => 2, -      :walk_frequent_traveller_speed_max            => 5, -      :walk_mobility_restricted_traveller_speed_max => 1, -      :inter_access_link_distance_max               => 300, -      :inter_stop_duration_max                      => 40, -      :facility_stop_area_distance_max              => 300, -      :check_allowed_transport_modes                => false, -      :check_lines_in_groups                        => false, -      :check_line_routes                            => false, -      :check_stop_parent                            => false, -      :check_connection_link_on_physical            => false -    } -    if mode && self.mode_default_params[ mode.to_sym] -      base.merge!( self.mode_default_params[ mode.to_sym]) -    end -    base -  end -  def self.mode_default_params -    { -    :coach => { -      :allowed_transport_mode_coach                 => false, -      :inter_stop_area_distance_min_mode_coach      => 500, -      :inter_stop_area_distance_max_mode_coach      => 10000, -      :speed_max_mode_coach                         => 90, -      :speed_min_mode_coach                         => 40, -      :inter_stop_duration_variation_max_mode_coach => 20}, -    :air => { -      :allowed_transport_mode_air                 => false, -      :inter_stop_area_distance_min_mode_air      => 200, -      :inter_stop_area_distance_max_mode_air      => 10000, -      :speed_max_mode_air                         => 800, -      :speed_min_mode_air                         => 700, -      :inter_stop_duration_variation_max_mode_air => 60}, -    :waterborne => { -      :allowed_transport_mode_waterborne                 => false, -      :inter_stop_area_distance_min_mode_waterborne      => 200, -      :inter_stop_area_distance_max_mode_waterborne      => 10000, -      :speed_max_mode_waterborne                         => 40, -      :speed_min_mode_waterborne                         => 5, -      :inter_stop_duration_variation_max_mode_waterborne => 60}, -    :bus => { -      :allowed_transport_mode_bus                 => false, -      :inter_stop_area_distance_min_mode_bus      => 100, -      :inter_stop_area_distance_max_mode_bus      => 10000, -      :speed_max_mode_bus                         => 60, -      :speed_min_mode_bus                         => 10, -      :inter_stop_duration_variation_max_mode_bus => 15}, -    :ferry => { -      :allowed_transport_mode_ferry                 => false, -      :inter_stop_area_distance_min_mode_ferry      => 200, -      :inter_stop_area_distance_max_mode_ferry      => 10000, -      :speed_max_mode_ferry                         => 40, -      :speed_min_mode_ferry                         => 5, -      :inter_stop_duration_variation_max_mode_ferry => 60}, -    :walk => { -      :allowed_transport_mode_walk                 => false, -      :inter_stop_area_distance_min_mode_walk      => 1, -      :inter_stop_area_distance_max_mode_walk      => 10000, -      :speed_max_mode_walk                         => 6, -      :speed_min_mode_walk                         => 1, -      :inter_stop_duration_variation_max_mode_walk => 10}, -    :metro => { -      :allowed_transport_mode_metro                 => false, -      :inter_stop_area_distance_min_mode_metro      => 300, -      :inter_stop_area_distance_max_mode_metro      => 2000, -      :speed_max_mode_metro                         => 60, -      :speed_min_mode_metro                         => 30, -      :inter_stop_duration_variation_max_mode_metro => 30}, -    :shuttle => { -      :allowed_transport_mode_shuttle                 => false, -      :inter_stop_area_distance_min_mode_shuttle      => 500, -      :inter_stop_area_distance_max_mode_shuttle      => 10000, -      :speed_max_mode_shuttle                         => 80, -      :speed_min_mode_shuttle                         => 20, -      :inter_stop_duration_variation_max_mode_shuttle => 10}, -    :rapid_transit => { -      :allowed_transport_mode_rapid_transit                 => false, -      :inter_stop_area_distance_min_mode_rapid_transit      => 2000, -      :inter_stop_area_distance_max_mode_rapid_transit      => 500000, -      :speed_max_mode_rapid_transit                         => 300, -      :speed_min_mode_rapid_transit                         => 20, -      :inter_stop_duration_variation_max_mode_rapid_transit => 60}, -    :taxi => { -      :allowed_transport_mode_taxi                 => false, -      :inter_stop_area_distance_min_mode_taxi      => 500, -      :inter_stop_area_distance_max_mode_taxi      => 300000, -      :speed_max_mode_taxi                         => 130, -      :speed_min_mode_taxi                         => 20, -      :inter_stop_duration_variation_max_mode_taxi => 60}, -    :local_train => { -      :allowed_transport_mode_local_train                 => false, -      :inter_stop_area_distance_min_mode_local_train      => 2000, -      :inter_stop_area_distance_max_mode_local_train      => 500000, -      :speed_max_mode_local_train                         => 300, -      :speed_min_mode_local_train                         => 20, -      :inter_stop_duration_variation_max_mode_local_train => 60}, -    :train => { -      :allowed_transport_mode_train                 => false, -      :inter_stop_area_distance_min_mode_train      => 2000, -      :inter_stop_area_distance_max_mode_train      => 500000, -      :speed_max_mode_train                         => 300, -      :speed_min_mode_train                         => 20, -      :inter_stop_duration_variation_max_mode_train => 60}, -    :long_distance_train => { -      :allowed_transport_mode_long_distance_train                 => false, -      :inter_stop_area_distance_min_mode_long_distance_train      => 2000, -      :inter_stop_area_distance_max_mode_long_distance_train      => 500000, -      :speed_max_mode_long_distance_train                         => 300, -      :speed_min_mode_long_distance_train                         => 20, -      :inter_stop_duration_variation_max_mode_long_distance_train => 60}, -    :tramway => { -      :allowed_transport_mode_tramway                 => false, -      :inter_stop_area_distance_min_mode_tramway      => 300, -      :inter_stop_area_distance_max_mode_tramway      => 2000, -      :speed_max_mode_tramway                         => 50, -      :speed_min_mode_tramway                         => 20, -      :inter_stop_duration_variation_max_mode_tramway => 30}, -    :trolleybus => { -      :allowed_transport_mode_trolleybus                 => false, -      :inter_stop_area_distance_min_mode_trolleybus      => 300, -      :inter_stop_area_distance_max_mode_trolleybus      => 2000, -      :speed_max_mode_trolleybus                         => 50, -      :speed_min_mode_trolleybus                         => 20, -      :inter_stop_duration_variation_max_mode_trolleybus => 30}, -    :private_vehicle => { -      :allowed_transport_mode_private_vehicle                 => false, -      :inter_stop_area_distance_min_mode_private_vehicle      => 500, -      :inter_stop_area_distance_max_mode_private_vehicle      => 300000, -      :speed_max_mode_private_vehicle                         => 130, -      :speed_min_mode_private_vehicle                         => 20, -      :inter_stop_duration_variation_max_mode_private_vehicle => 60}, -    :bicycle => { -      :allowed_transport_mode_bicycle                 => false, -      :inter_stop_area_distance_min_mode_bicycle      => 300, -      :inter_stop_area_distance_max_mode_bicycle      => 30000, -      :speed_max_mode_bicycle                         => 40, -      :speed_min_mode_bicycle                         => 10, -      :inter_stop_duration_variation_max_mode_bicycle => 10}, -    :other => { -      :allowed_transport_mode_other                 => false, -      :inter_stop_area_distance_min_mode_other      => 300, -      :inter_stop_area_distance_max_mode_other      => 30000, -      :speed_max_mode_other                         => 40, -      :speed_min_mode_other                         => 10, -      :inter_stop_duration_variation_max_mode_other => 10}, -    } -    # :waterborne, :bus, :ferry, :walk, :metro, :shuttle, :rapidtransit, :taxi, :localtrain, :train, :longdistancetrain, :tramway, :trolleybus, :privatevehicle, :bicycle, :other -  end -  def self.default(organisation) -    self.default_for_all_modes(organisation).tap do |rps| -      rps.name = "" -    end -  end -  def self.default_for_all_modes(organisation) -    mode_attributes = mode_default_params.values.inject(self.default_params){|memo, obj| memo.merge! obj} -    self.new( -      { :organisation_id => organisation.id, -        :name => "valeurs par defaut" -      }.merge(mode_attributes)) -  end - -  def allowed(mode) -    return true unless self.check_allowed_transport_modes == "1" -    # puts "#{mode} = "+self.send("allowed_transport_mode_#{mode}").to_s -    return self.send("allowed_transport_mode_#{mode}") == "1" -  end - -  def selected(object) -    # puts "#{mode} = "+self.send("allowed_transport_mode_#{mode}").to_s -    return self.send("check_#{object}") == "1" -  end - -  def selected_column(object,column) -    # puts "#{mode} = "+self.send("allowed_transport_mode_#{mode}").to_s -    return self.send("unique_column_#{column}_object_#{object}") == "1" || -           self.send("pattern_column_#{column}_object_#{object}") != "0" || -           !self.send("min_size_column_#{column}_object_#{object}").empty? || -           !self.send("max_size_column_#{column}_object_#{object}").empty? -  end - - -  all_modes.each do |mode| -    mode_attribute_prefixes.each do |prefix| -      mode_parameter "#{prefix}_mode_#{mode}".to_sym -    end -  end - -  general_attributes.each do |attribute| -    parameter attribute.to_sym -    unless attribute == "stop_areas_area" || attribute == "check_allowed_transport_modes" -      validates attribute.to_sym, :numericality => true, :allow_nil => true, :allow_blank => true -    end -  end - - -  validable_objects.each do |obj| -     object_parameter obj -  end - - -end diff --git a/app/views/compliance_check_sets/executed.html.slim b/app/views/compliance_check_sets/executed.html.slim new file mode 100644 index 000000000..bb055272d --- /dev/null +++ b/app/views/compliance_check_sets/executed.html.slim @@ -0,0 +1,84 @@ +- breadcrumb :compliance_check_set, @workbench, @compliance_check_set +/ PageHeader += pageheader 'jeux-de-donnees', +              t('compliance_check_sets.executed.title', name: @compliance_check_set.name) +/ PageContent +.page_content +  .container-fluid +    .row +      .col-lg-6.col-md-6.col-sm-12.col-xs-12 +        = definition_list t('metadatas'), +            ComplianceCheckSet.human_attribute_name(:name) => @compliance_check_set.name + +  - if params[:q].present? || @blocks_to_compliance_checks_map.any? || @direct_compliance_checks +    .row +      .col-lg-12 +        = render '/compliance_checks/filters' + +        - if @direct_compliance_checks.try(:any?) +          .row +            .col-lg-12 +              h2 +                = transport_mode_text() +          .row +            .col-lg-12 +              = table_builder_2 @direct_compliance_checks, +                      [ \ +                  TableBuilderHelper::Column.new( \ +                    key: :code, \ +                    attribute: 'code' \ +                  ), \ +                  TableBuilderHelper::Column.new( \ +                    key: :name, \ +                    attribute: 'name', \ +                    link_to: lambda do |compliance_check| \ +                        compliance_check_path(compliance_check) \ +                      end \ +                  ), \ +                  TableBuilderHelper::Column.new( \ +                    key: :criticity, \ +                    attribute: 'criticity' \ +                  ), \ +                  TableBuilderHelper::Column.new( \ +                    key: :comment, \ +                    attribute: 'comment' \ +                  ), \ +                ], +                sortable: true, +                cls: 'table has-filter has-search', +                model: ComplianceCheck +                 +    - @blocks_to_compliance_checks_map.each do |block, compliance_checks| + +      - if compliance_checks.try(:any?) +        .row +          .col-lg-12 +            h2 +              = transport_mode_text(block) +        .row +          .col-lg-12 +            = table_builder_2 compliance_checks, +                    [ \ +                TableBuilderHelper::Column.new( \ +                  key: :code, \ +                  attribute: 'code' \ +                ), \ +                TableBuilderHelper::Column.new( \ +                  key: :name, \ +                  attribute: 'name', \ +                  link_to: lambda do |compliance_check| \ +                      compliance_check_path(compliance_check) \ +                    end \ +                ), \ +                TableBuilderHelper::Column.new( \ +                  key: :criticity, \ +                  attribute: 'criticity' \ +                ), \ +                TableBuilderHelper::Column.new( \ +                  key: :comment, \ +                  attribute: 'comment' \ +                ), \ +              ], +              sortable: true, +              cls: 'table has-filter has-search', +              model: ComplianceCheck diff --git a/app/views/compliance_check_sets/show.html.slim b/app/views/compliance_check_sets/show.html.slim deleted file mode 100644 index eefa5363f..000000000 --- a/app/views/compliance_check_sets/show.html.slim +++ /dev/null @@ -1,12 +0,0 @@ -- breadcrumb :compliance_check_set, @workbench, @compliance_check_set -/ PageHeader -= pageheader 'jeux-de-donnees', -              @compliance_check_set.referential.name -/ PageContent -.page_content -  .container-fluid -    .row -      .col-lg-6.col-md-6.col-sm-12.col-xs-12 -        = definition_list t('metadatas'), -            ComplianceCheckSet.human_attribute_name(:id) => @compliance_check_set.referential.id, -            ComplianceCheckSet.human_attribute_name(:name) => @compliance_check_set.referential.name diff --git a/app/views/compliance_checks/_filters.html.slim b/app/views/compliance_checks/_filters.html.slim new file mode 100644 index 000000000..0d747da27 --- /dev/null +++ b/app/views/compliance_checks/_filters.html.slim @@ -0,0 +1,47 @@ +/ Compliance Check Filter += search_form_for @q_checks_form, +  url: executed_compliance_check_set_path(@compliance_check_set), +  builder: SimpleForm::FormBuilder, +  class: 'form form-filter' do |f| + +  .ffg-row +    .input-group.search_bar +      = f.search_field :name_cont, +        class: 'form-control', +        placeholder: t('compliance_checks.filters.name') +      span.input-group-btn +        button.btn.btn-default type='submit' +          span.fa.fa-search + +  .ffg-row +    .form-group.togglable#compliance_check_block-filter +      = f.label t('activerecord.models.compliance_check_block.one'), required: false, class: 'control-label' +      = f.input :compliance_check_block_id_eq_any, +        collection: @compliance_check_set.compliance_check_blocks, +        as: :check_boxes, +        label: false, +        label_method: lambda {|w| ("<span>#{transport_mode_text(w)}</span>").html_safe}, +        required: false, +        wrapper_html: {class: 'checkbox_list'} +    .form-group.togglable#subclass-filter +      = f.label t('compliance_checks.filters.subclass'), required: false, class: 'control-label' +      = f.input :origin_code_cont_any, +        collection: subclass_selection_list, +        as: :check_boxes, +        label: false, +        label_method: lambda {|w| ("<span>#{w.first}</span>").html_safe}, +        required: false, +        wrapper_html: {class: 'checkbox_list'} +    .form-group.togglable#severity-filter +      = f.label t('compliance_checks.filters.criticity'), required: false, class: 'control-label' +      = f.input :criticity_eq_any, +        collection: ComplianceControl.criticities, +        as: :check_boxes, +        label: false, +        label_method: lambda {|w| ("<span>#{w}</span>").html_safe}, +        required: false, +        wrapper_html: {class: 'checkbox_list'} + +  .actions +    = link_to t('actions.erase'), executed_compliance_check_set_path(@compliance_check_set), class: 'btn btn-link' +    = f.submit t('actions.filter'), class: 'btn btn-default', id: 'compliance_check_set_compliance_checks_filter_btn' diff --git a/app/views/compliance_control_sets/show.html.slim b/app/views/compliance_control_sets/show.html.slim index 2bd663578..71b71f842 100644 --- a/app/views/compliance_control_sets/show.html.slim +++ b/app/views/compliance_control_sets/show.html.slim @@ -1,8 +1,7 @@  - breadcrumb :compliance_control_set, @compliance_control_set  / PageHeader  = pageheader 'jeux-de-controle', -              t('compliance_control_sets.show.title', name: @compliance_control_set.name), -             'Lorem ipsum dolor sit amet' +              t('compliance_control_sets.show.title', name: @compliance_control_set.name)    / Below is secondary actions & optional contents (filters, ...)    .row.mb-sm @@ -25,21 +24,65 @@          = definition_list t('metadatas'),              ComplianceControlSet.human_attribute_name(:name) => @compliance_control_set.name,              I18n.t('activerecord.attributes.compliance_control_set.owner_jdc') => @compliance_control_set.organisation.name -  - if params[:q].present? or @compliance_controls.any? + +  - if params[:q].present? || @blocks_to_compliance_controls_map.any? || @direct_compliance_controls      .row        .col-lg-12          = render '/compliance_controls/filters' -    .row -      .col-lg-12 -        h2 -          = transport_mode("", "") -      - if @indirect_compliance_controls.try(:any?) +    - if @direct_compliance_controls.try(:any?) +      .row +        .col-lg-12 +          h2 +            = transport_mode_text() +      .row +        .col-lg-12 +          .select_table +            = table_builder_2 @direct_compliance_controls, +                    [ \ +                TableBuilderHelper::Column.new( \ +                  key: :code, \ +                  attribute: 'code' \ +                ), \ +                TableBuilderHelper::Column.new( \ +                  key: :name, \ +                  attribute: 'name', \ +                  link_to: lambda do |compliance_control| \ +                      compliance_control_set_compliance_control_path(@compliance_control_set, compliance_control) \ +                    end \ +                ), \ +                TableBuilderHelper::Column.new( \ +                  key: :criticity, \ +                  attribute: 'criticity' \ +                ), \ +                TableBuilderHelper::Column.new( \ +                  key: :comment, \ +                  attribute: 'comment' \ +                ), \ +              ], +              sortable: true, +              cls: 'table has-filter has-search', +              model: ComplianceControl + +    - @blocks_to_compliance_controls_map.each do |block, compliance_controls| + +      - if compliance_controls.try(:any?) +        .row +          .col-lg-12 +            h2 +              = transport_mode_text(block) +              .btn-group +                .btn.dropdown-toggle{ data-toggle="dropdown" } +                  .span.fa.fa-cog +                ul.dropdown-menu +                  li +                    = link_to t('compliance_control_sets.actions.edit'), edit_compliance_control_set_compliance_control_block_path(@compliance_control_set.id, block.id) +                    = link_to t('compliance_control_sets.actions.destroy'), compliance_control_set_compliance_control_block_path(@compliance_control_set.id, block.id), :method => :delete, :data => {:confirm =>  t('compliance_control_sets.actions.destroy_confirm')}          .row            .col-lg-12              .select_table -              = table_builder_2 @indirect_compliance_controls, +              = table_builder_2 compliance_controls,                        [ \                    TableBuilderHelper::Column.new( \                      key: :code, \ @@ -65,47 +108,15 @@                  cls: 'table has-filter has-search',                  model: ComplianceControl -    - @compliance_controls.each do |block, compliance_controls| - -      - if compliance_controls.try(:any?) -        .row -          .col-lg-12 -            h2 -              = transport_mode(block.transport_mode, block.transport_submode) -              .btn-group -                .btn.dropdown-toggle{ data-toggle="dropdown" } -                  .span.fa.fa-cog -                ul.dropdown-menu -                  li -                    = link_to t('compliance_control_sets.actions.edit'), edit_compliance_control_set_compliance_control_block_path(@compliance_control_set.id, block.id) if policy(ComplianceControlBlock).update? if policy(ComplianceControlBlock).update? -                    = link_to t('compliance_control_sets.actions.destroy'), compliance_control_set_compliance_control_block_path(@compliance_control_set.id, block.id), :method => :delete, :data => {:confirm =>  t('compliance_control_sets.actions.destroy_confirm')} if policy(ComplianceControlBlock).destroy? -          .row -            .col-lg-12 -              .select_table -                = table_builder_2 compliance_controls, -                        [ \ -                    TableBuilderHelper::Column.new( \ -                      key: :code, \ -                      attribute: 'code' \ -                    ), \ -                    TableBuilderHelper::Column.new( \ -                      key: :name, \ -                      attribute: 'name', \ -                      link_to: lambda do |compliance_control| \ -                          compliance_control_set_compliance_control_path(@compliance_control_set, compliance_control) \ -                        end \ -                    ), \ -                    TableBuilderHelper::Column.new( \ -                      key: :criticity, \ -                      attribute: 'criticity' \ -                    ), \ -                    TableBuilderHelper::Column.new( \ -                      key: :comment, \ -                      attribute: 'comment' \ -                    ), \ -                  ], -                  sortable: true, -                  cls: 'table has-filter has-search', -                  model: ComplianceControl - -  = flotted_links(@compliance_control_set.id)
\ No newline at end of file +    .select_toolbox +      ul +        li.st_action.with_text +          = link_to select_type_compliance_control_set_compliance_controls_path(@compliance_control_set.id) +            span.fa.fa-plus +            span +              = t('compliance_control_sets.actions.add_compliance_control') +        li.st_action.with_text +          = link_to new_compliance_control_set_compliance_control_block_path(@compliance_control_set.id) +            span.fa.fa-plus +            span +              = t('compliance_control_sets.actions.add_compliance_control_block') diff --git a/app/views/compliance_controls/_filters.html.slim b/app/views/compliance_controls/_filters.html.slim index c729190a0..d38da5d2d 100644 --- a/app/views/compliance_controls/_filters.html.slim +++ b/app/views/compliance_controls/_filters.html.slim @@ -1,3 +1,4 @@ +/ Compliance Control Filter  = search_form_for @q_controls_form,    url: compliance_control_set_path(@compliance_control_set),    builder: SimpleForm::FormBuilder, @@ -19,7 +20,7 @@          collection: @compliance_control_set.compliance_control_blocks,          as: :check_boxes,          label: false, -        label_method: lambda {|w| ("<span>#{transport_mode(w.transport_mode, w.transport_submode)}</span>").html_safe}, +        label_method: lambda {|w| ("<span>#{transport_mode_text(w)}</span>").html_safe},          required: false,          wrapper_html: {class: 'checkbox_list'}      .form-group.togglable#subclass-filter diff --git a/app/views/import_tasks/new.html.slim b/app/views/import_tasks/new.html.slim index b4b77d344..dad004759 100644 --- a/app/views/import_tasks/new.html.slim +++ b/app/views/import_tasks/new.html.slim @@ -16,13 +16,12 @@ ul.nav.nav-pills          = form.input :referential_id, as: :hidden, :input_html => { :value => @referential.id }          = form.input :name          = form.input :no_save, as: :boolean -        = form.input :rule_parameter_set_id, as: :select, :collection =>  @referential.organisation.rule_parameter_sets.map { |rps| [ rps.name, rps.id ] }, :include_blank => true          = form.input :resources, as: :file        = render partial: "fields_#{import_task.data_format}_import", :locals => { :form => form } -       +        = form.actions do          = form.action :submit, as: :button , :label => t( 'formtastic.import' )          = form.action :cancel, as: :link -= javascript_include_tag new_referential_import_task_path(@referential, :format => :js)
\ No newline at end of file += javascript_include_tag new_referential_import_task_path(@referential, :format => :js) diff --git a/app/views/lines/_filters.html.slim b/app/views/lines/_filters.html.slim index 7662c41b5..58f8f2431 100644 --- a/app/views/lines/_filters.html.slim +++ b/app/views/lines/_filters.html.slim @@ -17,11 +17,11 @@      .form-group.togglable        = f.label Chouette::Line.human_attribute_name(:transport_mode), required: false, class: 'control-label' -      = f.input :transport_mode_eq_any, collection: Chouette::Line.sorted_transport_modes, as: :check_boxes, label: false, label_method: lambda{|l| ("<span>" + t("enumerize.transport_mode.#{l}") + "</span>").html_safe}, required: false, wrapper_html: { class: 'checkbox_list'} +      = f.input :transport_mode_eq_any, collection: StifTransportModeEnumerations.sorted_transport_modes, as: :check_boxes, label: false, label_method: lambda{|l| ("<span>" + t("enumerize.transport_mode.#{l}") + "</span>").html_safe}, required: false, wrapper_html: { class: 'checkbox_list'}      .form-group.togglable        = f.label Chouette::Line.human_attribute_name(:transport_submode), required: false, class: 'control-label' -      = f.input :transport_submode_eq_any, collection: Chouette::Line.sorted_transport_submodes, as: :check_boxes, label: false, label_method: lambda{|l| ("<span>" + t("enumerize.transport_submode.#{l}") + "</span>").html_safe}, required: false, wrapper_html: { class: 'checkbox_list'} +      = f.input :transport_submode_eq_any, collection: StifTransportSubmodeEnumerations.sorted_transport_submodes, as: :check_boxes, label: false, label_method: lambda{|l| ("<span>" + t("enumerize.transport_submode.#{l}") + "</span>").html_safe}, required: false, wrapper_html: { class: 'checkbox_list'}    .actions      = link_to 'Effacer', @workbench, class: 'btn btn-link' diff --git a/app/views/organisations/show.html.slim b/app/views/organisations/show.html.slim index 89e3b2870..e7ab18dd3 100644 --- a/app/views/organisations/show.html.slim +++ b/app/views/organisations/show.html.slim @@ -27,8 +27,3 @@          = link_to t('organisations.actions.edit'), edit_organisation_path, class: 'edit'        li          = link_to t('users.actions.new'), new_organisation_user_path, class: 'add' - -    / FIXME ref #2007 -    - if false -      li -        = link_to t('rule_parameter_sets.actions.new'), new_organisation_rule_parameter_set_path, class: 'add' diff --git a/app/views/rule_parameter_sets/_column_fields.html.slim b/app/views/rule_parameter_sets/_column_fields.html.slim deleted file mode 100644 index 176318765..000000000 --- a/app/views/rule_parameter_sets/_column_fields.html.slim +++ /dev/null @@ -1,13 +0,0 @@ -td -td = t("activerecord.attributes.#{object_name}.#{column}") -- suffix = "column_#{column}_object_#{object_name}" -td = f.check_box "unique_#{suffix}".to_sym, class: 'special' - -- if RuleParameterSet.validable_column_type(object_name, column) == :string -  td -    = f.select "pattern_#{suffix}".to_sym, options_for_select([[t("rule_parameter_sets.labels.free_char"), "0"], [t("rule_parameter_sets.labels.num_char"), "1"], [t("rule_parameter_sets.labels.alpha_char"), "2"], [t("rule_parameter_sets.labels.upper_char"), "3"], [t("rule_parameter_sets.labels.lower_char"), "4"]]) -- else -  td = t('rule_parameter_sets.labels.num_char') - -td = f.number_field "min_size_#{suffix}".to_sym, class: 'special' -td = f.number_field "max_size_#{suffix}".to_sym, class: 'special' diff --git a/app/views/rule_parameter_sets/_form.html.slim b/app/views/rule_parameter_sets/_form.html.slim deleted file mode 100644 index b93caae58..000000000 --- a/app/views/rule_parameter_sets/_form.html.slim +++ /dev/null @@ -1,73 +0,0 @@ -= semantic_form_for [ :organisation, @rule_parameter_set] do |form| -  = form.inputs do -    = form.input :name -    = form.input :inter_stop_area_distance_min, as: :number -    = form.input :parent_stop_area_distance_max, as: :number -    = form.input :stop_areas_area -    = form.input :inter_access_point_distance_min, as: :number -    = form.input :inter_connection_link_distance_max, as: :number -    = form.input :walk_default_speed_max, as: :number -    = form.input :walk_occasional_traveller_speed_max, as: :number -    = form.input :walk_frequent_traveller_speed_max, as: :number -    = form.input :walk_mobility_restricted_traveller_speed_max, as: :number - -    = form.input :inter_access_link_distance_max, as: :number -    = form.input :inter_stop_duration_max, as: :number -    = form.input :facility_stop_area_distance_max, as: :number - -    = form.input :check_lines_in_groups, as: :boolean -    = form.input :check_line_routes, as: :boolean -    = form.input :check_stop_parent, as: :boolean -    = form.input :check_connection_link_on_physical, as: :boolean -    = form.input :check_allowed_transport_modes, as: :boolean - -    table.table.table-striped.table-condensed -      thead -      	tr -          th = t("transport_modes.name") - -          - RuleParameterSet.mode_attribute_prefixes.each do |prefix| -            - if prefix == "allowed_transport" -              - hidden = (@rule_parameter_set.check_allowed_transport_modes == "1") ? "" : 'display:none;' -              th.allowed style="#{hidden}" -                = RuleParameterSet.human_attribute_name(prefix) -            - else -              th = RuleParameterSet.human_attribute_name(prefix) - -      tbody -        / To be removed, see #1936 -        - Chouette::Line.transport_mode.values.each do |mode| -          tr -            == render partial: "mode_fields", :locals => { f: form, mode: mode } - -    = t("rule_parameter_sets.labels.columns_restrictions") - -    table.table.table-bordered.table-condensed -      - RuleParameterSet.validable_object_names.each do |object_name| -        thead -          tr -            th -              = form.check_box "check_#{object_name}".to_sym, class: 'special' -              = t("activerecord.models.#{object_name}.one") - -        		th = RuleParameterSet.human_attribute_name("attribute") -        		th = RuleParameterSet.human_attribute_name("unique") -        		th = RuleParameterSet.human_attribute_name("string_type") -        		th = RuleParameterSet.human_attribute_name("min_size") -        		th = RuleParameterSet.human_attribute_name("max_size") - -        tbody -          - RuleParameterSet.validable_columns[object_name].each do |col| -            tr class="columns_for_#{object_name.pluralize}" -              == render partial: "column_fields", :locals => { f: form, object_name: object_name, column: col } - -  = form.actions do -    = form.action :submit, as: :button -    = form.action :cancel, as: :link - -javascript: -	$(function() { -    $( "#rule_parameter_set_check_allowed_transport_modes").change( function() { -      $(".allowed").toggle(); -    }); -  }); diff --git a/app/views/rule_parameter_sets/_mode_fields.html.slim b/app/views/rule_parameter_sets/_mode_fields.html.slim deleted file mode 100644 index 848e065f3..000000000 --- a/app/views/rule_parameter_sets/_mode_fields.html.slim +++ /dev/null @@ -1,9 +0,0 @@ -td = t("transport_modes.label.#{mode}") - -- RuleParameterSet.mode_attribute_prefixes.each do |prefix| -  - if prefix == "allowed_transport" -    - hidden = (@rule_parameter_set.check_allowed_transport_modes == "1") ? "" : 'display: none;' -    td.allowed style="#{hidden}" -      = f.check_box "#{prefix}_mode_#{mode}".to_sym, class: 'special' -  - else -    td = f.number_field "#{prefix}_mode_#{mode}".to_sym, class: 'special'
\ No newline at end of file diff --git a/app/views/rule_parameter_sets/_mode_selection.html.slim b/app/views/rule_parameter_sets/_mode_selection.html.slim deleted file mode 100644 index b9afd10b6..000000000 --- a/app/views/rule_parameter_sets/_mode_selection.html.slim +++ /dev/null @@ -1,4 +0,0 @@ -/ select.undescribed_modes -/   - Chouette::TransportMode.all.map { |m| m.name.downcase}.each do |mode| -/     option value="#{mode}" -/       = t("transport_modes.label.#{mode}")
\ No newline at end of file diff --git a/app/views/rule_parameter_sets/_rule_parameter_set.html.slim b/app/views/rule_parameter_sets/_rule_parameter_set.html.slim deleted file mode 100644 index 5603d2b80..000000000 --- a/app/views/rule_parameter_sets/_rule_parameter_set.html.slim +++ /dev/null @@ -1,14 +0,0 @@ -#index_item.panel.panel-default.rule_parameter_set -  .panel-heading -    .panel-title.clearfix -      span.pull-right -        = link_to edit_organisation_rule_parameter_set_path( rule_parameter_set), class: 'btn btn-default btn-sm' do -          span.fa.fa-pencil -         -        - if rule_parameter_set.organisation.rule_parameter_sets.size > 1 -          = link_to organisation_rule_parameter_set_path( rule_parameter_set), method: :delete, data: { confirm: t('rule_parameter_sets.actions.destroy_confirm') }, class: 'btn btn-danger btn-sm' do -            span.fa.fa-trash-o - -      h5 -        = link_to( organisation_rule_parameter_set_path( rule_parameter_set), class: 'preview', title: "#{RuleParameterSet.model_name.human.capitalize} #{rule_parameter_set.name}") do -          span.name = truncate(rule_parameter_set.name, length: 20)
\ No newline at end of file diff --git a/app/views/rule_parameter_sets/_transport_mode_parameter_set_fields.html.slim b/app/views/rule_parameter_sets/_transport_mode_parameter_set_fields.html.slim deleted file mode 100644 index ede7e2b75..000000000 --- a/app/views/rule_parameter_sets/_transport_mode_parameter_set_fields.html.slim +++ /dev/null @@ -1,9 +0,0 @@ -= f.inputs class: 'transport_mode_parameter_sets nested-fields' do -  = f.input :transport_mode, as: :select, collection: transport_mode_label_pairs, include_blank: false, label: "transport_mode", wrapper_html: { class: 'fl1' } -  = f.input :inter_stop_area_distance_min, as: :number, label: "inter_stop_area_distance_min", wrapper_html: { class: 'fl1' } -  = f.input :inter_stop_area_distance_max, as: :number, label: "inter_stop_area_distance_max", wrapper_html: { class: 'fl2' } -  = f.input :speed_min, as: :number, label: "speed_min", wrapper_html: { class: 'fl2' } -  = f.input :speed_max, as: :number, label: "speed_max", wrapper_html: { class: 'fl2' } -  = f.input :inter_stop_duration_variation_max, as: :number, label: "inter_stop_duration_variation_max", wrapper_html: { class: 'fl2' } -   -  = link_to_remove_association t('actions.destroy'), f diff --git a/app/views/rule_parameter_sets/edit.html.slim b/app/views/rule_parameter_sets/edit.html.slim deleted file mode 100644 index b49b02cf6..000000000 --- a/app/views/rule_parameter_sets/edit.html.slim +++ /dev/null @@ -1,3 +0,0 @@ -= title_tag t('rule_parameter_sets.edit.title', rule_parameter_set: @rule_parameter_set.name ) - -== render 'form'
\ No newline at end of file diff --git a/app/views/rule_parameter_sets/index.html.slim b/app/views/rule_parameter_sets/index.html.slim deleted file mode 100644 index 6be57d68e..000000000 --- a/app/views/rule_parameter_sets/index.html.slim +++ /dev/null @@ -1,7 +0,0 @@ -= title_tag t('rule_parameter_sets.index.title') - -= paginated_content(@rule_parameter_sets) - -- content_for :sidebar do -  ul.actions -    li = link_to t('rule_parameter_sets.actions.new'), new_organisation_rule_parameter_set_path, class: 'add'
\ No newline at end of file diff --git a/app/views/rule_parameter_sets/mode.js.slim b/app/views/rule_parameter_sets/mode.js.slim deleted file mode 100644 index 392446a7c..000000000 --- a/app/views/rule_parameter_sets/mode.js.slim +++ /dev/null @@ -1,9 +0,0 @@ -| if ( $("#specific_parameters_#{@mode}").length == 0 ) { -|   - form_content = "" -|   - semantic_form_for [@referential, @rule_parameter_set] do |form| -|     - form_content += render(partial: 'mode_fields', locals: { mode: @mode, f: form }) -|   $('#added_mode_parameter_set').before("#{escape_javascript(form_content).html_safe}"); -| } else { -|   $("#_destroy_mode_#{@mode}").attr( "value", false); -|   $("#specific_parameters_#{@mode}").toggle(); -| }
\ No newline at end of file diff --git a/app/views/rule_parameter_sets/new.html.slim b/app/views/rule_parameter_sets/new.html.slim deleted file mode 100644 index c4e4c5b4d..000000000 --- a/app/views/rule_parameter_sets/new.html.slim +++ /dev/null @@ -1,3 +0,0 @@ -= title_tag t('rule_parameter_sets.new.title') - -== render 'form'
\ No newline at end of file diff --git a/app/views/rule_parameter_sets/show.html.slim b/app/views/rule_parameter_sets/show.html.slim deleted file mode 100644 index 6adfeab89..000000000 --- a/app/views/rule_parameter_sets/show.html.slim +++ /dev/null @@ -1,143 +0,0 @@ -= title_tag t('rule_parameter_sets.show.title', :rule_parameter_set => @rule_parameter_set.name ) - -.rule_parameter_set_show -  .summary -    p -      label = "#{RuleParameterSet.human_attribute_name('stop_areas_area')} : " -      = @rule_parameter_set.stop_areas_area - -    .attributes_group -      span.title = t(".min_distance") - -      .columns -        .two_columns -          label = "#{t('.inter_stop_area_distance_min')} : " -          span.value = @rule_parameter_set.inter_stop_area_distance_min - -        .two_columns -          label = "#{t('.inter_access_point_distance_min')} : " -          span.value = @rule_parameter_set.inter_access_point_distance_min - -    .attributes_group -      span.title = t(".max_distance") - -      .columns -        .two_columns -          label = "#{t('.parent_stop_area_distance_max')} : " -          span.value = @rule_parameter_set.parent_stop_area_distance_max - -        .two_columns -          label = "#{t('.inter_connection_link_distance_max')} : " -          span.value = @rule_parameter_set.inter_connection_link_distance_max - -      .columns -        .two_columns -          label = "#{t('.inter_access_link_distance_max')} : " -          span.value = @rule_parameter_set.inter_access_link_distance_max - -        .two_columns -          label = "#{t('.facility_stop_area_distance_max')} : " -          span.value = @rule_parameter_set.facility_stop_area_distance_max - -    .attributes_group -      span.title = t(".walk_speed") - -      .columns -        .four_columns -          label = "#{t('.walk_default_speed_max')} : " -          span.value = @rule_parameter_set.walk_default_speed_max - -        .four_columns -          label = "#{t('.walk_occasional_traveller_speed_max')} : " -          span.value = @rule_parameter_set.walk_occasional_traveller_speed_max - -        .four_columns -          label = "#{t('.walk_frequent_traveller_speed_max')} : " -          span.value = @rule_parameter_set.walk_frequent_traveller_speed_max - -        .four_columns -          label = "#{t('.walk_mobility_restricted_traveller_speed_max')} : " -          span.value = @rule_parameter_set.walk_mobility_restricted_traveller_speed_max - -    p -      label = "#{t('.inter_stop_duration_max')} :" -      = @rule_parameter_set.inter_stop_duration_max - -    p -      label = "#{RuleParameterSet.human_attribute_name('check_lines_in_groups')} : " -      = boolean_value(@rule_parameter_set.check_lines_in_groups) - -    p -      label = "#{RuleParameterSet.human_attribute_name('check_line_routes')} : " -      = boolean_value(@rule_parameter_set.check_line_routes) - -    p -      label = "#{RuleParameterSet.human_attribute_name('check_stop_parent')} : " -      = boolean_value(@rule_parameter_set.check_stop_parent) - -    p -      label = "#{RuleParameterSet.human_attribute_name('check_connection_link_on_physical')} : " -      = boolean_value(@rule_parameter_set.check_connection_link_on_physical) - -    p -      label = "#{RuleParameterSet.human_attribute_name('check_allowed_transport_modes')} : " -      = boolean_value(@rule_parameter_set.check_allowed_transport_modes) - -    .rule_parameter_by_mode -      label -        = t(".rule_parameter_by_mode") -        = t(".modes_allowed") if @rule_parameter_set.check_allowed_transport_modes == "1" - -      table.table.table-striped.table-condensed -        tr -          th = t("transport_modes.name") - -          - RuleParameterSet.mode_attribute_prefixes.each do |prefix| -            - unless prefix == "allowed_transport" -              th = RuleParameterSet.human_attribute_name(prefix) -        / To be removed, see #1936 -        - Chouette::Line.transport_mode.values.each do |mode| -          - if @rule_parameter_set.allowed(mode) -            tr -              td = t("transport_modes.label.#{mode}") - -              - RuleParameterSet.mode_attribute_prefixes.each do |prefix| -                - unless prefix == "allowed_transport" -                  td = @rule_parameter_set.send  "#{prefix}_mode_#{mode}" - -    .rule_parameter_by_object -      label = t("rule_parameter_sets.labels.columns_restrictions") - -      table.table.table-bordered.table-condensed -        - RuleParameterSet.validable_object_names.each do |object_name| -          - if @rule_parameter_set.selected(object_name) -            thead -              tr -                th = t("activerecord.models.#{object_name}.one") -                th = RuleParameterSet.human_attribute_name("attribute") -                th = RuleParameterSet.human_attribute_name("unique") -                th = RuleParameterSet.human_attribute_name("string_type") -                th = RuleParameterSet.human_attribute_name("min_size") -                th = RuleParameterSet.human_attribute_name("max_size") - -            tbody -              - RuleParameterSet.validable_columns[object_name].each do |col| -                - if @rule_parameter_set.selected_column(object_name,col) -                  tr -                    td -                    td = t("activerecord.attributes.#{object_name}.#{col}") -                    - suffix = "column_#{col}_object_#{object_name}" -                    td = unique(@rule_parameter_set.send  "unique_#{suffix}".to_sym) -                    td = pattern(@rule_parameter_set.send  "pattern_#{suffix}".to_sym) -                    td = @rule_parameter_set.send  "min_size_#{suffix}".to_sym -                    td = @rule_parameter_set.send  "max_size_#{suffix}".to_sym - -- content_for :sidebar do -  ul.actions -    li = link_to t('rule_parameter_sets.actions.new'), new_organisation_rule_parameter_set_path, class: 'add' - -    - if @rule_parameter_set.persisted? -      li = link_to t('rule_parameter_sets.actions.edit'), edit_organisation_rule_parameter_set_path( @rule_parameter_set), class: 'edit' - -      - if current_organisation.rule_parameter_sets.size > 1 -        li = link_to  t('rule_parameter_sets.actions.destroy'), organisation_rule_parameter_set_path( @rule_parameter_set), method: :delete, data: { confirm: t('rule_parameter_sets.actions.destroy_confirm') }, class: 'remove' diff --git a/config/breadcrumbs.rb b/config/breadcrumbs.rb index 0cabf9c6b..4ef16059f 100644 --- a/config/breadcrumbs.rb +++ b/config/breadcrumbs.rb @@ -3,7 +3,7 @@ crumb :root do  end  crumb :workbench do |workbench| -  link breadcrumb_name(workbench), workbench_path(workbench) +  link workbench.name, workbench_path(workbench)  end  crumb :referential do |referential| diff --git a/config/initializers/apartment.rb b/config/initializers/apartment.rb index 1c951317a..87bca0b45 100644 --- a/config/initializers/apartment.rb +++ b/config/initializers/apartment.rb @@ -24,7 +24,6 @@ Apartment.configure do |config|      'Organisation',      'User',      'Api::V1::ApiKey', -    'RuleParameterSet',      'StopAreaReferential',      'StopAreaReferentialMembership',      'StopAreaReferentialSync', diff --git a/config/locales/compliance_check_blocks.en.yml b/config/locales/compliance_check_blocks.en.yml new file mode 100644 index 000000000..a20fb483e --- /dev/null +++ b/config/locales/compliance_check_blocks.en.yml @@ -0,0 +1,8 @@ +en: +  activerecord: +    models: +      compliance_check_block: +        zero:  Control blocks +        one:   Control block +        other: Control blocks + diff --git a/config/locales/compliance_check_blocks.fr.yml b/config/locales/compliance_check_blocks.fr.yml new file mode 100644 index 000000000..3d385aff6 --- /dev/null +++ b/config/locales/compliance_check_blocks.fr.yml @@ -0,0 +1,7 @@ +fr: +  activerecord: +    models: +      compliance_check_block: +        zero:  "Groupe de contrôle" +        one:   "Groupe de contrôle" +        other: "Groupes de contrôles" diff --git a/config/locales/compliance_check_sets.en.yml b/config/locales/compliance_check_sets.en.yml index 89c142a49..5aa6f9740 100644 --- a/config/locales/compliance_check_sets.en.yml +++ b/config/locales/compliance_check_sets.en.yml @@ -1,9 +1,5 @@  en:    compliance_check_sets: -    index: -      title: Control reports -      new: Creating a Control Report -      edit: Update a Control Report      actions:            new: Add a control report            edit: Edit a control report @@ -12,12 +8,25 @@ en:      filters:            name: Specify a control report name...            error_period_filter: End date must be greater than or equal to begin date +    index: +      title: Compliance control set +      new: New compliance control set +      new_control: Creating a Control +      select_types: Control Type Selection +      edit: Edit compliance control set      search_no_results: No control reports match your search +    executed: +      title: Executed control report %{name}    activerecord: -          attributes: -            compliance_check_set: -              ref: réf -              creation_date: Created at -              associated_object: Associated object -              assigned_to: Assigned to -              compliance_control_set: Compliance control set +    attributes: +      compliance_check_set: +        ref: ref +        creation_date: Created at +        associated_object: Associated object +        assigned_to: Assigned to +        compliance_control_set: Compliance control set +        name: Name +    models: +      compliance_check_block: +        one: compliance_control_set +        other: compliance_control_sets diff --git a/config/locales/compliance_check_sets.fr.yml b/config/locales/compliance_check_sets.fr.yml index 8c21f33fd..8ad5af904 100644 --- a/config/locales/compliance_check_sets.fr.yml +++ b/config/locales/compliance_check_sets.fr.yml @@ -1,9 +1,5 @@  fr:    compliance_check_sets: -    index: -      title: Rapports de contrôle -      new: Création d'un rapport de contrôle -      edit: Édition d'un rapport de contrôle      actions:            new: Ajouter            edit: Editer @@ -12,12 +8,22 @@ fr:      filters:            name: Indiquez un nom d'un objet associé...            error_period_filter: La date de fin doit être supérieure ou égale à la date de début0 +    index: +      title: "Liste des jeux de contrôles"      search_no_results: Aucun rapport de contrôle ne correspond à votre recherche +    executed: +      title: Jeu de contrôles exécutés %{name}    activerecord: -          attributes: -            compliance_check_set: -              ref: réf -              creation_date: Date et heure de création -              associated_object: Objet associé -              assigned_to: Affectation -              compliance_control_set: jeu de contrôle +    attributes: +      compliance_check_set: +        ref: réf +        creation_date: Date et heure de création +        associated_object: Objet associé +        assigned_to: Affectation +        compliance_control_set: jeu de contrôle +        name: Nom +    models: +      compliance_check_block: +        zero:  "Groupe de contrôle" +        one:   "Groupe de contrôle" +        other: "Groupes de contrôles" diff --git a/config/locales/compliance_checks.en.yml b/config/locales/compliance_checks.en.yml index 7f3e317be..177c87852 100644 --- a/config/locales/compliance_checks.en.yml +++ b/config/locales/compliance_checks.en.yml @@ -1,2 +1,10 @@  en: +  activerecord: +    attributes: +      compliance_check: +        code: Code    compliance_checks: +    filters: +      subclass: Object +      criticity: Severity +      name: Name diff --git a/config/locales/compliance_checks.fr.yml b/config/locales/compliance_checks.fr.yml index 421574cbd..d11d37003 100644 --- a/config/locales/compliance_checks.fr.yml +++ b/config/locales/compliance_checks.fr.yml @@ -1,3 +1,14 @@  fr: +  activerecord: +    attributes: +      compliance_check: +        code: Code +        name: Nom +        criticity: Criticité +        comment: Commentaire    compliance_checks: +    filters: +      subclass: Objet +      criticity: Criticité +      name: Nom diff --git a/config/locales/import_tasks.en.yml b/config/locales/import_tasks.en.yml index ad633e872..34f7e6998 100644 --- a/config/locales/import_tasks.en.yml +++ b/config/locales/import_tasks.en.yml @@ -30,7 +30,6 @@ en:          no_save: "No save"          resources: "File to import"          references_type: "Data to be imported" -        rule_parameter_set_id: "Rule parameter set for compliance check"          object_id_prefix: "Neptune Id prefix"          max_distance_for_commercial: "Max distance for commercial stop"          max_distance_for_connection_link: "Max distance for connection link" diff --git a/config/locales/import_tasks.fr.yml b/config/locales/import_tasks.fr.yml index 13e796520..002ca03cb 100644 --- a/config/locales/import_tasks.fr.yml +++ b/config/locales/import_tasks.fr.yml @@ -30,7 +30,6 @@ fr:          no_save: "Pas de sauvegarde"          resources: "Fichier à importer"          references_type: "Données à importer" -        rule_parameter_set_id: "Jeu de paramètres pour validation"          object_id_prefix: "Préfixe d'identifiants"          max_distance_for_commercial: "Distance max pour créer les zones"          max_distance_for_connection_link: "Distance max pour créer les correspondances" diff --git a/config/locales/imports.en.yml b/config/locales/imports.en.yml index 10434dd19..97574007c 100644 --- a/config/locales/imports.en.yml +++ b/config/locales/imports.en.yml @@ -19,7 +19,6 @@ en:      show:        report: "Report"        imported_file: "Original file" -      rule_parameter_set: "Rule parameter set"        compliance_check: "Validation report"        compliance_check_of: "Validation of import: "        import_of_validation: "Import of the validation" @@ -69,7 +68,6 @@ en:          creator: "Creator"          references_type: "Data to be imported"          no_save: "No save" -        rule_parameter_set_id: "Rule parameter set for compliance check"          object_id_prefix: "Neptune Id prefix"          max_distance_for_commercial: "Max distance for commercial stop"          max_distance_for_connection_link: "Max distance for connection link" diff --git a/config/locales/imports.fr.yml b/config/locales/imports.fr.yml index 099488a6b..59107cccb 100644 --- a/config/locales/imports.fr.yml +++ b/config/locales/imports.fr.yml @@ -19,7 +19,6 @@ fr:      show:        report: "Rapport"        imported_file: "Fichier source" -      rule_parameter_set: "Jeu de paramètres"        compliance_check: "Test de conformité"        compliance_check_of: "Validation de l'import : "        import_of_validation: "L'import de la validation" @@ -69,7 +68,6 @@ fr:          creator: "Opérateur"          no_save: "Pas de sauvegarde"          references_type: "Données à importer" -        rule_parameter_set_id: "Jeu de paramètres pour validation"          object_id_prefix: "Préfixe d'identifiants"          max_distance_for_commercial: "Distance max pour créer les zones"          max_distance_for_connection_link: "Distance max pour créer les correspondances" diff --git a/config/locales/organisations.en.yml b/config/locales/organisations.en.yml index a64920daf..cade312e1 100644 --- a/config/locales/organisations.en.yml +++ b/config/locales/organisations.en.yml @@ -8,7 +8,6 @@ en:        key_not_registered: "No key registered"      show:        users: "Users" -      rule_parameter_sets: "Rule parameter sets"    activerecord:      models:        organisation: diff --git a/config/locales/organisations.fr.yml b/config/locales/organisations.fr.yml index 50cb9f3be..756615285 100644 --- a/config/locales/organisations.fr.yml +++ b/config/locales/organisations.fr.yml @@ -8,7 +8,6 @@ fr:        key_not_registered: "Pas de clé"      show:        users: "Utilisateurs" -      rule_parameter_sets: "Jeux de paramètres"    activerecord:      models:        organisation: diff --git a/config/locales/referentials.en.yml b/config/locales/referentials.en.yml index a2c6fcf59..8420e9539 100644 --- a/config/locales/referentials.en.yml +++ b/config/locales/referentials.en.yml @@ -86,7 +86,6 @@ en:          imports: "Imports"          exports: "Exports"          compliance_checks: "Validations" -        rule_parameter_sets: "Rule parameters sets"          data_format_restrictions: "Data format constraint"          data_format: "Favorite format for export"          timebands: "Time bands" diff --git a/config/locales/referentials.fr.yml b/config/locales/referentials.fr.yml index e132c959d..ec7ed776d 100644 --- a/config/locales/referentials.fr.yml +++ b/config/locales/referentials.fr.yml @@ -86,7 +86,6 @@ fr:          imports: "Imports"          exports: "Exports"          compliance_checks: "Validations" -        rule_parameter_sets: "Jeux de paramètres"          data_format_restrictions: "Format d'export privilégié"          data_format: "Format d'export privilégié"          timebands: "Créneaux horaires" diff --git a/config/locales/rule_parameter_sets.en.yml b/config/locales/rule_parameter_sets.en.yml deleted file mode 100644 index 814e97f1d..000000000 --- a/config/locales/rule_parameter_sets.en.yml +++ /dev/null @@ -1,78 +0,0 @@ -en: -  rule_parameter_sets: -    actions: -      new: "Add a new parameter set" -      edit: "Edit this parameter set" -      index: "Rule parameter sets" -      destroy: "Remove this rule parameter set" -      destroy_confirm: "Are you sure you want destroy this rule parameter set ?" -    new: -      title: "Add a new parameter set" -    destroy: -      last_rps_protected: "Delete refused. Last rule parameter set in current referential can't be destroyed." -    edit: -      title: "Update parameter set %{rule_parameter_set}" -    form: -      add_mode_parameter_set: "Add mode specific parameter set" -    show: -      title: "Parameter Set %{rule_parameter_set}" -      max_distance: "Maximum distance between " -      min_distance: "Minimum distance between " -      walk_speed: "Maximum walk speed for travellers" -      inter_stop_area_distance_min: "2 stop areas having different parent" -      parent_stop_area_distance_max: "a stop area and its own parent" -      inter_access_point_distance_min: "2 access with different names on a same stop area" -      inter_connection_link_distance_max: "stop areas in a connection link" -      walk_default_speed_max: "a regular one" -      walk_occasional_traveller_speed_max: "an occasional one" -      walk_frequent_traveller_speed_max: "a frequent one" -      walk_mobility_restricted_traveller_speed_max: "a mobility restricted one" -      inter_access_link_distance_max: "an access point and a linked stop area" -      inter_stop_duration_max: "Maximum duration between the moment when a vehicle is arriving at a stop and the moment when the vehicle is leaving" -      facility_stop_area_distance_max: "a stop area and a facility" -      rule_parameter_by_mode: "Parameters by mode" -      modes_allowed: " (only for allowed ones)" -    index: -      title: "Parameter sets" -    labels: -      columns_restrictions: "Check model objects atributes" -      attribute: "attribute" -      free_char: "free" -      num_char: "number only" -      alpha_char: "character only" -      lower_char: "lowercase only" -      upper_char: "uppercase only" -  activerecord: -    models: -      rule_parameter_set:  "Parameter Set for Conformity Rules" -    attributes: -      rule_parameter_set: -        name: "Name" -        inter_stop_area_distance_min: "Minimum distance between 2 stop areas having different parent" -        parent_stop_area_distance_max: "Maximum distance between a stop area and its own parent" -        stop_areas_area: "Geographic stop area envelop" -        inter_access_point_distance_min: "Minimum distance between 2 access having different name for a commun stop area" -        inter_connection_link_distance_max: "Maximum distance between stop area departure and stop area arrival in a connection link" -        walk_default_speed_max: "Maximum walk speed for a regular traveller" -        walk_occasional_traveller_speed_max: "Maximum walk speed for an occasional traveller" -        walk_frequent_traveller_speed_max: "Maximum walk speed for a frequent traveller" -        walk_mobility_restricted_traveller_speed_max: "Maximum walk speed for a mobility restricted traveller" -        inter_access_link_distance_max: "Access link maximum distance" -        inter_stop_duration_max: "Maximum duration for a stopping time" -        facility_stop_area_distance_max: "Maximum distance between a stop area and a facility" -        inter_stop_area_distance_min: "Maximum distance between 2 stop areas" -        inter_stop_area_distance_max: "Maximum distance between 2 stop areas" -        speed_min: "Minimum speed" -        speed_max: "Maximum speed" -        inter_stop_duration_variation_max: "Maximum duration gap between 2 vehicle journeys and between 2 following stops" -        check_lines_in_groups: "check if each line belongs scrictly to one group of line" -        check_line_routes:  "check if each line have 1 route or 2 routes coupled" -        check_stop_parent:  "check if all physical stop areas are owned by a commercial stop point" -        check_connection_link_on_physical: "check if connection links connect only physical stops" -        check_allowed_transport_modes: "Check transport modes" -        allowed_transport: "Allowed" -        attribute: "attribute" -        unique: "uniqness" -        string_type: "allowed characters" -        min_size: "minimal size or value" -        max_size: "maximal  size or value" diff --git a/config/locales/rule_parameter_sets.fr.yml b/config/locales/rule_parameter_sets.fr.yml deleted file mode 100644 index fd5d75938..000000000 --- a/config/locales/rule_parameter_sets.fr.yml +++ /dev/null @@ -1,78 +0,0 @@ -fr: -  rule_parameter_sets: -    actions: -      new: "Ajouter un jeu de paramètres" -      edit: "Editer ce jeu de paramètres" -      index: "Jeux de paramètres" -      destroy: "Supprimer ce jeu de paramètres" -      destroy_confirm: "Etes vous sûr de supprimer ce jeu de paramètres ?" -    new: -      title: "Ajouter un jeu de paramètres" -    form: -      add_mode_parameter_set: "Ajouter les paramètres spécifiques à un mode" -    edit: -      title: "Editer le jeu de paramètres %{rule_parameter_set}" -    destroy: -      last_rps_protected: "Suppresion impossible. L'espace de données doit compter au minimum un jeu de paramètres." -    show: -      title: "Jeu de paramètres %{rule_parameter_set}" -      max_distance: "Distance maximum entre : " -      min_distance: "Distance minimum entre : " -      walk_speed: "Vitesse de marche maximum d'un voyageur : " -      inter_stop_area_distance_min: "2 arrêts n'ayant pas le même parent" -      parent_stop_area_distance_max: "un arrêt et son parent" -      inter_access_point_distance_min: "2 accès de noms différents pour un même arrêt" -      inter_connection_link_distance_max: "les arrêts en correspondance" -      walk_default_speed_max: "ordinaire" -      walk_occasional_traveller_speed_max: "occasionnel" -      walk_frequent_traveller_speed_max: "habituel" -      walk_mobility_restricted_traveller_speed_max: "à mobilité réduite" -      inter_access_link_distance_max: "liaison accès - arrêt" -      facility_stop_area_distance_max: "un arrêt et un équipement" -      inter_stop_duration_max: "Durée maximum de stationnement à un arrêt" -      rule_parameter_by_mode: "Jeu de paramètres pour un mode de transport" -      modes_allowed: " (uniquement pour les modes autorisés)" -    index: -      title: "Jeux de paramètres" -    labels: -      columns_restrictions: "Contôles sur les attributs des objets du modèle" -      attribute: "attribut" -      free_char: "libre" -      num_char: "numérique" -      alpha_char: "alphabétique" -      lower_char: "minuscule" -      upper_char: "majuscule" -  activerecord: -    models: -      rule_parameter_set: "Jeu de paramètres pour le contrôle de qualité des données" -    attributes: -      rule_parameter_set: -        name: "Nom" -        inter_stop_area_distance_min: "Distance minimum entre 2 arrêts n'ayant pas le même parent" -        parent_stop_area_distance_max: "Distance maximum entre un arrêt et son parent" -        stop_areas_area: "Délimitation géographique des arrêts" -        inter_access_point_distance_min: "Distance minimum entre 2 accès de noms différents pour un même arrêt" -        inter_connection_link_distance_max: "Distance maximum entre les arrêts en correspondance" -        walk_default_speed_max: "Vitesse de marche maximum pour un voyageur ordinaire" -        walk_occasional_traveller_speed_max: "Vitesse de marche maximum pour un voyageur occasionnel" -        walk_frequent_traveller_speed_max: "Vitesse de marche maximum pour un voyageur habituel" -        walk_mobility_restricted_traveller_speed_max: "Vitesse de marche maximum pour un voyageur à mobilité réduite" -        inter_access_link_distance_max: "Distance maximum d'un liaison accès - arrêt" -        inter_stop_duration_max: "Durée maximum entre les horaires d'arrivée et de départ à un arrêt" -        facility_stop_area_distance_max: "Distance maximum entre un arrêt et un équipement" -        inter_stop_area_distance_min: "Distance minimum entre 2 arrêts" -        inter_stop_area_distance_max: "Distance maximum entre 2 arrêts" -        speed_min: "Vitesse minimum" -        speed_max: "Vitesse maximum" -        inter_stop_duration_variation_max: "Ecart maximum de durée entre 2 arrêts successifs pour les différentes courses" -        check_lines_in_groups: "Contrôler que chaque ligne appartient à un et un seul groupe de lignes" -        check_line_routes:  "Contrôler que chaque ligne a une séquence d'arrêt ou un couple A/R de séquences d'arrêts" -        check_stop_parent:  "Contrôler que chaque arrêt physique est rattaché à un arrêt commercial" -        check_connection_link_on_physical: "Contrôler que les correspondances ne relient que des arrêts physiques" -        check_allowed_transport_modes: "Contrôler les modes de transport des lignes et des courses" -        allowed_transport: "Autorisé" -        attribute: "attribut" -        unique: "unicité" -        string_type: "caractères autorisés" -        min_size: "taille ou valeur minimale" -        max_size: "taille ou valeur maximale" diff --git a/config/locales/validation_tasks.en.yml b/config/locales/validation_tasks.en.yml index 1b142e992..ebccae383 100644 --- a/config/locales/validation_tasks.en.yml +++ b/config/locales/validation_tasks.en.yml @@ -96,7 +96,6 @@ en:          status: "Status"          references_type: "subset"          no_save: "No save" -        rule_parameter_set_id: "Rule parameter set for compliance check"          object_id_prefix: "Neptune Id prefix"          max_distance_for_commercial: "Max distance for commercial stop"          max_distance_for_connection_link: "Max distance for connection link" diff --git a/config/locales/validation_tasks.fr.yml b/config/locales/validation_tasks.fr.yml index adbd9c99f..286807edd 100644 --- a/config/locales/validation_tasks.fr.yml +++ b/config/locales/validation_tasks.fr.yml @@ -96,7 +96,6 @@ fr:          status: "Status"          no_save: "Pas de sauvegarde"          references_type: "Sous ensemble" -        rule_parameter_set_id: "Jeu de paramètres pour validation"          object_id_prefix: "Préfixe d'identifiants"          max_distance_for_commercial: "Distance max pour créer les zones"          max_distance_for_connection_link: "Distance max pour créer les correspondances" diff --git a/config/locales/validations.en.yml b/config/locales/validations.en.yml index 5bac62ff3..aa63c2551 100644 --- a/config/locales/validations.en.yml +++ b/config/locales/validations.en.yml @@ -101,7 +101,6 @@ en:          status: "Status"          references_type: "subset"          no_save: "No save" -        rule_parameter_set_id: "Rule parameter set for compliance check"          object_id_prefix: "Neptune Id prefix"          max_distance_for_commercial: "Max distance for commercial stop"          max_distance_for_connection_link: "Max distance for connection link" diff --git a/config/locales/validations.fr.yml b/config/locales/validations.fr.yml index dc459bee0..d1c1355db 100644 --- a/config/locales/validations.fr.yml +++ b/config/locales/validations.fr.yml @@ -101,7 +101,6 @@ fr:          status: "Status"          no_save: "Pas de sauvegarde"          references_type: "Sous ensemble" -        rule_parameter_set_id: "Jeu de paramètres pour validation"          object_id_prefix: "Préfixe d'identifiants"          max_distance_for_commercial: "Distance max pour créer les zones"          max_distance_for_connection_link: "Distance max pour créer les correspondances" diff --git a/config/routes.rb b/config/routes.rb index 27db66c2c..8ea8168bf 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -12,6 +12,7 @@ ChouetteIhm::Application.routes.draw do        end      end      resources :compliance_check_sets, only: [:index, :show] do +      get :executed, on: :member        resources :compliance_checks, only: [:show]      end    end @@ -71,7 +72,6 @@ ChouetteIhm::Application.routes.draw do    resource :organisation, :only => [:show, :edit, :update] do      resources :users -    resources :rule_parameter_sets    end    resources :api_keys, :only => [:edit, :update, :new, :create, :destroy] diff --git a/db/migrate/20150218175300_set_organisation_id_to_rps.rb b/db/migrate/20150218175300_set_organisation_id_to_rps.rb deleted file mode 100644 index 024f5938e..000000000 --- a/db/migrate/20150218175300_set_organisation_id_to_rps.rb +++ /dev/null @@ -1,13 +0,0 @@ -class SetOrganisationIdToRps < ActiveRecord::Migration -  def up -    RuleParameterSet.where(organisation_id: nil).update_all "name = concat(name, ' ', id)" - -    # RuleParameterSet.joins(...).update_all("organisation_id = referentials.organisation_id") -    # fails (see https://github.com/rails/arel/pull/294) -    execute "UPDATE rule_parameter_sets SET organisation_id = referentials.organisation_id FROM referentials WHERE referentials.id = rule_parameter_sets.referential_id;" -  end - -  def down -    RuleParameterSet.update_all organisation_id: nil -  end -end diff --git a/db/migrate/20150219175300_insert_default_organisation.rb b/db/migrate/20150219175300_insert_default_organisation.rb index c8e97b562..2734893f5 100644 --- a/db/migrate/20150219175300_insert_default_organisation.rb +++ b/db/migrate/20150219175300_insert_default_organisation.rb @@ -1,10 +1,8 @@  class InsertDefaultOrganisation < ActiveRecord::Migration    class Organisation  < ActiveRecord::Base      attr_accessor :name - -    has_many :rule_parameter_sets, :dependent => :destroy    end -   +    def up      organisation = Organisation.find_or_create_by!(:name => "Chouette")      Referential.where(  :organisation_id => nil).each do |r| @@ -13,10 +11,6 @@ class InsertDefaultOrganisation < ActiveRecord::Migration      User.where(  :organisation_id => nil).each do |r|        r.update_attributes :organisation_id => organisation.id      end -    Organisation.all.each do |organisation| -      RuleParameterSet.default_for_all_modes( organisation).save if organisation.rule_parameter_sets.empty? -    end -    end    def down diff --git a/db/migrate/20171114102438_drop_table_rule_parameter_sets.rb b/db/migrate/20171114102438_drop_table_rule_parameter_sets.rb new file mode 100644 index 000000000..55dfd32df --- /dev/null +++ b/db/migrate/20171114102438_drop_table_rule_parameter_sets.rb @@ -0,0 +1,5 @@ +class DropTableRuleParameterSets < ActiveRecord::Migration +  def change +    drop_table :rule_parameter_sets +  end +end diff --git a/db/schema.rb b/db/schema.rb index a992eb32b..21aa73cd8 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -11,7 +11,7 @@  #  # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 20171113101005) do +ActiveRecord::Schema.define(version: 20171114102438) do    # These are extensions that must be enabled in order to support this database    enable_extension "plpgsql" @@ -682,14 +682,6 @@ ActiveRecord::Schema.define(version: 20171113101005) do      t.integer "line_id",      limit: 8    end -  create_table "rule_parameter_sets", id: :bigserial, force: :cascade do |t| -    t.text     "parameters" -    t.string   "name" -    t.datetime "created_at" -    t.datetime "updated_at" -    t.integer  "organisation_id", limit: 8 -  end -    create_table "stop_area_referential_memberships", id: :bigserial, force: :cascade do |t|      t.integer "organisation_id",          limit: 8      t.integer "stop_area_referential_id", limit: 8 diff --git a/lib/stif/netex_file.rb b/lib/stif/netex_file.rb index 424663c1c..a977c1ad3 100644 --- a/lib/stif/netex_file.rb +++ b/lib/stif/netex_file.rb @@ -52,8 +52,6 @@ module STIF        end      end -    LINE_FORMAT = /^offre_.*\.xml$/ -      def add_offer_file(file_name)        if file_name =~ /^offre_([^_]*)_/          line_refs << $1 diff --git a/spec/controllers/compliance_check_sets_controller_spec.rb b/spec/controllers/compliance_check_sets_controller_spec.rb index 804b0a658..3ddb1dad1 100644 --- a/spec/controllers/compliance_check_sets_controller_spec.rb +++ b/spec/controllers/compliance_check_sets_controller_spec.rb @@ -5,9 +5,9 @@ RSpec.describe ComplianceCheckSetsController, type: :controller do    let(:compliance_check_set) { create :compliance_check_set } -  describe "GET show" do +  describe "GET executed" do      it 'should be successful' do -      get :show, workbench_id: compliance_check_set.workbench.id, id: compliance_check_set.id +      get :executed, workbench_id: compliance_check_set.workbench.id, id: compliance_check_set.id        expect(response).to be_success      end    end diff --git a/spec/controllers/rule_parameter_sets_controller_spec.rb b/spec/controllers/rule_parameter_sets_controller_spec.rb deleted file mode 100644 index 0f57855b7..000000000 --- a/spec/controllers/rule_parameter_sets_controller_spec.rb +++ /dev/null @@ -1,36 +0,0 @@ -# require 'spec_helper' - -# describe RuleParameterSetsController, :type => :controller do -#   login_user -#   let(:mode){"air"} - -  # shared_examples_for "organisation dependant" do -  #   it "assigns rule_parameter_set.organisation as current organisation" do -  #     expect(assigns[:organisation]).to eq(assigns[:organisation].rule_parameter_sets[0].organisation) -  #   end -  # end - -  # describe "GET /index" do -  #   before(:each) do -  #     get :index -  #   end -  #   it "should assign rule_parameter_sets to organisation rule_parameter_sets" do -  #     expect(assigns[:rule_parameter_sets].size).to eq(assigns[:rule_parameter_sets][0].organisation.rule_parameter_sets.size) -  #     assigns[:rule_parameter_sets].each do |rps| -  #       expect(rps.organisation.id).to eq(assigns[:rule_parameter_sets][0].organisation.id) -  #     end -  #   end -  # end - -  # describe "GET /new" do -  #   before(:each) do -  #     get :new -  #   end -  #   it_behaves_like "organisation dependant" -  #   it "should assign rule_parameter_set with default params" do -  #     RuleParameterSet.default_params.each do |k,v| -  #       expect(assigns[:rule_parameter_set].send( k )).to eq(v) -  #     end -  #   end -  # end -# end diff --git a/spec/db/schema_spec.rb b/spec/db/schema_spec.rb new file mode 100644 index 000000000..a7fe0a162 --- /dev/null +++ b/spec/db/schema_spec.rb @@ -0,0 +1,49 @@ +RSpec.describe ActiveRecord::Schema do +  it "uses type `bigint` for primary and foreign keys" do +    expect('db/schema.rb').to use_bigint_keys +  end +end + + +RSpec::Matchers.define :use_bigint_keys do +  match do |filename| +    @original = "" +    @expected = "" + +    File.open(filename, 'r') do |f| +      f.each_line do |line| +        expected_line = line + +        # Primary key +        if line =~ /create_table\s/ && +          !(line =~ /id: \s+ (?: :bigserial | false)/x) +          expected_line = line.sub(/(create_table\s"\w+",\s)/, '\1id: :bigserial, ') +        end + +        # Foreign key +        if line =~ /t\.integer\s+"\w+_id"/ && +          !(line =~ /limit: 8/) +          expected_line = line.sub(/(t.integer\s+"\w+")/, '\1, limit: 8') +        end + +        @original += line +        @expected += expected_line +      end +    end + +    @original == @expected +  end + +  failure_message do |filename| +    <<-EOS +expected #{filename.inspect} to use bigint keys +Diff: #{diff} +    EOS +  end + +  def diff +    RSpec::Support::Differ.new( +      color: RSpec::Matchers.configuration.color? +    ).diff_as_string(@original, @expected) +  end +end diff --git a/spec/factories/compliance_control_blocks.rb b/spec/factories/compliance_control_blocks.rb index 4785d8419..94773d4b3 100644 --- a/spec/factories/compliance_control_blocks.rb +++ b/spec/factories/compliance_control_blocks.rb @@ -1,7 +1,8 @@  FactoryGirl.define do    factory :compliance_control_block do      sequence(:name) { |n| "Compliance control block #{n}" } -    transport_mode "air" +    transport_mode StifTransportModeEnumerations.transport_modes.first +    transport_submode StifTransportSubmodeEnumerations.transport_submodes.first      association :compliance_control_set    end  end diff --git a/spec/factories/netex_imports.rb b/spec/factories/netex_imports.rb index 9e9d836e4..b59267a0a 100644 --- a/spec/factories/netex_imports.rb +++ b/spec/factories/netex_imports.rb @@ -1,5 +1,7 @@  FactoryGirl.define do    factory :netex_import, class: NetexImport, parent: :import do      file { File.open(Rails.root.join('spec', 'fixtures', 'OFFRE_TRANSDEV_2017030112251.zip')) } +    association :parent, factory: :workbench_import +        end  end diff --git a/spec/factories/rule_parameter_sets.rb b/spec/factories/rule_parameter_sets.rb deleted file mode 100644 index e20fff8ce..000000000 --- a/spec/factories/rule_parameter_sets.rb +++ /dev/null @@ -1,9 +0,0 @@ -FactoryGirl.define do -  factory :rule_parameter_set do -    sequence(:name) { |n| "Test #{n}" } -    association :organisation -    after(:create) do |rsp| -      rsp.parameters = RuleParameterSet.default_for_all_modes( rsp.organisation).parameters -    end -  end -end diff --git a/spec/features/compliance_check_sets_spec.rb b/spec/features/compliance_check_sets_spec.rb new file mode 100644 index 000000000..7ba64b6b8 --- /dev/null +++ b/spec/features/compliance_check_sets_spec.rb @@ -0,0 +1,110 @@ +require 'rails_helper' + +RSpec.describe "ComplianceCheckSets", type: :feature do + +  include ComplianceCheckSetsHelper +  include TransportModeHelper + +  login_user + +  # We setup a control_set with two blocks and one direct control (meaning that it is not attached to a block) +  # Then we add one control to the first block and two controls to the second block +  let( :compliance_check_set ){ create :compliance_check_set, name: random_string } +  let(:blox){[ +    create( :compliance_check_block, +           compliance_check_set: compliance_check_set, transport_mode: 'bus', transport_submode: 'demandAndResponseBus'), +    create( :compliance_check_block, +           compliance_check_set: compliance_check_set, transport_mode: 'rail', transport_submode: 'suburbanRailway') +  ]} +  let!(:direct_checks){ make_check(nil, times: 2) + make_check(nil, severity: :error) } +  let!(:indirect_checks){ blox.flat_map{ |block| make_check(block) } } +  let( :all_checks ){ direct_checks + indirect_checks } + + +  context 'executed' do + +    before do +      visit(executed_compliance_check_set_path(compliance_check_set)) +    end + +    it 'we can see the expected content' do +      # Breadcrumbs +      expect_breadcrumb_links "Accueil", "Gestion de l'offre", "Liste des jeux de contrôles" + +      # Headline +      expect( page ).to have_content("Jeu de contrôles exécutés #{compliance_check_set.name}") + +      # Information Definition List +      expect( page.first('.dl-term') ).to have_content("Nom") +      expect( page.first('.dl-def') ).to have_content(compliance_check_set.name) + +      # Filters +      within( 'form.form-filter' ) do +        expect( page ).to have_content("Groupe de contrôle") +        expect( page ).to have_content("Objet") +        expect( page ).to have_content("Criticité") +      end + +      # Checks +      # Direct Children +      within(:xpath, xpath_for_div_of_block) do +        direct_checks.each do | direct_check | +          expect( page ).to have_content( direct_check.code )  +          expect( page ).to have_content( direct_check.name )  +          expect( page ).to have_content( direct_check.criticity )  +          expect( page ).to have_content( direct_check.comment )  +        end + +      end +      # Indirect Children +      compliance_check_set.compliance_check_blocks.each do | block | +        within(:xpath, xpath_for_div_of_block(block)) do +          block.compliance_checks.each do | check | +            expect( page ).to have_content( check.code )  +            expect( page ).to have_content( check.name )  +            expect( page ).to have_content( check.criticity )  +            expect( page ).to have_content( check.comment )  +          end +        end +      end +    end + +    it 'can filter the results and remove the filter' do +      # Filter +      check('error') +      click_on('Filtrer') +      all_checks.each do | check | +        if check.criticity == 'error' +          expect( page ).to have_content(check.code) +        else +          expect( page ).not_to have_content(check.code) +        end +      end + +      # Remove filter +      click_on('Effacer') +      all_checks.each do | check | +        expect( page ).to have_content(check.code) +      end +       +    end +  end + +  def make_check ccblock=nil, times: 1, severity: :warning +    times.times.map do +      make_one_check ccblock, severity +    end +  end + +  def make_one_check ccblock, severity +    create( :compliance_check, +           code: random_string, +           compliance_check_block: ccblock, +           compliance_check_set: compliance_check_set, +           criticity: severity) +  end + +  def xpath_for_div_of_block(block = nil) +    %{.//div[@class="col-lg-12"]/h2[contains(text(),"#{transport_mode_text(block)}")]/../../..} +  end +end diff --git a/spec/features/compliance_control_sets_spec.rb b/spec/features/compliance_control_sets_spec.rb index 500d4ce6f..bcb989cdc 100644 --- a/spec/features/compliance_control_sets_spec.rb +++ b/spec/features/compliance_control_sets_spec.rb @@ -25,7 +25,18 @@ RSpec.describe "ComplianceControlSets", type: :feature do        visit compliance_control_set_path( control_set )      end -    it 'we can see the controls inside their blocks' do +    it 'we can see the expected content' do +      # Breadcrumb +      expect_breadcrumb_links "Accueil", "Liste des jeux de contrôles" + +      # Headline +      expect( page ).to have_content("Consulter le jeu de contrôles #{control_set.name}") + +      # Information Definition List +      expect( page.first('.dl-term') ).to have_content("Nom") +      expect( page.first('.dl-def') ).to have_content(control_set.name) + +      # Children        controls.each do | control |          expect( page ).to have_content(control.code)        end @@ -76,7 +87,8 @@ RSpec.describe "ComplianceControlSets", type: :feature do        create( :generic_attribute_control_min_max,          code: random_string,          compliance_control_block: ccblock, -        compliance_control_set: control_set) +        compliance_control_set: control_set, +        criticity: severity)    end  end diff --git a/spec/models/compliance_check_block_spec.rb b/spec/models/compliance_check_block_spec.rb index a3d98d459..0629a645d 100644 --- a/spec/models/compliance_check_block_spec.rb +++ b/spec/models/compliance_check_block_spec.rb @@ -1,10 +1,17 @@ -require 'rails_helper' -  RSpec.describe ComplianceCheckBlock, type: :model do -  it 'should have a valid factory' do -    expect(FactoryGirl.build(:compliance_check_block)).to be_valid -  end    it { should belong_to :compliance_check_set }    it { should have_many :compliance_checks } + +  it { should allow_values(*%w{bus metro rail tram funicular}).for(:transport_mode) } +  it { should_not allow_values(*%w{bs mtro ril tramm Funicular}).for(:transport_mode) } + + +  it { should allow_values( *%w{ demandAndResponseBus nightBus airportLinkBus highFrequencyBus expressBus +                                 railShuttle suburbanRailway regionalRail interregionalRail }) +        .for(:transport_submode) } + +  it { should_not allow_values( *%w{ demandResponseBus nightus irportLinkBus highrequencyBus expressBUs +                                     Shuttle suburban regioalRail interregion4lRail }) +        .for(:transport_submode) }  end diff --git a/spec/models/compliance_control_block_spec.rb b/spec/models/compliance_control_block_spec.rb index c7440a5eb..4abe0ed9c 100644 --- a/spec/models/compliance_control_block_spec.rb +++ b/spec/models/compliance_control_block_spec.rb @@ -1,13 +1,20 @@  require 'rails_helper'  RSpec.describe ComplianceControlBlock, type: :model do -  subject { create(:compliance_control_block) } - -  it 'should have a valid factory' do -    expect(FactoryGirl.build(:compliance_control_block)).to be_valid -  end    it { should belong_to :compliance_control_set }    it { should have_many(:compliance_controls).dependent(:destroy) }    it { should validate_presence_of(:transport_mode) } + +  it { should allow_values(*%w{bus metro rail tram funicular}).for(:transport_mode) } +  it { should_not allow_values(*%w{bs mtro ril tramm Funicular}).for(:transport_mode) } + + +  it { should allow_values( *%w{ demandAndResponseBus nightBus airportLinkBus highFrequencyBus expressBus +                                 railShuttle suburbanRailway regionalRail interregionalRail }) +        .for(:transport_submode) } + +  it { should_not allow_values( *%w{ demandResponseBus nightus irportLinkBus highrequencyBus expressBUs +                                     Shuttle suburban regioalRail interregion4lRail }) +        .for(:transport_submode) }  end diff --git a/spec/models/import/netex_import_spec.rb b/spec/models/import/netex_import_spec.rb new file mode 100644 index 000000000..8ffeed1f4 --- /dev/null +++ b/spec/models/import/netex_import_spec.rb @@ -0,0 +1,33 @@ +RSpec.describe NetexImport, type: [:model, :with_commit] do + +  let( :boiv_iev_uri ){  URI("#{Rails.configuration.iev_url}/boiv_iev/referentials/importer/new?id=#{subject.id}")} + + +  before do +    allow(Thread).to receive(:new).and_yield +  end + +  context 'with referential' do +    subject{ build( :netex_import, id: random_int ) } + +    it 'will trigger the Java API' do +      with_stubbed_request(:get, boiv_iev_uri) do |request| +        with_commit{ subject.save! } +        expect(request).to have_been_requested +      end +    end +  end + +  context 'without referential' do +    subject { build :netex_import, referential_id: nil } + +    it 'its status is forced to aborted and the Java API is not callled' do +      with_stubbed_request(:get, boiv_iev_uri) do |request| +        with_commit{ subject.save! } +        expect(subject.reload.status).to eq('aborted') +        expect(request).not_to have_been_requested +      end +    end +  end + +end diff --git a/spec/models/import_spec.rb b/spec/models/import_spec.rb index 7be05908a..4e8aac3f4 100644 --- a/spec/models/import_spec.rb +++ b/spec/models/import_spec.rb @@ -13,9 +13,9 @@ RSpec.describe Import, type: :model do    it { should allow_value('file.zip').for(:file).with_message(I18n.t('activerecord.errors.models.import.attributes.file.wrong_file_extension')) }    it { should_not allow_values('file.json', 'file.png', 'file.pdf').for(:file) } -  let(:workbench_import) { build_stubbed(:workbench_import) } +  let(:workbench_import) {netex_import.parent}    let(:workbench_import_with_completed_steps) do -    workbench_import = build_stubbed( +    build_stubbed(        :workbench_import,        total_steps: 2,        current_step: 2 @@ -23,20 +23,18 @@ RSpec.describe Import, type: :model do    end    let(:netex_import) do -    netex_import = build_stubbed( -      :netex_import, -      parent: workbench_import +    build_stubbed( +      :netex_import      )    end    describe "#destroy" do      it "must destroy all child imports" do -      workbench_import = create(:workbench_import) -      create(:netex_import, parent: workbench_import) +      netex_import = create(:netex_import) -      workbench_import.destroy +      netex_import.parent.destroy -      expect(workbench_import).to be_destroyed +      expect(netex_import.parent).to be_destroyed        expect(NetexImport.count).to eq(0)      end diff --git a/spec/models/line_referential_spec.rb b/spec/models/line_referential_spec.rb index ea83c0ebd..46434a7ab 100644 --- a/spec/models/line_referential_spec.rb +++ b/spec/models/line_referential_spec.rb @@ -1,6 +1,4 @@ -require 'spec_helper' - -RSpec.describe LineReferential, :type => :model do +RSpec.describe LineReferential, type: :model do    it 'should have a valid factory' do      expect(FactoryGirl.build(:line_referential)).to be_valid    end @@ -11,9 +9,4 @@ RSpec.describe LineReferential, :type => :model do    it { should validate_presence_of(:sync_interval) }    it { should validate_presence_of(:objectid_format) } -  describe "#transport_modes" do -    it 'returns a list of all transport modes' do -      expect(FactoryGirl.create(:line_referential).class.transport_modes).to match_array(StifTransportModeEnumerations.transport_modes ) -    end -  end  end diff --git a/spec/models/netex_import_spec.rb b/spec/models/netex_import_spec.rb new file mode 100644 index 000000000..c6051a869 --- /dev/null +++ b/spec/models/netex_import_spec.rb @@ -0,0 +1,39 @@ +RSpec.describe NetexImport, type: :model do +  describe "#destroy" do +    it "must destroy its associated Referential if ready: false" do +      workbench_import = create(:workbench_import) +      referential_ready_false = create(:referential, ready: false) +      referential_ready_true = create(:referential, ready: true) +      create( +        :netex_import, +        parent: workbench_import, +        referential: referential_ready_false +      ) +      create( +        :netex_import, +        parent: workbench_import, +        referential: referential_ready_true +      ) + +      workbench_import.destroy + +      expect( +        Referential.where(id: referential_ready_false.id).exists? +      ).to be false +      expect( +        Referential.where(id: referential_ready_true.id).exists? +      ).to be true +    end + +    it "doesn't try to destroy nil referentials" do +      workbench_import = create(:workbench_import) +      create( +        :netex_import, +        parent: workbench_import, +        referential: nil +      ) + +      expect { workbench_import.destroy }.not_to raise_error +    end +  end +end diff --git a/spec/models/rule_parameter_set_spec.rb b/spec/models/rule_parameter_set_spec.rb deleted file mode 100644 index 71ab0cddd..000000000 --- a/spec/models/rule_parameter_set_spec.rb +++ /dev/null @@ -1,49 +0,0 @@ -# require 'spec_helper' - -# describe RuleParameterSet, :type => :model do - -#   describe ".mode_of_mode_attribute" do -#     it "should retreive attribute name" do -#       expect(subject.class.attribute_of_mode_attribute("dummy1_mode_dummy2")).to eq("dummy1") -#     end -#     it "should retreive mode" do -#       expect(subject.class.mode_of_mode_attribute("dummy1_mode_dummy2")).to eq("dummy2") -#     end -#   end - -#   RuleParameterSet.mode_attribute_prefixes.each do |prefix| -#     RuleParameterSet.all_modes.map do |mode| -#       "#{prefix}_mode_#{mode}".tap do |attribute| -#         describe "##{attribute}=" do -#           it "should store value on parameters hash" do -#             subject.send( "#{attribute}=".to_sym, 1234) -#             expect(subject.send( attribute.to_sym)).to eq(1234) -#             expect(subject.parameters["mode_#{mode}"][ prefix]).to eq(1234) -#           end -#         end -#         it { is_expected.to allow_mass_assignment_of attribute.to_sym} -#       end -#     end -#   end - -#   RuleParameterSet.general_attributes.each do |attribute| -#     describe "##{attribute}=" do -#       it "should store value on parameters hash" do -#         subject.send( "#{attribute}=".to_sym, 1234) -#         expect(subject.send( attribute.to_sym)).to eq(1234) -#         expect(subject.parameters[ attribute]).to eq(1234) -#       end -#     end -#     it { is_expected.to allow_mass_assignment_of attribute.to_sym} -#   end - -#   describe "#referential" do -#     it { is_expected.to validate_presence_of(:referential) } -#     it { is_expected.to allow_mass_assignment_of :referential_id } -#   end - -#   describe "#name" do -#     it { is_expected.to validate_presence_of(:name) } -#     it { is_expected.to allow_mass_assignment_of :name } -#   end -# end diff --git a/spec/support/breadcrumb_features.rb b/spec/support/breadcrumb_features.rb new file mode 100644 index 000000000..36bfce19c --- /dev/null +++ b/spec/support/breadcrumb_features.rb @@ -0,0 +1,15 @@ +module BreadcrumbFeatures +  def expect_breadcrumb_links *link_names  +    within('.breadcrumbs') do +      all('a').zip( link_names ).each do | link_element, link_content | +        within(link_element) do |  | +          expect(page).to have_content(link_content) +        end +      end +    end +  end +end + +RSpec.configure do | conf | +  conf.include BreadcrumbFeatures, type: :feature +end diff --git a/spec/support/webmock/helpers.rb b/spec/support/webmock/helpers.rb index fc6c77850..a6506c035 100644 --- a/spec/support/webmock/helpers.rb +++ b/spec/support/webmock/helpers.rb @@ -8,6 +8,11 @@ module Support        def make_headers(headers={}, authorization_token:)          headers.merge('Authorization' => "Token token=#{authorization_token.inspect}")        end + +      def with_stubbed_request( method, uri, &blk ) +        stub_request(method, uri).tap(&blk) +      end +      end    end  end diff --git a/spec/support/with_commit.rb b/spec/support/with_commit.rb new file mode 100644 index 000000000..2b4725f89 --- /dev/null +++ b/spec/support/with_commit.rb @@ -0,0 +1,10 @@ +module WithCommit +  def with_commit +    yield +    subject._run_commit_callbacks +  end +end + +RSpec.configure do |conf| +  conf.include WithCommit, type: :with_commit +end diff --git a/spec/views/rule_parameter_sets/new.html.erb_spec.rb b/spec/views/rule_parameter_sets/new.html.erb_spec.rb deleted file mode 100644 index 6f44311d5..000000000 --- a/spec/views/rule_parameter_sets/new.html.erb_spec.rb +++ /dev/null @@ -1,27 +0,0 @@ -require 'spec_helper' - -describe "/rule_parameter_sets/new", :type => :view do - -  assign_organisation -  let!(:organisation) { create(:organisation) } -  let!(:rule_parameter_set) { assign :rule_parameter_set, build( :rule_parameter_set, :organisation => organisation) } - -  describe "form" do - -    xit "should render input for name" do -      render -      expect(rendered).to have_selector("form") do -        with_selector "input[type=text][name=?]", rule_parameter_set.name -      end -    end -    xit "should render input div for added_mode_parameter_set" do -      render -      expect(rendered).to have_selector("form") do -        with_selector "#added_mode_parameter_set" -      end -    end - -  end - -end - | 
