rules_engine 0.0.1

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 (288) hide show
  1. data/LICENSE +20 -0
  2. data/README.rdoc +17 -0
  3. data/VERSION +1 -0
  4. data/init.rb +1 -0
  5. data/lib/rules_engine/cache.rb +26 -0
  6. data/lib/rules_engine/discovery.rb +51 -0
  7. data/lib/rules_engine/job_runner.rb +115 -0
  8. data/lib/rules_engine/rule.rb +60 -0
  9. data/lib/rules_engine/rule_outcome.rb +13 -0
  10. data/lib/rules_engine.rb +6 -0
  11. data/rails_generators/USAGE +68 -0
  12. data/rails_generators/blacklist_word.yml +6 -0
  13. data/rails_generators/blacklist_word_manifest.rb +26 -0
  14. data/rails_generators/generator.yml +58 -0
  15. data/rails_generators/generator_manifest.rb +282 -0
  16. data/rails_generators/rules_engine_generator.rb +35 -0
  17. data/rails_generators/simple.yml +6 -0
  18. data/rails_generators/simple_manifest.rb +21 -0
  19. data/rails_generators/template_manifest.rb +13 -0
  20. data/rails_generators/templates/app/controllers/re_jobs_controller.rb +18 -0
  21. data/rails_generators/templates/app/controllers/re_pipeline_jobs_controller.rb +17 -0
  22. data/rails_generators/templates/app/controllers/re_pipelines_controller.rb +143 -0
  23. data/rails_generators/templates/app/controllers/re_rules_controller.rb +140 -0
  24. data/rails_generators/templates/app/helpers/re_pipeline_helper.rb +29 -0
  25. data/rails_generators/templates/app/models/re_job.rb +123 -0
  26. data/rails_generators/templates/app/models/re_job_audit.rb +21 -0
  27. data/rails_generators/templates/app/models/re_pipeline.rb +69 -0
  28. data/rails_generators/templates/app/models/re_pipeline_activated.rb +26 -0
  29. data/rails_generators/templates/app/models/re_pipeline_activated_observer.rb +11 -0
  30. data/rails_generators/templates/app/models/re_pipeline_base.rb +68 -0
  31. data/rails_generators/templates/app/models/re_rule.rb +78 -0
  32. data/rails_generators/templates/app/models/re_rule_outcome.rb +40 -0
  33. data/rails_generators/templates/app/rules/blacklist_word.rb +89 -0
  34. data/rails_generators/templates/app/rules/simple.rb +44 -0
  35. data/rails_generators/templates/app/rules/template.rb +51 -0
  36. data/rails_generators/templates/app/views/layouts/_blockUI.html.erb +3 -0
  37. data/rails_generators/templates/app/views/re_jobs/_empty.html.erb +11 -0
  38. data/rails_generators/templates/app/views/re_jobs/_index.html.erb +66 -0
  39. data/rails_generators/templates/app/views/re_jobs/_show.html.erb +43 -0
  40. data/rails_generators/templates/app/views/re_jobs/index.html.erb +21 -0
  41. data/rails_generators/templates/app/views/re_jobs/index.js.erb +9 -0
  42. data/rails_generators/templates/app/views/re_jobs/show.html.erb +12 -0
  43. data/rails_generators/templates/app/views/re_jobs/show.js.erb +1 -0
  44. data/rails_generators/templates/app/views/re_pipeline_jobs/_empty.html.erb +11 -0
  45. data/rails_generators/templates/app/views/re_pipeline_jobs/_index.html.erb +41 -0
  46. data/rails_generators/templates/app/views/re_pipeline_jobs/index.html.erb +21 -0
  47. data/rails_generators/templates/app/views/re_pipeline_jobs/index.js.erb +10 -0
  48. data/rails_generators/templates/app/views/re_pipelines/_change.html.erb +46 -0
  49. data/rails_generators/templates/app/views/re_pipelines/_change_actions.html.erb +34 -0
  50. data/rails_generators/templates/app/views/re_pipelines/_confirm.html.erb +40 -0
  51. data/rails_generators/templates/app/views/re_pipelines/_edit.html.erb +21 -0
  52. data/rails_generators/templates/app/views/re_pipelines/_empty.html.erb +13 -0
  53. data/rails_generators/templates/app/views/re_pipelines/_index.html.erb +58 -0
  54. data/rails_generators/templates/app/views/re_pipelines/_new.html.erb +18 -0
  55. data/rails_generators/templates/app/views/re_pipelines/_show.html.erb +32 -0
  56. data/rails_generators/templates/app/views/re_pipelines/_show_actions.html.erb +3 -0
  57. data/rails_generators/templates/app/views/re_pipelines/change.html.erb +37 -0
  58. data/rails_generators/templates/app/views/re_pipelines/create.js.erb +8 -0
  59. data/rails_generators/templates/app/views/re_pipelines/edit.html.erb +11 -0
  60. data/rails_generators/templates/app/views/re_pipelines/edit.js.erb +5 -0
  61. data/rails_generators/templates/app/views/re_pipelines/index.html.erb +14 -0
  62. data/rails_generators/templates/app/views/re_pipelines/new.html.erb +9 -0
  63. data/rails_generators/templates/app/views/re_pipelines/new.js.erb +5 -0
  64. data/rails_generators/templates/app/views/re_pipelines/show.html.erb +41 -0
  65. data/rails_generators/templates/app/views/re_pipelines/update.js.erb +13 -0
  66. data/rails_generators/templates/app/views/re_rule_definitions/blacklist_word/_edit.html.erb +7 -0
  67. data/rails_generators/templates/app/views/re_rule_definitions/blacklist_word/_help.html.erb +2 -0
  68. data/rails_generators/templates/app/views/re_rule_definitions/blacklist_word/_new.html.erb +7 -0
  69. data/rails_generators/templates/app/views/re_rule_definitions/blacklist_word/_pipeline.html.erb +18 -0
  70. data/rails_generators/templates/app/views/re_rule_definitions/blacklist_word/_script.html.erb +26 -0
  71. data/rails_generators/templates/app/views/re_rule_definitions/blacklist_word/_title.html.erb +6 -0
  72. data/rails_generators/templates/app/views/re_rule_definitions/blacklist_word/_word.html.erb +12 -0
  73. data/rails_generators/templates/app/views/re_rule_definitions/blacklist_word/_words.html.erb +16 -0
  74. data/rails_generators/templates/app/views/re_rule_definitions/simple/_edit.html.erb +6 -0
  75. data/rails_generators/templates/app/views/re_rule_definitions/simple/_help.html.erb +2 -0
  76. data/rails_generators/templates/app/views/re_rule_definitions/simple/_new.html.erb +6 -0
  77. data/rails_generators/templates/app/views/re_rule_definitions/template/_edit.html.erb +6 -0
  78. data/rails_generators/templates/app/views/re_rule_definitions/template/_help.html.erb +2 -0
  79. data/rails_generators/templates/app/views/re_rule_definitions/template/_new.html.erb +6 -0
  80. data/rails_generators/templates/app/views/re_rules/_change.html.erb +57 -0
  81. data/rails_generators/templates/app/views/re_rules/_edit.html.erb +25 -0
  82. data/rails_generators/templates/app/views/re_rules/_empty.html.erb +12 -0
  83. data/rails_generators/templates/app/views/re_rules/_empty.js.erb +7 -0
  84. data/rails_generators/templates/app/views/re_rules/_error.html.erb +3 -0
  85. data/rails_generators/templates/app/views/re_rules/_help.html.erb +13 -0
  86. data/rails_generators/templates/app/views/re_rules/_index.html.erb +38 -0
  87. data/rails_generators/templates/app/views/re_rules/_menu.html.erb +41 -0
  88. data/rails_generators/templates/app/views/re_rules/_new.html.erb +26 -0
  89. data/rails_generators/templates/app/views/re_rules/_show.html.erb +43 -0
  90. data/rails_generators/templates/app/views/re_rules/destroy.js.erb +13 -0
  91. data/rails_generators/templates/app/views/re_rules/edit.html.erb +11 -0
  92. data/rails_generators/templates/app/views/re_rules/edit.js.erb +5 -0
  93. data/rails_generators/templates/app/views/re_rules/error.html.erb +11 -0
  94. data/rails_generators/templates/app/views/re_rules/error.js.erb +3 -0
  95. data/rails_generators/templates/app/views/re_rules/help.html.erb +11 -0
  96. data/rails_generators/templates/app/views/re_rules/help.js.erb +2 -0
  97. data/rails_generators/templates/app/views/re_rules/new.html.erb +11 -0
  98. data/rails_generators/templates/app/views/re_rules/new.js.erb +5 -0
  99. data/rails_generators/templates/app/views/re_rules/update.js.erb +20 -0
  100. data/rails_generators/templates/db/migrate/20100308225008_create_re_pipelines.rb +74 -0
  101. data/rails_generators/templates/lib/tasks/re_runner.rake +12 -0
  102. data/rails_generators/templates/public/images/re_job/error-14.png +0 -0
  103. data/rails_generators/templates/public/images/re_job/error-18.png +0 -0
  104. data/rails_generators/templates/public/images/re_job/error-25.png +0 -0
  105. data/rails_generators/templates/public/images/re_job/error-48.png +0 -0
  106. data/rails_generators/templates/public/images/re_job/goto-16.png +0 -0
  107. data/rails_generators/templates/public/images/re_job/info-14.png +0 -0
  108. data/rails_generators/templates/public/images/re_job/info-18.png +0 -0
  109. data/rails_generators/templates/public/images/re_job/info-25.png +0 -0
  110. data/rails_generators/templates/public/images/re_job/info-48.png +0 -0
  111. data/rails_generators/templates/public/images/re_job/list-14.png +0 -0
  112. data/rails_generators/templates/public/images/re_job/list-18.png +0 -0
  113. data/rails_generators/templates/public/images/re_job/list-25.png +0 -0
  114. data/rails_generators/templates/public/images/re_job/list-48.png +0 -0
  115. data/rails_generators/templates/public/images/re_job/loadingAnimation.gif +0 -0
  116. data/rails_generators/templates/public/images/re_job/next-disabled-14.png +0 -0
  117. data/rails_generators/templates/public/images/re_job/next-disabled-18.png +0 -0
  118. data/rails_generators/templates/public/images/re_job/next-disabled-25.png +0 -0
  119. data/rails_generators/templates/public/images/re_job/next-disabled-48.png +0 -0
  120. data/rails_generators/templates/public/images/re_job/next-enabled-14.png +0 -0
  121. data/rails_generators/templates/public/images/re_job/next-enabled-18.png +0 -0
  122. data/rails_generators/templates/public/images/re_job/next-enabled-25.png +0 -0
  123. data/rails_generators/templates/public/images/re_job/next-enabled-48.png +0 -0
  124. data/rails_generators/templates/public/images/re_job/prev-disabled-14.png +0 -0
  125. data/rails_generators/templates/public/images/re_job/prev-disabled-18.png +0 -0
  126. data/rails_generators/templates/public/images/re_job/prev-disabled-25.png +0 -0
  127. data/rails_generators/templates/public/images/re_job/prev-disabled-48.png +0 -0
  128. data/rails_generators/templates/public/images/re_job/prev-enabled-14.png +0 -0
  129. data/rails_generators/templates/public/images/re_job/prev-enabled-18.png +0 -0
  130. data/rails_generators/templates/public/images/re_job/prev-enabled-25.png +0 -0
  131. data/rails_generators/templates/public/images/re_job/prev-enabled-48.png +0 -0
  132. data/rails_generators/templates/public/images/re_job/success-14.png +0 -0
  133. data/rails_generators/templates/public/images/re_job/success-18.png +0 -0
  134. data/rails_generators/templates/public/images/re_job/success-25.png +0 -0
  135. data/rails_generators/templates/public/images/re_job/success-48.png +0 -0
  136. data/rails_generators/templates/public/images/re_pipeline/__destroy-14.png +0 -0
  137. data/rails_generators/templates/public/images/re_pipeline/__destroy-18.png +0 -0
  138. data/rails_generators/templates/public/images/re_pipeline/__destroy-25.png +0 -0
  139. data/rails_generators/templates/public/images/re_pipeline/__destroy-48.png +0 -0
  140. data/rails_generators/templates/public/images/re_pipeline/activate-14.png +0 -0
  141. data/rails_generators/templates/public/images/re_pipeline/activate-18.png +0 -0
  142. data/rails_generators/templates/public/images/re_pipeline/activate-25.png +0 -0
  143. data/rails_generators/templates/public/images/re_pipeline/activate-48.png +0 -0
  144. data/rails_generators/templates/public/images/re_pipeline/alert-14.png +0 -0
  145. data/rails_generators/templates/public/images/re_pipeline/alert-18.png +0 -0
  146. data/rails_generators/templates/public/images/re_pipeline/alert-25.png +0 -0
  147. data/rails_generators/templates/public/images/re_pipeline/alert-48.png +0 -0
  148. data/rails_generators/templates/public/images/re_pipeline/change-14.png +0 -0
  149. data/rails_generators/templates/public/images/re_pipeline/change-18.png +0 -0
  150. data/rails_generators/templates/public/images/re_pipeline/change-25.png +0 -0
  151. data/rails_generators/templates/public/images/re_pipeline/change-48.png +0 -0
  152. data/rails_generators/templates/public/images/re_pipeline/changed-14.png +0 -0
  153. data/rails_generators/templates/public/images/re_pipeline/changed-18.png +0 -0
  154. data/rails_generators/templates/public/images/re_pipeline/changed-25.png +0 -0
  155. data/rails_generators/templates/public/images/re_pipeline/changed-48.png +0 -0
  156. data/rails_generators/templates/public/images/re_pipeline/current-14.png +0 -0
  157. data/rails_generators/templates/public/images/re_pipeline/current-18.png +0 -0
  158. data/rails_generators/templates/public/images/re_pipeline/current-25.png +0 -0
  159. data/rails_generators/templates/public/images/re_pipeline/current-48.png +0 -0
  160. data/rails_generators/templates/public/images/re_pipeline/deactivate-14.png +0 -0
  161. data/rails_generators/templates/public/images/re_pipeline/deactivate-18.png +0 -0
  162. data/rails_generators/templates/public/images/re_pipeline/deactivate-25.png +0 -0
  163. data/rails_generators/templates/public/images/re_pipeline/deactivate-48.png +0 -0
  164. data/rails_generators/templates/public/images/re_pipeline/destroy-14.png +0 -0
  165. data/rails_generators/templates/public/images/re_pipeline/destroy-18.png +0 -0
  166. data/rails_generators/templates/public/images/re_pipeline/destroy-25.png +0 -0
  167. data/rails_generators/templates/public/images/re_pipeline/destroy-48.png +0 -0
  168. data/rails_generators/templates/public/images/re_pipeline/draft-14.png +0 -0
  169. data/rails_generators/templates/public/images/re_pipeline/draft-18.png +0 -0
  170. data/rails_generators/templates/public/images/re_pipeline/draft-25.png +0 -0
  171. data/rails_generators/templates/public/images/re_pipeline/draft-48.png +0 -0
  172. data/rails_generators/templates/public/images/re_pipeline/edit-14.png +0 -0
  173. data/rails_generators/templates/public/images/re_pipeline/edit-18.png +0 -0
  174. data/rails_generators/templates/public/images/re_pipeline/edit-25.png +0 -0
  175. data/rails_generators/templates/public/images/re_pipeline/edit-48.png +0 -0
  176. data/rails_generators/templates/public/images/re_pipeline/list-14.png +0 -0
  177. data/rails_generators/templates/public/images/re_pipeline/list-18.png +0 -0
  178. data/rails_generators/templates/public/images/re_pipeline/list-25.png +0 -0
  179. data/rails_generators/templates/public/images/re_pipeline/list-48.png +0 -0
  180. data/rails_generators/templates/public/images/re_pipeline/list-down.png +0 -0
  181. data/rails_generators/templates/public/images/re_pipeline/list-right.png +0 -0
  182. data/rails_generators/templates/public/images/re_pipeline/new-14.png +0 -0
  183. data/rails_generators/templates/public/images/re_pipeline/new-18.png +0 -0
  184. data/rails_generators/templates/public/images/re_pipeline/new-25.png +0 -0
  185. data/rails_generators/templates/public/images/re_pipeline/new-48.png +0 -0
  186. data/rails_generators/templates/public/images/re_pipeline/revert-14.png +0 -0
  187. data/rails_generators/templates/public/images/re_pipeline/revert-18.png +0 -0
  188. data/rails_generators/templates/public/images/re_pipeline/revert-25.png +0 -0
  189. data/rails_generators/templates/public/images/re_pipeline/revert-48.png +0 -0
  190. data/rails_generators/templates/public/images/re_pipeline/show-14.png +0 -0
  191. data/rails_generators/templates/public/images/re_pipeline/show-18.png +0 -0
  192. data/rails_generators/templates/public/images/re_pipeline/show-25.png +0 -0
  193. data/rails_generators/templates/public/images/re_pipeline/show-48.png +0 -0
  194. data/rails_generators/templates/public/images/re_pipeline/verify-14.png +0 -0
  195. data/rails_generators/templates/public/images/re_pipeline/verify-18.png +0 -0
  196. data/rails_generators/templates/public/images/re_pipeline/verify-25.png +0 -0
  197. data/rails_generators/templates/public/images/re_pipeline/verify-48.png +0 -0
  198. data/rails_generators/templates/public/images/re_rule/__destroy-14.png +0 -0
  199. data/rails_generators/templates/public/images/re_rule/__destroy-18.png +0 -0
  200. data/rails_generators/templates/public/images/re_rule/__destroy-25.png +0 -0
  201. data/rails_generators/templates/public/images/re_rule/__destroy-48.png +0 -0
  202. data/rails_generators/templates/public/images/re_rule/destroy-14.png +0 -0
  203. data/rails_generators/templates/public/images/re_rule/destroy-18.png +0 -0
  204. data/rails_generators/templates/public/images/re_rule/destroy-25.png +0 -0
  205. data/rails_generators/templates/public/images/re_rule/destroy-48.png +0 -0
  206. data/rails_generators/templates/public/images/re_rule/edit-14.png +0 -0
  207. data/rails_generators/templates/public/images/re_rule/edit-18.png +0 -0
  208. data/rails_generators/templates/public/images/re_rule/edit-25.png +0 -0
  209. data/rails_generators/templates/public/images/re_rule/edit-48.png +0 -0
  210. data/rails_generators/templates/public/images/re_rule/goto-pipeline-14.png +0 -0
  211. data/rails_generators/templates/public/images/re_rule/goto-pipeline-18.png +0 -0
  212. data/rails_generators/templates/public/images/re_rule/move-down-14.png +0 -0
  213. data/rails_generators/templates/public/images/re_rule/move-down-18.png +0 -0
  214. data/rails_generators/templates/public/images/re_rule/move-down-25.png +0 -0
  215. data/rails_generators/templates/public/images/re_rule/move-down-48.png +0 -0
  216. data/rails_generators/templates/public/images/re_rule/move-down-off-14.png +0 -0
  217. data/rails_generators/templates/public/images/re_rule/move-down-off-18.png +0 -0
  218. data/rails_generators/templates/public/images/re_rule/move-down-off-25.png +0 -0
  219. data/rails_generators/templates/public/images/re_rule/move-down-off-48.png +0 -0
  220. data/rails_generators/templates/public/images/re_rule/move-up-14.png +0 -0
  221. data/rails_generators/templates/public/images/re_rule/move-up-18.png +0 -0
  222. data/rails_generators/templates/public/images/re_rule/move-up-25.png +0 -0
  223. data/rails_generators/templates/public/images/re_rule/move-up-48.png +0 -0
  224. data/rails_generators/templates/public/images/re_rule/move-up-off-14.png +0 -0
  225. data/rails_generators/templates/public/images/re_rule/move-up-off-18.png +0 -0
  226. data/rails_generators/templates/public/images/re_rule/move-up-off-25.png +0 -0
  227. data/rails_generators/templates/public/images/re_rule/move-up-off-48.png +0 -0
  228. data/rails_generators/templates/public/images/re_rule/next-change-14.png +0 -0
  229. data/rails_generators/templates/public/images/re_rule/next-change-18.png +0 -0
  230. data/rails_generators/templates/public/images/re_rule/next-change-25.png +0 -0
  231. data/rails_generators/templates/public/images/re_rule/next-change-48.png +0 -0
  232. data/rails_generators/templates/public/images/re_rule/next-show-14.png +0 -0
  233. data/rails_generators/templates/public/images/re_rule/next-show-18.png +0 -0
  234. data/rails_generators/templates/public/images/re_rule/next-show-25.png +0 -0
  235. data/rails_generators/templates/public/images/re_rule/next-show-48.png +0 -0
  236. data/rails_generators/templates/public/images/re_rule/stop-failure-14.png +0 -0
  237. data/rails_generators/templates/public/images/re_rule/stop-failure-18.png +0 -0
  238. data/rails_generators/templates/public/images/re_rule/stop-failure-25.png +0 -0
  239. data/rails_generators/templates/public/images/re_rule/stop-failure-48.png +0 -0
  240. data/rails_generators/templates/public/images/re_rule/stop-success-14.png +0 -0
  241. data/rails_generators/templates/public/images/re_rule/stop-success-18.png +0 -0
  242. data/rails_generators/templates/public/images/re_rule/stop-success-25.png +0 -0
  243. data/rails_generators/templates/public/images/re_rule/stop-success-48.png +0 -0
  244. data/rails_generators/templates/public/images/re_rule/valid-14.png +0 -0
  245. data/rails_generators/templates/public/images/re_rule/valid-18.png +0 -0
  246. data/rails_generators/templates/public/images/re_rule/valid-25.png +0 -0
  247. data/rails_generators/templates/public/images/re_rule/valid-48.png +0 -0
  248. data/rails_generators/templates/public/images/re_rule/verify-14.png +0 -0
  249. data/rails_generators/templates/public/images/re_rule/verify-18.png +0 -0
  250. data/rails_generators/templates/public/images/re_rule/verify-25.png +0 -0
  251. data/rails_generators/templates/public/images/re_rule/verify-48.png +0 -0
  252. data/rails_generators/templates/public/images/re_rule_class/add-14.png +0 -0
  253. data/rails_generators/templates/public/images/re_rule_class/add-18.png +0 -0
  254. data/rails_generators/templates/public/images/re_rule_class/add-25.png +0 -0
  255. data/rails_generators/templates/public/images/re_rule_class/add-48.png +0 -0
  256. data/rails_generators/templates/public/images/re_rule_class/help-14.png +0 -0
  257. data/rails_generators/templates/public/images/re_rule_class/help-18.png +0 -0
  258. data/rails_generators/templates/public/images/re_rule_class/help-25.png +0 -0
  259. data/rails_generators/templates/public/images/re_rule_class/help-48.png +0 -0
  260. data/rails_generators/templates/public/images/re_rule_class/list-down.png +0 -0
  261. data/rails_generators/templates/public/images/re_rule_class/list-right.png +0 -0
  262. data/rails_generators/templates/public/images/re_rule_class/new-14.png +0 -0
  263. data/rails_generators/templates/public/images/re_rule_class/new-18.png +0 -0
  264. data/rails_generators/templates/public/images/re_rule_class/new-25.png +0 -0
  265. data/rails_generators/templates/public/images/re_rule_class/new-48.png +0 -0
  266. data/rails_generators/templates/public/javascripts/re_jobs.js +59 -0
  267. data/rails_generators/templates/public/javascripts/re_pipeline.js +54 -0
  268. data/rails_generators/templates/public/javascripts/re_pipeline_change.js +205 -0
  269. data/rails_generators/templates/public/javascripts/re_pipeline_index.js +24 -0
  270. data/rails_generators/templates/public/javascripts/re_pipeline_jobs.js +61 -0
  271. data/rails_generators/templates/public/javascripts/re_pipeline_new.js +34 -0
  272. data/rails_generators/templates/public/stylesheets/re_pipeline/accept.png +0 -0
  273. data/rails_generators/templates/public/stylesheets/re_pipeline/exclamation.png +0 -0
  274. data/rails_generators/templates/public/stylesheets/re_pipeline.css +509 -0
  275. data/rails_generators/templates/spec/controllers/re_pipelines_controller_spec.rb +111 -0
  276. data/rails_generators/templates/spec/models/re_job_audit_spec.rb +24 -0
  277. data/rails_generators/templates/spec/models/re_job_spec.rb +18 -0
  278. data/rails_generators/templates/spec/models/re_pipeline_activated_spec.rb +6 -0
  279. data/rails_generators/templates/spec/models/re_pipeline_base_spec.rb +157 -0
  280. data/rails_generators/templates/spec/models/re_pipeline_spec.rb +166 -0
  281. data/rails_generators/templates/spec/models/re_rule_outcome_spec.rb +97 -0
  282. data/rails_generators/templates/spec/models/re_rule_spec.rb +171 -0
  283. data/rails_generators/templates/spec/support/blueprint_re_pipelines.rb +11 -0
  284. data/spec/rules_engine_spec.rb +7 -0
  285. data/spec/spec.opts +1 -0
  286. data/spec/spec_helper.rb +9 -0
  287. data/tasks/rspec.rake +18 -0
  288. metadata +363 -0
@@ -0,0 +1,509 @@
1
+ /* CHANGE THE RULES MENU */
2
+ .rules-menu .shadowbox-outer{
3
+ padding-bottom: 15px;
4
+ }
5
+
6
+ /* @group ALERTS */
7
+ .growl-error {
8
+ font-size: 1.4em;
9
+ background: #fff6bf url("./re_pipeline/exclamation.png") center no-repeat;
10
+ background-position: 15px 50%; /* x-pos y-pos */
11
+ text-align: left;
12
+ padding: 5px 0px 5px 45px;
13
+ border-bottom: 2px solid #ffd324;
14
+ margin-left: auto;
15
+ margin-right: auto;
16
+ }
17
+
18
+ .growl-success {
19
+ font-size: 1.4em;
20
+ background: #fff6bf url("./re_pipeline/accept.png") center no-repeat;
21
+ background-position: 15px 50%; /* x-pos y-pos */
22
+ text-align: left;
23
+ padding: 5px 0px 5px 45px;
24
+ border-bottom: 2px solid #92b83c;
25
+ margin-left: auto;
26
+ margin-right: auto;
27
+ }
28
+
29
+ .growl-notice {
30
+ font-size: 1.4em;
31
+ background: #fff6bf url("./re_pipeline/exclamation.png") center no-repeat;
32
+ background-position: 15px 50%; /* x-pos y-pos */
33
+ text-align: left;
34
+ padding: 5px 0px 5px 45px;
35
+ border-bottom: 2px solid #ffd324;
36
+ margin-left: auto;
37
+ margin-right: auto;
38
+ }
39
+
40
+ .alert-notice span {
41
+ color : #b43838;
42
+ }
43
+
44
+ /* popup windows */
45
+ #tb_temp_frame {
46
+ margin-top: 10px;
47
+ display : none;
48
+ }
49
+ #TB_ajaxContent{
50
+ padding:15px 10px 5px 10px;
51
+ }
52
+
53
+ /* subnav title items */
54
+ .subnavitems li a.pipeline-new {
55
+ background: transparent url('/images/re_pipeline/new-25.png') no-repeat 0 2px;
56
+ padding: 0px 0 0 28px;
57
+ }
58
+ .subnavitems li a.pipeline-show {
59
+ background: transparent url('/images/re_pipeline/show-25.png') no-repeat 0 2px;
60
+ padding: 0px 0 0 28px;
61
+ }
62
+ .subnavitems li a.pipeline-change {
63
+ background: transparent url('/images/re_pipeline/change-25.png') no-repeat 0 2px;
64
+ padding: 0px 0 0 28px;
65
+ }
66
+ .subnavitems li a.pipeline-list {
67
+ background: transparent url('/images/re_pipeline/list-25.png') no-repeat 0 2px;
68
+ padding: 0px 0 0 28px;
69
+ }
70
+
71
+ /* sub headers*/
72
+ h2.pipeline-alert {
73
+ background: transparent url('/images/re_pipeline/alert-25.png') no-repeat left top;
74
+ padding: 0px 0 0 28px;
75
+ }
76
+ h2.pipeline-list {
77
+ background: transparent url('/images/re_pipeline/list-25.png') no-repeat left top;
78
+ padding: 0px 0 0 28px;
79
+ }
80
+ h2.pipeline-new {
81
+ background: transparent url('/images/re_pipeline/new-25.png') no-repeat left top;
82
+ padding: 0px 0 0 28px;
83
+ }
84
+ h2.pipeline-edit {
85
+ background: transparent url('/images/re_pipeline/edit-25.png') no-repeat left top;
86
+ padding: 0px 0 0 28px;
87
+ }
88
+ h2.pipeline-change {
89
+ background: transparent url('/images/re_pipeline/change-25.png') no-repeat left top;
90
+ padding: 0px 0 0 28px;
91
+ }
92
+ h2.pipeline-activate {
93
+ background: transparent url('/images/re_pipeline/activate-25.png') no-repeat left top;
94
+ padding: 0px 0 0 28px;
95
+ }
96
+ h2.pipeline-deactivate {
97
+ background: transparent url('/images/re_pipeline/deactivate-25.png') no-repeat left top;
98
+ padding: 0px 0 0 28px;
99
+ }
100
+ h2.pipeline-revert {
101
+ background: transparent url('/images/re_pipeline/revert-25.png') no-repeat left top;
102
+ padding: 0px 0 0 28px;
103
+ }
104
+ h2.pipeline-delete {
105
+ background: transparent url('/images/re_pipeline/destroy-25.png') no-repeat left top;
106
+ padding: 0px 0 0 28px;
107
+ }
108
+
109
+ /* pipeline-status*/
110
+ h3.pipeline-status-draft {
111
+ background: transparent url('/images/re_pipeline/draft-25.png') no-repeat left top;
112
+ padding: 0px 0 0 28px;
113
+ }
114
+ h3.pipeline-status-changed {
115
+ background: transparent url('/images/re_pipeline/changed-25.png') no-repeat left top;
116
+ padding: 0px 0 0 28px;
117
+ }
118
+ h3.pipeline-status-current {
119
+ background: transparent url('/images/re_pipeline/current-25.png') no-repeat left top;
120
+ padding: 0px 0 0 28px;
121
+ }
122
+ h3.pipeline-status-verify {
123
+ background: transparent url('/images/re_pipeline/verify-25.png') no-repeat left top;
124
+ padding: 0px 0 0 28px;
125
+ }
126
+ /* pipeline status text */
127
+ em.pipeline-status-draft {
128
+ color: #696969;
129
+ }
130
+ em.pipeline-status-changed {
131
+ color: #92b83c;
132
+ }
133
+ em.pipeline-status-current {
134
+ color: #218868;
135
+ }
136
+ em.pipeline-status-verify {
137
+ color: #b43838;
138
+ }
139
+
140
+ /* pipeline actions */
141
+ h3.pipeline-show {
142
+ padding: 0;
143
+ }
144
+ h3.pipeline-show a {
145
+ background: transparent url('/images/re_pipeline/show-25.png') no-repeat left -1px;
146
+ padding: 0px 0 0 28px;
147
+ color: #92b83c;
148
+ text-decoration: none;
149
+ }
150
+ h3.pipeline-change {
151
+ padding: 0;
152
+ }
153
+ h3.pipeline-change a {
154
+ background: transparent url('/images/re_pipeline/change-25.png') no-repeat left -1px;
155
+ padding: 0px 0 0 28px;
156
+ color: #218868;
157
+ text-decoration: none;
158
+ }
159
+ h3.pipeline-edit {
160
+ padding: 0;
161
+ }
162
+ h3.pipeline-edit a {
163
+ background: transparent url('/images/re_pipeline/edit-25.png') no-repeat left -1px;
164
+ padding: 0px 0 0 28px;
165
+ color: #218868;
166
+ text-decoration: none;
167
+ }
168
+ h3.pipeline-activate {
169
+ padding: 0;
170
+ }
171
+ h3.pipeline-activate a {
172
+ background: transparent url('/images/re_pipeline/activate-25.png') no-repeat left -1px;
173
+ padding: 0px 0 0 28px;
174
+ color: #92b83c;
175
+ text-decoration: none;
176
+ }
177
+ h3.pipeline-deactivate {
178
+ padding: 0;
179
+ }
180
+ h3.pipeline-deactivate a {
181
+ background: transparent url('/images/re_pipeline/deactivate-25.png') no-repeat left -1px;
182
+ padding: 0px 0 0 28px;
183
+ color: #b43838;
184
+ text-decoration: none;
185
+ }
186
+ h3.pipeline-revert {
187
+ padding: 0;
188
+ }
189
+ h3.pipeline-revert a {
190
+ background: transparent url('/images/re_pipeline/revert-25.png') no-repeat left -1px;
191
+ padding: 0px 0 0 28px;
192
+ color: #b43838;
193
+ text-decoration: none;
194
+ }
195
+ h3.pipeline-delete {
196
+ padding: 0;
197
+ }
198
+ h3.pipeline-delete a {
199
+ background: transparent url('/images/re_pipeline/destroy-25.png') no-repeat left -1px;
200
+ padding: 0px 0 0 28px;
201
+ color: #b43838;
202
+ text-decoration: none;
203
+ }
204
+
205
+ a.pipeline-rule-list-toggle {
206
+ text-decoration: none;
207
+ }
208
+ div.pipeline-rule-list-right {
209
+ background: transparent url('/images/re_pipeline/list-right.png') no-repeat 0px 6px;
210
+ padding: 2px 0 4px 12px;
211
+ color: #696969;
212
+ }
213
+ div.pipeline-rule-list-down {
214
+ background: transparent url('/images/re_pipeline/list-down.png') no-repeat 0px 6px;
215
+ padding: 2px 0 4px 12px;
216
+ color: #696969;
217
+ }
218
+
219
+ /* rules */
220
+ h2.rule-class-new {
221
+ background: transparent url('/images/re_rule_class/new-25.png') no-repeat left top;
222
+ padding: 0px 0 0 28px;
223
+ }
224
+ h2.rule-class-help {
225
+ background: transparent url('/images/re_rule_class/help-25.png') no-repeat left top;
226
+ padding: 0px 0 0 28px;
227
+ }
228
+ h2.rule-edit {
229
+ background: transparent url('/images/re_rule/edit-25.png') no-repeat left top;
230
+ padding: 0px 0 0 28px;
231
+ }
232
+
233
+ .rule-show div.rule-status-valid {
234
+ background: transparent url('/images/re_rule/valid-18.png') no-repeat 2px 2px;
235
+ padding: 2px 0 4px 24px;
236
+ }
237
+ .rule-show div.rule-status-verify {
238
+ background: #FBE3E4 url('/images/re_rule/verify-18.png') no-repeat 2px 2px;
239
+ padding: 2px 0 4px 24px;
240
+ }
241
+ .rule-change h3 {
242
+ margin: 0;
243
+ padding: 0;
244
+ }
245
+ .rule-change div.rule-status-valid {
246
+ background: transparent url('/images/re_rule/valid-25.png') no-repeat 2px 2px;
247
+ padding: 2px 0 4px 31px;
248
+ }
249
+ .rule-change div.rule-status-verify {
250
+ background: #FBE3E4 url('/images/re_rule/verify-25.png') no-repeat 2px 2px;
251
+ padding: 2px 0 4px 31px;
252
+ }
253
+ .rule-next-change {
254
+ background: transparent url('/images/re_rule/next-change-25.png') no-repeat 0px 7px;
255
+ width: 40px;
256
+ height: 40px;
257
+ }
258
+ .rule-next-show {
259
+ background: transparent url('/images/re_rule/next-show-18.png') no-repeat 0px 30px;
260
+ width: 24px;
261
+ height: 54px;
262
+ }
263
+ .rule-continue {
264
+ width: 145px;
265
+ background: #fffef0 url('/images/re_rule/next-show-18.png') no-repeat 155px 2px;
266
+ font-weight: bold;
267
+ border: 1px #92b83c solid;
268
+ padding: 3px 24px 3px 6px;
269
+ margin: 0 2px 4px 2px;
270
+ }
271
+ .rule-stop-failure {
272
+ width: 145px;
273
+ background: #FBE3E4 url('/images/re_rule/stop-failure-18.png') no-repeat 155px 2px;
274
+ font-weight: bold;
275
+ border: 1px #7c1e1e solid;
276
+ padding: 3px 24px 3px 6px;
277
+ margin: 0 2px 4px 2px;
278
+ }
279
+ .rule-stop-success {
280
+ width: 145px;
281
+ background: #fffef0 url('/images/re_rule/stop-success-18.png') no-repeat 155px 2px;
282
+ font-weight: bold;
283
+ border: 1px #7c1e1e solid;
284
+ padding: 3px 24px 3px 6px;
285
+ margin: 0 2px 4px 2px;
286
+ }
287
+ .rule-goto-pipeline {
288
+ width: 145px;
289
+ background: #fffef0 url('/images/re_rule/goto-pipeline-18.png') no-repeat 155px 2px;
290
+ font-weight: bold;
291
+ border: 1px #92b83c solid;
292
+ padding: 3px 24px 3px 6px;
293
+ margin: 0 2px 4px 2px;
294
+ }
295
+ a.rule-edit {
296
+ float:right;
297
+ background: transparent url('/images/re_rule/edit-25.png') no-repeat 0px 0px;
298
+ width: 25px;
299
+ height: 25px;
300
+ }
301
+ a.rule-edit span {
302
+ display: none;
303
+ }
304
+ a.rule-delete {
305
+ float:right;
306
+ background: transparent url('/images/re_rule/destroy-25.png') no-repeat 0px 0px;
307
+ width: 25px;
308
+ height: 25px;
309
+ }
310
+ a.rule-delete span {
311
+ display: none;
312
+ }
313
+ a.rule-move-down {
314
+ float:right;
315
+ background: transparent url('/images/re_rule/move-down-25.png') no-repeat 0px 0px;
316
+ width: 25px;
317
+ height: 25px;
318
+ margin-right: 20px;
319
+ }
320
+ a.rule-move-down span {
321
+ display: none;
322
+ }
323
+ a.rule-move-down-off {
324
+ float:right;
325
+ background: transparent url('/images/re_rule/move-down-off-25.png') no-repeat 0px 0px;
326
+ width: 25px;
327
+ height: 25px;
328
+ margin-right: 20px;
329
+ }
330
+ a.rule-move-down-off span {
331
+ display: none;
332
+ }
333
+ a.rule-move-up {
334
+ float:right;
335
+ background: transparent url('/images/re_rule/move-up-25.png') no-repeat 0px 0px;
336
+ width: 25px;
337
+ height: 25px;
338
+ margin-right: 3px;
339
+ }
340
+ a.rule-move-up span {
341
+ display: none;
342
+ }
343
+ a.rule-move-up-off {
344
+ float:right;
345
+ background: transparent url('/images/re_rule/move-up-off-25.png') no-repeat 0px 0px;
346
+ width: 25px;
347
+ height: 25px;
348
+ margin-right: 3px;
349
+ }
350
+ a.rule-move-up-off span {
351
+ display: none;
352
+ }
353
+
354
+
355
+ /* rule-classes */
356
+ a.rule-class-list-toggle {
357
+ text-decoration: none;
358
+ }
359
+ h5.rule-class-list-right {
360
+ background: transparent url('/images/re_rule_class/list-right.png') no-repeat 0px 6px;
361
+ padding: 2px 0 4px 12px;
362
+ }
363
+ h5.rule-class-list-down {
364
+ background: transparent url('/images/re_rule_class/list-down.png') no-repeat 0px 6px;
365
+ padding: 2px 0 4px 12px;
366
+ }
367
+ .rule-class-list h5 {
368
+ float: left;
369
+ }
370
+ a.rule-class-new {
371
+ float: right;
372
+ background: transparent url('/images/re_rule_class/add-14.png') no-repeat 4px 6px;
373
+ width: 20px;
374
+ height: 20px;
375
+ }
376
+ a.rule-class-new span {
377
+ display: none;
378
+ }
379
+ a.rule-class-help {
380
+ float: right;
381
+ background: transparent url('/images/re_rule_class/help-14.png') no-repeat 4px 6px;
382
+ width: 20px;
383
+ height: 20px;
384
+ }
385
+ a.rule-class-help span {
386
+ display: none;
387
+ }
388
+ .rule-class-list p {
389
+ clear: both;
390
+ padding-left: 12px;
391
+ }
392
+
393
+ /* jobs */
394
+ #job_list h3 {
395
+ color: #244A9F;
396
+ background: transparent url('/images/re_job/list-25.png') no-repeat 0px 4px;
397
+ padding: 5px 0 5px 32px;
398
+ }
399
+ .job-show h3 {
400
+ background: transparent url('/images/re_job/list-25.png') no-repeat 0px 0px;
401
+ padding: 0px 0 5px 32px;
402
+ }
403
+
404
+ #job_list_empty h3 {
405
+ font-size:16px;
406
+ line-height:18px;
407
+ font-weight:normal;
408
+ padding-top:4px;
409
+ padding-bottom:3px;
410
+ margin: 0px 3px;
411
+ }
412
+
413
+ #job_list_empty h4 {
414
+ font-size:16px;
415
+ line-height:18px;
416
+ font-weight:normal;
417
+ padding-top:4px;
418
+ padding-bottom:3px;
419
+ margin: 0px 3px;
420
+ }
421
+
422
+ #job_list_pending {
423
+ background: transparent url('/images/re_job/loadingAnimation.gif') no-repeat 20px 10px;
424
+ padding : 20px 0px 5px 15px;
425
+ }
426
+ #job_list_pending h3 {
427
+ background: transparent url('/images/re_job/list-25.png') no-repeat 0px 4px;
428
+ padding: 5px 0 5px 32px;
429
+ color: #bbb;
430
+ }
431
+ .job-success {
432
+ background: transparent url('/images/re_job/success-14.png') no-repeat 0px 2px;
433
+ height: 16px;
434
+ padding-left: 20px;
435
+ }
436
+
437
+ .job-error {
438
+ background: transparent url('/images/re_job/error-14.png') no-repeat 0px 2px;
439
+ height: 16px;
440
+ padding-left: 20px;
441
+ }
442
+
443
+ .job-running {
444
+ background: transparent url('/images/re_job/info-14.png') no-repeat 0px 2px;
445
+ height: 16px;
446
+ padding-left: 20px;
447
+ }
448
+
449
+ #job_audit_table a,
450
+ #job_audit_table a:visited,
451
+ #job_table a,
452
+ #job_table a:visited {
453
+ color:#666666;
454
+ }
455
+
456
+
457
+ .job-page-next-enabled {
458
+ float: right;
459
+ background: transparent url('/images/re_job/next-enabled-14.png') no-repeat 0px 0px;
460
+ height: 16px;
461
+ width: 16px;
462
+ padding: 0 5px 0 2px;
463
+ }
464
+ .job-page-next-disabled {
465
+ float: right;
466
+ background: transparent url('/images/re_job/next-disabled-14.png') no-repeat 0px 0px;
467
+ height: 16px;
468
+ width: 16px;
469
+ padding: 0 5px 0 2px;
470
+ }
471
+ .job-page-prev-enabled {
472
+ float: right;
473
+ background: transparent url('/images/re_job/prev-enabled-14.png') no-repeat 0px 0px;
474
+ height: 16px;
475
+ width: 16px;
476
+ padding: 0 2px 0 5px;
477
+ }
478
+ .job-page-prev-disabled {
479
+ float: right;
480
+ background: transparent url('/images/re_job/prev-disabled-14.png') no-repeat 0px 0px;
481
+ height: 16px;
482
+ width: 16px;
483
+ padding: 0 2px 0 5px;
484
+ }
485
+
486
+ a.job-goto {
487
+ background: transparent url('/images/re_job/goto-16.png') no-repeat top right;
488
+ padding: 0px 20px 0px 0px;
489
+ }
490
+
491
+ .jobs-index {
492
+ border-top: 10px solid #E0E5E8;
493
+ }
494
+ .jobs-index h1{
495
+ font-size: 32px;
496
+ padding: 0 0 0 20px;
497
+ color: #8a1f11;
498
+ }
499
+ .jobs-index-box {
500
+ border: solid #ddd 10px;
501
+ margin: 0 2px;
502
+ }
503
+ a.pipeline-job-detail {
504
+ background: transparent url('/images/re_job/list-18.png') no-repeat 0px 0px;
505
+ height: 16px;
506
+ width: 16px;
507
+ padding: 0px 0px 0px 20px;
508
+ }
509
+
@@ -0,0 +1,111 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
2
+
3
+ %w(lookup index show new create change edit update activate deactivate revert destroy).each do |action|
4
+ %w(editor reader).each do |type|
5
+ shared_examples_for "#{type}_access_required_for_#{action}" do
6
+ before do
7
+ controller.stub!(:"#{type}_access_required").and_return(false)
8
+ end
9
+
10
+ it "should confirm #{type} when calling #{action}" do
11
+ get action
12
+ end
13
+ end
14
+ end
15
+ end
16
+
17
+ describe RePipelinesController do
18
+ it_should_behave_like "reader_access_required_for_lookup"
19
+ it_should_behave_like "reader_access_required_for_index"
20
+ it_should_behave_like "reader_access_required_for_show"
21
+
22
+ it_should_behave_like "editor_access_required_for_new"
23
+ it_should_behave_like "editor_access_required_for_create"
24
+ it_should_behave_like "editor_access_required_for_change"
25
+ it_should_behave_like "editor_access_required_for_edit"
26
+ it_should_behave_like "editor_access_required_for_update"
27
+ it_should_behave_like "editor_access_required_for_activate"
28
+ it_should_behave_like "editor_access_required_for_deactivate"
29
+ it_should_behave_like "editor_access_required_for_revert"
30
+ it_should_behave_like "editor_access_required_for_destroy"
31
+
32
+ before do
33
+ controller.stub!(:editor_access_required).and_return(true)
34
+ controller.stub!(:reader_access_required).and_return(true)
35
+ end
36
+
37
+ describe "index" do
38
+ it "should get the list of pipelines" do
39
+ re_pipelines = [1, 2]
40
+ RePipeline.should_receive(:find).with(:all).and_return(re_pipelines)
41
+ get :index
42
+ assigns[:re_pipelines].should == re_pipelines
43
+ end
44
+
45
+ describe "sorting the results" do
46
+ # it "should sort by title by default" do
47
+ # RePipeline.stub!(:by_not_archived).and_return(RePipeline)
48
+ # RePipeline.should_receive(:order_title).and_return(RePipeline)
49
+ # get :index
50
+ # end
51
+ end
52
+
53
+ describe "filtering the results" do
54
+ # it "should include not archived pipelines by default" do
55
+ # RePipeline.should_receive(:by_not_archived).and_return(RePipeline)
56
+ # get :index
57
+ # end
58
+ end
59
+ end
60
+
61
+ describe "GET show" do
62
+ it "should get the pipeline record with the ID" do
63
+ RePipeline.should_receive(:find).with("123")
64
+ get :show, :id => 123
65
+ end
66
+ end
67
+
68
+ # describe "GET new" do
69
+ # it "should provide a fresh pipeline object" do
70
+ # RePipeline.should_receive :new
71
+ # get :new
72
+ # end
73
+ # end
74
+ #
75
+ # describe "POST create" do
76
+ # before do
77
+ # @re_pipeline = mock_model(RePipeline, :save => false)
78
+ # RePipeline.stub!(:new).and_return(@re_pipeline)
79
+ # end
80
+ #
81
+ # describe "creation failed" do
82
+ # it "should render the 'new' template" do
83
+ # post :create, :re_pipeline => { :key => "value" }
84
+ # response.should render_template(:new)
85
+ # end
86
+ # end
87
+ #
88
+ # describe "pipeline created" do
89
+ # before do
90
+ # @re_pipeline.stub!(:save).and_return(true)
91
+ # end
92
+ #
93
+ # it "should save the re_pipeline" do
94
+ # @re_pipeline.should_receive :save
95
+ # post :create, :re_pipeline => { :key => "value" }
96
+ # end
97
+ #
98
+ # it "should display a flash success message" do
99
+ # post :create, :re_pipeline => { :key => "value" }
100
+ # flash[:success].should_not be_blank
101
+ # end
102
+ #
103
+ # it "should redirect to the show re_pipeline page" do
104
+ # post :create, :re_pipeline => { :key => "value" }
105
+ # response.should redirect_to(re_pipeline_path(@re_pipeline))
106
+ # end
107
+ # end
108
+ # end
109
+
110
+
111
+ end
@@ -0,0 +1,24 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
2
+
3
+ describe ReJobAudit do
4
+ def valid_attributes
5
+ {
6
+ :audit_date => Date.new,
7
+ :audit_code => RulesEngine::RuleOutcome::OUTCOME_START_PIPELINE,
8
+ :audit_success => true
9
+ }
10
+ end
11
+
12
+ it "should be valid with valid attributes" do
13
+ ReJobAudit.new(valid_attributes).should be_valid
14
+ end
15
+
16
+ should_belong_to :re_job
17
+ should_belong_to :re_pipeline
18
+ should_belong_to :re_rule
19
+
20
+ should_validate_presence_of :audit_date
21
+ should_validate_presence_of :audit_code
22
+ # should_validate_presence_of :audit_success
23
+
24
+ end
@@ -0,0 +1,18 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
2
+
3
+ describe ReJob do
4
+ def valid_attributes
5
+ {
6
+ :job_status => ReJob::JOB_STATUS_NONE
7
+ }
8
+ end
9
+
10
+ should_validate_presence_of :job_status
11
+
12
+ it "should be valid with valid attributes" do
13
+ ReJob.new(valid_attributes).should be_valid
14
+ end
15
+
16
+ should_have_many :re_job_audits
17
+
18
+ end
@@ -0,0 +1,6 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
2
+
3
+ describe RePipelineActivated do
4
+
5
+ should_belong_to :re_pipeline, :foreign_key => :parent_re_pipeline_id
6
+ end