Allow everyone to have private asciicasts

element
Marcin Kulik 9 years ago
parent bffc76faa9
commit 7156130d90

@ -131,7 +131,7 @@ class User < ActiveRecord::Base
end
def new_asciicast_private?
supporter? && asciicasts_private_by_default?
asciicasts_private_by_default?
end
private

@ -31,7 +31,7 @@ class AsciicastPolicy < ApplicationPolicy
end
def change_visibility?
user.admin? || user.supporter?
user.admin? || record.owner?(user)
end
end

@ -7,10 +7,7 @@ class UserPolicy < ApplicationPolicy
end
def permitted_attributes
attrs = [:username, :name, :email, :theme_name]
attrs << :asciicasts_private_by_default if record.supporter?
attrs
[:username, :name, :email, :theme_name, :asciicasts_private_by_default]
end
def update?

@ -19,7 +19,7 @@ class UserEditPagePresenter
end
def show_privacy_controls?
user.supporter?
true
end
private

@ -0,0 +1,5 @@
class DropSupporterFromUsers < ActiveRecord::Migration
def change
remove_column :users, :supporter
end
end

@ -11,7 +11,7 @@
#
# It's strongly recommended that you check this file into your version control system.
ActiveRecord::Schema.define(version: 20150428103935) do
ActiveRecord::Schema.define(version: 20150510162214) do
# These are extensions that must be enabled in order to support this database
enable_extension "plpgsql"
@ -116,7 +116,6 @@ ActiveRecord::Schema.define(version: 20150428103935) do
t.string "auth_token"
t.string "theme_name"
t.string "temporary_username"
t.boolean "supporter", default: false, null: false
t.boolean "asciicasts_private_by_default", default: false, null: false
end

@ -28,7 +28,7 @@ describe AsciicastPolicy do
let(:asciicast) { Asciicast.new(user: user) }
it "doesn't include featured but includes private" do
expect(subject).to eq([:title, :description, :theme_name, :snapshot_at])
expect(subject).to eq([:title, :description, :theme_name, :snapshot_at, :private])
end
end
end
@ -100,14 +100,13 @@ describe AsciicastPolicy do
expect(subject).to permit(user, Asciicast.new)
end
it "denies access if user isn't supporter" do
user = stub_model(User, supporter?: false)
expect(subject).not_to permit(user, Asciicast.new)
it "grants access if user is creator of the asciicast" do
user = stub_model(User, admin?: false)
expect(subject).to permit(user, Asciicast.new(user: user))
end
it "grants access if user is a supporter" do
user = stub_model(User, supporter?: true)
expect(subject).to permit(user, Asciicast.new)
it "denies access if user isn't the creator of the asciicast" do
expect(subject).not_to permit(User.new, Asciicast.new(user: User.new))
end
end

@ -10,15 +10,7 @@ describe UserPolicy do
let(:user) { User.new }
it "includes basic form fields" do
expect(subject).to eq([:username, :name, :email, :theme_name])
end
context "when user is a supporter" do
let(:user) { stub_model(User, supporter?: true) }
it "also includes asciicasts_private_by_default" do
expect(subject).to eq([:username, :name, :email, :theme_name, :asciicasts_private_by_default])
end
expect(subject).to eq([:username, :name, :email, :theme_name, :asciicasts_private_by_default])
end
end

Loading…
Cancel
Save