rules_engine 0.1.3 → 0.1.4

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.
Files changed (52) hide show
  1. data/VERSION +1 -1
  2. data/lib/rules_engine.rb +2 -2
  3. data/lib/rules_engine/discovery.rb +1 -1
  4. data/lib/rules_engine/process/runner.rb +3 -3
  5. data/lib/rules_engine/rule/definition.rb +85 -0
  6. data/lib/rules_engine/rule/outcome.rb +19 -0
  7. data/rails_generators/manifests/complex.rb +30 -0
  8. data/rails_generators/manifests/complex.yml +24 -0
  9. data/rails_generators/manifests/simple.rb +26 -0
  10. data/rails_generators/manifests/simple.yml +21 -0
  11. data/rails_generators/rules_engine_generator.rb +2 -2
  12. data/rails_generators/templates/app/models/re_rule.rb +4 -4
  13. data/rails_generators/templates/app/models/re_rule_expected_outcome.rb +1 -1
  14. data/rails_generators/templates/app/rules/complex.rb +133 -0
  15. data/rails_generators/templates/app/rules/simple.rb +83 -0
  16. data/rails_generators/templates/app/views/re_rule_definitions/{rule_complex → complex}/_edit.html.erb +0 -0
  17. data/rails_generators/templates/app/views/re_rule_definitions/{rule_complex → complex}/_help.html.erb +0 -0
  18. data/rails_generators/templates/app/views/re_rule_definitions/{rule_complex → complex}/_new.html.erb +0 -0
  19. data/rails_generators/templates/app/views/re_rule_definitions/{rule_complex → complex}/_script.html.erb +0 -0
  20. data/rails_generators/templates/app/views/re_rule_definitions/{rule_complex → complex}/_title.html.erb +0 -0
  21. data/rails_generators/templates/app/views/re_rule_definitions/{rule_complex → complex}/_word.html.erb +0 -0
  22. data/rails_generators/templates/app/views/re_rule_definitions/{rule_complex → complex}/_words.html.erb +0 -0
  23. data/rails_generators/templates/app/views/re_rule_definitions/{rule_complex → complex}/_workflow.html.erb +0 -0
  24. data/rails_generators/templates/app/views/re_rule_definitions/simple/_edit.html.erb +1 -0
  25. data/rails_generators/templates/app/views/re_rule_definitions/simple/_form.html.erb +16 -0
  26. data/rails_generators/templates/app/views/re_rule_definitions/simple/_help.html.erb +1 -0
  27. data/rails_generators/templates/app/views/re_rule_definitions/simple/_new.html.erb +1 -0
  28. data/rails_generators/templates/doc/README.rules_engine +1 -1
  29. data/rails_generators/templates/spec/lib/rules/{rule_complex_spec.rb → complex_spec.rb} +30 -30
  30. data/rails_generators/templates/spec/lib/rules/simple_spec.rb +161 -0
  31. data/rails_generators/templates/spec/models/re_rule_expected_outcome_spec.rb +3 -3
  32. data/rails_generators/templates/spec/models/re_rule_spec.rb +11 -11
  33. data/spec/railsenv/app/rules/mock_rule.rb +9 -10
  34. data/spec/railsenv/log/debug.log +1356 -0
  35. data/spec/railsenv/log/test.log +78 -0
  36. data/spec/rules_engine/discovery_spec.rb +17 -7
  37. data/spec/rules_engine/process/runner_spec.rb +8 -8
  38. data/spec/rules_engine/{rule_spec.rb → rule/definition_spec.rb} +17 -17
  39. metadata +27 -27
  40. data/lib/rules_engine/rule.rb +0 -84
  41. data/lib/rules_engine/rule_outcome.rb +0 -17
  42. data/rails_generators/manifests/rule_complex.rb +0 -30
  43. data/rails_generators/manifests/rule_complex.yml +0 -24
  44. data/rails_generators/manifests/rule_simple.rb +0 -26
  45. data/rails_generators/manifests/rule_simple.yml +0 -21
  46. data/rails_generators/templates/app/rules/rule_complex.rb +0 -130
  47. data/rails_generators/templates/app/rules/rule_simple.rb +0 -79
  48. data/rails_generators/templates/app/views/re_rule_definitions/rule_simple/_edit.html.erb +0 -1
  49. data/rails_generators/templates/app/views/re_rule_definitions/rule_simple/_form.html.erb +0 -16
  50. data/rails_generators/templates/app/views/re_rule_definitions/rule_simple/_help.html.erb +0 -1
  51. data/rails_generators/templates/app/views/re_rule_definitions/rule_simple/_new.html.erb +0 -1
  52. data/rails_generators/templates/spec/lib/rules/rule_simple_spec.rb +0 -161
@@ -1,17 +0,0 @@
1
- module RulesEngine
2
- class RuleOutcome
3
-
4
- def initialize(outcome, workflow_code = nil)
5
- @outcome = outcome
6
- @workflow_code = workflow_code
7
- end
8
-
9
- OUTCOME_NEXT = 0
10
- OUTCOME_STOP_SUCCESS = 1
11
- OUTCOME_STOP_FAILURE = 2
12
- OUTCOME_START_WORKFLOW = 3
13
-
14
- attr_accessor :outcome
15
- attr_accessor :workflow_code
16
- end
17
- end
@@ -1,30 +0,0 @@
1
- class RuleComplexManifest
2
- def self.populate_record(m, rule_name ,rule_class)
3
-
4
- %W(
5
- app/rules
6
- app/views/re_rule_definitions/#{rule_name}
7
- lib/tasks
8
- spec/lib/rules
9
- ).each do |dirname|
10
- m.directory dirname
11
- end
12
-
13
- %W(
14
- ).each do |filename|
15
- m.file filename, filename
16
- end
17
-
18
- m.template "app/rules/rule_complex.rb", "app/rules/#{rule_name}.rb"
19
- m.template "app/views/re_rule_definitions/rule_complex/_edit.html.erb", "app/views/re_rule_definitions/#{rule_name}/_edit.html.erb"
20
- m.template "app/views/re_rule_definitions/rule_complex/_help.html.erb", "app/views/re_rule_definitions/#{rule_name}/_help.html.erb"
21
- m.template "app/views/re_rule_definitions/rule_complex/_new.html.erb", "app/views/re_rule_definitions/#{rule_name}/_new.html.erb"
22
- m.template "app/views/re_rule_definitions/rule_complex/_script.html.erb", "app/views/re_rule_definitions/#{rule_name}/_script.html.erb"
23
- m.template "app/views/re_rule_definitions/rule_complex/_title.html.erb", "app/views/re_rule_definitions/#{rule_name}/_title.html.erb"
24
- m.template "app/views/re_rule_definitions/rule_complex/_word.html.erb", "app/views/re_rule_definitions/#{rule_name}/_word.html.erb"
25
- m.template "app/views/re_rule_definitions/rule_complex/_words.html.erb", "app/views/re_rule_definitions/#{rule_name}/_words.html.erb"
26
- m.template "app/views/re_rule_definitions/rule_complex/_workflow.html.erb", "app/views/re_rule_definitions/#{rule_name}/_workflow.html.erb"
27
- m.template "spec/lib/rules/rule_complex_spec.rb", "spec/lib/rules/#{rule_name}_spec.rb"
28
-
29
- end
30
- end
@@ -1,24 +0,0 @@
1
- directories :
2
- - app/rules
3
- - spec/lib/rules
4
- - lib/tasks
5
-
6
- templates :
7
- replacements :
8
- - rule_complex : rule_name
9
- - RuleComplex : rule_class
10
-
11
- directories :
12
- - app/views/re_rule_definitions/rule_complex
13
-
14
- files :
15
- - app/rules/rule_complex.rb
16
- - app/views/re_rule_definitions/rule_complex/_edit.html.erb
17
- - app/views/re_rule_definitions/rule_complex/_help.html.erb
18
- - app/views/re_rule_definitions/rule_complex/_workflow.html.erb
19
- - app/views/re_rule_definitions/rule_complex/_script.html.erb
20
- - app/views/re_rule_definitions/rule_complex/_title.html.erb
21
- - app/views/re_rule_definitions/rule_complex/_new.html.erb
22
- - app/views/re_rule_definitions/rule_complex/_word.html.erb
23
- - app/views/re_rule_definitions/rule_complex/_words.html.erb
24
- - spec/lib/rules/rule_complex_spec.rb
@@ -1,26 +0,0 @@
1
- class RuleSimpleManifest
2
- def self.populate_record(m, rule_name ,rule_class)
3
-
4
- %W(
5
- app/rules
6
- app/views/re_rule_definitions/#{rule_name}
7
- lib/tasks
8
- spec/lib/rules
9
- ).each do |dirname|
10
- m.directory dirname
11
- end
12
-
13
- %W(
14
- ).each do |filename|
15
- m.file filename, filename
16
- end
17
-
18
- m.template "app/rules/rule_simple.rb", "app/rules/#{rule_name}.rb"
19
- m.template "app/views/re_rule_definitions/rule_simple/_edit.html.erb", "app/views/re_rule_definitions/#{rule_name}/_edit.html.erb"
20
- m.template "app/views/re_rule_definitions/rule_simple/_form.html.erb", "app/views/re_rule_definitions/#{rule_name}/_form.html.erb"
21
- m.template "app/views/re_rule_definitions/rule_simple/_help.html.erb", "app/views/re_rule_definitions/#{rule_name}/_help.html.erb"
22
- m.template "app/views/re_rule_definitions/rule_simple/_new.html.erb", "app/views/re_rule_definitions/#{rule_name}/_new.html.erb"
23
- m.template "spec/lib/rules/rule_simple_spec.rb", "spec/lib/rules/#{rule_name}_spec.rb"
24
-
25
- end
26
- end
@@ -1,21 +0,0 @@
1
- directories :
2
- - app/rules
3
- - spec/lib/rules
4
- - lib/tasks
5
-
6
- templates :
7
- replacements :
8
- - rule_simple : rule_name
9
- - RuleSimple : rule_class
10
-
11
- directories :
12
- - app/views/re_rule_definitions/rule_simple
13
-
14
- files :
15
- - app/rules/rule_simple.rb
16
- - app/views/re_rule_definitions/rule_simple/_edit.html.erb
17
- - app/views/re_rule_definitions/rule_simple/_help.html.erb
18
- - app/views/re_rule_definitions/rule_simple/_new.html.erb
19
- - app/views/re_rule_definitions/rule_simple/_form.html.erb
20
- - spec/lib/rules/rule_simple_spec.rb
21
-
@@ -1,130 +0,0 @@
1
- class <%=rule_class%> < RulesEngine::Rule
2
-
3
- attr_reader :words
4
- attr_reader :workflow_action
5
- attr_reader :workflow
6
-
7
- ##################################################################
8
- # class options
9
- self.options =
10
- {
11
- :group => 'General',
12
- :display_name => '<%=rule_class%> Rule',
13
- :help_partial => '/re_rule_definitions/<%=rule_name%>/help',
14
- :new_partial => '/re_rule_definitions/<%=rule_name%>/new',
15
- :edit_partial => '/re_rule_definitions/<%=rule_name%>/edit'
16
- }
17
-
18
- ##################################################################
19
- # set the rule data
20
- def data= data
21
- if data.nil?
22
- @title = nil
23
- @words = nil
24
- @workflow_action = 'continue'
25
- @workflow = nil
26
- else
27
- @title, @words, @workflow_action, @workflow = ActiveSupport::JSON.decode(data)
28
- end
29
- end
30
-
31
- ##################################################################
32
- # get the rule attributes
33
- def title
34
- @title
35
- end
36
-
37
- def summary
38
- "Match the #{words.size == 1 ? 'word' : 'words'} #{words.join(', ')}"
39
- end
40
-
41
- def data
42
- [title, words, workflow_action, workflow].to_json
43
- end
44
-
45
- def expected_outcomes
46
- case workflow_action
47
- when 'next'
48
- [:outcome => RulesEngine::RuleOutcome::OUTCOME_NEXT]
49
- when 'stop_success'
50
- [:outcome => RulesEngine::RuleOutcome::OUTCOME_STOP_SUCCESS]
51
- when 'stop_failure'
52
- [:outcome => RulesEngine::RuleOutcome::OUTCOME_STOP_FAILURE]
53
- when 'start_workflow'
54
- [:outcome => RulesEngine::RuleOutcome::OUTCOME_START_WORKFLOW, :workflow_code => workflow]
55
- else
56
- [:outcome => RulesEngine::RuleOutcome::OUTCOME_NEXT]
57
- end
58
- end
59
-
60
- ##################################################################
61
- # set the rule attributes
62
- def attributes=(params)
63
- param_hash = params.symbolize_keys
64
-
65
- @title = param_hash[:<%=rule_name%>_title]
66
-
67
- @words = []
68
- return if param_hash[:<%=rule_name%>_words].nil?
69
- param_hash[:<%=rule_name%>_words].each do |key, values|
70
- if values.is_a?(Hash)
71
- word_hash = values.symbolize_keys
72
- @words << word_hash[:word].downcase unless word_hash[:word].blank? || word_hash[:_delete] == '1'
73
- end
74
- end
75
-
76
- @workflow_action = param_hash[:<%=rule_name%>_workflow_action] || 'continue'
77
- @workflow = param_hash[:<%=rule_name%>_workflow] || ''
78
- end
79
-
80
- ##################################################################
81
- # validation and errors
82
- def valid?
83
- @errors = {}
84
- @errors[:<%=rule_name%>_words] = "At least one word must be defined" if words.nil? || words.empty?
85
- @errors[:<%=rule_name%>_title] = "Title required" if title.blank?
86
- @errors[:<%=rule_name%>_workflow] = "Workflow required" if workflow_action == 'start_workflow' && workflow.blank?
87
- return @errors.empty?
88
- end
89
-
90
- ##################################################################
91
- # callbacks when the rule is added and removed from a workflow
92
- def after_add_to_workflow(workflow_code)
93
- end
94
-
95
- def before_remove_from_workflow(workflow_code)
96
- end
97
-
98
- ##################################################################
99
- # execute the rule
100
- # if a match is found procees to the expected outcome
101
- # it gets the data parameter :tweet
102
- # it sets the data parameter :match
103
- def process(process_id, data)
104
- tweet = data[:tweet] || data["tweet"]
105
- if tweet.blank?
106
- return RulesEngine::RuleOutcome.new(RulesEngine::RuleOutcome::OUTCOME_NEXT)
107
- end
108
-
109
- words.each do |word|
110
- if /#{word}/i =~ tweet
111
- RulesEngine::Process.auditor.audit(process_id, "#{title} Found #{word}", RulesEngine::Process::AUDIT_INFO)
112
- data[:match] = word
113
-
114
- case workflow_action
115
- when 'stop_success'
116
- return RulesEngine::RuleOutcome.new(RulesEngine::RuleOutcome::OUTCOME_STOP_SUCCESS)
117
- when 'stop_failure'
118
- return RulesEngine::RuleOutcome.new(RulesEngine::RuleOutcome::OUTCOME_STOP_FAILURE)
119
- when 'start_workflow'
120
- return RulesEngine::RuleOutcome.new(RulesEngine::RuleOutcome::OUTCOME_START_WORKFLOW, workflow)
121
- else #'next'
122
- return RulesEngine::RuleOutcome.new(RulesEngine::RuleOutcome::OUTCOME_NEXT)
123
- end
124
- end
125
- end
126
-
127
- RulesEngine::RuleOutcome.new(RulesEngine::RuleOutcome::OUTCOME_NEXT)
128
- end
129
-
130
- end
@@ -1,79 +0,0 @@
1
- class <%=rule_class%> < RulesEngine::Rule
2
-
3
- attr_reader :description
4
- ##################################################################
5
- # class options
6
- self.options =
7
- {
8
- :group => 'General',
9
- :display_name => '<%=rule_class%> Rule',
10
- :help_partial => '/re_rule_definitions/<%=rule_name%>/help',
11
- :new_partial => '/re_rule_definitions/<%=rule_name%>/new',
12
- :edit_partial => '/re_rule_definitions/<%=rule_name%>/edit'
13
- }
14
-
15
- ##################################################################
16
- # set the rule data
17
- def data= data
18
- if data.nil?
19
- @title = nil
20
- @description = nil
21
- else
22
- @title, @description = ActiveSupport::JSON.decode(data)
23
- end
24
- end
25
-
26
- ##################################################################
27
- # get the rule attributes
28
- def title
29
- @title
30
- end
31
-
32
- def summary
33
- description || "Does Nothing"
34
- end
35
-
36
- def data
37
- [title, description].to_json
38
- end
39
-
40
- def expected_outcomes
41
- [:outcome => RulesEngine::RuleOutcome::OUTCOME_NEXT]
42
- end
43
-
44
- ##################################################################
45
- # set the rule attributes
46
- def attributes=(params)
47
- param_hash = params.symbolize_keys
48
-
49
- @title = param_hash[:<%=rule_name%>_title]
50
- @description = param_hash[:<%=rule_name%>_description]
51
- end
52
-
53
- ##################################################################
54
- # validation and errors
55
- def valid?
56
- @errors = {}
57
- @errors[:<%=rule_name%>_title] = "Title required" if title.blank?
58
- return @errors.empty?
59
- end
60
-
61
- ##################################################################
62
- # callbacks when the rule is added and removed from a workflow
63
- def after_add_to_workflow(workflow_code)
64
- end
65
-
66
- def before_remove_from_workflow(workflow_code)
67
- end
68
-
69
- ##################################################################
70
- # execute the rule
71
- # this rule does nothing
72
- def process(process_id, data)
73
- RulesEngine::Process.auditor.audit(process_id, "Inside Rule #{title}", RulesEngine::Process::AUDIT_INFO)
74
- # RulesEngine::RuleOutcome.new(RulesEngine::RuleOutcome::OUTCOME_STOP_SUCCESS)
75
- # RulesEngine::RuleOutcome.new(RulesEngine::RuleOutcome::OUTCOME_STOP_FAILURE)
76
- # RulesEngine::RuleOutcome.new(RulesEngine::RuleOutcome::OUTCOME_START_WORKFLOW, 'next_workflow')
77
- RulesEngine::RuleOutcome.new(RulesEngine::RuleOutcome::OUTCOME_NEXT)
78
- end
79
- end
@@ -1 +0,0 @@
1
- <%%= render '/re_rule_definitions/<%=rule_name%>/form' %>
@@ -1,16 +0,0 @@
1
- <%%= re_text_field "<%=rule_class%> Title",
2
- "<%=rule_name%>_title",
3
- params[:<%=rule_name%>_title] || @re_rule.rule.title,
4
- :size => 30,
5
- :required => true,
6
- :error => @re_rule.rule.errors[:<%=rule_name%>_title],
7
- :span => '4x13' %>
8
-
9
-
10
- <%%= re_text_field "Description",
11
- "<%=rule_name%>_description",
12
- params[:<%=rule_name%>_description] || @re_rule.rule.description,
13
- :size => 40,
14
- :required => false,
15
- :error => @re_rule.rule.errors[:<%=rule_name%>_description],
16
- :span => '4x13' %>
@@ -1 +0,0 @@
1
- <p> <%=rule_class%> : This rule does nothing </p>
@@ -1 +0,0 @@
1
- <%%= render '/re_rule_definitions/<%=rule_name%>/form' %>
@@ -1,161 +0,0 @@
1
- require File.dirname(__FILE__) + '/../../spec_helper'
2
-
3
- describe <%=rule_class%> do
4
-
5
- def valid_attributes
6
- {
7
- :<%=rule_name%>_title => 'Valid Title'
8
- # :<%=rule_name%>_description => 'Valid Description'
9
- }
10
- end
11
-
12
- def valid_json_data
13
- '["Valid Title", "Valid Description"]'
14
- end
15
-
16
- it "should be discoverable" do
17
- RulesEngine::Discovery.rule_class("<%=rule_class%>").should == <%=rule_class%>
18
- end
19
-
20
- describe "the expected class options" do
21
- it "should be in the 'General' group" do
22
- <%=rule_class%>.options[:group].should == "General"
23
- end
24
-
25
- it "should have the diplay name of '<%=rule_class%> Rule'" do
26
- <%=rule_class%>.options[:display_name].should == "<%=rule_class%> Rule"
27
- end
28
-
29
- it "should have the help template of '/re_rule_definitions/<%=rule_name%>/help'" do
30
- <%=rule_class%>.options[:help_partial].should == '/re_rule_definitions/<%=rule_name%>/help'
31
- end
32
-
33
- it "should have the new template of '/re_rule_definitions/<%=rule_name%>/new'" do
34
- <%=rule_class%>.options[:new_partial].should == '/re_rule_definitions/<%=rule_name%>/new'
35
- end
36
-
37
- it "should have the edit view partial template of '/re_rule_definitions/<%=rule_name%>/edit'" do
38
- <%=rule_class%>.options[:edit_partial].should == '/re_rule_definitions/<%=rule_name%>/edit'
39
- end
40
- end
41
-
42
- describe "setting the rule data" do
43
- before(:each) do
44
- @<%=rule_name%> = <%=rule_class%>.new
45
- @<%=rule_name%>.data = valid_json_data
46
- end
47
-
48
- describe "the data is valid" do
49
- it "should be valid" do
50
- @<%=rule_name%>.should be_valid
51
- end
52
-
53
- it "should set the title" do
54
- @<%=rule_name%>.title.should == "Valid Title"
55
- end
56
-
57
- it "should set the description" do
58
- @<%=rule_name%>.description.should == "Valid Description"
59
- end
60
- end
61
-
62
- describe "the data is nil" do
63
- it "should set the title to nil" do
64
- @<%=rule_name%>.title.should_not be_nil
65
- @<%=rule_name%>.data = nil
66
- @<%=rule_name%>.title.should be_nil
67
- end
68
-
69
- it "should set the description to nil" do
70
- @<%=rule_name%>.title.should_not be_nil
71
- @<%=rule_name%>.data = nil
72
- @<%=rule_name%>.description.should be_nil
73
- end
74
- end
75
- end
76
-
77
- describe "the summary" do
78
- describe "description set" do
79
- it "should be the rule description" do
80
- <%=rule_name%> = <%=rule_class%>.new
81
- <%=rule_name%>.should_receive(:description).and_return("mock description")
82
- <%=rule_name%>.summary.should == "mock description"
83
- end
84
- end
85
- describe "description not set" do
86
- it "should be Does Nothing" do
87
- <%=rule_name%> = <%=rule_class%>.new
88
- <%=rule_name%>.should_receive(:description).and_return(nil)
89
- <%=rule_name%>.summary.should == "Does Nothing"
90
- end
91
- end
92
- end
93
-
94
- describe "the data" do
95
- it "should be converted to a json string" do
96
- <%=rule_name%> = <%=rule_class%>.new
97
- <%=rule_name%>.should_receive(:title).and_return("mock title")
98
- <%=rule_name%>.should_receive(:description).and_return("mock description")
99
- <%=rule_name%>.data.should == '["mock title","mock description"]'
100
- end
101
- end
102
-
103
- describe "the expected_outcomes" do
104
- it "should be outcome next" do
105
- <%=rule_name%> = <%=rule_class%>.new
106
- <%=rule_name%>.expected_outcomes.should == [:outcome => RulesEngine::RuleOutcome::OUTCOME_NEXT]
107
- end
108
- end
109
-
110
- describe "setting the rule attributes" do
111
- before(:each) do
112
- @<%=rule_name%> = <%=rule_class%>.new
113
- end
114
-
115
- it "should be valid with valid attributes" do
116
- @<%=rule_name%>.attributes = valid_attributes
117
- @<%=rule_name%>.should be_valid
118
- end
119
-
120
- describe "setting the <%=rule_name%>_title" do
121
- it "should set the title" do
122
- @<%=rule_name%>.attributes = valid_attributes
123
- @<%=rule_name%>.title.should == 'Valid Title'
124
- end
125
-
126
- it "should not be valid if the '<%=rule_name%>_title' attribute is missing" do
127
- @<%=rule_name%>.attributes = valid_attributes.except(:<%=rule_name%>_title)
128
- @<%=rule_name%>.should_not be_valid
129
- @<%=rule_name%>.errors.should include(:<%=rule_name%>_title)
130
- end
131
-
132
- it "should not be valid if the '<%=rule_name%>_title' attribute is blank" do
133
- @<%=rule_name%>.attributes = valid_attributes.merge(:<%=rule_name%>_title => "")
134
- @<%=rule_name%>.should_not be_valid
135
- @<%=rule_name%>.errors.should include(:<%=rule_name%>_title)
136
- end
137
- end
138
-
139
- describe "setting the <%=rule_name%>_description" do
140
- it "should set the description" do
141
- @<%=rule_name%>.attributes = valid_attributes.merge(:<%=rule_name%>_description => 'Valid Description')
142
- @<%=rule_name%>.description.should == 'Valid Description'
143
- end
144
- end
145
- end
146
-
147
- describe "after a rule is created" do
148
- # xit "There is nothing to do here"
149
- end
150
-
151
- describe "after a rule is created" do
152
- # xit "There is nothing to do here"
153
- end
154
-
155
- describe "processing the rule" do
156
- it "should do nothing" do
157
- @<%=rule_name%> = <%=rule_class%>.new
158
- @<%=rule_name%>.process(1001, {}).outcome.should == RulesEngine::RuleOutcome::OUTCOME_NEXT
159
- end
160
- end
161
- end