[Git][noosfero/noosfero][master] 3 commits: FeedHandler: extract methods
Antonio Terceiro
gitlab at mg.gitlab.com
Fri Feb 5 13:44:40 BRST 2016
Antonio Terceiro pushed to branch master at Noosfero / noosfero
Commits:
8c98210c by Antonio Terceiro at 2016-02-02T14:00:30-02:00
FeedHandler: extract methods
Let's isolate those bits of logic under meaningful names to make the
code easier to understand.
- - - - -
c448138a by Antonio Terceiro at 2016-02-02T14:02:31-02:00
FeedHandler: correctly handle feeds that were never fetched
- - - - -
833e0012 by Antonio Terceiro at 2016-02-05T15:44:16+00:00
Merge branch 'fix-feed-never-fetched' into 'master'
Fix feed that has never been fetched succesfully
This avoid a crash when container.fetched_at is `nil`.
See merge request !782
- - - - -
2 changed files:
- lib/feed_handler.rb
- test/unit/feed_handler_test.rb
Changes:
=====================================
lib/feed_handler.rb
=====================================
--- a/lib/feed_handler.rb
+++ b/lib/feed_handler.rb
@@ -53,7 +53,7 @@ class FeedHandler
def process(container)
begin
container.class.transaction do
- if container.update_errors > FeedHandler.max_errors && container.fetched_at < (Time.now - FeedHandler.disabled_period)
+ if failed_too_many_times(container) && enough_time_since_last_failure(container)
container.enabled = true
container.update_errors = 0
container.save
@@ -103,4 +103,12 @@ class FeedHandler
url =~ URI.regexp('http') || url =~ URI.regexp('https')
end
+ def failed_too_many_times(container)
+ container.update_errors > FeedHandler.max_errors
+ end
+
+ def enough_time_since_last_failure(container)
+ container.fetched_at.nil? || container.fetched_at < (Time.now - FeedHandler.disabled_period)
+ end
+
end
=====================================
test/unit/feed_handler_test.rb
=====================================
--- a/test/unit/feed_handler_test.rb
+++ b/test/unit/feed_handler_test.rb
@@ -132,6 +132,14 @@ class FeedHandlerTest < ActiveSupport::TestCase
assert container.enabled, 'must reenable container after <disabled_period> (%s)' % container_class
end
+
+ should "handle a feed that was never fetched successfully (#{container_class})" do
+ container = create(container_class)
+ container.update_errors = FeedHandler.max_errors + 1
+ container.fetched_at = nil
+ handler.expects(:actually_process_container).with(container)
+ handler.process(container)
+ end
end
should 'not crash even when finish fetch fails' do
View it on GitLab: https://gitlab.com/noosfero/noosfero/compare/67ae703fdd8810f3a305c7b4693919a6afe54c03...833e001202e00dccf0709b670c0df231b0bac97f
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://listas.softwarelivre.org/pipermail/noosfero-dev/attachments/20160205/21eecf42/attachment.html>
More information about the Noosfero-dev
mailing list