rules_engine 0.1.1 → 0.1.3
Sign up to get free protection for your applications and to get access to all the features.
- data/LICENSE +0 -0
- data/README.textile +12 -12
- data/VERSION +1 -1
- data/lib/rules_engine.rb +4 -18
- data/lib/rules_engine/cache.rb +1 -1
- data/lib/rules_engine/discovery.rb +14 -5
- data/lib/rules_engine/process/auditor.rb +62 -0
- data/lib/rules_engine/process/auditor/db_auditor.rb +48 -0
- data/lib/rules_engine/process/runner.rb +147 -0
- data/lib/rules_engine/process/runner/db_runner.rb +78 -0
- data/lib/rules_engine/publish/publisher.rb +53 -0
- data/lib/rules_engine/publish/publisher/db_publisher.rb +93 -0
- data/lib/rules_engine/rule.rb +6 -6
- data/lib/rules_engine/rule_outcome.rb +4 -4
- data/lib/rules_engine_view.rb +14 -0
- data/lib/rules_engine_view/boxes.rb +0 -0
- data/lib/rules_engine_view/buttons.rb +0 -0
- data/lib/rules_engine_view/defer.rb +19 -3
- data/lib/rules_engine_view/form_fields.rb +0 -0
- data/lib/rules_engine_view/model_loader.rb +6 -2
- data/lib/rules_engine_view/navigate.rb +1 -3
- data/rails_generators/manifests/rule_complex.rb +30 -0
- data/rails_generators/manifests/rule_complex.yml +24 -0
- data/rails_generators/manifests/rule_simple.rb +26 -0
- data/rails_generators/manifests/rule_simple.yml +21 -0
- data/rails_generators/manifests/rules_engine.rb +244 -276
- data/rails_generators/manifests/rules_engine.yml +37 -59
- data/rails_generators/rules_engine_generator.rb +16 -32
- data/rails_generators/templates/app/controllers/re_plan_workflow_rules_controller.rb +142 -0
- data/rails_generators/templates/app/controllers/re_plan_workflows_controller.rb +139 -0
- data/rails_generators/templates/app/controllers/re_plans_controller.rb +131 -0
- data/rails_generators/templates/app/controllers/re_processes_controller.rb +15 -0
- data/rails_generators/templates/app/controllers/re_publications_controller.rb +15 -0
- data/rails_generators/templates/app/controllers/{re_pipeline_rules_controller.rb → re_workflow_rules_controller.rb} +12 -12
- data/rails_generators/templates/app/controllers/re_workflows_controller.rb +96 -0
- data/rails_generators/templates/app/helpers/rules_engine_helper.rb +42 -0
- data/rails_generators/templates/app/models/re_plan.rb +126 -0
- data/rails_generators/templates/app/models/re_plan_workflow.rb +10 -0
- data/rails_generators/templates/app/models/re_rule.rb +47 -60
- data/rails_generators/templates/app/models/re_rule_expected_outcome.rb +3 -21
- data/rails_generators/templates/app/models/re_workflow.rb +61 -0
- data/rails_generators/templates/app/rules/{complex_rule.rb → rule_complex.rb} +30 -30
- data/rails_generators/templates/app/rules/{simple_rule.rb → rule_simple.rb} +13 -14
- data/rails_generators/templates/app/views/layouts/rules_engine.html.erb +6 -9
- data/rails_generators/templates/app/views/re_plan_workflow_rules/edit.html.erb +13 -0
- data/rails_generators/templates/app/views/re_plan_workflow_rules/edit.js.erb +9 -0
- data/rails_generators/templates/app/views/re_plan_workflow_rules/error.html.erb +12 -0
- data/rails_generators/templates/app/views/re_plan_workflow_rules/error.js.erb +7 -0
- data/rails_generators/templates/app/views/re_plan_workflow_rules/help.html.erb +12 -0
- data/rails_generators/templates/app/views/re_plan_workflow_rules/help.js.erb +4 -0
- data/rails_generators/templates/app/views/re_plan_workflow_rules/new.html.erb +16 -0
- data/rails_generators/templates/app/views/re_plan_workflow_rules/new.js.erb +10 -0
- data/rails_generators/templates/app/views/re_plan_workflow_rules/update.js.erb +19 -0
- data/rails_generators/templates/app/views/re_plan_workflows/change.html.erb +78 -0
- data/rails_generators/templates/app/views/re_plan_workflows/edit.html.erb +12 -0
- data/rails_generators/templates/app/views/re_plan_workflows/edit.js.erb +8 -0
- data/rails_generators/templates/app/views/re_plan_workflows/new.html.erb +12 -0
- data/rails_generators/templates/app/views/re_plan_workflows/new.js.erb +5 -0
- data/rails_generators/templates/app/views/re_plan_workflows/show.html.erb +70 -0
- data/rails_generators/templates/app/views/re_plan_workflows/update.js.erb +19 -0
- data/rails_generators/templates/app/views/re_plans/_change.html.erb +39 -0
- data/rails_generators/templates/app/views/re_plans/_edit.html.erb +20 -0
- data/rails_generators/templates/app/views/re_plans/_empty.html.erb +12 -0
- data/rails_generators/templates/app/views/re_plans/_index.html.erb +42 -0
- data/rails_generators/templates/app/views/re_plans/_menu.html.erb +26 -0
- data/rails_generators/templates/app/views/re_plans/_new.html.erb +18 -0
- data/rails_generators/templates/app/views/re_plans/_preview.html.erb +47 -0
- data/rails_generators/templates/app/views/re_plans/_show.html.erb +27 -0
- data/rails_generators/templates/app/views/re_plans/_workflow_change.html.erb +44 -0
- data/rails_generators/templates/app/views/re_plans/_workflow_preview.html.erb +24 -0
- data/rails_generators/templates/app/views/re_plans/_workflow_show.html.erb +32 -0
- data/rails_generators/templates/app/views/re_plans/change.html.erb +118 -0
- data/rails_generators/templates/app/views/re_plans/create.js.erb +9 -0
- data/rails_generators/templates/app/views/re_plans/edit.html.erb +11 -0
- data/rails_generators/templates/app/views/re_plans/edit.js.erb +8 -0
- data/rails_generators/templates/app/views/re_plans/index.html.erb +33 -0
- data/rails_generators/templates/app/views/re_plans/index.js.erb +18 -0
- data/rails_generators/templates/app/views/re_plans/new.html.erb +9 -0
- data/rails_generators/templates/app/views/re_plans/new.js.erb +5 -0
- data/rails_generators/templates/app/views/re_plans/preview.html.erb +6 -0
- data/rails_generators/templates/app/views/re_plans/preview.js.erb +4 -0
- data/rails_generators/templates/app/views/re_plans/re_process.html.erb +12 -0
- data/rails_generators/templates/app/views/re_plans/re_process.js.erb +4 -0
- data/rails_generators/templates/app/views/re_plans/show.html.erb +56 -0
- data/rails_generators/templates/app/views/{re_pipelines → re_plans}/template.html.erb +1 -1
- data/rails_generators/templates/app/views/re_plans/update.js.erb +15 -0
- data/rails_generators/templates/app/views/re_processes/_index_prepare.html.erb +12 -0
- data/rails_generators/templates/app/views/re_processes/_index_update.html.erb +20 -0
- data/rails_generators/templates/app/views/re_processes/_show.html.erb +30 -0
- data/rails_generators/templates/app/views/re_processes/index.html.erb +11 -0
- data/rails_generators/templates/app/views/re_processes/index.js.erb +4 -0
- data/rails_generators/templates/app/views/re_processes/show.html.erb +8 -0
- data/rails_generators/templates/app/views/re_processes/show.js.erb +4 -0
- data/rails_generators/templates/app/views/re_publications/_show_prepare.html.erb +14 -0
- data/rails_generators/templates/app/views/re_publications/_show_update.html.erb +16 -0
- data/rails_generators/templates/app/views/re_publications/show.html.erb +11 -0
- data/rails_generators/templates/app/views/re_publications/show.js.erb +4 -0
- data/rails_generators/templates/app/views/re_rule_definitions/rule_complex/_edit.html.erb +7 -0
- data/rails_generators/templates/app/views/re_rule_definitions/{complex_rule → rule_complex}/_help.html.erb +1 -1
- data/rails_generators/templates/app/views/re_rule_definitions/rule_complex/_new.html.erb +7 -0
- data/rails_generators/templates/app/views/re_rule_definitions/rule_complex/_script.html.erb +25 -0
- data/rails_generators/templates/app/views/re_rule_definitions/{complex_rule → rule_complex}/_title.html.erb +0 -0
- data/rails_generators/templates/app/views/re_rule_definitions/{complex_rule → rule_complex}/_word.html.erb +0 -0
- data/rails_generators/templates/app/views/re_rule_definitions/{complex_rule → rule_complex}/_words.html.erb +2 -2
- data/rails_generators/templates/app/views/re_rule_definitions/{complex_rule/_pipeline.html.erb → rule_complex/_workflow.html.erb} +5 -5
- data/rails_generators/templates/app/views/re_rule_definitions/rule_simple/_edit.html.erb +1 -0
- data/rails_generators/templates/app/views/re_rule_definitions/{simple_rule → rule_simple}/_form.html.erb +1 -1
- data/rails_generators/templates/app/views/re_rule_definitions/{simple_rule → rule_simple}/_help.html.erb +0 -0
- data/rails_generators/templates/app/views/re_rule_definitions/rule_simple/_new.html.erb +1 -0
- data/rails_generators/templates/app/views/re_workflow_rules/_edit.html.erb +19 -0
- data/rails_generators/templates/app/views/{re_pipeline_rules → re_workflow_rules}/_error.html.erb +0 -0
- data/rails_generators/templates/app/views/re_workflow_rules/_help.html.erb +15 -0
- data/rails_generators/templates/app/views/{re_pipeline_rules → re_workflow_rules}/_new.html.erb +6 -3
- data/rails_generators/templates/app/views/re_workflow_rules/edit.html.erb +13 -0
- data/rails_generators/templates/app/views/re_workflow_rules/edit.js.erb +9 -0
- data/rails_generators/templates/app/views/re_workflow_rules/error.html.erb +12 -0
- data/rails_generators/templates/app/views/re_workflow_rules/error.js.erb +7 -0
- data/rails_generators/templates/app/views/re_workflow_rules/help.html.erb +12 -0
- data/rails_generators/templates/app/views/re_workflow_rules/help.js.erb +4 -0
- data/rails_generators/templates/app/views/re_workflow_rules/new.html.erb +15 -0
- data/rails_generators/templates/app/views/{re_pipeline_rules → re_workflow_rules}/new.js.erb +1 -1
- data/rails_generators/templates/app/views/re_workflow_rules/update.js.erb +17 -0
- data/rails_generators/templates/app/views/re_workflows/_add_prepare.html.erb +15 -0
- data/rails_generators/templates/app/views/re_workflows/_add_update.html.erb +21 -0
- data/rails_generators/templates/app/views/re_workflows/_edit.html.erb +23 -0
- data/rails_generators/templates/app/views/re_workflows/_empty.html.erb +12 -0
- data/rails_generators/templates/app/views/re_workflows/_index.html.erb +41 -0
- data/rails_generators/templates/app/views/re_workflows/_menu.html.erb +92 -0
- data/rails_generators/templates/app/views/re_workflows/_new.html.erb +21 -0
- data/rails_generators/templates/app/views/re_workflows/_plan_prepare.html.erb +14 -0
- data/rails_generators/templates/app/views/re_workflows/_plan_update.html.erb +21 -0
- data/rails_generators/templates/app/views/re_workflows/_preview.html.erb +30 -0
- data/rails_generators/templates/app/views/re_workflows/_rule_change.html.erb +65 -0
- data/rails_generators/templates/app/views/re_workflows/_rule_empty.html.erb +13 -0
- data/rails_generators/templates/app/views/{re_pipeline_rules/_index.html.erb → re_workflows/_rule_preview.html.erb} +20 -11
- data/rails_generators/templates/app/views/re_workflows/_rule_show.html.erb +46 -0
- data/rails_generators/templates/app/views/re_workflows/_show.html.erb +24 -0
- data/rails_generators/templates/app/views/re_workflows/add.html.erb +11 -0
- data/rails_generators/templates/app/views/re_workflows/add.js.erb +6 -0
- data/rails_generators/templates/app/views/re_workflows/change.html.erb +53 -0
- data/rails_generators/templates/app/views/re_workflows/create.js.erb +9 -0
- data/rails_generators/templates/app/views/re_workflows/edit.html.erb +11 -0
- data/rails_generators/templates/app/views/re_workflows/edit.js.erb +8 -0
- data/rails_generators/templates/app/views/re_workflows/index.html.erb +34 -0
- data/rails_generators/templates/app/views/re_workflows/new.html.erb +9 -0
- data/rails_generators/templates/app/views/re_workflows/new.js.erb +5 -0
- data/rails_generators/templates/app/views/re_workflows/plan.html.erb +12 -0
- data/rails_generators/templates/app/views/re_workflows/plan.js.erb +4 -0
- data/rails_generators/templates/app/views/re_workflows/preview.html.erb +5 -0
- data/rails_generators/templates/app/views/re_workflows/preview.js.erb +4 -0
- data/rails_generators/templates/app/views/re_workflows/show.html.erb +47 -0
- data/rails_generators/templates/app/views/re_workflows/update.js.erb +17 -0
- data/rails_generators/templates/config/initializers/rules_engine.rb +9 -0
- data/rails_generators/templates/db/migrate/20100308225008_create_rules_engine.rb +113 -0
- data/rails_generators/templates/doc/README.rules_engine +113 -98
- data/rails_generators/templates/lib/tasks/rules_engine.rake +29 -10
- data/rails_generators/templates/public/javascripts/rules_engine/re_plan_change.js +85 -0
- data/rails_generators/templates/public/javascripts/rules_engine/re_plan_new.js +29 -0
- data/rails_generators/templates/public/javascripts/rules_engine/re_plan_preview.js +18 -0
- data/rails_generators/templates/public/javascripts/rules_engine/re_process_index.js +43 -0
- data/rails_generators/templates/public/javascripts/rules_engine/re_process_show.js +18 -0
- data/rails_generators/templates/public/javascripts/rules_engine/re_publication_show.js +39 -0
- data/rails_generators/templates/public/javascripts/{re_view.js → rules_engine/re_view.js} +19 -3
- data/rails_generators/templates/public/javascripts/rules_engine/re_workflow_add.js +124 -0
- data/rails_generators/templates/public/javascripts/rules_engine/re_workflow_change.js +185 -0
- data/rails_generators/templates/public/javascripts/rules_engine/re_workflow_new.js +29 -0
- data/rails_generators/templates/public/javascripts/rules_engine/re_workflow_plan.js +38 -0
- data/rails_generators/templates/public/javascripts/rules_engine/re_workflow_preview.js +18 -0
- data/rails_generators/templates/public/stylesheets/{re_view_box → rules_engine/images/re_view_box}/shadowbox.png +0 -0
- data/rails_generators/templates/public/stylesheets/{re_view_box → rules_engine/images/re_view_box}/whitebox.jpg +0 -0
- data/rails_generators/templates/public/stylesheets/{re_view_button → rules_engine/images/re_view_button}/checked-off.gif +0 -0
- data/rails_generators/templates/public/stylesheets/{re_view_button → rules_engine/images/re_view_button}/checked-on.gif +0 -0
- data/rails_generators/templates/public/stylesheets/{re_view_button → rules_engine/images/re_view_button}/icon-add.png +0 -0
- data/rails_generators/templates/public/stylesheets/{re_view_button → rules_engine/images/re_view_button}/icon-delete.png +0 -0
- data/rails_generators/templates/public/stylesheets/{re_view_button → rules_engine/images/re_view_button}/oval-blue-left.gif +0 -0
- data/rails_generators/templates/public/stylesheets/{re_view_button → rules_engine/images/re_view_button}/oval-blue-right.gif +0 -0
- data/rails_generators/templates/public/stylesheets/{re_view_button → rules_engine/images/re_view_button}/oval-gray-left.gif +0 -0
- data/rails_generators/templates/public/stylesheets/{re_view_button → rules_engine/images/re_view_button}/oval-gray-right.gif +0 -0
- data/rails_generators/templates/public/stylesheets/{re_view_button → rules_engine/images/re_view_button}/oval-green-left.gif +0 -0
- data/rails_generators/templates/public/stylesheets/{re_view_button → rules_engine/images/re_view_button}/oval-green-right.gif +0 -0
- data/rails_generators/templates/public/stylesheets/{re_view_button → rules_engine/images/re_view_button}/oval-orange-left.gif +0 -0
- data/rails_generators/templates/public/stylesheets/{re_view_button → rules_engine/images/re_view_button}/oval-orange-right.gif +0 -0
- data/rails_generators/templates/public/stylesheets/{re_view_button → rules_engine/images/re_view_button}/oval-red-left.gif +0 -0
- data/rails_generators/templates/public/stylesheets/{re_view_button → rules_engine/images/re_view_button}/oval-red-right.gif +0 -0
- data/rails_generators/templates/public/stylesheets/{re_view_error → rules_engine/images/re_view_error}/re-alert-close.png +0 -0
- data/rails_generators/templates/public/stylesheets/{re_view_navigate → rules_engine/images/re_view_navigate}/breadcrumb.png +0 -0
- data/rails_generators/templates/public/stylesheets/rules_engine/{re_job/next-disabled-14.png → images/rules_engine/re_common/list-next-disabled-14.png} +0 -0
- data/rails_generators/templates/public/stylesheets/rules_engine/{re_job/next-enabled-14.png → images/rules_engine/re_common/list-next-enabled-14.png} +0 -0
- data/rails_generators/templates/public/stylesheets/rules_engine/{re_job/prev-disabled-14.png → images/rules_engine/re_common/list-prev-disabled-14.png} +0 -0
- data/rails_generators/templates/public/stylesheets/rules_engine/{re_job/prev-enabled-14.png → images/rules_engine/re_common/list-prev-enabled-14.png} +0 -0
- data/rails_generators/templates/public/stylesheets/rules_engine/{re_job/loadingAnimation.gif → images/rules_engine/re_common/loading.gif} +0 -0
- data/rails_generators/templates/public/stylesheets/rules_engine/{re_pipeline/alert-18.png → images/rules_engine/re_common/status-changed-18.png} +0 -0
- data/rails_generators/templates/public/stylesheets/rules_engine/{re_pipeline/alert-25.png → images/rules_engine/re_common/status-changed-25.png} +0 -0
- data/rails_generators/templates/public/stylesheets/rules_engine/{re_job/info-18.png → images/rules_engine/re_common/status-draft-18.png} +0 -0
- data/rails_generators/templates/public/stylesheets/rules_engine/{re_job/info-25.png → images/rules_engine/re_common/status-draft-25.png} +0 -0
- data/rails_generators/templates/public/stylesheets/rules_engine/{re_job/error-14.png → images/rules_engine/re_common/status-error-14.png} +0 -0
- data/rails_generators/templates/public/stylesheets/rules_engine/{re_job/info-14.png → images/rules_engine/re_common/status-info-14.png} +0 -0
- data/rails_generators/templates/public/stylesheets/rules_engine/{re_job/success-18.png → images/rules_engine/re_common/status-published-18.png} +0 -0
- data/rails_generators/templates/public/stylesheets/rules_engine/{re_job/success-25.png → images/rules_engine/re_common/status-published-25.png} +0 -0
- data/rails_generators/templates/public/stylesheets/rules_engine/{re_job/success-14.png → images/rules_engine/re_common/status-success-14.png} +0 -0
- data/rails_generators/templates/public/stylesheets/rules_engine/{re_pipeline/current-14.png → images/rules_engine/re_common/status-valid-14.png} +0 -0
- data/rails_generators/templates/public/stylesheets/rules_engine/{re_pipeline/current-18.png → images/rules_engine/re_common/status-valid-18.png} +0 -0
- data/rails_generators/templates/public/stylesheets/rules_engine/{re_pipeline/draft-14.png → images/rules_engine/re_common/status-verify-14.png} +0 -0
- data/rails_generators/templates/public/stylesheets/rules_engine/{re_job/error-18.png → images/rules_engine/re_common/status-verify-18.png} +0 -0
- data/rails_generators/templates/public/stylesheets/rules_engine/{re_job/error-25.png → images/rules_engine/re_common/status-verify-25.png} +0 -0
- data/rails_generators/templates/public/stylesheets/rules_engine/images/rules_engine/re_plan/alert-25.png +0 -0
- data/rails_generators/templates/public/stylesheets/rules_engine/images/rules_engine/re_plan/change-25.png +0 -0
- data/rails_generators/templates/public/stylesheets/rules_engine/images/rules_engine/re_plan/delete-25.png +0 -0
- data/rails_generators/templates/public/stylesheets/rules_engine/images/rules_engine/re_plan/edit-25.png +0 -0
- data/rails_generators/templates/public/stylesheets/rules_engine/images/rules_engine/re_plan/list-25.png +0 -0
- data/rails_generators/templates/public/stylesheets/rules_engine/images/rules_engine/re_plan/new-25.png +0 -0
- data/rails_generators/templates/public/stylesheets/rules_engine/images/rules_engine/re_plan/preview-18.png +0 -0
- data/rails_generators/templates/public/stylesheets/rules_engine/images/rules_engine/re_plan/publish-25.png +0 -0
- data/rails_generators/templates/public/stylesheets/rules_engine/images/rules_engine/re_plan/revert-25.png +0 -0
- data/rails_generators/templates/public/stylesheets/rules_engine/images/rules_engine/re_plan/show-25.png +0 -0
- data/rails_generators/templates/public/stylesheets/rules_engine/images/rules_engine/re_plan/title-plural.png +0 -0
- data/rails_generators/templates/public/stylesheets/rules_engine/images/rules_engine/re_plan/title-single.png +0 -0
- data/rails_generators/templates/public/stylesheets/rules_engine/{re_rule/stop-failure-14.png → images/rules_engine/re_process/error-14.png} +0 -0
- data/rails_generators/templates/public/stylesheets/rules_engine/images/rules_engine/re_process/info-14.png +0 -0
- data/rails_generators/templates/public/stylesheets/rules_engine/images/rules_engine/re_process/list-25.png +0 -0
- data/rails_generators/templates/public/stylesheets/rules_engine/{re_rule/stop-success-14.png → images/rules_engine/re_process/success-14.png} +0 -0
- data/rails_generators/templates/public/stylesheets/rules_engine/images/rules_engine/re_publication/show-25.png +0 -0
- data/rails_generators/templates/public/stylesheets/rules_engine/{re_rule_class → images/rules_engine/re_rule}/add-14.png +0 -0
- data/rails_generators/templates/public/stylesheets/rules_engine/images/rules_engine/re_rule/alert-25.png +0 -0
- data/rails_generators/templates/public/stylesheets/rules_engine/{re_pipeline → images/rules_engine/re_rule}/destroy-25.png +0 -0
- data/rails_generators/templates/public/stylesheets/rules_engine/images/rules_engine/re_rule/edit-25.png +0 -0
- data/rails_generators/templates/public/stylesheets/rules_engine/images/rules_engine/re_rule/error-25.png +0 -0
- data/rails_generators/templates/public/stylesheets/rules_engine/{re_rule_class → images/rules_engine/re_rule}/help-14.png +0 -0
- data/rails_generators/templates/public/stylesheets/rules_engine/images/rules_engine/re_rule/help-25.png +0 -0
- data/rails_generators/templates/public/stylesheets/rules_engine/{re_pipeline/current-25.png → images/rules_engine/re_rule/icon-ad-25.png} +0 -0
- data/rails_generators/templates/public/stylesheets/rules_engine/{re_rule → images/rules_engine/re_rule}/move-down-25.png +0 -0
- data/rails_generators/templates/public/stylesheets/rules_engine/{re_rule → images/rules_engine/re_rule}/move-down-off-25.png +0 -0
- data/rails_generators/templates/public/stylesheets/rules_engine/{re_rule → images/rules_engine/re_rule}/move-up-25.png +0 -0
- data/rails_generators/templates/public/stylesheets/rules_engine/{re_rule → images/rules_engine/re_rule}/move-up-off-25.png +0 -0
- data/rails_generators/templates/public/stylesheets/rules_engine/images/rules_engine/re_rule/new-25.png +0 -0
- data/rails_generators/templates/public/stylesheets/rules_engine/{re_rule/next-change-25.png → images/rules_engine/re_rule/next-down-25.png} +0 -0
- data/rails_generators/templates/public/stylesheets/rules_engine/{re_rule/next-show-18.png → images/rules_engine/re_rule/next-right-18.png} +0 -0
- data/rails_generators/templates/public/stylesheets/rules_engine/{re_pipeline/change-25.png → images/rules_engine/re_rule/show-25.png} +0 -0
- data/rails_generators/templates/public/stylesheets/rules_engine/{re_rule → images/rules_engine/re_rule}/start-pipeline-18.png +0 -0
- data/rails_generators/templates/public/stylesheets/rules_engine/{re_rule → images/rules_engine/re_rule}/stop-failure-18.png +0 -0
- data/rails_generators/templates/public/stylesheets/rules_engine/{re_rule → images/rules_engine/re_rule}/stop-success-18.png +0 -0
- data/rails_generators/templates/public/stylesheets/rules_engine/images/rules_engine/re_rule/title-plural.png +0 -0
- data/rails_generators/templates/public/stylesheets/rules_engine/images/rules_engine/re_rule/title-single.png +0 -0
- data/rails_generators/templates/public/stylesheets/rules_engine/images/rules_engine/re_workflow/add-14.png +0 -0
- data/rails_generators/templates/public/stylesheets/rules_engine/images/rules_engine/re_workflow/add-25.png +0 -0
- data/rails_generators/templates/public/stylesheets/rules_engine/images/rules_engine/re_workflow/add-off-14.png +0 -0
- data/rails_generators/templates/public/stylesheets/rules_engine/images/rules_engine/re_workflow/alert-25.png +0 -0
- data/rails_generators/templates/public/stylesheets/rules_engine/images/rules_engine/re_workflow/change-18.png +0 -0
- data/rails_generators/templates/public/stylesheets/rules_engine/images/rules_engine/re_workflow/change-25.png +0 -0
- data/rails_generators/templates/public/stylesheets/rules_engine/images/rules_engine/re_workflow/delete-25.png +0 -0
- data/rails_generators/templates/public/stylesheets/rules_engine/images/rules_engine/re_workflow/edit-25.png +0 -0
- data/rails_generators/templates/public/stylesheets/rules_engine/images/rules_engine/re_workflow/is-default-18.png +0 -0
- data/rails_generators/templates/public/stylesheets/rules_engine/images/rules_engine/re_workflow/list-25.png +0 -0
- data/rails_generators/templates/public/stylesheets/rules_engine/images/rules_engine/re_workflow/make-default-18.png +0 -0
- data/rails_generators/templates/public/stylesheets/rules_engine/images/rules_engine/re_workflow/make-default-off-18.png +0 -0
- data/rails_generators/templates/public/stylesheets/rules_engine/images/rules_engine/re_workflow/new-25.png +0 -0
- data/rails_generators/templates/public/stylesheets/rules_engine/{re_pipeline/revert-25.png → images/rules_engine/re_workflow/plan-25.png} +0 -0
- data/rails_generators/templates/public/stylesheets/rules_engine/images/rules_engine/re_workflow/preview-18.png +0 -0
- data/rails_generators/templates/public/stylesheets/rules_engine/images/rules_engine/re_workflow/remove-18.png +0 -0
- data/rails_generators/templates/public/stylesheets/rules_engine/images/rules_engine/re_workflow/show-18.png +0 -0
- data/rails_generators/templates/public/stylesheets/rules_engine/images/rules_engine/re_workflow/show-25.png +0 -0
- data/rails_generators/templates/public/stylesheets/rules_engine/images/rules_engine/re_workflow/title-plural.png +0 -0
- data/rails_generators/templates/public/stylesheets/rules_engine/images/rules_engine/re_workflow/title-single.png +0 -0
- data/rails_generators/templates/public/stylesheets/rules_engine/screen.css +1580 -0
- data/rails_generators/templates/spec/controllers/re_plans_controller_spec.rb +409 -0
- data/rails_generators/templates/spec/helpers/rules_engine_helper_spec.rb +86 -0
- data/rails_generators/templates/spec/lib/rules/rule_complex_spec.rb +331 -0
- data/rails_generators/templates/spec/lib/rules/rule_simple_spec.rb +161 -0
- data/rails_generators/templates/spec/models/re_plan_spec.rb +349 -0
- data/rails_generators/templates/spec/models/re_plan_workflow_spec.rb +6 -0
- data/rails_generators/templates/spec/models/re_rule_expected_outcome_spec.rb +7 -51
- data/rails_generators/templates/spec/models/re_rule_spec.rb +108 -152
- data/rails_generators/templates/spec/models/re_workflow_spec.rb +186 -0
- data/rails_generators/templates/spec/support/rules_engine_blueprints.rb +27 -0
- data/spec/railsenv/log/debug.log +7061 -1
- data/spec/railsenv/log/empty.txt +1 -0
- data/spec/railsenv/log/test.log +492 -1
- data/spec/rules_engine/discovery_spec.rb +40 -4
- data/spec/rules_engine/process/auditor/db_auditor_spec.rb +115 -0
- data/spec/rules_engine/process/auditor_spec.rb +111 -0
- data/spec/rules_engine/process/runner/db_runner_spec.rb +229 -0
- data/spec/rules_engine/process/runner_spec.rb +236 -0
- data/spec/rules_engine/publish/publisher/db_publisher_spec.rb +280 -0
- data/spec/rules_engine/publish/publisher_spec.rb +64 -0
- data/spec/rules_engine/rule_spec.rb +7 -11
- data/spec/rules_engine_view/defer_spec.rb +30 -0
- data/spec/rules_engine_view/model_loader_spec.rb +3 -3
- data/spec/spec_helper.rb +36 -1
- metadata +268 -292
- data/lib/rules_engine/job.rb +0 -127
- data/rails_generators/manifests/rules_engine_complex.rb +0 -30
- data/rails_generators/manifests/rules_engine_complex.yml +0 -24
- data/rails_generators/manifests/rules_engine_simple.rb +0 -26
- data/rails_generators/manifests/rules_engine_simple.yml +0 -21
- data/rails_generators/templates/app/controllers/re_jobs_controller.rb +0 -20
- data/rails_generators/templates/app/controllers/re_pipeline_jobs_controller.rb +0 -16
- data/rails_generators/templates/app/controllers/re_pipelines_controller.rb +0 -171
- data/rails_generators/templates/app/helpers/re_pipeline_helper.rb +0 -14
- data/rails_generators/templates/app/models/re_job.rb +0 -122
- data/rails_generators/templates/app/models/re_job_audit.rb +0 -18
- data/rails_generators/templates/app/models/re_pipeline.rb +0 -47
- data/rails_generators/templates/app/models/re_pipeline_activated.rb +0 -29
- data/rails_generators/templates/app/models/re_pipeline_activated_observer.rb +0 -11
- data/rails_generators/templates/app/models/re_pipeline_base.rb +0 -63
- data/rails_generators/templates/app/views/re_jobs/_empty.html.erb +0 -14
- data/rails_generators/templates/app/views/re_jobs/_index_large.html.erb +0 -79
- data/rails_generators/templates/app/views/re_jobs/_index_small.html.erb +0 -41
- data/rails_generators/templates/app/views/re_jobs/_show.html.erb +0 -38
- data/rails_generators/templates/app/views/re_jobs/index.html.erb +0 -14
- data/rails_generators/templates/app/views/re_jobs/index.js.erb +0 -12
- data/rails_generators/templates/app/views/re_jobs/show.html.erb +0 -14
- data/rails_generators/templates/app/views/re_jobs/show.js.erb +0 -4
- data/rails_generators/templates/app/views/re_pipeline_jobs/index.html.erb +0 -15
- data/rails_generators/templates/app/views/re_pipeline_jobs/index.js.erb +0 -12
- data/rails_generators/templates/app/views/re_pipeline_rules/_change.html.erb +0 -57
- data/rails_generators/templates/app/views/re_pipeline_rules/_edit.html.erb +0 -16
- data/rails_generators/templates/app/views/re_pipeline_rules/_empty.html.erb +0 -12
- data/rails_generators/templates/app/views/re_pipeline_rules/_empty.js.erb +0 -7
- data/rails_generators/templates/app/views/re_pipeline_rules/_help.html.erb +0 -13
- data/rails_generators/templates/app/views/re_pipeline_rules/_menu.html.erb +0 -37
- data/rails_generators/templates/app/views/re_pipeline_rules/_show.html.erb +0 -44
- data/rails_generators/templates/app/views/re_pipeline_rules/destroy.js.erb +0 -14
- data/rails_generators/templates/app/views/re_pipeline_rules/edit.html.erb +0 -12
- data/rails_generators/templates/app/views/re_pipeline_rules/edit.js.erb +0 -8
- data/rails_generators/templates/app/views/re_pipeline_rules/error.html.erb +0 -12
- data/rails_generators/templates/app/views/re_pipeline_rules/error.js.erb +0 -7
- data/rails_generators/templates/app/views/re_pipeline_rules/help.html.erb +0 -12
- data/rails_generators/templates/app/views/re_pipeline_rules/help.js.erb +0 -4
- data/rails_generators/templates/app/views/re_pipeline_rules/new.html.erb +0 -15
- data/rails_generators/templates/app/views/re_pipeline_rules/update.js.erb +0 -21
- data/rails_generators/templates/app/views/re_pipelines/_change.html.erb +0 -48
- data/rails_generators/templates/app/views/re_pipelines/_change_actions.html.erb +0 -34
- data/rails_generators/templates/app/views/re_pipelines/_confirm.html.erb +0 -39
- data/rails_generators/templates/app/views/re_pipelines/_edit.html.erb +0 -20
- data/rails_generators/templates/app/views/re_pipelines/_empty.html.erb +0 -13
- data/rails_generators/templates/app/views/re_pipelines/_index.html.erb +0 -64
- data/rails_generators/templates/app/views/re_pipelines/_new.html.erb +0 -18
- data/rails_generators/templates/app/views/re_pipelines/_show.html.erb +0 -36
- data/rails_generators/templates/app/views/re_pipelines/change.html.erb +0 -37
- data/rails_generators/templates/app/views/re_pipelines/create.js.erb +0 -9
- data/rails_generators/templates/app/views/re_pipelines/edit.html.erb +0 -12
- data/rails_generators/templates/app/views/re_pipelines/edit.js.erb +0 -8
- data/rails_generators/templates/app/views/re_pipelines/index.html.erb +0 -61
- data/rails_generators/templates/app/views/re_pipelines/index.js.erb +0 -18
- data/rails_generators/templates/app/views/re_pipelines/new.html.erb +0 -9
- data/rails_generators/templates/app/views/re_pipelines/new.js.erb +0 -5
- data/rails_generators/templates/app/views/re_pipelines/show.html.erb +0 -39
- data/rails_generators/templates/app/views/re_pipelines/update.js.erb +0 -14
- data/rails_generators/templates/app/views/re_rule_definitions/complex_rule/_edit.html.erb +0 -7
- data/rails_generators/templates/app/views/re_rule_definitions/complex_rule/_new.html.erb +0 -7
- data/rails_generators/templates/app/views/re_rule_definitions/complex_rule/_script.html.erb +0 -26
- data/rails_generators/templates/app/views/re_rule_definitions/simple_rule/_edit.html.erb +0 -1
- data/rails_generators/templates/app/views/re_rule_definitions/simple_rule/_new.html.erb +0 -1
- data/rails_generators/templates/db/migrate/20100308225008_create_re_pipelines.rb +0 -77
- data/rails_generators/templates/features/support/blueprint_re_pipelines.rb +0 -20
- data/rails_generators/templates/public/javascripts/re_job_index.js +0 -75
- data/rails_generators/templates/public/javascripts/re_pipeline_change.js +0 -194
- data/rails_generators/templates/public/javascripts/re_pipeline_index.js +0 -40
- data/rails_generators/templates/public/javascripts/re_pipeline_index_jobs.js +0 -10
- data/rails_generators/templates/public/javascripts/re_pipeline_new.js +0 -30
- data/rails_generators/templates/public/javascripts/re_pipeline_show_jobs.js +0 -11
- data/rails_generators/templates/public/stylesheets/re_view.css +0 -120
- data/rails_generators/templates/public/stylesheets/re_view_box.css +0 -119
- data/rails_generators/templates/public/stylesheets/re_view_box/accept.png +0 -0
- data/rails_generators/templates/public/stylesheets/re_view_box/exclamation.png +0 -0
- data/rails_generators/templates/public/stylesheets/re_view_box/shadowbox.jpg +0 -0
- data/rails_generators/templates/public/stylesheets/re_view_button.css +0 -118
- data/rails_generators/templates/public/stylesheets/re_view_error.css +0 -61
- data/rails_generators/templates/public/stylesheets/re_view_form.css +0 -121
- data/rails_generators/templates/public/stylesheets/re_view_navigate.css +0 -46
- data/rails_generators/templates/public/stylesheets/re_view_table.css +0 -137
- data/rails_generators/templates/public/stylesheets/rules_engine.css +0 -520
- data/rails_generators/templates/public/stylesheets/rules_engine/re_job/error-48.png +0 -0
- data/rails_generators/templates/public/stylesheets/rules_engine/re_job/info-48.png +0 -0
- data/rails_generators/templates/public/stylesheets/rules_engine/re_job/list-14.png +0 -0
- data/rails_generators/templates/public/stylesheets/rules_engine/re_job/list-18.png +0 -0
- data/rails_generators/templates/public/stylesheets/rules_engine/re_job/list-25.png +0 -0
- data/rails_generators/templates/public/stylesheets/rules_engine/re_job/list-48.png +0 -0
- data/rails_generators/templates/public/stylesheets/rules_engine/re_job/next-disabled-18.png +0 -0
- data/rails_generators/templates/public/stylesheets/rules_engine/re_job/next-disabled-25.png +0 -0
- data/rails_generators/templates/public/stylesheets/rules_engine/re_job/next-disabled-48.png +0 -0
- data/rails_generators/templates/public/stylesheets/rules_engine/re_job/next-enabled-18.png +0 -0
- data/rails_generators/templates/public/stylesheets/rules_engine/re_job/next-enabled-25.png +0 -0
- data/rails_generators/templates/public/stylesheets/rules_engine/re_job/next-enabled-48.png +0 -0
- data/rails_generators/templates/public/stylesheets/rules_engine/re_job/prev-disabled-18.png +0 -0
- data/rails_generators/templates/public/stylesheets/rules_engine/re_job/prev-disabled-25.png +0 -0
- data/rails_generators/templates/public/stylesheets/rules_engine/re_job/prev-disabled-48.png +0 -0
- data/rails_generators/templates/public/stylesheets/rules_engine/re_job/prev-enabled-18.png +0 -0
- data/rails_generators/templates/public/stylesheets/rules_engine/re_job/prev-enabled-25.png +0 -0
- data/rails_generators/templates/public/stylesheets/rules_engine/re_job/prev-enabled-48.png +0 -0
- data/rails_generators/templates/public/stylesheets/rules_engine/re_job/success-48.png +0 -0
- data/rails_generators/templates/public/stylesheets/rules_engine/re_pipeline/activate-14.png +0 -0
- data/rails_generators/templates/public/stylesheets/rules_engine/re_pipeline/activate-18.png +0 -0
- data/rails_generators/templates/public/stylesheets/rules_engine/re_pipeline/activate-25.png +0 -0
- data/rails_generators/templates/public/stylesheets/rules_engine/re_pipeline/activate-48.png +0 -0
- data/rails_generators/templates/public/stylesheets/rules_engine/re_pipeline/alert-14.png +0 -0
- data/rails_generators/templates/public/stylesheets/rules_engine/re_pipeline/alert-48.png +0 -0
- data/rails_generators/templates/public/stylesheets/rules_engine/re_pipeline/change-14.png +0 -0
- data/rails_generators/templates/public/stylesheets/rules_engine/re_pipeline/change-18.png +0 -0
- data/rails_generators/templates/public/stylesheets/rules_engine/re_pipeline/change-48.png +0 -0
- data/rails_generators/templates/public/stylesheets/rules_engine/re_pipeline/changed-14.png +0 -0
- data/rails_generators/templates/public/stylesheets/rules_engine/re_pipeline/changed-18.png +0 -0
- data/rails_generators/templates/public/stylesheets/rules_engine/re_pipeline/changed-25.png +0 -0
- data/rails_generators/templates/public/stylesheets/rules_engine/re_pipeline/changed-48.png +0 -0
- data/rails_generators/templates/public/stylesheets/rules_engine/re_pipeline/current-48.png +0 -0
- data/rails_generators/templates/public/stylesheets/rules_engine/re_pipeline/deactivate-14.png +0 -0
- data/rails_generators/templates/public/stylesheets/rules_engine/re_pipeline/deactivate-18.png +0 -0
- data/rails_generators/templates/public/stylesheets/rules_engine/re_pipeline/deactivate-25.png +0 -0
- data/rails_generators/templates/public/stylesheets/rules_engine/re_pipeline/deactivate-48.png +0 -0
- data/rails_generators/templates/public/stylesheets/rules_engine/re_pipeline/destroy-14.png +0 -0
- data/rails_generators/templates/public/stylesheets/rules_engine/re_pipeline/destroy-18.png +0 -0
- data/rails_generators/templates/public/stylesheets/rules_engine/re_pipeline/destroy-48.png +0 -0
- data/rails_generators/templates/public/stylesheets/rules_engine/re_pipeline/draft-18.png +0 -0
- data/rails_generators/templates/public/stylesheets/rules_engine/re_pipeline/draft-25.png +0 -0
- data/rails_generators/templates/public/stylesheets/rules_engine/re_pipeline/draft-48.png +0 -0
- data/rails_generators/templates/public/stylesheets/rules_engine/re_pipeline/edit-14.png +0 -0
- data/rails_generators/templates/public/stylesheets/rules_engine/re_pipeline/edit-18.png +0 -0
- data/rails_generators/templates/public/stylesheets/rules_engine/re_pipeline/edit-25.png +0 -0
- data/rails_generators/templates/public/stylesheets/rules_engine/re_pipeline/edit-48.png +0 -0
- data/rails_generators/templates/public/stylesheets/rules_engine/re_pipeline/list-14.png +0 -0
- data/rails_generators/templates/public/stylesheets/rules_engine/re_pipeline/list-18.png +0 -0
- data/rails_generators/templates/public/stylesheets/rules_engine/re_pipeline/list-25.png +0 -0
- data/rails_generators/templates/public/stylesheets/rules_engine/re_pipeline/list-48.png +0 -0
- data/rails_generators/templates/public/stylesheets/rules_engine/re_pipeline/list-down.png +0 -0
- data/rails_generators/templates/public/stylesheets/rules_engine/re_pipeline/list-right.png +0 -0
- data/rails_generators/templates/public/stylesheets/rules_engine/re_pipeline/new-14.png +0 -0
- data/rails_generators/templates/public/stylesheets/rules_engine/re_pipeline/new-18.png +0 -0
- data/rails_generators/templates/public/stylesheets/rules_engine/re_pipeline/new-25.png +0 -0
- data/rails_generators/templates/public/stylesheets/rules_engine/re_pipeline/new-48.png +0 -0
- data/rails_generators/templates/public/stylesheets/rules_engine/re_pipeline/revert-14.png +0 -0
- data/rails_generators/templates/public/stylesheets/rules_engine/re_pipeline/revert-18.png +0 -0
- data/rails_generators/templates/public/stylesheets/rules_engine/re_pipeline/revert-48.png +0 -0
- data/rails_generators/templates/public/stylesheets/rules_engine/re_pipeline/show-14.png +0 -0
- data/rails_generators/templates/public/stylesheets/rules_engine/re_pipeline/show-18.png +0 -0
- data/rails_generators/templates/public/stylesheets/rules_engine/re_pipeline/show-25.png +0 -0
- data/rails_generators/templates/public/stylesheets/rules_engine/re_pipeline/show-48.png +0 -0
- data/rails_generators/templates/public/stylesheets/rules_engine/re_pipeline/verify-14.png +0 -0
- data/rails_generators/templates/public/stylesheets/rules_engine/re_pipeline/verify-18.png +0 -0
- data/rails_generators/templates/public/stylesheets/rules_engine/re_pipeline/verify-25.png +0 -0
- data/rails_generators/templates/public/stylesheets/rules_engine/re_pipeline/verify-48.png +0 -0
- data/rails_generators/templates/public/stylesheets/rules_engine/re_rule/destroy-14.png +0 -0
- data/rails_generators/templates/public/stylesheets/rules_engine/re_rule/destroy-18.png +0 -0
- data/rails_generators/templates/public/stylesheets/rules_engine/re_rule/destroy-25.png +0 -0
- data/rails_generators/templates/public/stylesheets/rules_engine/re_rule/destroy-48.png +0 -0
- data/rails_generators/templates/public/stylesheets/rules_engine/re_rule/edit-14.png +0 -0
- data/rails_generators/templates/public/stylesheets/rules_engine/re_rule/edit-18.png +0 -0
- data/rails_generators/templates/public/stylesheets/rules_engine/re_rule/edit-25.png +0 -0
- data/rails_generators/templates/public/stylesheets/rules_engine/re_rule/edit-48.png +0 -0
- data/rails_generators/templates/public/stylesheets/rules_engine/re_rule/move-down-14.png +0 -0
- data/rails_generators/templates/public/stylesheets/rules_engine/re_rule/move-down-18.png +0 -0
- data/rails_generators/templates/public/stylesheets/rules_engine/re_rule/move-down-48.png +0 -0
- data/rails_generators/templates/public/stylesheets/rules_engine/re_rule/move-down-off-14.png +0 -0
- data/rails_generators/templates/public/stylesheets/rules_engine/re_rule/move-down-off-18.png +0 -0
- data/rails_generators/templates/public/stylesheets/rules_engine/re_rule/move-down-off-48.png +0 -0
- data/rails_generators/templates/public/stylesheets/rules_engine/re_rule/move-up-14.png +0 -0
- data/rails_generators/templates/public/stylesheets/rules_engine/re_rule/move-up-18.png +0 -0
- data/rails_generators/templates/public/stylesheets/rules_engine/re_rule/move-up-48.png +0 -0
- data/rails_generators/templates/public/stylesheets/rules_engine/re_rule/move-up-off-14.png +0 -0
- data/rails_generators/templates/public/stylesheets/rules_engine/re_rule/move-up-off-18.png +0 -0
- data/rails_generators/templates/public/stylesheets/rules_engine/re_rule/move-up-off-48.png +0 -0
- data/rails_generators/templates/public/stylesheets/rules_engine/re_rule/next-change-14.png +0 -0
- data/rails_generators/templates/public/stylesheets/rules_engine/re_rule/next-change-18.png +0 -0
- data/rails_generators/templates/public/stylesheets/rules_engine/re_rule/next-change-48.png +0 -0
- data/rails_generators/templates/public/stylesheets/rules_engine/re_rule/next-show-14.png +0 -0
- data/rails_generators/templates/public/stylesheets/rules_engine/re_rule/next-show-25.png +0 -0
- data/rails_generators/templates/public/stylesheets/rules_engine/re_rule/next-show-48.png +0 -0
- data/rails_generators/templates/public/stylesheets/rules_engine/re_rule/start-pipeline-14.png +0 -0
- data/rails_generators/templates/public/stylesheets/rules_engine/re_rule/stop-failure-25.png +0 -0
- data/rails_generators/templates/public/stylesheets/rules_engine/re_rule/stop-failure-48.png +0 -0
- data/rails_generators/templates/public/stylesheets/rules_engine/re_rule/stop-success-25.png +0 -0
- data/rails_generators/templates/public/stylesheets/rules_engine/re_rule/stop-success-48.png +0 -0
- data/rails_generators/templates/public/stylesheets/rules_engine/re_rule/valid-14.png +0 -0
- data/rails_generators/templates/public/stylesheets/rules_engine/re_rule/valid-18.png +0 -0
- data/rails_generators/templates/public/stylesheets/rules_engine/re_rule/valid-25.png +0 -0
- data/rails_generators/templates/public/stylesheets/rules_engine/re_rule/valid-48.png +0 -0
- data/rails_generators/templates/public/stylesheets/rules_engine/re_rule/verify-14.png +0 -0
- data/rails_generators/templates/public/stylesheets/rules_engine/re_rule/verify-18.png +0 -0
- data/rails_generators/templates/public/stylesheets/rules_engine/re_rule/verify-25.png +0 -0
- data/rails_generators/templates/public/stylesheets/rules_engine/re_rule/verify-48.png +0 -0
- data/rails_generators/templates/public/stylesheets/rules_engine/re_rule_class/add-18.png +0 -0
- data/rails_generators/templates/public/stylesheets/rules_engine/re_rule_class/add-25.png +0 -0
- data/rails_generators/templates/public/stylesheets/rules_engine/re_rule_class/add-48.png +0 -0
- data/rails_generators/templates/public/stylesheets/rules_engine/re_rule_class/help-18.png +0 -0
- data/rails_generators/templates/public/stylesheets/rules_engine/re_rule_class/help-25.png +0 -0
- data/rails_generators/templates/public/stylesheets/rules_engine/re_rule_class/help-48.png +0 -0
- data/rails_generators/templates/public/stylesheets/rules_engine/re_rule_class/list-down.png +0 -0
- data/rails_generators/templates/public/stylesheets/rules_engine/re_rule_class/list-right.png +0 -0
- data/rails_generators/templates/public/stylesheets/rules_engine/re_rule_class/new-14.png +0 -0
- data/rails_generators/templates/public/stylesheets/rules_engine/re_rule_class/new-18.png +0 -0
- data/rails_generators/templates/public/stylesheets/rules_engine/re_rule_class/new-25.png +0 -0
- data/rails_generators/templates/public/stylesheets/rules_engine/re_rule_class/new-48.png +0 -0
- data/rails_generators/templates/spec/controllers/re_jobs_controller_spec.rb +0 -50
- data/rails_generators/templates/spec/controllers/re_pipeline_jobs_controller_spec.rb +0 -37
- data/rails_generators/templates/spec/controllers/re_pipeline_rules_controller_spec.rb +0 -390
- data/rails_generators/templates/spec/controllers/re_pipelines_controller_spec.rb +0 -497
- data/rails_generators/templates/spec/helpers/re_pipeline_helper_spec.rb +0 -29
- data/rails_generators/templates/spec/lib/rules/complex_rule_spec.rb +0 -336
- data/rails_generators/templates/spec/lib/rules/simple_rule_spec.rb +0 -171
- data/rails_generators/templates/spec/models/re_job_audit_spec.rb +0 -23
- data/rails_generators/templates/spec/models/re_job_spec.rb +0 -163
- data/rails_generators/templates/spec/models/re_pipeline_activated_observer_spec.rb +0 -28
- data/rails_generators/templates/spec/models/re_pipeline_activated_spec.rb +0 -71
- data/rails_generators/templates/spec/models/re_pipeline_base_spec.rb +0 -164
- data/rails_generators/templates/spec/models/re_pipeline_spec.rb +0 -198
- data/spec/rules_engine/job_spec.rb +0 -323
@@ -0,0 +1,349 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
|
2
|
+
|
3
|
+
describe RePlan do
|
4
|
+
def valid_attributes
|
5
|
+
{
|
6
|
+
:code => "AA MOCK",
|
7
|
+
:title => "Mock Title"
|
8
|
+
}
|
9
|
+
end
|
10
|
+
|
11
|
+
it "should be valid with valid attributes" do
|
12
|
+
RePlan.new(valid_attributes).should be_valid
|
13
|
+
end
|
14
|
+
|
15
|
+
should_have_many :re_plan_workflows
|
16
|
+
should_have_many :re_workflows, :through => :re_plan_workflows
|
17
|
+
|
18
|
+
should_validate_presence_of :code
|
19
|
+
should_validate_presence_of :title
|
20
|
+
|
21
|
+
describe "unique attributes" do
|
22
|
+
before(:each) do
|
23
|
+
RePlan.create!(valid_attributes)
|
24
|
+
end
|
25
|
+
|
26
|
+
should_validate_uniqueness_of :code, :case_sensitive => false, :message=>"alread taken."
|
27
|
+
end
|
28
|
+
|
29
|
+
describe "creating a plan" do
|
30
|
+
it "should set the plan_status to draft" do
|
31
|
+
re_plan = RePlan.create!(valid_attributes.except(:plan_status))
|
32
|
+
re_plan.plan_status.should == RePlan::PLAN_STATUS_DRAFT
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
describe "changing a plan" do
|
37
|
+
describe "changing a plan back to it's reverted state" do
|
38
|
+
it "should mark the plan as published when saving" do
|
39
|
+
re_plan = RePlan.create!(valid_attributes)
|
40
|
+
re_plan.plan_status = RePlan::PLAN_STATUS_REVERTED
|
41
|
+
re_plan.save
|
42
|
+
re_plan.plan_status.should == RePlan::PLAN_STATUS_PUBLISHED
|
43
|
+
end
|
44
|
+
|
45
|
+
it "should not mark the plan as changed" do
|
46
|
+
re_plan = RePlan.create!(valid_attributes)
|
47
|
+
re_plan.plan_status = RePlan::PLAN_STATUS_REVERTED
|
48
|
+
re_plan.title = "new title"
|
49
|
+
re_plan.should_not_receive(:changed!)
|
50
|
+
re_plan.save
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
it "should mark the plan as changed" do
|
55
|
+
re_plan = RePlan.create!(valid_attributes)
|
56
|
+
re_plan.title = "new title"
|
57
|
+
re_plan.should_receive(:changed!).with(false)
|
58
|
+
re_plan.save
|
59
|
+
end
|
60
|
+
|
61
|
+
it "should not be changed if the field changed was an ignore attribute" do
|
62
|
+
re_plan = RePlan.create!(valid_attributes)
|
63
|
+
re_plan.updated_at = Time.now + 5.days
|
64
|
+
re_plan.should_not_receive(:changed!)
|
65
|
+
re_plan.save
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
it "should replace any nonprint cahracters with an _" do
|
70
|
+
re_plan = RePlan.new(valid_attributes.merge(:code => "my code"))
|
71
|
+
re_plan.save!
|
72
|
+
re_plan.code.should == "my_code"
|
73
|
+
end
|
74
|
+
|
75
|
+
it "should change the code to lower case when creating" do
|
76
|
+
re_plan = RePlan.new(valid_attributes.merge(:code => "My code"))
|
77
|
+
re_plan.save!
|
78
|
+
re_plan.code.should == "my_code"
|
79
|
+
end
|
80
|
+
|
81
|
+
it "should strip any leading or trailing spaces" do
|
82
|
+
re_plan = RePlan.new(valid_attributes.merge(:code => " My code "))
|
83
|
+
re_plan.save!
|
84
|
+
re_plan.code.should == "my_code"
|
85
|
+
end
|
86
|
+
|
87
|
+
describe "code cannot be changed after creation" do
|
88
|
+
it "should save the code with a new record" do
|
89
|
+
re_plan = RePlan.new(valid_attributes.merge(:code => "my code"))
|
90
|
+
re_plan.save!
|
91
|
+
re_plan.code.should == "my_code"
|
92
|
+
end
|
93
|
+
|
94
|
+
it "should ignore the code attribute for an existing record" do
|
95
|
+
re_plan = RePlan.new(valid_attributes.merge(:code => "my code"))
|
96
|
+
re_plan.save!
|
97
|
+
re_plan.code = "new_code"
|
98
|
+
re_plan.save!
|
99
|
+
re_plan.code.should == "my_code"
|
100
|
+
end
|
101
|
+
end
|
102
|
+
|
103
|
+
describe "publish" do
|
104
|
+
it "should convert the plan to a hash" do
|
105
|
+
re_plan = RePlan.new(valid_attributes)
|
106
|
+
re_plan.stub!(:re_workflows).and_return([mock('workflow one', :code => 'one', :publish => {"workflow" => "one"}),
|
107
|
+
mock('workflow two', :code => 'two', :publish => {"workflow" => "two"})])
|
108
|
+
publish_data = re_plan.publish
|
109
|
+
publish_data["code"].should == 'aa_mock'
|
110
|
+
publish_data["title"].should == valid_attributes[:title]
|
111
|
+
publish_data["description"].should == valid_attributes[:description]
|
112
|
+
publish_data["first_workflow"].should == "one"
|
113
|
+
publish_data["workflow_one"]["workflow"].should == "one"
|
114
|
+
publish_data["workflow_one"]["next_workflow"].should == "two"
|
115
|
+
publish_data["workflow_two"]["workflow"].should == "two"
|
116
|
+
publish_data["workflow_two"]["next_workflow"].should == ""
|
117
|
+
end
|
118
|
+
end
|
119
|
+
|
120
|
+
describe "revert!" do
|
121
|
+
it "should return self" do
|
122
|
+
re_plan = RePlan.new
|
123
|
+
re_plan.revert!({}).should == re_plan
|
124
|
+
end
|
125
|
+
|
126
|
+
it "should set the plan as reverted" do
|
127
|
+
re_plan = RePlan.new
|
128
|
+
re_plan.revert!({})
|
129
|
+
re_plan.plan_status.should == RePlan::PLAN_STATUS_REVERTED
|
130
|
+
end
|
131
|
+
|
132
|
+
it "should set the plan based on the data" do
|
133
|
+
re_workflow_1 = mock_model(ReWorkflow)
|
134
|
+
re_workflow_2 = mock_model(ReWorkflow)
|
135
|
+
re_workflow_1.should_receive(:revert!).with(hash_including('workflow' => 'one')).and_return(re_workflow_1)
|
136
|
+
re_workflow_2.should_receive(:revert!).with(hash_including('workflow' => 'two')).and_return(re_workflow_2)
|
137
|
+
ReWorkflow.stub!(:new).and_return(re_workflow_1, re_workflow_2)
|
138
|
+
|
139
|
+
re_plan = RePlan.new
|
140
|
+
re_plan.should_receive(:re_workflows=).with([re_workflow_1, re_workflow_2])
|
141
|
+
|
142
|
+
re_plan.revert!({"code" => "mock_workflow_code",
|
143
|
+
"title" => "mock_title",
|
144
|
+
"description" => "mock_description",
|
145
|
+
"first_workflow" => "one",
|
146
|
+
"workflow_one" => {"workflow" => "one", "next_workflow" => "two"},
|
147
|
+
"workflow_two" => {"workflow" => "two", "next_workflow" => ""}
|
148
|
+
})
|
149
|
+
|
150
|
+
re_plan.code.should == "mock_workflow_code"
|
151
|
+
re_plan.title.should == "mock_title"
|
152
|
+
re_plan.description.should == "mock_description"
|
153
|
+
end
|
154
|
+
end
|
155
|
+
|
156
|
+
describe "adding a workflow" do
|
157
|
+
it "should be false if it already has the workflow" do
|
158
|
+
re_plan = RePlan.new
|
159
|
+
re_workflow = mock_model(ReWorkflow)
|
160
|
+
re_plan.stub!(:re_workflows).and_return([re_workflow])
|
161
|
+
re_plan.add_workflow(re_workflow).should == false
|
162
|
+
end
|
163
|
+
|
164
|
+
it "should add the workflow" do
|
165
|
+
re_plan = RePlan.new
|
166
|
+
re_workflow = mock_model(ReWorkflow)
|
167
|
+
re_workflows = []
|
168
|
+
re_plan.stub!(:re_workflows).and_return(re_workflows)
|
169
|
+
re_plan.add_workflow(re_workflow)
|
170
|
+
re_workflows.should == [re_workflow]
|
171
|
+
end
|
172
|
+
|
173
|
+
it "should mark the plan as changed" do
|
174
|
+
re_plan = RePlan.new
|
175
|
+
re_workflow = mock_model(ReWorkflow)
|
176
|
+
re_plan.should_receive(:changed!)
|
177
|
+
re_plan.add_workflow(re_workflow)
|
178
|
+
end
|
179
|
+
end
|
180
|
+
|
181
|
+
describe "removing a workflow" do
|
182
|
+
it "should be false if it does not have the workflow" do
|
183
|
+
re_plan = RePlan.new
|
184
|
+
re_workflow = mock_model(ReWorkflow)
|
185
|
+
re_plan.stub!(:re_workflows).and_return([])
|
186
|
+
re_plan.remove_workflow(re_workflow).should == false
|
187
|
+
end
|
188
|
+
|
189
|
+
it "should remove the workflow" do
|
190
|
+
re_plan = RePlan.new
|
191
|
+
re_workflow = mock_model(ReWorkflow)
|
192
|
+
re_workflows = [re_workflow]
|
193
|
+
re_plan.stub!(:re_workflows).and_return(re_workflows)
|
194
|
+
re_plan.remove_workflow(re_workflow)
|
195
|
+
re_workflows.should == []
|
196
|
+
end
|
197
|
+
|
198
|
+
it "should mark the plan as changed" do
|
199
|
+
re_plan = RePlan.new
|
200
|
+
re_workflow = mock_model(ReWorkflow)
|
201
|
+
re_plan.stub!(:re_workflows).and_return([re_workflow])
|
202
|
+
re_plan.should_receive(:changed!)
|
203
|
+
re_plan.remove_workflow(re_workflow)
|
204
|
+
end
|
205
|
+
end
|
206
|
+
|
207
|
+
describe "setting thew default workflow" do
|
208
|
+
|
209
|
+
it "should not change the list if the workflow is not in the list" do
|
210
|
+
re_plan = RePlan.new
|
211
|
+
re_workflow = mock_model(ReWorkflow, :id => 1001)
|
212
|
+
re_plan.stub!(:re_workflows).and_return([])
|
213
|
+
|
214
|
+
re_plan.should_not_receive(:changed!)
|
215
|
+
re_plan.default_workflow = re_workflow
|
216
|
+
end
|
217
|
+
|
218
|
+
it "should not change the list if the workflow is alreasy the default" do
|
219
|
+
re_plan = RePlan.new
|
220
|
+
re_workflow = mock_model(ReWorkflow, :id => 1001)
|
221
|
+
re_plan.stub!(:re_workflows).and_return([re_workflow])
|
222
|
+
|
223
|
+
re_plan.should_not_receive(:changed!)
|
224
|
+
re_plan.default_workflow = re_workflow
|
225
|
+
end
|
226
|
+
|
227
|
+
it "should move the workflow to the top of the list" do
|
228
|
+
re_plan = RePlan.new
|
229
|
+
re_workflow = mock_model(ReWorkflow, :id => 1001)
|
230
|
+
re_plan.stub!(:re_workflows).and_return([mock_model(ReWorkflow, :id => 1001), re_workflow])
|
231
|
+
|
232
|
+
re_plan_workflow = mock_model(RePlanWorkflow, :re_workflow_id => 1001)
|
233
|
+
re_plan.stub!(:re_plan_workflows).and_return([re_plan_workflow])
|
234
|
+
|
235
|
+
re_plan_workflow.should_receive(:move_to_top)
|
236
|
+
re_plan.default_workflow = re_workflow
|
237
|
+
end
|
238
|
+
|
239
|
+
it "should mark the plan as changed" do
|
240
|
+
re_plan = RePlan.new
|
241
|
+
re_workflow = mock_model(ReWorkflow, :id => 1001)
|
242
|
+
re_plan.stub!(:re_workflows).and_return([mock_model(ReWorkflow, :id => 1001), re_workflow])
|
243
|
+
|
244
|
+
re_plan_workflow = mock_model(RePlanWorkflow, :re_workflow_id => 1001)
|
245
|
+
re_plan_workflow.stub!(:move_to_top)
|
246
|
+
re_plan.stub!(:re_plan_workflows).and_return([re_plan_workflow])
|
247
|
+
|
248
|
+
re_plan.should_receive(:changed!)
|
249
|
+
re_plan.default_workflow = re_workflow
|
250
|
+
end
|
251
|
+
end
|
252
|
+
|
253
|
+
describe "getting the default workflow" do
|
254
|
+
it "should return nil if the workflow list empty" do
|
255
|
+
re_plan = RePlan.new
|
256
|
+
re_plan.stub!(:re_workflows).and_return([])
|
257
|
+
re_plan.default_workflow.should == nil
|
258
|
+
end
|
259
|
+
|
260
|
+
it "should return the first workflow in the list" do
|
261
|
+
re_workflow_1 = mock_model(ReWorkflow)
|
262
|
+
re_workflow_2 = mock_model(ReWorkflow)
|
263
|
+
re_plan = RePlan.new
|
264
|
+
re_plan.stub!(:re_workflows).and_return([re_workflow_1, re_workflow_2])
|
265
|
+
re_plan.default_workflow.should == re_workflow_1
|
266
|
+
end
|
267
|
+
end
|
268
|
+
|
269
|
+
describe "checking for plan errors" do
|
270
|
+
before(:each) do
|
271
|
+
@re_workflow_1 = mock_model(ReRule, :title => "workflow 1")
|
272
|
+
@re_workflow_1.stub!(:workflow_error).and_return(nil)
|
273
|
+
|
274
|
+
@re_workflow_2 = mock_model(ReRule, :title => "workflow 2")
|
275
|
+
@re_workflow_2.stub!(:workflow_error).and_return(nil)
|
276
|
+
|
277
|
+
@re_plan = RePlan.new
|
278
|
+
@re_plan.stub!(:re_workflows).and_return([@re_workflow_1, @re_workflow_2])
|
279
|
+
end
|
280
|
+
|
281
|
+
it "should return a failed message if there are no workflows" do
|
282
|
+
src = RePlan.new(valid_attributes)
|
283
|
+
src.plan_error.should == "workflows req'd"
|
284
|
+
end
|
285
|
+
|
286
|
+
it "should validate each workflow" do
|
287
|
+
@re_workflow_1.should_receive(:workflow_error).at_least(:once).and_return(nil)
|
288
|
+
@re_workflow_2.should_receive(:workflow_error).at_least(:once).and_return(nil)
|
289
|
+
|
290
|
+
@re_plan.plan_error.should be_nil
|
291
|
+
end
|
292
|
+
|
293
|
+
it "should stop on the first workflow error" do
|
294
|
+
@re_workflow_1.should_receive(:workflow_error).at_least(:once).and_return("oops")
|
295
|
+
@re_workflow_2.should_not_receive(:workflow)
|
296
|
+
|
297
|
+
@re_plan.plan_error.should == "workflow error"
|
298
|
+
end
|
299
|
+
end
|
300
|
+
|
301
|
+
describe "published!" do
|
302
|
+
it "should update the status to PLAN_STATUS_PUBLISHED" do
|
303
|
+
re_plan = RePlan.create!(valid_attributes)
|
304
|
+
re_plan.plan_status.should == RePlan::PLAN_STATUS_DRAFT
|
305
|
+
re_plan.published!
|
306
|
+
re_plan.plan_status.should == RePlan::PLAN_STATUS_PUBLISHED
|
307
|
+
end
|
308
|
+
end
|
309
|
+
|
310
|
+
describe "changed!" do
|
311
|
+
it "should not update the status when PLAN_STATUS_DRAFT" do
|
312
|
+
re_plan = RePlan.create!(valid_attributes)
|
313
|
+
re_plan.plan_status.should == RePlan::PLAN_STATUS_DRAFT
|
314
|
+
re_plan.should_not_receive(:save!)
|
315
|
+
re_plan.changed!
|
316
|
+
re_plan.plan_status.should == RePlan::PLAN_STATUS_DRAFT
|
317
|
+
end
|
318
|
+
|
319
|
+
it "should not update the status when PLAN_STATUS_CHANGED" do
|
320
|
+
re_plan = RePlan.create!(valid_attributes)
|
321
|
+
re_plan.published!
|
322
|
+
re_plan.plan_status.should == RePlan::PLAN_STATUS_PUBLISHED
|
323
|
+
re_plan.update_attributes({:title => "new title"})
|
324
|
+
re_plan.plan_status.should == RePlan::PLAN_STATUS_CHANGED
|
325
|
+
re_plan.should_not_receive(:save!)
|
326
|
+
re_plan.changed!
|
327
|
+
re_plan.plan_status.should == RePlan::PLAN_STATUS_CHANGED
|
328
|
+
end
|
329
|
+
|
330
|
+
it "should update the status to PLAN_STATUS_CHANGED changed when PLAN_STATUS_PUBLISHED" do
|
331
|
+
re_plan = RePlan.create!(valid_attributes)
|
332
|
+
re_plan.published!
|
333
|
+
re_plan.plan_status.should == RePlan::PLAN_STATUS_PUBLISHED
|
334
|
+
re_plan.should_receive(:save!)
|
335
|
+
re_plan.changed!
|
336
|
+
re_plan.plan_status.should == RePlan::PLAN_STATUS_CHANGED
|
337
|
+
end
|
338
|
+
|
339
|
+
it "should not save the plan whe the save flag is false" do
|
340
|
+
re_plan = RePlan.create!(valid_attributes)
|
341
|
+
re_plan.published!
|
342
|
+
re_plan.plan_status.should == RePlan::PLAN_STATUS_PUBLISHED
|
343
|
+
re_plan.should_not_receive(:save!)
|
344
|
+
re_plan.changed!(false)
|
345
|
+
re_plan.plan_status.should == RePlan::PLAN_STATUS_CHANGED
|
346
|
+
end
|
347
|
+
end
|
348
|
+
|
349
|
+
end
|
@@ -13,61 +13,17 @@ describe ReRuleExpectedOutcome do
|
|
13
13
|
|
14
14
|
should_validate_presence_of :outcome
|
15
15
|
|
16
|
-
describe "START
|
17
|
-
it "should be invalid when the outcome
|
18
|
-
re_rule_expected_outcome = ReRuleExpectedOutcome.new(:outcome => RulesEngine::RuleOutcome::
|
16
|
+
describe "START WORKFLOW" do
|
17
|
+
it "should be invalid when the outcome workflow code is blank" do
|
18
|
+
re_rule_expected_outcome = ReRuleExpectedOutcome.new(:outcome => RulesEngine::RuleOutcome::OUTCOME_START_WORKFLOW)
|
19
19
|
re_rule_expected_outcome.should_not be_valid
|
20
|
-
re_rule_expected_outcome.errors.on(:
|
20
|
+
re_rule_expected_outcome.errors.on(:workflow_code).should_not be_blank
|
21
21
|
end
|
22
|
-
|
23
|
-
it "should be valid when outcome
|
24
|
-
re_rule_expected_outcome = ReRuleExpectedOutcome.new(:outcome => RulesEngine::RuleOutcome::
|
22
|
+
|
23
|
+
it "should be valid when outcome workflow code is present" do
|
24
|
+
re_rule_expected_outcome = ReRuleExpectedOutcome.new(:outcome => RulesEngine::RuleOutcome::OUTCOME_START_WORKFLOW, :workflow_code => "mock code")
|
25
25
|
re_rule_expected_outcome.should be_valid
|
26
26
|
end
|
27
27
|
end
|
28
28
|
|
29
|
-
describe "copying the details from another rule outcome" do
|
30
|
-
|
31
|
-
%W(pipeline_code).each do |key|
|
32
|
-
it "should copy the attribute #{key}" do
|
33
|
-
src = ReRuleExpectedOutcome.new(valid_attributes.merge(key.to_sym => "mock source value"))
|
34
|
-
dest = ReRuleExpectedOutcome.new(valid_attributes.merge(key.to_sym => "mock dest value"))
|
35
|
-
dest.copy!(src)
|
36
|
-
dest.read_attribute(key).should == "mock source value"
|
37
|
-
end
|
38
|
-
end
|
39
|
-
|
40
|
-
%W(outcome).each do |key|
|
41
|
-
it "should copy the attribute #{key}" do
|
42
|
-
src = ReRuleExpectedOutcome.new(valid_attributes.merge(key.to_sym => 101))
|
43
|
-
dest = ReRuleExpectedOutcome.new(valid_attributes.merge(key.to_sym => 202))
|
44
|
-
dest.copy!(src)
|
45
|
-
dest.read_attribute(key).should == 101
|
46
|
-
end
|
47
|
-
end
|
48
|
-
end
|
49
|
-
|
50
|
-
describe "comparing rule outcomes" do
|
51
|
-
it "should be equal if the attributes are equal" do
|
52
|
-
src = ReRuleExpectedOutcome.new(valid_attributes)
|
53
|
-
dest = ReRuleExpectedOutcome.new(valid_attributes)
|
54
|
-
dest.equals?(src).should be_true
|
55
|
-
end
|
56
|
-
|
57
|
-
%W(outcome).each do |key|
|
58
|
-
it "should not be equal if the attribute #{key} are different" do
|
59
|
-
src = ReRuleExpectedOutcome.new(valid_attributes.merge(key.to_sym => 101))
|
60
|
-
dest = ReRuleExpectedOutcome.new(valid_attributes.merge(key.to_sym => 202))
|
61
|
-
dest.equals?(src).should be_false
|
62
|
-
end
|
63
|
-
end
|
64
|
-
|
65
|
-
it "should not be equal if the outcome is OUTCOME_START_PIPELINE and pipeline_code are different" do
|
66
|
-
src = ReRuleExpectedOutcome.new(:outcome => RulesEngine::RuleOutcome::OUTCOME_START_PIPELINE, :pipeline_code => "value 1")
|
67
|
-
dest = ReRuleExpectedOutcome.new(:outcome => RulesEngine::RuleOutcome::OUTCOME_START_PIPELINE, :pipeline_code => "value 2")
|
68
|
-
dest.equals?(src).should be_false
|
69
|
-
end
|
70
|
-
|
71
|
-
end
|
72
|
-
|
73
29
|
end
|
@@ -6,7 +6,7 @@ describe ReRule do
|
|
6
6
|
:rule_class_name => "MockRuleClass",
|
7
7
|
:title => "Mock Title",
|
8
8
|
:summary => "Mock Summary",
|
9
|
-
:data => "
|
9
|
+
:data => '["Rule Title", ["one", "two"], "start_workflow", "Other Pipeline"]'
|
10
10
|
}
|
11
11
|
end
|
12
12
|
|
@@ -15,22 +15,25 @@ describe ReRule do
|
|
15
15
|
@rule.stub!(:title=)
|
16
16
|
@rule.stub!(:summary=)
|
17
17
|
@rule.stub!(:data=)
|
18
|
-
@rule.stub!(:
|
19
|
-
@rule.stub!(:
|
18
|
+
@rule.stub!(:after_add_to_workflow)
|
19
|
+
@rule.stub!(:before_remove_from_workflow)
|
20
20
|
@rule.stub!(:expected_outcomes).and_return([])
|
21
21
|
@rule.stub!(:valid?).and_return(true)
|
22
22
|
@rule_class = mock("MockRuleClass")
|
23
23
|
@rule_class.stub!(:new).and_return(@rule)
|
24
24
|
RulesEngine::Discovery.stub!(:rule_class).and_return(@rule_class)
|
25
|
+
|
26
|
+
@re_workflow = mock('workflow', :valid? => true)
|
27
|
+
@re_workflow.stub!(:code).and_return('mock code')
|
28
|
+
@re_workflow.stub!(:changed!)
|
25
29
|
end
|
26
30
|
|
27
31
|
it "should be valid with valid attributes" do
|
28
32
|
ReRule.new(valid_attributes).should be_valid
|
29
33
|
end
|
30
|
-
|
31
|
-
should_have_many :re_rule_expected_outcomes
|
32
|
-
should_have_many :re_job_audits
|
33
34
|
|
35
|
+
should_belong_to :re_workflow
|
36
|
+
should_have_many :re_rule_expected_outcomes
|
34
37
|
should_validate_presence_of :rule_class_name
|
35
38
|
|
36
39
|
describe "validate the rule" do
|
@@ -49,102 +52,6 @@ describe ReRule do
|
|
49
52
|
end
|
50
53
|
end
|
51
54
|
|
52
|
-
|
53
|
-
describe "copying the rule" do
|
54
|
-
|
55
|
-
%W(rule_class_name title summary data).each do |key|
|
56
|
-
it "should copy the attribute #{key}" do
|
57
|
-
src = ReRule.new(valid_attributes.merge(key.to_sym => "mock source value"))
|
58
|
-
dest = ReRule.new(valid_attributes.merge(key.to_sym => "mock dest value"))
|
59
|
-
dest.copy!(src)
|
60
|
-
dest.read_attribute(key).should == "mock source value"
|
61
|
-
end
|
62
|
-
end
|
63
|
-
|
64
|
-
%W(position).each do |key|
|
65
|
-
it "should copy the attribute #{key}" do
|
66
|
-
src = ReRule.new(valid_attributes.merge(key.to_sym => 101))
|
67
|
-
dest = ReRule.new(valid_attributes.merge(key.to_sym => 202))
|
68
|
-
dest.copy!(src)
|
69
|
-
dest.read_attribute(key).should == 101
|
70
|
-
end
|
71
|
-
end
|
72
|
-
|
73
|
-
it "should copy the rule outcomes" do
|
74
|
-
src = ReRule.new(valid_attributes)
|
75
|
-
dest = ReRule.new(valid_attributes)
|
76
|
-
|
77
|
-
src_outcome = mock_model(ReRuleExpectedOutcome)
|
78
|
-
dest_outcome = mock_model(ReRuleExpectedOutcome )
|
79
|
-
|
80
|
-
ReRuleExpectedOutcome.should_receive(:new).and_return(dest_outcome)
|
81
|
-
dest_outcome.should_receive(:copy!).with(src_outcome).and_return(dest_outcome)
|
82
|
-
|
83
|
-
src.should_receive(:re_rule_expected_outcomes).and_return([src_outcome])
|
84
|
-
dest.should_receive(:re_rule_expected_outcomes=).with([dest_outcome])
|
85
|
-
|
86
|
-
dest.copy!(src)
|
87
|
-
end
|
88
|
-
end
|
89
|
-
|
90
|
-
describe "comparing rules" do
|
91
|
-
it "should be equal if the attributes are equal" do
|
92
|
-
src = ReRule.new(valid_attributes)
|
93
|
-
dest = ReRule.new(valid_attributes)
|
94
|
-
dest.equals?(src).should be_true
|
95
|
-
end
|
96
|
-
|
97
|
-
%W(rule_class_name title summary data).each do |key|
|
98
|
-
it "should not be equal if the attribute #{key} are different" do
|
99
|
-
src = ReRule.new(valid_attributes.merge(key.to_sym => "mock source value"))
|
100
|
-
dest = ReRule.new(valid_attributes.merge(key.to_sym => "mock dest value"))
|
101
|
-
dest.equals?(src).should be_false
|
102
|
-
end
|
103
|
-
end
|
104
|
-
|
105
|
-
%W(position).each do |key|
|
106
|
-
it "should not be equal if the attribute #{key} are different" do
|
107
|
-
src = ReRule.new(valid_attributes.merge(key.to_sym => 101))
|
108
|
-
dest = ReRule.new(valid_attributes.merge(key.to_sym => 202))
|
109
|
-
dest.equals?(src).should be_false
|
110
|
-
end
|
111
|
-
end
|
112
|
-
|
113
|
-
describe "equals rule outcome" do
|
114
|
-
before(:each) do
|
115
|
-
@re_rule_re_rule_expected_outcome_1 = mock_model(ReRuleExpectedOutcome)
|
116
|
-
@re_rule_re_rule_expected_outcome_2 = mock_model(ReRuleExpectedOutcome)
|
117
|
-
@re_rule_1 = ReRule.new(valid_attributes)
|
118
|
-
@re_rule_2 = ReRule.new(valid_attributes)
|
119
|
-
@re_rule_1.stub!(:re_rule_expected_outcomes).and_return([@re_rule_re_rule_expected_outcome_1, @re_rule_re_rule_expected_outcome_2])
|
120
|
-
@re_rule_2.stub!(:re_rule_expected_outcomes).and_return([@re_rule_re_rule_expected_outcome_1, @re_rule_re_rule_expected_outcome_2])
|
121
|
-
|
122
|
-
end
|
123
|
-
it "should not compare the outcomes if the the number is different" do
|
124
|
-
@re_rule_2.stub!(:re_rule_expected_outcomes).and_return([@re_rule_re_rule_expected_outcome_1])
|
125
|
-
|
126
|
-
@re_rule_re_rule_expected_outcome_1.should_not_receive(:equals?)
|
127
|
-
@re_rule_re_rule_expected_outcome_2.should_not_receive(:equals?)
|
128
|
-
|
129
|
-
@re_rule_1.equals?(@re_rule_2)
|
130
|
-
end
|
131
|
-
|
132
|
-
it "should check the equals status of each rule outcome" do
|
133
|
-
@re_rule_re_rule_expected_outcome_1.should_receive(:equals?).with(@re_rule_re_rule_expected_outcome_1).and_return(true)
|
134
|
-
@re_rule_re_rule_expected_outcome_2.should_receive(:equals?).with(@re_rule_re_rule_expected_outcome_2).and_return(true)
|
135
|
-
|
136
|
-
@re_rule_1.equals?(@re_rule_2).should be_true
|
137
|
-
end
|
138
|
-
|
139
|
-
it "should stop on the rule outcome equals error" do
|
140
|
-
@re_rule_re_rule_expected_outcome_1.should_receive(:equals?).with(@re_rule_re_rule_expected_outcome_1).and_return(false)
|
141
|
-
@re_rule_re_rule_expected_outcome_2.should_not_receive(:equals?)
|
142
|
-
|
143
|
-
@re_rule_1.equals?(@re_rule_2).should be_false
|
144
|
-
end
|
145
|
-
end
|
146
|
-
end
|
147
|
-
|
148
55
|
describe "loading a rule" do
|
149
56
|
before(:each) do
|
150
57
|
@re_rule = ReRule.new(valid_attributes)
|
@@ -176,7 +83,7 @@ describe ReRule do
|
|
176
83
|
end
|
177
84
|
|
178
85
|
it "should set the rule data with the model data attribute" do
|
179
|
-
@rule.should_receive(:data=).with(
|
86
|
+
@rule.should_receive(:data=).with(valid_attributes[:data])
|
180
87
|
@re_rule.rule
|
181
88
|
end
|
182
89
|
end
|
@@ -196,18 +103,26 @@ describe ReRule do
|
|
196
103
|
end
|
197
104
|
|
198
105
|
describe "saving a re_rule" do
|
106
|
+
before(:each) do
|
107
|
+
@re_rule = ReRule.new(valid_attributes)
|
108
|
+
@re_rule.stub!(:re_workflow).and_return(@re_workflow)
|
109
|
+
end
|
110
|
+
|
199
111
|
it "should fail if the rule does not exist" do
|
200
|
-
re_rule
|
201
|
-
re_rule.
|
202
|
-
re_rule.save.should == false
|
112
|
+
@re_rule.should_receive(:rule).and_return(nil)
|
113
|
+
@re_rule.save.should == false
|
203
114
|
end
|
204
|
-
|
115
|
+
|
116
|
+
it "should set tell the workflow the rule has changed" do
|
117
|
+
@re_workflow.should_receive(:changed!)
|
118
|
+
@re_rule.save
|
119
|
+
end
|
120
|
+
|
205
121
|
describe "a valid rule" do
|
206
122
|
before(:each) do
|
207
|
-
@re_rule = ReRule.new(valid_attributes)
|
208
123
|
@re_rule.stub(:rule).and_return(@rule)
|
209
124
|
end
|
210
|
-
|
125
|
+
|
211
126
|
it "should be successful" do
|
212
127
|
@re_rule.save.should == true
|
213
128
|
end
|
@@ -229,9 +144,9 @@ describe ReRule do
|
|
229
144
|
|
230
145
|
it "should set the expected outcomes to the expected outcomes generated by the rule" do
|
231
146
|
re_rule_expected_outcome = ReRuleExpectedOutcome.new
|
232
|
-
ReRuleExpectedOutcome.should_receive(:new).with(:outcome => 101, :
|
233
|
-
ReRuleExpectedOutcome.should_receive(:new).with(:outcome => 202, :
|
234
|
-
@rule.stub(:expected_outcomes).and_return([{:outcome => 101, :
|
147
|
+
ReRuleExpectedOutcome.should_receive(:new).with(:outcome => 101, :workflow_code => "one").and_return(re_rule_expected_outcome)
|
148
|
+
ReRuleExpectedOutcome.should_receive(:new).with(:outcome => 202, :workflow_code => "two").and_return(re_rule_expected_outcome)
|
149
|
+
@rule.stub(:expected_outcomes).and_return([{:outcome => 101, :workflow_code => "one"}, {:outcome => 202, :workflow_code => "two"}])
|
235
150
|
@re_rule.save
|
236
151
|
@re_rule.re_rule_expected_outcomes.should == [re_rule_expected_outcome, re_rule_expected_outcome]
|
237
152
|
end
|
@@ -240,23 +155,28 @@ describe ReRule do
|
|
240
155
|
|
241
156
|
describe "after saving a re_rule" do
|
242
157
|
it "should notify the rule" do
|
243
|
-
|
244
|
-
@
|
245
|
-
|
246
|
-
@
|
247
|
-
|
248
|
-
|
158
|
+
re_rule = ReRule.new(valid_attributes)
|
159
|
+
re_rule.stub!(:re_workflow).and_return(@re_workflow)
|
160
|
+
|
161
|
+
@re_workflow.stub!(:code).and_return('1001')
|
162
|
+
re_rule.stub!(:rule).and_return(@rule)
|
163
|
+
|
164
|
+
updated_code = nil
|
165
|
+
@rule.should_receive(:after_add_to_workflow) do |re_workflow_code|
|
166
|
+
updated_code = re_workflow_code
|
249
167
|
end
|
250
|
-
|
251
|
-
|
252
|
-
@re_rule.id.should == @re_rule_id
|
168
|
+
re_rule.save
|
169
|
+
updated_code.should == '1001'
|
253
170
|
end
|
254
171
|
end
|
255
|
-
|
172
|
+
|
256
173
|
describe "before destroying a re_rule" do
|
257
174
|
it "should notify the rule" do
|
258
|
-
@
|
259
|
-
@
|
175
|
+
@re_workflow = mock('re_workflow', :code => "1001", :valid? => true)
|
176
|
+
@re_rule = ReRule.new(valid_attributes)
|
177
|
+
@re_rule.stub!(:re_workflow).and_return(@re_workflow)
|
178
|
+
|
179
|
+
@rule.should_receive(:before_remove_from_workflow).with("1001")
|
260
180
|
@re_rule.destroy
|
261
181
|
end
|
262
182
|
end
|
@@ -290,12 +210,12 @@ describe ReRule do
|
|
290
210
|
@re_rule.re_rule_expected_outcome_failure.should == outcome_1
|
291
211
|
end
|
292
212
|
|
293
|
-
it "should return all outcomes that are a
|
294
|
-
outcome_1 = ReRuleExpectedOutcome.new(:outcome => RulesEngine::RuleOutcome::
|
295
|
-
outcome_2 = ReRuleExpectedOutcome.new(:outcome => RulesEngine::RuleOutcome::
|
213
|
+
it "should return all outcomes that are a OUTCOME_START_WORKFLOW" do
|
214
|
+
outcome_1 = ReRuleExpectedOutcome.new(:outcome => RulesEngine::RuleOutcome::OUTCOME_START_WORKFLOW)
|
215
|
+
outcome_2 = ReRuleExpectedOutcome.new(:outcome => RulesEngine::RuleOutcome::OUTCOME_START_WORKFLOW)
|
296
216
|
@re_rule.re_rule_expected_outcomes << outcome_1
|
297
217
|
@re_rule.re_rule_expected_outcomes << outcome_2
|
298
|
-
@re_rule.
|
218
|
+
@re_rule.re_rule_expected_outcomes_start_workflow.should == [outcome_1, outcome_2]
|
299
219
|
end
|
300
220
|
end
|
301
221
|
|
@@ -309,54 +229,90 @@ describe ReRule do
|
|
309
229
|
|
310
230
|
it "should return '[title] class [class] invalid' if the rule is missing" do
|
311
231
|
@re_rule.should_receive(:rule).and_return(nil)
|
312
|
-
@re_rule.rule_error.should == "
|
232
|
+
@re_rule.rule_error.should == "class MockRuleClass missing"
|
313
233
|
end
|
314
234
|
|
315
|
-
it "should ignore outcomes where the
|
316
|
-
re_rule_expected_outcome = mock_model(ReRuleExpectedOutcome, :
|
235
|
+
it "should ignore outcomes where the workflow_code is nil" do
|
236
|
+
re_rule_expected_outcome = mock_model(ReRuleExpectedOutcome, :workflow_code => nil)
|
317
237
|
@re_rule.stub!(:re_rule_expected_outcomes).and_return([re_rule_expected_outcome])
|
318
238
|
@re_rule.rule_error.should be_nil
|
319
239
|
end
|
320
|
-
|
321
|
-
it "should validate the
|
322
|
-
re_rule_expected_outcome = mock_model(ReRuleExpectedOutcome, :
|
323
|
-
|
240
|
+
|
241
|
+
it "should validate the workflow is present and activated" do
|
242
|
+
re_rule_expected_outcome = mock_model(ReRuleExpectedOutcome, :workflow_code => "mock_workflow_code", :outcome => RulesEngine::RuleOutcome::OUTCOME_START_WORKFLOW)
|
243
|
+
ReWorkflow.should_receive(:find_by_code).and_return(mock("ReWorkflow", :workflow_error => nil))
|
324
244
|
@re_rule.stub!(:re_rule_expected_outcomes).and_return([re_rule_expected_outcome])
|
325
245
|
@re_rule.rule_error.should be_nil
|
326
246
|
end
|
327
247
|
|
328
|
-
it "should return '[
|
329
|
-
re_rule_expected_outcome = mock_model(ReRuleExpectedOutcome, :
|
330
|
-
|
248
|
+
it "should return '[workflow_code] missing' if the required workflow is missing" do
|
249
|
+
re_rule_expected_outcome = mock_model(ReRuleExpectedOutcome, :workflow_code => "mock_workflow_code", :outcome => RulesEngine::RuleOutcome::OUTCOME_START_WORKFLOW)
|
250
|
+
ReWorkflow.should_receive(:find_by_code).and_return(nil)
|
331
251
|
@re_rule.stub!(:re_rule_expected_outcomes).and_return([re_rule_expected_outcome])
|
332
|
-
@re_rule.rule_error.should == "
|
252
|
+
@re_rule.rule_error.should == "mock_workflow_code missing"
|
333
253
|
end
|
334
254
|
|
335
|
-
it "should return '[
|
336
|
-
re_rule_expected_outcome = mock_model(ReRuleExpectedOutcome, :
|
337
|
-
|
255
|
+
it "should return '[workflow_code] invalid' if the required workflow has errors" do
|
256
|
+
re_rule_expected_outcome = mock_model(ReRuleExpectedOutcome, :workflow_code => "mock_workflow_code", :outcome => RulesEngine::RuleOutcome::OUTCOME_START_WORKFLOW)
|
257
|
+
ReWorkflow.should_receive(:find_by_code).and_return(mock("ReWorkflow", :workflow_error => "workflow error"))
|
338
258
|
@re_rule.stub!(:re_rule_expected_outcomes).and_return([re_rule_expected_outcome])
|
339
|
-
@re_rule.rule_error.should == "
|
259
|
+
@re_rule.rule_error.should == "mock_workflow_code invalid"
|
340
260
|
end
|
341
261
|
|
342
262
|
end
|
343
263
|
|
344
264
|
describe "moving items in a list" do
|
345
265
|
it "should move a rule down in the list" do
|
346
|
-
|
347
|
-
|
266
|
+
re_workflow = ReWorkflow.create!(:code => "AA-MOCK",:title => "Mock Title")
|
267
|
+
|
348
268
|
re_rule_1 = ReRule.new(valid_attributes)
|
349
269
|
re_rule_2 = ReRule.new(valid_attributes)
|
350
|
-
|
351
|
-
|
270
|
+
re_workflow.re_rules << re_rule_1
|
271
|
+
re_workflow.re_rules << re_rule_2
|
352
272
|
|
353
|
-
|
273
|
+
re_workflow.reload
|
354
274
|
|
355
|
-
|
356
|
-
|
357
|
-
|
275
|
+
re_workflow.re_rules.should == [re_rule_1, re_rule_2]
|
276
|
+
re_workflow.re_rules[1].move_higher
|
277
|
+
re_workflow.reload
|
358
278
|
|
359
|
-
|
279
|
+
re_workflow.re_rules.should == [re_rule_2, re_rule_1]
|
360
280
|
end
|
361
281
|
end
|
282
|
+
|
283
|
+
describe "publish" do
|
284
|
+
it "should convert the rule to a hash" do
|
285
|
+
re_rule = ReRule.new(valid_attributes)
|
286
|
+
|
287
|
+
publish_data = re_rule.publish
|
288
|
+
publish_data["rule_class_name"].should == valid_attributes[:rule_class_name]
|
289
|
+
publish_data["title"].should == valid_attributes[:title]
|
290
|
+
publish_data["summary"].should == valid_attributes[:summary]
|
291
|
+
publish_data["data"].should == valid_attributes[:data]
|
292
|
+
end
|
293
|
+
end
|
294
|
+
|
295
|
+
describe "revert!" do
|
296
|
+
it "should return self" do
|
297
|
+
re_rule = ReRule.new
|
298
|
+
re_rule.revert!({}).should == re_rule
|
299
|
+
end
|
300
|
+
|
301
|
+
it "should set the rule based on the data" do
|
302
|
+
re_rule = ReRule.new
|
303
|
+
RulesEngine::Discovery.should_receive(:rule_class).with('mock_rule_class_name').and_return(@rule_class)
|
304
|
+
|
305
|
+
re_rule.revert!({
|
306
|
+
"rule_class_name" => 'mock_rule_class_name',
|
307
|
+
"title" => 'mock title',
|
308
|
+
"summary" => 'mock summary',
|
309
|
+
"data" => 'mock data'
|
310
|
+
})
|
311
|
+
|
312
|
+
re_rule[:rule_class_name].should == 'mock_rule_class_name'
|
313
|
+
re_rule[:title].should == 'mock title'
|
314
|
+
re_rule[:summary].should == 'mock summary'
|
315
|
+
re_rule[:data].should == 'mock data'
|
316
|
+
end
|
317
|
+
end
|
362
318
|
end
|