Commit a8ce107c64c98f547613fd0e5a2b38c360f17fae

Authored by Dmitriy Zaporozhets
1 parent ac9cec74

Cucumber feature -> Merge Request

features/projects/merge_requests.feature
... ... @@ -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 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 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 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 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 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 46 end
38 47  
... ...
features/step_definitions/project/project_milestones_steps.rb 0 → 100644
... ... @@ -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   -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