mirror of
https://github.com/discourse/discourse.git
synced 2024-12-05 12:33:50 +08:00
5683c90917
Our code assumed the content_range interval was inclusive, but they are open-ended due to Postgres' [discrete range types](https://www.postgresql.org/docs/current/rangetypes.html#RANGETYPES-DISCRETE), meaning [1,2] will be represented as [1,3). It also fixes some flaky tests due to test data not being correctly setup and the registry not being resetted after each test.
70 lines
2.0 KiB
Ruby
70 lines
2.0 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
describe Summarization::Base do
|
|
fab!(:user) { Fabricate(:user) }
|
|
fab!(:group) { Fabricate(:group) }
|
|
fab!(:topic) { Fabricate(:topic) }
|
|
|
|
let(:plugin) { Plugin::Instance.new }
|
|
|
|
before do
|
|
group.add(user)
|
|
|
|
strategy = DummyCustomSummarization.new({ summary: "dummy", chunks: [] })
|
|
plugin.register_summarization_strategy(strategy)
|
|
SiteSetting.summarization_strategy = strategy.model
|
|
end
|
|
|
|
after { DiscoursePluginRegistry.reset_register!(:summarization_strategies) }
|
|
|
|
describe "#can_see_summary?" do
|
|
context "when the user cannot generate a summary" do
|
|
before { SiteSetting.custom_summarization_allowed_groups = "" }
|
|
|
|
it "returns false" do
|
|
SiteSetting.custom_summarization_allowed_groups = ""
|
|
|
|
expect(described_class.can_see_summary?(topic, user)).to eq(false)
|
|
end
|
|
|
|
it "returns true if there is a cached summary" do
|
|
SummarySection.create!(
|
|
target: topic,
|
|
summarized_text: "test",
|
|
original_content_sha: "123",
|
|
algorithm: "test",
|
|
meta_section_id: nil,
|
|
)
|
|
|
|
expect(described_class.can_see_summary?(topic, user)).to eq(true)
|
|
end
|
|
end
|
|
|
|
context "when the user can generate a summary" do
|
|
before { SiteSetting.custom_summarization_allowed_groups = group.id }
|
|
|
|
it "returns true if the user group is present in the custom_summarization_allowed_groups_map setting" do
|
|
expect(described_class.can_see_summary?(topic, user)).to eq(true)
|
|
end
|
|
end
|
|
|
|
context "when there is no user" do
|
|
it "returns false for anons" do
|
|
expect(described_class.can_see_summary?(topic, nil)).to eq(false)
|
|
end
|
|
|
|
it "returns true for anons when there is a cached summary" do
|
|
SummarySection.create!(
|
|
target: topic,
|
|
summarized_text: "test",
|
|
original_content_sha: "123",
|
|
algorithm: "test",
|
|
meta_section_id: nil,
|
|
)
|
|
|
|
expect(described_class.can_see_summary?(topic, nil)).to eq(true)
|
|
end
|
|
end
|
|
end
|
|
end
|