summaryrefslogtreecommitdiff
path: root/features/steps/project/ff_merge_requests.rb
blob: 27efcfd65b6d93d43da2b655e41fc5f3b50077c7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
class Spinach::Features::ProjectFfMergeRequests < Spinach::FeatureSteps
  include SharedAuthentication
  include SharedIssuable
  include SharedProject
  include SharedNote
  include SharedPaths
  include SharedMarkdown
  include SharedDiffNote
  include SharedUser
  include WaitForRequests

  step 'project "Shop" have "Bug NS-05" open merge request with diffs inside' do
    create(:merge_request_with_diffs,
           title: "Bug NS-05",
           source_project: project,
           target_project: project,
           author: project.users.first)
  end

  step 'merge request is mergeable' do
    expect(page).to have_button 'Merge'
  end

  step 'I should see ff-only merge button' do
    expect(page).to have_content "Fast-forward merge without a merge commit"
    expect(page).to have_button 'Merge'
  end

  step 'merge request "Bug NS-05" is mergeable' do
    merge_request.mark_as_mergeable
  end

  step 'I accept this merge request' do
    page.within '.mr-state-widget' do
      click_button "Merge"
    end
  end

  step 'I should see merged request' do
    page.within '.status-box' do
      expect(page).to have_content "Merged"
      wait_for_requests
    end
  end

  step 'ff merge enabled' do
    project = merge_request.target_project
    project.merge_requests_ff_only_enabled = true
    project.save!
  end

  step 'I should see rebase button' do
    expect(page).to have_button "Rebase"
  end

  step 'merge request "Bug NS-05" is rebased' do
    merge_request.source_branch = 'flatten-dir'
    merge_request.target_branch = 'improve/awesome'
    merge_request.reload_diff
    merge_request.save!
  end

  step 'merge request "Bug NS-05" merged target' do
    merge_request.source_branch = 'merged-target'
    merge_request.target_branch = 'improve/awesome'
    merge_request.reload_diff
    merge_request.save!
  end

  step 'rebase before merge enabled' do
    project = merge_request.target_project
    project.merge_requests_rebase_enabled = true
    project.save!
  end

  step 'I press rebase button' do
    click_button "Rebase"
  end

  step "I should see rebase in progress message" do
    expect(page).to have_content("Rebase in progress")
  end

  def merge_request
    @merge_request ||= MergeRequest.find_by!(title: "Bug NS-05")
  end
end