Skip to content
Snippets Groups Projects
Commit 3deb66ea authored by Semyon Pupkov's avatar Semyon Pupkov
Browse files

Add traits for ProjectFeatures to Project factory

parent 4d11903d
No related branches found
No related tags found
No related merge requests found
Showing
with 51 additions and 59 deletions
Loading
@@ -2,7 +2,6 @@ require 'spec_helper'
Loading
@@ -2,7 +2,6 @@ require 'spec_helper'
   
describe SearchController do describe SearchController do
let(:user) { create(:user) } let(:user) { create(:user) }
let(:project) { create(:empty_project, :public) }
   
before do before do
sign_in(user) sign_in(user)
Loading
@@ -22,7 +21,7 @@ describe SearchController do
Loading
@@ -22,7 +21,7 @@ describe SearchController do
before { sign_out(user) } before { sign_out(user) }
   
it "doesn't expose comments on issues" do it "doesn't expose comments on issues" do
project = create(:empty_project, :public, issues_access_level: ProjectFeature::PRIVATE) project = create(:empty_project, :public, :issues_private)
note = create(:note_on_issue, project: project) note = create(:note_on_issue, project: project)
   
get :show, project_id: project.id, scope: 'notes', search: note.note get :show, project_id: project.id, scope: 'notes', search: note.note
Loading
@@ -31,17 +30,8 @@ describe SearchController do
Loading
@@ -31,17 +30,8 @@ describe SearchController do
end end
end end
   
it "doesn't expose comments on issues" do
project = create(:empty_project, :public, issues_access_level: ProjectFeature::PRIVATE)
note = create(:note_on_issue, project: project)
get :show, project_id: project.id, scope: 'notes', search: note.note
expect(assigns[:search_objects].count).to eq(0)
end
it "doesn't expose comments on merge_requests" do it "doesn't expose comments on merge_requests" do
project = create(:empty_project, :public, merge_requests_access_level: ProjectFeature::PRIVATE) project = create(:empty_project, :public, :merge_requests_private)
note = create(:note_on_merge_request, project: project) note = create(:note_on_merge_request, project: project)
   
get :show, project_id: project.id, scope: 'notes', search: note.note get :show, project_id: project.id, scope: 'notes', search: note.note
Loading
@@ -50,7 +40,7 @@ describe SearchController do
Loading
@@ -50,7 +40,7 @@ describe SearchController do
end end
   
it "doesn't expose comments on snippets" do it "doesn't expose comments on snippets" do
project = create(:empty_project, :public, snippets_access_level: ProjectFeature::PRIVATE) project = create(:empty_project, :public, :snippets_private)
note = create(:note_on_project_snippet, project: project) note = create(:note_on_project_snippet, project: project)
   
get :show, project_id: project.id, scope: 'notes', search: note.note get :show, project_id: project.id, scope: 'notes', search: note.note
Loading
Loading
Loading
@@ -56,6 +56,25 @@ FactoryGirl.define do
Loading
@@ -56,6 +56,25 @@ FactoryGirl.define do
end end
end end
   
trait(:wiki_enabled) { wiki_access_level ProjectFeature::ENABLED }
trait(:wiki_disabled) { wiki_access_level ProjectFeature::DISABLED }
trait(:wiki_private) { wiki_access_level ProjectFeature::PRIVATE }
trait(:builds_enabled) { builds_access_level ProjectFeature::ENABLED }
trait(:builds_disabled) { builds_access_level ProjectFeature::DISABLED }
trait(:builds_private) { builds_access_level ProjectFeature::PRIVATE }
trait(:snippets_enabled) { snippets_access_level ProjectFeature::ENABLED }
trait(:snippets_disabled) { snippets_access_level ProjectFeature::DISABLED }
trait(:snippets_private) { snippets_access_level ProjectFeature::PRIVATE }
trait(:issues_disabled) { issues_access_level ProjectFeature::DISABLED }
trait(:issues_enabled) { issues_access_level ProjectFeature::ENABLED }
trait(:issues_private) { issues_access_level ProjectFeature::PRIVATE }
trait(:merge_requests_enabled) { merge_requests_access_level ProjectFeature::ENABLED }
trait(:merge_requests_disabled) { merge_requests_access_level ProjectFeature::DISABLED }
trait(:merge_requests_private) { merge_requests_access_level ProjectFeature::PRIVATE }
trait(:repository_enabled) { repository_access_level ProjectFeature::ENABLED }
trait(:repository_disabled) { repository_access_level ProjectFeature::DISABLED }
trait(:repository_private) { repository_access_level ProjectFeature::PRIVATE }
# Nest Project Feature attributes # Nest Project Feature attributes
transient do transient do
wiki_access_level ProjectFeature::ENABLED wiki_access_level ProjectFeature::ENABLED
Loading
Loading
Loading
@@ -7,7 +7,7 @@ feature 'Group merge requests page', feature: true do
Loading
@@ -7,7 +7,7 @@ feature 'Group merge requests page', feature: true do
include_examples 'project features apply to issuables', MergeRequest include_examples 'project features apply to issuables', MergeRequest
   
context 'archived issuable' do context 'archived issuable' do
let(:project_archived) { create(:project, :archived, group: group, merge_requests_access_level: ProjectFeature::ENABLED) } let(:project_archived) { create(:project, :archived, :merge_requests_enabled, group: group) }
let(:issuable_archived) { create(:merge_request, source_project: project_archived, target_project: project_archived, title: 'issuable of an archived project') } let(:issuable_archived) { create(:merge_request, source_project: project_archived, target_project: project_archived, title: 'issuable of an archived project') }
let(:access_level) { ProjectFeature::ENABLED } let(:access_level) { ProjectFeature::ENABLED }
let(:user) { user_in_group } let(:user) { user_in_group }
Loading
Loading
Loading
@@ -12,13 +12,8 @@ feature 'Project settings > Merge Requests', feature: true, js: true do
Loading
@@ -12,13 +12,8 @@ feature 'Project settings > Merge Requests', feature: true, js: true do
end end
   
context 'when Merge Request and Pipelines are initially enabled' do context 'when Merge Request and Pipelines are initially enabled' do
before do
project.project_feature.update_attribute('merge_requests_access_level', ProjectFeature::ENABLED)
end
context 'when Pipelines are initially enabled' do context 'when Pipelines are initially enabled' do
before do before do
project.project_feature.update_attribute('builds_access_level', ProjectFeature::ENABLED)
visit edit_project_path(project) visit edit_project_path(project)
end end
   
Loading
Loading
Loading
@@ -2,7 +2,6 @@ require 'spec_helper'
Loading
@@ -2,7 +2,6 @@ require 'spec_helper'
   
describe 'Projects > Wiki > User views wiki in project page', feature: true do describe 'Projects > Wiki > User views wiki in project page', feature: true do
let(:user) { create(:user) } let(:user) { create(:user) }
let(:project) { create(:empty_project) }
   
before do before do
project.team << [user, :master] project.team << [user, :master]
Loading
@@ -10,12 +9,11 @@ describe 'Projects > Wiki > User views wiki in project page', feature: true do
Loading
@@ -10,12 +9,11 @@ describe 'Projects > Wiki > User views wiki in project page', feature: true do
end end
   
context 'when repository is disabled for project' do context 'when repository is disabled for project' do
before do let(:project) do
project.project_feature.update!( create(:empty_project,
repository_access_level: ProjectFeature::DISABLED, :repository_disabled,
merge_requests_access_level: ProjectFeature::DISABLED, :merge_requests_disabled,
builds_access_level: ProjectFeature::DISABLED :builds_disabled)
)
end end
   
context 'when wiki homepage contains a link' do context 'when wiki homepage contains a link' do
Loading
Loading
Loading
@@ -224,7 +224,7 @@ describe IssuesFinder do
Loading
@@ -224,7 +224,7 @@ describe IssuesFinder do
let(:scope) { nil } let(:scope) { nil }
   
it "doesn't return team-only issues to non team members" do it "doesn't return team-only issues to non team members" do
project = create(:empty_project, :public, issues_access_level: ProjectFeature::PRIVATE) project = create(:empty_project, :public, :issues_private)
issue = create(:issue, project: project) issue = create(:issue, project: project)
   
expect(issues).not_to include(issue) expect(issues).not_to include(issue)
Loading
Loading
Loading
@@ -9,8 +9,6 @@ describe NotesFinder do
Loading
@@ -9,8 +9,6 @@ describe NotesFinder do
end end
   
describe '#execute' do describe '#execute' do
it 'finds notes on snippets when project is public and user isnt a member'
it 'finds notes on merge requests' do it 'finds notes on merge requests' do
create(:note_on_merge_request, project: project) create(:note_on_merge_request, project: project)
   
Loading
@@ -45,9 +43,11 @@ describe NotesFinder do
Loading
@@ -45,9 +43,11 @@ describe NotesFinder do
   
context 'on restricted projects' do context 'on restricted projects' do
let(:project) do let(:project) do
create(:empty_project, :public, issues_access_level: ProjectFeature::PRIVATE, create(:empty_project,
snippets_access_level: ProjectFeature::PRIVATE, :public,
merge_requests_access_level: ProjectFeature::PRIVATE) :issues_private,
:snippets_private,
:merge_requests_private)
end end
   
it 'publicly excludes notes on merge requests' do it 'publicly excludes notes on merge requests' do
Loading
Loading
Loading
@@ -203,7 +203,6 @@ describe ProjectsHelper do
Loading
@@ -203,7 +203,6 @@ describe ProjectsHelper do
   
context "when project moves from public to private" do context "when project moves from public to private" do
before do before do
project.project_feature.update_attributes(issues_access_level: ProjectFeature::ENABLED)
project.update_attributes(visibility_level: Gitlab::VisibilityLevel::PRIVATE) project.update_attributes(visibility_level: Gitlab::VisibilityLevel::PRIVATE)
end end
   
Loading
Loading
Loading
@@ -17,7 +17,7 @@ describe Gitlab::ContributionsCalendar do
Loading
@@ -17,7 +17,7 @@ describe Gitlab::ContributionsCalendar do
end end
   
let(:feature_project) do let(:feature_project) do
create(:empty_project, :public, issues_access_level: ProjectFeature::PRIVATE) do |project| create(:empty_project, :public, :issues_private) do |project|
create(:project_member, user: contributor, project: project).project create(:project_member, user: contributor, project: project).project
end end
end end
Loading
Loading
Loading
@@ -94,8 +94,6 @@ describe Gitlab::GitAccess, lib: true do
Loading
@@ -94,8 +94,6 @@ describe Gitlab::GitAccess, lib: true do
   
context 'when repository is enabled' do context 'when repository is enabled' do
it 'give access to download code' do it 'give access to download code' do
public_project.project_feature.update_attribute(:repository_access_level, ProjectFeature::ENABLED)
expect(subject.allowed?).to be_truthy expect(subject.allowed?).to be_truthy
end end
end end
Loading
Loading
Loading
@@ -36,8 +36,6 @@ describe Gitlab::GitAccessWiki, lib: true do
Loading
@@ -36,8 +36,6 @@ describe Gitlab::GitAccessWiki, lib: true do
   
context 'when wiki feature is enabled' do context 'when wiki feature is enabled' do
it 'give access to download wiki code' do it 'give access to download wiki code' do
project.project_feature.update_attribute(:wiki_access_level, ProjectFeature::ENABLED)
expect(subject.allowed?).to be_truthy expect(subject.allowed?).to be_truthy
end end
end end
Loading
Loading
Loading
@@ -202,7 +202,7 @@ describe Gitlab::GithubImport::Importer, lib: true do
Loading
@@ -202,7 +202,7 @@ describe Gitlab::GithubImport::Importer, lib: true do
end end
end end
   
let(:project) { create(:project, import_url: "#{repo_root}/octocat/Hello-World.git", wiki_access_level: ProjectFeature::DISABLED) } let(:project) { create(:project, :wiki_disabled, import_url: "#{repo_root}/octocat/Hello-World.git") }
let(:credentials) { { user: 'joe' } } let(:credentials) { { user: 'joe' } }
   
context 'when importing a GitHub project' do context 'when importing a GitHub project' do
Loading
Loading
Loading
@@ -6,7 +6,7 @@ describe Gitlab::ImportExport::ProjectTreeRestorer, services: true do
Loading
@@ -6,7 +6,7 @@ describe Gitlab::ImportExport::ProjectTreeRestorer, services: true do
let(:user) { create(:user) } let(:user) { create(:user) }
let(:namespace) { create(:namespace, owner: user) } let(:namespace) { create(:namespace, owner: user) }
let(:shared) { Gitlab::ImportExport::Shared.new(relative_path: "", project_path: 'path') } let(:shared) { Gitlab::ImportExport::Shared.new(relative_path: "", project_path: 'path') }
let!(:project) { create(:empty_project, name: 'project', path: 'project', builds_access_level: ProjectFeature::DISABLED, issues_access_level: ProjectFeature::DISABLED) } let!(:project) { create(:empty_project, :builds_disabled, :issues_disabled, name: 'project', path: 'project') }
let(:project_tree_restorer) { described_class.new(user: user, shared: shared, project: project) } let(:project_tree_restorer) { described_class.new(user: user, shared: shared, project: project) }
let(:restored_project_json) { project_tree_restorer.restore } let(:restored_project_json) { project_tree_restorer.restore }
   
Loading
@@ -121,13 +121,13 @@ describe Gitlab::ImportExport::ProjectTreeRestorer, services: true do
Loading
@@ -121,13 +121,13 @@ describe Gitlab::ImportExport::ProjectTreeRestorer, services: true do
end end
   
context 'with group' do context 'with group' do
let!(:project) do let!(:project) do
create(:empty_project, create(:empty_project,
name: 'project', :builds_disabled,
path: 'project', :issues_disabled,
builds_access_level: ProjectFeature::DISABLED, name: 'project',
issues_access_level: ProjectFeature::DISABLED, path: 'project',
group: create(:group)) group: create(:group))
end end
   
it 'has group labels' do it 'has group labels' do
Loading
Loading
Loading
@@ -152,6 +152,9 @@ describe Gitlab::ImportExport::ProjectTreeSaver, services: true do
Loading
@@ -152,6 +152,9 @@ describe Gitlab::ImportExport::ProjectTreeSaver, services: true do
project = create(:project, project = create(:project,
:public, :public,
:repository, :repository,
:issues_disabled,
:wiki_enabled,
:builds_private,
issues: [issue], issues: [issue],
snippets: [snippet], snippets: [snippet],
releases: [release], releases: [release],
Loading
@@ -185,10 +188,6 @@ describe Gitlab::ImportExport::ProjectTreeSaver, services: true do
Loading
@@ -185,10 +188,6 @@ describe Gitlab::ImportExport::ProjectTreeSaver, services: true do
create(:event, :created, target: milestone, project: project, author: user) create(:event, :created, target: milestone, project: project, author: user)
create(:service, project: project, type: 'CustomIssueTrackerService', category: 'issue_tracker') create(:service, project: project, type: 'CustomIssueTrackerService', category: 'issue_tracker')
   
project.project_feature.update_attribute(:issues_access_level, ProjectFeature::DISABLED)
project.project_feature.update_attribute(:wiki_access_level, ProjectFeature::ENABLED)
project.project_feature.update_attribute(:builds_access_level, ProjectFeature::PRIVATE)
project project
end end
   
Loading
Loading
Loading
@@ -163,7 +163,7 @@ describe Gitlab::ProjectSearchResults, lib: true do
Loading
@@ -163,7 +163,7 @@ describe Gitlab::ProjectSearchResults, lib: true do
end end
   
it "doesn't list issue notes when access is restricted" do it "doesn't list issue notes when access is restricted" do
project = create(:empty_project, :public, issues_access_level: ProjectFeature::PRIVATE) project = create(:empty_project, :public, :issues_private)
note = create(:note_on_issue, project: project) note = create(:note_on_issue, project: project)
   
results = described_class.new(user, project, note.note) results = described_class.new(user, project, note.note)
Loading
@@ -172,7 +172,7 @@ describe Gitlab::ProjectSearchResults, lib: true do
Loading
@@ -172,7 +172,7 @@ describe Gitlab::ProjectSearchResults, lib: true do
end end
   
it "doesn't list merge_request notes when access is restricted" do it "doesn't list merge_request notes when access is restricted" do
project = create(:empty_project, :public, merge_requests_access_level: ProjectFeature::PRIVATE) project = create(:empty_project, :public, :merge_requests_private)
note = create(:note_on_merge_request, project: project) note = create(:note_on_merge_request, project: project)
   
results = described_class.new(user, project, note.note) results = described_class.new(user, project, note.note)
Loading
Loading
Loading
@@ -247,7 +247,7 @@ describe Ability, lib: true do
Loading
@@ -247,7 +247,7 @@ describe Ability, lib: true do
end end
   
describe '.project_disabled_features_rules' do describe '.project_disabled_features_rules' do
let(:project) { create(:empty_project, wiki_access_level: ProjectFeature::DISABLED) } let(:project) { create(:empty_project, :wiki_disabled) }
   
subject { described_class.allowed(project.owner, project) } subject { described_class.allowed(project.owner, project) }
   
Loading
Loading
Loading
@@ -37,8 +37,6 @@ describe Guest, lib: true do
Loading
@@ -37,8 +37,6 @@ describe Guest, lib: true do
   
context 'when repository is enabled' do context 'when repository is enabled' do
it 'allows to pull the repo' do it 'allows to pull the repo' do
public_project.project_feature.update_attribute(:repository_access_level, ProjectFeature::ENABLED)
expect(Guest.can?(:download_code, public_project)).to eq(true) expect(Guest.can?(:download_code, public_project)).to eq(true)
end end
end end
Loading
Loading
Loading
@@ -57,7 +57,6 @@ describe ProjectFeature do
Loading
@@ -57,7 +57,6 @@ describe ProjectFeature do
context 'when feature is enabled for everyone' do context 'when feature is enabled for everyone' do
it "returns true" do it "returns true" do
features.each do |feature| features.each do |feature|
project.project_feature.update_attribute("#{feature}_access_level".to_sym, ProjectFeature::ENABLED)
expect(project.feature_available?(:issues, user)).to eq(true) expect(project.feature_available?(:issues, user)).to eq(true)
end end
end end
Loading
@@ -104,7 +103,6 @@ describe ProjectFeature do
Loading
@@ -104,7 +103,6 @@ describe ProjectFeature do
   
it "returns true when feature is enabled for everyone" do it "returns true when feature is enabled for everyone" do
features.each do |feature| features.each do |feature|
project.project_feature.update_attribute("#{feature}_access_level".to_sym, ProjectFeature::ENABLED)
expect(project.public_send("#{feature}_enabled?")).to eq(true) expect(project.public_send("#{feature}_enabled?")).to eq(true)
end end
end end
Loading
Loading
Loading
@@ -632,7 +632,7 @@ describe Project, models: true do
Loading
@@ -632,7 +632,7 @@ describe Project, models: true do
end end
   
describe '#has_wiki?' do describe '#has_wiki?' do
let(:no_wiki_project) { create(:empty_project, wiki_access_level: ProjectFeature::DISABLED, has_external_wiki: false) } let(:no_wiki_project) { create(:empty_project, :wiki_disabled, has_external_wiki: false) }
let(:wiki_enabled_project) { create(:empty_project) } let(:wiki_enabled_project) { create(:empty_project) }
let(:external_wiki_project) { create(:empty_project, has_external_wiki: true) } let(:external_wiki_project) { create(:empty_project, has_external_wiki: true) }
   
Loading
Loading
Loading
@@ -1232,7 +1232,7 @@ describe User, models: true do
Loading
@@ -1232,7 +1232,7 @@ describe User, models: true do
end end
   
it 'does not include projects for which issues are disabled' do it 'does not include projects for which issues are disabled' do
project = create(:empty_project, issues_access_level: ProjectFeature::DISABLED) project = create(:empty_project, :issues_disabled)
   
expect(user.projects_where_can_admin_issues.to_a).to be_empty expect(user.projects_where_can_admin_issues.to_a).to be_empty
expect(user.can?(:admin_issue, project)).to eq(false) expect(user.can?(:admin_issue, project)).to eq(false)
Loading
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment