[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