discourse/spec/lib/summarization/base_spec.rb
Roman Rizzi 8938ecabc2
FEATURE: Custom content summarization strategies. (#21813)
* FEATURE: Content custom summarization strategies.

This PR establishes a pattern for plugins to register alternative ways of summarizing content by extending a class that defines an interface.

Core controls which strategy we'll use and who has access to it through the `summarization_strategy` and `custom_summarization_allowed_groups`. It also defines the UI for summarizing topics.

Other plugins can access this summarization mechanism and implement their features, removing cross-plugin customizations, as it currently happens between chat and the discourse-ai plugin.

* Group membership validation and rate limiting

* Work with objects instead of classes

* Port summarization feature from discourse-ai to chat

* Rename available summaries to 'Top Replies' and 'Summary'
2023-06-13 14:21:46 -03:00

23 lines
743 B
Ruby

# frozen_string_literal: true
describe Summarization::Base do
fab!(:user) { Fabricate(:user) }
fab!(:group) { Fabricate(:group) }
before { group.add(user) }
describe "#can_request_summaries?" do
it "returns true if the user group is present in the custom_summarization_allowed_groups_map setting" do
SiteSetting.custom_summarization_allowed_groups = group.id
expect(described_class.new(nil).can_request_summaries?(user)).to eq(true)
end
it "returns false if the user group is not present in the custom_summarization_allowed_groups_map setting" do
SiteSetting.custom_summarization_allowed_groups = ""
expect(described_class.new(nil).can_request_summaries?(user)).to eq(false)
end
end
end