Commit 28e13634dc9318dbd093a4561ee8ea16e1d71460
Exists in
spb-stable
and in
3 other branches
Merge branch 'improve/mr_diff'
Signed-off-by: Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com> Conflicts: features/steps/project/project_fork.rb features/steps/project/project_forked_merge_requests.rb features/steps/project/project_issue_tracker.rb features/steps/project/project_markdown_render.rb features/steps/shared/project.rb
Showing
61 changed files
with
492 additions
and
386 deletions
Show diff stats
app/assets/stylesheets/sections/merge_requests.scss
@@ -89,16 +89,3 @@ | @@ -89,16 +89,3 @@ | ||
89 | .merge-request-form-info { | 89 | .merge-request-form-info { |
90 | padding-top: 15px; | 90 | padding-top: 15px; |
91 | } | 91 | } |
92 | - | ||
93 | -.merge-request-branches { | ||
94 | - .commit-row-message { | ||
95 | - font-weight: normal !important; | ||
96 | - } | ||
97 | - | ||
98 | - .select2-container .select2-single { | ||
99 | - span { | ||
100 | - font-weight: bold; | ||
101 | - color: #555; | ||
102 | - } | ||
103 | - } | ||
104 | -} |
app/controllers/projects/merge_requests_controller.rb
@@ -76,7 +76,6 @@ class Projects::MergeRequestsController < Projects::ApplicationController | @@ -76,7 +76,6 @@ class Projects::MergeRequestsController < Projects::ApplicationController | ||
76 | @merge_request.author = current_user | 76 | @merge_request.author = current_user |
77 | @target_branches ||= [] | 77 | @target_branches ||= [] |
78 | if @merge_request.save | 78 | if @merge_request.save |
79 | - @merge_request.reload_code | ||
80 | redirect_to [@merge_request.target_project, @merge_request], notice: 'Merge request was successfully created.' | 79 | redirect_to [@merge_request.target_project, @merge_request], notice: 'Merge request was successfully created.' |
81 | else | 80 | else |
82 | @source_project = @merge_request.source_project | 81 | @source_project = @merge_request.source_project |
@@ -217,6 +216,7 @@ class Projects::MergeRequestsController < Projects::ApplicationController | @@ -217,6 +216,7 @@ class Projects::MergeRequestsController < Projects::ApplicationController | ||
217 | # or from cache if already merged | 216 | # or from cache if already merged |
218 | @commits = @merge_request.commits | 217 | @commits = @merge_request.commits |
219 | 218 | ||
219 | + @merge_request_diff = @merge_request.merge_request_diff | ||
220 | @allowed_to_merge = allowed_to_merge? | 220 | @allowed_to_merge = allowed_to_merge? |
221 | @show_merge_controls = @merge_request.opened? && @commits.any? && @allowed_to_merge | 221 | @show_merge_controls = @merge_request.opened? && @commits.any? && @allowed_to_merge |
222 | end | 222 | end |
app/models/merge_request.rb
@@ -31,6 +31,11 @@ class MergeRequest < ActiveRecord::Base | @@ -31,6 +31,11 @@ class MergeRequest < ActiveRecord::Base | ||
31 | belongs_to :target_project, foreign_key: :target_project_id, class_name: "Project" | 31 | belongs_to :target_project, foreign_key: :target_project_id, class_name: "Project" |
32 | belongs_to :source_project, foreign_key: :source_project_id, class_name: "Project" | 32 | belongs_to :source_project, foreign_key: :source_project_id, class_name: "Project" |
33 | 33 | ||
34 | + has_one :merge_request_diff, dependent: :destroy | ||
35 | + after_create :create_merge_request_diff | ||
36 | + | ||
37 | + delegate :commits, :diffs, :last_commit, :last_commit_short_sha, to: :merge_request_diff, prefix: nil | ||
38 | + | ||
34 | attr_accessible :title, :assignee_id, :source_project_id, :source_branch, :target_project_id, :target_branch, :milestone_id, :author_id_of_changes, :state_event, :description | 39 | attr_accessible :title, :assignee_id, :source_project_id, :source_branch, :target_project_id, :target_branch, :milestone_id, :author_id_of_changes, :state_event, :description |
35 | 40 | ||
36 | attr_accessor :should_remove_source_branch | 41 | attr_accessor :should_remove_source_branch |
@@ -53,11 +58,8 @@ class MergeRequest < ActiveRecord::Base | @@ -53,11 +58,8 @@ class MergeRequest < ActiveRecord::Base | ||
53 | end | 58 | end |
54 | 59 | ||
55 | state :opened | 60 | state :opened |
56 | - | ||
57 | state :reopened | 61 | state :reopened |
58 | - | ||
59 | state :closed | 62 | state :closed |
60 | - | ||
61 | state :merged | 63 | state :merged |
62 | end | 64 | end |
63 | 65 | ||
@@ -75,15 +77,10 @@ class MergeRequest < ActiveRecord::Base | @@ -75,15 +77,10 @@ class MergeRequest < ActiveRecord::Base | ||
75 | end | 77 | end |
76 | 78 | ||
77 | state :unchecked | 79 | state :unchecked |
78 | - | ||
79 | state :can_be_merged | 80 | state :can_be_merged |
80 | - | ||
81 | state :cannot_be_merged | 81 | state :cannot_be_merged |
82 | end | 82 | end |
83 | 83 | ||
84 | - serialize :st_commits | ||
85 | - serialize :st_diffs | ||
86 | - | ||
87 | validates :source_project, presence: true, unless: :allow_broken | 84 | validates :source_project, presence: true, unless: :allow_broken |
88 | validates :source_branch, presence: true | 85 | validates :source_branch, presence: true |
89 | validates :target_project, presence: true | 86 | validates :target_project, presence: true |
@@ -105,7 +102,7 @@ class MergeRequest < ActiveRecord::Base | @@ -105,7 +102,7 @@ class MergeRequest < ActiveRecord::Base | ||
105 | scope :closed, -> { with_states(:closed, :merged) } | 102 | scope :closed, -> { with_states(:closed, :merged) } |
106 | 103 | ||
107 | def validate_branches | 104 | def validate_branches |
108 | - if target_project==source_project && target_branch == source_branch | 105 | + if target_project == source_project && target_branch == source_branch |
109 | errors.add :branch_conflict, "You can not use same project/branch for source and target" | 106 | errors.add :branch_conflict, "You can not use same project/branch for source and target" |
110 | end | 107 | end |
111 | 108 | ||
@@ -120,8 +117,7 @@ class MergeRequest < ActiveRecord::Base | @@ -120,8 +117,7 @@ class MergeRequest < ActiveRecord::Base | ||
120 | end | 117 | end |
121 | 118 | ||
122 | def reload_code | 119 | def reload_code |
123 | - self.reloaded_commits | ||
124 | - self.reloaded_diffs | 120 | + merge_request_diff.reload_content if opened? |
125 | end | 121 | end |
126 | 122 | ||
127 | def check_if_can_be_merged | 123 | def check_if_can_be_merged |
@@ -132,42 +128,6 @@ class MergeRequest < ActiveRecord::Base | @@ -132,42 +128,6 @@ class MergeRequest < ActiveRecord::Base | ||
132 | end | 128 | end |
133 | end | 129 | end |
134 | 130 | ||
135 | - def diffs | ||
136 | - @diffs ||= (load_diffs(st_diffs) || []) | ||
137 | - end | ||
138 | - | ||
139 | - def reloaded_diffs | ||
140 | - if opened? && unmerged_diffs.any? | ||
141 | - self.st_diffs = dump_diffs(unmerged_diffs) | ||
142 | - self.save | ||
143 | - end | ||
144 | - end | ||
145 | - | ||
146 | - def broken_diffs? | ||
147 | - diffs == broken_diffs | ||
148 | - rescue | ||
149 | - true | ||
150 | - end | ||
151 | - | ||
152 | - def valid_diffs? | ||
153 | - !broken_diffs? | ||
154 | - end | ||
155 | - | ||
156 | - def unmerged_diffs | ||
157 | - diffs = if for_fork? | ||
158 | - Gitlab::Satellite::MergeAction.new(author, self).diffs_between_satellite | ||
159 | - else | ||
160 | - Gitlab::Git::Diff.between(target_project.repository, source_branch, target_branch) | ||
161 | - end | ||
162 | - | ||
163 | - diffs ||= [] | ||
164 | - diffs | ||
165 | - end | ||
166 | - | ||
167 | - def last_commit | ||
168 | - commits.first | ||
169 | - end | ||
170 | - | ||
171 | def merge_event | 131 | def merge_event |
172 | self.target_project.events.where(target_id: self.id, target_type: "MergeRequest", action: Event::MERGED).last | 132 | self.target_project.events.where(target_id: self.id, target_type: "MergeRequest", action: Event::MERGED).last |
173 | end | 133 | end |
@@ -176,46 +136,13 @@ class MergeRequest < ActiveRecord::Base | @@ -176,46 +136,13 @@ class MergeRequest < ActiveRecord::Base | ||
176 | self.target_project.events.where(target_id: self.id, target_type: "MergeRequest", action: Event::CLOSED).last | 136 | self.target_project.events.where(target_id: self.id, target_type: "MergeRequest", action: Event::CLOSED).last |
177 | end | 137 | end |
178 | 138 | ||
179 | - def commits | ||
180 | - load_commits(st_commits || []) | ||
181 | - end | ||
182 | - | ||
183 | - def probably_merged? | ||
184 | - unmerged_commits.empty? && | ||
185 | - commits.any? && opened? | ||
186 | - end | ||
187 | - | ||
188 | - def reloaded_commits | ||
189 | - if opened? && unmerged_commits.any? | ||
190 | - self.st_commits = dump_commits(unmerged_commits) | ||
191 | - save | ||
192 | - | ||
193 | - end | ||
194 | - commits | ||
195 | - end | ||
196 | - | ||
197 | - def unmerged_commits | ||
198 | - if for_fork? | ||
199 | - commits = Gitlab::Satellite::MergeAction.new(self.author, self).commits_between | ||
200 | - else | ||
201 | - commits = target_project.repository.commits_between(self.target_branch, self.source_branch) | ||
202 | - end | ||
203 | - | ||
204 | - if commits.present? | ||
205 | - commits = Commit.decorate(commits). | ||
206 | - sort_by(&:created_at). | ||
207 | - reverse | ||
208 | - end | ||
209 | - commits | ||
210 | - end | ||
211 | - | ||
212 | def merge!(user_id) | 139 | def merge!(user_id) |
213 | self.author_id_of_changes = user_id | 140 | self.author_id_of_changes = user_id |
214 | self.merge | 141 | self.merge |
215 | end | 142 | end |
216 | 143 | ||
217 | def automerge!(current_user, commit_message = nil) | 144 | def automerge!(current_user, commit_message = nil) |
218 | - if Gitlab::Satellite::MergeAction.new(current_user, self).merge!(commit_message) && self.unmerged_commits.empty? | 145 | + if Gitlab::Satellite::MergeAction.new(current_user, self).merge!(commit_message) |
219 | self.merge!(current_user.id) | 146 | self.merge!(current_user.id) |
220 | true | 147 | true |
221 | end | 148 | end |
@@ -225,7 +152,10 @@ class MergeRequest < ActiveRecord::Base | @@ -225,7 +152,10 @@ class MergeRequest < ActiveRecord::Base | ||
225 | end | 152 | end |
226 | 153 | ||
227 | def mr_and_commit_notes | 154 | def mr_and_commit_notes |
228 | - commit_ids = commits.map(&:id) | 155 | + # Fetch comments only from last 100 commits |
156 | + commits_for_notes_limit = 100 | ||
157 | + commit_ids = commits.last(commits_for_notes_limit).map(&:id) | ||
158 | + | ||
229 | project.notes.where( | 159 | project.notes.where( |
230 | "(noteable_type = 'MergeRequest' AND noteable_id = :mr_id) OR (noteable_type = 'Commit' AND commit_id IN (:commit_ids))", | 160 | "(noteable_type = 'MergeRequest' AND noteable_id = :mr_id) OR (noteable_type = 'Commit' AND commit_id IN (:commit_ids))", |
231 | mr_id: id, | 161 | mr_id: id, |
@@ -247,10 +177,6 @@ class MergeRequest < ActiveRecord::Base | @@ -247,10 +177,6 @@ class MergeRequest < ActiveRecord::Base | ||
247 | Gitlab::Satellite::MergeAction.new(current_user, self).format_patch | 177 | Gitlab::Satellite::MergeAction.new(current_user, self).format_patch |
248 | end | 178 | end |
249 | 179 | ||
250 | - def last_commit_short_sha | ||
251 | - @last_commit_short_sha ||= last_commit.sha[0..10] | ||
252 | - end | ||
253 | - | ||
254 | def for_fork? | 180 | def for_fork? |
255 | target_project != source_project | 181 | target_project != source_project |
256 | end | 182 | end |
@@ -327,34 +253,4 @@ class MergeRequest < ActiveRecord::Base | @@ -327,34 +253,4 @@ class MergeRequest < ActiveRecord::Base | ||
327 | message << description.to_s | 253 | message << description.to_s |
328 | message | 254 | message |
329 | end | 255 | end |
330 | - | ||
331 | - private | ||
332 | - | ||
333 | - def dump_commits(commits) | ||
334 | - commits.map(&:to_hash) | ||
335 | - end | ||
336 | - | ||
337 | - def load_commits(array) | ||
338 | - array.map { |hash| Commit.new(Gitlab::Git::Commit.new(hash)) } | ||
339 | - end | ||
340 | - | ||
341 | - def dump_diffs(diffs) | ||
342 | - if diffs == broken_diffs | ||
343 | - broken_diffs | ||
344 | - elsif diffs.respond_to?(:map) | ||
345 | - diffs.map(&:to_hash) | ||
346 | - end | ||
347 | - end | ||
348 | - | ||
349 | - def load_diffs(raw) | ||
350 | - if raw == broken_diffs | ||
351 | - broken_diffs | ||
352 | - elsif raw.respond_to?(:map) | ||
353 | - raw.map { |hash| Gitlab::Git::Diff.new(hash) } | ||
354 | - end | ||
355 | - end | ||
356 | - | ||
357 | - def broken_diffs | ||
358 | - [Gitlab::Git::Diff::BROKEN_DIFF] | ||
359 | - end | ||
360 | end | 256 | end |
@@ -0,0 +1,163 @@ | @@ -0,0 +1,163 @@ | ||
1 | +require Rails.root.join("app/models/commit") | ||
2 | + | ||
3 | +class MergeRequestDiff < ActiveRecord::Base | ||
4 | + # Prevent store of diff | ||
5 | + # if commits amount more then 200 | ||
6 | + COMMITS_SAFE_SIZE = 200 | ||
7 | + | ||
8 | + attr_reader :commits, :diffs | ||
9 | + | ||
10 | + belongs_to :merge_request | ||
11 | + | ||
12 | + attr_accessible :state, :st_commits, :st_diffs | ||
13 | + | ||
14 | + delegate :target_branch, :source_branch, to: :merge_request, prefix: nil | ||
15 | + | ||
16 | + state_machine :state, initial: :empty do | ||
17 | + state :collected | ||
18 | + state :timeout | ||
19 | + state :overflow_commits_safe_size | ||
20 | + state :overflow_diff_files_limit | ||
21 | + state :overflow_diff_lines_limit | ||
22 | + end | ||
23 | + | ||
24 | + serialize :st_commits | ||
25 | + serialize :st_diffs | ||
26 | + | ||
27 | + after_create :reload_content | ||
28 | + | ||
29 | + def reload_content | ||
30 | + reload_commits | ||
31 | + reload_diffs | ||
32 | + end | ||
33 | + | ||
34 | + def diffs | ||
35 | + @diffs ||= (load_diffs(st_diffs) || []) | ||
36 | + end | ||
37 | + | ||
38 | + def commits | ||
39 | + @commits ||= load_commits(st_commits || []) | ||
40 | + end | ||
41 | + | ||
42 | + def last_commit | ||
43 | + commits.first | ||
44 | + end | ||
45 | + | ||
46 | + def last_commit_short_sha | ||
47 | + @last_commit_short_sha ||= last_commit.sha[0..10] | ||
48 | + end | ||
49 | + | ||
50 | + private | ||
51 | + | ||
52 | + def dump_commits(commits) | ||
53 | + commits.map(&:to_hash) | ||
54 | + end | ||
55 | + | ||
56 | + def load_commits(array) | ||
57 | + array.map { |hash| Commit.new(Gitlab::Git::Commit.new(hash)) } | ||
58 | + end | ||
59 | + | ||
60 | + def dump_diffs(diffs) | ||
61 | + if diffs.respond_to?(:map) | ||
62 | + diffs.map(&:to_hash) | ||
63 | + end | ||
64 | + end | ||
65 | + | ||
66 | + def load_diffs(raw) | ||
67 | + if raw.respond_to?(:map) | ||
68 | + raw.map { |hash| Gitlab::Git::Diff.new(hash) } | ||
69 | + end | ||
70 | + end | ||
71 | + | ||
72 | + # When Git::Diff is not able to get diff | ||
73 | + # because of git timeout it return this value | ||
74 | + def broken_diffs | ||
75 | + [Gitlab::Git::Diff::BROKEN_DIFF] | ||
76 | + end | ||
77 | + | ||
78 | + # Collect array of Git::Commit objects | ||
79 | + # between target and source branches | ||
80 | + def unmerged_commits | ||
81 | + commits = if merge_request.for_fork? | ||
82 | + Gitlab::Satellite::MergeAction.new(merge_request.author, merge_request).commits_between | ||
83 | + else | ||
84 | + repository.commits_between(target_branch, source_branch) | ||
85 | + end | ||
86 | + | ||
87 | + if commits.present? | ||
88 | + commits = Commit.decorate(commits). | ||
89 | + sort_by(&:created_at). | ||
90 | + reverse | ||
91 | + end | ||
92 | + | ||
93 | + commits | ||
94 | + end | ||
95 | + | ||
96 | + # Reload all commits related to current merge request from repo | ||
97 | + # and save it as array of hashes in st_commits db field | ||
98 | + def reload_commits | ||
99 | + commit_objects = unmerged_commits | ||
100 | + | ||
101 | + if commit_objects.present? | ||
102 | + self.st_commits = dump_commits(commit_objects) | ||
103 | + end | ||
104 | + | ||
105 | + save | ||
106 | + end | ||
107 | + | ||
108 | + # Reload diffs between branches related to current merge request from repo | ||
109 | + # and save it as array of hashes in st_diffs db field | ||
110 | + def reload_diffs | ||
111 | + new_diffs = [] | ||
112 | + | ||
113 | + if commits.size.zero? | ||
114 | + self.state = :empty | ||
115 | + elsif commits.size > COMMITS_SAFE_SIZE | ||
116 | + self.state = :overflow_commits_safe_size | ||
117 | + else | ||
118 | + new_diffs = unmerged_diffs | ||
119 | + end | ||
120 | + | ||
121 | + if new_diffs.any? | ||
122 | + if new_diffs.size > Commit::DIFF_HARD_LIMIT_FILES | ||
123 | + self.state = :overflow_diff_files_limit | ||
124 | + new_diffs = [] | ||
125 | + end | ||
126 | + | ||
127 | + if new_diffs.sum { |diff| diff.diff.lines.count } > Commit::DIFF_HARD_LIMIT_LINES | ||
128 | + self.state = :overflow_diff_lines_limit | ||
129 | + new_diffs = [] | ||
130 | + end | ||
131 | + end | ||
132 | + | ||
133 | + if new_diffs.present? | ||
134 | + new_diffs = dump_commits(new_diffs) | ||
135 | + self.state = :collected | ||
136 | + end | ||
137 | + | ||
138 | + self.st_diffs = new_diffs | ||
139 | + self.save | ||
140 | + end | ||
141 | + | ||
142 | + # Collect array of Git::Diff objects | ||
143 | + # between target and source branches | ||
144 | + def unmerged_diffs | ||
145 | + diffs = if merge_request.for_fork? | ||
146 | + Gitlab::Satellite::MergeAction.new(merge_request.author, merge_request).diffs_between_satellite | ||
147 | + else | ||
148 | + Gitlab::Git::Diff.between(repository, source_branch, target_branch) | ||
149 | + end | ||
150 | + | ||
151 | + if diffs == broken_diffs | ||
152 | + self.state = :timeout | ||
153 | + diffs = [] | ||
154 | + end | ||
155 | + | ||
156 | + diffs ||= [] | ||
157 | + diffs | ||
158 | + end | ||
159 | + | ||
160 | + def repository | ||
161 | + merge_request.target_project.repository | ||
162 | + end | ||
163 | +end |
app/views/projects/commits/_inline_commit.html.haml
@@ -2,5 +2,7 @@ | @@ -2,5 +2,7 @@ | ||
2 | .commit-row-title | 2 | .commit-row-title |
3 | = link_to commit.short_id(8), project_commit_path(project, commit), class: "commit_short_id" | 3 | = link_to commit.short_id(8), project_commit_path(project, commit), class: "commit_short_id" |
4 | | 4 | |
5 | - = link_to_gfm truncate(commit.title, length: 40), project_commit_path(project, commit.id), class: "commit-row-message" | ||
6 | - #{time_ago_with_tooltip(commit.committed_date)} | 5 | + %span.str-truncated |
6 | + = link_to_gfm commit.title, project_commit_path(project, commit.id), class: "commit-row-message" | ||
7 | + .pull-right | ||
8 | + #{time_ago_with_tooltip(commit.committed_date)} |
app/views/projects/merge_requests/show/_commits.html.haml
@@ -12,9 +12,16 @@ | @@ -12,9 +12,16 @@ | ||
12 | 8 of #{@commits.count} commits displayed. | 12 | 8 of #{@commits.count} commits displayed. |
13 | %strong | 13 | %strong |
14 | %a.show-all-commits Click here to show all | 14 | %a.show-all-commits Click here to show all |
15 | - %ul.all-commits.hide.well-list | ||
16 | - - @commits.each do |commit| | ||
17 | - = render "projects/commits/commit", commit: commit, project: @merge_request.source_project | 15 | + - if @commits.size > MergeRequestDiff::COMMITS_SAFE_SIZE |
16 | + %ul.all-commits.hide.well-list | ||
17 | + - @commits.first(MergeRequestDiff::COMMITS_SAFE_SIZE).each do |commit| | ||
18 | + = render "projects/commits/inline_commit", commit: commit, project: @merge_request.source_project | ||
19 | + %li | ||
20 | + other #{@commits.size - MergeRequestDiff::COMMITS_SAFE_SIZE} commits hidden top prevent performance issues. | ||
21 | + - else | ||
22 | + %ul.all-commits.hide.well-list | ||
23 | + - @commits.each do |commit| | ||
24 | + = render "projects/commits/inline_commit", commit: commit, project: @merge_request.source_project | ||
18 | 25 | ||
19 | - else | 26 | - else |
20 | %ul.well-list | 27 | %ul.well-list |
app/views/projects/merge_requests/show/_diffs.html.haml
1 | -- if @merge_request.valid_diffs? | 1 | +- if @merge_request_diff.collected? |
2 | = render "projects/commits/diffs", diffs: @merge_request.diffs, project: @merge_request.source_project | 2 | = render "projects/commits/diffs", diffs: @merge_request.diffs, project: @merge_request.source_project |
3 | -- elsif @merge_request.broken_diffs? | 3 | +- elsif @merge_request_diff.empty? |
4 | + %h4.nothing_here_message Nothing to merge from #{@merge_request.source_branch} into #{@merge_request.target_branch} | ||
5 | +- else | ||
4 | %h4.nothing_here_message | 6 | %h4.nothing_here_message |
5 | Can't load diff. | 7 | Can't load diff. |
6 | You can | 8 | You can |
7 | = link_to "download it", project_merge_request_path(@merge_request.source_project, @merge_request), format: :diff, class: "vlink" | 9 | = link_to "download it", project_merge_request_path(@merge_request.source_project, @merge_request), format: :diff, class: "vlink" |
8 | instead. | 10 | instead. |
9 | -- else | ||
10 | - %h4.nothing_here_message Nothing to merge |
@@ -0,0 +1,12 @@ | @@ -0,0 +1,12 @@ | ||
1 | +class CreateMergeRequestDiffs < ActiveRecord::Migration | ||
2 | + def change | ||
3 | + create_table :merge_request_diffs do |t| | ||
4 | + t.string :state, null: false, default: 'collected' | ||
5 | + t.text :st_commits, null: true, limit: 2147483647 | ||
6 | + t.text :st_diffs, null: true, limit: 2147483647 | ||
7 | + t.integer :merge_request_id, null: false | ||
8 | + | ||
9 | + t.timestamps | ||
10 | + end | ||
11 | + end | ||
12 | +end |
@@ -0,0 +1,11 @@ | @@ -0,0 +1,11 @@ | ||
1 | +class MigrateMrDiffs < ActiveRecord::Migration | ||
2 | + def self.up | ||
3 | + execute "INSERT INTO merge_request_diffs ( merge_request_id ) SELECT id FROM merge_requests" | ||
4 | + execute "UPDATE merge_requests mr, merge_request_diffs md SET md.st_commits = mr.st_commits WHERE md.merge_request_id = mr.id" | ||
5 | + execute "UPDATE merge_requests mr, merge_request_diffs md SET md.st_diffs = mr.st_diffs WHERE md.merge_request_id = mr.id" | ||
6 | + end | ||
7 | + | ||
8 | + def self.down | ||
9 | + MergeRequestDiff.delete_all | ||
10 | + end | ||
11 | +end |
@@ -0,0 +1,13 @@ | @@ -0,0 +1,13 @@ | ||
1 | +class RemoveMRdiffFields < ActiveRecord::Migration | ||
2 | + def up | ||
3 | + remove_column :merge_requests, :st_commits | ||
4 | + remove_column :merge_requests, :st_diffs | ||
5 | + end | ||
6 | + | ||
7 | + def down | ||
8 | + add_column :merge_requests, :st_commits, :text, null: true, limit: 2147483647 | ||
9 | + add_column :merge_requests, :st_diffs, :text, null: true, limit: 2147483647 | ||
10 | + execute "UPDATE merge_requests mr, merge_request_diffs md SET mr.st_commits = md.st_commits WHERE md.merge_request_id = mr.id" | ||
11 | + execute "UPDATE merge_requests mr, merge_request_diffs md SET mr.st_diffs = md.st_diffs WHERE md.merge_request_id = mr.id" | ||
12 | + end | ||
13 | +end |
db/schema.rb
@@ -11,7 +11,7 @@ | @@ -11,7 +11,7 @@ | ||
11 | # | 11 | # |
12 | # It's strongly recommended that you check this file into your version control system. | 12 | # It's strongly recommended that you check this file into your version control system. |
13 | 13 | ||
14 | -ActiveRecord::Schema.define(version: 20140116231608) do | 14 | +ActiveRecord::Schema.define(version: 20140122122549) do |
15 | 15 | ||
16 | create_table "broadcast_messages", force: true do |t| | 16 | create_table "broadcast_messages", force: true do |t| |
17 | t.text "message", null: false | 17 | t.text "message", null: false |
@@ -66,8 +66,8 @@ ActiveRecord::Schema.define(version: 20140116231608) do | @@ -66,8 +66,8 @@ ActiveRecord::Schema.define(version: 20140116231608) do | ||
66 | t.integer "assignee_id" | 66 | t.integer "assignee_id" |
67 | t.integer "author_id" | 67 | t.integer "author_id" |
68 | t.integer "project_id" | 68 | t.integer "project_id" |
69 | - t.datetime "created_at", null: false | ||
70 | - t.datetime "updated_at", null: false | 69 | + t.datetime "created_at" |
70 | + t.datetime "updated_at" | ||
71 | t.integer "position", default: 0 | 71 | t.integer "position", default: 0 |
72 | t.string "branch_name" | 72 | t.string "branch_name" |
73 | t.text "description" | 73 | t.text "description" |
@@ -85,8 +85,8 @@ ActiveRecord::Schema.define(version: 20140116231608) do | @@ -85,8 +85,8 @@ ActiveRecord::Schema.define(version: 20140116231608) do | ||
85 | 85 | ||
86 | create_table "keys", force: true do |t| | 86 | create_table "keys", force: true do |t| |
87 | t.integer "user_id" | 87 | t.integer "user_id" |
88 | - t.datetime "created_at", null: false | ||
89 | - t.datetime "updated_at", null: false | 88 | + t.datetime "created_at" |
89 | + t.datetime "updated_at" | ||
90 | t.text "key" | 90 | t.text "key" |
91 | t.string "title" | 91 | t.string "title" |
92 | t.string "type" | 92 | t.string "type" |
@@ -95,21 +95,28 @@ ActiveRecord::Schema.define(version: 20140116231608) do | @@ -95,21 +95,28 @@ ActiveRecord::Schema.define(version: 20140116231608) do | ||
95 | 95 | ||
96 | add_index "keys", ["user_id"], name: "index_keys_on_user_id", using: :btree | 96 | add_index "keys", ["user_id"], name: "index_keys_on_user_id", using: :btree |
97 | 97 | ||
98 | + create_table "merge_request_diffs", force: true do |t| | ||
99 | + t.string "state", default: "collected", null: false | ||
100 | + t.text "st_commits", limit: 2147483647 | ||
101 | + t.text "st_diffs", limit: 2147483647 | ||
102 | + t.integer "merge_request_id", null: false | ||
103 | + t.datetime "created_at" | ||
104 | + t.datetime "updated_at" | ||
105 | + end | ||
106 | + | ||
98 | create_table "merge_requests", force: true do |t| | 107 | create_table "merge_requests", force: true do |t| |
99 | - t.string "target_branch", null: false | ||
100 | - t.string "source_branch", null: false | ||
101 | - t.integer "source_project_id", null: false | 108 | + t.string "target_branch", null: false |
109 | + t.string "source_branch", null: false | ||
110 | + t.integer "source_project_id", null: false | ||
102 | t.integer "author_id" | 111 | t.integer "author_id" |
103 | t.integer "assignee_id" | 112 | t.integer "assignee_id" |
104 | t.string "title" | 113 | t.string "title" |
105 | - t.datetime "created_at", null: false | ||
106 | - t.datetime "updated_at", null: false | ||
107 | - t.text "st_commits", limit: 2147483647 | ||
108 | - t.text "st_diffs", limit: 2147483647 | 114 | + t.datetime "created_at" |
115 | + t.datetime "updated_at" | ||
109 | t.integer "milestone_id" | 116 | t.integer "milestone_id" |
110 | t.string "state" | 117 | t.string "state" |
111 | t.string "merge_status" | 118 | t.string "merge_status" |
112 | - t.integer "target_project_id", null: false | 119 | + t.integer "target_project_id", null: false |
113 | t.integer "iid" | 120 | t.integer "iid" |
114 | t.text "description" | 121 | t.text "description" |
115 | end | 122 | end |
@@ -156,8 +163,8 @@ ActiveRecord::Schema.define(version: 20140116231608) do | @@ -156,8 +163,8 @@ ActiveRecord::Schema.define(version: 20140116231608) do | ||
156 | t.text "note" | 163 | t.text "note" |
157 | t.string "noteable_type" | 164 | t.string "noteable_type" |
158 | t.integer "author_id" | 165 | t.integer "author_id" |
159 | - t.datetime "created_at", null: false | ||
160 | - t.datetime "updated_at", null: false | 166 | + t.datetime "created_at" |
167 | + t.datetime "updated_at" | ||
161 | t.integer "project_id" | 168 | t.integer "project_id" |
162 | t.string "attachment" | 169 | t.string "attachment" |
163 | t.string "line_code" | 170 | t.string "line_code" |
@@ -179,8 +186,8 @@ ActiveRecord::Schema.define(version: 20140116231608) do | @@ -179,8 +186,8 @@ ActiveRecord::Schema.define(version: 20140116231608) do | ||
179 | t.string "name" | 186 | t.string "name" |
180 | t.string "path" | 187 | t.string "path" |
181 | t.text "description" | 188 | t.text "description" |
182 | - t.datetime "created_at", null: false | ||
183 | - t.datetime "updated_at", null: false | 189 | + t.datetime "created_at" |
190 | + t.datetime "updated_at" | ||
184 | t.integer "creator_id" | 191 | t.integer "creator_id" |
185 | t.boolean "issues_enabled", default: true, null: false | 192 | t.boolean "issues_enabled", default: true, null: false |
186 | t.boolean "wall_enabled", default: true, null: false | 193 | t.boolean "wall_enabled", default: true, null: false |
@@ -231,8 +238,8 @@ ActiveRecord::Schema.define(version: 20140116231608) do | @@ -231,8 +238,8 @@ ActiveRecord::Schema.define(version: 20140116231608) do | ||
231 | t.text "content", limit: 2147483647 | 238 | t.text "content", limit: 2147483647 |
232 | t.integer "author_id", null: false | 239 | t.integer "author_id", null: false |
233 | t.integer "project_id" | 240 | t.integer "project_id" |
234 | - t.datetime "created_at", null: false | ||
235 | - t.datetime "updated_at", null: false | 241 | + t.datetime "created_at" |
242 | + t.datetime "updated_at" | ||
236 | t.string "file_name" | 243 | t.string "file_name" |
237 | t.datetime "expires_at" | 244 | t.datetime "expires_at" |
238 | t.boolean "private", default: true, null: false | 245 | t.boolean "private", default: true, null: false |
@@ -254,45 +261,42 @@ ActiveRecord::Schema.define(version: 20140116231608) do | @@ -254,45 +261,42 @@ ActiveRecord::Schema.define(version: 20140116231608) do | ||
254 | t.datetime "created_at" | 261 | t.datetime "created_at" |
255 | end | 262 | end |
256 | 263 | ||
257 | - add_index "taggings", ["tag_id"], name: "index_taggings_on_tag_id", using: :btree | ||
258 | - add_index "taggings", ["taggable_id", "taggable_type", "context"], name: "index_taggings_on_taggable_id_and_taggable_type_and_context", using: :btree | ||
259 | - | ||
260 | create_table "tags", force: true do |t| | 264 | create_table "tags", force: true do |t| |
261 | t.string "name" | 265 | t.string "name" |
262 | end | 266 | end |
263 | 267 | ||
264 | create_table "users", force: true do |t| | 268 | create_table "users", force: true do |t| |
265 | - t.string "email", default: "", null: false | ||
266 | - t.string "encrypted_password", default: "", null: false | 269 | + t.string "email", default: "", null: false |
270 | + t.string "encrypted_password", limit: 128, default: "", null: false | ||
267 | t.string "reset_password_token" | 271 | t.string "reset_password_token" |
268 | t.datetime "reset_password_sent_at" | 272 | t.datetime "reset_password_sent_at" |
269 | t.datetime "remember_created_at" | 273 | t.datetime "remember_created_at" |
270 | - t.integer "sign_in_count", default: 0 | 274 | + t.integer "sign_in_count", default: 0 |
271 | t.datetime "current_sign_in_at" | 275 | t.datetime "current_sign_in_at" |
272 | t.datetime "last_sign_in_at" | 276 | t.datetime "last_sign_in_at" |
273 | t.string "current_sign_in_ip" | 277 | t.string "current_sign_in_ip" |
274 | t.string "last_sign_in_ip" | 278 | t.string "last_sign_in_ip" |
275 | - t.datetime "created_at", null: false | ||
276 | - t.datetime "updated_at", null: false | 279 | + t.datetime "created_at" |
280 | + t.datetime "updated_at" | ||
277 | t.string "name" | 281 | t.string "name" |
278 | - t.boolean "admin", default: false, null: false | ||
279 | - t.integer "projects_limit", default: 10 | ||
280 | - t.string "skype", default: "", null: false | ||
281 | - t.string "linkedin", default: "", null: false | ||
282 | - t.string "twitter", default: "", null: false | 282 | + t.boolean "admin", default: false, null: false |
283 | + t.integer "projects_limit", default: 10 | ||
284 | + t.string "skype", default: "", null: false | ||
285 | + t.string "linkedin", default: "", null: false | ||
286 | + t.string "twitter", default: "", null: false | ||
283 | t.string "authentication_token" | 287 | t.string "authentication_token" |
284 | - t.integer "theme_id", default: 1, null: false | 288 | + t.integer "theme_id", default: 1, null: false |
285 | t.string "bio" | 289 | t.string "bio" |
286 | - t.integer "failed_attempts", default: 0 | 290 | + t.integer "failed_attempts", default: 0 |
287 | t.datetime "locked_at" | 291 | t.datetime "locked_at" |
288 | t.string "extern_uid" | 292 | t.string "extern_uid" |
289 | t.string "provider" | 293 | t.string "provider" |
290 | t.string "username" | 294 | t.string "username" |
291 | - t.boolean "can_create_group", default: true, null: false | ||
292 | - t.boolean "can_create_team", default: true, null: false | 295 | + t.boolean "can_create_group", default: true, null: false |
296 | + t.boolean "can_create_team", default: true, null: false | ||
293 | t.string "state" | 297 | t.string "state" |
294 | - t.integer "color_scheme_id", default: 1, null: false | ||
295 | - t.integer "notification_level", default: 1, null: false | 298 | + t.integer "color_scheme_id", default: 1, null: false |
299 | + t.integer "notification_level", default: 1, null: false | ||
296 | t.datetime "password_expires_at" | 300 | t.datetime "password_expires_at" |
297 | t.integer "created_by_id" | 301 | t.integer "created_by_id" |
298 | t.string "avatar" | 302 | t.string "avatar" |
@@ -300,15 +304,14 @@ ActiveRecord::Schema.define(version: 20140116231608) do | @@ -300,15 +304,14 @@ ActiveRecord::Schema.define(version: 20140116231608) do | ||
300 | t.datetime "confirmed_at" | 304 | t.datetime "confirmed_at" |
301 | t.datetime "confirmation_sent_at" | 305 | t.datetime "confirmation_sent_at" |
302 | t.string "unconfirmed_email" | 306 | t.string "unconfirmed_email" |
303 | - t.boolean "hide_no_ssh_key", default: false | ||
304 | - t.string "website_url", default: "", null: false | 307 | + t.boolean "hide_no_ssh_key", default: false |
308 | + t.string "website_url", default: "", null: false | ||
305 | end | 309 | end |
306 | 310 | ||
307 | add_index "users", ["admin"], name: "index_users_on_admin", using: :btree | 311 | add_index "users", ["admin"], name: "index_users_on_admin", using: :btree |
308 | add_index "users", ["authentication_token"], name: "index_users_on_authentication_token", unique: true, using: :btree | 312 | add_index "users", ["authentication_token"], name: "index_users_on_authentication_token", unique: true, using: :btree |
309 | add_index "users", ["confirmation_token"], name: "index_users_on_confirmation_token", unique: true, using: :btree | 313 | add_index "users", ["confirmation_token"], name: "index_users_on_confirmation_token", unique: true, using: :btree |
310 | add_index "users", ["email"], name: "index_users_on_email", unique: true, using: :btree | 314 | add_index "users", ["email"], name: "index_users_on_email", unique: true, using: :btree |
311 | - add_index "users", ["extern_uid", "provider"], name: "index_users_on_extern_uid_and_provider", unique: true, using: :btree | ||
312 | add_index "users", ["name"], name: "index_users_on_name", using: :btree | 315 | add_index "users", ["name"], name: "index_users_on_name", using: :btree |
313 | add_index "users", ["reset_password_token"], name: "index_users_on_reset_password_token", unique: true, using: :btree | 316 | add_index "users", ["reset_password_token"], name: "index_users_on_reset_password_token", unique: true, using: :btree |
314 | add_index "users", ["username"], name: "index_users_on_username", using: :btree | 317 | add_index "users", ["username"], name: "index_users_on_username", using: :btree |
@@ -327,8 +330,8 @@ ActiveRecord::Schema.define(version: 20140116231608) do | @@ -327,8 +330,8 @@ ActiveRecord::Schema.define(version: 20140116231608) do | ||
327 | create_table "users_projects", force: true do |t| | 330 | create_table "users_projects", force: true do |t| |
328 | t.integer "user_id", null: false | 331 | t.integer "user_id", null: false |
329 | t.integer "project_id", null: false | 332 | t.integer "project_id", null: false |
330 | - t.datetime "created_at", null: false | ||
331 | - t.datetime "updated_at", null: false | 333 | + t.datetime "created_at" |
334 | + t.datetime "updated_at" | ||
332 | t.integer "project_access", default: 0, null: false | 335 | t.integer "project_access", default: 0, null: false |
333 | t.integer "notification_level", default: 3, null: false | 336 | t.integer "notification_level", default: 3, null: false |
334 | end | 337 | end |
@@ -340,8 +343,8 @@ ActiveRecord::Schema.define(version: 20140116231608) do | @@ -340,8 +343,8 @@ ActiveRecord::Schema.define(version: 20140116231608) do | ||
340 | create_table "web_hooks", force: true do |t| | 343 | create_table "web_hooks", force: true do |t| |
341 | t.string "url" | 344 | t.string "url" |
342 | t.integer "project_id" | 345 | t.integer "project_id" |
343 | - t.datetime "created_at", null: false | ||
344 | - t.datetime "updated_at", null: false | 346 | + t.datetime "created_at" |
347 | + t.datetime "updated_at" | ||
345 | t.string "type", default: "ProjectHook" | 348 | t.string "type", default: "ProjectHook" |
346 | t.integer "service_id" | 349 | t.integer "service_id" |
347 | t.boolean "push_events", default: true, null: false | 350 | t.boolean "push_events", default: true, null: false |
features/project/merge_requests.feature
@@ -55,18 +55,18 @@ Feature: Project Merge Requests | @@ -55,18 +55,18 @@ Feature: Project Merge Requests | ||
55 | Given project "Shop" have "Bug NS-05" open merge request with diffs inside | 55 | Given project "Shop" have "Bug NS-05" open merge request with diffs inside |
56 | And I visit merge request page "Bug NS-05" | 56 | And I visit merge request page "Bug NS-05" |
57 | And I click on the first commit in the merge request | 57 | And I click on the first commit in the merge request |
58 | - And I leave a comment like "Line is wrong" on line 185 of the first file | 58 | + And I leave a comment like "Line is wrong" on line 185 of the first file in commit |
59 | And I switch to the merge request's comments tab | 59 | And I switch to the merge request's comments tab |
60 | - Then I should see a discussion has started on commit bcf03b5de6c:L185 | 60 | + Then I should see a discussion has started on commit b1e6a9dbf1:L185 |
61 | 61 | ||
62 | @javascript | 62 | @javascript |
63 | Scenario: I comment on a commit in merge request | 63 | Scenario: I comment on a commit in merge request |
64 | Given project "Shop" have "Bug NS-05" open merge request with diffs inside | 64 | Given project "Shop" have "Bug NS-05" open merge request with diffs inside |
65 | And I visit merge request page "Bug NS-05" | 65 | And I visit merge request page "Bug NS-05" |
66 | And I click on the first commit in the merge request | 66 | And I click on the first commit in the merge request |
67 | - And I leave a comment on the diff page | 67 | + And I leave a comment on the diff page in commit |
68 | And I switch to the merge request's comments tab | 68 | And I switch to the merge request's comments tab |
69 | - Then I should see a discussion has started on commit bcf03b5de6c | 69 | + Then I should see a discussion has started on commit b1e6a9dbf1 |
70 | 70 | ||
71 | @javascript | 71 | @javascript |
72 | Scenario: I accept merge request with custom commit message | 72 | Scenario: I accept merge request with custom commit message |
features/steps/dashboard/dashboard_issues.rb
@@ -66,7 +66,7 @@ class DashboardIssues < Spinach::FeatureSteps | @@ -66,7 +66,7 @@ class DashboardIssues < Spinach::FeatureSteps | ||
66 | 66 | ||
67 | def project | 67 | def project |
68 | @project ||= begin | 68 | @project ||= begin |
69 | - project =create :project_with_code | 69 | + project =create :project |
70 | project.team << [current_user, :master] | 70 | project.team << [current_user, :master] |
71 | project | 71 | project |
72 | end | 72 | end |
features/steps/dashboard/dashboard_merge_requests.rb
@@ -66,7 +66,7 @@ class DashboardMergeRequests < Spinach::FeatureSteps | @@ -66,7 +66,7 @@ class DashboardMergeRequests < Spinach::FeatureSteps | ||
66 | 66 | ||
67 | def project | 67 | def project |
68 | @project ||= begin | 68 | @project ||= begin |
69 | - project =create :project_with_code | 69 | + project =create :project |
70 | project.team << [current_user, :master] | 70 | project.team << [current_user, :master] |
71 | project | 71 | project |
72 | end | 72 | end |
features/steps/project/deploy_keys.rb
@@ -34,7 +34,7 @@ class Spinach::Features::ProjectDeployKeys < Spinach::FeatureSteps | @@ -34,7 +34,7 @@ class Spinach::Features::ProjectDeployKeys < Spinach::FeatureSteps | ||
34 | end | 34 | end |
35 | 35 | ||
36 | step 'other project has deploy key' do | 36 | step 'other project has deploy key' do |
37 | - @second_project = create :project, namespace: current_user.namespace | 37 | + @second_project = create :project, namespace: create(:group) |
38 | @second_project.team << [current_user, :master] | 38 | @second_project.team << [current_user, :master] |
39 | create(:deploy_keys_project, project: @second_project) | 39 | create(:deploy_keys_project, project: @second_project) |
40 | end | 40 | end |
features/steps/project/project_fork.rb
@@ -12,7 +12,7 @@ class ForkProject < Spinach::FeatureSteps | @@ -12,7 +12,7 @@ class ForkProject < Spinach::FeatureSteps | ||
12 | 12 | ||
13 | step 'I am a member of project "Shop"' do | 13 | step 'I am a member of project "Shop"' do |
14 | @project = Project.find_by(name: "Shop") | 14 | @project = Project.find_by(name: "Shop") |
15 | - @project ||= create(:project_with_code, name: "Shop", group: create(:group)) | 15 | + @project ||= create(:project, name: "Shop", group: create(:group)) |
16 | @project.team << [@user, :reporter] | 16 | @project.team << [@user, :reporter] |
17 | end | 17 | end |
18 | 18 | ||
@@ -26,7 +26,7 @@ class ForkProject < Spinach::FeatureSteps | @@ -26,7 +26,7 @@ class ForkProject < Spinach::FeatureSteps | ||
26 | current_user.namespace ||= create(:namespace) | 26 | current_user.namespace ||= create(:namespace) |
27 | current_user.namespace.should_not be_nil | 27 | current_user.namespace.should_not be_nil |
28 | current_user.namespace.path.should_not be_nil | 28 | current_user.namespace.path.should_not be_nil |
29 | - @my_project = create(:project_with_code, name: "Shop", namespace: current_user.namespace) | 29 | + @my_project = create(:project, name: "Shop", namespace: current_user.namespace) |
30 | end | 30 | end |
31 | 31 | ||
32 | step 'I should see a "Name has already been taken" warning' do | 32 | step 'I should see a "Name has already been taken" warning' do |
features/steps/project/project_forked_merge_requests.rb
@@ -7,7 +7,7 @@ class ProjectForkedMergeRequests < Spinach::FeatureSteps | @@ -7,7 +7,7 @@ class ProjectForkedMergeRequests < Spinach::FeatureSteps | ||
7 | 7 | ||
8 | step 'I am a member of project "Shop"' do | 8 | step 'I am a member of project "Shop"' do |
9 | @project = Project.find_by(name: "Shop") | 9 | @project = Project.find_by(name: "Shop") |
10 | - @project ||= create(:project_with_code, name: "Shop") | 10 | + @project ||= create(:project, name: "Shop") |
11 | @project.team << [@user, :reporter] | 11 | @project.team << [@user, :reporter] |
12 | end | 12 | end |
13 | 13 | ||
@@ -15,7 +15,7 @@ class ProjectForkedMergeRequests < Spinach::FeatureSteps | @@ -15,7 +15,7 @@ class ProjectForkedMergeRequests < Spinach::FeatureSteps | ||
15 | @forking_user = @user | 15 | @forking_user = @user |
16 | forked_project_link = build(:forked_project_link) | 16 | forked_project_link = build(:forked_project_link) |
17 | @forked_project = Project.find_by(name: "Forked Shop") | 17 | @forked_project = Project.find_by(name: "Forked Shop") |
18 | - @forked_project ||= create(:source_project_with_code, name: "Forked Shop", forked_project_link: forked_project_link, creator_id: @forking_user.id , namespace: @forking_user.namespace) | 18 | + @forked_project ||= create(:project, name: "Forked Shop", forked_project_link: forked_project_link, creator_id: @forking_user.id , namespace: @forking_user.namespace) |
19 | 19 | ||
20 | forked_project_link.forked_from_project = @project | 20 | forked_project_link.forked_from_project = @project |
21 | forked_project_link.forked_to_project = @forked_project | 21 | forked_project_link.forked_to_project = @forked_project |
features/steps/project/project_issue_tracker.rb
@@ -5,7 +5,7 @@ class ProjectIssueTracker < Spinach::FeatureSteps | @@ -5,7 +5,7 @@ class ProjectIssueTracker < Spinach::FeatureSteps | ||
5 | 5 | ||
6 | step 'project "Shop" has issues enabled' do | 6 | step 'project "Shop" has issues enabled' do |
7 | @project = Project.find_by(name: "Shop") | 7 | @project = Project.find_by(name: "Shop") |
8 | - @project ||= create(:project_with_code, name: "Shop", namespace: @user.namespace) | 8 | + @project ||= create(:project, name: "Shop", namespace: @user.namespace) |
9 | @project.issues_enabled = true | 9 | @project.issues_enabled = true |
10 | end | 10 | end |
11 | 11 |
features/steps/project/project_markdown_render.rb
@@ -4,7 +4,7 @@ class Spinach::Features::ProjectMarkdownRender < Spinach::FeatureSteps | @@ -4,7 +4,7 @@ class Spinach::Features::ProjectMarkdownRender < Spinach::FeatureSteps | ||
4 | 4 | ||
5 | And 'I own project "Delta"' do | 5 | And 'I own project "Delta"' do |
6 | @project = Project.find_by(name: "Delta") | 6 | @project = Project.find_by(name: "Delta") |
7 | - @project ||= create(:project_with_code, name: "Delta", namespace: @user.namespace) | 7 | + @project ||= create(:project, name: "Delta", namespace: @user.namespace) |
8 | @project.team << [@user, :master] | 8 | @project.team << [@user, :master] |
9 | end | 9 | end |
10 | 10 |
features/steps/project/project_merge_requests.rb
@@ -81,6 +81,8 @@ class ProjectMergeRequests < Spinach::FeatureSteps | @@ -81,6 +81,8 @@ class ProjectMergeRequests < Spinach::FeatureSteps | ||
81 | title: "Bug NS-04", | 81 | title: "Bug NS-04", |
82 | source_project: project, | 82 | source_project: project, |
83 | target_project: project, | 83 | target_project: project, |
84 | + source_branch: 'stable', | ||
85 | + target_branch: 'master', | ||
84 | author: project.users.first) | 86 | author: project.users.first) |
85 | end | 87 | end |
86 | 88 | ||
@@ -109,33 +111,29 @@ class ProjectMergeRequests < Spinach::FeatureSteps | @@ -109,33 +111,29 @@ class ProjectMergeRequests < Spinach::FeatureSteps | ||
109 | end | 111 | end |
110 | 112 | ||
111 | step 'I click on the first commit in the merge request' do | 113 | step 'I click on the first commit in the merge request' do |
112 | - click_link merge_request.commits.first.short_id(8) | 114 | + within '.first-commits' do |
115 | + click_link merge_request.commits.first.short_id(8) | ||
116 | + end | ||
113 | end | 117 | end |
114 | 118 | ||
115 | step 'I leave a comment on the diff page' do | 119 | step 'I leave a comment on the diff page' do |
116 | init_diff_note | 120 | init_diff_note |
121 | + leave_comment "One comment to rule them all" | ||
122 | + end | ||
117 | 123 | ||
118 | - within('.js-discussion-note-form') do | ||
119 | - fill_in "note_note", with: "One comment to rule them all" | ||
120 | - click_button "Add Comment" | ||
121 | - end | ||
122 | - | ||
123 | - within ".note-text" do | ||
124 | - page.should have_content "One comment to rule them all" | ||
125 | - end | 124 | + step 'I leave a comment on the diff page in commit' do |
125 | + find('a[data-line-code="4735dfc552ad7bf15ca468adc3cad9d05b624490_185_185"]').click | ||
126 | + leave_comment "One comment to rule them all" | ||
126 | end | 127 | end |
127 | 128 | ||
128 | step 'I leave a comment like "Line is wrong" on line 185 of the first file' do | 129 | step 'I leave a comment like "Line is wrong" on line 185 of the first file' do |
129 | init_diff_note | 130 | init_diff_note |
131 | + leave_comment "Line is wrong" | ||
132 | + end | ||
130 | 133 | ||
131 | - within(".js-discussion-note-form") do | ||
132 | - fill_in "note_note", with: "Line is wrong" | ||
133 | - click_button "Add Comment" | ||
134 | - end | ||
135 | - | ||
136 | - within ".note-text" do | ||
137 | - page.should have_content "Line is wrong" | ||
138 | - end | 134 | + step 'I leave a comment like "Line is wrong" on line 185 of the first file in commit' do |
135 | + find('a[data-line-code="4735dfc552ad7bf15ca468adc3cad9d05b624490_185_185"]').click | ||
136 | + leave_comment "Line is wrong" | ||
139 | end | 137 | end |
140 | 138 | ||
141 | step 'I should see a discussion has started on line 185' do | 139 | step 'I should see a discussion has started on line 185' do |
@@ -144,14 +142,14 @@ class ProjectMergeRequests < Spinach::FeatureSteps | @@ -144,14 +142,14 @@ class ProjectMergeRequests < Spinach::FeatureSteps | ||
144 | page.should have_content "Line is wrong" | 142 | page.should have_content "Line is wrong" |
145 | end | 143 | end |
146 | 144 | ||
147 | - step 'I should see a discussion has started on commit bcf03b5de6c:L185' do | 145 | + step 'I should see a discussion has started on commit b1e6a9dbf1:L185' do |
148 | page.should have_content "#{current_user.name} started a discussion on commit" | 146 | page.should have_content "#{current_user.name} started a discussion on commit" |
149 | page.should have_content "app/assets/stylesheets/tree.scss:L185" | 147 | page.should have_content "app/assets/stylesheets/tree.scss:L185" |
150 | page.should have_content "Line is wrong" | 148 | page.should have_content "Line is wrong" |
151 | end | 149 | end |
152 | 150 | ||
153 | - step 'I should see a discussion has started on commit bcf03b5de6c' do | ||
154 | - page.should have_content "#{current_user.name} started a discussion on commit bcf03b5de6c" | 151 | + step 'I should see a discussion has started on commit b1e6a9dbf1' do |
152 | + page.should have_content "#{current_user.name} started a discussion on commit" | ||
155 | page.should have_content "One comment to rule them all" | 153 | page.should have_content "One comment to rule them all" |
156 | page.should have_content "app/assets/stylesheets/tree.scss:L185" | 154 | page.should have_content "app/assets/stylesheets/tree.scss:L185" |
157 | end | 155 | end |
@@ -188,6 +186,17 @@ class ProjectMergeRequests < Spinach::FeatureSteps | @@ -188,6 +186,17 @@ class ProjectMergeRequests < Spinach::FeatureSteps | ||
188 | end | 186 | end |
189 | 187 | ||
190 | def init_diff_note | 188 | def init_diff_note |
191 | - find('a[data-line-code="4735dfc552ad7bf15ca468adc3cad9d05b624490_185_185"]').click | 189 | + find('a[data-line-code="4735dfc552ad7bf15ca468adc3cad9d05b624490_172_185"]').click |
190 | + end | ||
191 | + | ||
192 | + def leave_comment(message) | ||
193 | + within(".js-discussion-note-form") do | ||
194 | + fill_in "note_note", with: message | ||
195 | + click_button "Add Comment" | ||
196 | + end | ||
197 | + | ||
198 | + within ".note-text" do | ||
199 | + page.should have_content message | ||
200 | + end | ||
192 | end | 201 | end |
193 | end | 202 | end |
features/steps/project/project_team_management.rb
@@ -79,7 +79,7 @@ class ProjectTeamManagement < Spinach::FeatureSteps | @@ -79,7 +79,7 @@ class ProjectTeamManagement < Spinach::FeatureSteps | ||
79 | end | 79 | end |
80 | 80 | ||
81 | Given 'I own project "Website"' do | 81 | Given 'I own project "Website"' do |
82 | - @project = create(:project, name: "Website", namespace: @user.namespace) | 82 | + @project = create(:empty_project, name: "Website", namespace: @user.namespace) |
83 | @project.team << [@user, :master] | 83 | @project.team << [@user, :master] |
84 | end | 84 | end |
85 | 85 |
features/steps/project/redirects.rb
@@ -4,7 +4,7 @@ class Spinach::Features::ProjectRedirects < Spinach::FeatureSteps | @@ -4,7 +4,7 @@ class Spinach::Features::ProjectRedirects < Spinach::FeatureSteps | ||
4 | include SharedProject | 4 | include SharedProject |
5 | 5 | ||
6 | step 'public project "Community"' do | 6 | step 'public project "Community"' do |
7 | - create :project_with_code, name: 'Community', visibility_level: Gitlab::VisibilityLevel::PUBLIC | 7 | + create :project, name: 'Community', visibility_level: Gitlab::VisibilityLevel::PUBLIC |
8 | end | 8 | end |
9 | 9 | ||
10 | step 'private project "Enterprise"' do | 10 | step 'private project "Enterprise"' do |
features/steps/public/projects_feature.rb
@@ -25,11 +25,11 @@ class Spinach::Features::PublicProjectsFeature < Spinach::FeatureSteps | @@ -25,11 +25,11 @@ class Spinach::Features::PublicProjectsFeature < Spinach::FeatureSteps | ||
25 | end | 25 | end |
26 | 26 | ||
27 | step 'public project "Community"' do | 27 | step 'public project "Community"' do |
28 | - create :project_with_code, name: 'Community', visibility_level: Gitlab::VisibilityLevel::PUBLIC | 28 | + create :project, name: 'Community', visibility_level: Gitlab::VisibilityLevel::PUBLIC |
29 | end | 29 | end |
30 | 30 | ||
31 | step 'public empty project "Empty Public Project"' do | 31 | step 'public empty project "Empty Public Project"' do |
32 | - create :project, name: 'Empty Public Project', visibility_level: Gitlab::VisibilityLevel::PUBLIC | 32 | + create :empty_project, name: 'Empty Public Project', visibility_level: Gitlab::VisibilityLevel::PUBLIC |
33 | end | 33 | end |
34 | 34 | ||
35 | step 'I visit empty project page' do | 35 | step 'I visit empty project page' do |
@@ -76,7 +76,7 @@ class Spinach::Features::PublicProjectsFeature < Spinach::FeatureSteps | @@ -76,7 +76,7 @@ class Spinach::Features::PublicProjectsFeature < Spinach::FeatureSteps | ||
76 | end | 76 | end |
77 | 77 | ||
78 | step 'internal project "Internal"' do | 78 | step 'internal project "Internal"' do |
79 | - create :project_with_code, name: 'Internal', visibility_level: Gitlab::VisibilityLevel::INTERNAL | 79 | + create :project, name: 'Internal', visibility_level: Gitlab::VisibilityLevel::INTERNAL |
80 | end | 80 | end |
81 | 81 | ||
82 | step 'I should see project "Internal"' do | 82 | step 'I should see project "Internal"' do |
features/steps/shared/project.rb
@@ -3,21 +3,21 @@ module SharedProject | @@ -3,21 +3,21 @@ module SharedProject | ||
3 | 3 | ||
4 | # Create a project without caring about what it's called | 4 | # Create a project without caring about what it's called |
5 | And "I own a project" do | 5 | And "I own a project" do |
6 | - @project = create(:project_with_code, namespace: @user.namespace) | 6 | + @project = create(:project, namespace: @user.namespace) |
7 | @project.team << [@user, :master] | 7 | @project.team << [@user, :master] |
8 | end | 8 | end |
9 | 9 | ||
10 | # Create a specific project called "Shop" | 10 | # Create a specific project called "Shop" |
11 | And 'I own project "Shop"' do | 11 | And 'I own project "Shop"' do |
12 | @project = Project.find_by(name: "Shop") | 12 | @project = Project.find_by(name: "Shop") |
13 | - @project ||= create(:project_with_code, name: "Shop", namespace: @user.namespace) | 13 | + @project ||= create(:project, name: "Shop", namespace: @user.namespace) |
14 | @project.team << [@user, :master] | 14 | @project.team << [@user, :master] |
15 | end | 15 | end |
16 | 16 | ||
17 | # Create another specific project called "Forum" | 17 | # Create another specific project called "Forum" |
18 | And 'I own project "Forum"' do | 18 | And 'I own project "Forum"' do |
19 | @project = Project.find_by(name: "Forum") | 19 | @project = Project.find_by(name: "Forum") |
20 | - @project ||= create(:project_with_code, name: "Forum", namespace: @user.namespace, path: 'forum_project') | 20 | + @project ||= create(:project, name: "Forum", namespace: @user.namespace, path: 'forum_project') |
21 | @project.team << [@user, :master] | 21 | @project.team << [@user, :master] |
22 | end | 22 | end |
23 | 23 |
lib/api/merge_requests.rb
@@ -88,7 +88,6 @@ module API | @@ -88,7 +88,6 @@ module API | ||
88 | end | 88 | end |
89 | 89 | ||
90 | if merge_request.save | 90 | if merge_request.save |
91 | - merge_request.reload_code | ||
92 | present merge_request, with: Entities::MergeRequest | 91 | present merge_request, with: Entities::MergeRequest |
93 | else | 92 | else |
94 | handle_merge_request_errors! merge_request.errors | 93 | handle_merge_request_errors! merge_request.errors |
spec/controllers/blob_controller_spec.rb
1 | require 'spec_helper' | 1 | require 'spec_helper' |
2 | 2 | ||
3 | describe Projects::BlobController do | 3 | describe Projects::BlobController do |
4 | - let(:project) { create(:project_with_code) } | 4 | + let(:project) { create(:project) } |
5 | let(:user) { create(:user) } | 5 | let(:user) { create(:user) } |
6 | 6 | ||
7 | before do | 7 | before do |
spec/controllers/commit_controller_spec.rb
1 | require 'spec_helper' | 1 | require 'spec_helper' |
2 | 2 | ||
3 | describe Projects::CommitController do | 3 | describe Projects::CommitController do |
4 | - let(:project) { create(:project_with_code) } | 4 | + let(:project) { create(:project) } |
5 | let(:user) { create(:user) } | 5 | let(:user) { create(:user) } |
6 | let(:commit) { project.repository.commit("master") } | 6 | let(:commit) { project.repository.commit("master") } |
7 | 7 |
spec/controllers/commits_controller_spec.rb
1 | require 'spec_helper' | 1 | require 'spec_helper' |
2 | 2 | ||
3 | describe Projects::CommitsController do | 3 | describe Projects::CommitsController do |
4 | - let(:project) { create(:project_with_code) } | 4 | + let(:project) { create(:project) } |
5 | let(:user) { create(:user) } | 5 | let(:user) { create(:user) } |
6 | 6 | ||
7 | before do | 7 | before do |
spec/controllers/merge_requests_controller_spec.rb
1 | require 'spec_helper' | 1 | require 'spec_helper' |
2 | 2 | ||
3 | describe Projects::MergeRequestsController do | 3 | describe Projects::MergeRequestsController do |
4 | - let(:project) { create(:project_with_code) } | 4 | + let(:project) { create(:project) } |
5 | let(:user) { create(:user) } | 5 | let(:user) { create(:user) } |
6 | let(:merge_request) { create(:merge_request_with_diffs, target_project: project, source_project: project, target_branch: "stable", source_branch: "master") } | 6 | let(:merge_request) { create(:merge_request_with_diffs, target_project: project, source_project: project, target_branch: "stable", source_branch: "master") } |
7 | 7 |
spec/controllers/tree_controller_spec.rb
1 | require 'spec_helper' | 1 | require 'spec_helper' |
2 | 2 | ||
3 | describe Projects::TreeController do | 3 | describe Projects::TreeController do |
4 | - let(:project) { create(:project_with_code) } | 4 | + let(:project) { create(:project) } |
5 | let(:user) { create(:user) } | 5 | let(:user) { create(:user) } |
6 | 6 | ||
7 | before do | 7 | before do |
spec/factories.rb
@@ -27,43 +27,16 @@ FactoryGirl.define do | @@ -27,43 +27,16 @@ FactoryGirl.define do | ||
27 | factory :admin, traits: [:admin] | 27 | factory :admin, traits: [:admin] |
28 | end | 28 | end |
29 | 29 | ||
30 | - factory :project do | 30 | + factory :empty_project, class: 'Project' do |
31 | sequence(:name) { |n| "project#{n}" } | 31 | sequence(:name) { |n| "project#{n}" } |
32 | path { name.downcase.gsub(/\s/, '_') } | 32 | path { name.downcase.gsub(/\s/, '_') } |
33 | namespace | 33 | namespace |
34 | creator | 34 | creator |
35 | - | ||
36 | - trait :source do | ||
37 | - sequence(:name) { |n| "source project#{n}" } | ||
38 | - end | ||
39 | - trait :target do | ||
40 | - sequence(:name) { |n| "target project#{n}" } | ||
41 | - end | ||
42 | - | ||
43 | - factory :source_project, traits: [:source] | ||
44 | - factory :target_project, traits: [:target] | ||
45 | - end | ||
46 | - | ||
47 | - | ||
48 | - factory :redmine_project, parent: :project do | ||
49 | - issues_tracker { "redmine" } | ||
50 | - issues_tracker_id { "project_name_in_redmine" } | ||
51 | end | 35 | end |
52 | 36 | ||
53 | - factory :project_with_code, parent: :project do | 37 | + factory :project, parent: :empty_project do |
54 | path { 'gitlabhq' } | 38 | path { 'gitlabhq' } |
55 | 39 | ||
56 | - trait :source_path do | ||
57 | - path { 'source_gitlabhq' } | ||
58 | - end | ||
59 | - | ||
60 | - trait :target_path do | ||
61 | - path { 'target_gitlabhq' } | ||
62 | - end | ||
63 | - | ||
64 | - factory :source_project_with_code, traits: [:source, :source_path] | ||
65 | - factory :target_project_with_code, traits: [:target, :target_path] | ||
66 | - | ||
67 | after :create do |project| | 40 | after :create do |project| |
68 | TestEnv.clear_repo_dir(project.namespace, project.path) | 41 | TestEnv.clear_repo_dir(project.namespace, project.path) |
69 | TestEnv.reset_satellite_dir | 42 | TestEnv.reset_satellite_dir |
@@ -71,6 +44,11 @@ FactoryGirl.define do | @@ -71,6 +44,11 @@ FactoryGirl.define do | ||
71 | end | 44 | end |
72 | end | 45 | end |
73 | 46 | ||
47 | + factory :redmine_project, parent: :project do | ||
48 | + issues_tracker { "redmine" } | ||
49 | + issues_tracker_id { "project_name_in_redmine" } | ||
50 | + end | ||
51 | + | ||
74 | factory :group do | 52 | factory :group do |
75 | sequence(:name) { |n| "group#{n}" } | 53 | sequence(:name) { |n| "group#{n}" } |
76 | path { name.downcase.gsub(/\s/, '_') } | 54 | path { name.downcase.gsub(/\s/, '_') } |
@@ -109,25 +87,45 @@ FactoryGirl.define do | @@ -109,25 +87,45 @@ FactoryGirl.define do | ||
109 | factory :merge_request do | 87 | factory :merge_request do |
110 | title | 88 | title |
111 | author | 89 | author |
112 | - source_project factory: :source_project_with_code | ||
113 | - target_project factory: :target_project_with_code | 90 | + source_project factory: :project |
91 | + target_project { source_project } | ||
92 | + | ||
93 | + # → git log stable..master --pretty=oneline | ||
94 | + # b1e6a9dbf1c85e6616497a5e7bad9143a4bd0828 tree css fixes | ||
95 | + # 8716fc78f3c65bbf7bcf7b574febd583bc5d2812 Added loading animation for notes | ||
96 | + # cd5c4bac5042c5469dcdf7e7b2f768d3c6fd7088 notes count for wall | ||
97 | + # 8470d70da67355c9c009e4401746b1d5410af2e3 notes controller refactored | ||
98 | + # 1e689bfba39525ead225eaf611948cfbe8ac34cf fixed notes logic | ||
99 | + # f0f14c8eaba69ebddd766498a9d0b0e79becd633 finished scss refactoring | ||
100 | + # 3a4b4fb4cde7809f033822a171b9feae19d41fff Moving ui styles to one scss file, Added ui class to body | ||
101 | + # 065c200c33f68c2bb781e35a43f9dc8138a893b5 removed unnecessary hr tags & titles | ||
102 | + # 1e8b111be85df0db6c8000ef9a710bc0221eae83 Merge branch 'master' of github.com:gitlabhq/gitlabhq | ||
103 | + # f403da73f5e62794a0447aca879360494b08f678 Fixed ajax loading image. Fixed wrong wording | ||
104 | + # e6ea73c77600d413d370249b8e392734f7d1dbee Merge pull request #468 from bencevans/patch-1 | ||
105 | + # 4a3c05b69355deee25767a74d0512ec4b510d4ef Merge pull request #470 from bgondy/patch-1 | ||
106 | + # 0347fe2412eb51d3efeccc35210e9268bc765ac5 Update app/views/projects/team.html.haml | ||
107 | + # 2b5c61bdece1f7eb2b901ceea7d364065cdf76ac Title for a link fixed | ||
108 | + # 460eeb13b7560b40104044973ff933b1a6dbbcaa Increased count of notes loaded when visit wall page | ||
109 | + # 21c141afb1c53a9180a99d2cca29ffa613eb7e3a Merge branch 'notes_refactoring' | ||
110 | + # 292a41cbe295f16f7148913b31eb0fb91f3251c3 Fixed comments for snippets. Tests fixed | ||
111 | + # d41d8ffb02fa74fd4571603548bd7e401ec99e0c Reply button, Comments for Merge Request diff | ||
112 | + # b1a36b552be2a7a6bc57fbed6c52dc6ed82111f8 Merge pull request #466 from skroutz/no-rbenv | ||
113 | + # db75dae913e8365453ca231f101b067314a7ea71 Merge pull request #465 from skroutz/branches_commit_link | ||
114 | + # 75f040fbfe4b5af23ff004ad3207c3976df097a8 Don't enforce rbenv version | ||
115 | + # e42fb4fda475370dcb0d8f8f1268bfdc7a0cc437 Fix broken commit link in branches page | ||
116 | + # 215a01f63ccdc085f75a48f6f7ab6f2b15b5852c move notes login to one controller | ||
117 | + # 81092c01984a481e312de10a28e3f1a6dda182a3 Status codes for errors, New error pages | ||
118 | + # 7d279f9302151e3c8f4c5df9c5200a72799409b9 better error handling for not found resource, gitolite error | ||
119 | + # 9e6d0710e927aa8ea834b8a9ae9f277be617ac7d Merge pull request #443 from CedricGatay/fix/incorrectLineNumberingInDiff | ||
120 | + # 6ea87c47f0f8a24ae031c3fff17bc913889ecd00 Incorrect line numbering in diff | ||
121 | + # | ||
122 | + # → git log master..stable --pretty=oneline | ||
123 | + # empty | ||
124 | + | ||
114 | source_branch "master" | 125 | source_branch "master" |
115 | target_branch "stable" | 126 | target_branch "stable" |
116 | 127 | ||
117 | - # pick 3 commits "at random" (from bcf03b5d~3 to bcf03b5d) | ||
118 | trait :with_diffs do | 128 | trait :with_diffs do |
119 | - target_branch "master" # pretend bcf03b5d~3 | ||
120 | - source_branch "stable" # pretend bcf03b5d | ||
121 | - st_commits do | ||
122 | - [ | ||
123 | - source_project.repository.commit('bcf03b5d').to_hash, | ||
124 | - source_project.repository.commit('bcf03b5d~1').to_hash, | ||
125 | - source_project.repository.commit('bcf03b5d~2').to_hash | ||
126 | - ] | ||
127 | - end | ||
128 | - st_diffs do | ||
129 | - source_project.repo.diff("bcf03b5d~3", "bcf03b5d") | ||
130 | - end | ||
131 | end | 129 | end |
132 | 130 | ||
133 | trait :closed do | 131 | trait :closed do |
@@ -156,7 +154,7 @@ FactoryGirl.define do | @@ -156,7 +154,7 @@ FactoryGirl.define do | ||
156 | factory :note_on_merge_request_with_attachment, traits: [:on_merge_request, :with_attachment] | 154 | factory :note_on_merge_request_with_attachment, traits: [:on_merge_request, :with_attachment] |
157 | 155 | ||
158 | trait :on_commit do | 156 | trait :on_commit do |
159 | - project factory: :project_with_code | 157 | + project factory: :project |
160 | commit_id "bcf03b5de6c33f3869ef70d68cf06e679d1d7f9a" | 158 | commit_id "bcf03b5de6c33f3869ef70d68cf06e679d1d7f9a" |
161 | noteable_type "Commit" | 159 | noteable_type "Commit" |
162 | end | 160 | end |
@@ -166,7 +164,7 @@ FactoryGirl.define do | @@ -166,7 +164,7 @@ FactoryGirl.define do | ||
166 | end | 164 | end |
167 | 165 | ||
168 | trait :on_merge_request do | 166 | trait :on_merge_request do |
169 | - project factory: :project_with_code | 167 | + project factory: :project |
170 | noteable_id 1 | 168 | noteable_id 1 |
171 | noteable_type "MergeRequest" | 169 | noteable_type "MergeRequest" |
172 | end | 170 | end |
spec/features/gitlab_flavored_markdown_spec.rb
1 | require 'spec_helper' | 1 | require 'spec_helper' |
2 | 2 | ||
3 | describe "GitLab Flavored Markdown" do | 3 | describe "GitLab Flavored Markdown" do |
4 | - let(:project) { create(:project_with_code) } | 4 | + let(:project) { create(:project) } |
5 | let(:issue) { create(:issue, project: project) } | 5 | let(:issue) { create(:issue, project: project) } |
6 | let(:merge_request) { create(:merge_request, source_project: project, target_project: project) } | 6 | let(:merge_request) { create(:merge_request, source_project: project, target_project: project) } |
7 | let(:fred) do | 7 | let(:fred) do |
spec/features/notes_on_merge_requests_spec.rb
1 | require 'spec_helper' | 1 | require 'spec_helper' |
2 | 2 | ||
3 | describe "On a merge request", js: true do | 3 | describe "On a merge request", js: true do |
4 | - let!(:project) { create(:project_with_code) } | 4 | + let!(:project) { create(:project) } |
5 | let!(:merge_request) { create(:merge_request, source_project: project, target_project: project) } | 5 | let!(:merge_request) { create(:merge_request, source_project: project, target_project: project) } |
6 | let!(:note) { create(:note_on_merge_request_with_attachment, project: project) } | 6 | let!(:note) { create(:note_on_merge_request_with_attachment, project: project) } |
7 | 7 | ||
@@ -135,7 +135,7 @@ describe "On a merge request", js: true do | @@ -135,7 +135,7 @@ describe "On a merge request", js: true do | ||
135 | end | 135 | end |
136 | 136 | ||
137 | describe "On a merge request diff", js: true, focus: true do | 137 | describe "On a merge request diff", js: true, focus: true do |
138 | - let!(:project) { create(:source_project_with_code) } | 138 | + let!(:project) { create(:project) } |
139 | let!(:merge_request) { create(:merge_request_with_diffs, source_project: project, target_project: project) } | 139 | let!(:merge_request) { create(:merge_request_with_diffs, source_project: project, target_project: project) } |
140 | 140 | ||
141 | before do | 141 | before do |
@@ -149,7 +149,7 @@ describe "On a merge request diff", js: true, focus: true do | @@ -149,7 +149,7 @@ describe "On a merge request diff", js: true, focus: true do | ||
149 | 149 | ||
150 | describe "when adding a note" do | 150 | describe "when adding a note" do |
151 | before do | 151 | before do |
152 | - find('a[data-line-code="4735dfc552ad7bf15ca468adc3cad9d05b624490_185_185"]').click | 152 | + find('a[data-line-code="4735dfc552ad7bf15ca468adc3cad9d05b624490_172_185"]').click |
153 | end | 153 | end |
154 | 154 | ||
155 | describe "the notes holder" do | 155 | describe "the notes holder" do |
@@ -159,23 +159,14 @@ describe "On a merge request diff", js: true, focus: true do | @@ -159,23 +159,14 @@ describe "On a merge request diff", js: true, focus: true do | ||
159 | end | 159 | end |
160 | 160 | ||
161 | describe "the note form" do | 161 | describe "the note form" do |
162 | - # FIXME | ||
163 | - #it 'should be valid' do | ||
164 | - #within(".js-temp-notes-holder") { find("#note_noteable_type").value.should == "MergeRequest" } | ||
165 | - #within(".js-temp-notes-holder") { find("#note_noteable_id").value.should == merge_request.id.to_s } | ||
166 | - #within(".js-temp-notes-holder") { find("#note_commit_id").value.should == "" } | ||
167 | - #within(".js-temp-notes-holder") { find("#note_line_code").value.should == "4735dfc552ad7bf15ca468adc3cad9d05b624490_185_185" } | ||
168 | - #should have_css(".js-close-discussion-note-form", text: "Cancel") | ||
169 | - #end | ||
170 | - | ||
171 | it "shouldn't add a second form for same row" do | 162 | it "shouldn't add a second form for same row" do |
172 | - find('a[data-line-code="4735dfc552ad7bf15ca468adc3cad9d05b624490_185_185"]').click | 163 | + find('a[data-line-code="4735dfc552ad7bf15ca468adc3cad9d05b624490_172_185"]').click |
173 | 164 | ||
174 | - should have_css("tr[id='4735dfc552ad7bf15ca468adc3cad9d05b624490_185_185'] + .js-temp-notes-holder form", count: 1) | 165 | + should have_css("tr[id='4735dfc552ad7bf15ca468adc3cad9d05b624490_172_185'] + .js-temp-notes-holder form", count: 1) |
175 | end | 166 | end |
176 | 167 | ||
177 | it "should be removed when canceled" do | 168 | it "should be removed when canceled" do |
178 | - within(".file form[rel$='4735dfc552ad7bf15ca468adc3cad9d05b624490_185_185']") do | 169 | + within(".file form[rel$='4735dfc552ad7bf15ca468adc3cad9d05b624490_172_185']") do |
179 | find(".js-close-discussion-note-form").trigger("click") | 170 | find(".js-close-discussion-note-form").trigger("click") |
180 | end | 171 | end |
181 | 172 | ||
@@ -185,11 +176,11 @@ describe "On a merge request diff", js: true, focus: true do | @@ -185,11 +176,11 @@ describe "On a merge request diff", js: true, focus: true do | ||
185 | end | 176 | end |
186 | 177 | ||
187 | describe "with muliple note forms" do | 178 | describe "with muliple note forms" do |
188 | - let!(:project) { create(:source_project_with_code) } | 179 | + let!(:project) { create(:project) } |
189 | let!(:merge_request) { create(:merge_request_with_diffs, source_project: project, target_project: project) } | 180 | let!(:merge_request) { create(:merge_request_with_diffs, source_project: project, target_project: project) } |
190 | 181 | ||
191 | before do | 182 | before do |
192 | - find('a[data-line-code="4735dfc552ad7bf15ca468adc3cad9d05b624490_185_185"]').click | 183 | + find('a[data-line-code="4735dfc552ad7bf15ca468adc3cad9d05b624490_172_185"]').click |
193 | find('a[data-line-code="342e16cbbd482ac2047dc679b2749d248cc1428f_18_17"]').click | 184 | find('a[data-line-code="342e16cbbd482ac2047dc679b2749d248cc1428f_18_17"]').click |
194 | end | 185 | end |
195 | 186 | ||
@@ -198,7 +189,7 @@ describe "On a merge request diff", js: true, focus: true do | @@ -198,7 +189,7 @@ describe "On a merge request diff", js: true, focus: true do | ||
198 | describe "previewing them separately" do | 189 | describe "previewing them separately" do |
199 | before do | 190 | before do |
200 | # add two separate texts and trigger previews on both | 191 | # add two separate texts and trigger previews on both |
201 | - within("tr[id='4735dfc552ad7bf15ca468adc3cad9d05b624490_185_185'] + .js-temp-notes-holder") do | 192 | + within("tr[id='4735dfc552ad7bf15ca468adc3cad9d05b624490_172_185'] + .js-temp-notes-holder") do |
202 | fill_in "note[note]", with: "One comment on line 185" | 193 | fill_in "note[note]", with: "One comment on line 185" |
203 | find(".js-note-preview-button").trigger("click") | 194 | find(".js-note-preview-button").trigger("click") |
204 | end | 195 | end |
spec/features/security/project/internal_access_spec.rb
1 | require 'spec_helper' | 1 | require 'spec_helper' |
2 | 2 | ||
3 | describe "Internal Project Access" do | 3 | describe "Internal Project Access" do |
4 | - let(:project) { create(:project_with_code) } | 4 | + let(:project) { create(:project) } |
5 | 5 | ||
6 | let(:master) { create(:user) } | 6 | let(:master) { create(:user) } |
7 | let(:guest) { create(:user) } | 7 | let(:guest) { create(:user) } |
spec/features/security/project/private_access_spec.rb
1 | require 'spec_helper' | 1 | require 'spec_helper' |
2 | 2 | ||
3 | describe "Private Project Access" do | 3 | describe "Private Project Access" do |
4 | - let(:project) { create(:project_with_code) } | 4 | + let(:project) { create(:project) } |
5 | 5 | ||
6 | let(:master) { create(:user) } | 6 | let(:master) { create(:user) } |
7 | let(:guest) { create(:user) } | 7 | let(:guest) { create(:user) } |
spec/features/security/project/public_access_spec.rb
1 | require 'spec_helper' | 1 | require 'spec_helper' |
2 | 2 | ||
3 | describe "Public Project Access" do | 3 | describe "Public Project Access" do |
4 | - let(:project) { create(:project_with_code) } | 4 | + let(:project) { create(:project) } |
5 | 5 | ||
6 | let(:master) { create(:user) } | 6 | let(:master) { create(:user) } |
7 | let(:guest) { create(:user) } | 7 | let(:guest) { create(:user) } |
spec/helpers/gitlab_markdown_helper_spec.rb
@@ -4,7 +4,7 @@ describe GitlabMarkdownHelper do | @@ -4,7 +4,7 @@ describe GitlabMarkdownHelper do | ||
4 | include ApplicationHelper | 4 | include ApplicationHelper |
5 | include IssuesHelper | 5 | include IssuesHelper |
6 | 6 | ||
7 | - let!(:project) { create(:project_with_code) } | 7 | + let!(:project) { create(:project) } |
8 | 8 | ||
9 | let(:user) { create(:user, username: 'gfm') } | 9 | let(:user) { create(:user, username: 'gfm') } |
10 | let(:commit) { project.repository.commit } | 10 | let(:commit) { project.repository.commit } |
spec/helpers/search_helper_spec.rb
@@ -43,7 +43,7 @@ describe SearchHelper do | @@ -43,7 +43,7 @@ describe SearchHelper do | ||
43 | end | 43 | end |
44 | 44 | ||
45 | context "with a current project" do | 45 | context "with a current project" do |
46 | - before { @project = create(:project_with_code) } | 46 | + before { @project = create(:project) } |
47 | 47 | ||
48 | it "includes project-specific sections" do | 48 | it "includes project-specific sections" do |
49 | search_autocomplete_opts("Files").size.should == 1 | 49 | search_autocomplete_opts("Files").size.should == 1 |
spec/lib/gitlab/reference_extractor_spec.rb
@@ -43,7 +43,7 @@ describe Gitlab::ReferenceExtractor do | @@ -43,7 +43,7 @@ describe Gitlab::ReferenceExtractor do | ||
43 | end | 43 | end |
44 | 44 | ||
45 | context 'with a project' do | 45 | context 'with a project' do |
46 | - let(:project) { create(:project_with_code) } | 46 | + let(:project) { create(:project) } |
47 | 47 | ||
48 | it 'accesses valid user objects on the project team' do | 48 | it 'accesses valid user objects on the project team' do |
49 | @u_foo = create(:user, username: 'foo') | 49 | @u_foo = create(:user, username: 'foo') |
spec/lib/gitlab/satellite/action_spec.rb
1 | require 'spec_helper' | 1 | require 'spec_helper' |
2 | 2 | ||
3 | describe 'Gitlab::Satellite::Action' do | 3 | describe 'Gitlab::Satellite::Action' do |
4 | - let(:project) { create(:project_with_code) } | 4 | + let(:project) { create(:project) } |
5 | let(:user) { create(:user) } | 5 | let(:user) { create(:user) } |
6 | 6 | ||
7 | describe '#prepare_satellite!' do | 7 | describe '#prepare_satellite!' do |
spec/lib/gitlab/satellite/merge_action_spec.rb
@@ -12,9 +12,10 @@ describe 'Gitlab::Satellite::MergeAction' do | @@ -12,9 +12,10 @@ describe 'Gitlab::Satellite::MergeAction' do | ||
12 | @close_commit2 = ['scss_refactoring', 'f0f14c8eaba69ebddd766498a9d0b0e79becd633'] | 12 | @close_commit2 = ['scss_refactoring', 'f0f14c8eaba69ebddd766498a9d0b0e79becd633'] |
13 | end | 13 | end |
14 | 14 | ||
15 | - let(:project) { create(:project_with_code) } | 15 | + let(:project) { create(:project, namespace: create(:group)) } |
16 | + let(:fork_project) { create(:project, namespace: create(:group)) } | ||
16 | let(:merge_request) { create(:merge_request, source_project: project, target_project: project) } | 17 | let(:merge_request) { create(:merge_request, source_project: project, target_project: project) } |
17 | - let(:merge_request_fork) { create(:merge_request) } | 18 | + let(:merge_request_fork) { create(:merge_request, source_project: fork_project, target_project: project) } |
18 | 19 | ||
19 | describe '#commits_between' do | 20 | describe '#commits_between' do |
20 | def verify_commits(commits, first_commit_sha, last_commit_sha) | 21 | def verify_commits(commits, first_commit_sha, last_commit_sha) |
spec/mailers/notify_spec.rb
@@ -5,7 +5,7 @@ describe Notify do | @@ -5,7 +5,7 @@ describe Notify do | ||
5 | include EmailSpec::Matchers | 5 | include EmailSpec::Matchers |
6 | 6 | ||
7 | let(:recipient) { create(:user, email: 'recipient@example.com') } | 7 | let(:recipient) { create(:user, email: 'recipient@example.com') } |
8 | - let(:project) { create(:project_with_code) } | 8 | + let(:project) { create(:project) } |
9 | 9 | ||
10 | shared_examples 'a multiple recipients email' do | 10 | shared_examples 'a multiple recipients email' do |
11 | it 'is sent to the given recipient' do | 11 | it 'is sent to the given recipient' do |
spec/models/assembla_service_spec.rb
@@ -25,7 +25,7 @@ describe AssemblaService do | @@ -25,7 +25,7 @@ describe AssemblaService do | ||
25 | 25 | ||
26 | describe "Execute" do | 26 | describe "Execute" do |
27 | let(:user) { create(:user) } | 27 | let(:user) { create(:user) } |
28 | - let(:project) { create(:project_with_code) } | 28 | + let(:project) { create(:project) } |
29 | 29 | ||
30 | before do | 30 | before do |
31 | @assembla_service = AssemblaService.new | 31 | @assembla_service = AssemblaService.new |
spec/models/commit_spec.rb
1 | require 'spec_helper' | 1 | require 'spec_helper' |
2 | 2 | ||
3 | describe Commit do | 3 | describe Commit do |
4 | - let(:project) { create :project_with_code } | 4 | + let(:project) { create :project } |
5 | let(:commit) { project.repository.commit } | 5 | let(:commit) { project.repository.commit } |
6 | 6 | ||
7 | describe '#title' do | 7 | describe '#title' do |
spec/models/flowdock_service_spec.rb
@@ -25,7 +25,7 @@ describe FlowdockService do | @@ -25,7 +25,7 @@ describe FlowdockService do | ||
25 | 25 | ||
26 | describe "Execute" do | 26 | describe "Execute" do |
27 | let(:user) { create(:user) } | 27 | let(:user) { create(:user) } |
28 | - let(:project) { create(:project_with_code) } | 28 | + let(:project) { create(:project) } |
29 | 29 | ||
30 | before do | 30 | before do |
31 | @flowdock_service = FlowdockService.new | 31 | @flowdock_service = FlowdockService.new |
spec/models/merge_request_spec.rb
@@ -73,14 +73,13 @@ describe MergeRequest do | @@ -73,14 +73,13 @@ describe MergeRequest do | ||
73 | 73 | ||
74 | describe '#for_fork?' do | 74 | describe '#for_fork?' do |
75 | it 'returns true if the merge request is for a fork' do | 75 | it 'returns true if the merge request is for a fork' do |
76 | - subject.source_project = create(:source_project) | ||
77 | - subject.target_project = create(:target_project) | 76 | + subject.source_project = create(:project, namespace: create(:group)) |
77 | + subject.target_project = create(:project, namespace: create(:group)) | ||
78 | 78 | ||
79 | subject.for_fork?.should be_true | 79 | subject.for_fork?.should be_true |
80 | end | 80 | end |
81 | + | ||
81 | it 'returns false if is not for a fork' do | 82 | it 'returns false if is not for a fork' do |
82 | - subject.source_project = create(:source_project) | ||
83 | - subject.target_project = subject.source_project | ||
84 | subject.for_fork?.should be_false | 83 | subject.for_fork?.should be_false |
85 | end | 84 | end |
86 | end | 85 | end |
spec/models/note_spec.rb
@@ -206,7 +206,7 @@ describe Note do | @@ -206,7 +206,7 @@ describe Note do | ||
206 | end | 206 | end |
207 | 207 | ||
208 | describe '#create_cross_reference_note' do | 208 | describe '#create_cross_reference_note' do |
209 | - let(:project) { create(:project_with_code) } | 209 | + let(:project) { create(:project) } |
210 | let(:author) { create(:user) } | 210 | let(:author) { create(:user) } |
211 | let(:issue) { create(:issue, project: project) } | 211 | let(:issue) { create(:issue, project: project) } |
212 | let(:mergereq) { create(:merge_request, target_project: project) } | 212 | let(:mergereq) { create(:merge_request, target_project: project) } |
spec/models/project_spec.rb
@@ -128,7 +128,7 @@ describe Project do | @@ -128,7 +128,7 @@ describe Project do | ||
128 | end | 128 | end |
129 | 129 | ||
130 | describe :update_merge_requests do | 130 | describe :update_merge_requests do |
131 | - let(:project) { create(:project_with_code) } | 131 | + let(:project) { create(:project) } |
132 | 132 | ||
133 | before do | 133 | before do |
134 | @merge_request = create(:merge_request, source_project: project, target_project: project) | 134 | @merge_request = create(:merge_request, source_project: project, target_project: project) |
@@ -136,7 +136,7 @@ describe Project do | @@ -136,7 +136,7 @@ describe Project do | ||
136 | end | 136 | end |
137 | 137 | ||
138 | it "should close merge request if last commit from source branch was pushed to target branch" do | 138 | it "should close merge request if last commit from source branch was pushed to target branch" do |
139 | - @merge_request.reloaded_commits | 139 | + @merge_request.reload_code |
140 | @merge_request.last_commit.id.should == "b1e6a9dbf1c85e6616497a5e7bad9143a4bd0828" | 140 | @merge_request.last_commit.id.should == "b1e6a9dbf1c85e6616497a5e7bad9143a4bd0828" |
141 | project.update_merge_requests("8716fc78f3c65bbf7bcf7b574febd583bc5d2812", "b1e6a9dbf1c85e6616497a5e7bad9143a4bd0828", "refs/heads/stable", @key.user) | 141 | project.update_merge_requests("8716fc78f3c65bbf7bcf7b574febd583bc5d2812", "b1e6a9dbf1c85e6616497a5e7bad9143a4bd0828", "refs/heads/stable", @key.user) |
142 | @merge_request.reload | 142 | @merge_request.reload |
@@ -144,7 +144,6 @@ describe Project do | @@ -144,7 +144,6 @@ describe Project do | ||
144 | end | 144 | end |
145 | 145 | ||
146 | it "should update merge request commits with new one if pushed to source branch" do | 146 | it "should update merge request commits with new one if pushed to source branch" do |
147 | - @merge_request.last_commit.should == nil | ||
148 | project.update_merge_requests("8716fc78f3c65bbf7bcf7b574febd583bc5d2812", "b1e6a9dbf1c85e6616497a5e7bad9143a4bd0828", "refs/heads/master", @key.user) | 147 | project.update_merge_requests("8716fc78f3c65bbf7bcf7b574febd583bc5d2812", "b1e6a9dbf1c85e6616497a5e7bad9143a4bd0828", "refs/heads/master", @key.user) |
149 | @merge_request.reload | 148 | @merge_request.reload |
150 | @merge_request.last_commit.id.should == "b1e6a9dbf1c85e6616497a5e7bad9143a4bd0828" | 149 | @merge_request.last_commit.id.should == "b1e6a9dbf1c85e6616497a5e7bad9143a4bd0828" |
@@ -156,10 +155,10 @@ describe Project do | @@ -156,10 +155,10 @@ describe Project do | ||
156 | context 'with namespace' do | 155 | context 'with namespace' do |
157 | before do | 156 | before do |
158 | @group = create :group, name: 'gitlab' | 157 | @group = create :group, name: 'gitlab' |
159 | - @project = create(:project, name: 'gitlab-ci', namespace: @group) | 158 | + @project = create(:project, name: 'gitlabhq', namespace: @group) |
160 | end | 159 | end |
161 | 160 | ||
162 | - it { Project.find_with_namespace('gitlab/gitlab-ci').should == @project } | 161 | + it { Project.find_with_namespace('gitlab/gitlabhq').should == @project } |
163 | it { Project.find_with_namespace('gitlab-ci').should be_nil } | 162 | it { Project.find_with_namespace('gitlab-ci').should be_nil } |
164 | end | 163 | end |
165 | end | 164 | end |
@@ -168,10 +167,10 @@ describe Project do | @@ -168,10 +167,10 @@ describe Project do | ||
168 | context 'with namespace' do | 167 | context 'with namespace' do |
169 | before do | 168 | before do |
170 | @group = create :group, name: 'gitlab' | 169 | @group = create :group, name: 'gitlab' |
171 | - @project = create(:project, name: 'gitlab-ci', namespace: @group) | 170 | + @project = create(:project, name: 'gitlabhq', namespace: @group) |
172 | end | 171 | end |
173 | 172 | ||
174 | - it { @project.to_param.should == "gitlab/gitlab-ci" } | 173 | + it { @project.to_param.should == "gitlab/gitlabhq" } |
175 | end | 174 | end |
176 | end | 175 | end |
177 | 176 | ||
@@ -237,7 +236,7 @@ describe Project do | @@ -237,7 +236,7 @@ describe Project do | ||
237 | end | 236 | end |
238 | 237 | ||
239 | describe :open_branches do | 238 | describe :open_branches do |
240 | - let(:project) { create(:project_with_code) } | 239 | + let(:project) { create(:project) } |
241 | 240 | ||
242 | before do | 241 | before do |
243 | project.protected_branches.create(name: 'master') | 242 | project.protected_branches.create(name: 'master') |
spec/models/service_spec.rb
@@ -44,12 +44,12 @@ describe Service do | @@ -44,12 +44,12 @@ describe Service do | ||
44 | end | 44 | end |
45 | 45 | ||
46 | describe :can_test do | 46 | describe :can_test do |
47 | - it { @testable.should == false } | 47 | + it { @testable.should == true } |
48 | end | 48 | end |
49 | end | 49 | end |
50 | 50 | ||
51 | describe "With commits" do | 51 | describe "With commits" do |
52 | - let (:project) { create :project_with_code } | 52 | + let (:project) { create :project } |
53 | 53 | ||
54 | before do | 54 | before do |
55 | @service.stub( | 55 | @service.stub( |
spec/observers/merge_request_observer_spec.rb
@@ -4,16 +4,17 @@ describe MergeRequestObserver do | @@ -4,16 +4,17 @@ describe MergeRequestObserver do | ||
4 | let(:some_user) { create :user } | 4 | let(:some_user) { create :user } |
5 | let(:assignee) { create :user } | 5 | let(:assignee) { create :user } |
6 | let(:author) { create :user } | 6 | let(:author) { create :user } |
7 | + let(:project) { create :project } | ||
7 | let(:mr_mock) { double(:merge_request, id: 42, assignee: assignee, author: author).as_null_object } | 8 | let(:mr_mock) { double(:merge_request, id: 42, assignee: assignee, author: author).as_null_object } |
8 | - let(:assigned_mr) { create(:merge_request, assignee: assignee, author: author, target_project: create(:project)) } | ||
9 | - let(:unassigned_mr) { create(:merge_request, author: author, target_project: create(:project)) } | ||
10 | - let(:closed_assigned_mr) { create(:closed_merge_request, assignee: assignee, author: author, target_project: create(:project)) } | ||
11 | - let(:closed_unassigned_mr) { create(:closed_merge_request, author: author, target_project: create(:project)) } | 9 | + let(:assigned_mr) { create(:merge_request, assignee: assignee, author: author, source_project: project) } |
10 | + let(:unassigned_mr) { create(:merge_request, author: author, source_project: project) } | ||
11 | + let(:closed_assigned_mr) { create(:closed_merge_request, assignee: assignee, author: author, source_project: project) } | ||
12 | + let(:closed_unassigned_mr) { create(:closed_merge_request, author: author, source_project: project) } | ||
12 | 13 | ||
13 | before { subject.stub(:current_user).and_return(some_user) } | 14 | before { subject.stub(:current_user).and_return(some_user) } |
14 | before { subject.stub(notification: double('NotificationService').as_null_object) } | 15 | before { subject.stub(notification: double('NotificationService').as_null_object) } |
15 | before { mr_mock.stub(:author_id) } | 16 | before { mr_mock.stub(:author_id) } |
16 | - before { mr_mock.stub(:target_project) } | 17 | + before { mr_mock.stub(:source_project) } |
17 | before { mr_mock.stub(:source_project) } | 18 | before { mr_mock.stub(:source_project) } |
18 | before { mr_mock.stub(:project) } | 19 | before { mr_mock.stub(:project) } |
19 | before { mr_mock.stub(:create_cross_references!).and_return(true) } | 20 | before { mr_mock.stub(:create_cross_references!).and_return(true) } |
@@ -46,7 +47,7 @@ describe MergeRequestObserver do | @@ -46,7 +47,7 @@ describe MergeRequestObserver do | ||
46 | end | 47 | end |
47 | 48 | ||
48 | it 'is called when a merge request is changed' do | 49 | it 'is called when a merge request is changed' do |
49 | - changed = create(:merge_request, source_project: create(:project)) | 50 | + changed = create(:merge_request, source_project: project) |
50 | subject.should_receive(:after_update) | 51 | subject.should_receive(:after_update) |
51 | 52 | ||
52 | MergeRequest.observers.enable :merge_request_observer do | 53 | MergeRequest.observers.enable :merge_request_observer do |
@@ -81,13 +82,13 @@ describe MergeRequestObserver do | @@ -81,13 +82,13 @@ describe MergeRequestObserver do | ||
81 | context '#after_close' do | 82 | context '#after_close' do |
82 | context 'a status "closed"' do | 83 | context 'a status "closed"' do |
83 | it 'note is created if the merge request is being closed' do | 84 | it 'note is created if the merge request is being closed' do |
84 | - Note.should_receive(:create_status_change_note).with(assigned_mr, assigned_mr.target_project, some_user, 'closed', nil) | 85 | + Note.should_receive(:create_status_change_note).with(assigned_mr, assigned_mr.source_project, some_user, 'closed', nil) |
85 | 86 | ||
86 | assigned_mr.close | 87 | assigned_mr.close |
87 | end | 88 | end |
88 | 89 | ||
89 | it 'notification is delivered only to author if the merge request is being closed' do | 90 | it 'notification is delivered only to author if the merge request is being closed' do |
90 | - Note.should_receive(:create_status_change_note).with(unassigned_mr, unassigned_mr.target_project, some_user, 'closed', nil) | 91 | + Note.should_receive(:create_status_change_note).with(unassigned_mr, unassigned_mr.source_project, some_user, 'closed', nil) |
91 | 92 | ||
92 | unassigned_mr.close | 93 | unassigned_mr.close |
93 | end | 94 | end |
@@ -97,13 +98,13 @@ describe MergeRequestObserver do | @@ -97,13 +98,13 @@ describe MergeRequestObserver do | ||
97 | context '#after_reopen' do | 98 | context '#after_reopen' do |
98 | context 'a status "reopened"' do | 99 | context 'a status "reopened"' do |
99 | it 'note is created if the merge request is being reopened' do | 100 | it 'note is created if the merge request is being reopened' do |
100 | - Note.should_receive(:create_status_change_note).with(closed_assigned_mr, closed_assigned_mr.target_project, some_user, 'reopened', nil) | 101 | + Note.should_receive(:create_status_change_note).with(closed_assigned_mr, closed_assigned_mr.source_project, some_user, 'reopened', nil) |
101 | 102 | ||
102 | closed_assigned_mr.reopen | 103 | closed_assigned_mr.reopen |
103 | end | 104 | end |
104 | 105 | ||
105 | it 'notification is delivered only to author if the merge request is being reopened' do | 106 | it 'notification is delivered only to author if the merge request is being reopened' do |
106 | - Note.should_receive(:create_status_change_note).with(closed_unassigned_mr, closed_unassigned_mr.target_project, some_user, 'reopened', nil) | 107 | + Note.should_receive(:create_status_change_note).with(closed_unassigned_mr, closed_unassigned_mr.source_project, some_user, 'reopened', nil) |
107 | 108 | ||
108 | closed_unassigned_mr.reopen | 109 | closed_unassigned_mr.reopen |
109 | end | 110 | end |
@@ -118,20 +119,13 @@ describe MergeRequestObserver do | @@ -118,20 +119,13 @@ describe MergeRequestObserver do | ||
118 | it { @event.project.should == project } | 119 | it { @event.project.should == project } |
119 | end | 120 | end |
120 | 121 | ||
121 | - let(:project) { create(:project) } | ||
122 | before do | 122 | before do |
123 | - TestEnv.enable_observers | ||
124 | - @merge_request = create(:merge_request, source_project: project, target_project: project) | 123 | + @merge_request = create(:merge_request, source_project: project, source_project: project) |
125 | @event = Event.last | 124 | @event = Event.last |
126 | end | 125 | end |
127 | 126 | ||
128 | - after do | ||
129 | - TestEnv.disable_observers | ||
130 | - end | ||
131 | - | ||
132 | it_should_be_valid_event | 127 | it_should_be_valid_event |
133 | it { @event.action.should == Event::CREATED } | 128 | it { @event.action.should == Event::CREATED } |
134 | it { @event.target.should == @merge_request } | 129 | it { @event.target.should == @merge_request } |
135 | end | 130 | end |
136 | - | ||
137 | end | 131 | end |
spec/requests/api/files_spec.rb
@@ -6,7 +6,7 @@ describe API::API do | @@ -6,7 +6,7 @@ describe API::API do | ||
6 | after(:each) { ActiveRecord::Base.observers.disable(:user_observer) } | 6 | after(:each) { ActiveRecord::Base.observers.disable(:user_observer) } |
7 | 7 | ||
8 | let(:user) { create(:user) } | 8 | let(:user) { create(:user) } |
9 | - let!(:project) { create(:project_with_code, namespace: user.namespace ) } | 9 | + let!(:project) { create(:project, namespace: user.namespace ) } |
10 | before { project.team << [user, :developer] } | 10 | before { project.team << [user, :developer] } |
11 | 11 | ||
12 | describe "POST /projects/:id/repository/files" do | 12 | describe "POST /projects/:id/repository/files" do |
spec/requests/api/merge_requests_spec.rb
@@ -5,7 +5,7 @@ describe API::API do | @@ -5,7 +5,7 @@ describe API::API do | ||
5 | before(:each) { ActiveRecord::Base.observers.enable(:user_observer) } | 5 | before(:each) { ActiveRecord::Base.observers.enable(:user_observer) } |
6 | after(:each) { ActiveRecord::Base.observers.disable(:user_observer) } | 6 | after(:each) { ActiveRecord::Base.observers.disable(:user_observer) } |
7 | let(:user) { create(:user) } | 7 | let(:user) { create(:user) } |
8 | - let!(:project) {create(:project_with_code, creator_id: user.id, namespace: user.namespace) } | 8 | + let!(:project) {create(:project, creator_id: user.id, namespace: user.namespace) } |
9 | let!(:merge_request) { create(:merge_request, author: user, assignee: user, source_project: project, target_project: project, title: "Test") } | 9 | let!(:merge_request) { create(:merge_request, author: user, assignee: user, source_project: project, target_project: project, title: "Test") } |
10 | before { | 10 | before { |
11 | project.team << [user, :reporters] | 11 | project.team << [user, :reporters] |
@@ -47,32 +47,32 @@ describe API::API do | @@ -47,32 +47,32 @@ describe API::API do | ||
47 | context 'between branches projects' do | 47 | context 'between branches projects' do |
48 | it "should return merge_request" do | 48 | it "should return merge_request" do |
49 | post api("/projects/#{project.id}/merge_requests", user), | 49 | post api("/projects/#{project.id}/merge_requests", user), |
50 | - title: 'Test merge_request', source_branch: "stable", target_branch: "master", author: user | 50 | + title: 'Test merge_request', source_branch: "stable", target_branch: "master", author: user |
51 | response.status.should == 201 | 51 | response.status.should == 201 |
52 | json_response['title'].should == 'Test merge_request' | 52 | json_response['title'].should == 'Test merge_request' |
53 | end | 53 | end |
54 | 54 | ||
55 | it "should return 422 when source_branch equals target_branch" do | 55 | it "should return 422 when source_branch equals target_branch" do |
56 | post api("/projects/#{project.id}/merge_requests", user), | 56 | post api("/projects/#{project.id}/merge_requests", user), |
57 | - title: "Test merge_request", source_branch: "master", target_branch: "master", author: user | 57 | + title: "Test merge_request", source_branch: "master", target_branch: "master", author: user |
58 | response.status.should == 422 | 58 | response.status.should == 422 |
59 | end | 59 | end |
60 | 60 | ||
61 | it "should return 400 when source_branch is missing" do | 61 | it "should return 400 when source_branch is missing" do |
62 | post api("/projects/#{project.id}/merge_requests", user), | 62 | post api("/projects/#{project.id}/merge_requests", user), |
63 | - title: "Test merge_request", target_branch: "master", author: user | 63 | + title: "Test merge_request", target_branch: "master", author: user |
64 | response.status.should == 400 | 64 | response.status.should == 400 |
65 | end | 65 | end |
66 | 66 | ||
67 | it "should return 400 when target_branch is missing" do | 67 | it "should return 400 when target_branch is missing" do |
68 | post api("/projects/#{project.id}/merge_requests", user), | 68 | post api("/projects/#{project.id}/merge_requests", user), |
69 | - title: "Test merge_request", source_branch: "stable", author: user | 69 | + title: "Test merge_request", source_branch: "stable", author: user |
70 | response.status.should == 400 | 70 | response.status.should == 400 |
71 | end | 71 | end |
72 | 72 | ||
73 | it "should return 400 when title is missing" do | 73 | it "should return 400 when title is missing" do |
74 | post api("/projects/#{project.id}/merge_requests", user), | 74 | post api("/projects/#{project.id}/merge_requests", user), |
75 | - target_branch: 'master', source_branch: 'stable' | 75 | + target_branch: 'master', source_branch: 'stable' |
76 | response.status.should == 400 | 76 | response.status.should == 400 |
77 | end | 77 | end |
78 | end | 78 | end |
@@ -80,8 +80,8 @@ describe API::API do | @@ -80,8 +80,8 @@ describe API::API do | ||
80 | context 'forked projects' do | 80 | context 'forked projects' do |
81 | let!(:user2) {create(:user)} | 81 | let!(:user2) {create(:user)} |
82 | let!(:forked_project_link) { build(:forked_project_link) } | 82 | let!(:forked_project_link) { build(:forked_project_link) } |
83 | - let!(:fork_project) { create(:source_project_with_code, forked_project_link: forked_project_link, namespace: user2.namespace, creator_id: user2.id) } | ||
84 | - let!(:unrelated_project) { create(:target_project_with_code, namespace: user2.namespace, creator_id: user2.id) } | 83 | + let!(:fork_project) { create(:project, forked_project_link: forked_project_link, namespace: user2.namespace, creator_id: user2.id) } |
84 | + let!(:unrelated_project) { create(:project, namespace: create(:user).namespace, creator_id: user2.id) } | ||
85 | 85 | ||
86 | before :each do |each| | 86 | before :each do |each| |
87 | fork_project.team << [user2, :reporters] | 87 | fork_project.team << [user2, :reporters] |
@@ -92,7 +92,7 @@ describe API::API do | @@ -92,7 +92,7 @@ describe API::API do | ||
92 | 92 | ||
93 | it "should return merge_request" do | 93 | it "should return merge_request" do |
94 | post api("/projects/#{fork_project.id}/merge_requests", user2), | 94 | post api("/projects/#{fork_project.id}/merge_requests", user2), |
95 | - title: 'Test merge_request', source_branch: "stable", target_branch: "master", author: user2, target_project_id: project.id | 95 | + title: 'Test merge_request', source_branch: "stable", target_branch: "master", author: user2, target_project_id: project.id |
96 | response.status.should == 201 | 96 | response.status.should == 201 |
97 | json_response['title'].should == 'Test merge_request' | 97 | json_response['title'].should == 'Test merge_request' |
98 | end | 98 | end |
@@ -102,44 +102,44 @@ describe API::API do | @@ -102,44 +102,44 @@ describe API::API do | ||
102 | fork_project.forked?.should be_true | 102 | fork_project.forked?.should be_true |
103 | fork_project.forked_from_project.should == project | 103 | fork_project.forked_from_project.should == project |
104 | post api("/projects/#{fork_project.id}/merge_requests", user2), | 104 | post api("/projects/#{fork_project.id}/merge_requests", user2), |
105 | - title: 'Test merge_request', source_branch: "master", target_branch: "master", author: user2, target_project_id: project.id | 105 | + title: 'Test merge_request', source_branch: "master", target_branch: "master", author: user2, target_project_id: project.id |
106 | response.status.should == 201 | 106 | response.status.should == 201 |
107 | json_response['title'].should == 'Test merge_request' | 107 | json_response['title'].should == 'Test merge_request' |
108 | end | 108 | end |
109 | 109 | ||
110 | it "should return 400 when source_branch is missing" do | 110 | it "should return 400 when source_branch is missing" do |
111 | post api("/projects/#{fork_project.id}/merge_requests", user2), | 111 | post api("/projects/#{fork_project.id}/merge_requests", user2), |
112 | - title: 'Test merge_request', target_branch: "master", author: user2, target_project_id: project.id | 112 | + title: 'Test merge_request', target_branch: "master", author: user2, target_project_id: project.id |
113 | response.status.should == 400 | 113 | response.status.should == 400 |
114 | end | 114 | end |
115 | 115 | ||
116 | it "should return 400 when target_branch is missing" do | 116 | it "should return 400 when target_branch is missing" do |
117 | post api("/projects/#{fork_project.id}/merge_requests", user2), | 117 | post api("/projects/#{fork_project.id}/merge_requests", user2), |
118 | - title: 'Test merge_request', target_branch: "master", author: user2, target_project_id: project.id | 118 | + title: 'Test merge_request', target_branch: "master", author: user2, target_project_id: project.id |
119 | response.status.should == 400 | 119 | response.status.should == 400 |
120 | end | 120 | end |
121 | 121 | ||
122 | it "should return 400 when title is missing" do | 122 | it "should return 400 when title is missing" do |
123 | post api("/projects/#{fork_project.id}/merge_requests", user2), | 123 | post api("/projects/#{fork_project.id}/merge_requests", user2), |
124 | - target_branch: 'master', source_branch: 'stable', author: user2, target_project_id: project.id | 124 | + target_branch: 'master', source_branch: 'stable', author: user2, target_project_id: project.id |
125 | response.status.should == 400 | 125 | response.status.should == 400 |
126 | end | 126 | end |
127 | 127 | ||
128 | it "should return 400 when target_branch is specified and not a forked project" do | 128 | it "should return 400 when target_branch is specified and not a forked project" do |
129 | post api("/projects/#{project.id}/merge_requests", user), | 129 | post api("/projects/#{project.id}/merge_requests", user), |
130 | - title: 'Test merge_request', target_branch: 'master', source_branch: 'stable', author: user, target_project_id: fork_project.id | 130 | + title: 'Test merge_request', target_branch: 'master', source_branch: 'stable', author: user, target_project_id: fork_project.id |
131 | response.status.should == 400 | 131 | response.status.should == 400 |
132 | end | 132 | end |
133 | 133 | ||
134 | it "should return 400 when target_branch is specified and for a different fork" do | 134 | it "should return 400 when target_branch is specified and for a different fork" do |
135 | post api("/projects/#{fork_project.id}/merge_requests", user2), | 135 | post api("/projects/#{fork_project.id}/merge_requests", user2), |
136 | - title: 'Test merge_request', target_branch: 'master', source_branch: 'stable', author: user2, target_project_id: unrelated_project.id | 136 | + title: 'Test merge_request', target_branch: 'master', source_branch: 'stable', author: user2, target_project_id: unrelated_project.id |
137 | response.status.should == 400 | 137 | response.status.should == 400 |
138 | end | 138 | end |
139 | 139 | ||
140 | it "should return 201 when target_branch is specified and for the same project" do | 140 | it "should return 201 when target_branch is specified and for the same project" do |
141 | post api("/projects/#{fork_project.id}/merge_requests", user2), | 141 | post api("/projects/#{fork_project.id}/merge_requests", user2), |
142 | - title: 'Test merge_request', target_branch: 'master', source_branch: 'stable', author: user2, target_project_id: fork_project.id | 142 | + title: 'Test merge_request', target_branch: 'master', source_branch: 'stable', author: user2, target_project_id: fork_project.id |
143 | response.status.should == 201 | 143 | response.status.should == 201 |
144 | end | 144 | end |
145 | end | 145 | end |
@@ -170,7 +170,7 @@ describe API::API do | @@ -170,7 +170,7 @@ describe API::API do | ||
170 | 170 | ||
171 | it "should return 422 when source_branch and target_branch are renamed the same" do | 171 | it "should return 422 when source_branch and target_branch are renamed the same" do |
172 | put api("/projects/#{project.id}/merge_request/#{merge_request.id}", user), | 172 | put api("/projects/#{project.id}/merge_request/#{merge_request.id}", user), |
173 | - source_branch: "master", target_branch: "master" | 173 | + source_branch: "master", target_branch: "master" |
174 | response.status.should == 422 | 174 | response.status.should == 422 |
175 | end | 175 | end |
176 | 176 | ||
@@ -198,5 +198,4 @@ describe API::API do | @@ -198,5 +198,4 @@ describe API::API do | ||
198 | response.status.should == 404 | 198 | response.status.should == 404 |
199 | end | 199 | end |
200 | end | 200 | end |
201 | - | ||
202 | end | 201 | end |
spec/requests/api/project_hooks_spec.rb
@@ -7,7 +7,7 @@ describe API::API, 'ProjectHooks' do | @@ -7,7 +7,7 @@ describe API::API, 'ProjectHooks' do | ||
7 | 7 | ||
8 | let(:user) { create(:user) } | 8 | let(:user) { create(:user) } |
9 | let(:user3) { create(:user) } | 9 | let(:user3) { create(:user) } |
10 | - let!(:project) { create(:project_with_code, creator_id: user.id, namespace: user.namespace) } | 10 | + let!(:project) { create(:project, creator_id: user.id, namespace: user.namespace) } |
11 | let!(:hook) { create(:project_hook, project: project, url: "http://example.com") } | 11 | let!(:hook) { create(:project_hook, project: project, url: "http://example.com") } |
12 | 12 | ||
13 | before do | 13 | before do |
spec/requests/api/projects_spec.rb
@@ -9,14 +9,14 @@ describe API::API do | @@ -9,14 +9,14 @@ describe API::API do | ||
9 | let(:user2) { create(:user) } | 9 | let(:user2) { create(:user) } |
10 | let(:user3) { create(:user) } | 10 | let(:user3) { create(:user) } |
11 | let(:admin) { create(:admin) } | 11 | let(:admin) { create(:admin) } |
12 | - let!(:project) { create(:project_with_code, creator_id: user.id, namespace: user.namespace) } | ||
13 | - let!(:snippet) { create(:project_snippet, author: user, project: project, title: 'example') } | ||
14 | - let!(:users_project) { create(:users_project, user: user, project: project, project_access: UsersProject::MASTER) } | ||
15 | - let!(:users_project2) { create(:users_project, user: user3, project: project, project_access: UsersProject::DEVELOPER) } | ||
16 | - | ||
17 | - before { project.team << [user, :reporter] } | 12 | + let(:project) { create(:project, creator_id: user.id, namespace: user.namespace) } |
13 | + let(:snippet) { create(:project_snippet, author: user, project: project, title: 'example') } | ||
14 | + let(:users_project) { create(:users_project, user: user, project: project, project_access: UsersProject::MASTER) } | ||
15 | + let(:users_project2) { create(:users_project, user: user3, project: project, project_access: UsersProject::DEVELOPER) } | ||
18 | 16 | ||
19 | describe "GET /projects" do | 17 | describe "GET /projects" do |
18 | + before { project } | ||
19 | + | ||
20 | context "when unauthenticated" do | 20 | context "when unauthenticated" do |
21 | it "should return authentication error" do | 21 | it "should return authentication error" do |
22 | get api("/projects") | 22 | get api("/projects") |
@@ -36,6 +36,8 @@ describe API::API do | @@ -36,6 +36,8 @@ describe API::API do | ||
36 | end | 36 | end |
37 | 37 | ||
38 | describe "GET /projects/all" do | 38 | describe "GET /projects/all" do |
39 | + before { project } | ||
40 | + | ||
39 | context "when unauthenticated" do | 41 | context "when unauthenticated" do |
40 | it "should return authentication error" do | 42 | it "should return authentication error" do |
41 | get api("/projects/all") | 43 | get api("/projects/all") |
@@ -174,6 +176,7 @@ describe API::API do | @@ -174,6 +176,7 @@ describe API::API do | ||
174 | end | 176 | end |
175 | 177 | ||
176 | describe "POST /projects/user/:id" do | 178 | describe "POST /projects/user/:id" do |
179 | + before { project } | ||
177 | before { admin } | 180 | before { admin } |
178 | 181 | ||
179 | it "should create new project without path" do | 182 | it "should create new project without path" do |
@@ -255,6 +258,8 @@ describe API::API do | @@ -255,6 +258,8 @@ describe API::API do | ||
255 | end | 258 | end |
256 | 259 | ||
257 | describe "GET /projects/:id" do | 260 | describe "GET /projects/:id" do |
261 | + before { project } | ||
262 | + | ||
258 | it "should return a project by id" do | 263 | it "should return a project by id" do |
259 | get api("/projects/#{project.id}", user) | 264 | get api("/projects/#{project.id}", user) |
260 | response.status.should == 200 | 265 | response.status.should == 200 |
@@ -282,6 +287,8 @@ describe API::API do | @@ -282,6 +287,8 @@ describe API::API do | ||
282 | end | 287 | end |
283 | 288 | ||
284 | describe "GET /projects/:id/events" do | 289 | describe "GET /projects/:id/events" do |
290 | + before { users_project } | ||
291 | + | ||
285 | it "should return a project events" do | 292 | it "should return a project events" do |
286 | get api("/projects/#{project.id}/events", user) | 293 | get api("/projects/#{project.id}/events", user) |
287 | response.status.should == 200 | 294 | response.status.should == 200 |
@@ -305,6 +312,9 @@ describe API::API do | @@ -305,6 +312,9 @@ describe API::API do | ||
305 | end | 312 | end |
306 | 313 | ||
307 | describe "GET /projects/:id/members" do | 314 | describe "GET /projects/:id/members" do |
315 | + before { users_project } | ||
316 | + before { users_project2 } | ||
317 | + | ||
308 | it "should return project team members" do | 318 | it "should return project team members" do |
309 | get api("/projects/#{project.id}/members", user) | 319 | get api("/projects/#{project.id}/members", user) |
310 | response.status.should == 200 | 320 | response.status.should == 200 |
@@ -328,6 +338,8 @@ describe API::API do | @@ -328,6 +338,8 @@ describe API::API do | ||
328 | end | 338 | end |
329 | 339 | ||
330 | describe "GET /projects/:id/members/:user_id" do | 340 | describe "GET /projects/:id/members/:user_id" do |
341 | + before { users_project } | ||
342 | + | ||
331 | it "should return project team member" do | 343 | it "should return project team member" do |
332 | get api("/projects/#{project.id}/members/#{user.id}", user) | 344 | get api("/projects/#{project.id}/members/#{user.id}", user) |
333 | response.status.should == 200 | 345 | response.status.should == 200 |
@@ -383,6 +395,8 @@ describe API::API do | @@ -383,6 +395,8 @@ describe API::API do | ||
383 | end | 395 | end |
384 | 396 | ||
385 | describe "PUT /projects/:id/members/:user_id" do | 397 | describe "PUT /projects/:id/members/:user_id" do |
398 | + before { users_project2 } | ||
399 | + | ||
386 | it "should update project team member" do | 400 | it "should update project team member" do |
387 | put api("/projects/#{project.id}/members/#{user3.id}", user), access_level: UsersProject::MASTER | 401 | put api("/projects/#{project.id}/members/#{user3.id}", user), access_level: UsersProject::MASTER |
388 | response.status.should == 200 | 402 | response.status.should == 200 |
@@ -407,6 +421,9 @@ describe API::API do | @@ -407,6 +421,9 @@ describe API::API do | ||
407 | end | 421 | end |
408 | 422 | ||
409 | describe "DELETE /projects/:id/members/:user_id" do | 423 | describe "DELETE /projects/:id/members/:user_id" do |
424 | + before { users_project } | ||
425 | + before { users_project2 } | ||
426 | + | ||
410 | it "should remove user from project team" do | 427 | it "should remove user from project team" do |
411 | expect { | 428 | expect { |
412 | delete api("/projects/#{project.id}/members/#{user3.id}", user) | 429 | delete api("/projects/#{project.id}/members/#{user3.id}", user) |
@@ -425,9 +442,7 @@ describe API::API do | @@ -425,9 +442,7 @@ describe API::API do | ||
425 | delete api("/projects/#{project.id}/members/#{user3.id}", user) | 442 | delete api("/projects/#{project.id}/members/#{user3.id}", user) |
426 | response.status.should == 200 | 443 | response.status.should == 200 |
427 | end | 444 | end |
428 | - end | ||
429 | 445 | ||
430 | - describe "DELETE /projects/:id/members/:user_id" do | ||
431 | it "should return 200 OK when the user was not member" do | 446 | it "should return 200 OK when the user was not member" do |
432 | expect { | 447 | expect { |
433 | delete api("/projects/#{project.id}/members/1000000", user) | 448 | delete api("/projects/#{project.id}/members/1000000", user) |
@@ -439,6 +454,8 @@ describe API::API do | @@ -439,6 +454,8 @@ describe API::API do | ||
439 | end | 454 | end |
440 | 455 | ||
441 | describe "GET /projects/:id/snippets" do | 456 | describe "GET /projects/:id/snippets" do |
457 | + before { snippet } | ||
458 | + | ||
442 | it "should return an array of project snippets" do | 459 | it "should return an array of project snippets" do |
443 | get api("/projects/#{project.id}/snippets", user) | 460 | get api("/projects/#{project.id}/snippets", user) |
444 | response.status.should == 200 | 461 | response.status.should == 200 |
@@ -505,6 +522,8 @@ describe API::API do | @@ -505,6 +522,8 @@ describe API::API do | ||
505 | end | 522 | end |
506 | 523 | ||
507 | describe "DELETE /projects/:id/snippets/:snippet_id" do | 524 | describe "DELETE /projects/:id/snippets/:snippet_id" do |
525 | + before { snippet } | ||
526 | + | ||
508 | it "should delete existing project snippet" do | 527 | it "should delete existing project snippet" do |
509 | expect { | 528 | expect { |
510 | delete api("/projects/#{project.id}/snippets/#{snippet.id}", user) | 529 | delete api("/projects/#{project.id}/snippets/#{snippet.id}", user) |
@@ -657,15 +676,15 @@ describe API::API do | @@ -657,15 +676,15 @@ describe API::API do | ||
657 | 676 | ||
658 | describe "GET /projects/search/:query" do | 677 | describe "GET /projects/search/:query" do |
659 | let!(:query) { 'query'} | 678 | let!(:query) { 'query'} |
660 | - let!(:search) { create(:project, name: query, creator_id: user.id, namespace: user.namespace) } | ||
661 | - let!(:pre) { create(:project, name: "pre_#{query}", creator_id: user.id, namespace: user.namespace) } | ||
662 | - let!(:post) { create(:project, name: "#{query}_post", creator_id: user.id, namespace: user.namespace) } | ||
663 | - let!(:pre_post) { create(:project, name: "pre_#{query}_post", creator_id: user.id, namespace: user.namespace) } | ||
664 | - let!(:unfound) { create(:project, name: 'unfound', creator_id: user.id, namespace: user.namespace) } | ||
665 | - let!(:internal) { create(:project, name: "internal #{query}", visibility_level: Gitlab::VisibilityLevel::INTERNAL) } | ||
666 | - let!(:unfound_internal) { create(:project, name: 'unfound internal', visibility_level: Gitlab::VisibilityLevel::INTERNAL) } | ||
667 | - let!(:public) { create(:project, name: "public #{query}", visibility_level: Gitlab::VisibilityLevel::PUBLIC) } | ||
668 | - let!(:unfound_public) { create(:project, name: 'unfound public', visibility_level: Gitlab::VisibilityLevel::PUBLIC) } | 679 | + let!(:search) { create(:empty_project, name: query, creator_id: user.id, namespace: user.namespace) } |
680 | + let!(:pre) { create(:empty_project, name: "pre_#{query}", creator_id: user.id, namespace: user.namespace) } | ||
681 | + let!(:post) { create(:empty_project, name: "#{query}_post", creator_id: user.id, namespace: user.namespace) } | ||
682 | + let!(:pre_post) { create(:empty_project, name: "pre_#{query}_post", creator_id: user.id, namespace: user.namespace) } | ||
683 | + let!(:unfound) { create(:empty_project, name: 'unfound', creator_id: user.id, namespace: user.namespace) } | ||
684 | + let!(:internal) { create(:empty_project, name: "internal #{query}", visibility_level: Gitlab::VisibilityLevel::INTERNAL) } | ||
685 | + let!(:unfound_internal) { create(:empty_project, name: 'unfound internal', visibility_level: Gitlab::VisibilityLevel::INTERNAL) } | ||
686 | + let!(:public) { create(:empty_project, name: "public #{query}", visibility_level: Gitlab::VisibilityLevel::PUBLIC) } | ||
687 | + let!(:unfound_public) { create(:empty_project, name: 'unfound public', visibility_level: Gitlab::VisibilityLevel::PUBLIC) } | ||
669 | 688 | ||
670 | context "when unauthenticated" do | 689 | context "when unauthenticated" do |
671 | it "should return authentication error" do | 690 | it "should return authentication error" do |
spec/requests/api/repositories_spec.rb
@@ -8,7 +8,7 @@ describe API::API do | @@ -8,7 +8,7 @@ describe API::API do | ||
8 | 8 | ||
9 | let(:user) { create(:user) } | 9 | let(:user) { create(:user) } |
10 | let(:user2) { create(:user) } | 10 | let(:user2) { create(:user) } |
11 | - let!(:project) { create(:project_with_code, creator_id: user.id) } | 11 | + let!(:project) { create(:project, creator_id: user.id) } |
12 | let!(:master) { create(:users_project, user: user, project: project, project_access: UsersProject::MASTER) } | 12 | let!(:master) { create(:users_project, user: user, project: project, project_access: UsersProject::MASTER) } |
13 | let!(:guest) { create(:users_project, user: user2, project: project, project_access: UsersProject::GUEST) } | 13 | let!(:guest) { create(:users_project, user: user2, project: project, project_access: UsersProject::GUEST) } |
14 | 14 |
spec/requests/api/services_spec.rb
@@ -6,7 +6,7 @@ describe API::API do | @@ -6,7 +6,7 @@ describe API::API do | ||
6 | after(:each) { ActiveRecord::Base.observers.disable(:user_observer) } | 6 | after(:each) { ActiveRecord::Base.observers.disable(:user_observer) } |
7 | 7 | ||
8 | let(:user) { create(:user) } | 8 | let(:user) { create(:user) } |
9 | - let(:project) {create(:project_with_code, creator_id: user.id, namespace: user.namespace) } | 9 | + let(:project) {create(:project, creator_id: user.id, namespace: user.namespace) } |
10 | 10 | ||
11 | describe "POST /projects/:id/services/gitlab-ci" do | 11 | describe "POST /projects/:id/services/gitlab-ci" do |
12 | it "should update gitlab-ci settings" do | 12 | it "should update gitlab-ci settings" do |
spec/services/git_push_service_spec.rb
@@ -2,7 +2,7 @@ require 'spec_helper' | @@ -2,7 +2,7 @@ require 'spec_helper' | ||
2 | 2 | ||
3 | describe GitPushService do | 3 | describe GitPushService do |
4 | let (:user) { create :user } | 4 | let (:user) { create :user } |
5 | - let (:project) { create :project_with_code } | 5 | + let (:project) { create :project } |
6 | let (:service) { GitPushService.new } | 6 | let (:service) { GitPushService.new } |
7 | 7 | ||
8 | before do | 8 | before do |
spec/services/test_hook_service_spec.rb
@@ -2,7 +2,7 @@ require 'spec_helper' | @@ -2,7 +2,7 @@ require 'spec_helper' | ||
2 | 2 | ||
3 | describe TestHookService do | 3 | describe TestHookService do |
4 | let (:user) { create :user } | 4 | let (:user) { create :user } |
5 | - let (:project) { create :project_with_code } | 5 | + let (:project) { create :project } |
6 | let (:hook) { create :project_hook, project: project } | 6 | let (:hook) { create :project_hook, project: project } |
7 | 7 | ||
8 | describe :execute do | 8 | describe :execute do |
spec/support/mentionable_shared_examples.rb
@@ -11,7 +11,7 @@ def common_mentionable_setup | @@ -11,7 +11,7 @@ def common_mentionable_setup | ||
11 | 11 | ||
12 | let(:mentioned_issue) { create :issue, project: mproject } | 12 | let(:mentioned_issue) { create :issue, project: mproject } |
13 | let(:other_issue) { create :issue, project: mproject } | 13 | let(:other_issue) { create :issue, project: mproject } |
14 | - let(:mentioned_mr) { create :merge_request, target_project: mproject, source_branch: 'different' } | 14 | + let(:mentioned_mr) { create :merge_request, source_project: mproject, source_branch: 'different' } |
15 | let(:mentioned_commit) { double('commit', sha: '1234567890abcdef').as_null_object } | 15 | let(:mentioned_commit) { double('commit', sha: '1234567890abcdef').as_null_object } |
16 | 16 | ||
17 | # Override to add known commits to the repository stub. | 17 | # Override to add known commits to the repository stub. |
spec/support/test_env.rb
@@ -73,6 +73,10 @@ module TestEnv | @@ -73,6 +73,10 @@ module TestEnv | ||
73 | version: '6.3.0' | 73 | version: '6.3.0' |
74 | ) | 74 | ) |
75 | 75 | ||
76 | + Gitlab::Satellite::MergeAction.any_instance.stub( | ||
77 | + merge!: true, | ||
78 | + ) | ||
79 | + | ||
76 | Gitlab::Satellite::Satellite.any_instance.stub( | 80 | Gitlab::Satellite::Satellite.any_instance.stub( |
77 | exists?: true, | 81 | exists?: true, |
78 | destroy: true, | 82 | destroy: true, |
spec/workers/post_receive_spec.rb
@@ -9,7 +9,7 @@ describe PostReceive do | @@ -9,7 +9,7 @@ describe PostReceive do | ||
9 | end | 9 | end |
10 | 10 | ||
11 | context "web hook" do | 11 | context "web hook" do |
12 | - let(:project) { create(:project_with_code) } | 12 | + let(:project) { create(:project) } |
13 | let(:key) { create(:key, user: project.owner) } | 13 | let(:key) { create(:key, user: project.owner) } |
14 | let(:key_id) { key.shell_id } | 14 | let(:key_id) { key.shell_id } |
15 | 15 |