mirror of
https://github.com/discourse/discourse.git
synced 2026-08-14 13:58:53 +08:00
RSpec setup becomes harder to follow at either extreme: trivial fixture wrappers hide lifecycle and intent, while forcing every named operation inline repeats low-level protocol and configuration details. This change documents and applies a test-setup hierarchy: - use `fab!`, `let`, `let!`, `subject`, and inline `Fabricate` according to lifecycle and role; - use a small example-group method when parameterized behavior gives one spec useful vocabulary; - move helpers into auto-loaded `spec/support` only when they are shared across spec files; - use fabricators and page objects for the data shapes and system-test interfaces they own. Core and plugin support files are loaded centrally by `rails_helper`, so plugin-specific support loaders are unnecessary. The migration specs encountered during the sweep are removed according to repository policy; production migrations are unchanged.
50 lines
1.1 KiB
Ruby
Vendored
50 lines
1.1 KiB
Ruby
Vendored
# frozen_string_literal: true
|
|
|
|
RSpec.describe "User profile" do
|
|
fab!(:current_user, :user)
|
|
fab!(:user)
|
|
|
|
before do
|
|
user.user_stat.update!(post_count: 1)
|
|
chat_system_bootstrap
|
|
end
|
|
|
|
shared_examples "not showing chat button" do
|
|
it "has no chat button" do
|
|
expect(page).to have_no_css(".chat-direct-message-btn")
|
|
end
|
|
end
|
|
|
|
shared_examples "showing chat button" do
|
|
it "shows the chat button" do
|
|
expect(page).to have_css(".chat-direct-message-btn")
|
|
end
|
|
end
|
|
|
|
context "when user" do
|
|
context "with chat disabled" do
|
|
before do
|
|
SiteSetting.chat_enabled = false
|
|
sign_in(current_user)
|
|
visit("/u/#{user.username}/summary")
|
|
end
|
|
|
|
include_examples "not showing chat button"
|
|
end
|
|
|
|
context "with chat enabled" do
|
|
before do
|
|
sign_in(current_user)
|
|
visit("/u/#{user.username}/summary")
|
|
end
|
|
|
|
include_examples "showing chat button"
|
|
end
|
|
end
|
|
|
|
context "when anonymous" do
|
|
before { visit("/u/#{user.username}/summary") }
|
|
|
|
include_examples "not showing chat button"
|
|
end
|
|
end
|