Initial commit
This commit is contained in:
110
spec/policies/directory_policy_spec.rb
Normal file
110
spec/policies/directory_policy_spec.rb
Normal file
@@ -0,0 +1,110 @@
|
||||
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
|
||||
Reference in New Issue
Block a user