FEATURE: category setting for default top period

This commit is contained in:
Neil Lalonde
2017-03-22 16:54:12 -04:00
parent 0c46f51412
commit 11ce73b8ed
10 changed files with 49 additions and 34 deletions

View File

@ -193,8 +193,8 @@ describe ListController do
describe "category default views" do
it "top default view" do
category.update_attributes!(default_view: 'top')
described_class.expects(:best_period_for).returns('yearly')
category.update_attributes!(default_view: 'top', default_top_period: 'monthly')
described_class.expects(:best_period_with_topics_for).with(anything, category.id, :monthly).returns(:monthly)
xhr :get, :category_default, category: category.slug
expect(response).to be_success
end
@ -291,62 +291,52 @@ describe ListController do
describe "best_periods_for" do
it "returns yearly for more than 180 days" do
SiteSetting.top_page_default_timeframe = 'all'
expect(ListController.best_periods_for(nil)).to eq([:yearly])
expect(ListController.best_periods_for(180.days.ago)).to eq([:yearly])
expect(ListController.best_periods_for(nil, :all)).to eq([:yearly])
expect(ListController.best_periods_for(180.days.ago, :all)).to eq([:yearly])
end
it "includes monthly when less than 180 days and more than 35 days" do
SiteSetting.top_page_default_timeframe = 'all'
(35...180).each do |date|
expect(ListController.best_periods_for(date.days.ago)).to eq([:monthly, :yearly])
expect(ListController.best_periods_for(date.days.ago, :all)).to eq([:monthly, :yearly])
end
end
it "includes weekly when less than 35 days and more than 8 days" do
SiteSetting.top_page_default_timeframe = 'all'
(8...35).each do |date|
expect(ListController.best_periods_for(date.days.ago)).to eq([:weekly, :monthly, :yearly])
expect(ListController.best_periods_for(date.days.ago, :all)).to eq([:weekly, :monthly, :yearly])
end
end
it "includes daily when less than 8 days" do
SiteSetting.top_page_default_timeframe = 'all'
(0...8).each do |date|
expect(ListController.best_periods_for(date.days.ago)).to eq([:daily, :weekly, :monthly, :yearly])
expect(ListController.best_periods_for(date.days.ago, :all)).to eq([:daily, :weekly, :monthly, :yearly])
end
end
it "returns default even for more than 180 days" do
SiteSetting.top_page_default_timeframe = 'monthly'
expect(ListController.best_periods_for(nil)).to eq([:monthly, :yearly])
expect(ListController.best_periods_for(180.days.ago)).to eq([:monthly, :yearly])
expect(ListController.best_periods_for(nil, :monthly)).to eq([:monthly, :yearly])
expect(ListController.best_periods_for(180.days.ago, :monthly)).to eq([:monthly, :yearly])
end
it "returns default even when less than 180 days and more than 35 days" do
SiteSetting.top_page_default_timeframe = 'weekly'
(35...180).each do |date|
expect(ListController.best_periods_for(date.days.ago)).to eq([:weekly, :monthly, :yearly])
expect(ListController.best_periods_for(date.days.ago, :weekly)).to eq([:weekly, :monthly, :yearly])
end
end
it "returns default even when less than 35 days and more than 8 days" do
SiteSetting.top_page_default_timeframe = 'daily'
(8...35).each do |date|
expect(ListController.best_periods_for(date.days.ago)).to eq([:daily, :weekly, :monthly, :yearly])
expect(ListController.best_periods_for(date.days.ago, :daily)).to eq([:daily, :weekly, :monthly, :yearly])
end
end
it "doesn't return default when set to all" do
SiteSetting.top_page_default_timeframe = 'all'
expect(ListController.best_periods_for(nil)).to eq([:yearly])
expect(ListController.best_periods_for(nil, :all)).to eq([:yearly])
end
it "doesn't return value twice when matches default" do
SiteSetting.top_page_default_timeframe = 'yearly'
expect(ListController.best_periods_for(nil)).to eq([:yearly])
expect(ListController.best_periods_for(nil, :yearly)).to eq([:yearly])
end
end
describe "categories suppression" do