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