Commit a8ce107c64c98f547613fd0e5a2b38c360f17fae

Authored by Dmitriy Zaporozhets
1 parent ac9cec74

Cucumber feature -> Merge Request

features/projects/merge_requests.feature
@@ -0,0 +1,42 @@ @@ -0,0 +1,42 @@
  1 +Feature: Merge Requests
  2 + Background:
  3 + Given I signin as a user
  4 + And I own project "Shop"
  5 + And project "Shop" have "Bug NS-04" open merge request
  6 + And project "Shop" have "Feature NS-03" closed merge request
  7 + And I visit project "Shop" merge requests page
  8 +
  9 + Scenario: I should see open merge requests
  10 + Then I should see "Bug NS-04" in merge requests
  11 + And I should not see "Feature NS-03" in merge requests
  12 +
  13 + Scenario: I should see closed merge requests
  14 + Given I click link "Closed"
  15 + Then I should see "Feature NS-03" in merge requests
  16 + And I should not see "Bug NS-04" in merge requests
  17 +
  18 + Scenario: I should see all merge requests
  19 + Given I click link "All"
  20 + Then I should see "Feature NS-03" in merge requests
  21 + And I should see "Bug NS-04" in merge requests
  22 +
  23 + Scenario: I visit merge request page
  24 + Given I click link "Bug NS-04"
  25 + Then I should see merge request "Bug NS-04"
  26 +
  27 + Scenario: I close merge request page
  28 + Given I click link "Bug NS-04"
  29 + And I click link "Close"
  30 + Then I should see closed merge request "Bug NS-04"
  31 +
  32 + Scenario: I submit new unassigned merge request
  33 + Given I click link "New Merge Request"
  34 + And I submit new merge request "Wiki Feature"
  35 + Then I should see merge request "Wiki Feature"
  36 +
  37 + @javascript
  38 + Scenario: I comment merge request
  39 + Given I visit merge request page "Bug NS-04"
  40 + And I leave a comment like "XML attached"
  41 + Then I should see comment "XML attached"
  42 +
features/step_definitions/project/project_merge_requests_steps.rb
1 -Given /^project "(.*?)" has milestone "(.*?)"$/ do |arg1, arg2| 1 +Given /^project "(.*?)" have "(.*?)" open merge request$/ do |arg1, arg2|
2 project = Project.find_by_name(arg1) 2 project = Project.find_by_name(arg1)
  3 + Factory.create(:merge_request, :title => arg2, :project => project, :author => project.users.first)
  4 +end
  5 +
  6 +Given /^project "(.*?)" have "(.*?)" closed merge request$/ do |arg1, arg2|
  7 + project = Project.find_by_name(arg1)
  8 + Factory.create(:merge_request, :title => arg2, :project => project, :author => project.users.first, :closed => true)
  9 +end
3 10
4 - milestone = Factory :milestone,  
5 - :title => arg2,  
6 - :project => project 11 +Given /^I visit project "(.*?)" merge requests page$/ do |arg1|
  12 + visit project_merge_requests_path(Project.find_by_name(arg1))
  13 +end
  14 +
  15 +Then /^I should see "(.*?)" in merge requests$/ do |arg1|
  16 + page.should have_content arg1
  17 +end
7 18
8 - 3.times do |i|  
9 - issue = Factory :issue,  
10 - :project => project,  
11 - :milestone => milestone  
12 - end 19 +Then /^I should not see "(.*?)" in merge requests$/ do |arg1|
  20 + page.should_not have_content arg1
13 end 21 end
14 22
15 -Given /^I visit project "(.*?)" milestones page$/ do |arg1|  
16 - @project = Project.find_by_name(arg1)  
17 - visit project_milestones_path(@project) 23 +Then /^I should see merge request "(.*?)"$/ do |arg1|
  24 + merge_request = MergeRequest.find_by_title(arg1)
  25 + page.should have_content(merge_request.title[0..10])
  26 + page.should have_content(merge_request.target_branch)
  27 + page.should have_content(merge_request.source_branch)
18 end 28 end
19 29
20 -Then /^I should see active milestones$/ do  
21 - milestone = @project.milestones.first  
22 - page.should have_content(milestone.title[0..10])  
23 - page.should have_content(milestone.expires_at)  
24 - page.should have_content("Browse Issues") 30 +Given /^I submit new merge request "(.*?)"$/ do |arg1|
  31 + fill_in "merge_request_title", :with => arg1
  32 + select "master", :from => "merge_request_source_branch"
  33 + select "stable", :from => "merge_request_target_branch"
  34 + click_button "Save"
25 end 35 end
26 36
27 -Then /^I should see milestone "(.*?)"$/ do |arg1|  
28 - milestone = @project.milestones.find_by_title(arg1)  
29 - page.should have_content(milestone.title[0..10])  
30 - page.should have_content(milestone.expires_at)  
31 - page.should have_content("Browse Issues") 37 +Given /^I visit merge request page "(.*?)"$/ do |arg1|
  38 + mr = MergeRequest.find_by_title(arg1)
  39 + visit project_merge_request_path(mr.project, mr)
32 end 40 end
33 41
34 -Given /^I submit new milestone "(.*?)"$/ do |arg1|  
35 - fill_in "milestone_title", :with => arg1  
36 - click_button "Create milestone" 42 +Then /^I should see closed merge request "(.*?)"$/ do |arg1|
  43 + mr = MergeRequest.find_by_title(arg1)
  44 + mr.closed.should be_true
  45 + page.should have_content "Closed by"
37 end 46 end
38 47
features/step_definitions/project/project_milestones_steps.rb 0 → 100644
@@ -0,0 +1,38 @@ @@ -0,0 +1,38 @@
  1 +Given /^project "(.*?)" has milestone "(.*?)"$/ do |arg1, arg2|
  2 + project = Project.find_by_name(arg1)
  3 +
  4 + milestone = Factory :milestone,
  5 + :title => arg2,
  6 + :project => project
  7 +
  8 + 3.times do |i|
  9 + issue = Factory :issue,
  10 + :project => project,
  11 + :milestone => milestone
  12 + end
  13 +end
  14 +
  15 +Given /^I visit project "(.*?)" milestones page$/ do |arg1|
  16 + @project = Project.find_by_name(arg1)
  17 + visit project_milestones_path(@project)
  18 +end
  19 +
  20 +Then /^I should see active milestones$/ do
  21 + milestone = @project.milestones.first
  22 + page.should have_content(milestone.title[0..10])
  23 + page.should have_content(milestone.expires_at)
  24 + page.should have_content("Browse Issues")
  25 +end
  26 +
  27 +Then /^I should see milestone "(.*?)"$/ do |arg1|
  28 + milestone = @project.milestones.find_by_title(arg1)
  29 + page.should have_content(milestone.title[0..10])
  30 + page.should have_content(milestone.expires_at)
  31 + page.should have_content("Browse Issues")
  32 +end
  33 +
  34 +Given /^I submit new milestone "(.*?)"$/ do |arg1|
  35 + fill_in "milestone_title", :with => arg1
  36 + click_button "Create milestone"
  37 +end
  38 +
spec/requests/merge_requests_spec.rb
@@ -1,67 +0,0 @@ @@ -1,67 +0,0 @@
1 -require 'spec_helper'  
2 -  
3 -describe "MergeRequests" do  
4 - let(:project) { Factory :project }  
5 -  
6 - before do  
7 - login_as :user  
8 - project.add_access(@user, :read, :write)  
9 - @merge_request = Factory :merge_request,  
10 - :author => @user,  
11 - :assignee => @user,  
12 - :project => project  
13 - end  
14 -  
15 - describe "GET /merge_requests" do  
16 - before do  
17 - visit project_merge_requests_path(project)  
18 - end  
19 -  
20 - subject { page }  
21 -  
22 - it { should have_content(@merge_request.title[0..10]) }  
23 - it { should have_content(@merge_request.target_branch) }  
24 - it { should have_content(@merge_request.source_branch) }  
25 - it { should have_content(@merge_request.assignee.name) }  
26 - end  
27 -  
28 - describe "GET /merge_request/:id" do  
29 - before do  
30 - visit project_merge_request_path(project, @merge_request)  
31 - end  
32 -  
33 - subject { page }  
34 -  
35 - it { should have_content(@merge_request.title[0..10]) }  
36 - it { should have_content(@merge_request.target_branch) }  
37 - it { should have_content(@merge_request.source_branch) }  
38 - it { should have_content(@merge_request.assignee.name) }  
39 -  
40 - describe "Close merge request" do  
41 - before { click_link "Close" }  
42 -  
43 - it { should have_content(@merge_request.title[0..10]) }  
44 - it "Show page should inform user that merge request closed" do  
45 - page.should have_content "Closed"  
46 - end  
47 - end  
48 - end  
49 -  
50 - describe "GET /merge_requests/new" do  
51 - before do  
52 - visit new_project_merge_request_path(project)  
53 - fill_in "merge_request_title", :with => "Merge Request Title"  
54 - select "master", :from => "merge_request_source_branch"  
55 - select "stable", :from => "merge_request_target_branch"  
56 - select @user.name, :from => "merge_request_assignee_id"  
57 - click_button "Save"  
58 - end  
59 -  
60 - it { current_path.should == project_merge_request_path(project, project.merge_requests.last) }  
61 -  
62 - it "should create merge request" do  
63 - page.should have_content "Close"  
64 - page.should have_content @user.name  
65 - end  
66 - end  
67 -end