Commit 96862096 authored by Mike Greiling's avatar Mike Greiling

add test to can_change_visibility_level? method

parent 003f140c
require 'spec_helper' require 'spec_helper'
describe ProjectsHelper do describe ProjectsHelper do
include ProjectForksHelper
describe "#project_status_css_class" do describe "#project_status_css_class" do
it "returns appropriate class" do it "returns appropriate class" do
expect(project_status_css_class("started")).to eq("active") expect(project_status_css_class("started")).to eq("active")
...@@ -10,9 +12,9 @@ describe ProjectsHelper do ...@@ -10,9 +12,9 @@ describe ProjectsHelper do
end end
describe "can_change_visibility_level?" do describe "can_change_visibility_level?" do
let(:project) { create(:project, :repository) } let(:project) { create(:project) }
let(:user) { create(:project_member, :reporter, user: create(:user), project: project).user } let(:user) { create(:project_member, :reporter, user: create(:user), project: project).user }
let(:fork_project) { Projects::ForkService.new(project, user).execute } let(:forked_project) { fork_project(project, user) }
it "returns false if there are no appropriate permissions" do it "returns false if there are no appropriate permissions" do
allow(helper).to receive(:can?) { false } allow(helper).to receive(:can?) { false }
...@@ -26,13 +28,21 @@ describe ProjectsHelper do ...@@ -26,13 +28,21 @@ describe ProjectsHelper do
expect(helper.can_change_visibility_level?(project, user)).to be_truthy expect(helper.can_change_visibility_level?(project, user)).to be_truthy
end end
it 'allows visibility level to be changed if the project is forked' do
allow(helper).to receive(:can?).with(user, :change_visibility_level, project) { true }
project.update! visibility_level: Gitlab::VisibilityLevel::PRIVATE
fork_project(project)
expect(helper.can_change_visibility_level?(project, user)).to be_truthy
end
context "forks" do context "forks" do
it "returns false if there are permissions and origin project is PRIVATE" do it "returns false if there are permissions and origin project is PRIVATE" do
allow(helper).to receive(:can?) { true } allow(helper).to receive(:can?) { true }
project.update visibility_level: Gitlab::VisibilityLevel::PRIVATE project.update visibility_level: Gitlab::VisibilityLevel::PRIVATE
expect(helper.can_change_visibility_level?(fork_project, user)).to be_falsey expect(helper.can_change_visibility_level?(forked_project, user)).to be_falsey
end end
it "returns true if there are permissions and origin project is INTERNAL" do it "returns true if there are permissions and origin project is INTERNAL" do
...@@ -40,7 +50,7 @@ describe ProjectsHelper do ...@@ -40,7 +50,7 @@ describe ProjectsHelper do
project.update visibility_level: Gitlab::VisibilityLevel::INTERNAL project.update visibility_level: Gitlab::VisibilityLevel::INTERNAL
expect(helper.can_change_visibility_level?(fork_project, user)).to be_truthy expect(helper.can_change_visibility_level?(forked_project, user)).to be_truthy
end end
end end
end end
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment