resque_jobs_tree 0.3.1 → 0.3.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -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: