Sha256: 928fdb75616fc7d9e95d9755211b19dd7e03fa35545126406cd7a759247384b3

Contents?: true

Size: 1.01 KB

Versions: 29

Compression:

Stored size: 1.01 KB

Contents

# frozen_string_literal: true

module ActionPolicy
  module RSpec
    # Adds Pundit-style syntax for testing policies
    module PunditSyntax # :nodoc: all
      module Matchers
        extend ::RSpec::Matchers::DSL

        matcher :permit do |user, record|
          match do |policy|
            permissions.all? do |permission|
              policy.new(record, user: user).apply(permission)
            end
          end
        end
      end

      module DSL
        def permissions(*list, &block)
          describe list.to_sentence do
            let(:permissions) { list }

            instance_eval(&block)
          end
        end
      end

      module PolicyExampleGroup
        include Matchers

        def self.included(base)
          base.metadata[:type] = :policy
          base.extend DSL
          super
        end
      end
    end
  end
end

RSpec.configure do |config|
  config.include(
    ActionPolicy::RSpec::PunditSyntax::PolicyExampleGroup,
    type: :policy,
    file_path: %r{spec/policies}
  )
end

Version data entries

29 entries across 29 versions & 1 rubygems

Version Path
action_policy-0.7.3 lib/action_policy/rspec/pundit_syntax.rb
action_policy-0.7.2 lib/action_policy/rspec/pundit_syntax.rb
action_policy-0.7.1 lib/action_policy/rspec/pundit_syntax.rb
action_policy-0.7.0 lib/action_policy/rspec/pundit_syntax.rb
action_policy-0.6.9 lib/action_policy/rspec/pundit_syntax.rb
action_policy-0.6.8 lib/action_policy/rspec/pundit_syntax.rb
action_policy-0.6.7 lib/action_policy/rspec/pundit_syntax.rb
action_policy-0.6.6 lib/action_policy/rspec/pundit_syntax.rb
action_policy-0.6.5 lib/action_policy/rspec/pundit_syntax.rb
action_policy-0.6.4 lib/action_policy/rspec/pundit_syntax.rb
action_policy-0.6.3 lib/action_policy/rspec/pundit_syntax.rb
action_policy-0.6.2 lib/action_policy/rspec/pundit_syntax.rb
action_policy-0.6.1 lib/action_policy/rspec/pundit_syntax.rb
action_policy-0.6.0 lib/action_policy/rspec/pundit_syntax.rb
action_policy-0.5.7 lib/action_policy/rspec/pundit_syntax.rb
action_policy-0.5.6 lib/action_policy/rspec/pundit_syntax.rb
action_policy-0.5.5 lib/action_policy/rspec/pundit_syntax.rb
action_policy-0.5.4 lib/action_policy/rspec/pundit_syntax.rb
action_policy-0.5.3 lib/action_policy/rspec/pundit_syntax.rb
action_policy-0.5.2 lib/action_policy/rspec/pundit_syntax.rb