mirror of
https://github.com/discourse/discourse-rewind.git
synced 2025-09-08 20:51:53 +00:00
Also make it so we limit the amount of words returned on the server, no point returning 100 to the client and slicing.
71 lines
1.9 KiB
Ruby
71 lines
1.9 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
RSpec.describe(DiscourseRewind::FetchReports) do
|
|
describe ".call" do
|
|
subject(:result) { described_class.call(**dependencies) }
|
|
|
|
fab!(:current_user) { Fabricate(:user) }
|
|
|
|
let(:guardian) { Guardian.new(current_user) }
|
|
let(:dependencies) { { guardian: } }
|
|
|
|
context "when in january" do
|
|
before { freeze_time DateTime.parse("2021-01-22") }
|
|
|
|
it "computes the correct previous year" do
|
|
expect(result.year).to eq(2020)
|
|
end
|
|
end
|
|
|
|
context "when in december" do
|
|
before { freeze_time DateTime.parse("2021-12-22") }
|
|
|
|
it "computes the correct previous year" do
|
|
expect(result.year).to eq(2021)
|
|
end
|
|
end
|
|
|
|
context "when out of valid months december" do
|
|
before { freeze_time DateTime.parse("2021-02-22") }
|
|
|
|
it { is_expected.to fail_to_find_a_model(:year) }
|
|
end
|
|
|
|
context "in development mode" do
|
|
before do
|
|
Rails.env.stubs(:development?).returns(true)
|
|
freeze_time DateTime.parse("2021-06-22")
|
|
end
|
|
|
|
it "finds the year no matter what month" do
|
|
expect(result.year).to eq(2021)
|
|
end
|
|
end
|
|
|
|
context "when reports is cached" do
|
|
before { freeze_time DateTime.parse("2021-12-22") }
|
|
|
|
it "returns the cached reports" do
|
|
expect(result.reports.length).to eq(9)
|
|
|
|
allow(DiscourseRewind::Action::TopWords).to receive(:call)
|
|
expect(result.reports.length).to eq(9)
|
|
expect(DiscourseRewind::Action::TopWords).to_not have_received(:call)
|
|
end
|
|
end
|
|
|
|
context "when reports is not cached" do
|
|
before do
|
|
freeze_time DateTime.parse("2021-01-22")
|
|
Discourse.redis.del("rewind:#{current_user.username}:2020")
|
|
end
|
|
|
|
it "returns the reports" do
|
|
allow(DiscourseRewind::Action::TopWords).to receive(:call)
|
|
expect(result.reports.length).to eq(9)
|
|
expect(DiscourseRewind::Action::TopWords).to have_received(:call)
|
|
end
|
|
end
|
|
end
|
|
end
|