discourse/spec/lib/homepage_helper_spec.rb
Joffrey JAFFEUX d81fc1448b
DEV: implements register_modifier(:custom_homepage_enabled) (#28657)
This commit will allow plugin developers to enable/disable the custom homepage.

Usage:

```ruby
register_modifier(:custom_homepage_enabled) do |enabled, args|
  true
end 
```

Args might contain request and/or current_user.
2024-08-30 11:06:07 +02:00

38 lines
1.2 KiB
Ruby

# frozen_string_literal: true
RSpec.describe HomepageHelper do
describe "resolver" do
fab!(:user)
it "returns latest by default" do
expect(HomepageHelper.resolve).to eq("latest")
end
it "returns custom when theme has a custom homepage" do
ThemeModifierHelper.any_instance.expects(:custom_homepage).returns(true)
expect(HomepageHelper.resolve).to eq("custom")
end
it "returns custom when a plugin modifies the custom_homepage_enabled to true" do
DiscoursePluginRegistry
.expects(:apply_modifier)
.with(:custom_homepage_enabled, false, request: nil, current_user: nil)
.returns(true)
expect(HomepageHelper.resolve).to eq("custom")
end
context "when first item in top menu is not valid for anons" do
it "distinguishes between auth homepage and anon homepage" do
SiteSetting.top_menu = "new|top|latest|unread"
expect(HomepageHelper.resolve(nil, user)).to eq("new")
# new is not a valid route for anon users, anon homepage is next item, top
expect(HomepageHelper.resolve).to eq(SiteSetting.anonymous_homepage)
expect(HomepageHelper.resolve).to eq("top")
end
end
end
end