activeadministration 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 (522) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +47 -0
  3. data/.travis.yml +19 -0
  4. data/.yardopts +9 -0
  5. data/CHANGELOG.md +1074 -0
  6. data/CONTRIBUTING.md +139 -0
  7. data/Gemfile +52 -0
  8. data/Guardfile +7 -0
  9. data/LICENSE +25 -0
  10. data/README.md +8 -0
  11. data/Rakefile +33 -0
  12. data/activeadministration.gemspec +34 -0
  13. data/app/assets/images/active_admin/admin_notes_icon.png +0 -0
  14. data/app/assets/images/active_admin/datepicker/datepicker-header-bg.png +0 -0
  15. data/app/assets/images/active_admin/datepicker/datepicker-input-icon.png +0 -0
  16. data/app/assets/images/active_admin/datepicker/datepicker-next-link-icon.png +0 -0
  17. data/app/assets/images/active_admin/datepicker/datepicker-nipple.png +0 -0
  18. data/app/assets/images/active_admin/datepicker/datepicker-prev-link-icon.png +0 -0
  19. data/app/assets/images/active_admin/index_list_icons/block_icon.svg +10 -0
  20. data/app/assets/images/active_admin/index_list_icons/blog_icon.svg +4 -0
  21. data/app/assets/images/active_admin/index_list_icons/grid_icon.svg +13 -0
  22. data/app/assets/images/active_admin/index_list_icons/table_icon.svg +3 -0
  23. data/app/assets/images/active_admin/loading.gif +0 -0
  24. data/app/assets/images/active_admin/nested_menu_arrow.gif +0 -0
  25. data/app/assets/images/active_admin/nested_menu_arrow_dark.gif +0 -0
  26. data/app/assets/images/active_admin/orderable.png +0 -0
  27. data/app/assets/javascripts/active_admin/application.js.coffee +30 -0
  28. data/app/assets/javascripts/active_admin/base.js.coffee +14 -0
  29. data/app/assets/javascripts/active_admin/ext/jquery-ui.js.coffee +6 -0
  30. data/app/assets/javascripts/active_admin/ext/jquery.js.coffee +7 -0
  31. data/app/assets/javascripts/active_admin/lib/batch_actions.js.coffee +39 -0
  32. data/app/assets/javascripts/active_admin/lib/checkbox-toggler.js.coffee +36 -0
  33. data/app/assets/javascripts/active_admin/lib/dropdown-menu.js.coffee +85 -0
  34. data/app/assets/javascripts/active_admin/lib/has_many.js.coffee +75 -0
  35. data/app/assets/javascripts/active_admin/lib/modal_dialog.js.coffee +36 -0
  36. data/app/assets/javascripts/active_admin/lib/popover.js.coffee +68 -0
  37. data/app/assets/javascripts/active_admin/lib/table-checkbox-toggler.js.coffee +24 -0
  38. data/app/assets/stylesheets/active_admin/_base.css.scss +42 -0
  39. data/app/assets/stylesheets/active_admin/_forms.css.scss +329 -0
  40. data/app/assets/stylesheets/active_admin/_header.css.scss +156 -0
  41. data/app/assets/stylesheets/active_admin/_mixins.css.scss +1 -0
  42. data/app/assets/stylesheets/active_admin/_typography.css.scss +100 -0
  43. data/app/assets/stylesheets/active_admin/components/_batch_actions.css.scss +11 -0
  44. data/app/assets/stylesheets/active_admin/components/_blank_slates.scss +31 -0
  45. data/app/assets/stylesheets/active_admin/components/_breadcrumbs.scss +20 -0
  46. data/app/assets/stylesheets/active_admin/components/_buttons.scss +11 -0
  47. data/app/assets/stylesheets/active_admin/components/_columns.scss +3 -0
  48. data/app/assets/stylesheets/active_admin/components/_comments.css.scss +41 -0
  49. data/app/assets/stylesheets/active_admin/components/_date_picker.css.scss +127 -0
  50. data/app/assets/stylesheets/active_admin/components/_dropdown_menu.scss +151 -0
  51. data/app/assets/stylesheets/active_admin/components/_flash_messages.css.scss +39 -0
  52. data/app/assets/stylesheets/active_admin/components/_grid.scss +9 -0
  53. data/app/assets/stylesheets/active_admin/components/_index_list.scss +12 -0
  54. data/app/assets/stylesheets/active_admin/components/_links.scss +5 -0
  55. data/app/assets/stylesheets/active_admin/components/_modal_dialog.scss +31 -0
  56. data/app/assets/stylesheets/active_admin/components/_pagination.scss +34 -0
  57. data/app/assets/stylesheets/active_admin/components/_panels.scss +6 -0
  58. data/app/assets/stylesheets/active_admin/components/_popovers.css.scss +123 -0
  59. data/app/assets/stylesheets/active_admin/components/_scopes.scss +10 -0
  60. data/app/assets/stylesheets/active_admin/components/_status_tags.scss +16 -0
  61. data/app/assets/stylesheets/active_admin/components/_table_tools.css.scss +65 -0
  62. data/app/assets/stylesheets/active_admin/components/_tables.css.scss +111 -0
  63. data/app/assets/stylesheets/active_admin/mixins/_all.css.scss +11 -0
  64. data/app/assets/stylesheets/active_admin/mixins/_buttons.css.scss +66 -0
  65. data/app/assets/stylesheets/active_admin/mixins/_gradients.css.scss +38 -0
  66. data/app/assets/stylesheets/active_admin/mixins/_icons.css.scss +20 -0
  67. data/app/assets/stylesheets/active_admin/mixins/_reset.css.scss +165 -0
  68. data/app/assets/stylesheets/active_admin/mixins/_rounded.css.scss +43 -0
  69. data/app/assets/stylesheets/active_admin/mixins/_sections.css.scss +36 -0
  70. data/app/assets/stylesheets/active_admin/mixins/_shadows.css.scss +22 -0
  71. data/app/assets/stylesheets/active_admin/mixins/_typography.scss +3 -0
  72. data/app/assets/stylesheets/active_admin/mixins/_utilities.scss +26 -0
  73. data/app/assets/stylesheets/active_admin/mixins/_variables.css.scss +34 -0
  74. data/app/assets/stylesheets/active_admin/pages/_logged_out.scss +44 -0
  75. data/app/assets/stylesheets/active_admin/print.css.scss +284 -0
  76. data/app/assets/stylesheets/active_admin/structure/_footer.scss +14 -0
  77. data/app/assets/stylesheets/active_admin/structure/_main_structure.scss +29 -0
  78. data/app/assets/stylesheets/active_admin/structure/_title_bar.scss +46 -0
  79. data/app/views/active_admin/dashboard/index.html.arb +1 -0
  80. data/app/views/active_admin/devise/confirmations/new.html.erb +14 -0
  81. data/app/views/active_admin/devise/mailer/reset_password_instructions.html.erb +8 -0
  82. data/app/views/active_admin/devise/mailer/unlock_instructions.html.erb +7 -0
  83. data/app/views/active_admin/devise/passwords/edit.html.erb +19 -0
  84. data/app/views/active_admin/devise/passwords/new.html.erb +14 -0
  85. data/app/views/active_admin/devise/registrations/new.html.erb +22 -0
  86. data/app/views/active_admin/devise/sessions/new.html.erb +20 -0
  87. data/app/views/active_admin/devise/shared/_links.erb +27 -0
  88. data/app/views/active_admin/devise/unlocks/new.html.erb +14 -0
  89. data/app/views/active_admin/page/index.html.arb +1 -0
  90. data/app/views/active_admin/resource/edit.html.arb +1 -0
  91. data/app/views/active_admin/resource/index.csv.erb +17 -0
  92. data/app/views/active_admin/resource/index.html.arb +1 -0
  93. data/app/views/active_admin/resource/new.html.arb +1 -0
  94. data/app/views/active_admin/resource/show.html.arb +1 -0
  95. data/app/views/kaminari/active_admin/_first_page.html.erb +11 -0
  96. data/app/views/kaminari/active_admin/_gap.html.erb +8 -0
  97. data/app/views/kaminari/active_admin/_last_page.html.erb +11 -0
  98. data/app/views/kaminari/active_admin/_next_page.html.erb +11 -0
  99. data/app/views/kaminari/active_admin/_page.html.erb +12 -0
  100. data/app/views/kaminari/active_admin/_paginator.html.erb +23 -0
  101. data/app/views/kaminari/active_admin/_prev_page.html.erb +11 -0
  102. data/app/views/layouts/active_admin.html.arb +1 -0
  103. data/app/views/layouts/active_admin_logged_out.html.erb +37 -0
  104. data/config/locales/bg.yml +102 -0
  105. data/config/locales/bs.yml +121 -0
  106. data/config/locales/ca.yml +102 -0
  107. data/config/locales/cs.yml +106 -0
  108. data/config/locales/da.yml +103 -0
  109. data/config/locales/de-CH.yml +118 -0
  110. data/config/locales/de.yml +143 -0
  111. data/config/locales/el.yml +111 -0
  112. data/config/locales/en-GB.yml +95 -0
  113. data/config/locales/en.yml +117 -0
  114. data/config/locales/es.yml +127 -0
  115. data/config/locales/es_MX.yml +110 -0
  116. data/config/locales/fi.yml +110 -0
  117. data/config/locales/fr.yml +109 -0
  118. data/config/locales/he.yml +92 -0
  119. data/config/locales/hr.yml +121 -0
  120. data/config/locales/hu.yml +96 -0
  121. data/config/locales/it.yml +114 -0
  122. data/config/locales/ja.yml +114 -0
  123. data/config/locales/ko.yml +85 -0
  124. data/config/locales/lt.yml +118 -0
  125. data/config/locales/lv.yml +90 -0
  126. data/config/locales/nl.yml +94 -0
  127. data/config/locales/no-NB.yml +111 -0
  128. data/config/locales/pl.yml +100 -0
  129. data/config/locales/pt-BR.yml +117 -0
  130. data/config/locales/pt-PT.yml +90 -0
  131. data/config/locales/ro.yml +94 -0
  132. data/config/locales/ru.yml +121 -0
  133. data/config/locales/sv-SE.yml +90 -0
  134. data/config/locales/tr.yml +94 -0
  135. data/config/locales/uk.yml +121 -0
  136. data/config/locales/vi.yml +91 -0
  137. data/config/locales/zh-CN.yml +112 -0
  138. data/config/locales/zh-TW.yml +94 -0
  139. data/cucumber.yml +3 -0
  140. data/docs/0-installation.md +84 -0
  141. data/docs/1-general-configuration.md +138 -0
  142. data/docs/10-custom-pages.md +84 -0
  143. data/docs/11-decorators.md +50 -0
  144. data/docs/12-arbre-components.md +150 -0
  145. data/docs/13-authorization-adapter.md +239 -0
  146. data/docs/2-resource-customization.md +359 -0
  147. data/docs/3-index-pages.md +245 -0
  148. data/docs/3-index-pages/create-an-index.md +31 -0
  149. data/docs/3-index-pages/index-as-block.md +21 -0
  150. data/docs/3-index-pages/index-as-blog.md +71 -0
  151. data/docs/3-index-pages/index-as-grid.md +29 -0
  152. data/docs/3-index-pages/index-as-table.md +163 -0
  153. data/docs/4-csv-format.md +39 -0
  154. data/docs/5-forms.md +118 -0
  155. data/docs/6-show-pages.md +77 -0
  156. data/docs/7-sidebars.md +63 -0
  157. data/docs/8-custom-actions.md +159 -0
  158. data/docs/9-batch-actions.md +233 -0
  159. data/features/action_item.feature +73 -0
  160. data/features/authorization.feature +64 -0
  161. data/features/authorization_cancan.feature +52 -0
  162. data/features/authorization_pundit.feature +37 -0
  163. data/features/belongs_to.feature +66 -0
  164. data/features/breadcrumb.feature +75 -0
  165. data/features/comments/commenting.feature +159 -0
  166. data/features/comments/viewing_index.feature +19 -0
  167. data/features/dashboard.feature +16 -0
  168. data/features/decorators.feature +41 -0
  169. data/features/development_reloading.feature +31 -0
  170. data/features/edit_page.feature +114 -0
  171. data/features/favicon.feature +20 -0
  172. data/features/first_boot.feature +16 -0
  173. data/features/global_navigation.feature +29 -0
  174. data/features/i18n.feature +43 -0
  175. data/features/index/batch_actions.feature +123 -0
  176. data/features/index/filters.feature +138 -0
  177. data/features/index/format_as_csv.feature +117 -0
  178. data/features/index/formats.feature +66 -0
  179. data/features/index/index_as_block.feature +15 -0
  180. data/features/index/index_as_blog.feature +69 -0
  181. data/features/index/index_as_grid.feature +45 -0
  182. data/features/index/index_as_table.feature +208 -0
  183. data/features/index/index_blank_slate.feature +83 -0
  184. data/features/index/index_parameters.feature +75 -0
  185. data/features/index/index_scope_to.feature +56 -0
  186. data/features/index/index_scopes.feature +251 -0
  187. data/features/index/page_title.feature +41 -0
  188. data/features/index/pagination.feature +59 -0
  189. data/features/index/switch_index_view.feature +73 -0
  190. data/features/menu.feature +53 -0
  191. data/features/new_page.feature +106 -0
  192. data/features/registering_assets.feature +35 -0
  193. data/features/registering_pages.feature +148 -0
  194. data/features/registering_resources.feature +33 -0
  195. data/features/root_to.feature +17 -0
  196. data/features/show/default_content.feature +43 -0
  197. data/features/show/page_title.feature +58 -0
  198. data/features/sidebar_sections.feature +210 -0
  199. data/features/site_title.feature +47 -0
  200. data/features/specifying_actions.feature +93 -0
  201. data/features/step_definitions/action_item_steps.rb +7 -0
  202. data/features/step_definitions/action_link_steps.rb +7 -0
  203. data/features/step_definitions/additional_web_steps.rb +82 -0
  204. data/features/step_definitions/asset_steps.rb +15 -0
  205. data/features/step_definitions/attribute_steps.rb +18 -0
  206. data/features/step_definitions/batch_action_steps.rb +55 -0
  207. data/features/step_definitions/breadcrumb_steps.rb +3 -0
  208. data/features/step_definitions/comment_steps.rb +12 -0
  209. data/features/step_definitions/configuration_steps.rb +100 -0
  210. data/features/step_definitions/dashboard_steps.rb +15 -0
  211. data/features/step_definitions/factory_steps.rb +34 -0
  212. data/features/step_definitions/filter_steps.rb +17 -0
  213. data/features/step_definitions/flash_steps.rb +11 -0
  214. data/features/step_definitions/format_steps.rb +45 -0
  215. data/features/step_definitions/i18n_steps.rb +3 -0
  216. data/features/step_definitions/index_scope_steps.rb +21 -0
  217. data/features/step_definitions/index_views_steps.rb +3 -0
  218. data/features/step_definitions/layout_steps.rb +3 -0
  219. data/features/step_definitions/member_link_steps.rb +7 -0
  220. data/features/step_definitions/menu_steps.rb +11 -0
  221. data/features/step_definitions/pagination_steps.rb +8 -0
  222. data/features/step_definitions/sidebar_steps.rb +12 -0
  223. data/features/step_definitions/site_title_steps.rb +15 -0
  224. data/features/step_definitions/symbol_leak_steps.rb +3 -0
  225. data/features/step_definitions/tab_steps.rb +3 -0
  226. data/features/step_definitions/table_steps.rb +119 -0
  227. data/features/step_definitions/user_steps.rb +41 -0
  228. data/features/step_definitions/web_steps.rb +86 -0
  229. data/features/sti_resource.feature +65 -0
  230. data/features/strong_parameters.feature +72 -0
  231. data/features/support/env.rb +119 -0
  232. data/features/support/paths.rb +71 -0
  233. data/features/support/selectors.rb +45 -0
  234. data/features/symbol_leak.feature +35 -0
  235. data/features/users/logging_in.feature +34 -0
  236. data/features/users/logging_out.feature +13 -0
  237. data/features/users/resetting_password.feature +34 -0
  238. data/lib/active_admin.rb +135 -0
  239. data/lib/active_admin/abstract_view_factory.rb +86 -0
  240. data/lib/active_admin/application.rb +250 -0
  241. data/lib/active_admin/asset_registration.rb +29 -0
  242. data/lib/active_admin/authorization_adapter.rb +132 -0
  243. data/lib/active_admin/base_controller.rb +78 -0
  244. data/lib/active_admin/base_controller/authorization.rb +151 -0
  245. data/lib/active_admin/base_controller/menu.rb +34 -0
  246. data/lib/active_admin/batch_actions.rb +17 -0
  247. data/lib/active_admin/batch_actions/controller.rb +29 -0
  248. data/lib/active_admin/batch_actions/resource_extension.rb +154 -0
  249. data/lib/active_admin/batch_actions/views/batch_action_form.rb +38 -0
  250. data/lib/active_admin/batch_actions/views/batch_action_popover.rb +28 -0
  251. data/lib/active_admin/batch_actions/views/batch_action_selector.rb +57 -0
  252. data/lib/active_admin/batch_actions/views/selection_cells.rb +37 -0
  253. data/lib/active_admin/callbacks.rb +84 -0
  254. data/lib/active_admin/cancan_adapter.rb +40 -0
  255. data/lib/active_admin/component.rb +5 -0
  256. data/lib/active_admin/controller_action.rb +12 -0
  257. data/lib/active_admin/csv_builder.rb +70 -0
  258. data/lib/active_admin/dependencies.rb +38 -0
  259. data/lib/active_admin/deprecation.rb +35 -0
  260. data/lib/active_admin/devise.rb +80 -0
  261. data/lib/active_admin/dsl.rb +165 -0
  262. data/lib/active_admin/engine.rb +7 -0
  263. data/lib/active_admin/error.rb +22 -0
  264. data/lib/active_admin/event.rb +33 -0
  265. data/lib/active_admin/filters.rb +9 -0
  266. data/lib/active_admin/filters/dsl.rb +21 -0
  267. data/lib/active_admin/filters/forms.rb +87 -0
  268. data/lib/active_admin/filters/formtastic_addons.rb +73 -0
  269. data/lib/active_admin/filters/resource_extension.rb +135 -0
  270. data/lib/active_admin/form_builder.rb +185 -0
  271. data/lib/active_admin/helpers/collection.rb +23 -0
  272. data/lib/active_admin/helpers/i18n.rb +7 -0
  273. data/lib/active_admin/helpers/optional_display.rb +38 -0
  274. data/lib/active_admin/helpers/scope_chain.rb +23 -0
  275. data/lib/active_admin/helpers/settings.rb +106 -0
  276. data/lib/active_admin/iconic.rb +54 -0
  277. data/lib/active_admin/iconic/icons.rb +142 -0
  278. data/lib/active_admin/inputs.rb +15 -0
  279. data/lib/active_admin/inputs/datepicker_input.rb +20 -0
  280. data/lib/active_admin/inputs/filter_base.rb +40 -0
  281. data/lib/active_admin/inputs/filter_base/search_method_select.rb +73 -0
  282. data/lib/active_admin/inputs/filter_boolean_input.rb +32 -0
  283. data/lib/active_admin/inputs/filter_check_boxes_input.rb +48 -0
  284. data/lib/active_admin/inputs/filter_date_range_input.rb +34 -0
  285. data/lib/active_admin/inputs/filter_numeric_input.rb +10 -0
  286. data/lib/active_admin/inputs/filter_select_input.rb +53 -0
  287. data/lib/active_admin/inputs/filter_string_input.rb +24 -0
  288. data/lib/active_admin/menu.rb +107 -0
  289. data/lib/active_admin/menu_collection.rb +96 -0
  290. data/lib/active_admin/menu_item.rb +97 -0
  291. data/lib/active_admin/namespace.rb +231 -0
  292. data/lib/active_admin/order_clause.rb +26 -0
  293. data/lib/active_admin/orm/active_record.rb +3 -0
  294. data/lib/active_admin/orm/active_record/comments.rb +84 -0
  295. data/lib/active_admin/orm/active_record/comments/comment.rb +49 -0
  296. data/lib/active_admin/orm/active_record/comments/namespace_helper.rb +14 -0
  297. data/lib/active_admin/orm/active_record/comments/resource_helper.rb +17 -0
  298. data/lib/active_admin/orm/active_record/comments/show_page_helper.rb +23 -0
  299. data/lib/active_admin/orm/active_record/comments/views.rb +2 -0
  300. data/lib/active_admin/orm/active_record/comments/views/active_admin_comments.rb +75 -0
  301. data/lib/active_admin/orm/mongoid.rb +1 -0
  302. data/lib/active_admin/orm/mongoid/.gitkeep +0 -0
  303. data/lib/active_admin/page.rb +88 -0
  304. data/lib/active_admin/page_controller.rb +29 -0
  305. data/lib/active_admin/page_dsl.rb +28 -0
  306. data/lib/active_admin/page_presenter.rb +32 -0
  307. data/lib/active_admin/pundit_adapter.rb +42 -0
  308. data/lib/active_admin/resource.rb +156 -0
  309. data/lib/active_admin/resource/action_items.rb +91 -0
  310. data/lib/active_admin/resource/belongs_to.rb +36 -0
  311. data/lib/active_admin/resource/controllers.rb +18 -0
  312. data/lib/active_admin/resource/menu.rb +64 -0
  313. data/lib/active_admin/resource/naming.rb +84 -0
  314. data/lib/active_admin/resource/page_presenters.rb +82 -0
  315. data/lib/active_admin/resource/pagination.rb +19 -0
  316. data/lib/active_admin/resource/routes.rb +99 -0
  317. data/lib/active_admin/resource/scope_to.rb +74 -0
  318. data/lib/active_admin/resource/scopes.rb +50 -0
  319. data/lib/active_admin/resource/sidebars.rb +28 -0
  320. data/lib/active_admin/resource_collection.rb +70 -0
  321. data/lib/active_admin/resource_controller.rb +50 -0
  322. data/lib/active_admin/resource_controller/action_builder.rb +21 -0
  323. data/lib/active_admin/resource_controller/data_access.rb +284 -0
  324. data/lib/active_admin/resource_controller/decorators.rb +100 -0
  325. data/lib/active_admin/resource_controller/resource_class_methods.rb +24 -0
  326. data/lib/active_admin/resource_controller/scoping.rb +31 -0
  327. data/lib/active_admin/resource_controller/sidebars.rb +18 -0
  328. data/lib/active_admin/resource_dsl.rb +171 -0
  329. data/lib/active_admin/router.rb +106 -0
  330. data/lib/active_admin/scope.rb +57 -0
  331. data/lib/active_admin/sidebar_section.rb +45 -0
  332. data/lib/active_admin/version.rb +3 -0
  333. data/lib/active_admin/view_factory.rb +27 -0
  334. data/lib/active_admin/view_helpers.rb +21 -0
  335. data/lib/active_admin/view_helpers/active_admin_application_helper.rb +12 -0
  336. data/lib/active_admin/view_helpers/assigns_with_indifferent_access_helper.rb +7 -0
  337. data/lib/active_admin/view_helpers/auto_link_helper.rb +37 -0
  338. data/lib/active_admin/view_helpers/breadcrumb_helper.rb +27 -0
  339. data/lib/active_admin/view_helpers/display_helper.rb +64 -0
  340. data/lib/active_admin/view_helpers/download_format_links_helper.rb +49 -0
  341. data/lib/active_admin/view_helpers/fields_for.rb +50 -0
  342. data/lib/active_admin/view_helpers/flash_helper.rb +13 -0
  343. data/lib/active_admin/view_helpers/form_helper.rb +21 -0
  344. data/lib/active_admin/view_helpers/icon_helper.rb +12 -0
  345. data/lib/active_admin/view_helpers/method_or_proc_helper.rb +93 -0
  346. data/lib/active_admin/view_helpers/sidebar_helper.rb +15 -0
  347. data/lib/active_admin/view_helpers/title_helper.rb +11 -0
  348. data/lib/active_admin/view_helpers/view_factory_helper.rb +11 -0
  349. data/lib/active_admin/views.rb +8 -0
  350. data/lib/active_admin/views/action_items.rb +17 -0
  351. data/lib/active_admin/views/components/action_list_popover.rb +29 -0
  352. data/lib/active_admin/views/components/attributes_table.rb +105 -0
  353. data/lib/active_admin/views/components/blank_slate.rb +17 -0
  354. data/lib/active_admin/views/components/columns.rb +157 -0
  355. data/lib/active_admin/views/components/dropdown_menu.rb +73 -0
  356. data/lib/active_admin/views/components/index_list.rb +68 -0
  357. data/lib/active_admin/views/components/paginated_collection.rb +126 -0
  358. data/lib/active_admin/views/components/panel.rb +34 -0
  359. data/lib/active_admin/views/components/popover.rb +27 -0
  360. data/lib/active_admin/views/components/scopes.rb +66 -0
  361. data/lib/active_admin/views/components/sidebar_section.rb +29 -0
  362. data/lib/active_admin/views/components/site_title.rb +55 -0
  363. data/lib/active_admin/views/components/status_tag.rb +67 -0
  364. data/lib/active_admin/views/components/table_for.rb +212 -0
  365. data/lib/active_admin/views/footer.rb +20 -0
  366. data/lib/active_admin/views/header.rb +32 -0
  367. data/lib/active_admin/views/index_as_block.rb +36 -0
  368. data/lib/active_admin/views/index_as_blog.rb +156 -0
  369. data/lib/active_admin/views/index_as_grid.rb +80 -0
  370. data/lib/active_admin/views/index_as_table.rb +277 -0
  371. data/lib/active_admin/views/pages/base.rb +139 -0
  372. data/lib/active_admin/views/pages/form.rb +51 -0
  373. data/lib/active_admin/views/pages/index.rb +163 -0
  374. data/lib/active_admin/views/pages/layout.rb +26 -0
  375. data/lib/active_admin/views/pages/page.rb +30 -0
  376. data/lib/active_admin/views/pages/show.rb +59 -0
  377. data/lib/active_admin/views/tabbed_navigation.rb +62 -0
  378. data/lib/active_admin/views/title_bar.rb +55 -0
  379. data/lib/activeadmin.rb +1 -0
  380. data/lib/generators/active_admin/assets/assets_generator.rb +16 -0
  381. data/lib/generators/active_admin/assets/templates/active_admin.css.scss +17 -0
  382. data/lib/generators/active_admin/assets/templates/active_admin.js.coffee +1 -0
  383. data/lib/generators/active_admin/devise/devise_generator.rb +66 -0
  384. data/lib/generators/active_admin/install/install_generator.rb +46 -0
  385. data/lib/generators/active_admin/install/templates/active_admin.rb.erb +243 -0
  386. data/lib/generators/active_admin/install/templates/admin_user.rb.erb +30 -0
  387. data/lib/generators/active_admin/install/templates/dashboard.rb +33 -0
  388. data/lib/generators/active_admin/install/templates/migrations/create_active_admin_comments.rb +19 -0
  389. data/lib/generators/active_admin/resource/resource_generator.rb +16 -0
  390. data/lib/generators/active_admin/resource/templates/admin.rb +17 -0
  391. data/lib/ransack_ext.rb +12 -0
  392. data/script/local +44 -0
  393. data/script/use_rails +53 -0
  394. data/spec/integration/default_namespace_spec.rb +61 -0
  395. data/spec/integration/javascript_spec.rb +20 -0
  396. data/spec/integration/memory_spec.rb +29 -0
  397. data/spec/integration/stylesheets_spec.rb +18 -0
  398. data/spec/javascripts/coffeescripts/jquery.aa.checkbox-toggler-spec.js.coffee +50 -0
  399. data/spec/javascripts/coffeescripts/jquery.aa.popover-spec.js.coffee +82 -0
  400. data/spec/javascripts/coffeescripts/jquery.aa.table-checkbox-toggler-spec.js.coffee +34 -0
  401. data/spec/javascripts/compiled/jquery.aa.checkbox-toggler-spec.js +60 -0
  402. data/spec/javascripts/compiled/jquery.aa.popover-spec.js +106 -0
  403. data/spec/javascripts/compiled/jquery.aa.table-checkbox-toggler-spec.js +37 -0
  404. data/spec/javascripts/fixtures/checkboxes.html +9 -0
  405. data/spec/javascripts/fixtures/table_checkboxes.html +17 -0
  406. data/spec/javascripts/helpers/SpecHelper.js +3 -0
  407. data/spec/javascripts/helpers/vendor/jasmine-fixture-0.0.5.js +108 -0
  408. data/spec/javascripts/helpers/vendor/jasmine-jquery.js +288 -0
  409. data/spec/javascripts/helpers/vendor/sinon-1.2.0.js +2915 -0
  410. data/spec/javascripts/support/jasmine.yml +74 -0
  411. data/spec/javascripts/support/jasmine_config.rb +23 -0
  412. data/spec/javascripts/support/jasmine_runner.rb +32 -0
  413. data/spec/javascripts/support/jquery-ui-1.8.16.custom.min.js +34 -0
  414. data/spec/javascripts/support/jquery.min.js +4 -0
  415. data/spec/spec_helper.rb +182 -0
  416. data/spec/spec_helper_without_rails.rb +16 -0
  417. data/spec/support/deferred_garbage_collection.rb +19 -0
  418. data/spec/support/detect_rails_version.rb +42 -0
  419. data/spec/support/integration_example_group.rb +31 -0
  420. data/spec/support/jslint.yml +80 -0
  421. data/spec/support/rails_template.rb +117 -0
  422. data/spec/support/rails_template_with_data.rb +59 -0
  423. data/spec/support/templates/admin/stores.rb +11 -0
  424. data/spec/support/templates/cucumber.rb +24 -0
  425. data/spec/support/templates/cucumber_with_reloading.rb +5 -0
  426. data/spec/support/templates/en.yml +8 -0
  427. data/spec/support/templates/policies/active_admin/comment_policy.rb +9 -0
  428. data/spec/support/templates/policies/active_admin/page_policy.rb +18 -0
  429. data/spec/support/templates/policies/admin_user_policy.rb +11 -0
  430. data/spec/support/templates/policies/application_policy.rb +45 -0
  431. data/spec/support/templates/policies/category_policy.rb +7 -0
  432. data/spec/support/templates/policies/post_policy.rb +15 -0
  433. data/spec/support/templates/policies/store_policy.rb +11 -0
  434. data/spec/support/templates/policies/user_policy.rb +11 -0
  435. data/spec/support/templates/post_decorator.rb +11 -0
  436. data/spec/unit/abstract_view_factory_spec.rb +79 -0
  437. data/spec/unit/action_builder_spec.rb +126 -0
  438. data/spec/unit/active_admin_spec.rb +11 -0
  439. data/spec/unit/application_spec.rb +140 -0
  440. data/spec/unit/asset_registration_spec.rb +52 -0
  441. data/spec/unit/authorization/authorization_adapter_spec.rb +61 -0
  442. data/spec/unit/authorization/controller_authorization_spec.rb +39 -0
  443. data/spec/unit/auto_link_spec.rb +34 -0
  444. data/spec/unit/batch_actions/resource_spec.rb +92 -0
  445. data/spec/unit/batch_actions/settings_spec.rb +61 -0
  446. data/spec/unit/belongs_to_spec.rb +42 -0
  447. data/spec/unit/cancan_adapter_spec.rb +43 -0
  448. data/spec/unit/comments_spec.rb +144 -0
  449. data/spec/unit/component_spec.rb +18 -0
  450. data/spec/unit/config_shared_examples.rb +59 -0
  451. data/spec/unit/controller_filters_spec.rb +37 -0
  452. data/spec/unit/csv_builder_spec.rb +134 -0
  453. data/spec/unit/devise_spec.rb +116 -0
  454. data/spec/unit/dsl_spec.rb +61 -0
  455. data/spec/unit/event_spec.rb +47 -0
  456. data/spec/unit/filters/filter_form_builder_spec.rb +418 -0
  457. data/spec/unit/filters/resource_spec.rb +121 -0
  458. data/spec/unit/form_builder_spec.rb +576 -0
  459. data/spec/unit/generators/install_spec.rb +23 -0
  460. data/spec/unit/helpers/collection_spec.rb +65 -0
  461. data/spec/unit/helpers/scope_chain_spec.rb +36 -0
  462. data/spec/unit/helpers/settings_spec.rb +30 -0
  463. data/spec/unit/menu_collection_spec.rb +62 -0
  464. data/spec/unit/menu_item_spec.rb +143 -0
  465. data/spec/unit/menu_spec.rb +71 -0
  466. data/spec/unit/namespace/authorization_spec.rb +27 -0
  467. data/spec/unit/namespace/register_page_spec.rb +74 -0
  468. data/spec/unit/namespace/register_resource_spec.rb +163 -0
  469. data/spec/unit/namespace_spec.rb +103 -0
  470. data/spec/unit/order_clause_spec.rb +57 -0
  471. data/spec/unit/page_controller_spec.rb +5 -0
  472. data/spec/unit/page_spec.rb +72 -0
  473. data/spec/unit/pretty_format_spec.rb +63 -0
  474. data/spec/unit/pundit_adapter_spec.rb +36 -0
  475. data/spec/unit/resource/action_items_spec.rb +62 -0
  476. data/spec/unit/resource/menu_spec.rb +18 -0
  477. data/spec/unit/resource/naming_spec.rb +122 -0
  478. data/spec/unit/resource/page_presenters_spec.rb +44 -0
  479. data/spec/unit/resource/pagination_spec.rb +38 -0
  480. data/spec/unit/resource/routes_spec.rb +73 -0
  481. data/spec/unit/resource/scopes_spec.rb +50 -0
  482. data/spec/unit/resource/sidebars_spec.rb +43 -0
  483. data/spec/unit/resource_collection_spec.rb +158 -0
  484. data/spec/unit/resource_controller/data_access_spec.rb +73 -0
  485. data/spec/unit/resource_controller/decorators_spec.rb +86 -0
  486. data/spec/unit/resource_controller/sidebars_spec.rb +46 -0
  487. data/spec/unit/resource_controller_spec.rb +265 -0
  488. data/spec/unit/resource_registration_spec.rb +56 -0
  489. data/spec/unit/resource_spec.rb +263 -0
  490. data/spec/unit/routing_spec.rb +172 -0
  491. data/spec/unit/scope_spec.rb +114 -0
  492. data/spec/unit/settings_spec.rb +88 -0
  493. data/spec/unit/view_factory_spec.rb +21 -0
  494. data/spec/unit/view_helpers/breadcrumbs_spec.rb +180 -0
  495. data/spec/unit/view_helpers/display_name_spec.rb +68 -0
  496. data/spec/unit/view_helpers/download_format_links_helper_spec.rb +39 -0
  497. data/spec/unit/view_helpers/fields_for_spec.rb +50 -0
  498. data/spec/unit/view_helpers/form_helper_spec.rb +42 -0
  499. data/spec/unit/view_helpers/method_or_proc_helper_spec.rb +97 -0
  500. data/spec/unit/views/components/action_list_popover_spec.rb +29 -0
  501. data/spec/unit/views/components/attributes_table_spec.rb +259 -0
  502. data/spec/unit/views/components/batch_action_popover_spec.rb +33 -0
  503. data/spec/unit/views/components/blank_slate_spec.rb +17 -0
  504. data/spec/unit/views/components/columns_spec.rb +172 -0
  505. data/spec/unit/views/components/index_list_spec.rb +32 -0
  506. data/spec/unit/views/components/paginated_collection_spec.rb +229 -0
  507. data/spec/unit/views/components/panel_spec.rb +51 -0
  508. data/spec/unit/views/components/popover_spec.rb +33 -0
  509. data/spec/unit/views/components/sidebar_section_spec.rb +47 -0
  510. data/spec/unit/views/components/site_title_spec.rb +78 -0
  511. data/spec/unit/views/components/status_tag_spec.rb +102 -0
  512. data/spec/unit/views/components/table_for_spec.rb +242 -0
  513. data/spec/unit/views/pages/form_spec.rb +35 -0
  514. data/spec/unit/views/pages/layout_spec.rb +63 -0
  515. data/spec/unit/views/pages/show_spec.rb +20 -0
  516. data/spec/unit/views/tabbed_navigation_spec.rb +149 -0
  517. data/tasks/docs.rake +37 -0
  518. data/tasks/js.rake +32 -0
  519. data/tasks/parallel_tests.rake +60 -0
  520. data/tasks/test.rake +79 -0
  521. data/tasks/yard.rake +7 -0
  522. metadata +741 -0
@@ -0,0 +1,35 @@
1
+ require "spec_helper"
2
+
3
+ describe ActiveAdmin::Views::Pages::Form do
4
+ describe "#title" do
5
+ let!(:application){ ActiveAdmin::Application.new }
6
+ let(:namespace){ ActiveAdmin::Namespace.new(application, "Admin") }
7
+ let!(:params){ { controller: "UsersController", action: "edit" } }
8
+ let(:helpers) do
9
+ helpers = mock_action_view
10
+ helpers.stub active_admin_config: namespace.register(Post),
11
+ params: params
12
+
13
+ helpers
14
+ end
15
+
16
+ let(:arbre_context) do
17
+ OpenStruct.new(params: params, helpers: helpers, assigns: {})
18
+ end
19
+
20
+ context "when page_title is assigned" do
21
+ it "should show the set page title" do
22
+ arbre_context.assigns[:page_title] = "My Page Title"
23
+ page = ActiveAdmin::Views::Pages::Form.new(arbre_context)
24
+ expect(page.title).to eq "My Page Title"
25
+ end
26
+ end
27
+
28
+ context "when page_title is not assigned" do
29
+ it "should show the correct I18n text" do
30
+ page = ActiveAdmin::Views::Pages::Form.new(arbre_context)
31
+ expect(page.title).to eq "Edit Post"
32
+ end
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,63 @@
1
+ require 'spec_helper'
2
+
3
+ describe ActiveAdmin::Views::Pages::Layout do
4
+
5
+ let(:assigns){ {} }
6
+ let(:helpers) do
7
+ helpers = mock_action_view
8
+
9
+ helpers.stub active_admin_application: active_admin_application,
10
+ active_admin_config: double('Config', action_items?: nil, breadcrumb: nil, sidebar_sections?: nil),
11
+ active_admin_namespace: active_admin_namespace,
12
+ breadcrumb_links: [],
13
+ content_for: "",
14
+ csrf_meta_tag: "",
15
+ current_active_admin_user: nil,
16
+ :current_active_admin_user? => false,
17
+ current_menu: double('Menu', items: []),
18
+ flash: {},
19
+ javascript_path: "/dummy/",
20
+ link_to: "",
21
+ render_or_call_method_or_proc_on: "",
22
+ stylesheet_link_tag: double(html_safe: ""),
23
+ view_factory: view_factory,
24
+ params: {controller: 'UsersController', action: 'edit'}
25
+
26
+ helpers
27
+ end
28
+
29
+ let(:active_admin_namespace){ ActiveAdmin::Namespace.new(ActiveAdmin::Application.new, :myspace) }
30
+ let(:active_admin_application){ ActiveAdmin.application }
31
+ let(:view_factory) { ActiveAdmin::ViewFactory.new }
32
+
33
+ let(:layout) do
34
+ render_arbre_component assigns, helpers do
35
+ insert_tag ActiveAdmin::Views::Pages::Layout
36
+ end
37
+ end
38
+
39
+ it "should be the @page_title if assigned in the controller" do
40
+ assigns[:page_title] = "My Page Title"
41
+
42
+ expect(layout.title).to eq "My Page Title"
43
+ end
44
+
45
+ it "should be the default translation" do
46
+ helpers.params[:action] = "edit"
47
+
48
+ expect(layout.title).to eq "Edit"
49
+ end
50
+
51
+ describe "the body" do
52
+
53
+ it "should have class 'active_admin'" do
54
+ expect(layout.build.class_list).to include 'active_admin'
55
+ end
56
+
57
+ it "should have namespace class" do
58
+ expect(layout.build.class_list).to include "#{active_admin_namespace.name}_namespace"
59
+ end
60
+
61
+ end
62
+
63
+ end
@@ -0,0 +1,20 @@
1
+ require 'spec_helper'
2
+
3
+ describe ActiveAdmin::Views::Pages::Show do
4
+
5
+ describe "the resource" do
6
+ let(:helpers) { double resource: resource }
7
+ let(:arbre_context) { Arbre::Context.new({}, helpers) }
8
+
9
+ context 'when the resource does not respond to #decorator' do
10
+ let(:resource) { 'Test Resource' }
11
+
12
+ it "normally returns the resource" do
13
+ page = ActiveAdmin::Views::Pages::Show.new(arbre_context)
14
+ expect(page.resource).to eq 'Test Resource'
15
+ end
16
+ end
17
+
18
+ end
19
+
20
+ end
@@ -0,0 +1,149 @@
1
+ require 'spec_helper'
2
+
3
+ include ActiveAdmin
4
+ describe ActiveAdmin::Views::TabbedNavigation do
5
+
6
+ let(:menu){ ActiveAdmin::Menu.new }
7
+
8
+ let(:assigns){ { active_admin_menu: menu } }
9
+ let(:helpers){ mock_action_view }
10
+
11
+ let(:tabbed_navigation) do
12
+ arbre(assigns, helpers) {
13
+ insert_tag(ActiveAdmin::Views::TabbedNavigation, active_admin_menu)
14
+ }.children.first
15
+ end
16
+
17
+ let(:html) { tabbed_navigation.to_s }
18
+
19
+ before do
20
+ helpers.stub(:admin_logged_in?).and_return(false)
21
+ end
22
+
23
+ describe "rendering a menu" do
24
+
25
+ before do
26
+ menu.add label: "Blog Posts", url: :admin_posts_path
27
+
28
+ menu.add label: "Reports", url: "/admin/reports" do |reports|
29
+ reports.add label: "A Sub Reports", url: "/admin/a-sub-reports"
30
+ reports.add label: "B Sub Reports", url: "/admin/b-sub-reports"
31
+ reports.add label: proc{ "Label Proc Sub Reports" }, url: "/admin/label-proc-sub-reports", id: "Label Proc Sub Reports"
32
+ end
33
+
34
+ menu.add label: "Administration", url: "/admin/administration" do |administration|
35
+ administration.add label: "User administration",
36
+ url: '/admin/user-administration',
37
+ priority: 10,
38
+ if: proc { false }
39
+ end
40
+
41
+ menu.add label: "Management", url: "#" do |management|
42
+ management.add label: "Order management",
43
+ url: '/admin/order-management',
44
+ priority: 10,
45
+ if: proc { false }
46
+ management.add label: "Bill management",
47
+ url: '/admin/bill-management',
48
+ priority: 10,
49
+ if: :admin_logged_in?
50
+ end
51
+ end
52
+
53
+ it "should generate a ul" do
54
+ expect(html).to have_tag("ul")
55
+ end
56
+
57
+ it "should generate an li for each item" do
58
+ expect(html).to have_tag("li", parent: { tag: "ul" })
59
+ end
60
+
61
+ it "should generate a link for each item" do
62
+ expect(html).to have_tag("a", "Blog Posts", attributes: { href: '/admin/posts' })
63
+ end
64
+
65
+ it "should generate a nested list for children" do
66
+ expect(html).to have_tag("ul", parent: { tag: "li" })
67
+ end
68
+
69
+ it "should generate a nested list with li for each child" do
70
+ expect(html).to have_tag("li", parent: { tag: "ul" }, attributes: {id: "a_sub_reports"})
71
+ expect(html).to have_tag("li", parent: { tag: "ul" }, attributes: {id: "b_sub_reports"})
72
+ end
73
+
74
+ it "should generate a valid id from a label proc" do
75
+ expect(html).to have_tag("li", parent: { tag: "ul" }, attributes: {id: "label_proc_sub_reports"})
76
+ end
77
+
78
+ it "should not generate a link for user administration" do
79
+ expect(html).to_not have_tag("a", "User administration", attributes: { href: '/admin/user-administration' })
80
+ end
81
+
82
+ it "should generate the administration parent menu" do
83
+ expect(html).to have_tag("a", "Administration", attributes: { href: '/admin/administration' })
84
+ end
85
+
86
+ it "should not generate a link for order management" do
87
+ expect(html).to_not have_tag("a", "Order management", attributes: { href: '/admin/order-management' })
88
+ end
89
+
90
+ it "should not generate a link for bill management" do
91
+ expect(html).to_not have_tag("a", "Bill management", attributes: { href: '/admin/bill-management' })
92
+ end
93
+
94
+ it "should not generate the management parent menu" do
95
+ expect(html).to_not have_tag("a", "Management", attributes: { href: '#' })
96
+ end
97
+
98
+ describe "marking current item" do
99
+
100
+ it "should add the 'current' class to the li" do
101
+ assigns[:current_tab] = menu["Blog Posts"]
102
+ expect(html).to have_tag("li", attributes: { class: "current" })
103
+ end
104
+
105
+ it "should add the 'current' and 'has_nested' classes to the li and 'current' to the sub li" do
106
+ assigns[:current_tab] = menu["Reports"]["A Sub Reports"]
107
+ expect(html).to have_tag("li", attributes: { id: "reports", class: /current/ })
108
+ expect(html).to have_tag("li", attributes: { id: "reports", class: /has_nested/ })
109
+ expect(html).to have_tag("li", attributes: { id: "a_sub_reports", class: "current" })
110
+ end
111
+
112
+ end
113
+
114
+ end
115
+
116
+ describe "returning the menu items to display" do
117
+
118
+ it "should return one item with no if block" do
119
+ menu.add label: "Hello World", url: "/"
120
+ expect(tabbed_navigation.menu_items).to eq menu.items
121
+ end
122
+
123
+ it "should not include menu items with an if block that returns false" do
124
+ menu.add label: "Don't Show", url: "/", priority: 10, if: proc{ false }
125
+ expect(tabbed_navigation.menu_items).to be_empty
126
+ end
127
+
128
+ it "should not include menu items with an if block that calls a method that returns false" do
129
+ menu.add label: "Don't Show", url: "/", priority: 10, if: :admin_logged_in?
130
+ expect(tabbed_navigation.menu_items).to be_empty
131
+ end
132
+
133
+ it "should not display any items that have no children to display" do
134
+ menu.add label: "Parent", url: "#" do |p|
135
+ p.add label: "Child", url: "/", priority: 10, if: proc{ false }
136
+ end
137
+ expect(tabbed_navigation.menu_items).to be_empty
138
+ end
139
+
140
+ it "should display a parent that has a child to display" do
141
+ menu.add label: "Parent", url: "#" do |p|
142
+ p.add label: "Hidden Child", url: "/", priority: 10, if: proc{ false }
143
+ p.add label: "Child", url: "/"
144
+ end
145
+ expect(tabbed_navigation).to have(1).menu_items
146
+ end
147
+
148
+ end
149
+ end
data/tasks/docs.rake ADDED
@@ -0,0 +1,37 @@
1
+ namespace :docs do
2
+
3
+ AUTOGEN_WARNING = <<-EOD
4
+ <!--
5
+ WARNING: Please DO NOT edit this file! Update
6
+ source documentation in lib/active_admin/views
7
+ and execute rake yard to regenerate it.
8
+ -->
9
+
10
+ EOD
11
+
12
+ def filename_from_module(mod)
13
+ mod.name.to_s.underscore.gsub('_', '-')
14
+ end
15
+
16
+ def write_docstrings_to(path, mods)
17
+ mods.each do |mod|
18
+ File.open("#{path}/#{filename_from_module(mod)}.md", 'w+') do |f|
19
+ f << AUTOGEN_WARNING + mod.docstring + "\n"
20
+ end
21
+ end
22
+ end
23
+
24
+ desc "Update docs in the docs folder"
25
+ task :build do
26
+ require 'yard'
27
+ require 'active_support/all'
28
+
29
+ YARD::Registry.load!
30
+ views = YARD::Registry.at("ActiveAdmin::Views")
31
+
32
+ # Index Types
33
+ index_types = views.children.select{|obj| obj.name.to_s =~ /^IndexAs/ }
34
+ write_docstrings_to "docs/3-index-pages", index_types
35
+ end
36
+
37
+ end
data/tasks/js.rake ADDED
@@ -0,0 +1,32 @@
1
+ namespace :js do
2
+
3
+ desc "Compile the JS for Rails apps without Asset Pipeline"
4
+ task :compile do
5
+ require 'sprockets'
6
+ require 'uglifier'
7
+ require 'fileutils'
8
+
9
+ root_dir = File.expand_path(File.join("..", ".."), __FILE__)
10
+ js_dir = File.join(root_dir, "app", "assets", "javascripts", "active_admin")
11
+ generated_file = File.join(root_dir, 'lib', 'generators', 'active_admin', 'assets', 'templates', '3.0', 'active_admin.js')
12
+
13
+ # The base.js file requires jquery. We don't need jquery to
14
+ # compile the assets, however Sprockets will try to look it up
15
+ # and raise an exception. Insteaad, we move the file out of the directory
16
+ # then put it back after we compile.
17
+ base_js = File.join(js_dir, "base.js")
18
+ tmp_base_js = File.join(root_dir, "base.js")
19
+ FileUtils.mv base_js, tmp_base_js
20
+
21
+ env = Sprockets::Environment.new
22
+ env.js_compressor = ::Uglifier.new
23
+ env.append_path js_dir
24
+
25
+ File.open generated_file, "w+" do |f|
26
+ f << env["application"]
27
+ end
28
+
29
+ FileUtils.mv tmp_base_js, base_js
30
+ end
31
+
32
+ end
@@ -0,0 +1,60 @@
1
+ require 'parallel'
2
+
3
+ desc "Run the full suite using parallel_tests to run on multiple cores"
4
+ task :parallel_tests => ['parallel:setup_parallel_tests', 'parallel:spec', 'parallel:features', 'cucumber:class_reloading']
5
+
6
+ namespace :parallel do
7
+
8
+ def rails_app_rake(task)
9
+ require 'rails/version'
10
+ system "cd spec/rails/rails-#{Rails::VERSION::STRING}; rake #{task}"
11
+ end
12
+
13
+ task :after_setup_hook do
14
+ rails_app_rake "parallel:load_schema"
15
+ rails_app_rake "parallel:create_cucumber_db"
16
+ rails_app_rake "parallel:load_schema_cucumber_db"
17
+ end
18
+
19
+ def parallel_tests_setup?
20
+ require 'rails/version'
21
+ database_config = File.join "spec", "rails", "rails-#{Rails::VERSION::STRING}", "config", "database.yml"
22
+ File.exists?(database_config) && File.read(database_config).include?("TEST_ENV_NUMBER")
23
+ end
24
+
25
+ desc "Setup parallel_tests DBs"
26
+ task :setup_parallel_tests do
27
+ unless parallel_tests_setup?
28
+ puts "parallel_tests is not set up. (Re)building spec/rails/rails-#{Rails::VERSION::STRING} App. Please wait."
29
+ require 'rails/version'
30
+ system("rm -Rf spec/rails/rails-#{Rails::VERSION::STRING}")
31
+ Rake::Task['setup'].invoke
32
+ end
33
+ end
34
+
35
+ def run_in_parallel(command)
36
+ system("ENV['TEST_ENV_NUMBER']=#{Parallel.processor_count} #{command}")
37
+ end
38
+
39
+ desc "Run the specs in parallel"
40
+ task :spec => :setup_parallel_tests do
41
+ run_in_parallel "parallel_rspec spec/"
42
+ end
43
+
44
+ namespace :spec do
45
+
46
+ %w(unit integration).each do |type|
47
+ desc "Run the #{type} specs in parallel"
48
+ task type => :setup_parallel_tests do
49
+ run_in_parallel "parallel_rspec spec/#{type}"
50
+ end
51
+ end
52
+
53
+ end
54
+
55
+ desc "Run the cucumber features in parallel"
56
+ task :features => :setup_parallel_tests do
57
+ run_in_parallel "parallel_cucumber features/"
58
+ end
59
+
60
+ end
data/tasks/test.rake ADDED
@@ -0,0 +1,79 @@
1
+ desc "Creates a test rails app for the specs to run against"
2
+ task :setup do
3
+ require 'rails/version'
4
+ system("mkdir spec/rails") unless File.exists?("spec/rails")
5
+ system "bundle exec rails new spec/rails/rails-#{Rails::VERSION::STRING} -m spec/support/rails_template.rb"
6
+ Rake::Task['parallel:after_setup_hook'].invoke
7
+ end
8
+
9
+ desc "Run the full suite using 1 core"
10
+ task test: ['spec:unit', 'spec:integration', 'cucumber', 'cucumber:class_reloading']
11
+
12
+ require 'coveralls/rake/task'
13
+ Coveralls::RakeTask.new
14
+ task test_with_coveralls: [:test, 'coveralls:push']
15
+
16
+ namespace :test do
17
+
18
+ def run_tests_against(*versions)
19
+ current_version = detect_rails_version if File.exists?("Gemfile.lock")
20
+
21
+ versions.each do |version|
22
+ puts
23
+ puts "== Using Rails #{version}"
24
+
25
+ cmd "./script/use_rails #{version}"
26
+ cmd "bundle exec rspec spec"
27
+ cmd "bundle exec cucumber features"
28
+ cmd "bundle exec cucumber -p class-reloading features"
29
+ end
30
+
31
+ cmd "./script/use_rails #{current_version}" if current_version
32
+ end
33
+
34
+ desc "Run the full suite against the important versions of rails"
35
+ task :major_supported_rails do
36
+ run_tests_against *TRAVIS_RAILS_VERSIONS
37
+ end
38
+
39
+ desc "Alias for major_supported_rails"
40
+ task :all => :major_supported_rails
41
+
42
+ end
43
+
44
+ require 'rspec/core/rake_task'
45
+
46
+ RSpec::Core::RakeTask.new(:spec)
47
+
48
+ namespace :spec do
49
+
50
+ desc "Run the unit specs"
51
+ RSpec::Core::RakeTask.new(:unit) do |t|
52
+ t.pattern = "spec/unit/**/*_spec.rb"
53
+ end
54
+
55
+ desc "Run the integration specs"
56
+ RSpec::Core::RakeTask.new(:integration) do |t|
57
+ t.pattern = "spec/integration/**/*_spec.rb"
58
+ end
59
+
60
+ end
61
+
62
+
63
+ require 'cucumber/rake/task'
64
+
65
+ Cucumber::Rake::Task.new(:cucumber) do |t|
66
+ t.profile = 'default'
67
+ end
68
+
69
+ namespace :cucumber do
70
+
71
+ Cucumber::Rake::Task.new(:wip, "Run the cucumber scenarios with the @wip tag") do |t|
72
+ t.profile = 'wip'
73
+ end
74
+
75
+ Cucumber::Rake::Task.new(:class_reloading, "Run the cucumber scenarios that test reloading") do |t|
76
+ t.profile = 'class-reloading'
77
+ end
78
+
79
+ end