nsm-activeadmin 0.2.2

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 (321) hide show
  1. data/.document +5 -0
  2. data/.gitignore +34 -0
  3. data/.travis.yml +4 -0
  4. data/.yardopts +8 -0
  5. data/CHANGELOG.rdoc +76 -0
  6. data/Gemfile +39 -0
  7. data/LICENSE +25 -0
  8. data/README.rdoc +487 -0
  9. data/Rakefile +27 -0
  10. data/activeadmin.gemspec +28 -0
  11. data/app/assets/images/active_admin/admin_notes_icon.png +0 -0
  12. data/app/assets/images/active_admin/datepicker/datepicker-header-bg.png +0 -0
  13. data/app/assets/images/active_admin/datepicker/datepicker-input-icon.png +0 -0
  14. data/app/assets/images/active_admin/datepicker/datepicker-next-link-icon.png +0 -0
  15. data/app/assets/images/active_admin/datepicker/datepicker-nipple.png +0 -0
  16. data/app/assets/images/active_admin/datepicker/datepicker-prev-link-icon.png +0 -0
  17. data/app/assets/images/active_admin/loading.gif +0 -0
  18. data/app/assets/images/active_admin/nested_menu_arrow.gif +0 -0
  19. data/app/assets/images/active_admin/nested_menu_arrow_dark.gif +0 -0
  20. data/app/assets/images/active_admin/orderable.png +0 -0
  21. data/app/assets/javascripts/active_admin/base.js +12 -0
  22. data/app/assets/javascripts/active_admin/vendor.js +382 -0
  23. data/app/assets/stylesheets/active_admin/_base.css.scss +400 -0
  24. data/app/assets/stylesheets/active_admin/_forms.css.scss +256 -0
  25. data/app/assets/stylesheets/active_admin/_header.css.scss +110 -0
  26. data/app/assets/stylesheets/active_admin/_mixins.css.scss +1 -0
  27. data/app/assets/stylesheets/active_admin/_typography.css.scss +100 -0
  28. data/app/assets/stylesheets/active_admin/components/_comments.css.scss +40 -0
  29. data/app/assets/stylesheets/active_admin/components/_date_picker.css.scss +123 -0
  30. data/app/assets/stylesheets/active_admin/components/_flash_messages.css.scss +38 -0
  31. data/app/assets/stylesheets/active_admin/mixins/_all.css.scss +8 -0
  32. data/app/assets/stylesheets/active_admin/mixins/_buttons.css.scss +27 -0
  33. data/app/assets/stylesheets/active_admin/mixins/_gradients.css.scss +29 -0
  34. data/app/assets/stylesheets/active_admin/mixins/_icons.css.scss +20 -0
  35. data/app/assets/stylesheets/active_admin/mixins/_reset.css.scss +165 -0
  36. data/app/assets/stylesheets/active_admin/mixins/_rounded.css.scss +43 -0
  37. data/app/assets/stylesheets/active_admin/mixins/_sections.css.scss +34 -0
  38. data/app/assets/stylesheets/active_admin/mixins/_shadows.css.scss +21 -0
  39. data/app/assets/stylesheets/active_admin/mixins/_variables.css.scss +21 -0
  40. data/app/views/active_admin/dashboard/index.html.arb +1 -0
  41. data/app/views/active_admin/devise/mailer/reset_password_instructions.html.erb +8 -0
  42. data/app/views/active_admin/devise/mailer/unlock_instructions.html.erb +7 -0
  43. data/app/views/active_admin/devise/passwords/edit.html.erb +16 -0
  44. data/app/views/active_admin/devise/passwords/new.html.erb +14 -0
  45. data/app/views/active_admin/devise/sessions/new.html.erb +18 -0
  46. data/app/views/active_admin/devise/shared/_links.erb +20 -0
  47. data/app/views/active_admin/devise/unlocks/new.html.erb +12 -0
  48. data/app/views/active_admin/resource/edit.html.arb +1 -0
  49. data/app/views/active_admin/resource/index.csv.erb +20 -0
  50. data/app/views/active_admin/resource/index.html.arb +1 -0
  51. data/app/views/active_admin/resource/new.html.arb +1 -0
  52. data/app/views/active_admin/resource/show.html.arb +1 -0
  53. data/app/views/layouts/active_admin.html.arb +1 -0
  54. data/app/views/layouts/active_admin_logged_out.html.erb +35 -0
  55. data/cucumber.yml +2 -0
  56. data/docs/1-general-configuration.md +52 -0
  57. data/docs/2-resource-customization.md +35 -0
  58. data/docs/3-index-pages.md +55 -0
  59. data/docs/3-index-pages/index-as-block.md +16 -0
  60. data/docs/3-index-pages/index-as-blog.md +61 -0
  61. data/docs/3-index-pages/index-as-grid.md +21 -0
  62. data/docs/3-index-pages/index-as-table.md +74 -0
  63. data/docs/4-csv-format.md +14 -0
  64. data/docs/5-forms.md +39 -0
  65. data/docs/6-show-screens.md +22 -0
  66. data/docs/7-sidebars.md +35 -0
  67. data/docs/8-custom-actions.md +123 -0
  68. data/features/comments/commenting.feature +112 -0
  69. data/features/comments/viewing_index.feature +19 -0
  70. data/features/dashboard.feature +26 -0
  71. data/features/edit_page.feature +106 -0
  72. data/features/first_boot.feature +16 -0
  73. data/features/global_navigation.feature +30 -0
  74. data/features/index/format_as_csv.feature +46 -0
  75. data/features/index/formats.feature +12 -0
  76. data/features/index/index_as_block.feature +15 -0
  77. data/features/index/index_as_blog.feature +50 -0
  78. data/features/index/index_as_grid.feature +45 -0
  79. data/features/index/index_as_table.feature +81 -0
  80. data/features/index/index_blank_slate.feature +55 -0
  81. data/features/index/index_scopes.feature +52 -0
  82. data/features/index/pagination.feature +17 -0
  83. data/features/menu.feature +26 -0
  84. data/features/new_page.feature +75 -0
  85. data/features/registering_assets.feature +35 -0
  86. data/features/registering_resources.feature +33 -0
  87. data/features/show/default_content.feature +43 -0
  88. data/features/show/page_title.feature +33 -0
  89. data/features/sidebar_sections.feature +127 -0
  90. data/features/specifying_actions.feature +87 -0
  91. data/features/step_definitions/action_item_steps.rb +7 -0
  92. data/features/step_definitions/additional_web_steps.rb +77 -0
  93. data/features/step_definitions/asset_steps.rb +7 -0
  94. data/features/step_definitions/attribute_steps.rb +13 -0
  95. data/features/step_definitions/comment_steps.rb +8 -0
  96. data/features/step_definitions/configuration_steps.rb +31 -0
  97. data/features/step_definitions/dashboard_steps.rb +11 -0
  98. data/features/step_definitions/factory_steps.rb +29 -0
  99. data/features/step_definitions/flash_steps.rb +3 -0
  100. data/features/step_definitions/format_steps.rb +35 -0
  101. data/features/step_definitions/index_scope_steps.rb +20 -0
  102. data/features/step_definitions/layout_steps.rb +3 -0
  103. data/features/step_definitions/menu_steps.rb +7 -0
  104. data/features/step_definitions/pagination_steps.rb +8 -0
  105. data/features/step_definitions/sidebar_steps.rb +7 -0
  106. data/features/step_definitions/tab_steps.rb +3 -0
  107. data/features/step_definitions/user_steps.rb +26 -0
  108. data/features/step_definitions/web_steps.rb +211 -0
  109. data/features/sti_resource.feature +61 -0
  110. data/features/support/env.rb +90 -0
  111. data/features/support/paths.rb +50 -0
  112. data/features/support/selectors.rb +45 -0
  113. data/features/users/logging_in.feature +34 -0
  114. data/features/users/logging_out.feature +13 -0
  115. data/lib/active_admin.rb +74 -0
  116. data/lib/active_admin/abstract_view_factory.rb +95 -0
  117. data/lib/active_admin/application.rb +228 -0
  118. data/lib/active_admin/arbre.rb +23 -0
  119. data/lib/active_admin/arbre/attributes.rb +20 -0
  120. data/lib/active_admin/arbre/class_list.rb +28 -0
  121. data/lib/active_admin/arbre/collection.rb +27 -0
  122. data/lib/active_admin/arbre/context.rb +14 -0
  123. data/lib/active_admin/arbre/core_extensions.rb +5 -0
  124. data/lib/active_admin/arbre/document.rb +42 -0
  125. data/lib/active_admin/arbre/element.rb +151 -0
  126. data/lib/active_admin/arbre/html.rb +84 -0
  127. data/lib/active_admin/arbre/html5_elements.rb +47 -0
  128. data/lib/active_admin/arbre/tag.rb +137 -0
  129. data/lib/active_admin/arbre/text_node.rb +35 -0
  130. data/lib/active_admin/asset_registration.rb +34 -0
  131. data/lib/active_admin/callbacks.rb +89 -0
  132. data/lib/active_admin/comments.rb +88 -0
  133. data/lib/active_admin/comments/comment.rb +21 -0
  134. data/lib/active_admin/comments/configuration.rb +18 -0
  135. data/lib/active_admin/comments/namespace_helper.rb +14 -0
  136. data/lib/active_admin/comments/resource_helper.rb +17 -0
  137. data/lib/active_admin/comments/show_page_helper.rb +23 -0
  138. data/lib/active_admin/comments/views.rb +3 -0
  139. data/lib/active_admin/comments/views/active_admin_comment.rb +0 -0
  140. data/lib/active_admin/comments/views/active_admin_comments.rb +82 -0
  141. data/lib/active_admin/component.rb +22 -0
  142. data/lib/active_admin/controller_action.rb +12 -0
  143. data/lib/active_admin/csv_builder.rb +45 -0
  144. data/lib/active_admin/dashboards.rb +48 -0
  145. data/lib/active_admin/dashboards/dashboard_controller.rb +38 -0
  146. data/lib/active_admin/dashboards/section.rb +34 -0
  147. data/lib/active_admin/deprecation.rb +36 -0
  148. data/lib/active_admin/devise.rb +43 -0
  149. data/lib/active_admin/dsl.rb +224 -0
  150. data/lib/active_admin/engine.rb +4 -0
  151. data/lib/active_admin/event.rb +31 -0
  152. data/lib/active_admin/form_builder.rb +109 -0
  153. data/lib/active_admin/helpers/optional_display.rb +34 -0
  154. data/lib/active_admin/helpers/settings.rb +63 -0
  155. data/lib/active_admin/iconic.rb +51 -0
  156. data/lib/active_admin/iconic/icons.rb +142 -0
  157. data/lib/active_admin/locales/da.yml +28 -0
  158. data/lib/active_admin/locales/en.yml +40 -0
  159. data/lib/active_admin/locales/es.yml +39 -0
  160. data/lib/active_admin/locales/it.yml +39 -0
  161. data/lib/active_admin/locales/pt-BR.yml +36 -0
  162. data/lib/active_admin/locales/ru.yml +40 -0
  163. data/lib/active_admin/locales/zh_cn.yml +40 -0
  164. data/lib/active_admin/menu.rb +42 -0
  165. data/lib/active_admin/menu_item.rb +73 -0
  166. data/lib/active_admin/namespace.rb +206 -0
  167. data/lib/active_admin/page_config.rb +15 -0
  168. data/lib/active_admin/reloader.rb +30 -0
  169. data/lib/active_admin/renderer.rb +87 -0
  170. data/lib/active_admin/resource.rb +151 -0
  171. data/lib/active_admin/resource/action_items.rb +88 -0
  172. data/lib/active_admin/resource/belongs_to.rb +31 -0
  173. data/lib/active_admin/resource/menu.rb +45 -0
  174. data/lib/active_admin/resource/naming.rb +36 -0
  175. data/lib/active_admin/resource/scopes.rb +33 -0
  176. data/lib/active_admin/resource/sidebars.rb +36 -0
  177. data/lib/active_admin/resource_controller.rb +103 -0
  178. data/lib/active_admin/resource_controller/action_builder.rb +21 -0
  179. data/lib/active_admin/resource_controller/actions.rb +79 -0
  180. data/lib/active_admin/resource_controller/callbacks.rb +47 -0
  181. data/lib/active_admin/resource_controller/collection.rb +144 -0
  182. data/lib/active_admin/resource_controller/filters.rb +58 -0
  183. data/lib/active_admin/resource_controller/form.rb +42 -0
  184. data/lib/active_admin/resource_controller/menu.rb +29 -0
  185. data/lib/active_admin/resource_controller/page_configurations.rb +53 -0
  186. data/lib/active_admin/resource_controller/scoping.rb +36 -0
  187. data/lib/active_admin/resource_controller/sidebars.rb +18 -0
  188. data/lib/active_admin/router.rb +85 -0
  189. data/lib/active_admin/sass/active_admin.scss +3 -0
  190. data/lib/active_admin/sass/css_loader.rb +16 -0
  191. data/lib/active_admin/sass/helpers.rb +40 -0
  192. data/lib/active_admin/scope.rb +17 -0
  193. data/lib/active_admin/sidebar_section.rb +41 -0
  194. data/lib/active_admin/stylesheets/active_admin/mixins/_utilities.scss +0 -0
  195. data/lib/active_admin/version.rb +3 -0
  196. data/lib/active_admin/view_factory.rb +23 -0
  197. data/lib/active_admin/view_helpers.rb +22 -0
  198. data/lib/active_admin/view_helpers/active_admin_application_helper.rb +12 -0
  199. data/lib/active_admin/view_helpers/assigns_with_indifferent_access_helper.rb +7 -0
  200. data/lib/active_admin/view_helpers/auto_link_helper.rb +42 -0
  201. data/lib/active_admin/view_helpers/breadcrumb_helper.rb +29 -0
  202. data/lib/active_admin/view_helpers/display_helper.rb +38 -0
  203. data/lib/active_admin/view_helpers/filter_form_helper.rb +186 -0
  204. data/lib/active_admin/view_helpers/form_helper.rb +13 -0
  205. data/lib/active_admin/view_helpers/icon_helper.rb +12 -0
  206. data/lib/active_admin/view_helpers/method_or_proc_helper.rb +26 -0
  207. data/lib/active_admin/view_helpers/renderer_helper.rb +29 -0
  208. data/lib/active_admin/view_helpers/sidebar_helper.rb +15 -0
  209. data/lib/active_admin/view_helpers/title_helper.rb +11 -0
  210. data/lib/active_admin/view_helpers/view_factory_helper.rb +11 -0
  211. data/lib/active_admin/views.rb +8 -0
  212. data/lib/active_admin/views/action_items.rb +17 -0
  213. data/lib/active_admin/views/components/attributes_table.rb +66 -0
  214. data/lib/active_admin/views/components/blank_slate.rb +33 -0
  215. data/lib/active_admin/views/components/columns.rb +47 -0
  216. data/lib/active_admin/views/components/paginated_collection.rb +92 -0
  217. data/lib/active_admin/views/components/panel.rb +26 -0
  218. data/lib/active_admin/views/components/scopes.rb +70 -0
  219. data/lib/active_admin/views/components/sidebar_section.rb +28 -0
  220. data/lib/active_admin/views/components/status_tag.rb +55 -0
  221. data/lib/active_admin/views/components/table_for.rb +193 -0
  222. data/lib/active_admin/views/dashboard_section_renderer.rb +19 -0
  223. data/lib/active_admin/views/header_renderer.rb +53 -0
  224. data/lib/active_admin/views/index_as_block.rb +29 -0
  225. data/lib/active_admin/views/index_as_blog.rb +129 -0
  226. data/lib/active_admin/views/index_as_grid.rb +70 -0
  227. data/lib/active_admin/views/index_as_table.rb +148 -0
  228. data/lib/active_admin/views/pages/base.rb +155 -0
  229. data/lib/active_admin/views/pages/dashboard.rb +62 -0
  230. data/lib/active_admin/views/pages/edit.rb +28 -0
  231. data/lib/active_admin/views/pages/index.rb +74 -0
  232. data/lib/active_admin/views/pages/layout.rb +26 -0
  233. data/lib/active_admin/views/pages/new.rb +28 -0
  234. data/lib/active_admin/views/pages/show.rb +56 -0
  235. data/lib/active_admin/views/tabs_renderer.rb +58 -0
  236. data/lib/activeadmin.rb +1 -0
  237. data/lib/generators/active_admin/assets/assets_generator.rb +21 -0
  238. data/lib/generators/active_admin/assets/templates/3.0/active_admin.js +427 -0
  239. data/lib/generators/active_admin/assets/templates/3.1/active_admin.css.scss +6 -0
  240. data/lib/generators/active_admin/assets/templates/3.1/active_admin.js +1 -0
  241. data/lib/generators/active_admin/assets/templates/dashboards.rb +36 -0
  242. data/lib/generators/active_admin/devise/devise_generator.rb +49 -0
  243. data/lib/generators/active_admin/install/install_generator.rb +44 -0
  244. data/lib/generators/active_admin/install/templates/active_admin.rb.erb +93 -0
  245. data/lib/generators/active_admin/install/templates/dashboards.rb +38 -0
  246. data/lib/generators/active_admin/install/templates/migrations/1_create_admin_notes.rb +16 -0
  247. data/lib/generators/active_admin/install/templates/migrations/2_move_admin_notes_to_comments.rb +25 -0
  248. data/lib/generators/active_admin/resource/resource_generator.rb +16 -0
  249. data/lib/generators/active_admin/resource/templates/admin.rb +3 -0
  250. data/script/local +44 -0
  251. data/script/use_rails +45 -0
  252. data/spec/integration/belongs_to_spec.rb +42 -0
  253. data/spec/integration/default_namespace.rb +77 -0
  254. data/spec/integration/javascript_spec.rb +20 -0
  255. data/spec/integration/stylesheets_spec.rb +41 -0
  256. data/spec/spec_helper.rb +157 -0
  257. data/spec/support/detect_rails_version.rb +11 -0
  258. data/spec/support/integration_example_group.rb +33 -0
  259. data/spec/support/jslint.yml +80 -0
  260. data/spec/support/rails_template.rb +32 -0
  261. data/spec/support/rails_template_with_data.rb +33 -0
  262. data/spec/support/templates/cucumber.rb +24 -0
  263. data/spec/unit/abstract_view_factory_spec.rb +79 -0
  264. data/spec/unit/action_builder_spec.rb +88 -0
  265. data/spec/unit/application_spec.rb +78 -0
  266. data/spec/unit/arbre/html/context_spec.rb +22 -0
  267. data/spec/unit/arbre/html/element_finder_methods_spec.rb +54 -0
  268. data/spec/unit/arbre/html/element_spec.rb +224 -0
  269. data/spec/unit/arbre/html/tag_attributes_spec.rb +61 -0
  270. data/spec/unit/arbre/html/tag_spec.rb +63 -0
  271. data/spec/unit/arbre/html_spec.rb +210 -0
  272. data/spec/unit/asset_registration_spec.rb +37 -0
  273. data/spec/unit/auto_link_spec.rb +39 -0
  274. data/spec/unit/belongs_to_spec.rb +45 -0
  275. data/spec/unit/breadcrumbs_spec.rb +110 -0
  276. data/spec/unit/comments_spec.rb +57 -0
  277. data/spec/unit/component_spec.rb +18 -0
  278. data/spec/unit/controller_filters_spec.rb +34 -0
  279. data/spec/unit/csv_builder_spec.rb +83 -0
  280. data/spec/unit/dashboard_controller_spec.rb +26 -0
  281. data/spec/unit/dashboard_section_spec.rb +56 -0
  282. data/spec/unit/dashboards_spec.rb +59 -0
  283. data/spec/unit/display_name_spec.rb +29 -0
  284. data/spec/unit/event_spec.rb +41 -0
  285. data/spec/unit/filter_form_builder_spec.rb +182 -0
  286. data/spec/unit/form_builder_spec.rb +239 -0
  287. data/spec/unit/generators/install_rails_3_1_spec.rb +16 -0
  288. data/spec/unit/helpers/settings_spec.rb +30 -0
  289. data/spec/unit/menu_item_spec.rb +143 -0
  290. data/spec/unit/menu_spec.rb +53 -0
  291. data/spec/unit/namespace_spec.rb +214 -0
  292. data/spec/unit/pretty_format_spec.rb +35 -0
  293. data/spec/unit/rails_spec.rb +43 -0
  294. data/spec/unit/registration_spec.rb +76 -0
  295. data/spec/unit/reloader_spec.rb +28 -0
  296. data/spec/unit/renderer_spec.rb +108 -0
  297. data/spec/unit/resource/action_items_spec.rb +62 -0
  298. data/spec/unit/resource/menu_spec.rb +80 -0
  299. data/spec/unit/resource/naming_spec.rb +56 -0
  300. data/spec/unit/resource/scopes_spec.rb +30 -0
  301. data/spec/unit/resource/sidebars_spec.rb +50 -0
  302. data/spec/unit/resource_controller/collection_spec.rb +34 -0
  303. data/spec/unit/resource_controller_spec.rb +152 -0
  304. data/spec/unit/resource_spec.rb +260 -0
  305. data/spec/unit/routing_spec.rb +88 -0
  306. data/spec/unit/sass/helpers_spec.rb +47 -0
  307. data/spec/unit/scope_spec.rb +31 -0
  308. data/spec/unit/tabs_renderer_spec.rb +85 -0
  309. data/spec/unit/view_factory_spec.rb +19 -0
  310. data/spec/unit/views/components/attributes_table_spec.rb +100 -0
  311. data/spec/unit/views/components/blank_slate_spec.rb +31 -0
  312. data/spec/unit/views/components/columns_spec.rb +75 -0
  313. data/spec/unit/views/components/panel_spec.rb +31 -0
  314. data/spec/unit/views/components/sidebar_section_spec.rb +37 -0
  315. data/spec/unit/views/components/status_tag_spec.rb +81 -0
  316. data/spec/unit/views/components/table_for_spec.rb +130 -0
  317. data/spec/unit/views/pages/layout_spec.rb +22 -0
  318. data/tasks/docs.rake +39 -0
  319. data/tasks/test.rake +49 -0
  320. data/tasks/yard.rake +6 -0
  321. metadata +510 -0
@@ -0,0 +1,61 @@
1
+ require 'spec_helper'
2
+
3
+ describe Arbre::HTML::Tag, "Attributes" do
4
+ include Arbre::HTML
5
+ let(:assigns){ {} }
6
+
7
+ let(:tag){ Arbre::HTML::Tag.new }
8
+
9
+ describe "attributes" do
10
+ before { tag.build :id => "my_id" }
11
+
12
+ it "should have an attributes hash" do
13
+ tag.attributes.should == {:id => "my_id"}
14
+ end
15
+
16
+ it "should render the attributes to html" do
17
+ tag.to_html.should == <<-HTML
18
+ <tag id="my_id"></tag>
19
+ HTML
20
+ end
21
+
22
+ it "should get an attribute value" do
23
+ tag.attr(:id).should == "my_id"
24
+ end
25
+
26
+ describe "#has_attribute?" do
27
+ context "when the attribute exists" do
28
+ it "should return true" do
29
+ tag.has_attribute?(:id).should == true
30
+ end
31
+ end
32
+
33
+ context "when the attribute does not exist" do
34
+ it "should return false" do
35
+ tag.has_attribute?(:class).should == false
36
+ end
37
+ end
38
+ end
39
+
40
+ it "should remove an attribute" do
41
+ tag.attributes.should == {:id => "my_id"}
42
+ tag.remove_attribute(:id).should == "my_id"
43
+ tag.attributes.should == {}
44
+ end
45
+ end
46
+
47
+ describe "rendering attributes" do
48
+ it "should html safe the attribute values" do
49
+ tag.set_attribute(:class, "\">bad things!")
50
+ tag.to_html.should == <<-HTML
51
+ <tag class="&quot;&gt;bad things!"></tag>
52
+ HTML
53
+ end
54
+ it "should should escape the attribute names" do
55
+ tag.set_attribute(">bad", "things")
56
+ tag.to_html.should == <<-HTML
57
+ <tag &gt;bad="things"></tag>
58
+ HTML
59
+ end
60
+ end
61
+ end
@@ -0,0 +1,63 @@
1
+ require 'spec_helper'
2
+
3
+ describe Arbre::HTML::Tag do
4
+ include Arbre::HTML
5
+ let(:assigns){ {} }
6
+
7
+ let(:tag){ Arbre::HTML::Tag.new }
8
+
9
+ describe "building a new tag" do
10
+ before { tag.build "Hello World", :id => "my_id" }
11
+
12
+ it "should set the contents to a string" do
13
+ tag.content.should == "Hello World"
14
+ end
15
+
16
+ it "should set the hash of options to the attributes" do
17
+ tag.attributes.should == { :id => "my_id" }
18
+ end
19
+ end
20
+
21
+ describe "creating a tag 'for' an object" do
22
+ let(:model_name){ mock(:singular => "resource_class")}
23
+ let(:resource_class){ mock(:model_name => model_name) }
24
+ let(:resource){ mock(:class => resource_class, :to_key => ['5'])}
25
+
26
+ before do
27
+ tag.build :for => resource
28
+ end
29
+ it "should set the id to the type and id" do
30
+ tag.id.should == "resource_class_5"
31
+ end
32
+ it "should add a class name" do
33
+ tag.class_list.should include("resource_class")
34
+ end
35
+ end
36
+
37
+ describe "css class names" do
38
+ it "should add a class" do
39
+ tag.add_class "hello_world"
40
+ tag.class_names.should == "hello_world"
41
+ end
42
+
43
+ it "should remove_class" do
44
+ tag.add_class "hello_world"
45
+ tag.class_names.should == "hello_world"
46
+ tag.remove_class "hello_world"
47
+ tag.class_names.should == ""
48
+ end
49
+
50
+ it "should not add a class if it already exists" do
51
+ tag.add_class "hello_world"
52
+ tag.add_class "hello_world"
53
+ tag.class_names.should == "hello_world"
54
+ end
55
+
56
+ it "should seperate classes with space" do
57
+ tag.add_class "hello world"
58
+ tag.class_list.size.should == 2
59
+ end
60
+ end
61
+
62
+
63
+ end
@@ -0,0 +1,210 @@
1
+ require 'spec_helper'
2
+
3
+ describe Arbre::HTML do
4
+ include Arbre::HTML
5
+
6
+ let(:assigns){ {} }
7
+
8
+ it "should render a single element" do
9
+ content = span("Hello World")
10
+ content.to_html.should == <<-HTML
11
+ <span>Hello World</span>
12
+ HTML
13
+ end
14
+
15
+ it "should render a child element" do
16
+ content = span do
17
+ span "Hello World"
18
+ end
19
+ content.to_html.should == <<-HTML
20
+ <span>
21
+ <span>Hello World</span>
22
+ </span>
23
+ HTML
24
+ end
25
+
26
+ it "should render an unordered list" do
27
+ content = ul do
28
+ li "First"
29
+ li "Second"
30
+ li "Third"
31
+ end
32
+ content.to_html.should == <<-HTML
33
+ <ul>
34
+ <li>First</li>
35
+ <li>Second</li>
36
+ <li>Third</li>
37
+ </ul>
38
+ HTML
39
+ end
40
+
41
+ it "should return the correct object" do
42
+ list_1 = ul
43
+ list_2 = li
44
+ list_1.should be_instance_of(Arbre::HTML::Ul)
45
+ list_2.should be_instance_of(Arbre::HTML::Li)
46
+ end
47
+
48
+ it "should allow local variables inside the tags" do
49
+ first = "First"
50
+ second = "Second"
51
+ content = ul do
52
+ li first
53
+ li second
54
+ end
55
+ content.to_html.should == <<-EOS
56
+ <ul>
57
+ <li>First</li>
58
+ <li>Second</li>
59
+ </ul>
60
+ EOS
61
+ end
62
+
63
+ it "should add children and nested" do
64
+ content = div do
65
+ ul
66
+ li do
67
+ li
68
+ end
69
+ end
70
+ content.to_html.should == <<-HTML
71
+ <div>
72
+ <ul></ul>
73
+ <li>
74
+ <li></li>
75
+ </li>
76
+ </div>
77
+ HTML
78
+ end
79
+
80
+ it "should pass the element in to the block if asked for" do
81
+ content = div do |d|
82
+ d.ul do
83
+ li
84
+ end
85
+ end
86
+ content.to_html.should == <<-HTML
87
+ <div>
88
+ <ul>
89
+ <li></li>
90
+ </ul>
91
+ </div>
92
+ HTML
93
+ end
94
+
95
+ it "should move content tags between parents" do
96
+ content = div do
97
+ span(ul(li))
98
+ end
99
+ content.to_html.should == <<-HTML
100
+ <div>
101
+ <span>
102
+ <ul>
103
+ <li></li>
104
+ </ul>
105
+ </span>
106
+ </div>
107
+ HTML
108
+ end
109
+
110
+ it "should add content to the parent if the element is passed into block" do
111
+ content = div do |d|
112
+ d.id = "my-tag"
113
+ ul do
114
+ li
115
+ end
116
+ end
117
+ content.to_html.should == <<-HTML
118
+ <div id="my-tag">
119
+ <ul>
120
+ <li></li>
121
+ </ul>
122
+ </div>
123
+ HTML
124
+ end
125
+
126
+ it "should have the parent set on it" do
127
+ item = nil
128
+ list = ul do
129
+ li "Hello"
130
+ item = li "World"
131
+ end
132
+ item.parent.should == list
133
+ end
134
+
135
+ it "should set a string content return value with no children" do
136
+ li do
137
+ "Hello World"
138
+ end.to_html.should == <<-HTML
139
+ <li>Hello World</li>
140
+ HTML
141
+ end
142
+
143
+ describe "text nodes" do
144
+ it "should turn strings into text nodes" do
145
+ li do
146
+ "Hello World"
147
+ end.children.first.should be_instance_of(Arbre::HTML::TextNode)
148
+ end
149
+ end
150
+
151
+ describe "self-closing nodes" do
152
+ it "should not self-close script tags" do
153
+ tag = script :type => 'text/javascript'
154
+ tag.to_html.should == <<-HTML
155
+ <script type="text/javascript"></script>
156
+ HTML
157
+ end
158
+ it "should self-close meta tags" do
159
+ tag = meta :content => "text/html; charset=utf-8"
160
+ tag.to_html.should == <<-HTML
161
+ <meta content="text/html; charset=utf-8\"/>
162
+ HTML
163
+ end
164
+ it "should self-close link tags" do
165
+ tag = link :rel => "stylesheet"
166
+ tag.to_html.should == <<-HTML
167
+ <link rel="stylesheet"/>
168
+ HTML
169
+ end
170
+ end
171
+
172
+ describe "html safe" do
173
+ it "should escape the contents" do
174
+ span("<br />").to_html.should == <<-HTML
175
+ <span>&lt;br /&gt;</span>
176
+ HTML
177
+ end
178
+
179
+ it "should return html safe strings" do
180
+ span("<br />").to_html.should be_html_safe
181
+ end
182
+
183
+ it "should not escape html passed in" do
184
+ span(span("<br />")).to_html.should == <<-HTML
185
+ <span>
186
+ <span>&lt;br /&gt;</span>
187
+ </span>
188
+ HTML
189
+ end
190
+
191
+ it "should escape string contents when passed in block" do
192
+ span {
193
+ span {
194
+ "<br />"
195
+ }
196
+ }.to_html.should == <<-HTML
197
+ <span>
198
+ <span>&lt;br /&gt;</span>
199
+ </span>
200
+ HTML
201
+ end
202
+
203
+ it "should escape the contents of attributes" do
204
+ span(:class => "<br />").to_html.should == <<-HTML
205
+ <span class="&lt;br /&gt;"></span>
206
+ HTML
207
+ end
208
+ end
209
+
210
+ end
@@ -0,0 +1,37 @@
1
+ require 'spec_helper'
2
+
3
+ module MockRegistration
4
+ extend ActiveAdmin::AssetRegistration
5
+ end
6
+
7
+ describe ActiveAdmin::AssetRegistration do
8
+
9
+ before do
10
+ MockRegistration.clear_stylesheets!
11
+ MockRegistration.clear_javascripts!
12
+ end
13
+
14
+ it "should register a stylesheet file" do
15
+ MockRegistration.register_stylesheet "active_admin.css"
16
+ MockRegistration.stylesheets.should == ["active_admin.css"]
17
+ end
18
+
19
+ it "should clear all existing stylesheets" do
20
+ MockRegistration.register_stylesheet "active_admin.css"
21
+ MockRegistration.stylesheets.should == ["active_admin.css"]
22
+ MockRegistration.clear_stylesheets!
23
+ MockRegistration.stylesheets.should == []
24
+ end
25
+
26
+ it "should register a javascript file" do
27
+ MockRegistration.register_javascript "active_admin.js"
28
+ MockRegistration.javascripts.should == ["active_admin.js"]
29
+ end
30
+
31
+ it "should clear all existing javascripts" do
32
+ MockRegistration.register_javascript "active_admin.js"
33
+ MockRegistration.javascripts.should == ["active_admin.js"]
34
+ MockRegistration.clear_javascripts!
35
+ MockRegistration.javascripts.should == []
36
+ end
37
+ end
@@ -0,0 +1,39 @@
1
+ require 'spec_helper'
2
+
3
+ class AutoLinkMockResource
4
+ attr_accessor :namespace
5
+ def initialize(namespace)
6
+ @namespace = namespace
7
+ end
8
+ end
9
+
10
+ describe "auto linking resources" do
11
+ include ActiveAdmin::ViewHelpers::ActiveAdminApplicationHelper
12
+ include ActiveAdmin::ViewHelpers::AutoLinkHelper
13
+ include ActiveAdmin::ViewHelpers::DisplayHelper
14
+
15
+ let(:active_admin_config) { AutoLinkMockResource.new(namespace) }
16
+ let(:namespace){ ActiveAdmin::Namespace.new(ActiveAdmin::Application.new, :admin) }
17
+ let(:post){ Post.create! :title => "Hello World" }
18
+
19
+ def admin_post_path(post)
20
+ "/admin/posts/#{post.id}"
21
+ end
22
+
23
+ context "when the resource is not registered" do
24
+ it "should return the display name of the object" do
25
+ auto_link(post).should == "Hello World"
26
+ end
27
+ end
28
+
29
+ context "when the resource is registered" do
30
+ before do
31
+ namespace.register Post
32
+ end
33
+ it "should return a link with the display name of the object" do
34
+ self.should_receive(:link_to).with("Hello World", admin_post_path(post))
35
+ auto_link(post)
36
+ end
37
+ end
38
+
39
+ end
@@ -0,0 +1,45 @@
1
+ require 'spec_helper'
2
+
3
+ module ActiveAdmin
4
+ class Resource
5
+ describe BelongsTo do
6
+
7
+ let(:application){ ActiveAdmin::Application.new }
8
+ let(:namespace){ Namespace.new(application, :admin) }
9
+ let(:post){ namespace.register(Post) }
10
+ let(:belongs_to){ BelongsTo.new(post, :user) }
11
+
12
+ it "should have an owner" do
13
+ belongs_to.owner.should == post
14
+ end
15
+
16
+ it "should have a namespace" do
17
+ belongs_to.namespace.should == namespace
18
+ end
19
+
20
+ describe "finding the target" do
21
+ context "when the resource has been registered" do
22
+ let(:user){ namespace.register(User) }
23
+ before { user } # Ensure user is registered
24
+
25
+ it "should return the target resource" do
26
+ belongs_to.target.should == user
27
+ end
28
+ end
29
+
30
+ context "when the resource has not been registered" do
31
+ it "should raise a ActiveAdmin::BelongsTo::TargetNotFound" do
32
+ lambda {
33
+ belongs_to.target
34
+ }.should raise_error(ActiveAdmin::Resource::BelongsTo::TargetNotFound)
35
+ end
36
+ end
37
+ end
38
+
39
+ it "should be optional" do
40
+ belongs_to = BelongsTo.new post, :user, :optional => true
41
+ belongs_to.should be_optional
42
+ end
43
+ end
44
+ end
45
+ end