Commit 492dc82ced619206aeed7e3aaae393d85a4d3f40

Authored by Dmitriy Zaporozhets
2 parents 587e16a4 a90574fa

Merge pull request #6557 from tsigo/faster-merge-request-features

Speed up features/notes_on_merge_requests_spec
spec/factories.rb
... ... @@ -158,6 +158,11 @@ FactoryGirl.define do
158 158 state :reopened
159 159 end
160 160  
  161 + trait :simple do
  162 + source_branch "simple_merge_request"
  163 + target_branch "master"
  164 + end
  165 +
161 166 factory :closed_merge_request, traits: [:closed]
162 167 factory :reopened_merge_request, traits: [:reopened]
163 168 factory :merge_request_with_diffs, traits: [:with_diffs]
... ... @@ -173,7 +178,6 @@ FactoryGirl.define do
173 178 factory :note_on_issue, traits: [:on_issue], aliases: [:votable_note]
174 179 factory :note_on_merge_request, traits: [:on_merge_request]
175 180 factory :note_on_merge_request_diff, traits: [:on_merge_request, :on_diff]
176   - factory :note_on_merge_request_with_attachment, traits: [:on_merge_request, :with_attachment]
177 181  
178 182 trait :on_commit do
179 183 project factory: :project
... ...
spec/features/notes_on_merge_requests_spec.rb
1 1 require 'spec_helper'
2 2  
3 3 describe "On a merge request", js: true do
4   - let!(:project) { create(: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) }
  4 + let!(:merge_request) { create(:merge_request, :simple) }
  5 + let!(:project) { merge_request.source_project }
  6 + let!(:note) { create(:note_on_merge_request, :with_attachment, project: project) }
7 7  
8 8 before do
9   - login_as :user
10   - project.team << [@user, :master]
11   -
  9 + login_as :admin
12 10 visit project_merge_request_path(project, merge_request)
13 11 end
14 12  
... ... @@ -134,22 +132,20 @@ describe &quot;On a merge request&quot;, js: true do
134 132 end
135 133 end
136 134  
137   -describe "On a merge request diff", js: true, focus: true do
138   - let!(:project) { create(:project) }
139   - let!(:merge_request) { create(:merge_request_with_diffs, source_project: project, target_project: project) }
  135 +describe "On a merge request diff", js: true do
  136 + let(:merge_request) { create(:merge_request, :with_diffs, :simple) }
  137 + let(:project) { merge_request.source_project }
140 138  
141 139 before do
142   - login_as :user
143   - project.team << [@user, :master]
  140 + login_as :admin
144 141 visit diffs_project_merge_request_path(project, merge_request)
145 142 end
146 143  
147   -
148 144 subject { page }
149 145  
150 146 describe "when adding a note" do
151 147 before do
152   - find('a[data-line-code="4735dfc552ad7bf15ca468adc3cad9d05b624490_172_185"]').click
  148 + find('a[data-line-code="8ec9a00bfd09b3190ac6b22251dbb1aa95a0579d_7_7"]').click
153 149 end
154 150  
155 151 describe "the notes holder" do
... ... @@ -160,13 +156,13 @@ describe &quot;On a merge request diff&quot;, js: true, focus: true do
160 156  
161 157 describe "the note form" do
162 158 it "shouldn't add a second form for same row" do
163   - find('a[data-line-code="4735dfc552ad7bf15ca468adc3cad9d05b624490_172_185"]').click
  159 + find('a[data-line-code="8ec9a00bfd09b3190ac6b22251dbb1aa95a0579d_7_7"]').click
164 160  
165   - should have_css("tr[id='4735dfc552ad7bf15ca468adc3cad9d05b624490_172_185'] + .js-temp-notes-holder form", count: 1)
  161 + should have_css("tr[id='8ec9a00bfd09b3190ac6b22251dbb1aa95a0579d_7_7'] + .js-temp-notes-holder form", count: 1)
166 162 end
167 163  
168 164 it "should be removed when canceled" do
169   - within(".diff-file form[rel$='4735dfc552ad7bf15ca468adc3cad9d05b624490_172_185']") do
  165 + within(".diff-file form[rel$='8ec9a00bfd09b3190ac6b22251dbb1aa95a0579d_7_7']") do
170 166 find(".js-close-discussion-note-form").trigger("click")
171 167 end
172 168  
... ... @@ -176,12 +172,9 @@ describe &quot;On a merge request diff&quot;, js: true, focus: true do
176 172 end
177 173  
178 174 describe "with muliple note forms" do
179   - let!(:project) { create(:project) }
180   - let!(:merge_request) { create(:merge_request_with_diffs, source_project: project, target_project: project) }
181   -
182 175 before do
183   - find('a[data-line-code="4735dfc552ad7bf15ca468adc3cad9d05b624490_172_185"]').click
184   - find('a[data-line-code="342e16cbbd482ac2047dc679b2749d248cc1428f_18_17"]').click
  176 + find('a[data-line-code="8ec9a00bfd09b3190ac6b22251dbb1aa95a0579d_7_7"]').click
  177 + find('a[data-line-code="8ec9a00bfd09b3190ac6b22251dbb1aa95a0579d_10_10"]').click
185 178 end
186 179  
187 180 it { should have_css(".js-temp-notes-holder", count: 2) }
... ... @@ -189,12 +182,12 @@ describe &quot;On a merge request diff&quot;, js: true, focus: true do
189 182 describe "previewing them separately" do
190 183 before do
191 184 # add two separate texts and trigger previews on both
192   - within("tr[id='4735dfc552ad7bf15ca468adc3cad9d05b624490_172_185'] + .js-temp-notes-holder") do
193   - fill_in "note[note]", with: "One comment on line 185"
  185 + within("tr[id='8ec9a00bfd09b3190ac6b22251dbb1aa95a0579d_7_7'] + .js-temp-notes-holder") do
  186 + fill_in "note[note]", with: "One comment on line 7"
194 187 find(".js-note-preview-button").trigger("click")
195 188 end
196   - within("tr[id='342e16cbbd482ac2047dc679b2749d248cc1428f_18_17'] + .js-temp-notes-holder") do
197   - fill_in "note[note]", with: "Another comment on line 17"
  189 + within("tr[id='8ec9a00bfd09b3190ac6b22251dbb1aa95a0579d_10_10'] + .js-temp-notes-holder") do
  190 + fill_in "note[note]", with: "Another comment on line 10"
198 191 find(".js-note-preview-button").trigger("click")
199 192 end
200 193 end
... ... @@ -202,14 +195,14 @@ describe &quot;On a merge request diff&quot;, js: true, focus: true do
202 195  
203 196 describe "posting a note" do
204 197 before do
205   - within("tr[id='342e16cbbd482ac2047dc679b2749d248cc1428f_18_17'] + .js-temp-notes-holder") do
206   - fill_in "note[note]", with: "Another comment on line 17"
  198 + within("tr[id='8ec9a00bfd09b3190ac6b22251dbb1aa95a0579d_10_10'] + .js-temp-notes-holder") do
  199 + fill_in "note[note]", with: "Another comment on line 10"
207 200 click_button("Add Comment")
208 201 end
209 202 end
210 203  
211 204 it 'should be added as discussion' do
212   - should have_content("Another comment on line 17")
  205 + should have_content("Another comment on line 10")
213 206 should have_css(".notes_holder")
214 207 should have_css(".notes_holder .note", count: 1)
215 208 should have_link("Reply")
... ...
spec/finders/merge_requests_finder_spec.rb
1 1 require 'spec_helper'
2 2  
3 3 describe MergeRequestsFinder do
4   - let(:user) { create :user }
  4 + let(:user) { create :user }
5 5 let(:user2) { create :user }
  6 +
6 7 let(:project1) { create(:project) }
7 8 let(:project2) { create(:project) }
8   - let(:merge_request1) { create(:merge_request, author: user, source_project: project1, target_project: project2) }
9   - let(:merge_request2) { create(:merge_request, author: user, source_project: project2, target_project: project1) }
10   - let(:merge_request3) { create(:merge_request, author: user, source_project: project2, target_project: project2) }
  9 +
  10 + let!(:merge_request1) { create(:merge_request, :simple, author: user, source_project: project1, target_project: project2) }
  11 + let!(:merge_request2) { create(:merge_request, :simple, author: user, source_project: project2, target_project: project1) }
  12 + let!(:merge_request3) { create(:merge_request, :simple, author: user, source_project: project2, target_project: project2) }
11 13  
12 14 before do
13 15 project1.team << [user, :master]
... ... @@ -15,13 +17,7 @@ describe MergeRequestsFinder do
15 17 project2.team << [user2, :developer]
16 18 end
17 19  
18   - describe :execute do
19   - before :each do
20   - merge_request1
21   - merge_request2
22   - merge_request3
23   - end
24   -
  20 + describe "#execute" do
25 21 it 'should filter by scope' do
26 22 params = { scope: 'authored', state: 'opened' }
27 23 merge_requests = MergeRequestsFinder.new.execute(user, params)
... ...
spec/seed_project.tar.gz
No preview for this file type