diff options
| -rw-r--r-- | app/controllers/api/v1/netex_imports_controller.rb | 3 | ||||
| -rw-r--r-- | app/models/compliance_check_message_export.rb | 2 | ||||
| -rw-r--r-- | app/models/import/message_export.rb | 2 | ||||
| -rw-r--r-- | app/models/import/netex.rb | 9 | ||||
| -rw-r--r-- | config/locales/compliance_check_messages.en.yml | 8 | ||||
| -rw-r--r-- | config/locales/compliance_check_messages.fr.yml | 8 | ||||
| -rw-r--r-- | config/locales/compliance_checks.en.yml | 3 | ||||
| -rw-r--r-- | config/locales/compliance_checks.fr.yml | 2 | ||||
| -rw-r--r-- | config/locales/import_messages.en.yml | 11 | ||||
| -rw-r--r-- | config/locales/import_messages.fr.yml | 9 | ||||
| -rw-r--r-- | spec/features/line_referentials_permissions_spec.rb | 30 | ||||
| -rw-r--r-- | spec/features/stop_area_referentials_permissions_spec.rb | 30 | ||||
| -rw-r--r-- | spec/policies/stop_area_referential_policy_spec.rb (renamed from spec/policies/sto_area_referential_policy_spec.rb) | 0 | 
13 files changed, 107 insertions, 10 deletions
| diff --git a/app/controllers/api/v1/netex_imports_controller.rb b/app/controllers/api/v1/netex_imports_controller.rb index 186ddc35c..2c9caf8fb 100644 --- a/app/controllers/api/v1/netex_imports_controller.rb +++ b/app/controllers/api/v1/netex_imports_controller.rb @@ -31,8 +31,7 @@ module Api        def create_netex_import          attributes = netex_import_params.merge creator: "Webservice"          @netex_import = Import::Netex.new attributes -        @netex_import.save! -        @netex_import.create_referential! +        @netex_import.create_with_referential!        rescue ActiveRecord::RecordInvalid          render json: {errors: @netex_import.errors}, status: 406          finish_action! diff --git a/app/models/compliance_check_message_export.rb b/app/models/compliance_check_message_export.rb index bbaaa8e3f..9b7f90fac 100644 --- a/app/models/compliance_check_message_export.rb +++ b/app/models/compliance_check_message_export.rb @@ -22,7 +22,7 @@ class ComplianceCheckMessageExport    end    def column_names -    ["criticity", "message key", "resource objectid", "link", "message"] +    ["criticity", "message_key", "resource_objectid", "link", "message"].map {|c| ComplianceCheckMessage.tmf(c)}    end    def to_csv(options = {}) diff --git a/app/models/import/message_export.rb b/app/models/import/message_export.rb index 7a7add08c..7d03783ed 100644 --- a/app/models/import/message_export.rb +++ b/app/models/import/message_export.rb @@ -22,7 +22,7 @@ class Import::MessageExport    end    def column_names -    ["criticity", "message key", "message", "file name", "line", "column"] +    ["criticity", "message_key", "message", "filename", "line", "column"].map {|c| Import::Message.tmf(c)}    end    def to_csv(options = {}) diff --git a/app/models/import/netex.rb b/app/models/import/netex.rb index 93604c5f9..eae84c1f7 100644 --- a/app/models/import/netex.rb +++ b/app/models/import/netex.rb @@ -10,7 +10,7 @@ class Import::Netex < Import::Base    validates_presence_of :parent -  def create_referential! +  def create_with_referential!      self.referential =        Referential.new(          name: self.name, @@ -19,15 +19,16 @@ class Import::Netex < Import::Base          metadatas: [referential_metadata]        )      self.referential.save -    unless self.referential.valid? +    if self.referential.invalid?        Rails.logger.info "Can't create referential for import #{self.id}: #{referential.inspect} #{referential.metadatas.inspect} #{referential.errors.messages}"        if referential.metadatas.all?{|m| m.line_ids.empty?}          parent.messages.create criticity: :error, message_key: "referential_creation_missing_lines", message_attributes: {referential_name: referential.name}        else          parent.messages.create criticity: :error, message_key: "referential_creation", message_attributes: {referential_name: referential.name}        end +    else +      save!      end -    save!    end    private @@ -45,7 +46,7 @@ class Import::Netex < Import::Base    def referential_metadata      metadata = ReferentialMetadata.new -    if self.file +    if self.file && self.file.path        netex_file = STIF::NetexFile.new(self.file.path)        frame = netex_file.frames.first diff --git a/config/locales/compliance_check_messages.en.yml b/config/locales/compliance_check_messages.en.yml index 88841f308..ade4329a2 100644 --- a/config/locales/compliance_check_messages.en.yml +++ b/config/locales/compliance_check_messages.en.yml @@ -30,3 +30,11 @@ en:      3_shape_1: "Tracé %{source_objectid} : le tracé passe trop loin de l'arrêt %{target_0_label} (%{target_0_objectid}) : %{error_value} > %{reference_value}"      3_shape_2: "Tracé %{source_objectid} : le tracé n'est pas défini entre les arrêts %{target_0_label} (%{target_0_objectid}) et %{target_1_label} (%{target_1_objectid})"      3_shape_3: "Le tracé de l'itinéraire %{source_objectid} est en écart avec la voirie sur %{error_value} sections" +  activerecord: +    attributes: +      compliance_check_message: +        criticity: Criticity +        message_key: Message key +        resource_objectid: Resource objectid +        link: Link +        message: Message
\ No newline at end of file diff --git a/config/locales/compliance_check_messages.fr.yml b/config/locales/compliance_check_messages.fr.yml index 167ef411a..21f100f46 100644 --- a/config/locales/compliance_check_messages.fr.yml +++ b/config/locales/compliance_check_messages.fr.yml @@ -30,3 +30,11 @@ fr:      3_shape_1: "Tracé %{source_objectid} : le tracé passe trop loin de l'arrêt %{target_0_label} (%{target_0_objectid}) : %{error_value} > %{reference_value}"      3_shape_2: "Tracé %{source_objectid} : le tracé n'est pas défini entre les arrêts %{target_0_label} (%{target_0_objectid}) et %{target_1_label} (%{target_1_objectid})"      3_shape_3: "Le tracé de l'itinéraire %{source_objectid} est en écart avec la voirie sur %{error_value} sections" +  activerecord: +    attributes: +      compliance_check_message: +        criticity: Criticité +        message_key: Clé du message +        resource_objectid: Objectid de la resource +        link: Lien +        message: Message
\ No newline at end of file diff --git a/config/locales/compliance_checks.en.yml b/config/locales/compliance_checks.en.yml index f960755da..679a136f0 100644 --- a/config/locales/compliance_checks.en.yml +++ b/config/locales/compliance_checks.en.yml @@ -3,6 +3,9 @@ en:      attributes:        compliance_check:          code: Code +        name: Name +        comment: Comment +        criticity: Criticity    compliance_checks:      filters:        subclass: Object diff --git a/config/locales/compliance_checks.fr.yml b/config/locales/compliance_checks.fr.yml index 041ab4f43..650062cbe 100644 --- a/config/locales/compliance_checks.fr.yml +++ b/config/locales/compliance_checks.fr.yml @@ -4,8 +4,8 @@ fr:        compliance_check:          code: Code          name: Nom -        criticity: Criticité          comment: Commentaire +        criticity: Criticité    compliance_checks:      filters:        subclass: Objet diff --git a/config/locales/import_messages.en.yml b/config/locales/import_messages.en.yml index 9f370d319..3ed98aaa6 100644 --- a/config/locales/import_messages.en.yml +++ b/config/locales/import_messages.en.yml @@ -1,5 +1,5 @@  en: -  import_message: +  import_messages:      corrupt_zip_file: "The zip file %{source_filename} is corrupted and cannot be read"      inconsistent_zip_file: "The zip file %{source_filename} contains unexpected directories: %{spurious_dirs}, which are ignored"      missing_calendar_in_zip_file: "The folder %{source_filename} lacks a calendar file" @@ -54,3 +54,12 @@ en:      2_netexstif_servicejourneypattern_3_1: "%{source_filename}-Ligne %{source_line_number}-Colonne %{source_column_number} : l'objet ServiceJourneyPattern d'identifiant %{source_objectid} n'a pas de valeur pour l'attribut ServiceJourneyPatternType"      2_netexstif_servicejourneypattern_3_2: "%{source_filename}-Ligne %{source_line_number}-Colonne %{source_column_number} : l'objet ServiceJourneyPattern d'identifiant %{source_objectid} a une valeur interdite %{error_value} pour l'attribut ServiceJourneyPatternType différente de 'passenger'"      2_netexstif_servicejourneypattern_4: "%{source_filename}-Ligne %{source_line_number}-Colonne %{source_column_number}, objet ServiceJourneyPattern d'identifiant %{source_objectid} : les attributs 'order' des StopPointInJourneyPattern ne sont pas croissants." +  activerecord: +    attributes: +      import_message: +        criticity: Criticity +        message_key: Message key +        message: Message +        filename: Filename +        line: Line +        column: Column diff --git a/config/locales/import_messages.fr.yml b/config/locales/import_messages.fr.yml index 5ecef68d1..5d82b9125 100644 --- a/config/locales/import_messages.fr.yml +++ b/config/locales/import_messages.fr.yml @@ -54,3 +54,12 @@ fr:      2_netexstif_servicejourneypattern_3_1: "%{source_filename}-Ligne %{source_line_number}-Colonne %{source_column_number} : l'objet ServiceJourneyPattern d'identifiant %{source_objectid} n'a pas de valeur pour l'attribut ServiceJourneyPatternType"      2_netexstif_servicejourneypattern_3_2: "%{source_filename}-Ligne %{source_line_number}-Colonne %{source_column_number} : l'objet ServiceJourneyPattern d'identifiant %{source_objectid} a une valeur interdite %{error_value} pour l'attribut ServiceJourneyPatternType différente de 'passenger'"      2_netexstif_servicejourneypattern_4: "%{source_filename}-Ligne %{source_line_number}-Colonne %{source_column_number}, objet ServiceJourneyPattern d'identifiant %{source_objectid} : les attributs 'order' des StopPointInJourneyPattern ne sont pas croissants." +  activerecord: +    attributes: +      import_message: +        criticity: Criticité +        message_key: Clé du message +        message: Message +        filename: Nom du fichier +        line: Ligne +        column: Colonne diff --git a/spec/features/line_referentials_permissions_spec.rb b/spec/features/line_referentials_permissions_spec.rb new file mode 100644 index 000000000..845ffe9c1 --- /dev/null +++ b/spec/features/line_referentials_permissions_spec.rb @@ -0,0 +1,30 @@ +RSpec.describe 'LineReferentials', type: :feature do +  login_user + +  let(:line_referential) { first_workgroup.line_referential } + +  describe 'permissions' do +    before do +      allow_any_instance_of(LineReferentialPolicy).to receive(:synchronize?).and_return permission +      visit path +    end + +    context 'on show view' do +      let( :path ){ line_referential_path(line_referential.id) } + +      context 'if present → ' do +        let( :permission ){ true } +        it 'shows an edit button' do +          expect(page).to have_css('a.btn.btn-default', text: I18n.t('actions.sync')) +        end +      end + +      context 'if absent → ' do +        let( :permission ){ false } +        it 'does not show any edit button' do +          expect(page).not_to have_css('a.btn.btn-default', text: I18n.t('actions.sync')) +        end +      end +    end +  end +end diff --git a/spec/features/stop_area_referentials_permissions_spec.rb b/spec/features/stop_area_referentials_permissions_spec.rb new file mode 100644 index 000000000..ca7038d51 --- /dev/null +++ b/spec/features/stop_area_referentials_permissions_spec.rb @@ -0,0 +1,30 @@ +RSpec.describe 'StopAreaReferentials', type: :feature do +  login_user + +  let(:stop_area_referential) { first_workgroup.stop_area_referential } + +  describe 'permissions' do +    before do +      allow_any_instance_of(StopAreaReferentialPolicy).to receive(:synchronize?).and_return permission +      visit path +    end + +    context 'on show view' do +      let( :path ){ stop_area_referential_path(stop_area_referential.id) } + +      context 'if present → ' do +        let( :permission ){ true } +        it 'shows an edit button' do +          expect(page).to have_css('a.btn.btn-default', text: I18n.t('actions.sync')) +        end +      end + +      context 'if absent → ' do +        let( :permission ){ false } +        it 'does not show any edit button' do +          expect(page).not_to have_css('a.btn.btn-default', text: I18n.t('actions.sync')) +        end +      end +    end +  end +end diff --git a/spec/policies/sto_area_referential_policy_spec.rb b/spec/policies/stop_area_referential_policy_spec.rb index 5bd6da427..5bd6da427 100644 --- a/spec/policies/sto_area_referential_policy_spec.rb +++ b/spec/policies/stop_area_referential_policy_spec.rb | 
