mirror of
https://github.com/discourse/discourse.git
synced 2025-02-08 12:24:55 +00:00
starts refactoring report spec
This commit is contained in:
parent
262beed1cf
commit
313cd9940d
@ -1,6 +1,37 @@
|
|||||||
require 'rails_helper'
|
require 'rails_helper'
|
||||||
|
|
||||||
describe Report do
|
describe Report do
|
||||||
|
shared_examples 'no data' do
|
||||||
|
context "with no data" do
|
||||||
|
it 'returns an empty report' do
|
||||||
|
expect(report.data).to be_blank
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
shared_examples 'category filtering' do
|
||||||
|
it 'returns the filtered data' do
|
||||||
|
expect(report.total).to eq 1
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
shared_examples 'with data x/y' do
|
||||||
|
it "returns today's data" do
|
||||||
|
expect(report.data.select { |v| v[:x].today? }).to be_present
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'returns correct data for period' do
|
||||||
|
expect(report.data[0][:y]).to eq 3
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'returns total' do
|
||||||
|
expect(report.total).to eq 4
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'returns previous 30 day’s data' do
|
||||||
|
expect(report.prev30Days).to be_present
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
describe "counting" do
|
describe "counting" do
|
||||||
describe "requests" do
|
describe "requests" do
|
||||||
@ -60,11 +91,7 @@ describe Report do
|
|||||||
describe 'visits report' do
|
describe 'visits report' do
|
||||||
let(:report) { Report.find('visits') }
|
let(:report) { Report.find('visits') }
|
||||||
|
|
||||||
context "no visits" do
|
include_examples 'no data'
|
||||||
it "returns an empty report" do
|
|
||||||
expect(report.data).to be_blank
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
context "with visits" do
|
context "with visits" do
|
||||||
let(:user) { Fabricate(:user) }
|
let(:user) { Fabricate(:user) }
|
||||||
@ -265,11 +292,7 @@ describe Report do
|
|||||||
describe 'users by trust level report' do
|
describe 'users by trust level report' do
|
||||||
let(:report) { Report.find('users_by_trust_level') }
|
let(:report) { Report.find('users_by_trust_level') }
|
||||||
|
|
||||||
context "no users" do
|
include_examples 'no data'
|
||||||
it "returns an empty report" do
|
|
||||||
expect(report.data).to be_blank
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
context "with users at different trust levels" do
|
context "with users at different trust levels" do
|
||||||
before do
|
before do
|
||||||
@ -290,11 +313,7 @@ describe Report do
|
|||||||
describe 'new contributors report' do
|
describe 'new contributors report' do
|
||||||
let(:report) { Report.find('new_contributors') }
|
let(:report) { Report.find('new_contributors') }
|
||||||
|
|
||||||
context "no contributors" do
|
include_examples 'no data'
|
||||||
it "returns an empty report" do
|
|
||||||
expect(report.data).to be_blank
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
context "with contributors" do
|
context "with contributors" do
|
||||||
before do
|
before do
|
||||||
@ -320,11 +339,7 @@ describe Report do
|
|||||||
describe 'users by types level report' do
|
describe 'users by types level report' do
|
||||||
let(:report) { Report.find('users_by_type') }
|
let(:report) { Report.find('users_by_type') }
|
||||||
|
|
||||||
context "no users" do
|
include_examples 'no data'
|
||||||
it "returns an empty report" do
|
|
||||||
expect(report.data).to be_blank
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
context "with users at different trust levels" do
|
context "with users at different trust levels" do
|
||||||
before do
|
before do
|
||||||
@ -349,11 +364,7 @@ describe Report do
|
|||||||
describe 'trending search report' do
|
describe 'trending search report' do
|
||||||
let(:report) { Report.find('trending_search') }
|
let(:report) { Report.find('trending_search') }
|
||||||
|
|
||||||
context "no searches" do
|
include_examples 'no data'
|
||||||
it "returns an empty report" do
|
|
||||||
expect(report.data).to be_blank
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
context "with different searches" do
|
context "with different searches" do
|
||||||
before do
|
before do
|
||||||
@ -383,11 +394,7 @@ describe Report do
|
|||||||
describe 'DAU/MAU report' do
|
describe 'DAU/MAU report' do
|
||||||
let(:report) { Report.find('dau_by_mau') }
|
let(:report) { Report.find('dau_by_mau') }
|
||||||
|
|
||||||
context "no activity" do
|
include_examples 'no data'
|
||||||
it "returns an empty report" do
|
|
||||||
expect(report.data).to be_blank
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
context "with different users/visits" do
|
context "with different users/visits" do
|
||||||
before do
|
before do
|
||||||
@ -420,11 +427,7 @@ describe Report do
|
|||||||
describe 'Daily engaged users' do
|
describe 'Daily engaged users' do
|
||||||
let(:report) { Report.find('daily_engaged_users') }
|
let(:report) { Report.find('daily_engaged_users') }
|
||||||
|
|
||||||
context "no activity" do
|
include_examples 'no data'
|
||||||
it "returns an empty report" do
|
|
||||||
expect(report.data).to be_blank
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
context "with different activities" do
|
context "with different activities" do
|
||||||
before do
|
before do
|
||||||
@ -465,11 +468,7 @@ describe Report do
|
|||||||
describe 'flags_status' do
|
describe 'flags_status' do
|
||||||
let(:report) { Report.find('flags_status') }
|
let(:report) { Report.find('flags_status') }
|
||||||
|
|
||||||
context "no flags" do
|
include_examples 'no data'
|
||||||
it "returns an empty report" do
|
|
||||||
expect(report.data).to be_blank
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
context "with flags" do
|
context "with flags" do
|
||||||
let(:flagger) { Fabricate(:user) }
|
let(:flagger) { Fabricate(:user) }
|
||||||
@ -502,11 +501,7 @@ describe Report do
|
|||||||
describe 'post_edits' do
|
describe 'post_edits' do
|
||||||
let(:report) { Report.find('post_edits') }
|
let(:report) { Report.find('post_edits') }
|
||||||
|
|
||||||
context "no edits" do
|
include_examples 'no data'
|
||||||
it "returns an empty report" do
|
|
||||||
expect(report.data).to be_blank
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
context "with edits" do
|
context "with edits" do
|
||||||
let(:editor) { Fabricate(:user) }
|
let(:editor) { Fabricate(:user) }
|
||||||
@ -535,14 +530,10 @@ describe Report do
|
|||||||
end
|
end
|
||||||
|
|
||||||
describe 'moderator activity' do
|
describe 'moderator activity' do
|
||||||
let(:current_report) { Report.find('moderators_activity', start_date: 1.months.ago.beginning_of_day, end_date: Date.today) }
|
let(:report) { Report.find('moderators_activity', start_date: 1.months.ago.beginning_of_day, end_date: Date.today) }
|
||||||
let(:previous_report) { Report.find('moderators_activity', start_date: 2.months.ago.beginning_of_day, end_date: 1.month.ago.end_of_day) }
|
let(:previous_report) { Report.find('moderators_activity', start_date: 2.months.ago.beginning_of_day, end_date: 1.month.ago.end_of_day) }
|
||||||
|
|
||||||
context "no moderators" do
|
include_examples 'no data'
|
||||||
it "returns an empty report" do
|
|
||||||
expect(current_report.data).to be_blank
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
context "with moderators" do
|
context "with moderators" do
|
||||||
before do
|
before do
|
||||||
@ -585,36 +576,36 @@ describe Report do
|
|||||||
end
|
end
|
||||||
|
|
||||||
it "returns a report with data" do
|
it "returns a report with data" do
|
||||||
expect(current_report.data).to be_present
|
expect(report.data).to be_present
|
||||||
end
|
end
|
||||||
|
|
||||||
it "returns data for two moderators" do
|
it "returns data for two moderators" do
|
||||||
expect(current_report.data.count).to eq(2)
|
expect(report.data.count).to eq(2)
|
||||||
end
|
end
|
||||||
|
|
||||||
it "returns the correct usernames" do
|
it "returns the correct usernames" do
|
||||||
expect(current_report.data[0][:username]).to eq('bob')
|
expect(report.data[0][:username]).to eq('bob')
|
||||||
expect(current_report.data[1][:username]).to eq('sally')
|
expect(report.data[1][:username]).to eq('sally')
|
||||||
end
|
end
|
||||||
|
|
||||||
it "returns the correct read times" do
|
it "returns the correct read times" do
|
||||||
expect(current_report.data[0][:time_read]).to eq(300)
|
expect(report.data[0][:time_read]).to eq(300)
|
||||||
expect(current_report.data[1][:time_read]).to eq(3000)
|
expect(report.data[1][:time_read]).to eq(3000)
|
||||||
end
|
end
|
||||||
|
|
||||||
it "returns the correct agreed flag count" do
|
it "returns the correct agreed flag count" do
|
||||||
expect(current_report.data[0][:flag_count]).to be_blank
|
expect(report.data[0][:flag_count]).to be_blank
|
||||||
expect(current_report.data[1][:flag_count]).to eq(1)
|
expect(report.data[1][:flag_count]).to eq(1)
|
||||||
end
|
end
|
||||||
|
|
||||||
it "returns the correct topic count" do
|
it "returns the correct topic count" do
|
||||||
expect(current_report.data[0][:topic_count]).to eq(1)
|
expect(report.data[0][:topic_count]).to eq(1)
|
||||||
expect(current_report.data[1][:topic_count]).to be_blank
|
expect(report.data[1][:topic_count]).to be_blank
|
||||||
end
|
end
|
||||||
|
|
||||||
it "returns the correct post count" do
|
it "returns the correct post count" do
|
||||||
expect(current_report.data[0][:post_count]).to be_blank
|
expect(report.data[0][:post_count]).to be_blank
|
||||||
expect(current_report.data[1][:post_count]).to eq(2)
|
expect(report.data[1][:post_count]).to eq(2)
|
||||||
end
|
end
|
||||||
|
|
||||||
it "returns the correct data for the time period" do
|
it "returns the correct data for the time period" do
|
||||||
@ -630,4 +621,57 @@ describe Report do
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
describe 'flags' do
|
||||||
|
let(:report) { Report.find('flags') }
|
||||||
|
|
||||||
|
include_examples 'no data'
|
||||||
|
|
||||||
|
context 'with data' do
|
||||||
|
include_examples 'with data x/y'
|
||||||
|
|
||||||
|
before(:each) do
|
||||||
|
user = Fabricate(:user)
|
||||||
|
post0 = Fabricate(:post)
|
||||||
|
post1 = Fabricate(:post, topic: Fabricate(:topic, category_id: 2))
|
||||||
|
post2 = Fabricate(:post)
|
||||||
|
post3 = Fabricate(:post)
|
||||||
|
PostAction.act(user, post0, PostActionType.types[:off_topic])
|
||||||
|
PostAction.act(user, post1, PostActionType.types[:off_topic])
|
||||||
|
PostAction.act(user, post2, PostActionType.types[:off_topic])
|
||||||
|
PostAction.act(user, post3, PostActionType.types[:off_topic]).tap do |pa|
|
||||||
|
pa.created_at = 45.days.ago
|
||||||
|
end.save
|
||||||
|
end
|
||||||
|
|
||||||
|
context "with category filtering" do
|
||||||
|
let(:report) { Report.find('flags', category_id: 2) }
|
||||||
|
|
||||||
|
include_examples 'category filtering'
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
describe 'topics' do
|
||||||
|
let(:report) { Report.find('topics') }
|
||||||
|
|
||||||
|
include_examples 'no data'
|
||||||
|
|
||||||
|
context 'with data' do
|
||||||
|
include_examples 'with data x/y'
|
||||||
|
|
||||||
|
before(:each) do
|
||||||
|
Fabricate(:topic)
|
||||||
|
Fabricate(:topic, category_id: 2)
|
||||||
|
Fabricate(:topic)
|
||||||
|
Fabricate(:topic, created_at: 45.days.ago)
|
||||||
|
end
|
||||||
|
|
||||||
|
context "with category filtering" do
|
||||||
|
let(:report) { Report.find('topics', category_id: 2) }
|
||||||
|
|
||||||
|
include_examples 'category filtering'
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
Loading…
x
Reference in New Issue
Block a user