diff options
| -rw-r--r-- | app/policies/line_policy.rb | 5 | ||||
| -rw-r--r-- | spec/policies/line_policy_spec.rb | 18 |
2 files changed, 23 insertions, 0 deletions
diff --git a/app/policies/line_policy.rb b/app/policies/line_policy.rb index 443e3e22f..68c373c1e 100644 --- a/app/policies/line_policy.rb +++ b/app/policies/line_policy.rb @@ -1,4 +1,9 @@ +require_relative 'chain' class LinePolicy < BoivPolicy + extend Policies::Chain + + chain_policies :archived?, :!, policies: %i{create_footnote? destroy_footnote? edit_footnote?} + class Scope < Scope def resolve scope diff --git a/spec/policies/line_policy_spec.rb b/spec/policies/line_policy_spec.rb new file mode 100644 index 000000000..eb84bacc7 --- /dev/null +++ b/spec/policies/line_policy_spec.rb @@ -0,0 +1,18 @@ +RSpec.describe LinePolicy, type: :policy do + + %w{create destroy edit}.each do | permission | + footnote_permission = "#{permission}_footnote" + permissions "#{footnote_permission}?".to_sym do + it_behaves_like 'permitted policy', "footnotes.#{permission}", restricted_ready: true + end + end + + permissions :new_footnote? do + it_behaves_like 'permitted policy', 'footnotes.create', restricted_ready: true + end + + permissions :update_footnote? do + it_behaves_like 'permitted policy', 'footnotes.edit', restricted_ready: true + end + +end |
