else
@entries = DiaryEntry.joins(:user).where(:users => { :status => %w[active confirmed] })
+ # Items can't be flagged as deleted in the RSS format.
+ # For the general feeds, allow a delay before publishing, to help spam fighting
+ @entries = @entries.where("created_at < :time", :time => Settings.diary_feed_delay.hours.ago)
+
if params[:language]
@entries = @entries.where(:language_code => params[:language])
@title = t("diary_entries.feed.language.title", :language_name => Language.find(params[:language]).english_name)
@link = url_for :action => "index", :host => Settings.server_url, :protocol => Settings.server_protocol
end
end
-
@entries = @entries.visible.includes(:user).order("created_at DESC").limit(20)
end
nearby_radius: 50
# Spam threshold
spam_threshold: 50
+# Delay diary entries from appearing in the feed for this many hours
+diary_feed_delay: 0
# Default legale (jurisdiction location) for contributor terms
default_legale: GB
# Use the built-in jobs queue for importing traces
# Trace directories for testing
gpx_trace_dir: <%= Rails.root.join("test", "gpx", "traces") %>
gpx_image_dir: <%= Rails.root.join("test", "gpx", "images") %>
+# Ignore the diary feed delay unless we're specifically testing it
+diary_feed_delay: 0
# Geonames credentials for testing
geonames_username: "dummy"
# External authentication credentials for testing
assert_match "<title><script></title>", response.body
end
+ def test_feed_delay
+ create(:diary_entry, :created_at => 7.hours.ago)
+ create(:diary_entry, :created_at => 5.hours.ago)
+ get :rss, :params => { :format => :rss }
+ assert_select "rss>channel>item", :count => 2
+
+ with_diary_feed_delay(6) do
+ get :rss, :params => { :format => :rss }
+ assert_select "rss>channel>item", :count => 1
+ end
+ end
+
def test_show
user = create(:user)
suspended_user = create(:user, :suspended)
assert_select "a[href=?]", "/user/#{ERB::Util.u(entry.user.display_name)}/diary/#{entry.id}"
end
end
+
+ def with_diary_feed_delay(value)
+ diary_feed_delay = Settings.diary_feed_delay
+ Settings.diary_feed_delay = value
+
+ yield
+
+ Settings.diary_feed_delay = diary_feed_delay
+ end
end