scinote-web/features/step_definitions/projects_page_steps.rb
2020-07-09 13:14:04 +02:00

163 lines
6.1 KiB
Ruby

# frozen_string_literal: true
Then('I should see {string} public project card in {string} team page') do |project, team|
expect(page).to have_selector '.nav-name', text: team
expect(page).to have_selector '.panel-project a', text: project
expect(page).to have_selector '.panel-project span', text: 'All team members'
end
Then('I should see {string} private project card in {string} team page') do |project, team|
expect(page).to have_selector '.nav-name', text: team
expect(page).to have_selector '.panel-project a', text: project
expect(page).to have_selector '.panel-project span', text: 'Project members only'
end
Then('I should see {string} archived project card in {string} team page') do |project, team|
expect(page).to have_selector '.nav-name', text: team
expect(page).to have_selector '.panel-project .panel-title', text: project
expect(find('.projects-view-filter.active')).to have_content('ARCHIVED')
end
Then('I should see {string} error message of {string} modal window') do |message, modal|
modal_object = page.find('.modal-content', text: modal)
expect(modal_object).to have_selector '.help-block', text: message
end
Given('I had project {string} for team {string}') do |project, team|
FactoryBot.create(:project, name: project, team: Team.find_by(name: team))
end
Then('I click to down arrow of a {string} project card') do |project|
page.find('.panel-project', text: project).hover.find('.caret').click
end
Then('user {string} owner of project {string}') do |user, project|
FactoryBot.create(:user_project,
role: 0,
user: User.find_by(full_name: user),
project: Project.find_by(name: project))
end
Then('user {string} normal user of project {string}') do |user, project|
FactoryBot.create(:user_project,
role: 1,
user: User.find_by(full_name: user),
project: Project.find_by(name: project))
end
Given('I click to {string} of a Options modal window') do |link|
page.find('.panel-project .dropdown-menu', text: 'Options').find('a', text: link).click
end
Then('I click {string} icon on {string} project card') do |icon, project|
page.find('.panel-project', text: project).find(".fa-#{icon}").click
end
Then('I select user {string} in user dropdown of user manage modal for project {string}') do |user, project|
within('.modal-content', text: "Manage users for #{project}") do
find('.btn[data-id="user_project_user_id"]').click
find('.dropdown-menu.open a', text: user).click
end
end
Then('I select role {string} in role dropdown of user manage modal for project {string}') do |role, project|
within('.modal-content', text: "Manage users for #{project}") do
find('.btn[title="Select Role"]').click
find('.dropdown-menu a', text: role).click
end
end
Then('I change role {string} in role dropdown for user {string} of user manage modal for project {string}') do |role, user, project|
within('.modal-content', text: "Manage users for #{project}") do
within('.row', text: user) do
find('.btn[title="Change Role"]').click
find('.dropdown-menu a', text: role).click
end
end
end
Then('I should see {string} with role {string} in Users list of {string} project card') do |user, role, project|
within('.panel-project', text: project) do
within('[data-hook="project-users-tab-list"]') do
user_row = find('.row', text: user)
expect(user_row).to have_content(user)
expect(user_row).to have_content(role)
end
end
end
Then('I should see team {string} settings page of a current user') do |team|
expect(current_path).to eq team_path(Team.find_by(name: team))
end
Given('I click to cross icon at {string} user in user manage modal for project {string}') do |user, project|
within('.modal-content', text: "Manage users for #{project}") do
within('.row', text: user) do
find('.fa-times').click
end
end
end
Then('{string} user is removed from a list in user manage modal for project {string}') do |user, _project|
wait_for_ajax
expect(find('.add-user-form')).to have_content(user)
end
Then('I add {string} in comment field on {string} project card') do |comment, project|
within('.panel-project', text: project) do
find('.comments-container .new-message-container textarea').set(comment)
end
end
Then('I click to send comment button on {string} project card') do |project|
within('.panel-project', text: project) do
find('.fa-paper-plane').click
end
end
Then('I should see {string} in Comments list of {string} project card') do |comment, project|
within('.panel-project', text: project) do
expect(find('.comments-list')).to have_content(comment)
end
end
Then("I shouldn't see {string} in Comments list of {string} project card") do |comment, _project|
expect(find('.comments-list')).to have_no_content(comment)
end
Given("I don't have send comment button on {string} project card") do |project|
expect(find('.panel-project', text: project)).not_to have_selector('.fa-paper-plane')
end
Given('user {string} has comment {string} on project {string}') do |user, comment, project|
FactoryBot.create(:project_comment,
message: comment,
user: User.find_by(full_name: user),
project: Project.find_by(name: project))
end
Given('I click on {string} comment to edit it on {string} project card') do |comment, project|
within('.panel-project', text: project) do
find('.comment-message', text: comment).click
end
end
Then('I change {string} comment with {string} comment on {string} project card') do |old_comment, new_comment, project|
within('.panel-project', text: project) do
find('.comment-message textarea', text: old_comment).set(new_comment)
end
end
Given('I hover {string} comment on {string} project card') do |comment, project|
within('.panel-project', text: project) do
find('.comment-message', text: comment).hover
end
end
Given('project {string} archived') do |project|
Project.find_by(name: project).update(archived: true)
end
Given('I click to {string} tab') do |string|
find('.navbar-nav span', text: string).click
end