activeadmin 0.6.6 → 1.0.0.pre1

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of activeadmin might be problematic. Click here for more details.

Files changed (512) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +11 -8
  3. data/.hound.yml +11 -0
  4. data/.travis.yml +36 -10
  5. data/.yardopts +2 -1
  6. data/CHANGELOG.md +118 -67
  7. data/CONTRIBUTING.md +96 -73
  8. data/Gemfile +35 -35
  9. data/Guardfile +1 -0
  10. data/LICENSE +1 -1
  11. data/README.md +98 -0
  12. data/Rakefile +12 -4
  13. data/activeadmin.gemspec +21 -24
  14. data/app/assets/javascripts/active_admin/application.js.coffee +32 -0
  15. data/app/assets/javascripts/active_admin/base.js.coffee +14 -0
  16. data/app/assets/javascripts/active_admin/ext/jquery-ui.js.coffee +6 -0
  17. data/app/assets/javascripts/active_admin/ext/jquery.js.coffee +7 -0
  18. data/app/assets/javascripts/active_admin/lib/batch_actions.js.coffee +39 -0
  19. data/app/assets/javascripts/active_admin/{components/jquery.aa.checkbox-toggler.js.coffee → lib/checkbox-toggler.js.coffee} +3 -4
  20. data/app/assets/javascripts/active_admin/lib/dropdown-menu.js.coffee +101 -0
  21. data/app/assets/javascripts/active_admin/lib/flash.js.coffee +19 -0
  22. data/app/assets/javascripts/active_admin/lib/has_many.js.coffee +79 -0
  23. data/app/assets/javascripts/active_admin/lib/modal_dialog.js.coffee +37 -0
  24. data/app/assets/javascripts/active_admin/lib/per_page.js.coffee +27 -0
  25. data/app/assets/javascripts/active_admin/lib/popover.js.coffee +68 -0
  26. data/app/assets/javascripts/active_admin/{components/jquery.aa.table-checkbox-toggler.js.coffee → lib/table-checkbox-toggler.js.coffee} +2 -3
  27. data/app/assets/stylesheets/active_admin/{_base.css.scss → _base.scss} +3 -0
  28. data/app/assets/stylesheets/active_admin/{_forms.css.scss → _forms.scss} +61 -17
  29. data/app/assets/stylesheets/active_admin/{_header.css.scss → _header.scss} +9 -5
  30. data/app/assets/stylesheets/active_admin/{_mixins.css.scss → _mixins.scss} +0 -0
  31. data/app/assets/stylesheets/active_admin/{_typography.css.scss → _typography.scss} +0 -0
  32. data/app/assets/stylesheets/active_admin/components/_batch_actions.scss +11 -0
  33. data/app/assets/stylesheets/active_admin/components/_blank_slates.scss +0 -1
  34. data/app/assets/stylesheets/active_admin/components/_buttons.scss +1 -1
  35. data/app/assets/stylesheets/active_admin/components/{_comments.css.scss → _comments.scss} +0 -0
  36. data/app/assets/stylesheets/active_admin/components/{_date_picker.css.scss → _date_picker.scss} +40 -14
  37. data/app/assets/stylesheets/active_admin/components/_dropdown_menu.scss +5 -4
  38. data/app/assets/stylesheets/active_admin/components/_flash_messages.scss +37 -0
  39. data/app/assets/stylesheets/active_admin/components/_modal_dialog.scss +34 -0
  40. data/app/assets/stylesheets/active_admin/components/_pagination.scss +10 -0
  41. data/app/assets/stylesheets/active_admin/components/{_popovers.css.scss → _popovers.scss} +2 -3
  42. data/app/assets/stylesheets/active_admin/components/_status_tags.scss +4 -0
  43. data/app/assets/stylesheets/active_admin/components/_table_tools.scss +67 -0
  44. data/app/assets/stylesheets/active_admin/components/{_tables.css.scss → _tables.scss} +4 -2
  45. data/app/assets/stylesheets/active_admin/components/_tabs.scss +65 -0
  46. data/app/assets/stylesheets/active_admin/components/_unsupported_browser.scss +16 -0
  47. data/app/assets/stylesheets/active_admin/mixins/{_all.css.scss → _all.scss} +0 -0
  48. data/app/assets/stylesheets/active_admin/mixins/{_buttons.css.scss → _buttons.scss} +0 -1
  49. data/app/assets/stylesheets/active_admin/mixins/_gradients.scss +28 -0
  50. data/app/assets/stylesheets/active_admin/mixins/{_icons.css.scss → _icons.scss} +1 -2
  51. data/app/assets/stylesheets/active_admin/mixins/{_reset.css.scss → _reset.scss} +0 -0
  52. data/app/assets/stylesheets/active_admin/mixins/_rounded.scss +22 -0
  53. data/app/assets/stylesheets/active_admin/mixins/{_sections.css.scss → _sections.scss} +8 -2
  54. data/app/assets/stylesheets/active_admin/mixins/{_shadows.css.scss → _shadows.scss} +0 -7
  55. data/app/assets/stylesheets/active_admin/mixins/_utilities.scss +0 -9
  56. data/app/assets/stylesheets/active_admin/mixins/{_variables.css.scss → _variables.scss} +10 -8
  57. data/app/assets/stylesheets/active_admin/{print.css.scss → print.scss} +4 -0
  58. data/app/assets/stylesheets/active_admin/structure/_main_structure.scss +5 -2
  59. data/app/assets/stylesheets/active_admin/structure/_title_bar.scss +11 -9
  60. data/app/views/active_admin/devise/confirmations/new.html.erb +15 -0
  61. data/app/views/active_admin/devise/mailer/reset_password_instructions.html.erb +1 -1
  62. data/app/views/active_admin/devise/mailer/unlock_instructions.html.erb +1 -1
  63. data/app/views/active_admin/devise/passwords/edit.html.erb +9 -10
  64. data/app/views/active_admin/devise/passwords/new.html.erb +5 -4
  65. data/app/views/active_admin/devise/registrations/new.html.erb +22 -0
  66. data/app/views/active_admin/devise/sessions/new.html.erb +9 -7
  67. data/app/views/active_admin/devise/shared/_links.erb +1 -1
  68. data/app/views/active_admin/devise/unlocks/new.html.erb +5 -4
  69. data/app/views/layouts/active_admin_logged_out.html.erb +3 -5
  70. data/config/locales/ar.yml +120 -0
  71. data/config/locales/bg.yml +26 -6
  72. data/config/locales/bs.yml +122 -0
  73. data/config/locales/ca.yml +10 -1
  74. data/config/locales/cs.yml +7 -2
  75. data/config/locales/da.yml +7 -3
  76. data/config/locales/de-CH.yml +14 -31
  77. data/config/locales/de.yml +33 -33
  78. data/config/locales/el.yml +28 -2
  79. data/config/locales/en-GB.yml +12 -4
  80. data/config/locales/en.yml +29 -3
  81. data/config/locales/{es_MX.yml → es-MX.yml} +9 -24
  82. data/config/locales/es.yml +32 -25
  83. data/config/locales/fa.yml +120 -0
  84. data/config/locales/fi.yml +113 -0
  85. data/config/locales/fr.yml +21 -11
  86. data/config/locales/he.yml +7 -3
  87. data/config/locales/hr.yml +42 -11
  88. data/config/locales/hu.yml +10 -3
  89. data/config/locales/it.yml +31 -3
  90. data/config/locales/ja.yml +8 -3
  91. data/config/locales/ko.yml +7 -1
  92. data/config/locales/lt.yml +42 -11
  93. data/config/locales/lv.yml +7 -3
  94. data/config/locales/{no-NB.yml → nb.yml} +46 -15
  95. data/config/locales/nl.yml +36 -5
  96. data/config/locales/pl.yml +13 -8
  97. data/config/locales/pt-BR.yml +37 -5
  98. data/config/locales/pt-PT.yml +8 -4
  99. data/config/locales/ro.yml +7 -3
  100. data/config/locales/ru.yml +26 -5
  101. data/config/locales/sv-SE.yml +9 -5
  102. data/config/locales/tr.yml +10 -3
  103. data/config/locales/uk.yml +36 -12
  104. data/config/locales/vi.yml +7 -3
  105. data/config/locales/zh-CN.yml +26 -10
  106. data/config/locales/zh-TW.yml +19 -13
  107. data/docs/0-installation.md +65 -29
  108. data/docs/1-general-configuration.md +92 -81
  109. data/docs/10-custom-pages.md +68 -68
  110. data/docs/11-decorators.md +48 -59
  111. data/docs/12-arbre-components.md +80 -74
  112. data/docs/13-authorization-adapter.md +128 -107
  113. data/docs/14-gotchas.md +92 -0
  114. data/docs/2-resource-customization.md +293 -178
  115. data/docs/3-index-pages.md +160 -86
  116. data/docs/3-index-pages/custom-index.md +31 -0
  117. data/docs/3-index-pages/index-as-block.md +14 -9
  118. data/docs/3-index-pages/index-as-blog.md +41 -31
  119. data/docs/3-index-pages/index-as-grid.md +16 -8
  120. data/docs/3-index-pages/index-as-table.md +129 -52
  121. data/docs/4-csv-format.md +31 -24
  122. data/docs/5-forms.md +133 -56
  123. data/docs/6-show-pages.md +89 -27
  124. data/docs/7-sidebars.md +48 -27
  125. data/docs/8-custom-actions.md +98 -77
  126. data/docs/9-batch-actions.md +210 -146
  127. data/docs/README.md +24 -0
  128. data/features/action_item.feature +3 -3
  129. data/features/authorization_pundit.feature +37 -0
  130. data/features/breadcrumb.feature +48 -0
  131. data/features/comments/commenting.feature +56 -13
  132. data/features/development_reloading.feature +17 -30
  133. data/features/edit_page.feature +12 -1
  134. data/features/favicon.feature +3 -3
  135. data/features/i18n.feature +5 -4
  136. data/features/index/batch_actions.feature +41 -0
  137. data/features/index/filters.feature +67 -0
  138. data/features/index/format_as_csv.feature +90 -4
  139. data/features/index/formats.feature +27 -0
  140. data/features/index/index_as_blog.feature +4 -4
  141. data/features/index/index_as_table.feature +102 -6
  142. data/features/index/index_blank_slate.feature +22 -0
  143. data/features/index/index_scope_to.feature +16 -16
  144. data/features/index/page_title.feature +11 -0
  145. data/features/index/pagination.feature +1 -1
  146. data/features/index/switch_index_view.feature +14 -14
  147. data/features/new_page.feature +13 -2
  148. data/features/registering_pages.feature +1 -1
  149. data/features/renamed_resource.feature +32 -0
  150. data/features/show/page_title.feature +11 -0
  151. data/features/show/tabs.feature +27 -0
  152. data/features/sidebar_sections.feature +12 -0
  153. data/features/site_title.feature +2 -2
  154. data/features/specifying_actions.feature +3 -3
  155. data/features/step_definitions/action_item_steps.rb +2 -2
  156. data/features/step_definitions/action_link_steps.rb +14 -1
  157. data/features/step_definitions/additional_web_steps.rb +19 -20
  158. data/features/step_definitions/asset_steps.rb +3 -3
  159. data/features/step_definitions/attribute_steps.rb +8 -3
  160. data/features/step_definitions/batch_action_steps.rb +26 -9
  161. data/features/step_definitions/blog_steps.rb +3 -0
  162. data/features/step_definitions/breadcrumb_steps.rb +1 -1
  163. data/features/step_definitions/comment_steps.rb +1 -1
  164. data/features/step_definitions/configuration_steps.rb +9 -2
  165. data/features/step_definitions/dashboard_steps.rb +2 -2
  166. data/features/step_definitions/factory_steps.rb +9 -8
  167. data/features/step_definitions/filter_steps.rb +25 -3
  168. data/features/step_definitions/flash_steps.rb +3 -3
  169. data/features/step_definitions/format_steps.rb +18 -18
  170. data/features/step_definitions/index_scope_steps.rb +5 -5
  171. data/features/step_definitions/layout_steps.rb +1 -1
  172. data/features/step_definitions/member_link_steps.rb +2 -2
  173. data/features/step_definitions/menu_steps.rb +3 -3
  174. data/features/step_definitions/pagination_steps.rb +2 -3
  175. data/features/step_definitions/sidebar_steps.rb +8 -3
  176. data/features/step_definitions/site_title_steps.rb +6 -4
  177. data/features/step_definitions/symbol_leak_steps.rb +3 -0
  178. data/features/step_definitions/tab_steps.rb +5 -0
  179. data/features/step_definitions/table_steps.rb +4 -4
  180. data/features/step_definitions/user_steps.rb +10 -7
  181. data/features/step_definitions/web_steps.rb +14 -11
  182. data/features/sti_resource.feature +6 -2
  183. data/features/strong_parameters.feature +73 -0
  184. data/features/support/env.rb +34 -9
  185. data/features/support/paths.rb +14 -6
  186. data/features/support/selectors.rb +1 -1
  187. data/features/symbol_leak.feature +35 -0
  188. data/features/users/resetting_password.feature +5 -6
  189. data/lib/active_admin.rb +26 -25
  190. data/lib/active_admin/abstract_view_factory.rb +7 -17
  191. data/lib/active_admin/application.rb +72 -59
  192. data/lib/active_admin/asset_registration.rb +2 -2
  193. data/lib/active_admin/authorization_adapter.rb +2 -2
  194. data/lib/active_admin/base_controller.rb +2 -3
  195. data/lib/active_admin/base_controller/authorization.rb +13 -31
  196. data/lib/active_admin/batch_actions.rb +1 -1
  197. data/lib/active_admin/batch_actions/controller.rb +24 -8
  198. data/lib/active_admin/batch_actions/resource_extension.rb +47 -18
  199. data/lib/active_admin/batch_actions/views/batch_action_form.rb +7 -4
  200. data/lib/active_admin/batch_actions/views/batch_action_popover.rb +3 -3
  201. data/lib/active_admin/batch_actions/views/batch_action_selector.rb +8 -17
  202. data/lib/active_admin/batch_actions/views/selection_cells.rb +4 -4
  203. data/lib/active_admin/callbacks.rb +25 -24
  204. data/lib/active_admin/cancan_adapter.rb +7 -11
  205. data/lib/active_admin/csv_builder.rb +92 -15
  206. data/lib/active_admin/dependency.rb +93 -0
  207. data/lib/active_admin/deprecation.rb +6 -7
  208. data/lib/active_admin/devise.rb +28 -18
  209. data/lib/active_admin/dsl.rb +18 -11
  210. data/lib/active_admin/engine.rb +10 -8
  211. data/lib/active_admin/error.rb +62 -0
  212. data/lib/active_admin/filters/dsl.rb +2 -2
  213. data/lib/active_admin/filters/forms.rb +17 -27
  214. data/lib/active_admin/filters/formtastic_addons.rb +49 -15
  215. data/lib/active_admin/filters/resource_extension.rb +43 -34
  216. data/lib/active_admin/form_builder.rb +93 -154
  217. data/lib/active_admin/helpers/collection.rb +7 -13
  218. data/lib/active_admin/helpers/i18n.rb +7 -0
  219. data/lib/active_admin/helpers/optional_display.rb +5 -5
  220. data/lib/active_admin/helpers/routes/url_helpers.rb +15 -0
  221. data/lib/active_admin/helpers/scope_chain.rb +1 -1
  222. data/lib/active_admin/helpers/settings.rb +16 -9
  223. data/lib/active_admin/iconic.rb +17 -15
  224. data/lib/active_admin/iconic/icons.rb +136 -136
  225. data/lib/active_admin/inputs.rb +11 -7
  226. data/lib/active_admin/inputs/datepicker_input.rb +12 -3
  227. data/lib/active_admin/inputs/filters/base.rb +42 -0
  228. data/lib/active_admin/inputs/filters/base/search_method_select.rb +75 -0
  229. data/lib/active_admin/inputs/filters/boolean_input.rb +24 -0
  230. data/lib/active_admin/inputs/filters/check_boxes_input.rb +50 -0
  231. data/lib/active_admin/inputs/filters/date_range_input.rb +36 -0
  232. data/lib/active_admin/inputs/filters/numeric_input.rb +12 -0
  233. data/lib/active_admin/inputs/filters/select_input.rb +54 -0
  234. data/lib/active_admin/inputs/filters/string_input.rb +26 -0
  235. data/lib/active_admin/menu.rb +6 -4
  236. data/lib/active_admin/menu_collection.rb +1 -4
  237. data/lib/active_admin/namespace.rb +55 -29
  238. data/lib/active_admin/order_clause.rb +26 -0
  239. data/lib/active_admin/orm/active_record.rb +5 -0
  240. data/lib/active_admin/orm/active_record/comments.rb +81 -0
  241. data/lib/active_admin/orm/active_record/comments/comment.rb +45 -0
  242. data/lib/active_admin/{comments → orm/active_record/comments}/namespace_helper.rb +2 -2
  243. data/lib/active_admin/{comments → orm/active_record/comments}/resource_helper.rb +1 -1
  244. data/lib/active_admin/{comments → orm/active_record/comments}/show_page_helper.rb +0 -0
  245. data/lib/active_admin/orm/active_record/comments/views.rb +2 -0
  246. data/lib/active_admin/{comments → orm/active_record/comments}/views/active_admin_comments.rb +16 -14
  247. data/lib/active_admin/orm/mongoid.rb +1 -0
  248. data/lib/active_admin/orm/mongoid/.gitkeep +0 -0
  249. data/lib/active_admin/page.rb +7 -3
  250. data/lib/active_admin/page_dsl.rb +1 -1
  251. data/lib/active_admin/page_presenter.rb +2 -2
  252. data/lib/active_admin/pundit_adapter.rb +68 -0
  253. data/lib/active_admin/resource.rb +16 -17
  254. data/lib/active_admin/resource/action_items.rb +23 -18
  255. data/lib/active_admin/resource/belongs_to.rb +7 -3
  256. data/lib/active_admin/resource/controllers.rb +1 -0
  257. data/lib/active_admin/resource/includes.rb +12 -0
  258. data/lib/active_admin/resource/menu.rb +5 -5
  259. data/lib/active_admin/resource/naming.rb +27 -43
  260. data/lib/active_admin/resource/page_presenters.rb +1 -1
  261. data/lib/active_admin/resource/routes.rb +27 -11
  262. data/lib/active_admin/resource/scope_to.rb +7 -7
  263. data/lib/active_admin/resource/sidebars.rb +1 -0
  264. data/lib/active_admin/resource_controller.rb +6 -7
  265. data/lib/active_admin/resource_controller/data_access.rb +101 -93
  266. data/lib/active_admin/resource_controller/decorators.rb +91 -9
  267. data/lib/active_admin/resource_controller/streaming.rb +37 -0
  268. data/lib/active_admin/resource_dsl.rb +53 -10
  269. data/lib/active_admin/router.rb +7 -7
  270. data/lib/active_admin/scope.rb +6 -6
  271. data/lib/active_admin/sidebar_section.rb +10 -2
  272. data/lib/active_admin/version.rb +1 -1
  273. data/lib/active_admin/view_factory.rb +17 -17
  274. data/lib/active_admin/view_helpers.rb +0 -1
  275. data/lib/active_admin/view_helpers/auto_link_helper.rb +23 -12
  276. data/lib/active_admin/view_helpers/breadcrumb_helper.rb +4 -3
  277. data/lib/active_admin/view_helpers/display_helper.rb +30 -15
  278. data/lib/active_admin/view_helpers/download_format_links_helper.rb +21 -25
  279. data/lib/active_admin/view_helpers/fields_for.rb +4 -4
  280. data/lib/active_admin/view_helpers/flash_helper.rb +4 -3
  281. data/lib/active_admin/view_helpers/form_helper.rb +5 -9
  282. data/lib/active_admin/view_helpers/method_or_proc_helper.rb +6 -6
  283. data/lib/active_admin/views/action_items.rb +2 -2
  284. data/lib/active_admin/views/components/action_list_popover.rb +1 -1
  285. data/lib/active_admin/views/components/active_admin_form.rb +123 -0
  286. data/lib/active_admin/views/components/attributes_table.rb +63 -21
  287. data/lib/active_admin/views/components/blank_slate.rb +1 -1
  288. data/lib/active_admin/views/components/columns.rb +13 -7
  289. data/lib/active_admin/views/components/dropdown_menu.rb +6 -6
  290. data/lib/active_admin/views/components/index_list.rb +7 -7
  291. data/lib/active_admin/views/components/paginated_collection.rb +38 -20
  292. data/lib/active_admin/views/components/panel.rb +8 -2
  293. data/lib/active_admin/views/components/popover.rb +1 -1
  294. data/lib/active_admin/views/components/scopes.rb +5 -4
  295. data/lib/active_admin/views/components/sidebar_section.rb +3 -2
  296. data/lib/active_admin/views/components/site_title.rb +2 -2
  297. data/lib/active_admin/views/components/status_tag.rb +34 -11
  298. data/lib/active_admin/views/components/table_for.rb +90 -45
  299. data/lib/active_admin/views/components/tabs.rb +28 -0
  300. data/lib/active_admin/views/components/unsupported_browser.rb +11 -0
  301. data/lib/active_admin/views/footer.rb +3 -3
  302. data/lib/active_admin/views/header.rb +3 -3
  303. data/lib/active_admin/views/index_as_block.rb +10 -10
  304. data/lib/active_admin/views/index_as_blog.rb +45 -39
  305. data/lib/active_admin/views/index_as_grid.rb +14 -10
  306. data/lib/active_admin/views/index_as_table.rb +242 -129
  307. data/lib/active_admin/views/pages/base.rb +22 -18
  308. data/lib/active_admin/views/pages/form.rb +21 -11
  309. data/lib/active_admin/views/pages/index.rb +40 -35
  310. data/lib/active_admin/views/pages/layout.rb +1 -1
  311. data/lib/active_admin/views/pages/show.rb +4 -4
  312. data/lib/active_admin/views/tabbed_navigation.rb +7 -3
  313. data/lib/active_admin/views/title_bar.rb +10 -8
  314. data/lib/generators/active_admin/assets/assets_generator.rb +3 -28
  315. data/lib/generators/active_admin/assets/templates/{3.1/active_admin.css.scss → active_admin.css.scss} +0 -0
  316. data/lib/generators/active_admin/assets/templates/active_admin.js.coffee +1 -0
  317. data/lib/generators/active_admin/devise/devise_generator.rb +24 -26
  318. data/lib/generators/active_admin/install/install_generator.rb +8 -9
  319. data/lib/generators/active_admin/install/templates/active_admin.rb.erb +28 -26
  320. data/lib/generators/active_admin/install/templates/admin_user.rb.erb +12 -2
  321. data/lib/generators/active_admin/install/templates/dashboard.rb +4 -4
  322. data/lib/generators/active_admin/install/templates/migrations/create_active_admin_comments.rb +3 -3
  323. data/lib/generators/active_admin/page/USAGE +8 -0
  324. data/lib/generators/active_admin/page/page_generator.rb +12 -0
  325. data/lib/generators/active_admin/page/templates/page.rb +5 -0
  326. data/lib/generators/active_admin/resource/resource_generator.rb +3 -5
  327. data/lib/generators/active_admin/resource/templates/admin.rb +15 -0
  328. data/lib/ransack_ext.rb +12 -0
  329. data/script/local +2 -2
  330. data/script/travis_cache +107 -0
  331. data/spec/javascripts/coffeescripts/jquery.aa.flash.js.coffee +25 -0
  332. data/spec/javascripts/fixtures/flashes.html +2 -0
  333. data/spec/rails_helper.rb +154 -0
  334. data/spec/{integration → requests}/default_namespace_spec.rb +6 -6
  335. data/spec/{integration → requests}/javascript_spec.rb +5 -5
  336. data/spec/requests/memory_spec.rb +23 -0
  337. data/spec/requests/stylesheets_spec.rb +18 -0
  338. data/spec/spec_helper.rb +12 -173
  339. data/spec/support/detect_rails_version.rb +9 -17
  340. data/spec/support/rails_template.rb +64 -35
  341. data/spec/support/rails_template_with_data.rb +14 -14
  342. data/spec/support/templates/admin/stores.rb +5 -1
  343. data/spec/support/templates/policies/active_admin/comment_policy.rb +9 -0
  344. data/spec/support/templates/policies/active_admin/page_policy.rb +18 -0
  345. data/spec/support/templates/policies/admin_user_policy.rb +11 -0
  346. data/spec/support/templates/policies/application_policy.rb +45 -0
  347. data/spec/support/templates/policies/category_policy.rb +7 -0
  348. data/spec/support/templates/policies/post_policy.rb +15 -0
  349. data/spec/support/templates/policies/store_policy.rb +11 -0
  350. data/spec/support/templates/policies/user_policy.rb +11 -0
  351. data/spec/support/templates/post_decorator.rb +4 -46
  352. data/spec/unit/abstract_view_factory_spec.rb +16 -16
  353. data/spec/unit/action_builder_spec.rb +24 -18
  354. data/spec/unit/active_admin_spec.rb +2 -2
  355. data/spec/unit/application_spec.rb +33 -34
  356. data/spec/unit/asset_registration_spec.rb +25 -29
  357. data/spec/unit/authorization/authorization_adapter_spec.rb +10 -10
  358. data/spec/unit/authorization/controller_authorization_spec.rb +11 -11
  359. data/spec/unit/authorization/index_overriding_spec.rb +22 -0
  360. data/spec/unit/auto_link_spec.rb +43 -13
  361. data/spec/unit/batch_actions/resource_spec.rb +15 -14
  362. data/spec/unit/batch_actions/settings_spec.rb +18 -18
  363. data/spec/unit/belongs_to_spec.rb +28 -19
  364. data/spec/unit/cancan_adapter_spec.rb +8 -8
  365. data/spec/unit/comments_spec.rb +99 -39
  366. data/spec/unit/component_spec.rb +3 -3
  367. data/spec/unit/config_shared_examples.rb +10 -10
  368. data/spec/unit/controller_filters_spec.rb +23 -16
  369. data/spec/unit/csv_builder_spec.rb +165 -24
  370. data/spec/unit/dependency_spec.rb +135 -0
  371. data/spec/unit/devise_spec.rb +17 -37
  372. data/spec/unit/dsl_spec.rb +70 -9
  373. data/spec/unit/event_spec.rb +11 -11
  374. data/spec/unit/filters/filter_form_builder_spec.rb +207 -148
  375. data/spec/unit/filters/resource_spec.rb +60 -26
  376. data/spec/unit/form_builder_spec.rb +419 -145
  377. data/spec/unit/generators/install_spec.rb +23 -0
  378. data/spec/unit/helpers/collection_spec.rb +18 -18
  379. data/spec/unit/helpers/scope_chain_spec.rb +6 -6
  380. data/spec/unit/helpers/settings_spec.rb +4 -4
  381. data/spec/unit/i18n_spec.rb +12 -0
  382. data/spec/unit/menu_collection_spec.rb +14 -14
  383. data/spec/unit/menu_item_spec.rb +42 -42
  384. data/spec/unit/menu_spec.rb +20 -20
  385. data/spec/unit/namespace/authorization_spec.rb +8 -8
  386. data/spec/unit/namespace/register_page_spec.rb +11 -11
  387. data/spec/unit/namespace/register_resource_spec.rb +28 -30
  388. data/spec/unit/namespace_spec.rb +20 -20
  389. data/spec/unit/order_clause_spec.rb +81 -0
  390. data/spec/unit/page_controller_spec.rb +1 -1
  391. data/spec/unit/page_spec.rb +18 -12
  392. data/spec/unit/pretty_format_spec.rb +42 -14
  393. data/spec/unit/pundit_adapter_spec.rb +98 -0
  394. data/spec/unit/resource/action_items_spec.rb +15 -12
  395. data/spec/unit/resource/includes_spec.rb +21 -0
  396. data/spec/unit/resource/menu_spec.rb +1 -1
  397. data/spec/unit/resource/naming_spec.rb +35 -21
  398. data/spec/unit/resource/page_presenters_spec.rb +8 -8
  399. data/spec/unit/resource/pagination_spec.rb +6 -6
  400. data/spec/unit/resource/routes_spec.rb +10 -10
  401. data/spec/unit/resource/scopes_spec.rb +14 -7
  402. data/spec/unit/resource/sidebars_spec.rb +6 -6
  403. data/spec/unit/resource_collection_spec.rb +31 -38
  404. data/spec/unit/resource_controller/data_access_spec.rb +96 -30
  405. data/spec/unit/resource_controller/decorators_spec.rb +83 -0
  406. data/spec/unit/resource_controller/sidebars_spec.rb +7 -8
  407. data/spec/unit/resource_controller_spec.rb +73 -70
  408. data/spec/unit/resource_registration_spec.rb +12 -12
  409. data/spec/unit/resource_spec.rb +77 -42
  410. data/spec/unit/routing_spec.rb +39 -31
  411. data/spec/unit/scope_spec.rb +112 -30
  412. data/spec/unit/settings_spec.rb +51 -21
  413. data/spec/unit/view_factory_spec.rb +2 -3
  414. data/spec/unit/view_helpers/breadcrumbs_spec.rb +71 -60
  415. data/spec/unit/view_helpers/display_name_spec.rb +49 -21
  416. data/spec/unit/view_helpers/download_format_links_helper_spec.rb +5 -5
  417. data/spec/unit/view_helpers/fields_for_spec.rb +18 -18
  418. data/spec/unit/view_helpers/flash_helper_spec.rb +25 -0
  419. data/spec/unit/view_helpers/form_helper_spec.rb +10 -23
  420. data/spec/unit/view_helpers/method_or_proc_helper_spec.rb +64 -22
  421. data/spec/unit/views/components/action_list_popover_spec.rb +16 -6
  422. data/spec/unit/views/components/attributes_table_spec.rb +171 -30
  423. data/spec/unit/views/components/batch_action_popover_spec.rb +20 -6
  424. data/spec/unit/views/components/blank_slate_spec.rb +14 -4
  425. data/spec/unit/views/components/columns_spec.rb +52 -22
  426. data/spec/unit/views/components/index_list_spec.rb +11 -8
  427. data/spec/unit/views/components/index_table_for_spec.rb +46 -0
  428. data/spec/unit/views/components/paginated_collection_spec.rb +79 -90
  429. data/spec/unit/views/components/panel_spec.rb +32 -21
  430. data/spec/unit/views/components/popover_spec.rb +7 -7
  431. data/spec/unit/views/components/sidebar_section_spec.rb +18 -8
  432. data/spec/unit/views/components/site_title_spec.rb +26 -26
  433. data/spec/unit/views/components/status_tag_spec.rb +178 -38
  434. data/spec/unit/views/components/table_for_spec.rb +237 -35
  435. data/spec/unit/views/components/tabs_spec.rb +39 -0
  436. data/spec/unit/views/components/unsupported_browser_spec.rb +47 -0
  437. data/spec/unit/views/pages/form_spec.rb +17 -10
  438. data/spec/unit/views/pages/index_spec.rb +60 -0
  439. data/spec/unit/views/pages/layout_spec.rb +17 -21
  440. data/spec/unit/views/pages/show_spec.rb +18 -6
  441. data/spec/unit/views/tabbed_navigation_spec.rb +61 -52
  442. data/tasks/docs.rake +9 -11
  443. data/tasks/parallel_tests.rake +8 -2
  444. data/tasks/test.rake +13 -9
  445. data/tasks/yard.rake +7 -4
  446. metadata +219 -163
  447. data/.document +0 -5
  448. data/README.rdoc +0 -88
  449. data/app/assets/images/active_admin/admin_notes_icon.png +0 -0
  450. data/app/assets/images/active_admin/datepicker/datepicker-header-bg.png +0 -0
  451. data/app/assets/images/active_admin/datepicker/datepicker-next-link-icon.png +0 -0
  452. data/app/assets/images/active_admin/datepicker/datepicker-nipple.png +0 -0
  453. data/app/assets/images/active_admin/datepicker/datepicker-prev-link-icon.png +0 -0
  454. data/app/assets/images/active_admin/index_list_icons/block_icon.svg +0 -10
  455. data/app/assets/images/active_admin/index_list_icons/blog_icon.svg +0 -4
  456. data/app/assets/images/active_admin/index_list_icons/grid_icon.svg +0 -13
  457. data/app/assets/images/active_admin/index_list_icons/table_icon.svg +0 -3
  458. data/app/assets/images/active_admin/loading.gif +0 -0
  459. data/app/assets/javascripts/active_admin/application.js +0 -3
  460. data/app/assets/javascripts/active_admin/base.js +0 -5
  461. data/app/assets/javascripts/active_admin/components/jquery.aa.dropdown-menu.js.coffee +0 -105
  462. data/app/assets/javascripts/active_admin/components/jquery.aa.popover.js.coffee +0 -97
  463. data/app/assets/javascripts/active_admin/lib/namespace.js.coffee +0 -4
  464. data/app/assets/javascripts/active_admin/pages/application.js.coffee +0 -21
  465. data/app/assets/javascripts/active_admin/pages/batch_actions.js.coffee +0 -26
  466. data/app/assets/stylesheets/active_admin/components/_batch_actions.css.scss +0 -11
  467. data/app/assets/stylesheets/active_admin/components/_flash_messages.css.scss +0 -41
  468. data/app/assets/stylesheets/active_admin/components/_table_tools.css.scss +0 -95
  469. data/app/assets/stylesheets/active_admin/mixins/_gradients.css.scss +0 -38
  470. data/app/assets/stylesheets/active_admin/mixins/_rounded.css.scss +0 -43
  471. data/app/views/active_admin/dashboard/index.html.arb +0 -1
  472. data/app/views/active_admin/resource/index.csv.erb +0 -23
  473. data/docs/3-index-pages/create-an-index.md +0 -29
  474. data/lib/active_admin/comments.rb +0 -83
  475. data/lib/active_admin/comments/comment.rb +0 -42
  476. data/lib/active_admin/comments/views.rb +0 -2
  477. data/lib/active_admin/dependency_checker.rb +0 -46
  478. data/lib/active_admin/inputs/filter_base.rb +0 -33
  479. data/lib/active_admin/inputs/filter_base/search_method_select.rb +0 -73
  480. data/lib/active_admin/inputs/filter_boolean_input.rb +0 -36
  481. data/lib/active_admin/inputs/filter_check_boxes_input.rb +0 -40
  482. data/lib/active_admin/inputs/filter_date_range_input.rb +0 -34
  483. data/lib/active_admin/inputs/filter_numeric_input.rb +0 -10
  484. data/lib/active_admin/inputs/filter_select_input.rb +0 -49
  485. data/lib/active_admin/inputs/filter_string_input.rb +0 -24
  486. data/lib/active_admin/reloader.rb +0 -130
  487. data/lib/active_admin/resource_controller/actions.rb +0 -81
  488. data/lib/active_admin/sass/active_admin.scss +0 -3
  489. data/lib/active_admin/sass/css_loader.rb +0 -16
  490. data/lib/active_admin/sass/helpers.rb +0 -45
  491. data/lib/active_admin/view_helpers/assigns_with_indifferent_access_helper.rb +0 -7
  492. data/lib/active_admin/views/dashboard_section_renderer.rb +0 -19
  493. data/lib/active_admin/views/pages/dashboard.rb +0 -62
  494. data/lib/generators/active_admin/assets/templates/3.0/active_admin.js +0 -1
  495. data/lib/generators/active_admin/assets/templates/3.1/active_admin.js +0 -1
  496. data/lib/meta_search_ext.rb +0 -10
  497. data/spec/integration/memory_spec.rb +0 -29
  498. data/spec/integration/stylesheets_spec.rb +0 -41
  499. data/spec/javascripts/compiled/jquery.aa.checkbox-toggler-spec.js +0 -60
  500. data/spec/javascripts/compiled/jquery.aa.popover-spec.js +0 -106
  501. data/spec/javascripts/compiled/jquery.aa.table-checkbox-toggler-spec.js +0 -37
  502. data/spec/javascripts/helpers/vendor/jasmine-fixture-0.0.5.js +0 -108
  503. data/spec/javascripts/helpers/vendor/jasmine-jquery.js +0 -288
  504. data/spec/javascripts/helpers/vendor/sinon-1.2.0.js +0 -2915
  505. data/spec/javascripts/support/jquery-ui-1.8.16.custom.min.js +0 -34
  506. data/spec/javascripts/support/jquery.min.js +0 -4
  507. data/spec/spec_helper_without_rails.rb +0 -11
  508. data/spec/unit/generators/install_rails_3_1_spec.rb +0 -16
  509. data/spec/unit/rails_spec.rb +0 -43
  510. data/spec/unit/reloader_spec.rb +0 -124
  511. data/spec/unit/sass/helpers_spec.rb +0 -47
  512. data/tasks/js.rake +0 -32
@@ -1,15 +1,101 @@
1
- require 'spec_helper'
1
+ require 'rails_helper'
2
2
 
3
3
  describe ActiveAdmin::Views::TableFor do
4
4
  describe "creating with the dsl" do
5
5
 
6
6
  let(:collection) do
7
- [Post.new(:title => "First Post"), Post.new(:title => "Second Post"), Post.new(:title => "Third Post")]
7
+ [Post.new(title: "First Post", starred: true), Post.new(title: "Second Post"), Post.new(title: "Third Post", starred: false)]
8
8
  end
9
9
 
10
- let(:assigns){ { :collection => collection } }
10
+ let(:assigns){ { collection: collection } }
11
11
  let(:helpers){ mock_action_view }
12
12
 
13
+ context "when creating a column using symbol argument" do
14
+ let(:table) do
15
+ render_arbre_component assigns, helpers do
16
+ table_for(collection, :title)
17
+ end
18
+ end
19
+
20
+ it "should create a table header based on the symbol" do
21
+ expect(table.find_by_tag("th").first.content).to eq "Title"
22
+ end
23
+
24
+ it "should create a table row for each element in the collection" do
25
+ expect(table.find_by_tag("tr").size).to eq 4 # 1 for head, 3 for rows
26
+ end
27
+
28
+ ["First Post", "Second Post", "Third Post"].each_with_index do |content, index|
29
+ it "should create a cell with #{content}" do
30
+ expect(table.find_by_tag("td")[index].content).to eq content
31
+ end
32
+ end
33
+ end
34
+
35
+ context "when creating many columns using symbol arguments" do
36
+ let(:table) do
37
+ render_arbre_component assigns, helpers do
38
+ table_for(collection, :title, :created_at)
39
+ end
40
+ end
41
+
42
+ it "should create a table header based on the symbol" do
43
+ expect(table.find_by_tag("th").first.content).to eq "Title"
44
+ expect(table.find_by_tag("th").last.content).to eq "Created At"
45
+ end
46
+
47
+ it "should add a class to each table header based on the col name" do
48
+ expect(table.find_by_tag("th").first.class_list.to_a.join(' ')).to eq "col col-title"
49
+ expect(table.find_by_tag("th").last.class_list.to_a.join(' ')).to eq "col col-created_at"
50
+ end
51
+
52
+ it "should create a table row for each element in the collection" do
53
+ expect(table.find_by_tag("tr").size).to eq 4 # 1 for head, 3 for rows
54
+ end
55
+
56
+ it "should create a cell for each column" do
57
+ expect(table.find_by_tag("td").size).to eq 6
58
+ end
59
+
60
+ it "should add a class for each cell based on the col name" do
61
+ expect(table.find_by_tag("td").first.class_list.to_a.join(' ')).to eq "col col-title"
62
+ expect(table.find_by_tag("td").last.class_list.to_a.join(' ')).to eq "col col-created_at"
63
+ end
64
+ end
65
+
66
+ context "when creating a column using symbol arguments and another using block" do
67
+ let(:table) do
68
+ render_arbre_component assigns, helpers do
69
+ table_for(collection, :title) do
70
+ column :created_at
71
+ end
72
+ end
73
+ end
74
+
75
+ it "should create a table header based on the symbol" do
76
+ expect(table.find_by_tag("th").first.content).to eq "Title"
77
+ expect(table.find_by_tag("th").last.content).to eq "Created At"
78
+ end
79
+
80
+ it "should add a class to each table header based on the col name" do
81
+ expect(table.find_by_tag("th").first.class_list.to_a.join(' ')).to eq "col col-title"
82
+ expect(table.find_by_tag("th").last.class_list.to_a.join(' ')).to eq "col col-created_at"
83
+ end
84
+
85
+ it "should create a table row for each element in the collection" do
86
+ expect(table.find_by_tag("tr").size).to eq 4 # 1 for head, 3 for rows
87
+ end
88
+
89
+ it "should create a cell for each column" do
90
+ expect(table.find_by_tag("td").size).to eq 6
91
+ end
92
+
93
+ it "should add a class for each cell based on the col name" do
94
+ expect(table.find_by_tag("td").first.class_list.to_a.join(' ')).to eq "col col-title"
95
+ expect(table.find_by_tag("td").last.class_list.to_a.join(' ')).to eq "col col-created_at"
96
+ end
97
+ end
98
+
13
99
  context "when creating a column with a symbol" do
14
100
  let(:table) do
15
101
  render_arbre_component assigns, helpers do
@@ -20,16 +106,16 @@ describe ActiveAdmin::Views::TableFor do
20
106
  end
21
107
 
22
108
  it "should create a table header based on the symbol" do
23
- table.find_by_tag("th").first.content.should == "Title"
109
+ expect(table.find_by_tag("th").first.content).to eq "Title"
24
110
  end
25
111
 
26
112
  it "should create a table row for each element in the collection" do
27
- table.find_by_tag("tr").size.should == 4 # 1 for head, 3 for rows
113
+ expect(table.find_by_tag("tr").size).to eq 4 # 1 for head, 3 for rows
28
114
  end
29
115
 
30
116
  ["First Post", "Second Post", "Third Post"].each_with_index do |content, index|
31
117
  it "should create a cell with #{content}" do
32
- table.find_by_tag("td")[index].content.should == content
118
+ expect(table.find_by_tag("td")[index].content).to eq content
33
119
  end
34
120
  end
35
121
  end
@@ -45,26 +131,26 @@ describe ActiveAdmin::Views::TableFor do
45
131
  end
46
132
 
47
133
  it "should create a table header based on the symbol" do
48
- table.find_by_tag("th").first.content.should == "Title"
49
- table.find_by_tag("th").last.content.should == "Created At"
134
+ expect(table.find_by_tag("th").first.content).to eq "Title"
135
+ expect(table.find_by_tag("th").last.content).to eq "Created At"
50
136
  end
51
137
 
52
138
  it "should add a class to each table header based on the col name" do
53
- table.find_by_tag("th").first.class_list.should include("title")
54
- table.find_by_tag("th").last.class_list.should include("created_at")
139
+ expect(table.find_by_tag("th").first.class_list.to_a.join(' ')).to eq "col col-title"
140
+ expect(table.find_by_tag("th").last.class_list.to_a.join(' ')).to eq "col col-created_at"
55
141
  end
56
142
 
57
143
  it "should create a table row for each element in the collection" do
58
- table.find_by_tag("tr").size.should == 4 # 1 for head, 3 for rows
144
+ expect(table.find_by_tag("tr").size).to eq 4 # 1 for head, 3 for rows
59
145
  end
60
146
 
61
147
  it "should create a cell for each column" do
62
- table.find_by_tag("td").size.should == 6
148
+ expect(table.find_by_tag("td").size).to eq 6
63
149
  end
64
150
 
65
151
  it "should add a class for each cell based on the col name" do
66
- table.find_by_tag("td").first.class_list.should include("title")
67
- table.find_by_tag("td").last.class_list.should include("created_at")
152
+ expect(table.find_by_tag("td").first.class_list.to_a.join(' ')).to eq "col col-title"
153
+ expect(table.find_by_tag("td").last.class_list.to_a.join(' ')).to eq "col col-created_at"
68
154
  end
69
155
  end
70
156
 
@@ -80,14 +166,14 @@ describe ActiveAdmin::Views::TableFor do
80
166
  end
81
167
 
82
168
  it "should add a class to each table header based on the col name" do
83
- table.find_by_tag("th").first.class_list.should include("title")
169
+ expect(table.find_by_tag("th").first.class_list).to include("col-title")
84
170
  end
85
171
 
86
172
  [ "<span>First Post</span>",
87
173
  "<span>Second Post</span>",
88
174
  "<span>Third Post</span>" ].each_with_index do |content, index|
89
175
  it "should create a cell with #{content}" do
90
- table.find_by_tag("td")[index].content.strip.should == content
176
+ expect(table.find_by_tag("td")[index].content.strip).to eq content
91
177
  end
92
178
  end
93
179
  end
@@ -106,7 +192,7 @@ describe ActiveAdmin::Views::TableFor do
106
192
 
107
193
  3.times do |index|
108
194
  it "should create a cell with multiple elements in row #{index}" do
109
- table.find_by_tag("td")[index].find_by_tag("span").size.should == 2
195
+ expect(table.find_by_tag("td")[index].find_by_tag("span").size).to eq 2
110
196
  end
111
197
  end
112
198
  end
@@ -117,25 +203,103 @@ describe ActiveAdmin::Views::TableFor do
117
203
  render_arbre_component assigns, helpers do
118
204
  table_for(collection) do
119
205
  column "My Custom Title", :title
120
- column :created_at , :class=>"datetime"
206
+ column :created_at , class:"datetime"
121
207
  end
122
208
  end
123
209
  end
124
210
 
125
211
 
126
212
  it "should add a class to each table header based on class option or the col name" do
127
- table.find_by_tag("th").first.class_list.should include("my_custom_title")
128
- table.find_by_tag("th").last.class_list.should include("datetime")
213
+ expect(table.find_by_tag("th").first.class_list.to_a.join(' ')).to eq "col col-my_custom_title"
214
+ expect(table.find_by_tag("th").last.class_list.to_a.join(' ')).to eq "col datetime"
129
215
  end
130
216
 
131
217
  it "should add a class to each cell based on class option or the col name" do
132
- table.find_by_tag("td").first.class_list.should include("my_custom_title")
133
- table.find_by_tag("td").last.class_list.should include("datetime")
218
+ expect(table.find_by_tag("td").first.class_list.to_a.join(' ')).to eq "col col-my_custom_title"
219
+ expect(table.find_by_tag("td").last.class_list.to_a.join(' ')).to eq "col datetime"
134
220
  end
221
+ end
135
222
 
223
+ context "when using a single record instead of a collection" do
224
+ let(:table) do
225
+ render_arbre_component nil, helpers do
226
+ table_for Post.new do
227
+ column :title
228
+ end
229
+ end
230
+ end
231
+ it "should render" do
232
+ expect(table.find_by_tag("th").first.content).to eq "Title"
233
+ end
234
+ end
136
235
 
236
+ context "when using a single Hash" do
237
+ let(:table) do
238
+ render_arbre_component nil, helpers do
239
+ table_for foo: 1, bar: 2 do
240
+ column :foo
241
+ column :bar
242
+ end
243
+ end
244
+ end
245
+ it "should render" do
246
+ expect(table.find_by_tag("th")[0].content).to eq "Foo"
247
+ expect(table.find_by_tag("th")[1].content).to eq "Bar"
248
+ expect(table.find_by_tag("td")[0].content).to eq "1"
249
+ expect(table.find_by_tag("td")[1].content).to eq "2"
250
+ end
251
+ end
252
+
253
+ context "when using an Array of Hashes" do
254
+ let(:table) do
255
+ render_arbre_component nil, helpers do
256
+ table_for [{foo: 1},{foo: 2}] do
257
+ column :foo
258
+ end
259
+ end
260
+ end
261
+ it "should render" do
262
+ expect(table.find_by_tag("th")[0].content).to eq "Foo"
263
+ expect(table.find_by_tag("td")[0].content).to eq "1"
264
+ expect(table.find_by_tag("td")[1].content).to eq "2"
265
+ end
137
266
  end
138
267
 
268
+ context "when record attribute is boolean" do
269
+ let(:table) do
270
+ render_arbre_component assigns, helpers do
271
+ table_for(collection) do
272
+ column :starred
273
+ end
274
+ end
275
+ end
276
+
277
+ it "should render boolean attribute within status tag" do
278
+ expect(table.find_by_tag("span").first.class_list.to_a.join(' ')).to eq "status_tag yes"
279
+ expect(table.find_by_tag("span").first.content).to eq "Yes"
280
+ expect(table.find_by_tag("span").last.class_list.to_a.join(' ')).to eq "status_tag no"
281
+ expect(table.find_by_tag("span").last.content).to eq "No"
282
+ end
283
+ end
284
+
285
+ context 'when row_class' do
286
+ let(:table) do
287
+ render_arbre_component assigns, helpers do
288
+ table_for(collection, row_class: -> e { 'starred' if e.starred }) do
289
+ column :starred
290
+ end
291
+ end
292
+ end
293
+
294
+ it 'should render boolean attribute within status tag' do
295
+ trs = table.find_by_tag('tr')
296
+ expect(trs.size).to eq 4
297
+ expect(trs.first.class_list.to_a.join(' ')).to eq ''
298
+ expect(trs.second.class_list.to_a.join(' ')).to eq 'odd starred'
299
+ expect(trs.third.class_list.to_a.join(' ')).to eq 'even'
300
+ expect(trs.fourth.class_list.to_a.join(' ')).to eq 'odd'
301
+ end
302
+ end
139
303
 
140
304
  end
141
305
 
@@ -149,34 +313,72 @@ describe ActiveAdmin::Views::TableFor do
149
313
 
150
314
  context "when default" do
151
315
  let(:table_column){ build_column(:username) }
152
- it { should be_sortable }
153
- its(:sort_key){ should == "username" }
316
+ it { is_expected.to be_sortable }
317
+
318
+ describe '#sort_key' do
319
+ subject { super().sort_key }
320
+ it{ is_expected.to eq("username") }
321
+ end
154
322
  end
155
323
 
156
324
  context "when a block given with no sort key" do
157
325
  let(:table_column){ build_column("Username"){ } }
158
- it { should_not be_sortable }
326
+ it { is_expected.to be_sortable }
159
327
  end
160
328
 
161
329
  context "when a block given with a sort key" do
162
- let(:table_column){ build_column("Username", :sortable => :username){ } }
163
- it { should be_sortable }
164
- its(:sort_key){ should == "username" }
330
+ let(:table_column){ build_column("Username", sortable: :username){ } }
331
+ it { is_expected.to be_sortable }
332
+
333
+ describe '#sort_key' do
334
+ subject { super().sort_key }
335
+ it{ is_expected.to eq("username") }
336
+ end
337
+ end
338
+
339
+ context 'when a block given with virtual attribute and no sort key' do
340
+ let(:table_column) { build_column(:virtual, nil, Post) { } }
341
+ it { is_expected.not_to be_sortable }
342
+ end
343
+
344
+ context 'when symbol given as a data column should be sortable' do
345
+ let(:table_column){ build_column('Username column', :username) }
346
+ it { is_expected.to be_sortable }
347
+
348
+ describe '#sort_key' do
349
+ subject { super().sort_key }
350
+ it { is_expected.to eq 'username' }
351
+ end
165
352
  end
166
353
 
167
- context "when :sortable => false with a symbol" do
168
- let(:table_column){ build_column(:username, :sortable => false) }
169
- it { should_not be_sortable }
354
+ context 'when sortable: true with a symbol and string' do
355
+ let(:table_column){ build_column('Username column', :username, sortable: true) }
356
+ it { is_expected.to be_sortable }
357
+
358
+ describe '#sort_key' do
359
+ subject { super().sort_key }
360
+ it { is_expected.to eq 'username' }
361
+ end
170
362
  end
171
363
 
172
- context "when :sortable => false with a symbol and string" do
173
- let(:table_column){ build_column("Username", :username, :sortable => false) }
174
- it { should_not be_sortable }
364
+ context "when sortable: false with a symbol" do
365
+ let(:table_column){ build_column(:username, sortable: false) }
366
+ it { is_expected.not_to be_sortable }
367
+ end
368
+
369
+ context "when sortable: false with a symbol and string" do
370
+ let(:table_column){ build_column("Username", :username, sortable: false) }
371
+ it { is_expected.not_to be_sortable }
175
372
  end
176
373
 
177
374
  context "when :sortable column is an association" do
178
375
  let(:table_column){ build_column("Category", :category, Post) }
179
- it { should_not be_sortable }
376
+ it { is_expected.not_to be_sortable }
377
+ end
378
+
379
+ context 'when :sortable column is an association and block given' do
380
+ let(:table_column){ build_column('Category', :category, Post) { } }
381
+ it { is_expected.not_to be_sortable }
180
382
  end
181
383
  end
182
384
  end
@@ -0,0 +1,39 @@
1
+ require 'rails_helper'
2
+
3
+ describe ActiveAdmin::Views::Tabs do
4
+ describe "creating with the dsl" do
5
+ context "when creating tabs with a symbol" do
6
+ let(:tabs) do
7
+ render_arbre_component do
8
+ tabs do
9
+ tab :overview
10
+ end
11
+ end
12
+ end
13
+
14
+ it "should create a tab navigation bar based on the symbol" do
15
+ expect(tabs.find_by_tag('li').first.content).to include "Overview"
16
+ end
17
+ end
18
+
19
+ context "when creating a tab with a block" do
20
+ let(:tabs) do
21
+ render_arbre_component do
22
+ tabs do
23
+ tab :overview do
24
+ span 'tab 1'
25
+ end
26
+ end
27
+ end
28
+ end
29
+
30
+ it "should create a tab navigation bar based on the symbol" do
31
+ expect(tabs.find_by_tag('li').first.content).to include "Overview"
32
+ end
33
+
34
+ it "should create a tab with a span inside of it" do
35
+ expect(tabs.find_by_tag('span').first.content).to eq('tab 1')
36
+ end
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,47 @@
1
+ require 'rails_helper'
2
+
3
+ describe ActiveAdmin::Views::UnsupportedBrowser do
4
+
5
+ let(:helpers){ mock_action_view }
6
+ let(:namespace) { double :namespace, unsupported_browser_matcher: /MSIE [1-8]\.0/ }
7
+ let(:component) { double :unsupported_browser_component }
8
+ let(:view_factory) { double :view_factory, unsupported_browser: component }
9
+ let(:base) { ActiveAdmin::Views::Pages::Base.new }
10
+
11
+ def build_panel
12
+ render_arbre_component({}, helpers) do
13
+ insert_tag ActiveAdmin::Views::UnsupportedBrowser
14
+ end
15
+ end
16
+
17
+ it "should render the panel" do
18
+ expect(I18n).to receive(:t).and_return("headline", "recommendation" ,"turn_off_compatibility_view")
19
+ expect(build_panel.content.gsub(/\s+/, "")).to eq "<h1>headline</h1><p>recommendation</p><p>turn_off_compatibility_view</p>"
20
+ end
21
+
22
+ describe "ActiveAdmin::Views::Pages::Base behavior" do
23
+ context "when the reqex match" do
24
+
25
+ it "should build the unsupported browser panel" do
26
+ expect(base).to receive(:active_admin_namespace).and_return(namespace)
27
+ expect(base).to receive(:env).and_return({ "HTTP_USER_AGENT" => "Mozilla/5.0 (compatible; MSIE 7.0; Windows NT 6.2; Trident/6.0)" })
28
+ expect(base).to receive(:view_factory).and_return(view_factory)
29
+ expect(base).to receive(:insert_tag).with(component)
30
+ base.send(:build_unsupported_browser)
31
+ end
32
+
33
+ end
34
+
35
+ context "when the regex not match" do
36
+
37
+ it "should not build the unsupported browser panel" do
38
+ expect(base).to receive(:active_admin_namespace).and_return(namespace)
39
+ expect(base).to receive(:env).and_return({ "HTTP_USER_AGENT" => "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0)" })
40
+ expect(base).to receive(:insert_tag).never
41
+ base.send(:build_unsupported_browser)
42
+ end
43
+
44
+ end
45
+ end
46
+
47
+ end