forked_merge_requests.rb 6.3 KB
Newer Older
1
class Spinach::Features::ProjectForkedMergeRequests < Spinach::FeatureSteps
I
Izaak Alpert 已提交
2 3 4 5
  include SharedAuthentication
  include SharedProject
  include SharedNote
  include SharedPaths
6
  include Select2Helper
I
Izaak Alpert 已提交
7

8
  step 'I am a member of project "Shop"' do
S
skv 已提交
9
    @project = Project.find_by(name: "Shop")
D
Dmitriy Zaporozhets 已提交
10
    @project ||= create(:project, name: "Shop")
I
Izaak Alpert 已提交
11
    @project.team << [@user, :reporter]
D
Dmitriy Zaporozhets 已提交
12
    @project.ensure_satellite_exists
I
Izaak Alpert 已提交
13 14
  end

15
  step 'I have a project forked off of "Shop" called "Forked Shop"' do
D
Dmitriy Zaporozhets 已提交
16
    @forked_project = Projects::ForkService.new(@project, @user).execute
I
Izaak Alpert 已提交
17 18
  end

19
  step 'I click link "New Merge Request"' do
I
Izaak Alpert 已提交
20 21 22
    click_link "New Merge Request"
  end

23
  step 'I should see merge request "Merge Request On Forked Project"' do
24
    expect(@project.merge_requests.size).to be >= 1
I
Izaak Alpert 已提交
25
    @merge_request = @project.merge_requests.last
26 27 28 29 30 31 32 33 34
    expect(current_path).to eq namespace_project_merge_request_path(@project.namespace, @project, @merge_request)
    expect(@merge_request.title).to eq "Merge Request On Forked Project"
    expect(@merge_request.source_project).to eq @forked_project
    expect(@merge_request.source_branch).to eq "fix"
    expect(@merge_request.target_branch).to eq "master"
    expect(page).to have_content @forked_project.path_with_namespace
    expect(page).to have_content @project.path_with_namespace
    expect(page).to have_content @merge_request.source_branch
    expect(page).to have_content @merge_request.target_branch
I
Izaak Alpert 已提交
35 36
  end

37
  step 'I fill out a "Merge Request On Forked Project" merge request' do
D
Dmitriy Zaporozhets 已提交
38 39 40 41
    select @forked_project.path_with_namespace, from: "merge_request_source_project_id"
    select @project.path_with_namespace, from: "merge_request_target_project_id"
    select "fix", from: "merge_request_source_branch"
    select "master", from: "merge_request_target_branch"
42

43
    click_button "Compare branches"
I
Izaak Alpert 已提交
44

45
    expect(page).to have_content "New merge request"
46
    fill_in "merge_request_title", with: "Merge Request On Forked Project"
I
Izaak Alpert 已提交
47 48
  end

49
  step 'I submit the merge request' do
D
Dmitriy Zaporozhets 已提交
50
    click_button "Submit new merge request"
I
Izaak Alpert 已提交
51 52
  end

53
  step 'I follow the target commit link' do
I
Izaak Alpert 已提交
54 55 56 57
    commit = @project.repository.commit
    click_link commit.short_id(8)
  end

58
  step 'I should see the commit under the forked from project' do
I
Izaak Alpert 已提交
59
    commit = @project.repository.commit
60
    expect(page).to have_content(commit.message)
I
Izaak Alpert 已提交
61 62
  end

63
  step 'I click "Create Merge Request on fork" link' do
I
Izaak Alpert 已提交
64 65 66
    click_link "Create Merge Request on fork"
  end

67
  step 'I see prefilled new Merge Request page for the forked project' do
68 69 70 71 72 73
    expect(current_path).to eq new_namespace_project_merge_request_path(@forked_project.namespace, @forked_project)
    expect(find("#merge_request_source_project_id").value).to eq @forked_project.id.to_s
    expect(find("#merge_request_target_project_id").value).to eq @project.id.to_s
    expect(find("#merge_request_source_branch").value).to have_content "new_design"
    expect(find("#merge_request_target_branch").value).to have_content "master"
    expect(find("#merge_request_title").value).to eq "New Design"
D
Dmitriy Zaporozhets 已提交
74 75
    verify_commit_link(".mr_target_commit", @project)
    verify_commit_link(".mr_source_commit", @forked_project)
I
Izaak Alpert 已提交
76 77
  end

78
  step 'I update the merge request title' do
79 80 81
    fill_in "merge_request_title", with: "An Edited Forked Merge Request"
  end

82
  step 'I save the merge request' do
83 84 85
    click_button "Save changes"
  end

86
  step 'I should see the edited merge request' do
87 88
    expect(page).to have_content "An Edited Forked Merge Request"
    expect(@project.merge_requests.size).to be >= 1
89
    @merge_request = @project.merge_requests.last
90 91 92 93 94 95 96 97
    expect(current_path).to eq namespace_project_merge_request_path(@project.namespace, @project, @merge_request)
    expect(@merge_request.source_project).to eq @forked_project
    expect(@merge_request.source_branch).to eq "fix"
    expect(@merge_request.target_branch).to eq "master"
    expect(page).to have_content @forked_project.path_with_namespace
    expect(page).to have_content @project.path_with_namespace
    expect(page).to have_content @merge_request.source_branch
    expect(page).to have_content @merge_request.target_branch
98 99
  end

100
  step 'I should see last push widget' do
101 102
    expect(page).to have_content "You pushed to new_design"
    expect(page).to have_link "Create Merge Request"
I
Izaak Alpert 已提交
103 104
  end

105
  step 'I click link edit "Merge Request On Forked Project"' do
I
Izaak Alpert 已提交
106
    find("#edit_merge_request").click
I
Izaak Alpert 已提交
107 108
  end

109
  step 'I see the edit page prefilled for "Merge Request On Forked Project"' do
110 111 112
    expect(current_path).to eq edit_namespace_project_merge_request_path(@project.namespace, @project, @merge_request)
    expect(page).to have_content "Edit merge request ##{@merge_request.id}"
    expect(find("#merge_request_title").value).to eq "Merge Request On Forked Project"
I
Izaak Alpert 已提交
113 114
  end

115
  step 'I fill out an invalid "Merge Request On Forked Project" merge request' do
116
    select "Select branch", from: "merge_request_target_branch"
117 118 119 120
    expect(find(:select, "merge_request_source_project_id", {}).value).to eq @forked_project.id.to_s
    expect(find(:select, "merge_request_target_project_id", {}).value).to eq @project.id.to_s
    expect(find(:select, "merge_request_source_branch", {}).value).to eq ""
    expect(find(:select, "merge_request_target_branch", {}).value).to eq ""
121
    click_button "Compare branches"
I
Izaak Alpert 已提交
122 123
  end

124
  step 'I should see validation errors' do
125
    expect(page).to have_content "You must select source and target branch"
126 127 128
  end

  step 'the target repository should be the original repository' do
129
    expect(page).to have_select("merge_request_target_project_id", selected: @project.path_with_namespace)
I
Izaak Alpert 已提交
130 131
  end

132 133 134 135 136 137 138 139 140 141 142
  step 'I click "Assign to" dropdown"' do
    first('.ajax-users-select').click
  end

  step 'I should see the target project ID in the input selector' do
    expect(page).to have_selector("input[data-project-id=\"#{@project.id}\"]")
  end

  step 'I should see the users from the target project ID' do
    expect(page).to have_selector('.user-result', visible: true, count: 2)
    users = page.all('.user-name')
143 144
    expect(users[0].text).to eq 'Unassigned'
    expect(users[1].text).to eq @project.users.first.name
145 146
  end

D
Dmitriy Zaporozhets 已提交
147
  # Verify a link is generated against the correct project
I
Izaak Alpert 已提交
148
  def verify_commit_link(container_div, container_project)
D
Dmitriy Zaporozhets 已提交
149
    # This should force a wait for the javascript to execute
150
    expect(find(:div,container_div).find(".commit_short_id")['href']).to have_content "#{container_project.path_with_namespace}/commit"
I
Izaak Alpert 已提交
151
  end
I
Izaak Alpert 已提交
152
end