docbrown/spec/views/users/main_feed_spec.rb
Philip How 021213b841
Redo: New badge display logic on user's profile (#20944)
* new badge display

* fix cypress

* fix cypress

* Fit grid to exact number

* change point at which badges shown on profile header to 7

* remove  accidentally added objects

* remove  accidentally added objects

---------

Co-authored-by: Ben Halpern <bendhalpern@gmail.com>
2024-05-10 17:45:18 -04:00

110 lines
2.9 KiB
Ruby

require "rails_helper"
RSpec.describe "users/show" do
let!(:user) { create(:user) }
before do
without_partial_double_verification do
allow(view).to receive(:internal_navigation?).and_return(false)
allow(view).to receive(:feed_style_preference).and_return("basic")
end
assign(:user, user)
assign(:stories, [])
assign(:comments, [])
assign(:pinned_stories, [])
assign(:profile, user.profile.decorate)
assign(:is_user_flagged, false)
end
context "when signed-in" do
before do
visitor = create(:user)
sign_in visitor
end
context "when there are posts" do
let(:posts) { create_list(:article, 3) }
before { assign :stories, posts.map(&:decorate) }
it "renders no featured stories" do
render
expect(rendered).not_to have_css(".featured-story-marker")
expect(rendered).to have_css(".crayons-story__body")
end
end
context "when there are comments" do
let(:comments) do
article = create(:article, published: true)
Array.new(3) do
create(:comment, user: user, commentable: article, deleted: false)
end
end
before do
user.comments_count = 3
assign :comments, comments.map(&:decorate)
end
it "renders comments as required" do
render
expect(rendered).not_to have_css(".crayons-story__body")
expect(rendered).not_to have_css("#comments-locked-cta")
expect(rendered).to have_css(".profile-comment-row")
end
end
# context "when there are pinned stories" do
#
# end
end
context "when there are posts" do
let(:posts) { create_list(:article, 3) }
before { assign :stories, posts.map(&:decorate) }
it "renders no featured stories" do
render
expect(rendered).not_to have_css(".featured-story-marker")
expect(rendered).to have_css(".crayons-story__body")
expect(rendered).not_to have_css("#comments-locked-cta")
end
end
context "when there are comments" do
let(:comments) do
article = create(:article, published: true)
Array.new(3) do
create(:comment, user: user, commentable: article, deleted: false)
end
end
before do
user.comments_count = 3
assign :comments, comments.map(&:decorate)
end
it "does not render comments, but sign-in CTA" do
render
expect(rendered).not_to have_css(".profile-comment-row")
expect(rendered).to have_css("#comments-locked-cta")
end
end
it "renders without exception" do
render
expect(rendered).to have_css(".profile-header")
expect(rendered).not_to have_css(".featured-story-marker")
expect(rendered).not_to have_css(".crayons-story__body")
expect(rendered).not_to have_css(".profile-comment-row")
expect(rendered).not_to have_css("#comments-locked-cta")
end
# context "when there are pinned stories" do
#
# end
end