project_forked_merge_requests.rb
6.39 KB
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
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
class ProjectForkedMergeRequests < Spinach::FeatureSteps
include SharedAuthentication
include SharedProject
include SharedNote
include SharedPaths
Given 'I am a member of project "Shop"' do
@project = Project.find_by_name "Shop"
@project ||= create(:project_with_code, name: "Shop")
@project.team << [@user, :reporter]
end
And 'I have a project forked off of "Shop" called "Forked Shop"' do
@forking_user = @user
forked_project_link = build(:forked_project_link)
@forked_project = Project.find_by_name "Forked Shop"
@forked_project ||= create(:source_project_with_code, name: "Forked Shop", forked_project_link: forked_project_link, creator_id: @forking_user.id)
forked_project_link.forked_from_project = @project
forked_project_link.forked_to_project = @forked_project
forked_project_link.save!
end
Given 'I click link "New Merge Request"' do
click_link "New Merge Request"
end
Then 'I should see merge request "Merge Request On Forked Project"' do
page.should have_content "Merge Request On Forked Project"
@project.merge_requests.size.should >= 1
@merge_request = @project.merge_requests.last
current_path.should == project_merge_request_path(@project, @merge_request)
@merge_request.title.should == "Merge Request On Forked Project"
@merge_request.source_project.should == @forked_project
end
And 'I fill out a "Merge Request On Forked Project" merge request' do
fill_in "merge_request_title", with: "Merge Request On Forked Project"
find(:select, "merge_request_source_project_id", {}).value.should == @forked_project.id.to_s
find(:select, "merge_request_target_project_id", {}).value.should == @forked_project.id.to_s
select @project.path_with_namespace, from: "merge_request_target_project_id"
find(:select, "merge_request_target_project_id", {}).value.should == @project.id.to_s
select "master", from: "merge_request_source_branch"
find(:select, "merge_request_source_branch", {}).value.should have_content "master"
#Force the page to wait until the javascript finishes, so the stable option shows up
select "stable", from: "merge_request_target_branch"
find(:select, "merge_request_target_branch", {}).should have_content "stable"
verify_commit_link(".mr_source_commit",@forked_project)
verify_commit_link(".mr_target_commit",@project)
end
And 'I submit the merge request' do
click_button "Submit merge request"
end
And 'I follow the target commit link' do
commit = @project.repository.commit
click_link commit.short_id(8)
end
Then 'I should see the commit under the forked from project' do
commit = @project.repository.commit
page.should have_content(commit.message)
end
And 'I click "Create Merge Request on fork" link' do
click_link "Create Merge Request on fork"
end
Then 'I see prefilled new Merge Request page for the forked project' do
current_path.should == new_project_merge_request_path(@forked_project)
find("#merge_request_source_project_id").value.should == @forked_project.id.to_s
find("#merge_request_target_project_id").value.should == @project.id.to_s
find("#merge_request_source_branch").value.should have_content "new_design"
find("#merge_request_target_branch").value.should have_content "master"
find("#merge_request_title").value.should == "New Design"
verify_commit_link(".mr_target_commit",@project)
verify_commit_link(".mr_source_commit",@forked_project)
end
Then 'I should see last push widget' do
page.should have_content "You pushed to new_design"
page.should have_link "Create Merge Request"
end
Given 'project "Forked Shop" has push event' do
@forked_project = Project.find_by_name("Forked Shop")
data = {
before: "0000000000000000000000000000000000000000",
after: "0220c11b9a3e6c69dc8fd35321254ca9a7b98f7e",
ref: "refs/heads/new_design",
user_id: @user.id,
user_name: @user.name,
repository: {
name: @forked_project.name,
url: "localhost/rubinius",
description: "",
homepage: "localhost/rubinius",
private: true
}
}
@event = Event.create(
project: @forked_project,
action: Event::PUSHED,
data: data,
author_id: @user.id
)
end
Then 'I click link edit "Merge Request On Forked Project"' do
find("#edit_merge_request").click
end
Then 'I see the edit page prefilled for "Merge Request On Forked Project"' do
current_path.should == edit_project_merge_request_path(@project, @merge_request)
page.should have_content "Edit merge request #{@merge_request.id}"
find("#merge_request_title").value.should == "Merge Request On Forked Project"
find("#merge_request_source_project_id").value.should == @forked_project.id.to_s
find("#merge_request_target_project_id").value.should == @project.id.to_s
find("#merge_request_source_branch").value.should have_content "master"
verify_commit_link(".mr_source_commit",@forked_project)
#TODO[IA-08] reienstate these -- not sure why they started repeatedly breaking
#sleep 3
#puts "Source text:#{find("#merge_request_source_branch").text}"
#puts "Source value:#{find("#merge_request_source_branch").value}"
#puts "Target text:#{find("#merge_request_target_branch").text}"
#puts "Target value:#{find("#merge_request_target_branch").value}"
#find("#merge_request_target_branch").value.should have_content "stable"
#verify_commit_link(".mr_target_commit",@project)
end
def project
@project ||= Project.find_by_name!("Shop")
end
#Verify a link is generated against the correct project
def verify_commit_link(container_div, container_project)
#This should force a wait for the javascript to execute
#puts "text: #{find(:div,container_div).text}"
find(:div,container_div).should have_css ".browse_code_link_holder"
find(:div,container_div).find(".commit_short_id")['href'].should have_content "#{container_project.path_with_namespace}/commit"
#commit_links = commit.all("a").map(&:text)
#links = commit_links.collect {|e|commit.find(:link,e)['href']}
#links.size.should == 4
#links[0].should have_content "#{container_project.path_with_namespace}/tree"
#links[1].should have_content "#{container_project.path_with_namespace}/commit"
#links[3].should have_content "#{container_project.path_with_namespace}/commit"
end
end