Skip to content

Commit

Permalink
Refactor AsciicastPolicy
Browse files Browse the repository at this point in the history
  • Loading branch information
ku1ik committed Apr 25, 2015
1 parent 6bc2fd1 commit 6aeb881
Show file tree
Hide file tree
Showing 3 changed files with 10 additions and 58 deletions.
20 changes: 4 additions & 16 deletions app/policies/asciicast_policy.rb
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,8 @@ def resolve
def permitted_attributes
if user.admin? || record.owner?(user)
attrs = [:title, :description, :theme_name, :snapshot_at]
attrs << :featured if user.admin?
attrs << :private if record.owner?(user)
attrs << :featured if change_featured?
attrs << :private if change_visibility?

attrs
else
Expand All @@ -30,25 +30,13 @@ def destroy?
user.admin? || record.owner?(user)
end

def feature?
def change_featured?
return false unless user

user.admin?
end

def unfeature?
return false unless user

user.admin?
end

def make_public?
return false unless user

record.owner?(user)
end

def make_private?
def change_visibility?
return false unless user

record.owner?(user)
Expand Down
8 changes: 4 additions & 4 deletions app/presenters/asciicast_page_presenter.rb
Original file line number Diff line number Diff line change
Expand Up @@ -87,19 +87,19 @@ def show_delete_link?
end

def show_set_featured_link?
!asciicast.featured? && policy.feature?
!asciicast.featured? && policy.change_featured?
end

def show_unset_featured_link?
asciicast.featured? && policy.unfeature?
asciicast.featured? && policy.change_featured?
end

def show_make_private_link?
!asciicast.private? && policy.make_private?
!asciicast.private? && policy.change_visibility?
end

def show_make_public_link?
asciicast.private? && policy.make_public?
asciicast.private? && policy.change_visibility?
end

def show_description?
Expand Down
40 changes: 2 additions & 38 deletions spec/policies/asciicast_policy_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,7 @@
end
end

permissions :feature? do
permissions :change_featured? do
it "denies access if user is nil" do
expect(subject).not_to permit(nil, Asciicast.new)
end
Expand All @@ -90,43 +90,7 @@
end
end

permissions :unfeature? do
it "denies access if user is nil" do
expect(subject).not_to permit(nil, Asciicast.new)
end

it "grants access if user is admin" do
user = stub_model(User, admin?: true)
expect(subject).to permit(user, Asciicast.new)
end

it "denies access if user isn't admin" do
user = stub_model(User, admin?: false)
expect(subject).not_to permit(user, Asciicast.new)
end
end

permissions :make_public? do
let(:asciicast) { Asciicast.new }

it "denies access if user is nil" do
expect(subject).not_to permit(nil, asciicast)
end

it "grants access if user is owner of the asciicast" do
user = stub_model(User)
asciicast.user = user
expect(subject).to permit(user, asciicast)
end

it "denies access if user isn't owner of the asciicast" do
user = stub_model(User)
asciicast.user = stub_model(User)
expect(subject).not_to permit(user, asciicast)
end
end

permissions :make_private? do
permissions :change_visibility? do
let(:asciicast) { Asciicast.new }

it "denies access if user is nil" do
Expand Down

0 comments on commit 6aeb881

Please sign in to comment.