76 lines
2.1 KiB
Ruby
76 lines
2.1 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
require "rails_helper"
|
|
|
|
describe "inbox/show.html.haml", type: :view do
|
|
let(:user) { FactoryBot.create(:user) }
|
|
|
|
before do
|
|
sign_in user
|
|
end
|
|
|
|
subject(:rendered) { render }
|
|
|
|
context "with an empty inbox" do
|
|
before do
|
|
assign :inbox, []
|
|
end
|
|
|
|
it "displays an 'inbox is empty' message" do
|
|
html = Nokogiri::HTML.parse(rendered)
|
|
selector = "div.card.empty"
|
|
expect(rendered).to have_css(selector)
|
|
expect(html.css(selector).text.strip).to include "Your inbox is empty!"
|
|
end
|
|
end
|
|
|
|
context "with some inbox entries" do
|
|
let(:inbox_entry1) { InboxEntry.create(user:, question: FactoryBot.create(:question)) }
|
|
let(:inbox_entry2) { InboxEntry.create(user:, question: FactoryBot.create(:question)) }
|
|
|
|
before do
|
|
assign :inbox, [inbox_entry2, inbox_entry1]
|
|
end
|
|
|
|
it "renders inbox entries" do
|
|
expect(rendered).to have_css("#inbox_#{inbox_entry1.id}")
|
|
expect(rendered).to have_css("#inbox_#{inbox_entry2.id}")
|
|
end
|
|
|
|
it "does not contain the empty inbox message" do
|
|
expect(rendered).not_to have_css("p.empty")
|
|
end
|
|
|
|
it "does not render the paginator" do
|
|
expect(rendered).not_to have_css("#paginator")
|
|
end
|
|
|
|
context "when more data is available" do
|
|
before do
|
|
assign :more_data_available, true
|
|
assign :inbox_last_id, 1337
|
|
end
|
|
|
|
it "renders the paginator" do
|
|
expect(rendered).to have_css("#paginator")
|
|
end
|
|
|
|
it "has the correct params on the button" do
|
|
expect(rendered).to have_css(%(input[type="hidden"][name="last_id"][value="1337"]))
|
|
expect(rendered).not_to have_css(%(input[type="hidden"][name="author"]))
|
|
end
|
|
|
|
context "when passed an author" do
|
|
before do
|
|
assign :author, "jyrki"
|
|
end
|
|
|
|
it "has the correct params on the button" do
|
|
expect(rendered).to have_css(%(input[type="hidden"][name="last_id"][value="1337"]))
|
|
expect(rendered).to have_css(%(input[type="hidden"][name="author"]))
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|