86 lines
2.2 KiB
Ruby
86 lines
2.2 KiB
Ruby
|
|
require "rails_helper"
|
||
|
|
|
||
|
|
RSpec.describe ProfilesController, type: :controller do
|
||
|
|
render_views
|
||
|
|
|
||
|
|
let(:current_user) { create(:user) }
|
||
|
|
|
||
|
|
before do
|
||
|
|
sign_in current_user
|
||
|
|
end
|
||
|
|
|
||
|
|
describe "#show" do
|
||
|
|
it "responds successfully" do
|
||
|
|
get :show
|
||
|
|
|
||
|
|
expect(response).to be_successful
|
||
|
|
end
|
||
|
|
|
||
|
|
it "renders content" do
|
||
|
|
get :show
|
||
|
|
|
||
|
|
expect(response.body).to have_content(current_user.primary_account.name)
|
||
|
|
expect(response.body).to have_content "Account Manager"
|
||
|
|
end
|
||
|
|
|
||
|
|
it "renders form for updating first, last name and time zone" do
|
||
|
|
get :show
|
||
|
|
|
||
|
|
expect(response.body).to have_content("First name")
|
||
|
|
expect(response.body).to have_content("Last name")
|
||
|
|
expect(response.body).to have_content("Time zone")
|
||
|
|
end
|
||
|
|
end
|
||
|
|
|
||
|
|
describe "#update" do
|
||
|
|
it "responds with redirect" do
|
||
|
|
patch :update, params: { user: user_params }
|
||
|
|
|
||
|
|
expect(response).to be_redirect
|
||
|
|
expect(flash.notice).not_to be_nil
|
||
|
|
end
|
||
|
|
|
||
|
|
it "updates user's first and last name" do
|
||
|
|
patch :update, params: { user: user_params }
|
||
|
|
|
||
|
|
expect(current_user.first_name).to eq("John")
|
||
|
|
expect(current_user.last_name).to eq("Doe")
|
||
|
|
expect(current_user.full_name).to eq("John Doe")
|
||
|
|
expect(response).to be_redirect
|
||
|
|
expect(flash.notice).not_to be_nil
|
||
|
|
end
|
||
|
|
|
||
|
|
it "updates user's avatar" do
|
||
|
|
patch :update, params: { user: user_params_with_avatar }
|
||
|
|
|
||
|
|
expect(current_user.first_name).to eq("John")
|
||
|
|
expect(current_user.last_name).to eq("Doe")
|
||
|
|
expect(current_user.full_name).to eq("John Doe")
|
||
|
|
expect(current_user.avatar.filename).to eq("person_photo.png")
|
||
|
|
expect(current_user.avatar.signed_id).not_to be_nil
|
||
|
|
expect(response).to be_redirect
|
||
|
|
expect(flash.notice).not_to be_nil
|
||
|
|
end
|
||
|
|
|
||
|
|
it "updates user's time zone" do
|
||
|
|
patch :update, params: { user: user_params }
|
||
|
|
|
||
|
|
expect(current_user.time_zone).to eq("Berlin")
|
||
|
|
expect(response).to be_redirect
|
||
|
|
expect(flash.notice).not_to be_nil
|
||
|
|
end
|
||
|
|
end
|
||
|
|
|
||
|
|
private
|
||
|
|
|
||
|
|
def user_params
|
||
|
|
{ first_name: "John", last_name: "Doe", time_zone: "Berlin" }
|
||
|
|
end
|
||
|
|
|
||
|
|
def user_params_with_avatar
|
||
|
|
avatar = Rack::Test::UploadedFile.new(file_fixture("person_photo.png"), "image/png")
|
||
|
|
|
||
|
|
user_params.merge({ avatar: avatar })
|
||
|
|
end
|
||
|
|
end
|