debian-mirror-gitlab/features/steps/project/issues/issues.rb

357 lines
10 KiB
Ruby
Raw Normal View History

2015-04-26 12:48:37 +05:30
class Spinach::Features::ProjectIssues < Spinach::FeatureSteps
include SharedAuthentication
include SharedIssuable
include SharedProject
include SharedNote
include SharedPaths
include SharedMarkdown
2016-06-02 11:05:42 +05:30
include SharedUser
2015-04-26 12:48:37 +05:30
step 'I should see "Release 0.4" in issues' do
2015-09-11 14:41:01 +05:30
expect(page).to have_content "Release 0.4"
2015-04-26 12:48:37 +05:30
end
step 'I should not see "Release 0.3" in issues' do
2015-09-11 14:41:01 +05:30
expect(page).not_to have_content "Release 0.3"
2015-04-26 12:48:37 +05:30
end
step 'I should not see "Tweet control" in issues' do
2015-09-11 14:41:01 +05:30
expect(page).not_to have_content "Tweet control"
2015-04-26 12:48:37 +05:30
end
step 'I should see that I am subscribed' do
2018-03-17 18:26:18 +05:30
wait_for_requests
expect(find('.js-issuable-subscribe-button')).to have_css 'button.is-checked'
2015-04-26 12:48:37 +05:30
end
step 'I should see that I am unsubscribed' do
2018-03-17 18:26:18 +05:30
wait_for_requests
expect(find('.js-issuable-subscribe-button')).to have_css 'button:not(.is-checked)'
2015-04-26 12:48:37 +05:30
end
step 'I click link "Closed"' do
2017-09-10 17:25:29 +05:30
find('.issues-state-filters [data-state="closed"] span', text: 'Closed').click
2015-04-26 12:48:37 +05:30
end
2018-03-17 18:26:18 +05:30
step 'I click the subscription toggle' do
find('.js-issuable-subscribe-button button').click
2015-04-26 12:48:37 +05:30
end
step 'I should see "Release 0.3" in issues' do
2015-09-11 14:41:01 +05:30
expect(page).to have_content "Release 0.3"
2015-04-26 12:48:37 +05:30
end
step 'I should not see "Release 0.4" in issues' do
2015-09-11 14:41:01 +05:30
expect(page).not_to have_content "Release 0.4"
2015-04-26 12:48:37 +05:30
end
step 'I click link "All"' do
2017-09-10 17:25:29 +05:30
find('.issues-state-filters [data-state="all"] span', text: 'All').click
2016-09-13 17:45:13 +05:30
# Waits for load
expect(find('.issues-state-filters > .active')).to have_content 'All'
2015-04-26 12:48:37 +05:30
end
step 'I click link "Release 0.4"' do
click_link "Release 0.4"
end
step 'I should see issue "Release 0.4"' do
2015-09-11 14:41:01 +05:30
expect(page).to have_content "Release 0.4"
2015-04-26 12:48:37 +05:30
end
2016-04-02 18:10:28 +05:30
step 'I should see issue "Tweet control"' do
expect(page).to have_content "Tweet control"
end
2017-08-17 22:00:37 +05:30
step 'I click link "New issue"' do
2017-09-10 17:25:29 +05:30
page.within '#content-body' do
page.has_link?('New Issue') ? click_link('New Issue') : click_link('New issue')
end
2015-04-26 12:48:37 +05:30
end
step 'I click "author" dropdown' do
2016-06-02 11:05:42 +05:30
page.find('.js-author-search').click
sleep 1
2015-04-26 12:48:37 +05:30
end
step 'I see current user as the first user' do
2016-06-02 11:05:42 +05:30
expect(page).to have_selector('.dropdown-content', visible: true)
users = page.all('.dropdown-menu-author .dropdown-content li a')
expect(users[0].text).to eq 'Any Author'
2016-06-02 11:05:42 +05:30
expect(users[1].text).to eq "#{current_user.name} #{current_user.to_reference}"
2015-04-26 12:48:37 +05:30
end
step 'I submit new issue "500 error on profile"' do
fill_in "issue_title", with: "500 error on profile"
2015-12-23 02:04:40 +05:30
click_button "Submit issue"
2015-04-26 12:48:37 +05:30
end
step 'I submit new issue "500 error on profile" with label \'bug\'' do
fill_in "issue_title", with: "500 error on profile"
2016-11-03 12:29:30 +05:30
click_button "Label"
click_link "bug"
2015-12-23 02:04:40 +05:30
click_button "Submit issue"
2015-04-26 12:48:37 +05:30
end
step 'I click link "500 error on profile"' do
click_link "500 error on profile"
end
step 'I should see label \'bug\' with issue' do
2015-12-23 02:04:40 +05:30
page.within '.issuable-show-labels' do
2015-09-11 14:41:01 +05:30
expect(page).to have_content 'bug'
2015-04-26 12:48:37 +05:30
end
end
step 'I should see issue "500 error on profile"' do
issue = Issue.find_by(title: "500 error on profile")
2015-09-11 14:41:01 +05:30
expect(page).to have_content issue.title
expect(page).to have_content issue.author_name
expect(page).to have_content issue.project.name
2015-04-26 12:48:37 +05:30
end
step 'I fill in issue search with "Re"' do
filter_issue "Re"
end
step 'I fill in issue search with "Bu"' do
filter_issue "Bu"
end
step 'I fill in issue search with ".3"' do
filter_issue ".3"
end
step 'I fill in issue search with "Something"' do
filter_issue "Something"
end
step 'I fill in issue search with ""' do
filter_issue ""
end
step 'project "Shop" has milestone "v2.2"' do
milestone = create(:milestone, title: "v2.2", project: project)
3.times { create(:issue, project: project, milestone: milestone) }
end
step 'project "Shop" has milestone "v3.0"' do
milestone = create(:milestone, title: "v3.0", project: project)
3.times { create(:issue, project: project, milestone: milestone) }
end
When 'I select milestone "v3.0"' do
select "v3.0", from: "milestone_id"
end
step 'I should see selected milestone with title "v3.0"' do
issues_milestone_selector = "#issue_milestone_id_chzn > a"
2015-09-11 14:41:01 +05:30
expect(find(issues_milestone_selector)).to have_content("v3.0")
2015-04-26 12:48:37 +05:30
end
When 'I select first assignee from "Shop" project' do
first_assignee = project.users.first
select first_assignee.name, from: "assignee_id"
end
step 'I should see first assignee from "Shop" as selected assignee' do
issues_assignee_selector = "#issue_assignee_id_chzn > a"
assignee_name = project.users.first.name
2015-09-11 14:41:01 +05:30
expect(find(issues_assignee_selector)).to have_content(assignee_name)
2015-04-26 12:48:37 +05:30
end
step 'project "Shop" have "Release 0.4" open issue' do
create(:issue,
title: "Release 0.4",
project: project,
author: project.users.first,
description: "# Description header"
)
2018-03-17 18:26:18 +05:30
wait_for_requests
2015-04-26 12:48:37 +05:30
end
step 'project "Shop" have "Tweet control" open issue' do
create(:issue,
title: "Tweet control",
project: project,
author: project.users.first)
end
2016-04-02 18:10:28 +05:30
step 'project "Shop" have "Bugfix" open issue' do
create(:issue,
title: "Bugfix",
project: project,
author: project.users.first)
end
2015-04-26 12:48:37 +05:30
step 'project "Shop" have "Release 0.3" closed issue' do
create(:closed_issue,
title: "Release 0.3",
project: project,
author: project.users.first)
end
2016-04-02 18:10:28 +05:30
step 'issue "Release 0.4" have 2 upvotes and 1 downvote' do
awardable = Issue.find_by(title: 'Release 0.4')
create_list(:award_emoji, 2, awardable: awardable)
create(:award_emoji, :downvote, awardable: awardable)
2016-04-02 18:10:28 +05:30
end
step 'issue "Tweet control" have 1 upvote and 2 downvotes' do
awardable = Issue.find_by(title: 'Tweet control')
create(:award_emoji, :upvote, awardable: awardable)
create_list(:award_emoji, 2, awardable: awardable, name: 'thumbsdown')
2016-04-02 18:10:28 +05:30
end
step 'The list should be sorted by "Least popular"' do
page.within '.issues-list' do
page.within 'li.issue:nth-child(1)' do
expect(page).to have_content 'Tweet control'
expect(page).to have_content '1 2'
end
page.within 'li.issue:nth-child(2)' do
expect(page).to have_content 'Release 0.4'
expect(page).to have_content '2 1'
end
page.within 'li.issue:nth-child(3)' do
expect(page).to have_content 'Bugfix'
expect(page).not_to have_content '0 0'
2016-04-02 18:10:28 +05:30
end
end
end
2018-03-17 18:26:18 +05:30
step 'The list should be sorted by "Popularity"' do
2016-04-02 18:10:28 +05:30
page.within '.issues-list' do
page.within 'li.issue:nth-child(1)' do
expect(page).to have_content 'Release 0.4'
expect(page).to have_content '2 1'
end
page.within 'li.issue:nth-child(2)' do
expect(page).to have_content 'Tweet control'
expect(page).to have_content '1 2'
end
page.within 'li.issue:nth-child(3)' do
expect(page).to have_content 'Bugfix'
expect(page).not_to have_content '0 0'
2016-04-02 18:10:28 +05:30
end
end
end
2015-04-26 12:48:37 +05:30
step 'empty project "Empty Project"' do
2016-06-02 11:05:42 +05:30
create :project_empty_repo, name: 'Empty Project', namespace: @user.namespace
2015-04-26 12:48:37 +05:30
end
When 'I visit empty project page' do
project = Project.find_by(name: 'Empty Project')
2017-09-10 17:25:29 +05:30
visit project_path(project)
2015-04-26 12:48:37 +05:30
end
step 'I see empty project details with ssh clone info' do
project = Project.find_by(name: 'Empty Project')
2015-09-11 14:41:01 +05:30
page.all(:css, '.git-empty .clone').each do |element|
expect(element.text).to include(project.url_to_repo)
2015-04-26 12:48:37 +05:30
end
end
2015-09-11 14:41:01 +05:30
When "I visit project \"Community\" issues page" do
project = Project.find_by(name: 'Community')
2017-09-10 17:25:29 +05:30
visit project_issues_path(project)
2015-09-11 14:41:01 +05:30
end
2015-04-26 12:48:37 +05:30
When "I visit empty project's issues page" do
project = Project.find_by(name: 'Empty Project')
2017-09-10 17:25:29 +05:30
visit project_issues_path(project)
2015-04-26 12:48:37 +05:30
end
step 'I leave a comment with code block' do
2015-09-11 14:41:01 +05:30
page.within(".js-main-target-form") do
2015-04-26 12:48:37 +05:30
fill_in "note[note]", with: "```\nCommand [1]: /usr/local/bin/git , see [text](doc/text)\n```"
2016-06-02 11:05:42 +05:30
click_button "Comment"
2015-04-26 12:48:37 +05:30
sleep 0.05
end
end
step 'I should see an error alert section within the comment form' do
2015-09-11 14:41:01 +05:30
page.within(".js-main-target-form") do
2015-04-26 12:48:37 +05:30
find(".error-alert")
end
end
step 'The code block should be unchanged' do
2015-09-11 14:41:01 +05:30
expect(page).to have_content("```\nCommand [1]: /usr/local/bin/git , see [text](doc/text)\n```")
2015-04-26 12:48:37 +05:30
end
step 'project \'Shop\' has issue \'Bugfix1\' with description: \'Description for issue1\'' do
2015-10-24 18:46:33 +05:30
create(:issue, title: 'Bugfix1', description: 'Description for issue1', project: project)
2015-04-26 12:48:37 +05:30
end
step 'project \'Shop\' has issue \'Feature1\' with description: \'Feature submitted for issue1\'' do
2015-10-24 18:46:33 +05:30
create(:issue, title: 'Feature1', description: 'Feature submitted for issue1', project: project)
2015-04-26 12:48:37 +05:30
end
step 'I fill in issue search with \'Description for issue1\'' do
filter_issue 'Description for issue'
end
step 'I fill in issue search with \'issue1\'' do
filter_issue 'issue1'
end
step 'I fill in issue search with \'Rock and roll\'' do
2016-09-13 17:45:13 +05:30
filter_issue 'Rock and roll'
2015-04-26 12:48:37 +05:30
end
step 'I should see \'Bugfix1\' in issues' do
2015-09-11 14:41:01 +05:30
expect(page).to have_content 'Bugfix1'
2015-04-26 12:48:37 +05:30
end
step 'I should see \'Feature1\' in issues' do
2015-09-11 14:41:01 +05:30
expect(page).to have_content 'Feature1'
2015-04-26 12:48:37 +05:30
end
step 'I should not see \'Bugfix1\' in issues' do
2015-09-11 14:41:01 +05:30
expect(page).not_to have_content 'Bugfix1'
2015-04-26 12:48:37 +05:30
end
step 'issue \'Release 0.4\' has label \'bug\'' do
label = project.labels.create!(name: 'bug', color: '#990000')
issue = Issue.find_by!(title: 'Release 0.4')
issue.labels << label
end
step 'I click label \'bug\'' do
2015-09-11 14:41:01 +05:30
page.within ".issues-list" do
2015-04-26 12:48:37 +05:30
click_link 'bug'
end
end
2015-09-11 14:41:01 +05:30
step 'I should not see labels field' do
page.within '.issue-form' do
expect(page).not_to have_content("Labels")
end
end
step 'I should not see milestone field' do
page.within '.issue-form' do
expect(page).not_to have_content("Milestone")
end
end
step 'I should not see assignee field' do
page.within '.issue-form' do
expect(page).not_to have_content("Assign to")
end
end
2015-04-26 12:48:37 +05:30
def filter_issue(text)
2016-09-29 09:46:39 +05:30
fill_in 'issuable_search', with: text
2015-04-26 12:48:37 +05:30
end
end