From be95e03a5633696d79260ae61bb9e8f4c6755855 Mon Sep 17 00:00:00 2001 From: Stan Hu Date: Fri, 19 Aug 2016 23:19:42 -0700 Subject: Add spec for Ability.project_abilities --- spec/models/ability_spec.rb | 63 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 63 insertions(+) (limited to 'spec/models/ability_spec.rb') diff --git a/spec/models/ability_spec.rb b/spec/models/ability_spec.rb index 853f6943cef..fe32d367176 100644 --- a/spec/models/ability_spec.rb +++ b/spec/models/ability_spec.rb @@ -171,6 +171,69 @@ describe Ability, lib: true do end end + shared_examples_for ".project_abilities" do |enable_request_store| + before do + RequestStore.begin! if enable_request_store + end + + after do + if enable_request_store + RequestStore.end! + RequestStore.clear! + end + end + + describe '.project_abilities' do + let!(:project) { create(:empty_project, :public) } + let!(:user) { create(:user) } + + it 'returns permissions for admin user' do + admin = create(:admin) + + results = described_class.project_abilities(admin, project) + expect(results.count).to eq(90) + end + + it 'returns permissions for an owner' do + results = described_class.project_abilities(project.owner, project) + + expect(results.count).to eq(90) + end + + it 'returns permissions for a guest' do + project.team << [user, :guest] + + results = described_class.project_abilities(user, project) + + expect(results.count).to eq(22) + end + + it 'returns permissions for a developer' do + project.team << [user, :developer] + + results = described_class.project_abilities(user, project) + + expect(results.count).to eq(22) + end + + it 'returns permissions for a master' do + project.team << [user, :master] + + results = described_class.project_abilities(user, project) + + expect(results.count).to eq(22) + end + end + end + + describe '.project_abilities with RequestStore' do + it_behaves_like ".project_abilities", true + end + + describe '.project_abilities without RequestStore' do + it_behaves_like ".project_abilities", false + end + describe '.issues_readable_by_user' do context 'with an admin user' do it 'returns all given issues' do -- cgit v1.2.1 From 1954bb17eca49d375c92a4b8fa7f52fa39873a7d Mon Sep 17 00:00:00 2001 From: Stan Hu Date: Sat, 20 Aug 2016 06:33:53 -0700 Subject: Make Ability#project_abilities return unique values and fix counts --- spec/models/ability_spec.rb | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) (limited to 'spec/models/ability_spec.rb') diff --git a/spec/models/ability_spec.rb b/spec/models/ability_spec.rb index fe32d367176..aa3b2bbf471 100644 --- a/spec/models/ability_spec.rb +++ b/spec/models/ability_spec.rb @@ -191,21 +191,22 @@ describe Ability, lib: true do admin = create(:admin) results = described_class.project_abilities(admin, project) - expect(results.count).to eq(90) + + expect(results.count).to eq(68) end it 'returns permissions for an owner' do results = described_class.project_abilities(project.owner, project) - expect(results.count).to eq(90) + expect(results.count).to eq(68) end - it 'returns permissions for a guest' do - project.team << [user, :guest] + it 'returns permissions for a master' do + project.team << [user, :master] results = described_class.project_abilities(user, project) - expect(results.count).to eq(22) + expect(results.count).to eq(60) end it 'returns permissions for a developer' do @@ -213,15 +214,15 @@ describe Ability, lib: true do results = described_class.project_abilities(user, project) - expect(results.count).to eq(22) + expect(results.count).to eq(44) end - it 'returns permissions for a master' do - project.team << [user, :master] + it 'returns permissions for a guest' do + project.team << [user, :guest] results = described_class.project_abilities(user, project) - expect(results.count).to eq(22) + expect(results.count).to eq(21) end end end -- cgit v1.2.1 From 6686084c6502f10fd7e6b8963ab52526cb6831bf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alejandro=20Rodr=C3=ADguez?= Date: Fri, 26 Aug 2016 17:20:00 -0300 Subject: Fix "Wiki" link not appearing in navigation for projects with external wiki --- spec/models/ability_spec.rb | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'spec/models/ability_spec.rb') diff --git a/spec/models/ability_spec.rb b/spec/models/ability_spec.rb index aa3b2bbf471..c50ca38bdd9 100644 --- a/spec/models/ability_spec.rb +++ b/spec/models/ability_spec.rb @@ -282,4 +282,17 @@ describe Ability, lib: true do end end end + + describe '.project_disabled_features_rules' do + let(:project) { build(:project) } + + subject { described_class.project_disabled_features_rules(project) } + + context 'wiki named abilities' do + it 'disables wiki abilities if the project has no wiki' do + expect(project).to receive(:has_wiki?).and_return(false) + expect(subject).to include(:read_wiki, :create_wiki, :update_wiki, :admin_wiki) + end + end + end end -- cgit v1.2.1 From 29b1623a3615fb7683702f4de2dfeafca10f9c1c Mon Sep 17 00:00:00 2001 From: "http://jneen.net/" Date: Tue, 23 Aug 2016 16:19:36 -0700 Subject: add project_policy_spec to replace .project_abilities spec --- spec/models/ability_spec.rb | 64 --------------------------------------------- 1 file changed, 64 deletions(-) (limited to 'spec/models/ability_spec.rb') diff --git a/spec/models/ability_spec.rb b/spec/models/ability_spec.rb index c50ca38bdd9..c9e6a334c67 100644 --- a/spec/models/ability_spec.rb +++ b/spec/models/ability_spec.rb @@ -171,70 +171,6 @@ describe Ability, lib: true do end end - shared_examples_for ".project_abilities" do |enable_request_store| - before do - RequestStore.begin! if enable_request_store - end - - after do - if enable_request_store - RequestStore.end! - RequestStore.clear! - end - end - - describe '.project_abilities' do - let!(:project) { create(:empty_project, :public) } - let!(:user) { create(:user) } - - it 'returns permissions for admin user' do - admin = create(:admin) - - results = described_class.project_abilities(admin, project) - - expect(results.count).to eq(68) - end - - it 'returns permissions for an owner' do - results = described_class.project_abilities(project.owner, project) - - expect(results.count).to eq(68) - end - - it 'returns permissions for a master' do - project.team << [user, :master] - - results = described_class.project_abilities(user, project) - - expect(results.count).to eq(60) - end - - it 'returns permissions for a developer' do - project.team << [user, :developer] - - results = described_class.project_abilities(user, project) - - expect(results.count).to eq(44) - end - - it 'returns permissions for a guest' do - project.team << [user, :guest] - - results = described_class.project_abilities(user, project) - - expect(results.count).to eq(21) - end - end - end - - describe '.project_abilities with RequestStore' do - it_behaves_like ".project_abilities", true - end - - describe '.project_abilities without RequestStore' do - it_behaves_like ".project_abilities", false - end - describe '.issues_readable_by_user' do context 'with an admin user' do it 'returns all given issues' do -- cgit v1.2.1 From 78eabebedc2cb849dd95e5e7e9dff9f1d24f5ebe Mon Sep 17 00:00:00 2001 From: "http://jneen.net/" Date: Tue, 30 Aug 2016 12:34:28 -0700 Subject: don't use a deprecated api in ability_spec --- spec/models/ability_spec.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'spec/models/ability_spec.rb') diff --git a/spec/models/ability_spec.rb b/spec/models/ability_spec.rb index c9e6a334c67..b05510342bc 100644 --- a/spec/models/ability_spec.rb +++ b/spec/models/ability_spec.rb @@ -222,12 +222,12 @@ describe Ability, lib: true do describe '.project_disabled_features_rules' do let(:project) { build(:project) } - subject { described_class.project_disabled_features_rules(project) } + subject { described_class.allowed(project.owner, project) } context 'wiki named abilities' do it 'disables wiki abilities if the project has no wiki' do expect(project).to receive(:has_wiki?).and_return(false) - expect(subject).to include(:read_wiki, :create_wiki, :update_wiki, :admin_wiki) + expect(subject).not_to include(:read_wiki, :create_wiki, :update_wiki, :admin_wiki) end end end -- cgit v1.2.1 From 892dea67717c0efbd6a28f7639f34535ec0a8747 Mon Sep 17 00:00:00 2001 From: Felipe Artur Date: Mon, 1 Aug 2016 19:31:21 -0300 Subject: Project tools visibility level --- spec/models/ability_spec.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'spec/models/ability_spec.rb') diff --git a/spec/models/ability_spec.rb b/spec/models/ability_spec.rb index b05510342bc..1bdf005c823 100644 --- a/spec/models/ability_spec.rb +++ b/spec/models/ability_spec.rb @@ -220,13 +220,13 @@ describe Ability, lib: true do end describe '.project_disabled_features_rules' do - let(:project) { build(:project) } + let(:project) { create(:project, wiki_access_level: ProjectFeature::DISABLED) } subject { described_class.allowed(project.owner, project) } context 'wiki named abilities' do it 'disables wiki abilities if the project has no wiki' do - expect(project).to receive(:has_wiki?).and_return(false) + expect(project).to receive(:has_external_wiki?).and_return(false) expect(subject).not_to include(:read_wiki, :create_wiki, :update_wiki, :admin_wiki) end end -- cgit v1.2.1