yousty-activeadmin 1.0.4.pre → 1.0.5.pre

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 (467) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +261 -211
  3. data/CONTRIBUTING.md +73 -39
  4. data/Gemfile +38 -20
  5. data/Guardfile +1 -0
  6. data/LICENSE +1 -1
  7. data/README.md +48 -24
  8. data/Rakefile +12 -4
  9. data/activeadmin.gemspec +21 -26
  10. data/app/assets/javascripts/active_admin/application.js.coffee +34 -5
  11. data/app/assets/javascripts/active_admin/base.js.coffee +11 -2
  12. data/app/assets/javascripts/active_admin/ext/jquery-ui.js.coffee +6 -0
  13. data/app/assets/javascripts/active_admin/ext/jquery.js.coffee +7 -0
  14. data/app/assets/javascripts/active_admin/lib/batch_actions.js.coffee +39 -0
  15. data/app/assets/javascripts/active_admin/lib/checkbox-toggler.js.coffee +3 -4
  16. data/app/assets/javascripts/active_admin/lib/dropdown-menu.js.coffee +51 -55
  17. data/app/assets/javascripts/active_admin/lib/flash.js.coffee +19 -0
  18. data/app/assets/javascripts/active_admin/lib/has_many.js.coffee +79 -0
  19. data/app/assets/javascripts/active_admin/lib/modal_dialog.js.coffee +37 -0
  20. data/app/assets/javascripts/active_admin/lib/per_page.js.coffee +27 -0
  21. data/app/assets/javascripts/active_admin/lib/popover.js.coffee +29 -58
  22. data/app/assets/javascripts/active_admin/lib/table-checkbox-toggler.js.coffee +2 -3
  23. data/app/assets/stylesheets/active_admin/{_base.css.scss → _base.scss} +3 -0
  24. data/app/assets/stylesheets/active_admin/{_forms.css.scss → _forms.scss} +51 -15
  25. data/app/assets/stylesheets/active_admin/{_header.css.scss → _header.scss} +9 -5
  26. data/app/assets/stylesheets/active_admin/{_mixins.css.scss → _mixins.scss} +0 -0
  27. data/app/assets/stylesheets/active_admin/{_typography.css.scss → _typography.scss} +0 -0
  28. data/app/assets/stylesheets/active_admin/components/_batch_actions.scss +11 -0
  29. data/app/assets/stylesheets/active_admin/components/_buttons.scss +1 -1
  30. data/app/assets/stylesheets/active_admin/components/{_comments.css.scss → _comments.scss} +0 -0
  31. data/app/assets/stylesheets/active_admin/components/{_date_picker.css.scss → _date_picker.scss} +40 -12
  32. data/app/assets/stylesheets/active_admin/components/_dropdown_menu.scss +3 -1
  33. data/app/assets/stylesheets/active_admin/components/_flash_messages.scss +37 -0
  34. data/app/assets/stylesheets/active_admin/components/_modal_dialog.scss +34 -0
  35. data/app/assets/stylesheets/active_admin/components/_pagination.scss +10 -0
  36. data/app/assets/stylesheets/active_admin/components/{_popovers.css.scss → _popovers.scss} +0 -0
  37. data/app/assets/stylesheets/active_admin/components/_status_tags.scss +4 -0
  38. data/app/assets/stylesheets/active_admin/components/_table_tools.scss +67 -0
  39. data/app/assets/stylesheets/active_admin/components/{_tables.css.scss → _tables.scss} +1 -0
  40. data/app/assets/stylesheets/active_admin/components/_tabs.scss +65 -0
  41. data/app/assets/stylesheets/active_admin/components/_unsupported_browser.scss +16 -0
  42. data/app/assets/stylesheets/active_admin/mixins/{_all.css.scss → _all.scss} +0 -0
  43. data/app/assets/stylesheets/active_admin/mixins/{_buttons.css.scss → _buttons.scss} +0 -0
  44. data/app/assets/stylesheets/active_admin/mixins/{_gradients.css.scss → _gradients.scss} +1 -1
  45. data/app/assets/stylesheets/active_admin/mixins/{_icons.css.scss → _icons.scss} +1 -2
  46. data/app/assets/stylesheets/active_admin/mixins/{_reset.css.scss → _reset.scss} +0 -0
  47. data/app/assets/stylesheets/active_admin/mixins/{_rounded.css.scss → _rounded.scss} +0 -0
  48. data/app/assets/stylesheets/active_admin/mixins/{_sections.css.scss → _sections.scss} +7 -1
  49. data/app/assets/stylesheets/active_admin/mixins/{_shadows.css.scss → _shadows.scss} +0 -0
  50. data/app/assets/stylesheets/active_admin/mixins/{_variables.css.scss → _variables.scss} +10 -8
  51. data/app/assets/stylesheets/active_admin/{print.css.scss → print.scss} +4 -0
  52. data/app/assets/stylesheets/active_admin/structure/_title_bar.scss +10 -7
  53. data/app/views/active_admin/devise/confirmations/new.html.erb +15 -0
  54. data/app/views/active_admin/devise/mailer/reset_password_instructions.html.erb +1 -1
  55. data/app/views/active_admin/devise/mailer/unlock_instructions.html.erb +1 -1
  56. data/app/views/active_admin/devise/passwords/edit.html.erb +9 -10
  57. data/app/views/active_admin/devise/passwords/new.html.erb +5 -4
  58. data/app/views/active_admin/devise/registrations/new.html.erb +22 -0
  59. data/app/views/active_admin/devise/sessions/new.html.erb +8 -8
  60. data/app/views/active_admin/devise/shared/_links.erb +1 -1
  61. data/app/views/active_admin/devise/unlocks/new.html.erb +5 -4
  62. data/app/views/layouts/active_admin_logged_out.html.erb +3 -5
  63. data/config/locales/ar.yml +120 -0
  64. data/config/locales/bg.yml +26 -6
  65. data/config/locales/bs.yml +122 -0
  66. data/config/locales/ca.yml +10 -1
  67. data/config/locales/cs.yml +7 -2
  68. data/config/locales/da.yml +7 -3
  69. data/config/locales/de-CH.yml +14 -31
  70. data/config/locales/de.yml +33 -33
  71. data/config/locales/el.yml +127 -0
  72. data/config/locales/en-GB.yml +11 -4
  73. data/config/locales/en.yml +21 -4
  74. data/config/locales/{es_MX.yml → es-MX.yml} +14 -24
  75. data/config/locales/es.yml +32 -25
  76. data/config/locales/fa.yml +120 -0
  77. data/config/locales/fi.yml +9 -5
  78. data/config/locales/fr.yml +28 -12
  79. data/config/locales/he.yml +7 -3
  80. data/config/locales/hr.yml +42 -11
  81. data/config/locales/hu.yml +10 -3
  82. data/config/locales/it.yml +31 -3
  83. data/config/locales/ja.yml +17 -4
  84. data/config/locales/ko.yml +7 -1
  85. data/config/locales/lt.yml +42 -11
  86. data/config/locales/lv.yml +7 -3
  87. data/config/locales/{no-NB.yml → nb.yml} +46 -15
  88. data/config/locales/nl.yml +36 -5
  89. data/config/locales/pl.yml +13 -8
  90. data/config/locales/pt-BR.yml +36 -5
  91. data/config/locales/pt-PT.yml +8 -4
  92. data/config/locales/ro.yml +7 -3
  93. data/config/locales/ru.yml +26 -5
  94. data/config/locales/sv-SE.yml +9 -5
  95. data/config/locales/tr.yml +10 -3
  96. data/config/locales/uk.yml +36 -12
  97. data/config/locales/vi.yml +7 -3
  98. data/config/locales/zh-CN.yml +26 -10
  99. data/config/locales/zh-TW.yml +19 -13
  100. data/docs/0-installation.md +14 -6
  101. data/docs/1-general-configuration.md +8 -5
  102. data/docs/10-custom-pages.md +68 -70
  103. data/docs/11-decorators.md +48 -59
  104. data/docs/12-arbre-components.md +79 -73
  105. data/docs/13-authorization-adapter.md +128 -107
  106. data/docs/14-gotchas.md +90 -0
  107. data/docs/2-resource-customization.md +82 -15
  108. data/docs/3-index-pages.md +71 -12
  109. data/docs/3-index-pages/custom-index.md +31 -0
  110. data/docs/3-index-pages/index-as-table.md +45 -2
  111. data/docs/4-csv-format.md +1 -1
  112. data/docs/5-forms.md +78 -29
  113. data/docs/6-show-pages.md +31 -3
  114. data/docs/7-sidebars.md +46 -25
  115. data/docs/8-custom-actions.md +98 -77
  116. data/docs/9-batch-actions.md +211 -133
  117. data/docs/README.md +24 -0
  118. data/features/action_item.feature +3 -3
  119. data/features/authorization_pundit.feature +37 -0
  120. data/features/belongs_to.feature +3 -0
  121. data/features/breadcrumb.feature +48 -0
  122. data/features/comments/commenting.feature +44 -13
  123. data/features/development_reloading.feature +3 -4
  124. data/features/edit_page.feature +9 -19
  125. data/features/favicon.feature +3 -3
  126. data/features/i18n.feature +5 -0
  127. data/features/index/batch_actions.feature +41 -0
  128. data/features/index/filters.feature +23 -0
  129. data/features/index/format_as_csv.feature +90 -4
  130. data/features/index/index_as_blog.feature +4 -4
  131. data/features/index/index_as_table.feature +102 -6
  132. data/features/index/index_blank_slate.feature +22 -0
  133. data/features/index/index_scope_to.feature +16 -16
  134. data/features/index/page_title.feature +11 -0
  135. data/features/index/pagination.feature +1 -1
  136. data/features/index/switch_index_view.feature +14 -14
  137. data/features/new_page.feature +10 -20
  138. data/features/registering_pages.feature +1 -1
  139. data/features/renamed_resource.feature +32 -0
  140. data/features/show/page_title.feature +11 -0
  141. data/features/show/tabs.feature +27 -0
  142. data/features/sidebar_sections.feature +12 -0
  143. data/features/specifying_actions.feature +3 -3
  144. data/features/step_definitions/action_item_steps.rb +2 -2
  145. data/features/step_definitions/action_link_steps.rb +14 -1
  146. data/features/step_definitions/additional_web_steps.rb +17 -18
  147. data/features/step_definitions/asset_steps.rb +3 -3
  148. data/features/step_definitions/attribute_steps.rb +8 -3
  149. data/features/step_definitions/batch_action_steps.rb +26 -9
  150. data/features/step_definitions/blog_steps.rb +3 -0
  151. data/features/step_definitions/breadcrumb_steps.rb +1 -1
  152. data/features/step_definitions/comment_steps.rb +1 -1
  153. data/features/step_definitions/configuration_steps.rb +1 -1
  154. data/features/step_definitions/dashboard_steps.rb +2 -2
  155. data/features/step_definitions/factory_steps.rb +6 -6
  156. data/features/step_definitions/filter_steps.rb +25 -3
  157. data/features/step_definitions/flash_steps.rb +3 -3
  158. data/features/step_definitions/format_steps.rb +17 -10
  159. data/features/step_definitions/index_scope_steps.rb +5 -5
  160. data/features/step_definitions/layout_steps.rb +1 -1
  161. data/features/step_definitions/member_link_steps.rb +2 -2
  162. data/features/step_definitions/menu_steps.rb +3 -3
  163. data/features/step_definitions/pagination_steps.rb +2 -3
  164. data/features/step_definitions/sidebar_steps.rb +8 -3
  165. data/features/step_definitions/site_title_steps.rb +6 -4
  166. data/features/step_definitions/symbol_leak_steps.rb +1 -1
  167. data/features/step_definitions/tab_steps.rb +5 -0
  168. data/features/step_definitions/table_steps.rb +4 -4
  169. data/features/step_definitions/user_steps.rb +15 -9
  170. data/features/step_definitions/web_steps.rb +10 -11
  171. data/features/sti_resource.feature +2 -10
  172. data/features/strong_parameters.feature +73 -0
  173. data/features/support/env.rb +35 -2
  174. data/features/support/paths.rb +2 -2
  175. data/features/support/selectors.rb +1 -1
  176. data/features/users/resetting_password.feature +7 -7
  177. data/lib/active_admin.rb +18 -13
  178. data/lib/active_admin/abstract_view_factory.rb +7 -17
  179. data/lib/active_admin/application.rb +50 -25
  180. data/lib/active_admin/asset_registration.rb +2 -2
  181. data/lib/active_admin/authorization_adapter.rb +2 -2
  182. data/lib/active_admin/base_controller.rb +2 -3
  183. data/lib/active_admin/base_controller/authorization.rb +13 -31
  184. data/lib/active_admin/batch_actions.rb +1 -1
  185. data/lib/active_admin/batch_actions/controller.rb +13 -7
  186. data/lib/active_admin/batch_actions/resource_extension.rb +43 -17
  187. data/lib/active_admin/batch_actions/views/batch_action_form.rb +7 -4
  188. data/lib/active_admin/batch_actions/views/batch_action_popover.rb +3 -3
  189. data/lib/active_admin/batch_actions/views/batch_action_selector.rb +8 -17
  190. data/lib/active_admin/batch_actions/views/selection_cells.rb +4 -4
  191. data/lib/active_admin/callbacks.rb +25 -24
  192. data/lib/active_admin/cancan_adapter.rb +7 -11
  193. data/lib/active_admin/csv_builder.rb +92 -15
  194. data/lib/active_admin/dependency.rb +93 -0
  195. data/lib/active_admin/deprecation.rb +6 -7
  196. data/lib/active_admin/devise.rb +26 -14
  197. data/lib/active_admin/dsl.rb +18 -11
  198. data/lib/active_admin/engine.rb +7 -2
  199. data/lib/active_admin/error.rb +59 -0
  200. data/lib/active_admin/filters/dsl.rb +2 -2
  201. data/lib/active_admin/filters/forms.rb +19 -30
  202. data/lib/active_admin/filters/formtastic_addons.rb +20 -11
  203. data/lib/active_admin/filters/resource_extension.rb +16 -9
  204. data/lib/active_admin/form_builder.rb +94 -105
  205. data/lib/active_admin/helpers/collection.rb +7 -13
  206. data/lib/active_admin/helpers/i18n.rb +7 -0
  207. data/lib/active_admin/helpers/optional_display.rb +5 -5
  208. data/lib/active_admin/helpers/scope_chain.rb +1 -1
  209. data/lib/active_admin/helpers/settings.rb +16 -9
  210. data/lib/active_admin/iconic.rb +17 -15
  211. data/lib/active_admin/iconic/icons.rb +136 -136
  212. data/lib/active_admin/inputs.rb +11 -7
  213. data/lib/active_admin/inputs/datepicker_input.rb +1 -1
  214. data/lib/active_admin/inputs/filters/base.rb +42 -0
  215. data/lib/active_admin/inputs/filters/base/search_method_select.rb +75 -0
  216. data/lib/active_admin/inputs/filters/boolean_input.rb +24 -0
  217. data/lib/active_admin/inputs/filters/check_boxes_input.rb +50 -0
  218. data/lib/active_admin/inputs/filters/date_range_input.rb +36 -0
  219. data/lib/active_admin/inputs/filters/numeric_input.rb +12 -0
  220. data/lib/active_admin/inputs/filters/select_input.rb +54 -0
  221. data/lib/active_admin/inputs/filters/string_input.rb +26 -0
  222. data/lib/active_admin/menu.rb +3 -3
  223. data/lib/active_admin/menu_collection.rb +1 -4
  224. data/lib/active_admin/namespace.rb +52 -29
  225. data/lib/active_admin/order_clause.rb +26 -0
  226. data/lib/active_admin/orm/active_record.rb +2 -0
  227. data/lib/active_admin/orm/active_record/comments.rb +48 -51
  228. data/lib/active_admin/orm/active_record/comments/comment.rb +16 -10
  229. data/lib/active_admin/orm/active_record/comments/namespace_helper.rb +1 -1
  230. data/lib/active_admin/orm/active_record/comments/resource_helper.rb +1 -1
  231. data/lib/active_admin/orm/active_record/comments/views/active_admin_comments.rb +15 -13
  232. data/lib/active_admin/page.rb +5 -1
  233. data/lib/active_admin/page_dsl.rb +1 -1
  234. data/lib/active_admin/page_presenter.rb +2 -2
  235. data/lib/active_admin/pundit_adapter.rb +68 -0
  236. data/lib/active_admin/resource.rb +12 -3
  237. data/lib/active_admin/resource/action_items.rb +15 -8
  238. data/lib/active_admin/resource/belongs_to.rb +7 -3
  239. data/lib/active_admin/resource/controllers.rb +1 -0
  240. data/lib/active_admin/resource/includes.rb +12 -0
  241. data/lib/active_admin/resource/menu.rb +5 -5
  242. data/lib/active_admin/resource/naming.rb +25 -47
  243. data/lib/active_admin/resource/page_presenters.rb +1 -1
  244. data/lib/active_admin/resource/routes.rb +26 -10
  245. data/lib/active_admin/resource/scope_to.rb +7 -7
  246. data/lib/active_admin/resource/sidebars.rb +1 -0
  247. data/lib/active_admin/resource_collection.rb +44 -16
  248. data/lib/active_admin/resource_controller.rb +6 -5
  249. data/lib/active_admin/resource_controller/data_access.rb +87 -82
  250. data/lib/active_admin/resource_controller/decorators.rb +91 -9
  251. data/lib/active_admin/resource_controller/streaming.rb +37 -0
  252. data/lib/active_admin/resource_dsl.rb +54 -10
  253. data/lib/active_admin/router.rb +7 -7
  254. data/lib/active_admin/scope.rb +6 -6
  255. data/lib/active_admin/sidebar_section.rb +10 -2
  256. data/lib/active_admin/version.rb +1 -1
  257. data/lib/active_admin/view_factory.rb +17 -16
  258. data/lib/active_admin/view_helpers.rb +0 -1
  259. data/lib/active_admin/view_helpers/auto_link_helper.rb +23 -12
  260. data/lib/active_admin/view_helpers/breadcrumb_helper.rb +13 -6
  261. data/lib/active_admin/view_helpers/display_helper.rb +30 -17
  262. data/lib/active_admin/view_helpers/download_format_links_helper.rb +21 -24
  263. data/lib/active_admin/view_helpers/fields_for.rb +2 -2
  264. data/lib/active_admin/view_helpers/flash_helper.rb +4 -3
  265. data/lib/active_admin/view_helpers/form_helper.rb +5 -9
  266. data/lib/active_admin/view_helpers/method_or_proc_helper.rb +6 -6
  267. data/lib/active_admin/views/action_items.rb +2 -2
  268. data/lib/active_admin/views/components/action_list_popover.rb +1 -1
  269. data/lib/active_admin/views/components/active_admin_form.rb +123 -0
  270. data/lib/active_admin/views/components/attributes_table.rb +22 -13
  271. data/lib/active_admin/views/components/blank_slate.rb +1 -1
  272. data/lib/active_admin/views/components/columns.rb +13 -7
  273. data/lib/active_admin/views/components/dropdown_menu.rb +6 -6
  274. data/lib/active_admin/views/components/index_list.rb +7 -7
  275. data/lib/active_admin/views/components/paginated_collection.rb +33 -17
  276. data/lib/active_admin/views/components/panel.rb +8 -2
  277. data/lib/active_admin/views/components/popover.rb +1 -1
  278. data/lib/active_admin/views/components/scopes.rb +1 -1
  279. data/lib/active_admin/views/components/sidebar_section.rb +3 -2
  280. data/lib/active_admin/views/components/site_title.rb +2 -2
  281. data/lib/active_admin/views/components/status_tag.rb +34 -11
  282. data/lib/active_admin/views/components/table_for.rb +67 -22
  283. data/lib/active_admin/views/components/tabs.rb +28 -0
  284. data/lib/active_admin/views/components/unsupported_browser.rb +11 -0
  285. data/lib/active_admin/views/footer.rb +3 -3
  286. data/lib/active_admin/views/header.rb +3 -3
  287. data/lib/active_admin/views/index_as_blog.rb +6 -6
  288. data/lib/active_admin/views/index_as_grid.rb +2 -2
  289. data/lib/active_admin/views/index_as_table.rb +127 -40
  290. data/lib/active_admin/views/pages/base.rb +22 -18
  291. data/lib/active_admin/views/pages/form.rb +16 -6
  292. data/lib/active_admin/views/pages/index.rb +36 -20
  293. data/lib/active_admin/views/pages/layout.rb +1 -1
  294. data/lib/active_admin/views/pages/show.rb +4 -4
  295. data/lib/active_admin/views/tabbed_navigation.rb +7 -3
  296. data/lib/active_admin/views/title_bar.rb +10 -8
  297. data/lib/generators/active_admin/assets/assets_generator.rb +1 -3
  298. data/lib/generators/active_admin/devise/devise_generator.rb +20 -28
  299. data/lib/generators/active_admin/install/install_generator.rb +8 -9
  300. data/lib/generators/active_admin/install/templates/active_admin.rb.erb +20 -22
  301. data/lib/generators/active_admin/install/templates/admin_user.rb.erb +12 -9
  302. data/lib/generators/active_admin/install/templates/dashboard.rb +4 -4
  303. data/lib/generators/active_admin/install/templates/migrations/create_active_admin_comments.rb +3 -3
  304. data/lib/generators/active_admin/page/USAGE +8 -0
  305. data/lib/generators/active_admin/page/page_generator.rb +12 -0
  306. data/lib/generators/active_admin/page/templates/page.rb +5 -0
  307. data/lib/generators/active_admin/resource/resource_generator.rb +2 -4
  308. data/lib/generators/active_admin/resource/templates/admin.rb +15 -0
  309. data/lib/ransack_ext.rb +4 -4
  310. data/script/local +2 -2
  311. data/script/travis_cache +107 -0
  312. data/spec/javascripts/coffeescripts/jquery.aa.flash.js.coffee +25 -0
  313. data/spec/javascripts/fixtures/flashes.html +2 -0
  314. data/spec/rails_helper.rb +154 -0
  315. data/spec/{integration → requests}/default_namespace_spec.rb +6 -6
  316. data/spec/{integration → requests}/javascript_spec.rb +5 -5
  317. data/spec/requests/memory_spec.rb +23 -0
  318. data/spec/requests/stylesheets_spec.rb +18 -0
  319. data/spec/spec_helper.rb +12 -170
  320. data/spec/support/detect_rails_version.rb +31 -39
  321. data/spec/support/rails_template.rb +61 -34
  322. data/spec/support/rails_template_with_data.rb +14 -14
  323. data/spec/support/templates/admin/stores.rb +3 -5
  324. data/spec/support/templates/policies/active_admin/comment_policy.rb +9 -0
  325. data/spec/support/templates/policies/active_admin/page_policy.rb +18 -0
  326. data/spec/support/templates/policies/admin_user_policy.rb +11 -0
  327. data/spec/support/templates/policies/application_policy.rb +45 -0
  328. data/spec/support/templates/policies/category_policy.rb +7 -0
  329. data/spec/support/templates/policies/post_policy.rb +15 -0
  330. data/spec/support/templates/policies/store_policy.rb +11 -0
  331. data/spec/support/templates/policies/user_policy.rb +11 -0
  332. data/spec/support/templates/post_decorator.rb +4 -46
  333. data/spec/unit/abstract_view_factory_spec.rb +11 -11
  334. data/spec/unit/action_builder_spec.rb +24 -18
  335. data/spec/unit/active_admin_spec.rb +2 -2
  336. data/spec/unit/application_spec.rb +30 -31
  337. data/spec/unit/asset_registration_spec.rb +11 -11
  338. data/spec/unit/authorization/authorization_adapter_spec.rb +7 -7
  339. data/spec/unit/authorization/controller_authorization_spec.rb +11 -11
  340. data/spec/unit/authorization/index_overriding_spec.rb +22 -0
  341. data/spec/unit/auto_link_spec.rb +42 -5
  342. data/spec/unit/batch_actions/resource_spec.rb +15 -14
  343. data/spec/unit/batch_actions/settings_spec.rb +18 -18
  344. data/spec/unit/belongs_to_spec.rb +26 -17
  345. data/spec/unit/cancan_adapter_spec.rb +4 -4
  346. data/spec/unit/comments_spec.rb +99 -39
  347. data/spec/unit/component_spec.rb +3 -3
  348. data/spec/unit/config_shared_examples.rb +8 -8
  349. data/spec/unit/controller_filters_spec.rb +26 -14
  350. data/spec/unit/csv_builder_spec.rb +152 -24
  351. data/spec/unit/dependency_spec.rb +135 -0
  352. data/spec/unit/devise_spec.rb +17 -37
  353. data/spec/unit/dsl_spec.rb +70 -9
  354. data/spec/unit/event_spec.rb +9 -9
  355. data/spec/unit/filters/filter_form_builder_spec.rb +167 -157
  356. data/spec/unit/filters/resource_spec.rb +35 -33
  357. data/spec/unit/form_builder_spec.rb +383 -145
  358. data/spec/unit/generators/install_spec.rb +5 -5
  359. data/spec/unit/helpers/collection_spec.rb +18 -18
  360. data/spec/unit/helpers/scope_chain_spec.rb +5 -5
  361. data/spec/unit/helpers/settings_spec.rb +4 -4
  362. data/spec/unit/i18n_spec.rb +12 -0
  363. data/spec/unit/menu_collection_spec.rb +14 -14
  364. data/spec/unit/menu_item_spec.rb +42 -42
  365. data/spec/unit/menu_spec.rb +20 -20
  366. data/spec/unit/namespace/authorization_spec.rb +5 -5
  367. data/spec/unit/namespace/register_page_spec.rb +9 -9
  368. data/spec/unit/namespace/register_resource_spec.rb +26 -28
  369. data/spec/unit/namespace_spec.rb +20 -20
  370. data/spec/unit/order_clause_spec.rb +81 -0
  371. data/spec/unit/page_controller_spec.rb +1 -1
  372. data/spec/unit/page_spec.rb +18 -12
  373. data/spec/unit/pretty_format_spec.rb +42 -14
  374. data/spec/unit/pundit_adapter_spec.rb +98 -0
  375. data/spec/unit/resource/action_items_spec.rb +13 -10
  376. data/spec/unit/resource/includes_spec.rb +21 -0
  377. data/spec/unit/resource/menu_spec.rb +1 -1
  378. data/spec/unit/resource/naming_spec.rb +23 -23
  379. data/spec/unit/resource/page_presenters_spec.rb +8 -8
  380. data/spec/unit/resource/pagination_spec.rb +6 -6
  381. data/spec/unit/resource/routes_spec.rb +10 -10
  382. data/spec/unit/resource/scopes_spec.rb +14 -7
  383. data/spec/unit/resource/sidebars_spec.rb +6 -6
  384. data/spec/unit/resource_collection_spec.rb +66 -68
  385. data/spec/unit/resource_controller/data_access_spec.rb +39 -21
  386. data/spec/unit/resource_controller/decorators_spec.rb +83 -0
  387. data/spec/unit/resource_controller/sidebars_spec.rb +7 -8
  388. data/spec/unit/resource_controller_spec.rb +66 -62
  389. data/spec/unit/resource_registration_spec.rb +12 -12
  390. data/spec/unit/resource_spec.rb +75 -40
  391. data/spec/unit/routing_spec.rb +39 -31
  392. data/spec/unit/scope_spec.rb +112 -30
  393. data/spec/unit/settings_spec.rb +51 -21
  394. data/spec/unit/view_factory_spec.rb +2 -2
  395. data/spec/unit/view_helpers/breadcrumbs_spec.rb +137 -69
  396. data/spec/unit/view_helpers/display_name_spec.rb +49 -21
  397. data/spec/unit/view_helpers/download_format_links_helper_spec.rb +5 -5
  398. data/spec/unit/view_helpers/fields_for_spec.rb +18 -18
  399. data/spec/unit/view_helpers/flash_helper_spec.rb +25 -0
  400. data/spec/unit/view_helpers/form_helper_spec.rb +9 -22
  401. data/spec/unit/view_helpers/method_or_proc_helper_spec.rb +59 -21
  402. data/spec/unit/views/components/action_list_popover_spec.rb +16 -6
  403. data/spec/unit/views/components/attributes_table_spec.rb +94 -52
  404. data/spec/unit/views/components/batch_action_popover_spec.rb +20 -6
  405. data/spec/unit/views/components/blank_slate_spec.rb +14 -4
  406. data/spec/unit/views/components/columns_spec.rb +52 -22
  407. data/spec/unit/views/components/index_list_spec.rb +11 -8
  408. data/spec/unit/views/components/index_table_for_spec.rb +46 -0
  409. data/spec/unit/views/components/paginated_collection_spec.rb +68 -59
  410. data/spec/unit/views/components/panel_spec.rb +32 -21
  411. data/spec/unit/views/components/popover_spec.rb +7 -7
  412. data/spec/unit/views/components/sidebar_section_spec.rb +18 -8
  413. data/spec/unit/views/components/site_title_spec.rb +8 -8
  414. data/spec/unit/views/components/status_tag_spec.rb +178 -38
  415. data/spec/unit/views/components/table_for_spec.rb +227 -44
  416. data/spec/unit/views/components/tabs_spec.rb +39 -0
  417. data/spec/unit/views/components/unsupported_browser_spec.rb +47 -0
  418. data/spec/unit/views/pages/form_spec.rb +17 -10
  419. data/spec/unit/views/pages/index_spec.rb +60 -0
  420. data/spec/unit/views/pages/layout_spec.rb +17 -21
  421. data/spec/unit/views/pages/show_spec.rb +16 -3
  422. data/spec/unit/views/tabbed_navigation_spec.rb +61 -52
  423. data/tasks/docs.rake +1 -1
  424. data/tasks/parallel_tests.rake +8 -2
  425. data/tasks/test.rake +8 -4
  426. data/tasks/yard.rake +7 -5
  427. metadata +180 -101
  428. data/app/assets/images/active_admin/admin_notes_icon.png +0 -0
  429. data/app/assets/images/active_admin/datepicker/datepicker-header-bg.png +0 -0
  430. data/app/assets/images/active_admin/datepicker/datepicker-next-link-icon.png +0 -0
  431. data/app/assets/images/active_admin/datepicker/datepicker-nipple.png +0 -0
  432. data/app/assets/images/active_admin/datepicker/datepicker-prev-link-icon.png +0 -0
  433. data/app/assets/images/active_admin/index_list_icons/block_icon.svg +0 -10
  434. data/app/assets/images/active_admin/index_list_icons/blog_icon.svg +0 -4
  435. data/app/assets/images/active_admin/index_list_icons/grid_icon.svg +0 -13
  436. data/app/assets/images/active_admin/index_list_icons/table_icon.svg +0 -3
  437. data/app/assets/images/active_admin/loading.gif +0 -0
  438. data/app/assets/javascripts/active_admin/components/application.js.coffee +0 -23
  439. data/app/assets/javascripts/active_admin/components/batch_actions.js.coffee +0 -26
  440. data/app/assets/javascripts/active_admin/components/has_many.js.coffee +0 -41
  441. data/app/assets/stylesheets/active_admin/components/_batch_actions.css.scss +0 -11
  442. data/app/assets/stylesheets/active_admin/components/_flash_messages.css.scss +0 -39
  443. data/app/assets/stylesheets/active_admin/components/_table_tools.css.scss +0 -95
  444. data/app/views/active_admin/dashboard/index.html.arb +0 -1
  445. data/app/views/active_admin/resource/index.csv.erb +0 -17
  446. data/docs/3-index-pages/create-an-index.md +0 -29
  447. data/lib/active_admin/inputs/filter_base.rb +0 -33
  448. data/lib/active_admin/inputs/filter_base/search_method_select.rb +0 -73
  449. data/lib/active_admin/inputs/filter_boolean_input.rb +0 -32
  450. data/lib/active_admin/inputs/filter_check_boxes_input.rb +0 -51
  451. data/lib/active_admin/inputs/filter_date_range_input.rb +0 -34
  452. data/lib/active_admin/inputs/filter_numeric_input.rb +0 -10
  453. data/lib/active_admin/inputs/filter_select_input.rb +0 -61
  454. data/lib/active_admin/inputs/filter_string_input.rb +0 -24
  455. data/lib/active_admin/view_helpers/assigns_with_indifferent_access_helper.rb +0 -7
  456. data/spec/integration/memory_spec.rb +0 -29
  457. data/spec/integration/stylesheets_spec.rb +0 -41
  458. data/spec/javascripts/compiled/jquery.aa.checkbox-toggler-spec.js +0 -60
  459. data/spec/javascripts/compiled/jquery.aa.popover-spec.js +0 -106
  460. data/spec/javascripts/compiled/jquery.aa.table-checkbox-toggler-spec.js +0 -37
  461. data/spec/javascripts/helpers/vendor/jasmine-fixture-0.0.5.js +0 -108
  462. data/spec/javascripts/helpers/vendor/jasmine-jquery.js +0 -288
  463. data/spec/javascripts/helpers/vendor/sinon-1.2.0.js +0 -2915
  464. data/spec/javascripts/support/jquery-ui-1.8.16.custom.min.js +0 -34
  465. data/spec/javascripts/support/jquery.min.js +0 -4
  466. data/spec/spec_helper_without_rails.rb +0 -16
  467. data/tasks/js.rake +0 -32
@@ -1,6 +1,6 @@
1
- require 'spec_helper'
1
+ require 'rails_helper'
2
2
 
3
- describe ActiveAdmin::Application do
3
+ describe ActiveAdmin::Application, :type => :request do
4
4
 
5
5
  include Rails.application.routes.url_helpers
6
6
 
@@ -22,11 +22,11 @@ describe ActiveAdmin::Application do
22
22
  end
23
23
 
24
24
  it "should generate a log out path" do
25
- destroy_admin_user_session_path.should == "/admin_users/logout"
25
+ expect(destroy_admin_user_session_path).to eq "/logout"
26
26
  end
27
27
 
28
28
  it "should generate a log in path" do
29
- new_admin_user_session_path.should == "/admin_users/login"
29
+ expect(new_admin_user_session_path).to eq "/login"
30
30
  end
31
31
 
32
32
  end
@@ -49,11 +49,11 @@ describe ActiveAdmin::Application do
49
49
  end
50
50
 
51
51
  it "should generate a log out path" do
52
- destroy_admin_user_session_path.should == "/test/logout"
52
+ expect(destroy_admin_user_session_path).to eq "/test/logout"
53
53
  end
54
54
 
55
55
  it "should generate a log in path" do
56
- new_admin_user_session_path.should == "/test/login"
56
+ expect(new_admin_user_session_path).to eq "/test/login"
57
57
  end
58
58
 
59
59
  end
@@ -1,14 +1,14 @@
1
- require 'spec_helper'
1
+ require 'rails_helper'
2
2
  require 'jslint'
3
3
 
4
4
  %x[which java]
5
5
  if $? == 0 # Only run the JS Lint test if Java is installed
6
- describe "Javascript" do
6
+ describe "Javascript", :type => :request do
7
7
  before do
8
8
  @lint = JSLint::Lint.new(
9
- :paths => ['public/javascripts/**/*.js'],
10
- :exclude_paths => ['public/javascripts/vendor/**/*.js'],
11
- :config_path => 'spec/support/jslint.yml'
9
+ paths: ['public/javascripts/**/*.js'],
10
+ exclude_paths: ['public/javascripts/vendor/**/*.js'],
11
+ config_path: 'spec/support/jslint.yml'
12
12
  )
13
13
  end
14
14
 
@@ -0,0 +1,23 @@
1
+ require 'rails_helper'
2
+
3
+ describe "Memory Leak", :type => :request do
4
+
5
+ def count_instances_of(klass)
6
+ ObjectSpace.each_object(klass) { }
7
+ end
8
+
9
+ [ActiveAdmin::Namespace, ActiveAdmin::Resource].each do |klass|
10
+ it "should not leak #{klass}" do
11
+ previously_disabled = GC.enable
12
+ GC.start
13
+ count = count_instances_of(klass)
14
+
15
+ load_defaults!
16
+
17
+ GC.start
18
+ GC.disable if previously_disabled
19
+ expect(count_instances_of klass).to be <= count
20
+ end
21
+ end
22
+
23
+ end
@@ -0,0 +1,18 @@
1
+ require 'rails_helper'
2
+
3
+ describe "Stylesheets", :type => :request do
4
+
5
+ require "sprockets"
6
+
7
+ let(:css) do
8
+ assets = Rails.application.assets
9
+ assets.find_asset("active_admin.css")
10
+ end
11
+ it "should successfully render the scss stylesheets using sprockets" do
12
+ expect(css).to_not be_nil
13
+ end
14
+ it "should not have any syntax errors" do
15
+ expect(css.to_s).to_not include("Syntax error:")
16
+ end
17
+
18
+ end
data/spec/spec_helper.rb CHANGED
@@ -1,175 +1,17 @@
1
- require 'spec_helper_without_rails'
1
+ $LOAD_PATH.unshift(File.dirname(__FILE__))
2
+ $LOAD_PATH << File.expand_path('../support', __FILE__)
2
3
 
3
- module ActiveAdminIntegrationSpecHelper
4
- extend self
4
+ ENV['BUNDLE_GEMFILE'] = File.expand_path('../../Gemfile', __FILE__)
5
+ require "bundler"
6
+ Bundler.setup
5
7
 
6
- def load_defaults!
7
- ActiveAdmin.unload!
8
- ActiveAdmin.load!
9
- ActiveAdmin.register(Category)
10
- ActiveAdmin.register(User)
11
- ActiveAdmin.register(Post){ belongs_to :user, :optional => true }
12
- reload_menus!
13
- end
8
+ require 'detect_rails_version'
9
+ ENV['RAILS'] = detect_rails_version
14
10
 
15
- def reload_menus!
16
- ActiveAdmin.application.namespaces.values.each{|n| n.reset_menu! }
17
- end
11
+ require 'simplecov'
18
12
 
19
- # Sometimes we need to reload the routes within
20
- # the application to test them out
21
- def reload_routes!
22
- Rails.application.reload_routes!
23
- end
24
-
25
- # Helper method to load resources and ensure that Active Admin is
26
- # setup with the new configurations.
27
- #
28
- # Eg:
29
- # load_resources do
30
- # ActiveAdmin.regiser(Post)
31
- # end
32
- #
33
- def load_resources
34
- ActiveAdmin.unload!
35
- yield
36
- reload_menus!
37
- reload_routes!
38
- end
39
-
40
- # Sets up a describe block where you can render controller
41
- # actions. Uses the Admin::PostsController as the subject
42
- # for the describe block
43
- def describe_with_render(*args, &block)
44
- describe *args do
45
- include RSpec::Rails::ControllerExampleGroup
46
- render_views
47
- # metadata[:behaviour][:describes] = ActiveAdmin.namespaces[:admin].resources['Post'].controller
48
- module_eval &block
49
- end
50
- end
51
-
52
- def arbre(assigns = {}, helpers = mock_action_view, &block)
53
- Arbre::Context.new(assigns, helpers, &block)
54
- end
55
-
56
- def render_arbre_component(assigns = {}, helpers = mock_action_view, &block)
57
- arbre(assigns, helpers, &block).children.first
58
- end
59
-
60
- # Setup a describe block which uses capybara and rails integration
61
- # test methods.
62
- def describe_with_capybara(*args, &block)
63
- describe *args do
64
- include RSpec::Rails::IntegrationExampleGroup
65
- module_eval &block
66
- end
67
- end
68
-
69
- # Returns a fake action view instance to use with our renderers
70
- def mock_action_view(assigns = {})
71
- controller = ActionView::TestCase::TestController.new
72
- ActionView::Base.send :include, ActionView::Helpers
73
- ActionView::Base.send :include, ActiveAdmin::ViewHelpers
74
- ActionView::Base.send :include, Rails.application.routes.url_helpers
75
- ActionView::Base.new(ActionController::Base.view_paths, assigns, controller)
76
- end
77
- alias_method :action_view, :mock_action_view
78
-
79
- # A mock resource to register
80
- class MockResource
81
- end
82
-
83
- end
84
-
85
- ENV['RAILS_ENV'] = 'test'
86
- ENV['RAILS_ROOT'] = File.expand_path("../rails/rails-#{ENV['RAILS']}", __FILE__)
87
-
88
- # Create the test app if it doesn't exists
89
- unless File.exists?(ENV['RAILS_ROOT'])
90
- system 'rake setup'
91
- end
92
-
93
- # Ensure the Active Admin load path is happy
94
- require 'rails'
95
- require 'active_admin'
96
- ActiveAdmin.application.load_paths = [ENV['RAILS_ROOT'] + "/app/admin"]
97
-
98
- require ENV['RAILS_ROOT'] + '/config/environment'
99
-
100
- require 'rspec/rails'
101
-
102
- # Setup Some Admin stuff for us to play with
103
- include ActiveAdminIntegrationSpecHelper
104
- load_defaults!
105
- reload_routes!
106
-
107
- # Disabling authentication in specs so that we don't have to worry about
108
- # it allover the place
109
- ActiveAdmin.application.authentication_method = false
110
- ActiveAdmin.application.current_user_method = false
111
-
112
- # Don't add asset cache timestamps. Makes it easy to integration
113
- # test for the presence of an asset file
114
- ENV["RAILS_ASSET_ID"] = ''
115
-
116
- RSpec.configure do |config|
117
- config.use_transactional_fixtures = true
118
- config.use_instantiated_fixtures = false
119
- config.include Devise::TestHelpers, :type => :controller
120
- config.render_views = false
121
- end
122
-
123
- # All RSpec configuration needs to happen before any examples
124
- # or else it whines.
125
- require 'integration_example_group'
126
- RSpec.configure do |c|
127
- c.include RSpec::Rails::IntegrationExampleGroup, :example_group => { :file_path => /\bspec\/integration\// }
128
- c.include Devise::TestHelpers, :type => :controller
129
- end
130
-
131
- # Ensure this is defined for Ruby 1.8
132
- module MiniTest; class Assertion < Exception; end; end
133
-
134
- RSpec::Matchers.define :have_tag do |*args|
135
-
136
- match_unless_raises Test::Unit::AssertionFailedError do |response|
137
- tag = args.shift
138
- content = args.first.is_a?(Hash) ? nil : args.shift
139
-
140
- options = {
141
- :tag => tag.to_s
142
- }.merge(args[0] || {})
143
-
144
- options[:content] = content if content
145
-
146
- begin
147
- begin
148
- assert_tag(options)
149
- rescue NoMethodError
150
- # We are not in a controller, so let's do the checking ourselves
151
- doc = HTML::Document.new(response, false, false)
152
- tag = doc.find(options)
153
- assert tag, "expected tag, but no tag found matching #{options.inspect} in:\n#{response.inspect}"
154
- end
155
- # In Ruby 1.9, MiniTest::Assertion get's raised, so we'll
156
- # handle raising a Test::Unit::AssertionFailedError
157
- rescue MiniTest::Assertion => e
158
- raise Test::Unit::AssertionFailedError, e.message
159
- end
160
- end
161
- end
162
-
163
- # improve the performance of the specs suite by not logging anything
164
- # see http://blog.plataformatec.com.br/2011/12/three-tips-to-improve-the-performance-of-your-test-suite/
165
- Rails.logger.level = 4
166
-
167
-
168
- # Improves performance by forcing the garbage collector to run less often.
169
- unless ENV['DEFER_GC'] == '0' || ENV['DEFER_GC'] == 'false'
170
- require 'support/deferred_garbage_collection'
171
- RSpec.configure do |config|
172
- config.before(:all) { DeferredGarbageCollection.start }
173
- config.after(:all) { DeferredGarbageCollection.reconsider }
174
- end
13
+ SimpleCov.start do
14
+ add_filter 'spec/'
15
+ add_filter 'features/'
16
+ add_filter 'bundle/' # for Travis
175
17
  end
@@ -1,42 +1,34 @@
1
1
  # Detects the current version of Rails that is being used
2
2
  #
3
3
  #
4
- unless defined? RAILS_VERSION_FILE
5
- RAILS_VERSION_FILE = File.expand_path("../../../.rails-version", __FILE__)
6
- end
7
-
8
- unless defined? TRAVIS_CONFIG
9
- require 'yaml'
10
- filename = File.expand_path("../../../.travis.yml", __FILE__)
11
- TRAVIS_CONFIG = YAML.load_file filename
12
- TRAVIS_RAILS_VERSIONS = TRAVIS_CONFIG['env'].grep(/RAILS=(.*)/){ $1 }
13
- end
14
-
15
- unless defined? DEFAULT_RAILS_VERSION
16
- DEFAULT_RAILS_VERSION = TRAVIS_RAILS_VERSIONS.first
17
- end
18
-
19
- def detect_rails_version
20
- version = version_from_file || version_from_env || DEFAULT_RAILS_VERSION
21
-
22
- puts "Detected Rails: #{version}" if ENV['DEBUG']
23
-
24
- version
25
- end
26
-
27
- def version_from_file
28
- if File.exists?(RAILS_VERSION_FILE)
29
- version = File.read(RAILS_VERSION_FILE).chomp.strip
30
- version = nil if version == ""
31
-
32
- version
33
- end
34
- end
35
-
36
- def version_from_env
37
- ENV['RAILS']
38
- end
39
-
40
- def write_rails_version(version)
41
- File.open(RAILS_VERSION_FILE, "w+"){|f| f << version }
42
- end
4
+ # RAILS_VERSION_FILE ||= File.expand_path("../../../.rails-version", __FILE__)
5
+
6
+ # unless defined? TRAVIS_CONFIG
7
+ # require 'yaml'
8
+ # filename = File.expand_path("../../../.travis.yml", __FILE__)
9
+ # TRAVIS_CONFIG = YAML.load_file filename
10
+ # TRAVIS_RAILS_VERSIONS = TRAVIS_CONFIG['env']['matrix'].grep(/RAILS=(.*)/){ $1 }
11
+ # end
12
+
13
+ # DEFAULT_RAILS_VERSION ||= TRAVIS_RAILS_VERSIONS.first
14
+
15
+ # def detect_rails_version
16
+ # version = version_from_file || ENV['RAILS'] || DEFAULT_RAILS_VERSION
17
+ # ensure
18
+ # puts "Detected Rails: #{version}" if ENV['DEBUG']
19
+ # end
20
+
21
+ # def detect_rails_version!
22
+ # detect_rails_version or raise "can't find a version of Rails to use!"
23
+ # end
24
+
25
+ # def version_from_file
26
+ # if File.exists?(RAILS_VERSION_FILE)
27
+ # version = File.read(RAILS_VERSION_FILE).chomp.strip
28
+ # version unless version == ''
29
+ # end
30
+ # end
31
+
32
+ # def write_rails_version(version)
33
+ # File.open(RAILS_VERSION_FILE, "w+"){|f| f << version }
34
+ # end
@@ -2,7 +2,6 @@
2
2
 
3
3
  run "rm Gemfile"
4
4
  run "rm -r test"
5
- run "rm -r spec"
6
5
 
7
6
  # Create a cucumber database and environment
8
7
  copy_file File.expand_path('../templates/cucumber.rb', __FILE__), "config/environments/cucumber.rb"
@@ -12,35 +11,53 @@ gsub_file 'config/database.yml', /^test:.*\n/, "test: &test\n"
12
11
  gsub_file 'config/database.yml', /\z/, "\ncucumber:\n <<: *test\n database: db/cucumber.sqlite3"
13
12
  gsub_file 'config/database.yml', /\z/, "\ncucumber_with_reloading:\n <<: *test\n database: db/cucumber.sqlite3"
14
13
 
15
- generate :model, "post title:string body:text published_at:datetime author_id:integer category_id:integer starred:boolean"
14
+ if File.exists? 'config/secrets.yml'
15
+ gsub_file 'config/secrets.yml', /\z/, "\ncucumber:\n secret_key_base: #{'o' * 128}"
16
+ gsub_file 'config/secrets.yml', /\z/, "\ncucumber_with_reloading:\n secret_key_base: #{'o' * 128}"
17
+ end
18
+
19
+ generate :model, "post title:string body:text published_at:datetime author_id:integer position:integer custom_category_id:integer starred:boolean foo_id:integer"
16
20
  inject_into_file 'app/models/post.rb', %q{
17
- belongs_to :category
18
- belongs_to :author, :class_name => 'User'
21
+ belongs_to :category, foreign_key: :custom_category_id
22
+ belongs_to :author, class_name: 'User'
23
+ has_many :taggings
19
24
  accepts_nested_attributes_for :author
20
- attr_accessible :author unless Rails::VERSION::MAJOR > 3 && !defined? ProtectedAttributes
21
- }, :after => 'class Post < ActiveRecord::Base'
25
+ accepts_nested_attributes_for :taggings
26
+ attr_accessible :author, :position unless Rails::VERSION::MAJOR > 3 && !defined? ProtectedAttributes
27
+ }, after: 'class Post < ActiveRecord::Base'
22
28
  copy_file File.expand_path('../templates/post_decorator.rb', __FILE__), "app/models/post_decorator.rb"
23
29
 
30
+ generate :model, "blog/post title:string body:text published_at:datetime author_id:integer position:integer custom_category_id:integer starred:boolean foo_id:integer"
31
+ inject_into_file 'app/models/blog/post.rb', %q{
32
+ belongs_to :category, foreign_key: :custom_category_id
33
+ belongs_to :author, class_name: 'User'
34
+ has_many :taggings
35
+ accepts_nested_attributes_for :author
36
+ accepts_nested_attributes_for :taggings
37
+ attr_accessible :author, :position unless Rails::VERSION::MAJOR > 3 && !defined? ProtectedAttributes
38
+ }, after: 'class Blog::Post < ActiveRecord::Base'
39
+
40
+
24
41
  generate :model, "user type:string first_name:string last_name:string username:string age:integer"
25
42
  inject_into_file 'app/models/user.rb', %q{
26
- has_many :posts, :foreign_key => 'author_id'
43
+ has_many :posts, foreign_key: 'author_id'
27
44
  def display_name
28
45
  "#{first_name} #{last_name}"
29
46
  end
30
- }, :after => 'class User < ActiveRecord::Base'
47
+ }, after: 'class User < ActiveRecord::Base'
31
48
 
32
49
  generate :model, 'publisher --migration=false --parent=User'
33
50
  generate :model, 'category name:string description:text'
34
51
  inject_into_file 'app/models/category.rb', %q{
35
- has_many :posts
52
+ has_many :posts, foreign_key: :custom_category_id
36
53
  has_many :authors, through: :posts
37
54
  accepts_nested_attributes_for :posts
38
- }, :after => 'class Category < ActiveRecord::Base'
55
+ }, after: 'class Category < ActiveRecord::Base'
39
56
  generate :model, 'store name:string'
40
57
 
41
58
  # Generate a model with string ids
42
59
  generate :model, "tag name:string"
43
- gsub_file(Dir['db/migrate/*_create_tags.rb'][0], /\:tags\sdo\s.*/, ":tags, :id => false, :primary_key => :id do |t|\n\t\t\tt.string :id\n")
60
+ gsub_file(Dir['db/migrate/*_create_tags.rb'][0], /\:tags\sdo\s.*/, ":tags, id: false, primary_key: :id do |t|\n\t\t\tt.string :id\n")
44
61
  inject_into_file 'app/models/tag.rb', %q{
45
62
  self.primary_key = :id
46
63
  before_create :set_id
@@ -49,13 +66,23 @@ inject_into_file 'app/models/tag.rb', %q{
49
66
  def set_id
50
67
  self.id = 8.times.inject("") { |s,e| s << (i = Kernel.rand(62); i += ((i < 10) ? 48 : ((i < 36) ? 55 : 61 ))).chr }
51
68
  end
52
- }, :after => 'class Tag < ActiveRecord::Base'
69
+ }, after: 'class Tag < ActiveRecord::Base'
70
+
71
+ generate :model, "tagging post_id:integer tag_id:integer"
72
+ inject_into_file 'app/models/tagging.rb', %q{
73
+ belongs_to :post
74
+ belongs_to :tag
75
+ }, after: 'class Tagging < ActiveRecord::Base'
53
76
 
54
77
  # Configure default_url_options in test environment
55
- inject_into_file "config/environments/test.rb", " config.action_mailer.default_url_options = { :host => 'example.com' }\n", :after => "config.cache_classes = true\n"
78
+ inject_into_file "config/environments/test.rb", " config.action_mailer.default_url_options = { host: 'example.com' }\n", after: "config.cache_classes = true\n"
56
79
 
57
80
  # Add our local Active Admin to the load path
58
- inject_into_file "config/environment.rb", "\n$LOAD_PATH.unshift('#{File.expand_path(File.join(File.dirname(__FILE__), '..', '..', 'lib'))}')\nrequire \"active_admin\"\n", :after => "require File.expand_path('../application', __FILE__)"
81
+ inject_into_file "config/environment.rb", "\n$LOAD_PATH.unshift('#{File.expand_path(File.join(File.dirname(__FILE__), '..', '..', 'lib'))}')\nrequire \"active_admin\"\n", after: "require File.expand_path('../application', __FILE__)"
82
+ inject_into_file "config/application.rb", "\nrequire 'devise'\n", after: "require 'rails/all'"
83
+
84
+ # Force strong parameters to raise exceptions
85
+ inject_into_file 'config/application.rb', "\n\n config.action_controller.action_on_unpermitted_parameters = :raise if Rails::VERSION::MAJOR == 4\n\n", after: 'class Application < Rails::Application'
59
86
 
60
87
  # Add some translations
61
88
  append_file "config/locales/en.yml", File.read(File.expand_path('../templates/en.yml', __FILE__))
@@ -63,27 +90,32 @@ append_file "config/locales/en.yml", File.read(File.expand_path('../templates/en
63
90
  # Add predefined admin resources
64
91
  directory File.expand_path('../templates/admin', __FILE__), "app/admin"
65
92
 
93
+ # Add predefined policies
94
+ directory File.expand_path('../templates/policies', __FILE__), 'app/policies'
95
+
66
96
  $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
67
97
 
68
- generate :'active_admin:install'
98
+ generate 'active_admin:install'
69
99
 
70
- rake "db:migrate"
71
- rake "db:test:prepare"
72
- run "/usr/bin/env RAILS_ENV=cucumber rake db:migrate"
100
+ inject_into_file "config/routes.rb", "\n root to: redirect('/admin')", after: /.*::Application.routes.draw do/
101
+ remove_file "public/index.html" if File.exists? "public/index.html"
73
102
 
74
- # Setup parallel_tests
75
- def setup_parallel_tests_database(after, force_insert_same_content = false)
76
- inject_into_file 'config/database.yml', "<%= ENV['TEST_ENV_NUMBER'] %>", :after => after, :force => force_insert_same_content
77
- end
103
+ # Devise master doesn't set up its secret key on Rails 4.1
104
+ # https://github.com/plataformatec/devise/issues/2554
105
+ gsub_file 'config/initializers/devise.rb', /# config.secret_key =/, 'config.secret_key ='
78
106
 
79
- setup_parallel_tests_database "test.sqlite3"
80
- setup_parallel_tests_database "cucumber.sqlite3", true
107
+ rake "db:migrate db:test:prepare"
108
+ run "/usr/bin/env RAILS_ENV=cucumber rake db:migrate"
109
+
110
+ if ENV['INSTALL_PARALLEL']
111
+ inject_into_file 'config/database.yml', "<%= ENV['TEST_ENV_NUMBER'] %>", after: 'test.sqlite3'
112
+ inject_into_file 'config/database.yml', "<%= ENV['TEST_ENV_NUMBER'] %>", after: 'cucumber.sqlite3', force: true
81
113
 
82
- # Note: this is hack!
83
- # Somehow, calling parallel_tests tasks from Rails generator using Thor does not work ...
84
- # RAILS_ENV variable never makes it to parallel_tests tasks.
85
- # We need to call these tasks in the after set up hook in order to creates cucumber DBs + run migrations on test & cucumber DBs
86
- create_file 'lib/tasks/parallel.rake', %q{
114
+ # Note: this is hack!
115
+ # Somehow, calling parallel_tests tasks from Rails generator using Thor does not work ...
116
+ # RAILS_ENV variable never makes it to parallel_tests tasks.
117
+ # We need to call these tasks in the after set up hook in order to creates cucumber DBs + run migrations on test & cucumber DBs
118
+ create_file 'lib/tasks/parallel.rake', %q{
87
119
  namespace :parallel do
88
120
  def run_in_parallel(cmd, options)
89
121
  count = "-n #{options[:count]}" if options[:count]
@@ -103,9 +135,4 @@ namespace :parallel do
103
135
  end
104
136
  end
105
137
  }
106
-
107
- # If using Devise after 3.1, this is required for the tests to pass:
108
- require 'devise/version'
109
- if Devise::VERSION.to_f >= 3.1
110
- inject_into_file 'config/initializers/devise.rb', "\n config.allow_insecure_token_lookup = true", after: 'Devise.setup do |config|'
111
138
  end