docbrown/spec/requests/profile_preview_cards_spec.rb
Michael Kohl 7e0415c150
Make header fields in profile preview card dynamic (#14454)
* Make header fields in profile preview card dynamic

* Update comment
2021-08-11 09:34:30 +07:00

151 lines
4.9 KiB
Ruby

require "rails_helper"
RSpec.describe "ProfilePreviewCards", type: :request do
let(:user) { create(:profile, :with_DEV_info).user }
describe "GET /:id" do
context "when signed out" do
it "does not find an unknown user id" do
expect { get profile_preview_card_path(9999) }.to raise_error(ActiveRecord::RecordNotFound)
end
it "is a successful response" do
get profile_preview_card_path(user)
expect(response).to have_http_status(:ok)
end
it "returns the data" do
get profile_preview_card_path(user)
expect(response.body).to include("profile-preview-card__content")
end
end
context "when signed in" do
before { sign_in(user) }
it "does not find an unknown user id" do
expect { get profile_preview_card_path(9999) }.to raise_error(ActiveRecord::RecordNotFound)
end
it "is a successful response" do
get profile_preview_card_path(user)
expect(response).to have_http_status(:ok)
end
it "returns the data" do
get profile_preview_card_path(user)
expect(response.body).to include("profile-preview-card__content")
end
end
end
describe "GET /:id as JSON" do
let(:profile) { user.profile }
context "when signed out" do
it "does not find an unknown user id" do
expect { get profile_preview_card_path(9999), as: :json }.to raise_error(ActiveRecord::RecordNotFound)
end
it "is a successful response" do
get profile_preview_card_path(user), as: :json
expect(response).to have_http_status(:ok)
end
it "returns the data", :aggregate_failures do
get profile_preview_card_path(user), as: :json
preview_card = response.parsed_body
expect(preview_card["summary"]).to eq(profile.summary)
expect(preview_card["work"]).to eq(profile.work)
expect(preview_card["location"]).to eq(profile.location)
expect(preview_card["education"]).to eq(profile.education)
expect(preview_card["created_at"]).to eq(user.created_at.utc.iso8601)
end
it "has the correct card color" do
user.setting.update(brand_color1: Faker::Color.hex_color)
get profile_preview_card_path(user), as: :json
expected_card_color = Color::CompareHex.new([user_colors(user)[:bg], user_colors(user)[:text]]).brightness(0.88)
expect(response.parsed_body["card_color"]).to eq(expected_card_color)
end
it "does not return the email if the user has asked not to" do
user.setting.update_columns(display_email_on_profile: false)
get profile_preview_card_path(user), as: :json
preview_card = response.parsed_body
expect(preview_card.key?("email")).to be(false)
end
it "returns the email if the user wants to" do
user.setting.update_columns(display_email_on_profile: true)
get profile_preview_card_path(user), as: :json
preview_card = response.parsed_body
expect(preview_card["email"]).to eq(user.email)
end
end
context "when signed in" do
before { sign_in(user) }
it "does not find an unknown user id" do
expect { get profile_preview_card_path(9999), as: :json }.to raise_error(ActiveRecord::RecordNotFound)
end
it "is a successful response" do
get profile_preview_card_path(user), as: :json
expect(response).to have_http_status(:ok)
end
it "returns the data", :aggregate_failures do
get profile_preview_card_path(user), as: :json
preview_card = response.parsed_body
expect(preview_card["summary"]).to eq(profile.summary)
expect(preview_card["work"]).to eq(profile.work)
expect(preview_card["location"]).to eq(profile.location)
expect(preview_card["education"]).to eq(profile.education)
expect(preview_card["created_at"]).to eq(user.created_at.utc.iso8601)
end
it "has the correct card color" do
user.setting.update(brand_color1: Faker::Color.hex_color)
get profile_preview_card_path(user), as: :json
expected_card_color = Color::CompareHex.new([user_colors(user)[:bg], user_colors(user)[:text]]).brightness(0.88)
expect(response.parsed_body["card_color"]).to eq(expected_card_color)
end
it "does not return the email if the user has asked not to" do
user.setting.update_columns(display_email_on_profile: false)
get profile_preview_card_path(user), as: :json
preview_card = response.parsed_body
expect(preview_card.key?("email")).to be(false)
end
it "returns the email if the user wants to" do
user.setting.update_columns(display_email_on_profile: true)
get profile_preview_card_path(user), as: :json
preview_card = response.parsed_body
expect(preview_card["email"]).to eq(user.email)
end
end
end
end