diff options
| -rw-r--r-- | app/helpers/links_helper.rb | 7 | ||||
| -rw-r--r-- | app/models/vehicle_journey_import.rb | 2 | ||||
| -rw-r--r-- | app/policies/import_policy.rb | 12 | ||||
| -rw-r--r-- | lib/stif/permission_translator.rb | 2 | ||||
| -rw-r--r-- | spec/policies/import_policy_spec.rb | 41 | 
5 files changed, 54 insertions, 10 deletions
| diff --git a/app/helpers/links_helper.rb b/app/helpers/links_helper.rb index 93f06df3c..4fb7a797d 100644 --- a/app/helpers/links_helper.rb +++ b/app/helpers/links_helper.rb @@ -1,11 +1,4 @@  module LinksHelper - -  def protected_element(&blk) -    blk.() -  rescue -    nil -  end -    def destroy_link_content(translation_key = 'actions.destroy')      content_tag(:span, nil, class: 'fa fa-trash mr-xs') + t(translation_key)    end diff --git a/app/models/vehicle_journey_import.rb b/app/models/vehicle_journey_import.rb index 44a6d457e..250f3a9e9 100644 --- a/app/models/vehicle_journey_import.rb +++ b/app/models/vehicle_journey_import.rb @@ -1,5 +1,3 @@ -# -*- coding: utf-8 -*- -  class VehicleJourneyImport    include ActiveModel::Validations    include ActiveModel::Conversion diff --git a/app/policies/import_policy.rb b/app/policies/import_policy.rb index 9e1d99a66..b12dcc167 100644 --- a/app/policies/import_policy.rb +++ b/app/policies/import_policy.rb @@ -4,4 +4,16 @@ class ImportPolicy < ApplicationPolicy        scope      end    end + +  def create? +    !archived? && user.has_permission?('imports.create') +  end + +  def destroy? +    !archived? && user.has_permission?('imports.destroy') +  end + +  def update? +    !archived? && user.has_permission?('imports.update') +  end  end diff --git a/lib/stif/permission_translator.rb b/lib/stif/permission_translator.rb index 963c5df6e..2bc565968 100644 --- a/lib/stif/permission_translator.rb +++ b/lib/stif/permission_translator.rb @@ -30,7 +30,7 @@ module Stif      def destructive_permissions_for(models)        @__destructive_permissions_for__ ||= -        models.product( %w{create destroy import update} ).map{ |model_action| model_action.join('.') } +        models.product( %w{create destroy update} ).map{ |model_action| model_action.join('.') }      end      def extra_permission_translation extra_permission diff --git a/spec/policies/import_policy_spec.rb b/spec/policies/import_policy_spec.rb new file mode 100644 index 000000000..fd9f3172c --- /dev/null +++ b/spec/policies/import_policy_spec.rb @@ -0,0 +1,41 @@ +RSpec.describe ImportPolicy, type: :policy do + +  let( :record ){ build_stubbed :import } +  before { stub_policy_scope(record) } + +  # +  #  Non Destructive +  #  --------------- + +  context 'Non Destructive actions →' do +    permissions :index? do +      it_behaves_like 'always allowed', 'anything', archived: true +    end +    permissions :show? do +      it_behaves_like 'always allowed', 'anything', archived: true +    end +  end + + +  # +  #  Destructive +  #  ----------- + +  context 'Destructive actions →' do +    permissions :create? do +      it_behaves_like 'permitted policy', 'imports.create', archived: true +    end +    permissions :destroy? do +      it_behaves_like 'permitted policy', 'imports.destroy', archived: true +    end +    permissions :edit? do +      it_behaves_like 'permitted policy', 'imports.update', archived: true +    end +    permissions :new? do +      it_behaves_like 'permitted policy', 'imports.create', archived: true +    end +    permissions :update? do +      it_behaves_like 'permitted policy', 'imports.update', archived: true +    end +  end +end | 
