active_scaffold-sequel 0.3.0

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 (318) hide show
  1. data/CHANGELOG +179 -0
  2. data/MIT-LICENSE +20 -0
  3. data/README +36 -0
  4. data/app/assets/images/active_scaffold/add.gif +0 -0
  5. data/app/assets/images/active_scaffold/arrow_down.gif +0 -0
  6. data/app/assets/images/active_scaffold/arrow_up.gif +0 -0
  7. data/app/assets/images/active_scaffold/close.gif +0 -0
  8. data/app/assets/images/active_scaffold/close_touch.png +0 -0
  9. data/app/assets/images/active_scaffold/config.png +0 -0
  10. data/app/assets/images/active_scaffold/cross.png +0 -0
  11. data/app/assets/images/active_scaffold/gears.png +0 -0
  12. data/app/assets/images/active_scaffold/indicator-small.gif +0 -0
  13. data/app/assets/images/active_scaffold/indicator.gif +0 -0
  14. data/app/assets/images/active_scaffold/magnifier.png +0 -0
  15. data/app/assets/javascripts/active_scaffold.js.erb +19 -0
  16. data/app/assets/javascripts/jquery/active_scaffold.js +1057 -0
  17. data/app/assets/javascripts/jquery/date_picker_bridge.js.erb +24 -0
  18. data/app/assets/javascripts/jquery/draggable_lists.js +27 -0
  19. data/app/assets/javascripts/jquery/jquery.editinplace.js +743 -0
  20. data/app/assets/javascripts/jquery/tiny_mce_bridge.js +7 -0
  21. data/app/assets/javascripts/prototype/active_scaffold.js +1052 -0
  22. data/app/assets/javascripts/prototype/dhtml_history.js +870 -0
  23. data/app/assets/javascripts/prototype/form_enhancements.js +117 -0
  24. data/app/assets/javascripts/prototype/rico_corner.js +370 -0
  25. data/app/assets/javascripts/prototype/tiny_mce_bridge.js +7 -0
  26. data/app/assets/stylesheets/active_scaffold-ie.css +35 -0
  27. data/app/assets/stylesheets/active_scaffold.css.scss +14 -0
  28. data/app/assets/stylesheets/active_scaffold_colors.css.scss +395 -0
  29. data/app/assets/stylesheets/active_scaffold_extensions.css.erb +2 -0
  30. data/app/assets/stylesheets/active_scaffold_images.css.scss +43 -0
  31. data/app/assets/stylesheets/active_scaffold_layout.css +912 -0
  32. data/app/assets/stylesheets/blue-theme.css +74 -0
  33. data/config/locales/de.yml +114 -0
  34. data/config/locales/en.yml +118 -0
  35. data/config/locales/es.yml +120 -0
  36. data/config/locales/fr.yml +121 -0
  37. data/config/locales/hu.yml +74 -0
  38. data/config/locales/ja.yml +73 -0
  39. data/config/locales/ru.yml +123 -0
  40. data/frontends/default/views/_action_group.html.erb +24 -0
  41. data/frontends/default/views/_add_existing_form.html.erb +30 -0
  42. data/frontends/default/views/_base_form.html.erb +51 -0
  43. data/frontends/default/views/_create_form.html.erb +8 -0
  44. data/frontends/default/views/_create_form_on_list.html.erb +6 -0
  45. data/frontends/default/views/_field_search.html.erb +32 -0
  46. data/frontends/default/views/_form.html.erb +24 -0
  47. data/frontends/default/views/_form_association.html.erb +15 -0
  48. data/frontends/default/views/_form_association_footer.html.erb +47 -0
  49. data/frontends/default/views/_form_attribute.html.erb +20 -0
  50. data/frontends/default/views/_form_hidden_attribute.html.erb +2 -0
  51. data/frontends/default/views/_form_messages.html.erb +5 -0
  52. data/frontends/default/views/_horizontal_subform.html.erb +28 -0
  53. data/frontends/default/views/_horizontal_subform_footer.html.erb +0 -0
  54. data/frontends/default/views/_horizontal_subform_header.html.erb +11 -0
  55. data/frontends/default/views/_horizontal_subform_record.html.erb +38 -0
  56. data/frontends/default/views/_human_conditions.html.erb +1 -0
  57. data/frontends/default/views/_list.html.erb +18 -0
  58. data/frontends/default/views/_list_actions.html.erb +15 -0
  59. data/frontends/default/views/_list_calculations.html.erb +16 -0
  60. data/frontends/default/views/_list_column_headings.html.erb +12 -0
  61. data/frontends/default/views/_list_header.html.erb +10 -0
  62. data/frontends/default/views/_list_inline_adapter.html.erb +10 -0
  63. data/frontends/default/views/_list_messages.html.erb +30 -0
  64. data/frontends/default/views/_list_pagination.html.erb +11 -0
  65. data/frontends/default/views/_list_pagination_links.html.erb +9 -0
  66. data/frontends/default/views/_list_record.html.erb +14 -0
  67. data/frontends/default/views/_list_record_columns.html.erb +8 -0
  68. data/frontends/default/views/_list_with_header.html.erb +36 -0
  69. data/frontends/default/views/_messages.html.erb +10 -0
  70. data/frontends/default/views/_render_field.js.erb +20 -0
  71. data/frontends/default/views/_row.html.erb +6 -0
  72. data/frontends/default/views/_search.html.erb +34 -0
  73. data/frontends/default/views/_search_attribute.html.erb +10 -0
  74. data/frontends/default/views/_show.html.erb +8 -0
  75. data/frontends/default/views/_show_columns.html.erb +15 -0
  76. data/frontends/default/views/_update_actions.html.erb +9 -0
  77. data/frontends/default/views/_update_form.html.erb +6 -0
  78. data/frontends/default/views/_vertical_subform.html.erb +12 -0
  79. data/frontends/default/views/_vertical_subform_record.html.erb +38 -0
  80. data/frontends/default/views/action_confirmation.html.erb +13 -0
  81. data/frontends/default/views/add_existing.js.erb +18 -0
  82. data/frontends/default/views/add_existing_form.html.erb +5 -0
  83. data/frontends/default/views/create.html.erb +5 -0
  84. data/frontends/default/views/delete.html.erb +13 -0
  85. data/frontends/default/views/destroy.js.erb +24 -0
  86. data/frontends/default/views/edit_associated.js.erb +12 -0
  87. data/frontends/default/views/field_search.html.erb +5 -0
  88. data/frontends/default/views/form_messages.js.erb +1 -0
  89. data/frontends/default/views/list.html.erb +1 -0
  90. data/frontends/default/views/on_action_update.js.erb +13 -0
  91. data/frontends/default/views/on_create.js.erb +47 -0
  92. data/frontends/default/views/on_mark_all.js.erb +12 -0
  93. data/frontends/default/views/on_update.js.erb +31 -0
  94. data/frontends/default/views/refresh_list.js.erb +1 -0
  95. data/frontends/default/views/render_field.js.erb +1 -0
  96. data/frontends/default/views/search.html.erb +5 -0
  97. data/frontends/default/views/show.html.erb +5 -0
  98. data/frontends/default/views/update.html.erb +8 -0
  99. data/frontends/default/views/update_column.js.erb +16 -0
  100. data/frontends/default/views/update_row.js.erb +1 -0
  101. data/lib/active_scaffold/actions/common_search.rb +25 -0
  102. data/lib/active_scaffold/actions/core.rb +197 -0
  103. data/lib/active_scaffold/actions/create.rb +148 -0
  104. data/lib/active_scaffold/actions/delete.rb +76 -0
  105. data/lib/active_scaffold/actions/field_search.rb +82 -0
  106. data/lib/active_scaffold/actions/list.rb +196 -0
  107. data/lib/active_scaffold/actions/mark.rb +75 -0
  108. data/lib/active_scaffold/actions/nested.rb +245 -0
  109. data/lib/active_scaffold/actions/search.rb +48 -0
  110. data/lib/active_scaffold/actions/show.rb +61 -0
  111. data/lib/active_scaffold/actions/subform.rb +23 -0
  112. data/lib/active_scaffold/actions/update.rb +150 -0
  113. data/lib/active_scaffold/active_record_permissions.rb +136 -0
  114. data/lib/active_scaffold/attribute_params.rb +208 -0
  115. data/lib/active_scaffold/bridges/ancestry/ancestry_bridge.rb +39 -0
  116. data/lib/active_scaffold/bridges/ancestry.rb +5 -0
  117. data/lib/active_scaffold/bridges/calendar_date_select/as_cds_bridge.rb +67 -0
  118. data/lib/active_scaffold/bridges/calendar_date_select.rb +24 -0
  119. data/lib/active_scaffold/bridges/cancan/cancan_bridge.rb +107 -0
  120. data/lib/active_scaffold/bridges/cancan.rb +15 -0
  121. data/lib/active_scaffold/bridges/carrierwave/carrierwave_bridge.rb +31 -0
  122. data/lib/active_scaffold/bridges/carrierwave/carrierwave_bridge_helpers.rb +10 -0
  123. data/lib/active_scaffold/bridges/carrierwave/form_ui.rb +45 -0
  124. data/lib/active_scaffold/bridges/carrierwave/list_ui.rb +17 -0
  125. data/lib/active_scaffold/bridges/carrierwave.rb +12 -0
  126. data/lib/active_scaffold/bridges/country_helper/country_helper_bridge.rb +358 -0
  127. data/lib/active_scaffold/bridges/country_helper.rb +9 -0
  128. data/lib/active_scaffold/bridges/date_picker/ext.rb +45 -0
  129. data/lib/active_scaffold/bridges/date_picker/helper.rb +180 -0
  130. data/lib/active_scaffold/bridges/date_picker.rb +23 -0
  131. data/lib/active_scaffold/bridges/dragonfly/dragonfly_bridge.rb +34 -0
  132. data/lib/active_scaffold/bridges/dragonfly/dragonfly_bridge_helpers.rb +10 -0
  133. data/lib/active_scaffold/bridges/dragonfly/form_ui.rb +27 -0
  134. data/lib/active_scaffold/bridges/dragonfly/list_ui.rb +16 -0
  135. data/lib/active_scaffold/bridges/dragonfly.rb +9 -0
  136. data/lib/active_scaffold/bridges/file_column/as_file_column_bridge.rb +48 -0
  137. data/lib/active_scaffold/bridges/file_column/file_column_helpers.rb +57 -0
  138. data/lib/active_scaffold/bridges/file_column/form_ui.rb +34 -0
  139. data/lib/active_scaffold/bridges/file_column/list_ui.rb +26 -0
  140. data/lib/active_scaffold/bridges/file_column/test/functional/file_column_keep_test.rb +43 -0
  141. data/lib/active_scaffold/bridges/file_column/test/mock_model.rb +9 -0
  142. data/lib/active_scaffold/bridges/file_column/test/test_helper.rb +15 -0
  143. data/lib/active_scaffold/bridges/file_column.rb +11 -0
  144. data/lib/active_scaffold/bridges/paperclip/form_ui.rb +27 -0
  145. data/lib/active_scaffold/bridges/paperclip/list_ui.rb +16 -0
  146. data/lib/active_scaffold/bridges/paperclip/paperclip_bridge.rb +36 -0
  147. data/lib/active_scaffold/bridges/paperclip/paperclip_bridge_helpers.rb +24 -0
  148. data/lib/active_scaffold/bridges/paperclip.rb +12 -0
  149. data/lib/active_scaffold/bridges/record_select/helpers.rb +86 -0
  150. data/lib/active_scaffold/bridges/record_select.rb +11 -0
  151. data/lib/active_scaffold/bridges/semantic_attributes/column.rb +20 -0
  152. data/lib/active_scaffold/bridges/semantic_attributes.rb +5 -0
  153. data/lib/active_scaffold/bridges/shared/date_bridge.rb +209 -0
  154. data/lib/active_scaffold/bridges/tiny_mce/helpers.rb +46 -0
  155. data/lib/active_scaffold/bridges/tiny_mce.rb +17 -0
  156. data/lib/active_scaffold/bridges.rb +61 -0
  157. data/lib/active_scaffold/config/base.rb +71 -0
  158. data/lib/active_scaffold/config/core.rb +219 -0
  159. data/lib/active_scaffold/config/create.rb +44 -0
  160. data/lib/active_scaffold/config/delete.rb +33 -0
  161. data/lib/active_scaffold/config/field_search.rb +76 -0
  162. data/lib/active_scaffold/config/form.rb +48 -0
  163. data/lib/active_scaffold/config/list.rb +196 -0
  164. data/lib/active_scaffold/config/mark.rb +35 -0
  165. data/lib/active_scaffold/config/nested.rb +42 -0
  166. data/lib/active_scaffold/config/search.rb +73 -0
  167. data/lib/active_scaffold/config/show.rb +32 -0
  168. data/lib/active_scaffold/config/subform.rb +35 -0
  169. data/lib/active_scaffold/config/update.rb +41 -0
  170. data/lib/active_scaffold/configurable.rb +29 -0
  171. data/lib/active_scaffold/constraints.rb +170 -0
  172. data/lib/active_scaffold/data_structures/action_columns.rb +140 -0
  173. data/lib/active_scaffold/data_structures/action_link.rb +179 -0
  174. data/lib/active_scaffold/data_structures/action_links.rb +185 -0
  175. data/lib/active_scaffold/data_structures/actions.rb +45 -0
  176. data/lib/active_scaffold/data_structures/bridge.rb +22 -0
  177. data/lib/active_scaffold/data_structures/column.rb +389 -0
  178. data/lib/active_scaffold/data_structures/columns.rb +75 -0
  179. data/lib/active_scaffold/data_structures/error_message.rb +24 -0
  180. data/lib/active_scaffold/data_structures/nested_info.rb +130 -0
  181. data/lib/active_scaffold/data_structures/set.rb +57 -0
  182. data/lib/active_scaffold/data_structures/sorting.rb +172 -0
  183. data/lib/active_scaffold/engine.rb +4 -0
  184. data/lib/active_scaffold/extensions/action_controller_rendering.rb +22 -0
  185. data/lib/active_scaffold/extensions/action_view_rendering.rb +115 -0
  186. data/lib/active_scaffold/extensions/active_record_offset.rb +12 -0
  187. data/lib/active_scaffold/extensions/array.rb +7 -0
  188. data/lib/active_scaffold/extensions/cache_association.rb +16 -0
  189. data/lib/active_scaffold/extensions/localize.rb +10 -0
  190. data/lib/active_scaffold/extensions/name_option_for_datetime.rb +12 -0
  191. data/lib/active_scaffold/extensions/nil_id_in_url_params.rb +7 -0
  192. data/lib/active_scaffold/extensions/paginator_extensions.rb +26 -0
  193. data/lib/active_scaffold/extensions/routing_mapper.rb +48 -0
  194. data/lib/active_scaffold/extensions/to_label.rb +8 -0
  195. data/lib/active_scaffold/extensions/unsaved_associated.rb +60 -0
  196. data/lib/active_scaffold/extensions/unsaved_record.rb +20 -0
  197. data/lib/active_scaffold/extensions/usa_state.rb +46 -0
  198. data/lib/active_scaffold/finder.rb +372 -0
  199. data/lib/active_scaffold/helpers/association_helpers.rb +48 -0
  200. data/lib/active_scaffold/helpers/controller_helpers.rb +88 -0
  201. data/lib/active_scaffold/helpers/form_column_helpers.rb +321 -0
  202. data/lib/active_scaffold/helpers/human_condition_helpers.rb +62 -0
  203. data/lib/active_scaffold/helpers/id_helpers.rb +127 -0
  204. data/lib/active_scaffold/helpers/list_column_helpers.rb +340 -0
  205. data/lib/active_scaffold/helpers/pagination_helpers.rb +55 -0
  206. data/lib/active_scaffold/helpers/search_column_helpers.rb +267 -0
  207. data/lib/active_scaffold/helpers/show_column_helpers.rb +50 -0
  208. data/lib/active_scaffold/helpers/view_helpers.rb +342 -0
  209. data/lib/active_scaffold/marked_model.rb +38 -0
  210. data/lib/active_scaffold/paginator.rb +136 -0
  211. data/lib/active_scaffold/responds_to_parent.rb +70 -0
  212. data/lib/active_scaffold/version.rb +9 -0
  213. data/lib/active_scaffold.rb +368 -0
  214. data/lib/active_scaffold_env.rb +11 -0
  215. data/lib/generators/active_scaffold/USAGE +29 -0
  216. data/lib/generators/active_scaffold/active_scaffold_generator.rb +20 -0
  217. data/lib/generators/active_scaffold_controller/USAGE +19 -0
  218. data/lib/generators/active_scaffold_controller/active_scaffold_controller_generator.rb +29 -0
  219. data/lib/generators/active_scaffold_controller/templates/controller.rb +4 -0
  220. data/lib/generators/active_scaffold_controller/templates/helper.rb +2 -0
  221. data/public/blank.html +33 -0
  222. data/shoulda_macros/macros.rb +136 -0
  223. data/test/bridges/active_scaffold_dependent_protect_test.rb +34 -0
  224. data/test/bridges/bridge_test.rb +90 -0
  225. data/test/bridges/company.rb +81 -0
  226. data/test/bridges/paperclip_test.rb +68 -0
  227. data/test/bridges/tiny_mce_test.rb +27 -0
  228. data/test/bridges/unobtrusive_date_picker_test.rb +49 -0
  229. data/test/bridges/validation_reflection_test.rb +57 -0
  230. data/test/config/base_test.rb +15 -0
  231. data/test/config/core_test.rb +58 -0
  232. data/test/config/create_test.rb +58 -0
  233. data/test/config/delete_test.rb +33 -0
  234. data/test/config/field_search_test.rb +47 -0
  235. data/test/config/list_test.rb +129 -0
  236. data/test/config/nested_test.rb +62 -0
  237. data/test/config/search_test.rb +60 -0
  238. data/test/config/show_test.rb +43 -0
  239. data/test/config/subform_test.rb +17 -0
  240. data/test/config/update_test.rb +40 -0
  241. data/test/const_mocker.rb +36 -0
  242. data/test/data_structures/action_columns_test.rb +113 -0
  243. data/test/data_structures/action_link_test.rb +78 -0
  244. data/test/data_structures/action_links_test.rb +78 -0
  245. data/test/data_structures/actions_test.rb +25 -0
  246. data/test/data_structures/association_column_test.rb +42 -0
  247. data/test/data_structures/column_test.rb +185 -0
  248. data/test/data_structures/columns_test.rb +69 -0
  249. data/test/data_structures/error_message_test.rb +28 -0
  250. data/test/data_structures/set_test.rb +86 -0
  251. data/test/data_structures/sorting_test.rb +126 -0
  252. data/test/data_structures/standard_column_test.rb +24 -0
  253. data/test/data_structures/virtual_column_test.rb +23 -0
  254. data/test/extensions/active_record_test.rb +45 -0
  255. data/test/extensions/array_test.rb +12 -0
  256. data/test/helpers/form_column_helpers_test.rb +31 -0
  257. data/test/helpers/list_column_helpers_test.rb +42 -0
  258. data/test/helpers/pagination_helpers_test.rb +59 -0
  259. data/test/misc/active_record_permissions_test.rb +154 -0
  260. data/test/misc/attribute_params_test.rb +146 -0
  261. data/test/misc/configurable_test.rb +96 -0
  262. data/test/misc/constraints_test.rb +193 -0
  263. data/test/misc/finder_test.rb +92 -0
  264. data/test/misc/lang_test.rb +11 -0
  265. data/test/mock_app/app/controllers/application_controller.rb +10 -0
  266. data/test/mock_app/app/helpers/application_helper.rb +3 -0
  267. data/test/mock_app/config/boot.rb +110 -0
  268. data/test/mock_app/config/database.yml +16 -0
  269. data/test/mock_app/config/environment.rb +43 -0
  270. data/test/mock_app/config/environments/development.rb +17 -0
  271. data/test/mock_app/config/environments/production.rb +28 -0
  272. data/test/mock_app/config/environments/test.rb +28 -0
  273. data/test/mock_app/config/initializers/backtrace_silencers.rb +7 -0
  274. data/test/mock_app/config/initializers/inflections.rb +10 -0
  275. data/test/mock_app/config/initializers/mime_types.rb +5 -0
  276. data/test/mock_app/config/initializers/new_rails_defaults.rb +19 -0
  277. data/test/mock_app/config/initializers/session_store.rb +15 -0
  278. data/test/mock_app/config/locales/en.yml +5 -0
  279. data/test/mock_app/config/routes.rb +43 -0
  280. data/test/mock_app/db/test.sqlite3 +1 -0
  281. data/test/mock_app/public/blank.html +33 -0
  282. data/test/mock_app/public/images/active_scaffold/DO_NOT_EDIT +2 -0
  283. data/test/mock_app/public/images/active_scaffold/default/add.gif +0 -0
  284. data/test/mock_app/public/images/active_scaffold/default/arrow_down.gif +0 -0
  285. data/test/mock_app/public/images/active_scaffold/default/arrow_up.gif +0 -0
  286. data/test/mock_app/public/images/active_scaffold/default/close.gif +0 -0
  287. data/test/mock_app/public/images/active_scaffold/default/cross.png +0 -0
  288. data/test/mock_app/public/images/active_scaffold/default/indicator-small.gif +0 -0
  289. data/test/mock_app/public/images/active_scaffold/default/indicator.gif +0 -0
  290. data/test/mock_app/public/images/active_scaffold/default/magnifier.png +0 -0
  291. data/test/mock_app/public/javascripts/active_scaffold/DO_NOT_EDIT +2 -0
  292. data/test/mock_app/public/javascripts/active_scaffold/default/active_scaffold.js +532 -0
  293. data/test/mock_app/public/javascripts/active_scaffold/default/dhtml_history.js +867 -0
  294. data/test/mock_app/public/javascripts/active_scaffold/default/form_enhancements.js +117 -0
  295. data/test/mock_app/public/javascripts/active_scaffold/default/rico_corner.js +370 -0
  296. data/test/mock_app/public/stylesheets/active_scaffold/DO_NOT_EDIT +2 -0
  297. data/test/mock_app/public/stylesheets/active_scaffold/default/stylesheet-ie.css +35 -0
  298. data/test/mock_app/public/stylesheets/active_scaffold/default/stylesheet.css +848 -0
  299. data/test/model_stub.rb +55 -0
  300. data/test/run_all.rb +8 -0
  301. data/test/test_helper.rb +39 -0
  302. data/vendor/assets/images/ui-bg_diagonals-thick_18_b81900_40x40.png +0 -0
  303. data/vendor/assets/images/ui-bg_diagonals-thick_20_666666_40x40.png +0 -0
  304. data/vendor/assets/images/ui-bg_flat_10_000000_40x100.png +0 -0
  305. data/vendor/assets/images/ui-bg_glass_100_f6f6f6_1x400.png +0 -0
  306. data/vendor/assets/images/ui-bg_glass_100_fdf5ce_1x400.png +0 -0
  307. data/vendor/assets/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
  308. data/vendor/assets/images/ui-bg_gloss-wave_35_f6a828_500x100.png +0 -0
  309. data/vendor/assets/images/ui-bg_highlight-soft_100_eeeeee_1x100.png +0 -0
  310. data/vendor/assets/images/ui-bg_highlight-soft_75_ffe45c_1x100.png +0 -0
  311. data/vendor/assets/images/ui-icons_222222_256x240.png +0 -0
  312. data/vendor/assets/images/ui-icons_228ef1_256x240.png +0 -0
  313. data/vendor/assets/images/ui-icons_ef8c08_256x240.png +0 -0
  314. data/vendor/assets/images/ui-icons_ffd27a_256x240.png +0 -0
  315. data/vendor/assets/images/ui-icons_ffffff_256x240.png +0 -0
  316. data/vendor/assets/javascripts/jquery-ui-timepicker-addon.js +1276 -0
  317. data/vendor/assets/stylesheets/jquery-ui.css +568 -0
  318. metadata +502 -0
@@ -0,0 +1,129 @@
1
+ require File.join(File.dirname(__FILE__), '../test_helper.rb')
2
+
3
+ class Config::ListTest < Test::Unit::TestCase
4
+ def setup
5
+ @config = ActiveScaffold::Config::Core.new :model_stub
6
+ end
7
+
8
+ def test_label
9
+ I18n.backend.store_translations :en, :active_scaffold => {:resource => {:one => 'Resource', :other => 'Resources'}}
10
+ @config.list.label = :resource
11
+ assert_equal 'Resources', @config.list.label
12
+ label = 'monkeys'
13
+ @config.list.label = label
14
+ assert_equal label, @config.list.label
15
+ end
16
+
17
+ def test_default_options
18
+ assert_equal 15, @config.list.per_page
19
+ assert_equal 2, @config.list.page_links_window
20
+ assert_equal '-', @config.list.empty_field_text
21
+ assert_equal ', ', @config.list.association_join_text
22
+ assert_equal true, @config.list.pagination
23
+ assert_equal 'search', @config.list.search_partial
24
+ assert_equal :no_entries, @config.list.no_entries_message
25
+ assert_equal :filtered, @config.list.filtered_message
26
+ assert !@config.list.always_show_create
27
+ assert !@config.list.always_show_search
28
+ assert !@config.list.mark_records
29
+ assert @config.list.count_includes.nil?
30
+ assert_equal 'ModelStubs', @config.list.label
31
+ assert @config.list.sorting.sorts_on?(:id)
32
+ assert_equal 'ASC', @config.list.sorting.direction_of(:id)
33
+ end
34
+
35
+ def test_empty_field_text
36
+ @config.list.empty_field_text = '(missing)'
37
+ assert_equal '(missing)', @config.list.empty_field_text
38
+ end
39
+
40
+ def test_association_join_text
41
+ @config.list.association_join_text = '<br/>'
42
+ assert_equal '<br/>', @config.list.association_join_text
43
+ end
44
+
45
+ def test_no_entries
46
+ @config.list.no_entries_message = 'No items'
47
+ assert_equal 'No items', @config.list.no_entries_message
48
+ end
49
+
50
+ def test_filtered_message
51
+ @config.list.filtered_message = 'filtered items'
52
+ assert_equal 'filtered items', @config.list.filtered_message
53
+ end
54
+
55
+ def test_pagination
56
+ @config.list.pagination = :infinite
57
+ assert_equal :infinite, @config.list.pagination
58
+ @config.list.pagination = false
59
+ assert !@config.list.pagination
60
+ end
61
+
62
+ def test_sorting
63
+ @config.list.sorting = {:a => :desc}
64
+ assert @config.list.sorting.sorts_on?(:a)
65
+ assert_equal 'DESC', @config.list.sorting.direction_of(:a)
66
+ assert !@config.list.sorting.sorts_on?(:id)
67
+
68
+ @config.list.sorting = [{:a => :asc}, {:b => :desc}]
69
+ assert @config.list.sorting.sorts_on?(:a)
70
+ assert_equal 'ASC', @config.list.sorting.direction_of(:a)
71
+ assert @config.list.sorting.sorts_on?(:b)
72
+ assert_equal 'DESC', @config.list.sorting.direction_of(:b)
73
+ assert !@config.list.sorting.sorts_on?(:id)
74
+ end
75
+
76
+ def test_mark_records
77
+ @config.list.mark_records = true
78
+ assert @config.list.mark_records
79
+ end
80
+
81
+ def test_per_page
82
+ per_page = 35
83
+ @config.list.per_page = per_page
84
+ assert_equal per_page, @config.list.per_page
85
+ end
86
+
87
+ def test_page_links_window
88
+ page_links_window = 3
89
+ @config.list.page_links_window = page_links_window
90
+ assert_equal page_links_window, @config.list.page_links_window
91
+ end
92
+
93
+ def test_always_show_create
94
+ always_show_create = true
95
+ @config.list.always_show_create = always_show_create
96
+ assert_equal always_show_create, @config.list.always_show_create
97
+ end
98
+
99
+ def test_always_show_create_when_create_is_not_enabled
100
+ always_show_create = true
101
+ @config.list.always_show_create = always_show_create
102
+ @config.actions.exclude :create
103
+ assert_equal false, @config.list.always_show_create
104
+ end
105
+
106
+ def test_always_show_search
107
+ @config.list.always_show_search = true
108
+ assert @config.list.always_show_search
109
+ assert_equal 'search', @config.list.search_partial
110
+ end
111
+
112
+ def test_always_show_search_when_search_is_not_enabled
113
+ @config.list.always_show_search = true
114
+ @config.actions.exclude :search
115
+ assert_equal false, @config.list.always_show_search
116
+ end
117
+
118
+ def test_always_show_search_when_field_search
119
+ @config.list.always_show_search = true
120
+ @config.actions.swap :search, :field_search
121
+ assert @config.list.always_show_search
122
+ assert_equal 'field_search', @config.list.search_partial
123
+ end
124
+
125
+ def test_count_includes
126
+ @config.list.count_includes = [:assoc_1, :assoc_2]
127
+ assert_equal [:assoc_1, :assoc_2], @config.list.count_includes
128
+ end
129
+ end
@@ -0,0 +1,62 @@
1
+ require File.join(File.dirname(__FILE__), '../test_helper.rb')
2
+
3
+ class Config::NestedTest < Test::Unit::TestCase
4
+ def setup
5
+ @config = ActiveScaffold::Config::Core.new :model_stub
6
+ end
7
+
8
+ def test_default_options
9
+ assert !@config.nested.shallow_delete
10
+ assert_equal 'Add Existing ModelStub', @config.nested.label
11
+ end
12
+
13
+ def test_label
14
+ label = 'nested monkeys'
15
+ @config.nested.label = label
16
+ assert_equal label, @config.nested.label
17
+ I18n.backend.store_translations :en, :active_scaffold => {:create_model => 'Add new %{model}'}
18
+ @config.nested.label = :create_model
19
+ assert_equal 'Add new ModelStub', @config.nested.label
20
+ end
21
+
22
+ def test_shallow_delete
23
+ @config.nested.shallow_delete = true
24
+ assert @config.nested.shallow_delete
25
+ end
26
+
27
+ def test_add_link_deprecation
28
+ ActiveSupport::Deprecation.silence { @config.nested.add_link :custom_link, [:assoc_1, :assoc_2] }
29
+ link = @config.action_links['nested']
30
+ assert_equal 'Custom Link', link.label
31
+ assert_equal 'nested', link.action
32
+ assert_equal :after, link.position
33
+ assert !link.page?
34
+ assert !link.popup?
35
+ assert !link.confirm?
36
+ assert link.inline?
37
+ assert_equal :assoc_1, link.parameters[:associations]
38
+ assert_equal 'assoc_1', link.html_options[:class]
39
+ assert_equal :get, link.method
40
+ assert_equal :member, link.type
41
+ assert_equal :read, link.crud_type
42
+ assert_equal :nested_authorized?, link.security_method
43
+ end
44
+
45
+ def test_add_link
46
+ @config.nested.add_link :custom_link, :assoc_1
47
+ link = @config.action_links['nested']
48
+ assert_equal 'Custom Link', link.label
49
+ assert_equal 'nested', link.action
50
+ assert_equal :after, link.position
51
+ assert !link.page?
52
+ assert !link.popup?
53
+ assert !link.confirm?
54
+ assert link.inline?
55
+ assert_equal :assoc_1, link.parameters[:associations]
56
+ assert_equal 'assoc_1', link.html_options[:class]
57
+ assert_equal :get, link.method
58
+ assert_equal :member, link.type
59
+ assert_equal :read, link.crud_type
60
+ assert_equal :nested_authorized?, link.security_method
61
+ end
62
+ end
@@ -0,0 +1,60 @@
1
+ require File.join(File.dirname(__FILE__), '../test_helper.rb')
2
+
3
+ class Config::SearchTest < Test::Unit::TestCase
4
+ def setup
5
+ @config = ActiveScaffold::Config::Core.new :model_stub
6
+ @default_link = @config.search.link
7
+ end
8
+
9
+ def teardown
10
+ @config.search.link = @default_link
11
+ end
12
+
13
+ def test_default_options
14
+ assert_equal :full, @config.search.text_search
15
+ assert !@config.search.live?
16
+ assert_equal ' ', @config.search.split_terms
17
+ end
18
+
19
+ def test_text_search
20
+ @config.search.text_search = :start
21
+ assert_equal :start, @config.search.text_search
22
+ @config.search.text_search = :end
23
+ assert_equal :end, @config.search.text_search
24
+ @config.search.text_search = false
25
+ assert !@config.search.text_search
26
+ end
27
+
28
+ def test_live
29
+ @config.search.live = true
30
+ assert @config.search.live?
31
+ end
32
+
33
+ def test_split_terms
34
+ @config.search.split_terms = nil
35
+ assert @config.search.split_terms.nil?
36
+ @config.search.split_terms = ','
37
+ assert_equal ',', @config.search.split_terms
38
+ end
39
+
40
+ def test_link_defaults
41
+ link = @config.search.link
42
+ assert !link.page?
43
+ assert !link.popup?
44
+ assert !link.confirm?
45
+ assert_equal "show_search", link.action
46
+ assert_equal "Search", link.label
47
+ assert link.inline?
48
+ blank = {}
49
+ assert_equal blank, link.html_options
50
+ assert_equal :get, link.method
51
+ assert_equal :collection, link.type
52
+ assert_equal :read, link.crud_type
53
+ assert_equal :search_authorized?, link.security_method
54
+ end
55
+
56
+ def test_setting_link
57
+ @config.search.link = ActiveScaffold::DataStructures::ActionLink.new('update', :label => 'Monkeys')
58
+ assert_not_equal(@default_link, @config.search.link)
59
+ end
60
+ end
@@ -0,0 +1,43 @@
1
+ require File.join(File.dirname(__FILE__), '../test_helper.rb')
2
+
3
+ class Config::ShowTest < Test::Unit::TestCase
4
+ def setup
5
+ @config = ActiveScaffold::Config::Core.new :model_stub
6
+ @default_link = @config.show.link
7
+ end
8
+
9
+ def teardown
10
+ @config.show.link = @default_link
11
+ end
12
+
13
+ def test_link_defaults
14
+ link = @config.show.link
15
+ assert !link.page?
16
+ assert !link.popup?
17
+ assert !link.confirm?
18
+ assert_equal "show", link.action
19
+ assert_equal "Show", link.label
20
+ assert link.inline?
21
+ blank = {}
22
+ assert_equal blank, link.html_options
23
+ assert_equal :get, link.method
24
+ assert_equal :member, link.type
25
+ assert_equal :read, link.crud_type
26
+ assert_equal :show_authorized?, link.security_method
27
+ end
28
+
29
+ def test_setting_link
30
+ @config.show.link = ActiveScaffold::DataStructures::ActionLink.new('update', :label => 'Monkeys')
31
+ assert_not_equal(@default_link, @config.show.link)
32
+ end
33
+
34
+ def test_label
35
+ label = 'show monkeys'
36
+ @config.show.label = label
37
+ assert_equal label, @config.show.label
38
+ I18n.backend.store_translations :en, :active_scaffold => {:view_model => 'View %{model}'}
39
+ @config.show.label = :view_model
40
+ assert_equal 'View ModelStub', @config.show.label
41
+ assert_equal 'View record', @config.show.label('record')
42
+ end
43
+ end
@@ -0,0 +1,17 @@
1
+ require File.join(File.dirname(__FILE__), '../test_helper.rb')
2
+
3
+ class Config::SubformTest < Test::Unit::TestCase
4
+ def setup
5
+ @config = ActiveScaffold::Config::Core.new :model_stub
6
+ end
7
+
8
+ def test_defaults
9
+ assert_equal :horizontal, @config.subform.layout
10
+ end
11
+
12
+ def test_setting_layout
13
+ layout = :vertical
14
+ @config.subform.layout = layout
15
+ assert_equal layout, @config.subform.layout
16
+ end
17
+ end
@@ -0,0 +1,40 @@
1
+ require File.join(File.dirname(__FILE__), '../test_helper.rb')
2
+
3
+ class Config::UpdateTest < Test::Unit::TestCase
4
+ def setup
5
+ @config = ActiveScaffold::Config::Core.new :model_stub
6
+ end
7
+
8
+ def test__params_for_columns__returns_all_params
9
+ @config._load_action_columns
10
+ @config.columns[:a].params.add :keep_a, :a_temp
11
+ assert @config.columns[:a].params.include?(:keep_a)
12
+ assert @config.columns[:a].params.include?(:a_temp)
13
+ end
14
+
15
+ def test_default_options
16
+ assert !@config.update.persistent
17
+ assert !@config.update.nested_links
18
+ assert_equal 'Update ModelStub', @config.update.label
19
+ end
20
+
21
+ def test_persistent
22
+ @config.update.persistent = true
23
+ assert @config.update.persistent
24
+ end
25
+
26
+ def test_nested_links
27
+ @config.update.nested_links = true
28
+ assert @config.update.nested_links
29
+ end
30
+
31
+ def test_label
32
+ label = 'update new monkeys'
33
+ @config.update.label = label
34
+ assert_equal label, @config.update.label
35
+ I18n.backend.store_translations :en, :active_scaffold => {:change_model => 'Change %{model}'}
36
+ @config.update.label = :change_model
37
+ assert_equal 'Change ModelStub', @config.update.label
38
+ assert_equal 'Change record', @config.update.label('record')
39
+ end
40
+ end
@@ -0,0 +1,36 @@
1
+ class ConstMocker
2
+ def initialize(*const_names)
3
+ @const_names = const_names
4
+ @const_states = {}
5
+ @const_names.each{|const_name|
6
+ @const_states[const_name] = Object.const_defined?(const_name) ? Object.const_get(const_name) : nil
7
+ }
8
+ end
9
+
10
+ def remove
11
+ @const_names.each{|const_name|
12
+ Object.send :remove_const, const_name if Object.const_defined?(const_name)
13
+ }
14
+ end
15
+
16
+ def declare
17
+ @const_names.each{|const_name|
18
+ Object.class_eval "class #{const_name}; end;" unless Object.const_defined?(const_name)
19
+ }
20
+ end
21
+
22
+ def restore
23
+ remove
24
+
25
+ @const_states.each_pair{|const_name, const|
26
+ Object.const_set const_name, const if const
27
+ }
28
+ end
29
+
30
+ def self.mock(*const_names, &block)
31
+ cm = new(*const_names)
32
+ yield(cm)
33
+ cm.restore
34
+ true
35
+ end
36
+ end
@@ -0,0 +1,113 @@
1
+ require File.join(File.dirname(__FILE__), '../test_helper.rb')
2
+ # require 'test/model_stub'
3
+ require File.join(File.dirname(__FILE__), '../../lib/active_scaffold/data_structures/set.rb')
4
+
5
+ class ActionColumnsTest < Test::Unit::TestCase
6
+ def setup
7
+ @columns = ActiveScaffold::DataStructures::ActionColumns.new([:a, :b])
8
+ end
9
+
10
+ def test_label
11
+ assert_nothing_raised do
12
+ @columns.label = 'foo';
13
+ end
14
+ assert @columns.label == 'foo'
15
+ end
16
+
17
+ def test_initialization
18
+ assert @columns.include?(:a)
19
+ assert @columns.include?(:b)
20
+ assert !@columns.include?(:c)
21
+ end
22
+
23
+ def test_exclude
24
+ # exclude with a symbol
25
+ assert @columns.include?(:b)
26
+ @columns.exclude :b
27
+ assert !@columns.include?(:b)
28
+
29
+ # exclude with a string
30
+ assert @columns.include?(:a)
31
+ @columns.exclude 'a'
32
+ assert !@columns.include?(:a)
33
+ end
34
+
35
+ def test_exclude_array
36
+ # exclude with a symbol
37
+ assert @columns.include?(:b)
38
+ @columns.exclude [:a, :b]
39
+ assert !@columns.include?(:b)
40
+ assert !@columns.include?(:a)
41
+ end
42
+
43
+ def test_add
44
+ # try adding a simple column using a string
45
+ assert !@columns.include?(:c)
46
+ @columns.add 'c'
47
+ assert @columns.include?(:c)
48
+
49
+ # try adding a simple column using a symbol
50
+ assert !@columns.include?(:d)
51
+ @columns.add :d
52
+ assert @columns.include?(:d)
53
+
54
+ # test that << also adds
55
+ assert !@columns.include?(:e)
56
+ @columns << :e
57
+ assert @columns.include?(:e)
58
+
59
+ # try adding an array of columns
60
+ assert !@columns.include?(:f)
61
+ @columns.add [:f, :g]
62
+ assert @columns.include?(:f)
63
+ assert @columns.include?(:g)
64
+
65
+ end
66
+
67
+ def test_length
68
+ assert_equal 2, @columns.length
69
+ end
70
+
71
+ def test_add_subgroup
72
+ # first, use @columns.add directly
73
+ @c2 = ActiveScaffold::DataStructures::ActionColumns.new
74
+ @columns.add @c2
75
+ assert @columns.any? { |c| c == @c2 }
76
+
77
+ # then use the shortcut
78
+ @columns.add_subgroup 'foo' do
79
+ end
80
+ assert @columns.any? { |c| c.respond_to? :label and c.label == 'foo' }
81
+ end
82
+
83
+ def test_block_config
84
+ @columns.configure do |config|
85
+ # we may use the config argument
86
+ config.add :c
87
+ # or we may not
88
+ exclude :b
89
+ add_subgroup 'my subgroup' do
90
+ add :e
91
+ end
92
+ end
93
+
94
+ assert @columns.include?(:c)
95
+ assert !@columns.include?(:b)
96
+ @columns.each { |c|
97
+ next unless c.is_a? ActiveScaffold::DataStructures::Columns
98
+ assert c.include?(:e)
99
+ assert_equal 'my subgroup', c.name
100
+ }
101
+ end
102
+
103
+ def test_include
104
+ @columns.add_subgroup 'foo' do
105
+ add :c
106
+ end
107
+
108
+ assert @columns.include?(:a)
109
+ assert @columns.include?(:b)
110
+ assert @columns.include?(:c)
111
+ assert !@columns.include?(:d)
112
+ end
113
+ end
@@ -0,0 +1,78 @@
1
+ require File.join(File.dirname(__FILE__), '../test_helper.rb')
2
+
3
+ class ActionLinkTest < Test::Unit::TestCase
4
+ def setup
5
+ @link = ActiveScaffold::DataStructures::ActionLink.new('foo')
6
+ end
7
+
8
+ def test_simple_attributes
9
+ assert_equal 'foo', @link.action
10
+ @link.action = 'bar'
11
+ assert_equal 'bar', @link.action
12
+
13
+ hash = {:a => :b}
14
+ @link.parameters = hash
15
+ assert_equal hash, @link.parameters
16
+
17
+ @link.label = 'hello world'
18
+ assert_equal 'hello world', @link.label
19
+
20
+ assert !@link.confirm
21
+ @link.confirm = true
22
+ assert @link.confirm
23
+
24
+ assert_equal 'bar_authorized?', @link.security_method
25
+
26
+ assert_equal false, @link.security_method_set?
27
+ @link.security_method = 'blueberry_pie'
28
+ assert_equal true, @link.security_method_set?
29
+ assert_equal 'blueberry_pie', @link.security_method
30
+
31
+ @link.type = :collection
32
+ assert_equal :collection, @link.type
33
+ @link.type = :member
34
+ assert_equal :member, @link.type
35
+
36
+ assert_equal :get, @link.method
37
+ @link.method = :put
38
+ assert_equal :put, @link.method
39
+ end
40
+
41
+ def test_position
42
+ @link.position = true
43
+
44
+ @link.type = :collection
45
+ assert_equal :top, @link.position
46
+
47
+ @link.type = :member
48
+ assert_equal :replace, @link.position
49
+
50
+ @link.position = :before
51
+ assert_equal :before, @link.position
52
+
53
+ @link.position = false
54
+ assert_equal false, @link.position
55
+ end
56
+
57
+ def test_presentation_style
58
+ # default
59
+ assert @link.inline?
60
+ assert !@link.popup?
61
+ assert !@link.page?
62
+
63
+ @link.popup = true
64
+ assert !@link.inline?
65
+ assert @link.popup?
66
+ assert !@link.page?
67
+
68
+ @link.page = true
69
+ assert !@link.inline?
70
+ assert !@link.popup?
71
+ assert @link.page?
72
+
73
+ @link.inline = true
74
+ assert @link.inline?
75
+ assert !@link.popup?
76
+ assert !@link.page?
77
+ end
78
+ end
@@ -0,0 +1,78 @@
1
+ require File.join(File.dirname(__FILE__), '../test_helper.rb')
2
+
3
+ class ActionLinksTest < Test::Unit::TestCase
4
+ def setup
5
+ @links = ActiveScaffold::DataStructures::ActionLinks.new
6
+ end
7
+
8
+ def test_add_and_find
9
+ # test adding with a shortcut
10
+ @links.add 'foo/bar'
11
+
12
+ assert_equal 1, @links.find_all{true}.size
13
+ assert_equal 'foo/bar', @links.find_all{true}[0].action
14
+ assert_equal 'foo/bar', @links['foo/bar'].action
15
+
16
+ # test adding an ActionLink object directly
17
+ @links.add ActiveScaffold::DataStructures::ActionLink.new('hello/world')
18
+
19
+ assert_equal 2, @links.find_all{true}.size
20
+
21
+ # test the << alias
22
+ @links << 'a/b'
23
+
24
+ assert_equal 3, @links.find_all{true}.size
25
+ end
26
+
27
+ def test_array_access
28
+ @link1 = ActiveScaffold::DataStructures::ActionLink.new 'foo/bar'
29
+ @link2 = ActiveScaffold::DataStructures::ActionLink.new 'hello_world'
30
+
31
+ @links.add @link1
32
+ @links.add @link2
33
+
34
+ assert_equal @link1, @links[@link1.action]
35
+ assert_equal @link2, @links[@link2.action]
36
+ end
37
+
38
+ def test_empty
39
+ assert @links.empty?
40
+ @links.add 'a'
41
+ assert !@links.empty?
42
+ end
43
+
44
+ def test_cloning
45
+ @links.add 'foo/bar'
46
+ @links_copy = @links.clone
47
+
48
+ assert !@links.equal?(@links_copy)
49
+ assert !@links['foo/bar'].equal?(@links_copy['foo/bar'])
50
+ end
51
+
52
+ def test_each
53
+ @links.add 'foo', :type => :collection
54
+ @links.add 'bar', :type => :member
55
+
56
+ @links.each :collection do |link|
57
+ assert_equal 'foo', link.action
58
+ end
59
+ @links.each :member do |link|
60
+ assert_equal 'bar', link.action
61
+ end
62
+ end
63
+
64
+ def test_delete
65
+ @links.add 'foo'
66
+ @links.add 'bar'
67
+
68
+ @links.delete :foo
69
+ assert @links['foo'].nil?
70
+ begin
71
+ @links.delete :foo
72
+ @links.delete 'foo'
73
+ rescue
74
+ assert false, "deleting from action links when item doesn't exist should not throw an error"
75
+ end
76
+ assert !@links['bar'].nil?
77
+ end
78
+ end
@@ -0,0 +1,25 @@
1
+ require File.join(File.dirname(__FILE__), '../test_helper.rb')
2
+
3
+ class ActionsTest < Test::Unit::TestCase
4
+ def setup
5
+ @actions = ActiveScaffold::DataStructures::Actions.new(:a, 'b')
6
+ end
7
+
8
+ def test_initialization
9
+ assert @actions.include?('a')
10
+ assert @actions.include?(:b)
11
+ assert !@actions.include?(:c)
12
+ end
13
+
14
+ def test_exclude
15
+ assert @actions.include?('b')
16
+ @actions.exclude :b
17
+ assert !@actions.include?(:b)
18
+ end
19
+
20
+ def test_add
21
+ assert !@actions.include?(:c)
22
+ @actions.add 'c'
23
+ assert @actions.include?('c')
24
+ end
25
+ end