activeadmin 0.4.4 → 0.5.0.pre

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 (310) hide show
  1. data/.gitignore +3 -0
  2. data/.travis.yml +5 -0
  3. data/CHANGELOG.md +50 -0
  4. data/CONTRIBUTING.md +2 -4
  5. data/Gemfile +10 -4
  6. data/Guardfile +0 -1
  7. data/LICENSE +1 -1
  8. data/README.rdoc +19 -8
  9. data/Rakefile +10 -1
  10. data/activeadmin.gemspec +2 -1
  11. data/app/assets/javascripts/active_admin/application.js +3 -9
  12. data/app/assets/javascripts/active_admin/base.js +1 -0
  13. data/app/assets/javascripts/active_admin/components/jquery.aa.checkbox-toggler.js.coffee +64 -0
  14. data/app/assets/javascripts/active_admin/components/jquery.aa.dropdown-menu.js.coffee +107 -0
  15. data/app/assets/javascripts/active_admin/components/jquery.aa.popover.js.coffee +100 -0
  16. data/app/assets/javascripts/active_admin/components/jquery.aa.table-checkbox-toggler.js.coffee +27 -0
  17. data/app/assets/javascripts/active_admin/lib/namespace.js.coffee +3 -0
  18. data/app/assets/javascripts/active_admin/pages/application.js.coffee +13 -0
  19. data/app/assets/javascripts/active_admin/pages/batch_actions.js.coffee +26 -0
  20. data/app/assets/stylesheets/active_admin/_base.css.scss +32 -26
  21. data/app/assets/stylesheets/active_admin/_forms.css.scss +12 -5
  22. data/app/assets/stylesheets/active_admin/_header.css.scss +1 -2
  23. data/app/assets/stylesheets/active_admin/_typography.css.scss +1 -1
  24. data/app/assets/stylesheets/active_admin/components/_batch_actions.css.scss +11 -0
  25. data/app/assets/stylesheets/active_admin/components/_buttons.scss +1 -2
  26. data/app/assets/stylesheets/active_admin/components/_dropdown_menu.scss +151 -0
  27. data/app/assets/stylesheets/active_admin/components/_flash_messages.css.scss +3 -3
  28. data/app/assets/stylesheets/active_admin/components/_popovers.css.scss +123 -0
  29. data/app/assets/stylesheets/active_admin/components/_status_tags.scss +1 -1
  30. data/app/assets/stylesheets/active_admin/components/_table_tools.css.scss +20 -27
  31. data/app/assets/stylesheets/active_admin/components/_tables.css.scss +1 -0
  32. data/app/assets/stylesheets/active_admin/mixins/_buttons.css.scss +38 -36
  33. data/app/assets/stylesheets/active_admin/mixins/_gradients.css.scss +5 -5
  34. data/app/assets/stylesheets/active_admin/mixins/_icons.css.scss +7 -3
  35. data/app/assets/stylesheets/active_admin/mixins/_variables.css.scss +19 -17
  36. data/app/assets/stylesheets/active_admin/pages/_logged_out.scss +2 -2
  37. data/app/assets/stylesheets/active_admin/print.css.scss +290 -0
  38. data/app/views/active_admin/dashboard/index.html.arb +1 -1
  39. data/app/views/active_admin/devise/passwords/edit.html.erb +17 -14
  40. data/app/views/active_admin/devise/passwords/new.html.erb +4 -4
  41. data/app/views/active_admin/devise/sessions/new.html.erb +6 -6
  42. data/app/views/active_admin/devise/shared/_links.erb +6 -6
  43. data/app/views/active_admin/page/index.html.arb +1 -1
  44. data/app/views/active_admin/resource/edit.html.arb +1 -1
  45. data/app/views/active_admin/resource/index.csv.erb +1 -1
  46. data/app/views/active_admin/resource/index.html.arb +1 -1
  47. data/app/views/active_admin/resource/new.html.arb +1 -1
  48. data/app/views/active_admin/resource/show.html.arb +1 -1
  49. data/app/views/layouts/active_admin.html.arb +1 -1
  50. data/app/views/layouts/active_admin_logged_out.html.erb +2 -2
  51. data/cucumber.yml +1 -1
  52. data/docs/0-installation.md +10 -1
  53. data/docs/{9-custom-pages.md → 10-custom-pages.md} +0 -0
  54. data/docs/2-resource-customization.md +19 -1
  55. data/docs/3-index-pages.md +31 -0
  56. data/docs/4-csv-format.md +9 -0
  57. data/docs/6-show-screens.md +1 -1
  58. data/docs/9-batch-actions.md +161 -0
  59. data/features/dashboard.feature +31 -8
  60. data/features/development_reloading.feature +1 -1
  61. data/features/edit_page.feature +3 -3
  62. data/features/i18n.feature +35 -0
  63. data/features/index/batch_actions.feature +98 -0
  64. data/features/index/filters.feature +26 -0
  65. data/features/index/format_as_csv.feature +35 -0
  66. data/features/index/index_as_table.feature +30 -2
  67. data/features/index/index_blank_slate.feature +8 -3
  68. data/features/index/index_scopes.feature +130 -24
  69. data/features/index/page_title.feature +12 -0
  70. data/features/new_page.feature +3 -3
  71. data/features/registering_pages.feature +61 -0
  72. data/features/root_to.feature +17 -0
  73. data/features/show/default_content.feature +1 -1
  74. data/features/show/page_title.feature +14 -0
  75. data/features/sidebar_sections.feature +26 -0
  76. data/features/site_title.feature +1 -1
  77. data/features/specifying_actions.feature +7 -6
  78. data/features/step_definitions/action_link_steps.rb +1 -1
  79. data/features/step_definitions/additional_web_steps.rb +7 -1
  80. data/features/step_definitions/batch_action_steps.rb +94 -0
  81. data/features/step_definitions/configuration_steps.rb +30 -8
  82. data/features/step_definitions/factory_steps.rb +12 -0
  83. data/features/step_definitions/format_steps.rb +6 -2
  84. data/features/step_definitions/i18n_steps.rb +3 -0
  85. data/features/step_definitions/table_steps.rb +114 -0
  86. data/features/step_definitions/user_steps.rb +30 -4
  87. data/features/support/env.rb +54 -15
  88. data/features/support/paths.rb +2 -0
  89. data/features/users/logging_in.feature +1 -1
  90. data/features/users/logging_out.feature +2 -1
  91. data/features/users/resetting_password.feature +34 -0
  92. data/lib/active_admin.rb +46 -7
  93. data/lib/active_admin/application.rb +30 -15
  94. data/lib/active_admin/base_controller/menu.rb +3 -3
  95. data/lib/active_admin/batch_actions.rb +17 -0
  96. data/lib/active_admin/batch_actions/controller.rb +25 -0
  97. data/lib/active_admin/batch_actions/resource_extension.rb +126 -0
  98. data/lib/active_admin/batch_actions/views/batch_action_form.rb +35 -0
  99. data/lib/active_admin/batch_actions/views/batch_action_popover.rb +28 -0
  100. data/lib/active_admin/batch_actions/views/batch_action_selector.rb +63 -0
  101. data/lib/active_admin/batch_actions/views/selection_cells.rb +37 -0
  102. data/lib/active_admin/comments.rb +5 -2
  103. data/lib/active_admin/comments/comment.rb +4 -3
  104. data/lib/active_admin/comments/views/active_admin_comments.rb +5 -5
  105. data/lib/active_admin/component.rb +1 -18
  106. data/lib/active_admin/csv_builder.rb +8 -3
  107. data/lib/active_admin/dashboards.rb +21 -4
  108. data/lib/active_admin/dashboards/dashboard_controller.rb +1 -5
  109. data/lib/active_admin/dependency_checker.rb +1 -1
  110. data/lib/active_admin/dsl.rb +61 -4
  111. data/lib/active_admin/engine.rb +1 -1
  112. data/lib/active_admin/filters.rb +8 -0
  113. data/lib/active_admin/filters/dsl.rb +12 -0
  114. data/lib/active_admin/filters/forms.rb +93 -0
  115. data/lib/active_admin/filters/resource_extension.rb +92 -0
  116. data/lib/active_admin/form_builder.rb +88 -33
  117. data/lib/active_admin/helpers/collection.rb +23 -0
  118. data/lib/active_admin/helpers/optional_display.rb +1 -1
  119. data/lib/active_admin/inputs/filter_select_input.rb +1 -1
  120. data/lib/active_admin/locales/bg.yml +37 -1
  121. data/lib/active_admin/locales/ca.yml +36 -0
  122. data/lib/active_admin/locales/cs.yml +36 -0
  123. data/lib/active_admin/locales/da.yml +36 -0
  124. data/lib/active_admin/locales/de.yml +42 -0
  125. data/lib/active_admin/locales/en.yml +27 -2
  126. data/lib/active_admin/locales/es.yml +45 -4
  127. data/lib/active_admin/locales/fr.yml +22 -0
  128. data/lib/active_admin/locales/{he_il.yml → he.yml} +37 -2
  129. data/lib/active_admin/locales/hr.yml +49 -5
  130. data/lib/active_admin/locales/hu.yml +21 -0
  131. data/lib/active_admin/locales/it.yml +36 -1
  132. data/lib/active_admin/locales/ja.yml +36 -0
  133. data/lib/active_admin/locales/ko.yml +36 -1
  134. data/lib/active_admin/locales/lv.yml +28 -2
  135. data/lib/active_admin/locales/nl.yml +42 -1
  136. data/lib/active_admin/locales/no-NB.yml +15 -0
  137. data/lib/active_admin/locales/pl.yml +45 -1
  138. data/lib/active_admin/locales/pt-BR.yml +36 -1
  139. data/lib/active_admin/locales/ro.yml +67 -0
  140. data/lib/active_admin/locales/ru.yml +43 -3
  141. data/lib/active_admin/locales/sv-SE.yml +41 -1
  142. data/lib/active_admin/locales/tr.yml +80 -0
  143. data/lib/active_admin/locales/vi.yml +80 -0
  144. data/lib/active_admin/locales/{zh_cn.yml → zh-CN.yml} +42 -2
  145. data/lib/active_admin/locales/zh-TW.yml +36 -1
  146. data/lib/active_admin/menu.rb +55 -30
  147. data/lib/active_admin/menu_builder.rb +65 -0
  148. data/lib/active_admin/menu_item.rb +55 -14
  149. data/lib/active_admin/namespace.rb +25 -55
  150. data/lib/active_admin/page.rb +15 -10
  151. data/lib/active_admin/resource.rb +9 -0
  152. data/lib/active_admin/resource/action_items.rb +4 -4
  153. data/lib/active_admin/resource/controllers.rb +1 -1
  154. data/lib/active_admin/resource/menu.rb +19 -21
  155. data/lib/active_admin/resource/naming.rb +55 -45
  156. data/lib/active_admin/resource/sidebars.rb +0 -13
  157. data/lib/active_admin/resource_collection.rb +10 -10
  158. data/lib/active_admin/resource_controller.rb +5 -5
  159. data/lib/active_admin/resource_controller/actions.rb +2 -0
  160. data/lib/active_admin/resource_controller/collection.rb +13 -4
  161. data/lib/active_admin/resource_dsl.rb +12 -6
  162. data/lib/active_admin/router.rb +27 -8
  163. data/lib/active_admin/scope.rb +1 -0
  164. data/lib/active_admin/sidebar_section.rb +2 -6
  165. data/lib/active_admin/version.rb +1 -1
  166. data/lib/active_admin/view_factory.rb +18 -13
  167. data/lib/active_admin/view_helpers.rb +0 -2
  168. data/lib/active_admin/view_helpers/auto_link_helper.rb +2 -1
  169. data/lib/active_admin/view_helpers/breadcrumb_helper.rb +24 -25
  170. data/lib/active_admin/view_helpers/display_helper.rb +1 -1
  171. data/lib/active_admin/view_helpers/fields_for.rb +44 -0
  172. data/lib/active_admin/view_helpers/form_helper.rb +6 -0
  173. data/lib/active_admin/view_helpers/view_factory_helper.rb +1 -1
  174. data/lib/active_admin/views/components/action_list_popover.rb +29 -0
  175. data/lib/active_admin/views/components/attributes_table.rb +6 -2
  176. data/lib/active_admin/views/components/dropdown_menu.rb +73 -0
  177. data/lib/active_admin/views/components/paginated_collection.rb +13 -14
  178. data/lib/active_admin/views/components/popover.rb +27 -0
  179. data/lib/active_admin/views/components/scopes.rb +8 -13
  180. data/lib/active_admin/views/components/sidebar_section.rb +1 -1
  181. data/lib/active_admin/views/components/site_title.rb +55 -0
  182. data/lib/active_admin/views/components/status_tag.rb +4 -4
  183. data/lib/active_admin/views/components/table_for.rb +18 -18
  184. data/lib/active_admin/views/dashboard_section_renderer.rb +1 -1
  185. data/lib/active_admin/views/footer.rb +18 -0
  186. data/lib/active_admin/views/header.rb +31 -0
  187. data/lib/active_admin/views/index_as_block.rb +3 -0
  188. data/lib/active_admin/views/index_as_blog.rb +4 -0
  189. data/lib/active_admin/views/index_as_grid.rb +2 -0
  190. data/lib/active_admin/views/index_as_table.rb +19 -6
  191. data/lib/active_admin/views/pages/base.rb +14 -48
  192. data/lib/active_admin/views/pages/form.rb +3 -3
  193. data/lib/active_admin/views/pages/index.rb +56 -24
  194. data/lib/active_admin/views/pages/layout.rb +2 -2
  195. data/lib/active_admin/views/pages/page.rb +10 -4
  196. data/lib/active_admin/views/pages/show.rb +11 -8
  197. data/lib/active_admin/views/tabbed_navigation.rb +3 -3
  198. data/lib/active_admin/views/title_bar.rb +50 -0
  199. data/lib/active_admin/views/utility_nav.rb +41 -0
  200. data/lib/generators/active_admin/assets/assets_generator.rb +1 -1
  201. data/lib/generators/active_admin/assets/templates/3.0/active_admin.js +1 -0
  202. data/lib/generators/active_admin/assets/templates/3.1/active_admin.css.scss +26 -3
  203. data/lib/generators/active_admin/devise/devise_generator.rb +2 -2
  204. data/lib/generators/active_admin/install/install_generator.rb +10 -10
  205. data/lib/generators/active_admin/install/templates/active_admin.rb.erb +21 -1
  206. data/lib/generators/active_admin/install/templates/admin_user.rb.erb +20 -0
  207. data/lib/generators/active_admin/install/templates/dashboard.rb +33 -0
  208. data/lib/generators/active_admin/resource/templates/admin.rb +1 -1
  209. data/spec/integration/memory_spec.rb +1 -11
  210. data/spec/javascripts/coffeescripts/jquery.aa.checkbox-toggler-spec.js.coffee +50 -0
  211. data/spec/javascripts/coffeescripts/jquery.aa.popover-spec.js.coffee +82 -0
  212. data/spec/javascripts/coffeescripts/jquery.aa.table-checkbox-toggler-spec.js.coffee +34 -0
  213. data/spec/javascripts/compiled/jquery.aa.checkbox-toggler-spec.js +60 -0
  214. data/spec/javascripts/compiled/jquery.aa.popover-spec.js +106 -0
  215. data/spec/javascripts/compiled/jquery.aa.table-checkbox-toggler-spec.js +37 -0
  216. data/spec/javascripts/fixtures/checkboxes.html +9 -0
  217. data/spec/javascripts/fixtures/table_checkboxes.html +17 -0
  218. data/spec/javascripts/helpers/SpecHelper.js +3 -0
  219. data/spec/javascripts/helpers/vendor/jasmine-fixture-0.0.5.js +108 -0
  220. data/spec/javascripts/helpers/vendor/jasmine-jquery.js +288 -0
  221. data/spec/javascripts/helpers/vendor/sinon-1.2.0.js +2915 -0
  222. data/spec/javascripts/support/jasmine.yml +74 -0
  223. data/spec/javascripts/support/jasmine_config.rb +23 -0
  224. data/spec/javascripts/support/jasmine_runner.rb +32 -0
  225. data/spec/javascripts/support/jquery-ui-1.8.16.custom.min.js +34 -0
  226. data/spec/javascripts/support/jquery.min.js +4 -0
  227. data/spec/spec_helper.rb +13 -13
  228. data/spec/spec_helper_without_rails.rb +2 -3
  229. data/spec/support/detect_rails_version.rb +16 -10
  230. data/spec/support/rails_template.rb +13 -1
  231. data/spec/support/templates/admin/stores.rb +1 -0
  232. data/spec/support/templates/en.yml +6 -0
  233. data/spec/unit/action_builder_spec.rb +38 -0
  234. data/spec/unit/application_spec.rb +12 -16
  235. data/spec/unit/base_controller_shared_examples.rb +3 -6
  236. data/spec/unit/batch_actions/resource_spec.rb +91 -0
  237. data/spec/unit/batch_actions/settings_spec.rb +61 -0
  238. data/spec/unit/breadcrumbs_spec.rb +33 -0
  239. data/spec/unit/comments_spec.rb +6 -0
  240. data/spec/unit/config_shared_examples.rb +17 -64
  241. data/spec/unit/csv_builder_spec.rb +12 -2
  242. data/spec/unit/dashboard_controller_spec.rb +11 -5
  243. data/spec/unit/dsl_include_spec.rb +20 -0
  244. data/spec/unit/{filter_form_builder_spec.rb → filters/filter_form_builder_spec.rb} +10 -7
  245. data/spec/unit/filters/resource_spec.rb +60 -0
  246. data/spec/unit/form_builder_spec.rb +180 -28
  247. data/spec/unit/helpers/collection_spec.rb +65 -0
  248. data/spec/unit/menu_item_spec.rb +48 -53
  249. data/spec/unit/menu_spec.rb +46 -32
  250. data/spec/unit/namespace/register_page_spec.rb +0 -6
  251. data/spec/unit/namespace/register_resource_spec.rb +1 -8
  252. data/spec/unit/namespace_spec.rb +8 -2
  253. data/spec/unit/page_spec.rb +20 -8
  254. data/spec/unit/resource/naming_spec.rb +27 -26
  255. data/spec/unit/resource/sidebars_spec.rb +0 -7
  256. data/spec/unit/resource_collection_spec.rb +11 -11
  257. data/spec/unit/resource_controller/collection_spec.rb +23 -1
  258. data/spec/unit/resource_controller/sidebars_spec.rb +46 -0
  259. data/spec/unit/resource_controller_spec.rb +43 -0
  260. data/spec/unit/resource_registration_spec.rb +2 -13
  261. data/spec/unit/resource_spec.rb +0 -42
  262. data/spec/unit/routing_spec.rb +60 -14
  263. data/spec/unit/scope_spec.rb +7 -0
  264. data/spec/unit/view_factory_spec.rb +9 -6
  265. data/spec/unit/view_helpers/fields_for_spec.rb +41 -0
  266. data/spec/unit/view_helpers/form_helper_spec.rb +18 -0
  267. data/spec/unit/views/components/action_list_popover_spec.rb +30 -0
  268. data/spec/unit/views/components/attributes_table_spec.rb +32 -20
  269. data/spec/unit/views/components/batch_action_popover_spec.rb +33 -0
  270. data/spec/unit/views/components/blank_slate_spec.rb +5 -3
  271. data/spec/unit/views/components/columns_spec.rb +32 -22
  272. data/spec/unit/views/components/paginated_collection_spec.rb +54 -12
  273. data/spec/unit/views/components/panel_spec.rb +11 -6
  274. data/spec/unit/views/components/popover_spec.rb +33 -0
  275. data/spec/unit/views/components/sidebar_section_spec.rb +6 -6
  276. data/spec/unit/views/components/site_title_spec.rb +78 -0
  277. data/spec/unit/views/components/status_tag_spec.rb +17 -10
  278. data/spec/unit/views/components/table_for_spec.rb +37 -17
  279. data/spec/unit/views/pages/layout_spec.rb +51 -10
  280. data/spec/unit/views/tabbed_navigation_spec.rb +44 -23
  281. data/tasks/js.rake +32 -0
  282. data/tasks/test.rake +1 -1
  283. metadata +233 -200
  284. data/lib/active_admin/arbre.rb +0 -22
  285. data/lib/active_admin/arbre/builder.rb +0 -125
  286. data/lib/active_admin/arbre/context.rb +0 -45
  287. data/lib/active_admin/arbre/html/attributes.rb +0 -20
  288. data/lib/active_admin/arbre/html/class_list.rb +0 -24
  289. data/lib/active_admin/arbre/html/collection.rb +0 -27
  290. data/lib/active_admin/arbre/html/document.rb +0 -42
  291. data/lib/active_admin/arbre/html/element.rb +0 -161
  292. data/lib/active_admin/arbre/html/html5_elements.rb +0 -47
  293. data/lib/active_admin/arbre/html/tag.rb +0 -145
  294. data/lib/active_admin/arbre/html/text_node.rb +0 -35
  295. data/lib/active_admin/filter_form_builder.rb +0 -53
  296. data/lib/active_admin/renderer.rb +0 -87
  297. data/lib/active_admin/resource_controller/filters.rb +0 -58
  298. data/lib/active_admin/stylesheets/active_admin/mixins/_utilities.scss +0 -0
  299. data/lib/active_admin/view_helpers/filter_form_helper.rb +0 -36
  300. data/lib/active_admin/view_helpers/renderer_helper.rb +0 -29
  301. data/lib/active_admin/views/header_renderer.rb +0 -82
  302. data/lib/generators/active_admin/assets/templates/dashboards.rb +0 -36
  303. data/lib/generators/active_admin/install/templates/dashboards.rb +0 -44
  304. data/spec/unit/arbre/context_spec.rb +0 -35
  305. data/spec/unit/arbre/html/element_finder_methods_spec.rb +0 -110
  306. data/spec/unit/arbre/html/element_spec.rb +0 -236
  307. data/spec/unit/arbre/html/tag_attributes_spec.rb +0 -61
  308. data/spec/unit/arbre/html/tag_spec.rb +0 -63
  309. data/spec/unit/arbre/html_spec.rb +0 -228
  310. data/spec/unit/renderer_spec.rb +0 -126
@@ -2,8 +2,6 @@ require 'spec_helper'
2
2
 
3
3
  describe ActiveAdmin::Views::AttributesTable do
4
4
 
5
- setup_arbre_context!
6
-
7
5
  describe "creating with the dsl" do
8
6
  let(:helpers) { action_view }
9
7
 
@@ -14,31 +12,40 @@ describe ActiveAdmin::Views::AttributesTable do
14
12
  post
15
13
  end
16
14
 
15
+ let(:assigns){ { :post => post } }
17
16
 
18
17
  # Loop through a few different ways to make the same table
19
18
  # and ensure that they produce the same results
20
19
  {
21
20
  "when attributes are passed in to the builder methods" => proc {
22
- attributes_table_for post, :id, :title, :body
21
+ render_arbre_component(assigns) {
22
+ attributes_table_for post, :id, :title, :body
23
+ }
23
24
  },
24
25
  "when attributes are built using the block" => proc {
25
- attributes_table_for post do
26
- rows :id, :title, :body
27
- end
26
+ render_arbre_component(assigns) {
27
+ attributes_table_for post do
28
+ rows :id, :title, :body
29
+ end
30
+ }
28
31
  },
29
32
  "when each attribute is passed in by itself" => proc {
30
- attributes_table_for post do
31
- row :id
32
- row :title
33
- row :body
34
- end
33
+ render_arbre_component(assigns) {
34
+ attributes_table_for post do
35
+ row :id
36
+ row :title
37
+ row :body
38
+ end
39
+ }
35
40
  },
36
41
  "when you create each row with a custom block" => proc {
37
- attributes_table_for post do
38
- row("Id") { post.id }
39
- row("Title"){ post.title }
40
- row("Body") { post.body }
41
- end
42
+ render_arbre_component(assigns) {
43
+ attributes_table_for post do
44
+ row("Id") { post.id }
45
+ row("Title"){ post.title }
46
+ row("Body") { post.body }
47
+ end
48
+ }
42
49
  }
43
50
 
44
51
  }.each do |context_title, table_decleration|
@@ -49,6 +56,7 @@ describe ActiveAdmin::Views::AttributesTable do
49
56
  table.tag_name.should == 'div'
50
57
  table.attr(:class).should include('attributes_table')
51
58
  end
59
+
52
60
  it "should add id and type class" do
53
61
  table.class_names.should include("post")
54
62
  table.id.should == "attributes_table_post_1"
@@ -83,15 +91,19 @@ describe ActiveAdmin::Views::AttributesTable do
83
91
  end # describe dsl styles
84
92
 
85
93
  it "should allow html content inside the attributes table" do
86
- table = attributes_table_for(post) do
87
- row("ID"){ span(post.id, :class => 'id') }
88
- end
94
+ table = render_arbre_component(assigns) {
95
+ attributes_table_for(post) do
96
+ row("ID"){ span(post.id, :class => 'id') }
97
+ end
98
+ }
89
99
  table.find_by_tag("td").first.content.chomp.strip.should == "<span class=\"id\">1</span>"
90
100
  end
91
101
 
92
102
  it "should check if an association exists when an attribute has id in it" do
93
103
  post.author = User.new(:username => "john_doe")
94
- table = attributes_table_for post, :author_id
104
+ table = render_arbre_component(assigns) {
105
+ attributes_table_for post, :author_id
106
+ }
95
107
  table.find_by_tag("td").first.content.should == "john_doe"
96
108
  end
97
109
 
@@ -0,0 +1,33 @@
1
+ require 'spec_helper'
2
+ require 'active_admin/batch_actions/views/batch_action_popover'
3
+
4
+ describe ActiveAdmin::BatchActions::BatchActionPopover do
5
+
6
+ let(:the_popover) do
7
+ render_arbre_component do
8
+ batch_action_popover do
9
+ action ActiveAdmin::BatchAction.new( :action_1, "Action 1" )
10
+ action ActiveAdmin::BatchAction.new( :action_2, "Action 2" )
11
+ action ActiveAdmin::BatchAction.new( :action_3, "Action 3" )
12
+ end
13
+ end
14
+ end
15
+
16
+ it "should have an id" do
17
+ the_popover.id.should == "batch_actions_popover"
18
+ end
19
+
20
+ describe "the action list" do
21
+ subject do
22
+ the_popover.find_by_class("popover_contents").first
23
+ end
24
+
25
+ its(:tag_name) { should eql("ul") }
26
+
27
+ its(:content){ should include("<li><a href=\"#\" class=\"batch_action\" data-action=\"action_1\">Action 1 Selected</a></li>") }
28
+ its(:content){ should include("<li><a href=\"#\" class=\"batch_action\" data-action=\"action_2\">Action 2 Selected</a></li>") }
29
+ its(:content){ should include("<li><a href=\"#\" class=\"batch_action\" data-action=\"action_3\">Action 3 Selected</a></li>") }
30
+
31
+ end
32
+
33
+ end
@@ -2,10 +2,12 @@ require 'spec_helper'
2
2
 
3
3
  describe ActiveAdmin::Views::BlankSlate do
4
4
 
5
- setup_arbre_context!
6
-
7
5
  describe "#blank_slate" do
8
- subject { blank_slate("There are no Posts yet. <a href=\"/posts/new\">Create one</a></span>") }
6
+ subject do
7
+ render_arbre_component do
8
+ blank_slate("There are no Posts yet. <a href=\"/posts/new\">Create one</a></span>")
9
+ end
10
+ end
9
11
 
10
12
  its(:tag_name) { should eql 'div' }
11
13
  its(:class_list) { should include('blank_slate_container') }
@@ -2,12 +2,12 @@ require 'spec_helper'
2
2
 
3
3
  describe ActiveAdmin::Views::Columns do
4
4
 
5
- setup_arbre_context!
6
-
7
5
  describe "Rendering one column" do
8
6
  let(:cols) do
9
- columns do
10
- column { span "Hello World" }
7
+ render_arbre_component do
8
+ columns do
9
+ column { span "Hello World" }
10
+ end
11
11
  end
12
12
  end
13
13
 
@@ -27,9 +27,11 @@ describe ActiveAdmin::Views::Columns do
27
27
 
28
28
  describe "Rendering two columns" do
29
29
  let(:cols) do
30
- columns do
31
- column { span "Hello World" }
32
- column { span "Hello World" }
30
+ render_arbre_component do
31
+ columns do
32
+ column { span "Hello World" }
33
+ column { span "Hello World" }
34
+ end
33
35
  end
34
36
  end
35
37
 
@@ -48,11 +50,13 @@ describe ActiveAdmin::Views::Columns do
48
50
 
49
51
  describe "Rendering four columns" do
50
52
  let(:cols) do
51
- columns do
52
- column { span "Hello World" }
53
- column { span "Hello World" }
54
- column { span "Hello World" }
55
- column { span "Hello World" }
53
+ render_arbre_component do
54
+ columns do
55
+ column { span "Hello World" }
56
+ column { span "Hello World" }
57
+ column { span "Hello World" }
58
+ column { span "Hello World" }
59
+ end
56
60
  end
57
61
  end
58
62
 
@@ -75,10 +79,12 @@ describe ActiveAdmin::Views::Columns do
75
79
 
76
80
  describe "Column Spans" do
77
81
  let(:cols) do
78
- columns do
79
- column(:span => 2){ "Hello World" }
80
- column(){ "Hello World" }
81
- column(){ "Hello World" }
82
+ render_arbre_component do
83
+ columns do
84
+ column(:span => 2){ "Hello World" }
85
+ column(){ "Hello World" }
86
+ column(){ "Hello World" }
87
+ end
82
88
  end
83
89
  end
84
90
 
@@ -94,9 +100,11 @@ describe ActiveAdmin::Views::Columns do
94
100
  describe "Column max width" do
95
101
 
96
102
  let(:cols) do
97
- columns do
98
- column(:max_width => "100px"){ "Hello World" }
99
- column(){ "Hello World" }
103
+ render_arbre_component do
104
+ columns do
105
+ column(:max_width => "100px"){ "Hello World" }
106
+ column(){ "Hello World" }
107
+ end
100
108
  end
101
109
  end
102
110
 
@@ -113,9 +121,11 @@ describe ActiveAdmin::Views::Columns do
113
121
  describe "Column min width" do
114
122
 
115
123
  let(:cols) do
116
- columns do
117
- column(:min_width => "100px"){ "Hello World" }
118
- column(){ "Hello World" }
124
+ render_arbre_component do
125
+ columns do
126
+ column(:min_width => "100px"){ "Hello World" }
127
+ column(){ "Hello World" }
128
+ end
119
129
  end
120
130
  end
121
131
 
@@ -2,21 +2,33 @@ require 'spec_helper'
2
2
 
3
3
  describe ActiveAdmin::Views::PaginatedCollection do
4
4
  describe "creating with the dsl" do
5
- setup_arbre_context!
6
-
7
- let(:collection) do
8
- posts = [Post.new(:title => "First Post"), Post.new(:title => "Second Post"), Post.new(:title => "Third Post")]
9
- Kaminari.paginate_array(posts).page(1).per(5)
10
- end
11
5
 
12
6
  before :all do
13
7
  load_defaults!
14
8
  reload_routes!
15
9
  end
16
10
 
11
+ let(:view) do
12
+ view = mock_action_view
13
+ view.request.stub!(:query_parameters).and_return({:controller => 'admin/posts', :action => 'index', :page => '1'})
14
+ view.controller.params = {:controller => 'admin/posts', :action => 'index'}
15
+ view
16
+ end
17
+
18
+ # Helper to render paginated collections within an arbre context
19
+ def paginated_collection(*args)
20
+ render_arbre_component({:paginated_collection_args => args}, view) do
21
+ paginated_collection(*paginated_collection_args)
22
+ end
23
+ end
24
+
25
+ let(:collection) do
26
+ posts = [Post.new(:title => "First Post"), Post.new(:title => "Second Post"), Post.new(:title => "Third Post")]
27
+ Kaminari.paginate_array(posts).page(1).per(5)
28
+ end
29
+
17
30
  before do
18
- request.stub!(:query_parameters).and_return({:controller => 'admin/posts', :action => 'index', :page => '1'})
19
- controller.params = {:controller => 'admin/posts', :action => 'index'}
31
+ collection.stub!(:reorder) { collection }
20
32
  end
21
33
 
22
34
  context "when specifying collection" do
@@ -44,7 +56,7 @@ describe ActiveAdmin::Views::PaginatedCollection do
44
56
  let(:pagination) { paginated_collection(collection, :param_name => :post_page) }
45
57
 
46
58
  it "should customize the page number parameter in pagination links" do
47
- pagination.find_by_tag('div')[1].content.should match(/\/admin\/posts\?post_page=2/)
59
+ pagination.children.last.content.should match(/\/admin\/posts\?post_page=2/)
48
60
  end
49
61
  end
50
62
 
@@ -116,7 +128,7 @@ describe ActiveAdmin::Views::PaginatedCollection do
116
128
  end
117
129
 
118
130
  it "should use 'Singular' as the collection name when there is an I18n translation" do
119
- I18n.stub(:translate!) { "Singular" }
131
+ I18n.stub(:translate) { "Singular" }
120
132
  pagination.find_by_class('pagination_information').first.content.should == "Displaying <b>1</b> Singular"
121
133
  end
122
134
  end
@@ -129,7 +141,7 @@ describe ActiveAdmin::Views::PaginatedCollection do
129
141
  end
130
142
 
131
143
  it "should use 'Plural' as the collection name when there is an I18n translation" do
132
- I18n.stub(:translate!) { "Plural" }
144
+ I18n.stub(:translate) { "Plural" }
133
145
  pagination.find_by_class('pagination_information').first.content.should == "Displaying <b>all 3</b> Plural"
134
146
  end
135
147
  end
@@ -150,7 +162,7 @@ describe ActiveAdmin::Views::PaginatedCollection do
150
162
  context "when collection comes from find with GROUP BY" do
151
163
  let(:collection) do
152
164
  %w{Foo Foo Bar}.each {|title| Post.create(:title => title) }
153
- Post.group(:title).page(1).per(5)
165
+ Post.select(:title).group(:title).page(1).per(5)
154
166
  end
155
167
 
156
168
  let(:pagination) { paginated_collection(collection) }
@@ -159,5 +171,35 @@ describe ActiveAdmin::Views::PaginatedCollection do
159
171
  pagination.find_by_class('pagination_information').first.content.should == "Displaying <b>all 2</b> posts"
160
172
  end
161
173
  end
174
+
175
+ context "when collection with many pages comes from find with GROUP BY" do
176
+ let(:collection) do
177
+ %w{Foo Foo Bar Baz}.each {|title| Post.create(:title => title) }
178
+ Post.select(:title).group(:title).page(1).per(2)
179
+ end
180
+
181
+ let(:pagination) { paginated_collection(collection) }
182
+
183
+ it "should display proper message (including number and not hash)" do
184
+ pagination.find_by_class('pagination_information').first.content.
185
+ gsub('&nbsp;',' ').should == "Displaying posts <b>1 - 2</b> of <b>3</b> in total"
186
+ end
187
+ end
188
+
189
+ context "when viewing the last page of a collection that has multiple pages" do
190
+ let(:collection) do
191
+ posts = [Post.new] * 81
192
+ Kaminari.paginate_array(posts).page(3).per(30)
193
+ end
194
+
195
+ let(:pagination) { paginated_collection(collection) }
196
+
197
+ it "should show the proper item counts" do
198
+ pagination.find_by_class('pagination_information').first.content.
199
+ gsub('&nbsp;',' ').should == "Displaying posts <b>61 - 81</b> of <b>81</b> in total"
200
+ end
201
+ end
202
+
203
+
162
204
  end
163
205
  end
@@ -2,11 +2,11 @@ require 'spec_helper'
2
2
 
3
3
  describe ActiveAdmin::Views::Panel do
4
4
 
5
- setup_arbre_context!
6
-
7
5
  let(:the_panel) do
8
- panel "My Title" do
9
- span("Hello World")
6
+ render_arbre_component do
7
+ panel "My Title" do
8
+ span("Hello World")
9
+ end
10
10
  end
11
11
  end
12
12
 
@@ -23,13 +23,18 @@ describe ActiveAdmin::Views::Panel do
23
23
  end
24
24
 
25
25
  it "should set the icon" do
26
- panel("Title", :icon => :arrow_down).find_by_tag("h3").first.content.should include("span class=\"icon")
26
+ the_panel = render_arbre_component do
27
+ panel("Title", :icon => :arrow_down)
28
+ end
29
+ the_panel.find_by_tag("h3").first.content.should include("span class=\"icon")
27
30
  end
28
31
 
29
32
  describe "#children?" do
30
33
 
31
34
  it "returns false if no children have been added to the panel" do
32
- the_panel = panel("A Panel")
35
+ the_panel = render_arbre_component do
36
+ panel("A Panel")
37
+ end
33
38
  the_panel.children?.should == false
34
39
  end
35
40
 
@@ -0,0 +1,33 @@
1
+ require 'spec_helper'
2
+
3
+ describe ActiveAdmin::Views::Popover do
4
+
5
+ let(:the_popover) do
6
+ render_arbre_component do
7
+ popover :id => "my_awesome_popover" do
8
+ para "Hello World, this is popover content baby."
9
+ end
10
+ end
11
+ end
12
+
13
+ it "should have the class of 'sidebar_section'" do
14
+ the_popover.class_list.should include("popover")
15
+ end
16
+
17
+ it "should have an inner content element class of 'popover_contents'" do
18
+ the_popover.find_by_tag("div").first.class_list.should include("popover_contents")
19
+ end
20
+
21
+ it "should have the popover content in the inner content element" do
22
+ the_popover.find_by_class("popover_contents").first.content.should include("Hello World, this is popover content baby.")
23
+ end
24
+
25
+ it "should have an id" do
26
+ the_popover.id.should == "my_awesome_popover"
27
+ end
28
+
29
+ it "should be hidden" do
30
+ the_popover.attributes.should include(:style => "display: none");
31
+ end
32
+
33
+ end
@@ -2,20 +2,20 @@ require 'spec_helper'
2
2
 
3
3
  describe ActiveAdmin::Views::SidebarSection do
4
4
 
5
- setup_arbre_context!
6
-
7
5
  let(:section) do
8
- ActiveAdmin::SidebarSection.new(:help) do
6
+ ActiveAdmin::SidebarSection.new("Help Section") do
9
7
  span "Help Me"
10
8
  end
11
9
  end
12
10
 
13
11
  let(:html) do
14
- sidebar_section(section)
12
+ render_arbre_component :section => section do
13
+ sidebar_section(assigns[:section])
14
+ end
15
15
  end
16
16
 
17
17
  it "should have a title h3" do
18
- html.find_by_tag("h3").first.content.should == "Help"
18
+ html.find_by_tag("h3").first.content.should == "Help Section"
19
19
  end
20
20
 
21
21
  it "should have the class of 'sidebar_section'" do
@@ -23,7 +23,7 @@ describe ActiveAdmin::Views::SidebarSection do
23
23
  end
24
24
 
25
25
  it "should have an id based on the title" do
26
- html.id.should == "help_sidebar_section"
26
+ html.id.should == "help-section_sidebar_section"
27
27
  end
28
28
 
29
29
  it "should have a contents div" do