Commit 07833d16760bf30e4c9c84653909d4efe2dbcaff

Authored by Robert Speicher
1 parent ae1a3148

Move Project's service specs to the correct location

[ci skip]
spec/services/project_transfer_service_spec.rb
... ... @@ -1,33 +0,0 @@
1   -require 'spec_helper'
2   -
3   -describe ProjectTransferService do
4   - before(:each) { enable_observers }
5   - after(:each) {disable_observers}
6   -
7   - context 'namespace -> namespace' do
8   - let(:user) { create(:user) }
9   - let(:group) { create(:group) }
10   - let(:project) { create(:project, namespace: user.namespace) }
11   -
12   - before do
13   - @result = service.transfer(project, group)
14   - end
15   -
16   - it { @result.should be_true }
17   - it { project.namespace.should == group }
18   - end
19   -
20   - context 'namespace -> no namespace' do
21   - let(:user) { create(:user) }
22   - let(:project) { create(:project, namespace: user.namespace) }
23   -
24   - it { lambda{service.transfer(project, nil)}.should raise_error(ActiveRecord::RecordInvalid) }
25   - end
26   -
27   - def service
28   - service = ProjectTransferService.new
29   - service.gitlab_shell.stub(mv_repository: true)
30   - service
31   - end
32   -end
33   -
spec/services/projects/create_service_spec.rb 0 → 100644
... ... @@ -0,0 +1,163 @@
  1 +require 'spec_helper'
  2 +
  3 +describe Projects::CreateService do
  4 + before(:each) { ActiveRecord::Base.observers.enable(:user_observer) }
  5 + after(:each) { ActiveRecord::Base.observers.disable(:user_observer) }
  6 +
  7 + describe :create_by_user do
  8 + before do
  9 + @user = create :user
  10 + @admin = create :user, admin: true
  11 + @opts = {
  12 + name: "GitLab",
  13 + namespace: @user.namespace
  14 + }
  15 + end
  16 +
  17 + context 'user namespace' do
  18 + before do
  19 + @project = create_project(@user, @opts)
  20 + end
  21 +
  22 + it { @project.should be_valid }
  23 + it { @project.owner.should == @user }
  24 + it { @project.namespace.should == @user.namespace }
  25 + end
  26 +
  27 + context 'group namespace' do
  28 + before do
  29 + @group = create :group
  30 + @group.add_owner(@user)
  31 +
  32 + @opts.merge!(namespace_id: @group.id)
  33 + @project = create_project(@user, @opts)
  34 + end
  35 +
  36 + it { @project.should be_valid }
  37 + it { @project.owner.should == @group }
  38 + it { @project.namespace.should == @group }
  39 + end
  40 +
  41 + context 'wiki_enabled creates repository directory' do
  42 + context 'wiki_enabled true creates wiki repository directory' do
  43 + before do
  44 + @project = create_project(@user, @opts)
  45 + @path = GollumWiki.new(@project, @user).send(:path_to_repo)
  46 + end
  47 +
  48 + it { File.exists?(@path).should be_true }
  49 + end
  50 +
  51 + context 'wiki_enabled false does not create wiki repository directory' do
  52 + before do
  53 + @opts.merge!(wiki_enabled: false)
  54 + @project = create_project(@user, @opts)
  55 + @path = GollumWiki.new(@project, @user).send(:path_to_repo)
  56 + end
  57 +
  58 + it { File.exists?(@path).should be_false }
  59 + end
  60 + end
  61 +
  62 + context 'respect configured visibility setting' do
  63 + before(:each) do
  64 + @settings = double("settings")
  65 + @settings.stub(:issues) { true }
  66 + @settings.stub(:merge_requests) { true }
  67 + @settings.stub(:wiki) { true }
  68 + @settings.stub(:wall) { true }
  69 + @settings.stub(:snippets) { true }
  70 + stub_const("Settings", Class.new)
  71 + @restrictions = double("restrictions")
  72 + @restrictions.stub(:restricted_visibility_levels) { [] }
  73 + Settings.stub_chain(:gitlab).and_return(@restrictions)
  74 + Settings.stub_chain(:gitlab, :default_projects_features).and_return(@settings)
  75 + end
  76 +
  77 + context 'should be public when setting is public' do
  78 + before do
  79 + @settings.stub(:visibility_level) { Gitlab::VisibilityLevel::PUBLIC }
  80 + @project = create_project(@user, @opts)
  81 + end
  82 +
  83 + it { @project.public?.should be_true }
  84 + end
  85 +
  86 + context 'should be private when setting is private' do
  87 + before do
  88 + @settings.stub(:visibility_level) { Gitlab::VisibilityLevel::PRIVATE }
  89 + @project = create_project(@user, @opts)
  90 + end
  91 +
  92 + it { @project.private?.should be_true }
  93 + end
  94 +
  95 + context 'should be internal when setting is internal' do
  96 + before do
  97 + @settings.stub(:visibility_level) { Gitlab::VisibilityLevel::INTERNAL }
  98 + @project = create_project(@user, @opts)
  99 + end
  100 +
  101 + it { @project.internal?.should be_true }
  102 + end
  103 + end
  104 +
  105 + context 'respect configured visibility restrictions setting' do
  106 + before(:each) do
  107 + @settings = double("settings")
  108 + @settings.stub(:issues) { true }
  109 + @settings.stub(:merge_requests) { true }
  110 + @settings.stub(:wiki) { true }
  111 + @settings.stub(:wall) { true }
  112 + @settings.stub(:snippets) { true }
  113 + @settings.stub(:visibility_level) { Gitlab::VisibilityLevel::PRIVATE }
  114 + stub_const("Settings", Class.new)
  115 + @restrictions = double("restrictions")
  116 + @restrictions.stub(:restricted_visibility_levels) { [ Gitlab::VisibilityLevel::PUBLIC ] }
  117 + Settings.stub_chain(:gitlab).and_return(@restrictions)
  118 + Settings.stub_chain(:gitlab, :default_projects_features).and_return(@settings)
  119 + end
  120 +
  121 + context 'should be private when option is public' do
  122 + before do
  123 + @opts.merge!(visibility_level: Gitlab::VisibilityLevel::PUBLIC)
  124 + @project = create_project(@user, @opts)
  125 + end
  126 +
  127 + it { @project.private?.should be_true }
  128 + end
  129 +
  130 + context 'should be public when option is public for admin' do
  131 + before do
  132 + @opts.merge!(visibility_level: Gitlab::VisibilityLevel::PUBLIC)
  133 + @project = create_project(@admin, @opts)
  134 + end
  135 +
  136 + it { @project.public?.should be_true }
  137 + end
  138 +
  139 + context 'should be private when option is private' do
  140 + before do
  141 + @opts.merge!(visibility_level: Gitlab::VisibilityLevel::PRIVATE)
  142 + @project = create_project(@user, @opts)
  143 + end
  144 +
  145 + it { @project.private?.should be_true }
  146 + end
  147 +
  148 + context 'should be internal when option is internal' do
  149 + before do
  150 + @opts.merge!(visibility_level: Gitlab::VisibilityLevel::INTERNAL)
  151 + @project = create_project(@user, @opts)
  152 + end
  153 +
  154 + it { @project.internal?.should be_true }
  155 + end
  156 + end
  157 + end
  158 +
  159 + def create_project(user, opts)
  160 + Projects::CreateService.new(user, opts).execute
  161 + end
  162 +end
  163 +
... ...
spec/services/projects/transfer_service_spec.rb 0 → 100644
... ... @@ -0,0 +1,33 @@
  1 +require 'spec_helper'
  2 +
  3 +describe ProjectTransferService do
  4 + before(:each) { enable_observers }
  5 + after(:each) {disable_observers}
  6 +
  7 + context 'namespace -> namespace' do
  8 + let(:user) { create(:user) }
  9 + let(:group) { create(:group) }
  10 + let(:project) { create(:project, namespace: user.namespace) }
  11 +
  12 + before do
  13 + @result = service.transfer(project, group)
  14 + end
  15 +
  16 + it { @result.should be_true }
  17 + it { project.namespace.should == group }
  18 + end
  19 +
  20 + context 'namespace -> no namespace' do
  21 + let(:user) { create(:user) }
  22 + let(:project) { create(:project, namespace: user.namespace) }
  23 +
  24 + it { lambda{service.transfer(project, nil)}.should raise_error(ActiveRecord::RecordInvalid) }
  25 + end
  26 +
  27 + def service
  28 + service = ProjectTransferService.new
  29 + service.gitlab_shell.stub(mv_repository: true)
  30 + service
  31 + end
  32 +end
  33 +
... ...
spec/services/projects/update_service_spec.rb 0 → 100644
... ... @@ -0,0 +1,111 @@
  1 +require 'spec_helper'
  2 +
  3 +describe Projects::UpdateService do
  4 + before(:each) { ActiveRecord::Base.observers.enable(:user_observer) }
  5 + after(:each) { ActiveRecord::Base.observers.disable(:user_observer) }
  6 +
  7 + describe :update_by_user do
  8 + before do
  9 + @user = create :user
  10 + @admin = create :user, admin: true
  11 + @project = create :project, creator_id: @user.id, namespace: @user.namespace
  12 + @opts = { project: {} }
  13 + end
  14 +
  15 + context 'should be private when updated to private' do
  16 + before do
  17 + @created_private = @project.private?
  18 +
  19 + @opts[:project].merge!(visibility_level: Gitlab::VisibilityLevel::PRIVATE)
  20 + update_project(@project, @user, @opts)
  21 + end
  22 +
  23 + it { @created_private.should be_true }
  24 + it { @project.private?.should be_true }
  25 + end
  26 +
  27 + context 'should be internal when updated to internal' do
  28 + before do
  29 + @created_private = @project.private?
  30 +
  31 + @opts[:project].merge!(visibility_level: Gitlab::VisibilityLevel::INTERNAL)
  32 + update_project(@project, @user, @opts)
  33 + end
  34 +
  35 + it { @created_private.should be_true }
  36 + it { @project.internal?.should be_true }
  37 + end
  38 +
  39 + context 'should be public when updated to public' do
  40 + before do
  41 + @created_private = @project.private?
  42 +
  43 + @opts[:project].merge!(visibility_level: Gitlab::VisibilityLevel::PUBLIC)
  44 + update_project(@project, @user, @opts)
  45 + end
  46 +
  47 + it { @created_private.should be_true }
  48 + it { @project.public?.should be_true }
  49 + end
  50 +
  51 + context 'respect configured visibility restrictions setting' do
  52 + before(:each) do
  53 + @restrictions = double("restrictions")
  54 + @restrictions.stub(:restricted_visibility_levels) { [ Gitlab::VisibilityLevel::PUBLIC ] }
  55 + Settings.stub_chain(:gitlab).and_return(@restrictions)
  56 + end
  57 +
  58 + context 'should be private when updated to private' do
  59 + before do
  60 + @created_private = @project.private?
  61 +
  62 + @opts[:project].merge!(visibility_level: Gitlab::VisibilityLevel::PRIVATE)
  63 + update_project(@project, @user, @opts)
  64 + end
  65 +
  66 + it { @created_private.should be_true }
  67 + it { @project.private?.should be_true }
  68 + end
  69 +
  70 + context 'should be internal when updated to internal' do
  71 + before do
  72 + @created_private = @project.private?
  73 +
  74 + @opts[:project].merge!(visibility_level: Gitlab::VisibilityLevel::INTERNAL)
  75 + update_project(@project, @user, @opts)
  76 + end
  77 +
  78 + it { @created_private.should be_true }
  79 + it { @project.internal?.should be_true }
  80 + end
  81 +
  82 + context 'should be private when updated to public' do
  83 + before do
  84 + @created_private = @project.private?
  85 +
  86 + @opts[:project].merge!(visibility_level: Gitlab::VisibilityLevel::PUBLIC)
  87 + update_project(@project, @user, @opts)
  88 + end
  89 +
  90 + it { @created_private.should be_true }
  91 + it { @project.private?.should be_true }
  92 + end
  93 +
  94 + context 'should be public when updated to public by admin' do
  95 + before do
  96 + @created_private = @project.private?
  97 +
  98 + @opts[:project].merge!(visibility_level: Gitlab::VisibilityLevel::PUBLIC)
  99 + update_project(@project, @admin, @opts)
  100 + end
  101 +
  102 + it { @created_private.should be_true }
  103 + it { @project.public?.should be_true }
  104 + end
  105 + end
  106 + end
  107 +
  108 + def update_project(project, user, opts)
  109 + Projects::UpdateService.new(project, user, opts).execute
  110 + end
  111 +end
... ...
spec/services/projects_create_service_spec.rb
... ... @@ -1,163 +0,0 @@
1   -require 'spec_helper'
2   -
3   -describe Projects::CreateService do
4   - before(:each) { ActiveRecord::Base.observers.enable(:user_observer) }
5   - after(:each) { ActiveRecord::Base.observers.disable(:user_observer) }
6   -
7   - describe :create_by_user do
8   - before do
9   - @user = create :user
10   - @admin = create :user, admin: true
11   - @opts = {
12   - name: "GitLab",
13   - namespace: @user.namespace
14   - }
15   - end
16   -
17   - context 'user namespace' do
18   - before do
19   - @project = create_project(@user, @opts)
20   - end
21   -
22   - it { @project.should be_valid }
23   - it { @project.owner.should == @user }
24   - it { @project.namespace.should == @user.namespace }
25   - end
26   -
27   - context 'group namespace' do
28   - before do
29   - @group = create :group
30   - @group.add_owner(@user)
31   -
32   - @opts.merge!(namespace_id: @group.id)
33   - @project = create_project(@user, @opts)
34   - end
35   -
36   - it { @project.should be_valid }
37   - it { @project.owner.should == @group }
38   - it { @project.namespace.should == @group }
39   - end
40   -
41   - context 'wiki_enabled creates repository directory' do
42   - context 'wiki_enabled true creates wiki repository directory' do
43   - before do
44   - @project = create_project(@user, @opts)
45   - @path = GollumWiki.new(@project, @user).send(:path_to_repo)
46   - end
47   -
48   - it { File.exists?(@path).should be_true }
49   - end
50   -
51   - context 'wiki_enabled false does not create wiki repository directory' do
52   - before do
53   - @opts.merge!(wiki_enabled: false)
54   - @project = create_project(@user, @opts)
55   - @path = GollumWiki.new(@project, @user).send(:path_to_repo)
56   - end
57   -
58   - it { File.exists?(@path).should be_false }
59   - end
60   - end
61   -
62   - context 'respect configured visibility setting' do
63   - before(:each) do
64   - @settings = double("settings")
65   - @settings.stub(:issues) { true }
66   - @settings.stub(:merge_requests) { true }
67   - @settings.stub(:wiki) { true }
68   - @settings.stub(:wall) { true }
69   - @settings.stub(:snippets) { true }
70   - stub_const("Settings", Class.new)
71   - @restrictions = double("restrictions")
72   - @restrictions.stub(:restricted_visibility_levels) { [] }
73   - Settings.stub_chain(:gitlab).and_return(@restrictions)
74   - Settings.stub_chain(:gitlab, :default_projects_features).and_return(@settings)
75   - end
76   -
77   - context 'should be public when setting is public' do
78   - before do
79   - @settings.stub(:visibility_level) { Gitlab::VisibilityLevel::PUBLIC }
80   - @project = create_project(@user, @opts)
81   - end
82   -
83   - it { @project.public?.should be_true }
84   - end
85   -
86   - context 'should be private when setting is private' do
87   - before do
88   - @settings.stub(:visibility_level) { Gitlab::VisibilityLevel::PRIVATE }
89   - @project = create_project(@user, @opts)
90   - end
91   -
92   - it { @project.private?.should be_true }
93   - end
94   -
95   - context 'should be internal when setting is internal' do
96   - before do
97   - @settings.stub(:visibility_level) { Gitlab::VisibilityLevel::INTERNAL }
98   - @project = create_project(@user, @opts)
99   - end
100   -
101   - it { @project.internal?.should be_true }
102   - end
103   - end
104   -
105   - context 'respect configured visibility restrictions setting' do
106   - before(:each) do
107   - @settings = double("settings")
108   - @settings.stub(:issues) { true }
109   - @settings.stub(:merge_requests) { true }
110   - @settings.stub(:wiki) { true }
111   - @settings.stub(:wall) { true }
112   - @settings.stub(:snippets) { true }
113   - @settings.stub(:visibility_level) { Gitlab::VisibilityLevel::PRIVATE }
114   - stub_const("Settings", Class.new)
115   - @restrictions = double("restrictions")
116   - @restrictions.stub(:restricted_visibility_levels) { [ Gitlab::VisibilityLevel::PUBLIC ] }
117   - Settings.stub_chain(:gitlab).and_return(@restrictions)
118   - Settings.stub_chain(:gitlab, :default_projects_features).and_return(@settings)
119   - end
120   -
121   - context 'should be private when option is public' do
122   - before do
123   - @opts.merge!(visibility_level: Gitlab::VisibilityLevel::PUBLIC)
124   - @project = create_project(@user, @opts)
125   - end
126   -
127   - it { @project.private?.should be_true }
128   - end
129   -
130   - context 'should be public when option is public for admin' do
131   - before do
132   - @opts.merge!(visibility_level: Gitlab::VisibilityLevel::PUBLIC)
133   - @project = create_project(@admin, @opts)
134   - end
135   -
136   - it { @project.public?.should be_true }
137   - end
138   -
139   - context 'should be private when option is private' do
140   - before do
141   - @opts.merge!(visibility_level: Gitlab::VisibilityLevel::PRIVATE)
142   - @project = create_project(@user, @opts)
143   - end
144   -
145   - it { @project.private?.should be_true }
146   - end
147   -
148   - context 'should be internal when option is internal' do
149   - before do
150   - @opts.merge!(visibility_level: Gitlab::VisibilityLevel::INTERNAL)
151   - @project = create_project(@user, @opts)
152   - end
153   -
154   - it { @project.internal?.should be_true }
155   - end
156   - end
157   - end
158   -
159   - def create_project(user, opts)
160   - Projects::CreateService.new(user, opts).execute
161   - end
162   -end
163   -
spec/services/projects_update_service_spec.rb
... ... @@ -1,111 +0,0 @@
1   -require 'spec_helper'
2   -
3   -describe Projects::UpdateService do
4   - before(:each) { ActiveRecord::Base.observers.enable(:user_observer) }
5   - after(:each) { ActiveRecord::Base.observers.disable(:user_observer) }
6   -
7   - describe :update_by_user do
8   - before do
9   - @user = create :user
10   - @admin = create :user, admin: true
11   - @project = create :project, creator_id: @user.id, namespace: @user.namespace
12   - @opts = { project: {} }
13   - end
14   -
15   - context 'should be private when updated to private' do
16   - before do
17   - @created_private = @project.private?
18   -
19   - @opts[:project].merge!(visibility_level: Gitlab::VisibilityLevel::PRIVATE)
20   - update_project(@project, @user, @opts)
21   - end
22   -
23   - it { @created_private.should be_true }
24   - it { @project.private?.should be_true }
25   - end
26   -
27   - context 'should be internal when updated to internal' do
28   - before do
29   - @created_private = @project.private?
30   -
31   - @opts[:project].merge!(visibility_level: Gitlab::VisibilityLevel::INTERNAL)
32   - update_project(@project, @user, @opts)
33   - end
34   -
35   - it { @created_private.should be_true }
36   - it { @project.internal?.should be_true }
37   - end
38   -
39   - context 'should be public when updated to public' do
40   - before do
41   - @created_private = @project.private?
42   -
43   - @opts[:project].merge!(visibility_level: Gitlab::VisibilityLevel::PUBLIC)
44   - update_project(@project, @user, @opts)
45   - end
46   -
47   - it { @created_private.should be_true }
48   - it { @project.public?.should be_true }
49   - end
50   -
51   - context 'respect configured visibility restrictions setting' do
52   - before(:each) do
53   - @restrictions = double("restrictions")
54   - @restrictions.stub(:restricted_visibility_levels) { [ Gitlab::VisibilityLevel::PUBLIC ] }
55   - Settings.stub_chain(:gitlab).and_return(@restrictions)
56   - end
57   -
58   - context 'should be private when updated to private' do
59   - before do
60   - @created_private = @project.private?
61   -
62   - @opts[:project].merge!(visibility_level: Gitlab::VisibilityLevel::PRIVATE)
63   - update_project(@project, @user, @opts)
64   - end
65   -
66   - it { @created_private.should be_true }
67   - it { @project.private?.should be_true }
68   - end
69   -
70   - context 'should be internal when updated to internal' do
71   - before do
72   - @created_private = @project.private?
73   -
74   - @opts[:project].merge!(visibility_level: Gitlab::VisibilityLevel::INTERNAL)
75   - update_project(@project, @user, @opts)
76   - end
77   -
78   - it { @created_private.should be_true }
79   - it { @project.internal?.should be_true }
80   - end
81   -
82   - context 'should be private when updated to public' do
83   - before do
84   - @created_private = @project.private?
85   -
86   - @opts[:project].merge!(visibility_level: Gitlab::VisibilityLevel::PUBLIC)
87   - update_project(@project, @user, @opts)
88   - end
89   -
90   - it { @created_private.should be_true }
91   - it { @project.private?.should be_true }
92   - end
93   -
94   - context 'should be public when updated to public by admin' do
95   - before do
96   - @created_private = @project.private?
97   -
98   - @opts[:project].merge!(visibility_level: Gitlab::VisibilityLevel::PUBLIC)
99   - update_project(@project, @admin, @opts)
100   - end
101   -
102   - it { @created_private.should be_true }
103   - it { @project.public?.should be_true }
104   - end
105   - end
106   - end
107   -
108   - def update_project(project, user, opts)
109   - Projects::UpdateService.new(project, user, opts).execute
110   - end
111   -end