Files
old-holivud2/spec/policies/directory_policy_spec.rb
2020-05-31 22:38:19 +02:00

111 lines
3.4 KiB
Ruby

require "rails_helper"
describe DirectoryPolicy do
subject { described_class }
let(:user_context) { build(:user_context, user: user, account: user.primary_account) }
context "for an associate" do
let(:user) { create(:user, :associate, admin: false) }
permissions :create? do
it { is_expected.to permit(user_context, subject) }
end
permissions :show? do
it { is_expected.to permit(user_context, subject) }
end
permissions :update? do
it { is_expected.to permit(user_context, subject) }
end
permissions :destroy? do
it { is_expected.to permit(user_context, subject) }
end
permissions :new_file? do
it { is_expected.to permit(user_context, subject) }
end
permissions :download_file? do
it { is_expected.to permit(user_context, subject) }
end
permissions :destroy_file? do
it { is_expected.to permit(user_context, subject) }
end
permissions :can_view_permissions_settings? do
it { is_expected.not_to permit(user_context, subject) }
end
permissions ".scope" do
let!(:project) { create(:project_with_directories, name: "Project", members: user, account: user.primary_account) }
subject { Pundit.policy_scope!(user_context, project.directories) }
it "returns all directories for associate" do
names = subject.map(&:name)
expect(names).to include("Shared")
expect(names).not_to include("Financial Documents")
expect(names).not_to include("Salaries")
end
end
end
context "for a project manager" do
let(:user) { create(:user, :manager, admin: false) }
permissions :create? do
it { is_expected.to permit(user_context, subject) }
end
permissions :show? do
it { is_expected.to permit(user_context, subject) }
end
permissions :update? do
it { is_expected.to permit(user_context, subject) }
end
permissions :destroy? do
it { is_expected.to permit(user_context, subject) }
end
permissions :new_file? do
it { is_expected.to permit(user_context, subject) }
end
permissions :download_file? do
it { is_expected.to permit(user_context, subject) }
end
permissions :destroy_file? do
it { is_expected.to permit(user_context, subject) }
end
permissions :can_view_permissions_settings? do
it { is_expected.to permit(user_context, subject) }
end
permissions ".scope" do
let!(:project) { create(:project_with_directories, name: "Project", members: user, account: user.primary_account) }
subject { Pundit.policy_scope!(user_context, project.directories) }
it "returns all directories for manager" do
names = subject.map(&:name)
expect(names).to include("Shared")
expect(names).to include("Financial Documents")
expect(names).not_to include("Salaries")
end
end
end
context "for account managers" do
permissions ".scope" do
let(:user) { create(:user, :account_manager) }
let!(:project) { create(:project_with_directories, name: "Project", account: user.primary_account) }
subject { Pundit.policy_scope!(user_context, project.directories) }
it "returns all directories for manager" do
names = subject.map(&:name)
expect(names).to include("Shared")
expect(names).to include("Financial Documents")
expect(names).to include("Salaries")
end
end
end
end