diff options
author | Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com> | 2014-02-25 14:36:36 +0200 |
---|---|---|
committer | Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com> | 2014-02-25 14:36:36 +0200 |
commit | 75eed4eb834919a8cb5a47b8a05335fd2e74f99e (patch) | |
tree | a29861b4e0cae09fa644410c81862ebd9fb44100 /spec | |
parent | 9f20580ed7338e72ffeadff86c0d605a2802c957 (diff) | |
download | gitlab-ce-75eed4eb834919a8cb5a47b8a05335fd2e74f99e.tar.gz |
Implement project collection service
Main purpose is move big amount of methods from user, group, project
models and place filtering logic in one place.
It also fixes 500 error on group page for PostgreSQL
Signed-off-by: Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>
Diffstat (limited to 'spec')
-rw-r--r-- | spec/services/projects_collect_service_spec.rb | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/spec/services/projects_collect_service_spec.rb b/spec/services/projects_collect_service_spec.rb new file mode 100644 index 00000000000..107c6dce7c0 --- /dev/null +++ b/spec/services/projects_collect_service_spec.rb @@ -0,0 +1,51 @@ +require 'spec_helper' + +describe Projects::CollectService do + let(:user) { create :user } + let(:group) { create :group } + + let(:project1) { create(:empty_project, group: group, visibility_level: Project::PUBLIC) } + let(:project2) { create(:empty_project, group: group, visibility_level: Project::INTERNAL) } + let(:project3) { create(:empty_project, group: group, visibility_level: Project::PRIVATE) } + let(:project4) { create(:empty_project, group: group, visibility_level: Project::PRIVATE) } + + context 'non authenticated' do + subject { Projects::CollectService.new.execute(nil, group: group) } + + it { should include(project1) } + it { should_not include(project2) } + it { should_not include(project3) } + it { should_not include(project4) } + end + + context 'authenticated' do + subject { Projects::CollectService.new.execute(user, group: group) } + + it { should include(project1) } + it { should include(project2) } + it { should_not include(project3) } + it { should_not include(project4) } + end + + context 'authenticated, project member' do + before { project3.team << [user, :developer] } + + subject { Projects::CollectService.new.execute(user, group: group) } + + it { should include(project1) } + it { should include(project2) } + it { should include(project3) } + it { should_not include(project4) } + end + + context 'authenticated, group member' do + before { group.add_user(user, Gitlab::Access::DEVELOPER) } + + subject { Projects::CollectService.new.execute(user, group: group) } + + it { should include(project1) } + it { should include(project2) } + it { should include(project3) } + it { should include(project4) } + end +end |