49 lines
1.8 KiB
Ruby
49 lines
1.8 KiB
Ruby
require "rails_helper"
|
|
|
|
feature "User managing project memberships" do
|
|
let(:account) { create(:account) }
|
|
|
|
scenario "manager invites an existing team member to another project" do
|
|
manager = create(:user, :manager, accounts: [account], email: "manager@test.com")
|
|
project = create(:project, members: manager, account: account, name: "Project")
|
|
another_user = create(:user, accounts: [account], email: "another.user@test.com")
|
|
another_project = create(:project, members: [manager, another_user], account: account, name: "Another Project")
|
|
|
|
sign_in manager
|
|
visit project_project_memberships_path(project)
|
|
|
|
expect(page).to have_content "manager@test.com"
|
|
expect(page).not_to have_content "another.user@test.com"
|
|
|
|
fill_in invite_email_field, with: "another.user@test.com"
|
|
click_on "Send Invite"
|
|
|
|
expect(page).to have_content "User has been invited to the project."
|
|
expect(page).to have_content "another.user@test.com"
|
|
end
|
|
|
|
scenario "manager removes an existing team member from a project" do
|
|
manager = create(:user, :manager, accounts: [account], email: "manager@test.com")
|
|
another_user = create(:user, accounts: [account], email: "another.user@test.com")
|
|
project = create(:project, members: [manager, another_user], account: account, name: "Project")
|
|
|
|
sign_in manager
|
|
visit project_project_memberships_path(project)
|
|
|
|
expect(page).to have_content "manager@test.com"
|
|
expect(page).to have_content "another.user@test.com"
|
|
expect(page).to have_link("Remove", href: project_membership_path(another_user.project_memberships.first))
|
|
|
|
click_on "Remove"
|
|
|
|
expect(page).to have_content "User has been removed from the project."
|
|
expect(page).not_to have_content "another.user@test.com"
|
|
end
|
|
|
|
private
|
|
|
|
def invite_email_field
|
|
"project_membership[user_email]"
|
|
end
|
|
end
|