resque_jobs_tree 0.3.1 → 0.3.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -58,14 +58,17 @@ class ResqueJobsTree::Node
58
58
  end
59
59
 
60
60
  def find_node_by_name _name
61
- return self if name == _name.to_s
62
- node_childs.detect{ |node| node.find_node_by_name _name }
61
+ if name == _name.to_s
62
+ self
63
+ else
64
+ node_childs.inject(nil){|result,node| result ||= node.find_node_by_name _name }
65
+ end
63
66
  end
64
67
 
65
68
  def validate!
66
- if childs.kind_of?(Proc) && node_childs.empty?
69
+ if (childs.kind_of?(Proc) && node_childs.empty?) || (childs.nil? && !node_childs.empty?)
67
70
  raise ResqueJobsTree::NodeInvalid,
68
- "node `#{name}` from tree `#{tree.name}` defines childs without child nodes"
71
+ "node `#{name}` from tree `#{tree.name}` should defines childs and child nodes"
69
72
  end
70
73
  unless perform.kind_of? Proc
71
74
  raise ResqueJobsTree::NodeInvalid,
@@ -1,3 +1,3 @@
1
1
  module ResqueJobsTree
2
- VERSION = "0.3.1"
2
+ VERSION = "0.3.2"
3
3
  end
data/test/test_helper.rb CHANGED
@@ -81,4 +81,23 @@ class MiniTest::Unit::TestCase
81
81
  Resque.redis
82
82
  end
83
83
 
84
+ def create_nested_tree
85
+ @tree = ResqueJobsTree::Factory.create :tree1 do
86
+ root :job1 do
87
+ perform { raise 'job1' }
88
+ childs { [ [:job2] ] }
89
+ node :job2, continue_on_failure: true do
90
+ perform { raise 'job2' }
91
+ childs { [ [:job3], [:job4] ] }
92
+ node :job3, async: true do
93
+ perform {}
94
+ end
95
+ node :job4, continue_on_failure: true do
96
+ perform { raise 'job4' }
97
+ end
98
+ end
99
+ end
100
+ end
101
+ end
102
+
84
103
  end
data/test/tree_test.rb CHANGED
@@ -25,7 +25,9 @@ class TreeTest < MiniTest::Unit::TestCase
25
25
  end
26
26
 
27
27
  def test_find_node_by_name
28
- assert_equal @tree.find_node_by_name('job2').name, 'job2'
28
+ assert_equal 'job2', @tree.find_node_by_name('job2').name
29
+ create_nested_tree
30
+ assert_equal 'job4', @tree.find_node_by_name('job4').name
29
31
  end
30
32
 
31
33
  def test_launch
@@ -58,6 +60,14 @@ class TreeTest < MiniTest::Unit::TestCase
58
60
  @tree.launch Model.new(1)
59
61
  end
60
62
 
63
+ def test_nested_tree
64
+ create_nested_tree
65
+ @tree.launch
66
+ assert_raises NoMethodError do
67
+ Resque.enqueue_to 'tree1', ResqueJobsTree::Job, 'tree1', 'job3'
68
+ end
69
+ end
70
+
61
71
  private
62
72
 
63
73
  def create_tree_with_on_failure_hook
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: resque_jobs_tree
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.1
4
+ version: 0.3.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors: