Initial commit
This commit is contained in:
97
spec/features/user_manages_profile_spec.rb
Normal file
97
spec/features/user_manages_profile_spec.rb
Normal file
@@ -0,0 +1,97 @@
|
||||
require "rails_helper"
|
||||
|
||||
RSpec.feature "User can update his profile", type: :feature do
|
||||
let(:user) { create(:user, :with_name) }
|
||||
|
||||
before do
|
||||
sign_in(user)
|
||||
end
|
||||
|
||||
scenario "user clicks profile dropdown" do
|
||||
visit signed_in_root_path
|
||||
|
||||
click_on "John Doe"
|
||||
|
||||
expect(page).to have_link("Profile Settings", href: profile_path)
|
||||
expect(page).to have_link("Sign Out", href: session_path)
|
||||
end
|
||||
|
||||
scenario "visits profile page" do
|
||||
visit profile_path
|
||||
|
||||
expect(page).to have_content("First name")
|
||||
expect(page).to have_content("Last name")
|
||||
end
|
||||
|
||||
scenario "updates first and last name" do
|
||||
visit profile_path
|
||||
|
||||
within "form" do
|
||||
fill_in "First name", with: "John"
|
||||
fill_in "Last name", with: "Doe"
|
||||
click_on "Update Profile"
|
||||
end
|
||||
|
||||
expect(page).to have_content("John Doe")
|
||||
expect(page).to have_content("JD")
|
||||
end
|
||||
|
||||
scenario "updates avatar" do
|
||||
visit profile_path
|
||||
|
||||
within "form" do
|
||||
attach_file "user[avatar]", Rails.root.join(file_fixture("person_photo.png")), visible: false
|
||||
fill_in "First name", with: "John"
|
||||
fill_in "Last name", with: "Doe"
|
||||
click_on "Update Profile"
|
||||
end
|
||||
|
||||
expect(page).to have_content("Profile has been updated successfully")
|
||||
expect(page).to have_content("John Doe")
|
||||
expect(page).to have_photo("person_photo.png")
|
||||
end
|
||||
|
||||
context "user is admin" do
|
||||
let(:user) { create(:user, :with_name, :admin) }
|
||||
|
||||
scenario "admin visits user listing" do
|
||||
visit admin_users_path
|
||||
|
||||
expect(page).to have_content("First Name")
|
||||
expect(page).to have_content("Last Name")
|
||||
expect(page).to have_content("John")
|
||||
expect(page).to have_content("Doe")
|
||||
end
|
||||
|
||||
scenario "admin clicks profile dropdown" do
|
||||
visit admin_users_path
|
||||
|
||||
click_on "John Doe"
|
||||
|
||||
expect(page).to have_link("BIG Admin", href: admin_signed_in_root_path)
|
||||
expect(page).to have_link("Profile Settings", href: profile_path)
|
||||
expect(page).to have_link("Account Settings", href: account_auths_path)
|
||||
expect(page).to have_link("Sign Out", href: session_path)
|
||||
end
|
||||
end
|
||||
|
||||
context "user is account manager" do
|
||||
let(:user) { create(:user, :with_name, :account_manager) }
|
||||
|
||||
scenario "account manager clicks profile dropdown" do
|
||||
visit signed_in_root_path
|
||||
|
||||
click_on "John Doe"
|
||||
|
||||
expect(page).to have_link("Profile Settings", href: profile_path)
|
||||
expect(page).to have_link("Account Settings", href: account_auths_path)
|
||||
expect(page).to have_link("Sign Out", href: session_path)
|
||||
end
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def have_photo(filename)
|
||||
have_selector("img[src*='#{filename}']")
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user