rules_engine 0.1.7 → 0.1.8

Sign up to get free protection for your applications and to get access to all the features.
Files changed (51) hide show
  1. data/VERSION +1 -1
  2. data/lib/rules_engine/process/runner.rb +81 -75
  3. data/lib/rules_engine/process/runner/db_runner.rb +2 -2
  4. data/lib/rules_engine/rule/definition.rb +1 -1
  5. data/lib/rules_engine_view/alerts.rb +3 -4
  6. data/lib/rules_engine_view/navigate.rb +2 -2
  7. data/rails_generators/manifests/complex.rb +6 -6
  8. data/rails_generators/manifests/complex.yml +6 -6
  9. data/rails_generators/manifests/simple.rb +5 -5
  10. data/rails_generators/manifests/simple.yml +5 -5
  11. data/rails_generators/templates/app/controllers/re_plans_controller.rb +2 -2
  12. data/rails_generators/templates/app/models/re_plan.rb +7 -2
  13. data/rails_generators/templates/app/models/re_workflow.rb +8 -1
  14. data/rails_generators/templates/app/rules/complex.rb +21 -21
  15. data/rails_generators/templates/app/rules/simple.rb +4 -4
  16. data/rails_generators/templates/app/views/re_plan_workflows/edit.js.erb +2 -0
  17. data/rails_generators/templates/app/views/re_plan_workflows/new.js.erb +2 -0
  18. data/rails_generators/templates/app/views/re_plans/_menu.html.erb +6 -8
  19. data/rails_generators/templates/app/views/re_plans/change.html.erb +1 -0
  20. data/rails_generators/templates/app/views/re_plans/edit.js.erb +2 -0
  21. data/rails_generators/templates/app/views/re_plans/new.js.erb +2 -0
  22. data/rails_generators/templates/app/views/re_rules/complex/_edit.html.erb +1 -0
  23. data/rails_generators/templates/app/views/{re_rule_definitions → re_rules}/complex/_form.html.erb +10 -10
  24. data/rails_generators/templates/app/views/{re_rule_definitions → re_rules}/complex/_form_word.html.erb +1 -1
  25. data/rails_generators/templates/app/views/{re_rule_definitions → re_rules}/complex/_help.html.erb +0 -0
  26. data/rails_generators/templates/app/views/re_rules/complex/_new.html.erb +1 -0
  27. data/rails_generators/templates/app/views/re_rules/simple/_edit.html.erb +1 -0
  28. data/rails_generators/templates/app/views/{re_rule_definitions → re_rules}/simple/_form.html.erb +0 -0
  29. data/rails_generators/templates/app/views/{re_rule_definitions → re_rules}/simple/_help.html.erb +0 -0
  30. data/rails_generators/templates/app/views/re_rules/simple/_new.html.erb +1 -0
  31. data/rails_generators/templates/app/views/re_workflows/edit.js.erb +2 -0
  32. data/rails_generators/templates/app/views/re_workflows/new.js.erb +3 -1
  33. data/rails_generators/templates/lib/tasks/rules_engine.rake +4 -4
  34. data/rails_generators/templates/public/javascripts/rules_engine/re_plan_change.js +13 -1
  35. data/rails_generators/templates/public/stylesheets/rules_engine/screen.css +2 -2
  36. data/rails_generators/templates/spec/controllers/re_plans_controller_spec.rb +0 -8
  37. data/rails_generators/templates/spec/lib/rules/complex_spec.rb +70 -69
  38. data/rails_generators/templates/spec/lib/rules/simple_spec.rb +8 -8
  39. data/rails_generators/templates/spec/models/re_plan_spec.rb +3 -3
  40. data/rails_generators/templates/spec/models/re_rule_spec.rb +14 -19
  41. data/rails_generators/templates/spec/models/re_workflow_spec.rb +9 -0
  42. data/spec/railsenv/log/debug.log +4050 -0
  43. data/spec/railsenv/log/test.log +592 -0
  44. data/spec/rules_engine/process/runner/db_runner_spec.rb +15 -16
  45. data/spec/rules_engine/process/runner_spec.rb +166 -113
  46. data/spec/rules_engine/rule/definition_spec.rb +2 -2
  47. metadata +13 -13
  48. data/rails_generators/templates/app/views/re_rule_definitions/complex/_edit.html.erb +0 -1
  49. data/rails_generators/templates/app/views/re_rule_definitions/complex/_new.html.erb +0 -1
  50. data/rails_generators/templates/app/views/re_rule_definitions/simple/_edit.html.erb +0 -1
  51. data/rails_generators/templates/app/views/re_rule_definitions/simple/_new.html.erb +0 -1
@@ -9,9 +9,9 @@ module RulesEngine
9
9
  {
10
10
  :group => 'General',
11
11
  :display_name => 'Simple',
12
- :help_partial => '/re_rule_definitions/<%=rule_name%>/help',
13
- :new_partial => '/re_rule_definitions/<%=rule_name%>/new',
14
- :edit_partial => '/re_rule_definitions/<%=rule_name%>/edit'
12
+ :help_partial => '/re_rules/<%=rule_name%>/help',
13
+ :new_partial => '/re_rules/<%=rule_name%>/new',
14
+ :edit_partial => '/re_rules/<%=rule_name%>/edit'
15
15
  }
16
16
 
17
17
  ##################################################################
@@ -74,7 +74,7 @@ module RulesEngine
74
74
  ##################################################################
75
75
  # execute the rule
76
76
  # this rule does nothing
77
- def process(process_id, data)
77
+ def process(process_id, plan, data)
78
78
  RulesEngine::Process.auditor.audit(process_id, "Inside Rule #{title}", RulesEngine::Process::AUDIT_INFO)
79
79
  # RulesEngine::Rule::Outcome.new(RulesEngine::Rule::Outcome::STOP_SUCCESS)
80
80
  # RulesEngine::Rule::Outcome.new(RulesEngine::Rule::Outcome::STOP_FAILURE)
@@ -6,3 +6,5 @@ $("#re_workflow_edit_form").submit(function() { return false; });
6
6
 
7
7
  $.re_unblock();
8
8
  $.fancybox({ href: '#re_content'});
9
+
10
+ $('#re_workflow_title').focus();
@@ -7,3 +7,5 @@ $("#re_workflow_new_form").submit(function() { return false; });
7
7
  $.re_unblock();
8
8
  $.fancybox.resize();
9
9
  $.fancybox({ href: '#re_content'});
10
+
11
+ $('#re_workflow_code').focus();
@@ -1,14 +1,12 @@
1
1
  <% plan_status = @re_plan.plan_status %>
2
2
 
3
- <% if plan_status == RePlan::PLAN_STATUS_DRAFT && !@re_plan.plan_error %>
3
+ <% if plan_status == RePlan::PLAN_STATUS_DRAFT || plan_status == RePlan::PLAN_STATUS_CHANGED %>
4
4
  <h4>
5
- <%= link_to("Publish Plan", "##{@re_plan.id}", :id => "re_plan_publish", :class => "re-menu-plan-publish") %>
6
- </h4>
7
- <div class="clear top-5"></div>
8
- <% end %>
9
- <% if plan_status == RePlan::PLAN_STATUS_CHANGED && !@re_plan.plan_error %>
10
- <h4>
11
- <%= link_to("Publish Changes", "##{@re_plan.id}", :id => "re_plan_publish", :class => "re-menu-plan-publish") %>
5
+ <% if @re_plan.plan_error %>
6
+ <%= link_to("Publish Plan", "##{@re_plan.id}", :id => "re_plan_publish_with_errors", :class => "re-menu-plan-publish") %>
7
+ <% else %>
8
+ <%= link_to("Publish Plan", "##{@re_plan.id}", :id => "re_plan_publish", :class => "re-menu-plan-publish") %>
9
+ <% end %>
12
10
  </h4>
13
11
  <div class="clear top-5"></div>
14
12
  <% end %>
@@ -89,6 +89,7 @@
89
89
  <% re_whitebox do %>
90
90
  <h3 class="re-hdr-plan-alert"><span class="red">Confirm :</span> Publish Plan</h3>
91
91
  <div class="clear top-5"></div>
92
+ <div class="red prepend-1" id="re_plan_publish_warning"></div>
92
93
  <hr/>
93
94
  <div class="clear top-5"></div>
94
95
 
@@ -6,3 +6,5 @@ $("#re_plan_edit_form").submit(function() { return false; });
6
6
 
7
7
  $.re_unblock();
8
8
  $.fancybox({ href: '#re_content'});
9
+
10
+ $('#re_plan_title').focus();
@@ -6,3 +6,5 @@ $("#re_plan_new_form").submit(function() { return false; });
6
6
 
7
7
  $.re_unblock();
8
8
  $.fancybox({ href: '#re_content'});
9
+
10
+ $('#re_plan_code').focus();
@@ -0,0 +1 @@
1
+ <%%= render '/re_rules/<%=rule_name%>/form', :f => f %>
@@ -1,14 +1,14 @@
1
1
  <%% javascript_tag do %>
2
- var new_<%=rule_name%> = '<%%=escape_javascript(render("/re_rule_definitions/<%=rule_name%>/form_word"))%>'
2
+ var new_<%=rule_name%> = '<%%=escape_javascript(render("/re_rules/<%=rule_name%>/form_word"))%>'
3
3
 
4
4
  var update<%=rule_class%>WorkflowAction = function() {
5
5
  if ($('#<%=rule_name%>_workflow_action').attr('value') == "start_workflow")
6
6
  {
7
- $('#<%=rule_name%>_workflow').re_form_enable();
8
- $('#<%=rule_name%>_workflow').removeAttr("disabled");
7
+ $('#<%=rule_name%>_workflow_code').re_form_enable();
8
+ $('#<%=rule_name%>_workflow_code').removeAttr("disabled");
9
9
  } else {
10
- $('#<%=rule_name%>_workflow').re_form_disable();
11
- $('#<%=rule_name%>_workflow').attr("disabled", true);
10
+ $('#<%=rule_name%>_workflow_code').re_form_disable();
11
+ $('#<%=rule_name%>_workflow_code').attr("disabled", true);
12
12
  }
13
13
  }
14
14
 
@@ -35,15 +35,15 @@
35
35
 
36
36
  <!-- WORDS -->
37
37
  <%% position = 0 %>
38
- <%% (@re_rule.rule.words || []).each do | word | %>
38
+ <%% (@re_rule.rule.match_words || []).each do | word | %>
39
39
  <%% f.fields_for :rule_data, {:first => false} do |frd| %>
40
- <%%= render '/re_rule_definitions/<%=rule_name%>/form_word', :f => frd, :position => position, :word => word %>
40
+ <%%= render '/re_rules/<%=rule_name%>/form_word', :f => frd, :position => position, :word => word %>
41
41
  <%% position += 1 %>
42
42
  <%% end %>
43
43
  <%% end %>
44
44
  <%% if position == 0 %>
45
45
  <%% f.fields_for :rule_data, {:first => false} do |frd| %>
46
- <%%= render '/re_rule_definitions/<%=rule_name%>/form_word', :f => frd, :position => position %>
46
+ <%%= render '/re_rules/<%=rule_name%>/form_word', :f => frd, :position => position %>
47
47
  <%% end %>
48
48
  <%% end %>
49
49
 
@@ -67,10 +67,10 @@
67
67
  :required => true %>
68
68
  </div>
69
69
  <div class="prepend-1 span-7 last">
70
- <%%= re_text_field "Workflow Code", "<%=rule_name%>_workflow", @re_rule.rule.workflow || params[:<%=rule_name%>_workflow],
70
+ <%%= re_text_field "Workflow Code", "<%=rule_name%>_workflow_code", @re_rule.rule.workflow_code || params[:<%=rule_name%>_workflow_code],
71
71
  :size => 20,
72
72
  :required => true,
73
73
  :span => '3x5',
74
- :error => @re_rule.rule.errors[:<%=rule_name%>_workflow] %>
74
+ :error => @re_rule.rule.errors[:<%=rule_name%>_workflow_code] %>
75
75
  </div>
76
76
 
@@ -1,7 +1,7 @@
1
1
  <%% id = local_assigns[:position] ? position : 'NEW_RECORD' %>
2
2
 
3
3
  <div id="<%=rule_name%>_<%%=id%>">
4
- <%%= re_text_field "Words to match", "<%=rule_name%>_words[#{id}][word]",
4
+ <%%= re_text_field "Words to match", "<%=rule_name%>_match_words[#{id}][word]",
5
5
  local_assigns[:word] ? word : '',
6
6
  :size => 25,
7
7
  :required => id == 0,
@@ -0,0 +1 @@
1
+ <%%= render '/re_rules/<%=rule_name%>/form', :f => f %>
@@ -0,0 +1 @@
1
+ <%%= render '/re_rules/<%=rule_name%>/form' %>
@@ -0,0 +1 @@
1
+ <%%= render '/re_rules/<%=rule_name%>/form' %>
@@ -6,3 +6,5 @@ $("#re_workflow_edit_form").submit(function() { return false; });
6
6
 
7
7
  $.re_unblock();
8
8
  $.fancybox({ href: '#re_content'});
9
+
10
+ $('#re_workflow_title').focus();
@@ -2,4 +2,6 @@ $('#re_content').html('<%=escape_javascript(render('/re_workflows/new', :create_
2
2
 
3
3
  $('#re_workflow_new_insert').closest('div.re-form-button').re_form_button();
4
4
 
5
- $("#re_workflow_new_form").submit(function() { return false; });
5
+ $("#re_workflow_new_form").submit(function() { return false; });
6
+
7
+ $('#re_workflow_code').focus();
@@ -15,19 +15,19 @@ task :rules_engine do
15
15
 
16
16
  RulesEngine::Publish.publisher = :db_publisher
17
17
  RulesEngine::Process.runner = :db_runner
18
- # RulesEngine::Process.auditor = :db_auditor
19
- # RulesEngine::Process.auditor.audit_level = RulesEngine::Process::AUDIT_INFO
18
+ RulesEngine::Process.auditor = :db_auditor
19
+ RulesEngine::Process.auditor.audit_level = RulesEngine::Process::AUDIT_INFO
20
20
  RulesEngine::Discovery.rules_path = File.expand_path(File.join(File.dirname(__FILE__), '/../../app/rules'))
21
21
  RulesEngine::Discovery.discover!
22
22
 
23
23
  plan = RulesEngine::Publish.publisher.get(ENV['re_plan'])
24
24
  if plan.nil?
25
- raise "published plan \"ENV['re_plan']\" not found"
25
+ raise "published plan \"#{ENV['re_plan']}\" not found"
26
26
  end
27
27
 
28
28
  data = ENV.inject({}){ |data, value| data[value[0].sub(/^re_/, '').to_sym] = value[1] if value[0] =~ /^re_/; data }
29
29
  process_id = RulesEngine::Process.runner.create
30
- success = RulesEngine::Process.runner.run(process_id, plan, data)
30
+ success = RulesEngine::Process.runner.run_plan(process_id, plan, data)
31
31
 
32
32
  # process = RulesEngine::Process.open(process.re_process.id)
33
33
 
@@ -50,7 +50,19 @@ $(document).ready(function() {
50
50
  return false;
51
51
  });
52
52
 
53
- $('a#re_plan_publish').live('click', function() {
53
+ $('a#re_plan_publish').live('click', function() {
54
+ $('#re_plan_publish_warning').html('');
55
+ $('#re_plan_publish_form #tag').attr('value', '')
56
+ $('#re_plan_publish_tag').attr('value', '')
57
+ $('#re_plan_publish_tag').re_form_valid();
58
+ $('#re_plan_publish_tag').closest('#re_plan_publish_confirm').find('.form-error-message').remove();
59
+ $.fancybox({ 'href': '#re_plan_publish_confirm' });
60
+
61
+ return false;
62
+ });
63
+
64
+ $('a#re_plan_publish_with_errors').live('click', function() {
65
+ $('#re_plan_publish_warning').html('Warning! The plan you are publishing has errors!');
54
66
  $('#re_plan_publish_form #tag').attr('value', '')
55
67
  $('#re_plan_publish_tag').attr('value', '')
56
68
  $('#re_plan_publish_tag').re_form_valid();
@@ -736,8 +736,8 @@ p.re-xtra-rule-name {
736
736
  font-size: 14px;
737
737
  line-height: 18px;
738
738
  width: 180px;
739
- height: 16px;
740
- overflow: hidden;
739
+ /* height: 16px;*/
740
+ /* overflow: hidden;*/
741
741
  }
742
742
 
743
743
  /* ************************************* */
@@ -237,14 +237,6 @@ describe RePlansController do
237
237
  RePlan.stub!(:find).and_return(@re_plan)
238
238
  end
239
239
 
240
- describe "plan has errors" do
241
- it "should display a flash error message" do
242
- @re_plan.should_receive(:plan_error).and_return('error')
243
- put :publish, :id => 123, :tag => "publish tag"
244
- flash[:error].should_not be_blank
245
- end
246
- end
247
-
248
240
  describe "tag is blank" do
249
241
  it "should display a flash error message" do
250
242
  put :publish, :id => 123, :tag => ""
@@ -9,7 +9,7 @@ describe RulesEngine::Rule::<%=rule_class%> do
9
9
  def valid_attributes
10
10
  {
11
11
  :<%=rule_name%>_title => 'Another Title',
12
- :<%=rule_name%>_words => {
12
+ :<%=rule_name%>_match_words => {
13
13
  "1" => { "word" => 'first word' },
14
14
  "2" => { "word" => 'second word' }
15
15
  }
@@ -29,16 +29,16 @@ describe RulesEngine::Rule::<%=rule_class%> do
29
29
  RulesEngine::Rule::<%=rule_class%>.options[:display_name].should == "<%=rule_class%>"
30
30
  end
31
31
 
32
- it "should have the help template of '/re_rule_definitions/<%=rule_name%>/help'" do
33
- RulesEngine::Rule::<%=rule_class%>.options[:help_partial].should == '/re_rule_definitions/<%=rule_name%>/help'
32
+ it "should have the help template of '/re_rules/<%=rule_name%>/help'" do
33
+ RulesEngine::Rule::<%=rule_class%>.options[:help_partial].should == '/re_rules/<%=rule_name%>/help'
34
34
  end
35
35
 
36
- it "should have the new template of '/re_rule_definitions/<%=rule_name%>/new'" do
37
- RulesEngine::Rule::<%=rule_class%>.options[:new_partial].should == '/re_rule_definitions/<%=rule_name%>/new'
36
+ it "should have the new template of '/re_rules/<%=rule_name%>/new'" do
37
+ RulesEngine::Rule::<%=rule_class%>.options[:new_partial].should == '/re_rules/<%=rule_name%>/new'
38
38
  end
39
39
 
40
- it "should have the edit view partial template of '/re_rule_definitions/<%=rule_name%>/edit'" do
41
- RulesEngine::Rule::<%=rule_class%>.options[:edit_partial].should == '/re_rule_definitions/<%=rule_name%>/edit'
40
+ it "should have the edit view partial template of '/re_rules/<%=rule_name%>/edit'" do
41
+ RulesEngine::Rule::<%=rule_class%>.options[:edit_partial].should == '/re_rules/<%=rule_name%>/edit'
42
42
  end
43
43
  end
44
44
 
@@ -57,8 +57,8 @@ describe RulesEngine::Rule::<%=rule_class%> do
57
57
  @<%=rule_name%>.title.should == "Rule Title"
58
58
  end
59
59
 
60
- it "should set the words" do
61
- @<%=rule_name%>.words.should == ["word one", "word two"]
60
+ it "should set the match_words" do
61
+ @<%=rule_name%>.match_words.should == ["word one", "word two"]
62
62
  end
63
63
 
64
64
  it "should set the workflow_action" do
@@ -66,7 +66,7 @@ describe RulesEngine::Rule::<%=rule_class%> do
66
66
  end
67
67
 
68
68
  it "should set the workflow" do
69
- @<%=rule_name%>.workflow.should == "Other Workflow"
69
+ @<%=rule_name%>.workflow_code.should == "Other Workflow"
70
70
  end
71
71
  end
72
72
 
@@ -77,10 +77,10 @@ describe RulesEngine::Rule::<%=rule_class%> do
77
77
  @<%=rule_name%>.title.should be_nil
78
78
  end
79
79
 
80
- it "should set the words to nil" do
81
- @<%=rule_name%>.words.should_not be_nil
80
+ it "should set the match_words to nil" do
81
+ @<%=rule_name%>.match_words.should_not be_nil
82
82
  @<%=rule_name%>.data = nil
83
- @<%=rule_name%>.words.should be_nil
83
+ @<%=rule_name%>.match_words.should be_nil
84
84
  end
85
85
 
86
86
  it "should se the workflow action to 'continue'" do
@@ -90,23 +90,23 @@ describe RulesEngine::Rule::<%=rule_class%> do
90
90
  end
91
91
 
92
92
  it "should set the 'workflow' to nil" do
93
- @<%=rule_name%>.workflow.should_not be_nil
93
+ @<%=rule_name%>.workflow_code.should_not be_nil
94
94
  @<%=rule_name%>.data = nil
95
- @<%=rule_name%>.workflow.should be_nil
95
+ @<%=rule_name%>.workflow_code.should be_nil
96
96
  end
97
97
  end
98
98
  end
99
99
 
100
100
  describe "the summary" do
101
- it "should be singluar if there is one word" do
101
+ it "should be singluar if there is one match_word" do
102
102
  <%=rule_name%> = RulesEngine::Rule::<%=rule_class%>.new
103
- <%=rule_name%>.stub!(:words).and_return(["one"])
103
+ <%=rule_name%>.stub!(:match_words).and_return(["one"])
104
104
  <%=rule_name%>.summary.should == "Match the word one"
105
105
  end
106
106
 
107
- it "should be plural if there are multiple words" do
107
+ it "should be plural if there are multiple match_words" do
108
108
  <%=rule_name%> = RulesEngine::Rule::<%=rule_class%>.new
109
- <%=rule_name%>.stub!(:words).and_return(["one", "two", "three"])
109
+ <%=rule_name%>.stub!(:match_words).and_return(["one", "two", "three"])
110
110
  <%=rule_name%>.summary.should == "Match the words one, two, three"
111
111
  end
112
112
  end
@@ -115,9 +115,9 @@ describe RulesEngine::Rule::<%=rule_class%> do
115
115
  it "should be converted to a json string" do
116
116
  <%=rule_name%> = RulesEngine::Rule::<%=rule_class%>.new
117
117
  <%=rule_name%>.should_receive(:title).and_return("mock title")
118
- <%=rule_name%>.should_receive(:words).and_return(["one", "two"])
118
+ <%=rule_name%>.should_receive(:match_words).and_return(["one", "two"])
119
119
  <%=rule_name%>.should_receive(:workflow_action).and_return("workflow action")
120
- <%=rule_name%>.should_receive(:workflow).and_return("workflow")
120
+ <%=rule_name%>.should_receive(:workflow_code).and_return("workflow")
121
121
  <%=rule_name%>.data.should == '["mock title",["one","two"],"workflow action","workflow"]'
122
122
  end
123
123
  end
@@ -125,32 +125,33 @@ describe RulesEngine::Rule::<%=rule_class%> do
125
125
  describe "the expected_outcomes" do
126
126
  it "should be next" do
127
127
  <%=rule_name%> = RulesEngine::Rule::<%=rule_class%>.new
128
- <%=rule_name%>.should_receive(:workflow_action).and_return('next')
129
- <%=rule_name%>.expected_outcomes.should == [:outcome => RulesEngine::Rule::Outcome::NEXT]
128
+ <%=rule_name%>.stub!(:workflow_action).and_return('next')
129
+ <%=rule_name%>.expected_outcomes[0][:outcome].should == RulesEngine::Rule::Outcome::NEXT
130
130
  end
131
131
 
132
132
  it "should be stop success" do
133
133
  <%=rule_name%> = RulesEngine::Rule::<%=rule_class%>.new
134
- <%=rule_name%>.should_receive(:workflow_action).and_return('stop_success')
135
- <%=rule_name%>.expected_outcomes.should == [:outcome => RulesEngine::Rule::Outcome::STOP_SUCCESS]
134
+ <%=rule_name%>.stub!(:workflow_action).and_return('stop_success')
135
+ <%=rule_name%>.expected_outcomes[0][:outcome].should == RulesEngine::Rule::Outcome::STOP_SUCCESS
136
136
  end
137
137
 
138
138
  it "should be stop failure" do
139
139
  <%=rule_name%> = RulesEngine::Rule::<%=rule_class%>.new
140
- <%=rule_name%>.should_receive(:workflow_action).and_return('stop_failure')
141
- <%=rule_name%>.expected_outcomes.should == [:outcome => RulesEngine::Rule::Outcome::STOP_FAILURE]
140
+ <%=rule_name%>.stub!(:workflow_action).and_return('stop_failure')
141
+ <%=rule_name%>.expected_outcomes[0][:outcome].should == RulesEngine::Rule::Outcome::STOP_FAILURE
142
142
  end
143
143
 
144
144
  it "should be start workflow" do
145
145
  <%=rule_name%> = RulesEngine::Rule::<%=rule_class%>.new
146
- <%=rule_name%>.should_receive(:workflow_action).and_return('start_workflow')
147
- <%=rule_name%>.should_receive(:workflow).and_return('mock workflow')
148
- <%=rule_name%>.expected_outcomes.should == [:outcome => RulesEngine::Rule::Outcome::START_WORKFLOW, :workflow_code => "mock workflow"]
146
+ <%=rule_name%>.stub!(:workflow_action).and_return('start_workflow')
147
+ <%=rule_name%>.stub!(:workflow_code).and_return('workflow_code')
148
+ <%=rule_name%>.expected_outcomes[0][:outcome].should == RulesEngine::Rule::Outcome::START_WORKFLOW
149
+ <%=rule_name%>.expected_outcomes[0][:title].should == "Start Workflow : workflow_code"
149
150
  end
150
151
 
151
152
  it "should be next be default" do
152
153
  <%=rule_name%> = RulesEngine::Rule::<%=rule_class%>.new
153
- <%=rule_name%>.should_receive(:workflow_action).and_return('this is not valid')
154
+ <%=rule_name%>.stub!(:workflow_action).and_return('this is not valid')
154
155
  <%=rule_name%>.expected_outcomes.should == [:outcome => RulesEngine::Rule::Outcome::NEXT]
155
156
  end
156
157
 
@@ -185,38 +186,38 @@ describe RulesEngine::Rule::<%=rule_class%> do
185
186
  end
186
187
  end
187
188
 
188
- describe "setting the <%=rule_name%>_words" do
189
- it "should set the words" do
189
+ describe "setting the <%=rule_name%>_match_words" do
190
+ it "should set the match_words" do
190
191
  @<%=rule_name%>.attributes = valid_attributes
191
- @<%=rule_name%>.words.should == ['first word', 'second word']
192
+ @<%=rule_name%>.match_words.should == ['first word', 'second word']
192
193
  end
193
194
 
194
- it "should not be valid if the '<%=rule_name%>_words' attribute is missing" do
195
- @<%=rule_name%>.attributes = valid_attributes.except(:<%=rule_name%>_words)
195
+ it "should not be valid if the '<%=rule_name%>_match_words' attribute is missing" do
196
+ @<%=rule_name%>.attributes = valid_attributes.except(:<%=rule_name%>_match_words)
196
197
  @<%=rule_name%>.should_not be_valid
197
- @<%=rule_name%>.errors.should include(:<%=rule_name%>_words)
198
+ @<%=rule_name%>.errors.should include(:<%=rule_name%>_match_words)
198
199
  end
199
200
 
200
- it "should not be valid if the '<%=rule_name%>_words' is not a hash" do
201
- @<%=rule_name%>.attributes = valid_attributes.merge(:<%=rule_name%>_words => "<%=rule_name%> word")
201
+ it "should not be valid if the '<%=rule_name%>_match_words' is not a hash" do
202
+ @<%=rule_name%>.attributes = valid_attributes.merge(:<%=rule_name%>_match_words => "<%=rule_name%> word")
202
203
  @<%=rule_name%>.should_not be_valid
203
- @<%=rule_name%>.errors.should include(:<%=rule_name%>_words)
204
+ @<%=rule_name%>.errors.should include(:<%=rule_name%>_match_words)
204
205
  end
205
206
 
206
- it "should not be valid if the '<%=rule_name%>_words' is empty" do
207
- @<%=rule_name%>.attributes = valid_attributes.merge(:<%=rule_name%>_words => {})
207
+ it "should not be valid if the '<%=rule_name%>_match_words' is empty" do
208
+ @<%=rule_name%>.attributes = valid_attributes.merge(:<%=rule_name%>_match_words => {})
208
209
  @<%=rule_name%>.should_not be_valid
209
- @<%=rule_name%>.errors.should include(:<%=rule_name%>_words)
210
+ @<%=rule_name%>.errors.should include(:<%=rule_name%>_match_words)
210
211
  end
211
212
 
212
213
  it "should not include parameters that are marked for deletion" do
213
- @<%=rule_name%>.attributes = valid_attributes.merge(:<%=rule_name%>_words => {
214
+ @<%=rule_name%>.attributes = valid_attributes.merge(:<%=rule_name%>_match_words => {
214
215
  "1" => { "word" => 'first word', "_delete" => '1' },
215
216
  "2" => { "word" => 'second word' }
216
217
  }
217
218
  )
218
219
  @<%=rule_name%>.should be_valid
219
- @<%=rule_name%>.words.should == ['second word']
220
+ @<%=rule_name%>.match_words.should == ['second word']
220
221
  end
221
222
 
222
223
  end
@@ -234,29 +235,29 @@ describe RulesEngine::Rule::<%=rule_class%> do
234
235
  @<%=rule_name%>.workflow_action.should == 'continue'
235
236
  end
236
237
 
237
- it "should set the workflow" do
238
- @<%=rule_name%>.attributes = valid_attributes.merge(:<%=rule_name%>_workflow => "mock workflow")
238
+ it "should set the workflow_code" do
239
+ @<%=rule_name%>.attributes = valid_attributes.merge(:<%=rule_name%>_workflow_code => "mock workflow")
239
240
  @<%=rule_name%>.should be_valid
240
- @<%=rule_name%>.workflow.should == 'mock workflow'
241
+ @<%=rule_name%>.workflow_code.should == 'mock workflow'
241
242
  end
242
243
 
243
244
  describe "workflow action is start_workflow" do
244
245
  it "should be valid with valid '<%=rule_name%>_workflow'" do
245
- @<%=rule_name%>.attributes = valid_attributes.merge(:<%=rule_name%>_workflow_action => "start_workflow", :<%=rule_name%>_workflow => "mock workflow")
246
+ @<%=rule_name%>.attributes = valid_attributes.merge(:<%=rule_name%>_workflow_action => "start_workflow", :<%=rule_name%>_workflow_code => "mock workflow")
246
247
  @<%=rule_name%>.should be_valid
247
- @<%=rule_name%>.workflow.should == 'mock workflow'
248
+ @<%=rule_name%>.workflow_code.should == 'mock workflow'
248
249
  end
249
250
 
250
251
  it "should not be valid if the '<%=rule_name%>_workflow' attribute is missing" do
251
- @<%=rule_name%>.attributes = valid_attributes.merge(:<%=rule_name%>_workflow_action => "start_workflow").except(:<%=rule_name%>_workflow)
252
+ @<%=rule_name%>.attributes = valid_attributes.merge(:<%=rule_name%>_workflow_action => "start_workflow").except(:<%=rule_name%>_workflow_code)
252
253
  @<%=rule_name%>.should_not be_valid
253
- @<%=rule_name%>.errors.should include(:<%=rule_name%>_workflow)
254
+ @<%=rule_name%>.errors.should include(:<%=rule_name%>_workflow_code)
254
255
  end
255
256
 
256
257
  it "should not be valid if the '<%=rule_name%>_workflow' attribute is blank" do
257
- @<%=rule_name%>.attributes = valid_attributes.merge(:<%=rule_name%>_workflow_action => "start_workflow", :<%=rule_name%>_workflow => "")
258
+ @<%=rule_name%>.attributes = valid_attributes.merge(:<%=rule_name%>_workflow_action => "start_workflow", :<%=rule_name%>_workflow_code => "")
258
259
  @<%=rule_name%>.should_not be_valid
259
- @<%=rule_name%>.errors.should include(:<%=rule_name%>_workflow)
260
+ @<%=rule_name%>.errors.should include(:<%=rule_name%>_workflow_code)
260
261
  end
261
262
  end
262
263
  end
@@ -277,15 +278,15 @@ describe RulesEngine::Rule::<%=rule_class%> do
277
278
  describe "processing the rule" do
278
279
  before(:each) do
279
280
  @<%=rule_name%> = RulesEngine::Rule::<%=rule_class%>.new
280
- @<%=rule_name%>.stub!(:words).and_return(["found", "word"])
281
+ @<%=rule_name%>.stub!(:match_words).and_return(["found", "word"])
281
282
  end
282
283
 
283
284
  it "should do nothing if there is no tweet" do
284
- @<%=rule_name%>.process(1001, {}).outcome.should == RulesEngine::Rule::Outcome::NEXT
285
+ @<%=rule_name%>.process(1001, {:plan => "plan"}, {:data => "data"}).outcome.should == RulesEngine::Rule::Outcome::NEXT
285
286
  end
286
287
 
287
288
  it "should do nothing if there is no match" do
288
- @<%=rule_name%>.process(@job, {:tweet => "not here"}).outcome.should == RulesEngine::Rule::Outcome::NEXT
289
+ @<%=rule_name%>.process(@job, {:plan => "plan"}, {:tweet => "not here"}).outcome.should == RulesEngine::Rule::Outcome::NEXT
289
290
  end
290
291
 
291
292
  describe "a match found" do
@@ -294,7 +295,7 @@ describe RulesEngine::Rule::<%=rule_class%> do
294
295
  end
295
296
 
296
297
  it "should add the match to the data" do
297
- @<%=rule_name%>.process(@job, @matched_data)
298
+ @<%=rule_name%>.process(@job, {:plan => "plan"}, @matched_data)
298
299
  @matched_data[:tweet_match].should == "word"
299
300
  end
300
301
 
@@ -303,29 +304,29 @@ describe RulesEngine::Rule::<%=rule_class%> do
303
304
  process_id.should == 1001
304
305
  message.should =~ /word$/
305
306
  end
306
- @<%=rule_name%>.process(1001, @matched_data)
307
+ @<%=rule_name%>.process(1001, {:plan => "plan"}, @matched_data)
307
308
  end
308
309
 
309
310
  describe "matching workflow actions" do
310
311
  it "should return next" do
311
312
  @<%=rule_name%>.should_receive(:workflow_action).and_return('next')
312
- @<%=rule_name%>.process(1001, @matched_data).outcome.should == RulesEngine::Rule::Outcome::NEXT
313
+ @<%=rule_name%>.process(1001, {:plan => "plan"}, @matched_data).outcome.should == RulesEngine::Rule::Outcome::NEXT
313
314
  end
314
315
 
315
316
  it "should return stop_success" do
316
317
  @<%=rule_name%>.should_receive(:workflow_action).and_return('stop_success')
317
- @<%=rule_name%>.process(1001, @matched_data).outcome.should == RulesEngine::Rule::Outcome::STOP_SUCCESS
318
+ @<%=rule_name%>.process(1001, {:plan => "plan"}, @matched_data).outcome.should == RulesEngine::Rule::Outcome::STOP_SUCCESS
318
319
  end
319
320
 
320
321
  it "should return stop_failure" do
321
322
  @<%=rule_name%>.should_receive(:workflow_action).and_return('stop_failure')
322
- @<%=rule_name%>.process(1001, @matched_data).outcome.should == RulesEngine::Rule::Outcome::STOP_FAILURE
323
+ @<%=rule_name%>.process(1001, {:plan => "plan"}, @matched_data).outcome.should == RulesEngine::Rule::Outcome::STOP_FAILURE
323
324
  end
324
325
 
325
326
  it "should return start workflow with the workflow_code" do
326
327
  @<%=rule_name%>.should_receive(:workflow_action).and_return('start_workflow')
327
- @<%=rule_name%>.should_receive(:workflow).and_return('mock_workflow')
328
- <%=rule_name%>_outcome = @<%=rule_name%>.process(1001, @matched_data)
328
+ @<%=rule_name%>.should_receive(:workflow_code).and_return('mock_workflow')
329
+ <%=rule_name%>_outcome = @<%=rule_name%>.process(1001, {:plan => "plan"}, @matched_data)
329
330
  <%=rule_name%>_outcome.outcome.should == RulesEngine::Rule::Outcome::START_WORKFLOW
330
331
  <%=rule_name%>_outcome.workflow_code.should == "mock_workflow"
331
332
  end
@@ -362,9 +363,9 @@ describe ReWorkflowRulesController, :type => :controller do
362
363
  get :new, :rule_class_name => "RulesEngine::Rule::<%=rule_class%>"
363
364
  response.should have_tag("form#re_rule_new_form") do
364
365
  with_tag("input#<%=rule_name%>_title")
365
- with_tag("input#<%=rule_name%>_words_0_word")
366
+ with_tag("input#<%=rule_name%>_match_words_0_word")
366
367
  with_tag("select#<%=rule_name%>_workflow_action")
367
- with_tag("input#<%=rule_name%>_workflow")
368
+ with_tag("input#<%=rule_name%>_workflow_code")
368
369
  end
369
370
  end
370
371
  end
@@ -379,10 +380,10 @@ describe ReWorkflowRulesController, :type => :controller do
379
380
  get :edit, :re_workflow_id => @re_workflow.id, :re_rule_id => 1001, :rule_class_name => "RulesEngine::Rule::<%=rule_class%>"
380
381
  response.should have_tag("form#re_rule_edit_form") do
381
382
  with_tag("input#<%=rule_name%>_title", :value => 'Rule Title')
382
- with_tag("input#<%=rule_name%>_words_0_word", :value => 'word one')
383
- with_tag("input#<%=rule_name%>_words_1_word", :value => 'word two')
383
+ with_tag("input#<%=rule_name%>_match_words_0_word", :value => 'word one')
384
+ with_tag("input#<%=rule_name%>_match_words_1_word", :value => 'word two')
384
385
  with_tag("select#<%=rule_name%>_workflow_action", :value => 'start_workflow')
385
- with_tag("input#<%=rule_name%>_workflow", :value => 'Other Workflow')
386
+ with_tag("input#<%=rule_name%>_workflow_code", :value => 'Other Workflow')
386
387
  end
387
388
  end
388
389
  end