admin_assistant 1.0.1 → 1.0.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (288) hide show
  1. data/Rakefile +1 -0
  2. data/VERSION +1 -1
  3. data/admin_assistant.gemspec +1 -285
  4. metadata +3 -287
  5. data/test_rails_app/README +0 -256
  6. data/test_rails_app/Rakefile +0 -13
  7. data/test_rails_app/app/controllers/admin/appointments2_controller.rb +0 -15
  8. data/test_rails_app/app/controllers/admin/appointments_controller.rb +0 -11
  9. data/test_rails_app/app/controllers/admin/blog_posts2_controller.rb +0 -138
  10. data/test_rails_app/app/controllers/admin/blog_posts3_controller.rb +0 -76
  11. data/test_rails_app/app/controllers/admin/blog_posts4_controller.rb +0 -21
  12. data/test_rails_app/app/controllers/admin/blog_posts5_controller.rb +0 -27
  13. data/test_rails_app/app/controllers/admin/blog_posts6_controller.rb +0 -10
  14. data/test_rails_app/app/controllers/admin/blog_posts_controller.rb +0 -8
  15. data/test_rails_app/app/controllers/admin/blog_posts_custom_new_and_edit_controller.rb +0 -15
  16. data/test_rails_app/app/controllers/admin/blog_posts_read_only_controller.rb +0 -19
  17. data/test_rails_app/app/controllers/admin/bookmarks_controller.rb +0 -11
  18. data/test_rails_app/app/controllers/admin/comments2_controller.rb +0 -14
  19. data/test_rails_app/app/controllers/admin/comments_controller.rb +0 -12
  20. data/test_rails_app/app/controllers/admin/file_column_images2_controller.rb +0 -10
  21. data/test_rails_app/app/controllers/admin/file_column_images_controller.rb +0 -6
  22. data/test_rails_app/app/controllers/admin/images2_controller.rb +0 -11
  23. data/test_rails_app/app/controllers/admin/images_controller.rb +0 -6
  24. data/test_rails_app/app/controllers/admin/misconfigured1_controller.rb +0 -7
  25. data/test_rails_app/app/controllers/admin/not_migrated_yets_controller.rb +0 -9
  26. data/test_rails_app/app/controllers/admin/product_categories2_controller.rb +0 -7
  27. data/test_rails_app/app/controllers/admin/product_categories_controller.rb +0 -5
  28. data/test_rails_app/app/controllers/admin/products2_controller.rb +0 -15
  29. data/test_rails_app/app/controllers/admin/products_controller.rb +0 -31
  30. data/test_rails_app/app/controllers/admin/television_airings_controller.rb +0 -5
  31. data/test_rails_app/app/controllers/admin/television_time_slots_controller.rb +0 -5
  32. data/test_rails_app/app/controllers/admin/users2_controller.rb +0 -10
  33. data/test_rails_app/app/controllers/admin/users_controller.rb +0 -63
  34. data/test_rails_app/app/controllers/application.rb +0 -16
  35. data/test_rails_app/app/controllers/application_controller.rb +0 -16
  36. data/test_rails_app/app/controllers/blog_posts_controller.rb +0 -5
  37. data/test_rails_app/app/helpers/admin/appointments2_helper.rb +0 -2
  38. data/test_rails_app/app/helpers/admin/appointments_helper.rb +0 -2
  39. data/test_rails_app/app/helpers/admin/blog_posts2_helper.rb +0 -27
  40. data/test_rails_app/app/helpers/admin/blog_posts3_helper.rb +0 -2
  41. data/test_rails_app/app/helpers/admin/blog_posts4_helper.rb +0 -2
  42. data/test_rails_app/app/helpers/admin/blog_posts6_helper.rb +0 -16
  43. data/test_rails_app/app/helpers/admin/blog_posts_custom_new_and_edit_helper.rb +0 -29
  44. data/test_rails_app/app/helpers/admin/blog_posts_helper.rb +0 -2
  45. data/test_rails_app/app/helpers/admin/blog_posts_read_only_helper.rb +0 -2
  46. data/test_rails_app/app/helpers/admin/bookmarks_helper.rb +0 -2
  47. data/test_rails_app/app/helpers/admin/comments2_helper.rb +0 -2
  48. data/test_rails_app/app/helpers/admin/comments_helper.rb +0 -2
  49. data/test_rails_app/app/helpers/admin/file_column_images2_helper.rb +0 -2
  50. data/test_rails_app/app/helpers/admin/file_column_images_helper.rb +0 -2
  51. data/test_rails_app/app/helpers/admin/images2_helper.rb +0 -8
  52. data/test_rails_app/app/helpers/admin/images_helper.rb +0 -2
  53. data/test_rails_app/app/helpers/admin/misconfigured1_helper.rb +0 -2
  54. data/test_rails_app/app/helpers/admin/not_migrated_yets_helper.rb +0 -2
  55. data/test_rails_app/app/helpers/admin/product_categories2_helper.rb +0 -2
  56. data/test_rails_app/app/helpers/admin/product_categories_helper.rb +0 -2
  57. data/test_rails_app/app/helpers/admin/products2_helper.rb +0 -3
  58. data/test_rails_app/app/helpers/admin/products_helper.rb +0 -6
  59. data/test_rails_app/app/helpers/admin/television_airings_helper.rb +0 -2
  60. data/test_rails_app/app/helpers/admin/television_time_slots_helper.rb +0 -2
  61. data/test_rails_app/app/helpers/admin/users2_helper.rb +0 -2
  62. data/test_rails_app/app/helpers/admin/users_helper.rb +0 -25
  63. data/test_rails_app/app/helpers/application_helper.rb +0 -3
  64. data/test_rails_app/app/helpers/blog_posts_helper.rb +0 -2
  65. data/test_rails_app/app/models/appointment.rb +0 -5
  66. data/test_rails_app/app/models/blog_post.rb +0 -14
  67. data/test_rails_app/app/models/blog_post_tag.rb +0 -6
  68. data/test_rails_app/app/models/bookmark.rb +0 -6
  69. data/test_rails_app/app/models/comment.rb +0 -4
  70. data/test_rails_app/app/models/file_column_image.rb +0 -3
  71. data/test_rails_app/app/models/image.rb +0 -3
  72. data/test_rails_app/app/models/not_migrated_yet.rb +0 -2
  73. data/test_rails_app/app/models/product.rb +0 -7
  74. data/test_rails_app/app/models/product_category.rb +0 -9
  75. data/test_rails_app/app/models/tag.rb +0 -4
  76. data/test_rails_app/app/models/television_airing.rb +0 -3
  77. data/test_rails_app/app/models/television_time_slot.rb +0 -11
  78. data/test_rails_app/app/models/user.rb +0 -14
  79. data/test_rails_app/app/views/admin/appointments/_subject_input.html.erb +0 -2
  80. data/test_rails_app/app/views/admin/appointments2/_time_input.html.erb +0 -31
  81. data/test_rails_app/app/views/admin/blog_posts2/_after_form.html.erb +0 -5
  82. data/test_rails_app/app/views/admin/blog_posts2/_after_index.html.erb +0 -1
  83. data/test_rails_app/app/views/admin/blog_posts2/_after_tags_input.html.erb +0 -16
  84. data/test_rails_app/app/views/admin/blog_posts2/_before_index.html.erb +0 -2
  85. data/test_rails_app/app/views/admin/blog_posts5/_after_index_header.html.erb +0 -8
  86. data/test_rails_app/app/views/admin/blog_posts_read_only/_body_for_show.html.erb +0 -1
  87. data/test_rails_app/app/views/admin/products/_name_input.html.erb +0 -2
  88. data/test_rails_app/app/views/admin/products/_percent_off_input.html.erb +0 -2
  89. data/test_rails_app/app/views/admin/products/_price_input.html.erb +0 -10
  90. data/test_rails_app/app/views/blog_posts/show.html.erb +0 -13
  91. data/test_rails_app/app/views/layouts/admin.html.erb +0 -31
  92. data/test_rails_app/config/boot.rb +0 -109
  93. data/test_rails_app/config/database.yml +0 -28
  94. data/test_rails_app/config/environment.rb +0 -78
  95. data/test_rails_app/config/environments/development.rb +0 -17
  96. data/test_rails_app/config/environments/production.rb +0 -24
  97. data/test_rails_app/config/environments/test.rb +0 -24
  98. data/test_rails_app/config/initializers/inflections.rb +0 -10
  99. data/test_rails_app/config/initializers/mime_types.rb +0 -5
  100. data/test_rails_app/config/initializers/new_rails_defaults.rb +0 -17
  101. data/test_rails_app/config/locales/en.yml +0 -5
  102. data/test_rails_app/config/routes.rb +0 -43
  103. data/test_rails_app/db/migrate/20090213215514_create_blog_posts.rb +0 -12
  104. data/test_rails_app/db/migrate/20090217225542_add_body_to_blog_posts.rb +0 -9
  105. data/test_rails_app/db/migrate/20090221220917_create_tags.rb +0 -13
  106. data/test_rails_app/db/migrate/20090221220947_create_blog_post_tags.rb +0 -14
  107. data/test_rails_app/db/migrate/20090222162204_add_textile_to_blog_posts.rb +0 -9
  108. data/test_rails_app/db/migrate/20090222163231_add_published_at_to_blog_posts.rb +0 -9
  109. data/test_rails_app/db/migrate/20090301191722_create_images.rb +0 -16
  110. data/test_rails_app/db/migrate/20090305165345_create_accounts.rb +0 -14
  111. data/test_rails_app/db/migrate/20090307225027_rename_accounts_to_users.rb +0 -9
  112. data/test_rails_app/db/migrate/20090307225750_add_user_id_to_blog_posts.rb +0 -9
  113. data/test_rails_app/db/migrate/20090309185114_change_blog_posts_textile.rb +0 -9
  114. data/test_rails_app/db/migrate/20090309193635_create_products.rb +0 -14
  115. data/test_rails_app/db/migrate/20090309203056_create_comments.rb +0 -15
  116. data/test_rails_app/db/migrate/20090323005947_create_file_column_images.rb +0 -12
  117. data/test_rails_app/db/migrate/20090326160049_add_birthday_to_users.rb +0 -9
  118. data/test_rails_app/db/migrate/20090326223606_add_state_to_users.rb +0 -9
  119. data/test_rails_app/db/migrate/20090503134004_add_file_column_image_to_products.rb +0 -9
  120. data/test_rails_app/db/migrate/20090617173651_create_bookmarks.rb +0 -15
  121. data/test_rails_app/db/migrate/20090624165355_add_tags_string_to_blog_post.rb +0 -9
  122. data/test_rails_app/db/migrate/20090625144313_add_avatar_fields_to_user.rb +0 -11
  123. data/test_rails_app/db/migrate/20090629202956_add_merged_into_to_blog_posts.rb +0 -9
  124. data/test_rails_app/db/migrate/20090701171857_add_force_textile_to_users.rb +0 -9
  125. data/test_rails_app/db/migrate/20090704163647_add_deleted_at_to_products.rb +0 -9
  126. data/test_rails_app/db/migrate/20090704173800_add_sale_fields_to_products.rb +0 -13
  127. data/test_rails_app/db/migrate/20090714024501_create_product_categories.rb +0 -15
  128. data/test_rails_app/db/migrate/20090819162835_add_admin_level_to_users.rb +0 -9
  129. data/test_rails_app/db/migrate/20091115134559_add_first_and_last_names_to_users.rb +0 -11
  130. data/test_rails_app/db/migrate/20091221011256_add_position_to_product_categories.rb +0 -9
  131. data/test_rails_app/db/migrate/20091222160814_create_appointments.rb +0 -14
  132. data/test_rails_app/db/migrate/20091227224547_add_user_id_to_appointments.rb +0 -9
  133. data/test_rails_app/db/migrate/20100214213359_create_television_time_slots.rb +0 -13
  134. data/test_rails_app/db/migrate/20100214213451_create_television_airings.rb +0 -15
  135. data/test_rails_app/doc/README_FOR_APP +0 -5
  136. data/test_rails_app/lib/tasks/rspec.rake +0 -163
  137. data/test_rails_app/public/404.html +0 -30
  138. data/test_rails_app/public/422.html +0 -30
  139. data/test_rails_app/public/500.html +0 -33
  140. data/test_rails_app/public/dispatch.cgi +0 -10
  141. data/test_rails_app/public/dispatch.fcgi +0 -24
  142. data/test_rails_app/public/dispatch.rb +0 -10
  143. data/test_rails_app/public/favicon.ico +0 -0
  144. data/test_rails_app/public/images/rails.png +0 -0
  145. data/test_rails_app/public/index.html +0 -274
  146. data/test_rails_app/public/javascripts/application.js +0 -2
  147. data/test_rails_app/public/javascripts/controls.js +0 -963
  148. data/test_rails_app/public/javascripts/dragdrop.js +0 -973
  149. data/test_rails_app/public/javascripts/effects.js +0 -1128
  150. data/test_rails_app/public/javascripts/prototype.js +0 -4320
  151. data/test_rails_app/public/robots.txt +0 -5
  152. data/test_rails_app/public/stylesheets/admin.css +0 -3
  153. data/test_rails_app/public/stylesheets/scaffold.css +0 -54
  154. data/test_rails_app/script/about +0 -4
  155. data/test_rails_app/script/autospec +0 -5
  156. data/test_rails_app/script/console +0 -3
  157. data/test_rails_app/script/dbconsole +0 -3
  158. data/test_rails_app/script/destroy +0 -3
  159. data/test_rails_app/script/generate +0 -3
  160. data/test_rails_app/script/performance/benchmarker +0 -3
  161. data/test_rails_app/script/performance/profiler +0 -3
  162. data/test_rails_app/script/performance/request +0 -3
  163. data/test_rails_app/script/plugin +0 -3
  164. data/test_rails_app/script/populate_tables.rb +0 -49
  165. data/test_rails_app/script/process/inspector +0 -3
  166. data/test_rails_app/script/process/reaper +0 -3
  167. data/test_rails_app/script/process/spawner +0 -3
  168. data/test_rails_app/script/runner +0 -3
  169. data/test_rails_app/script/server +0 -3
  170. data/test_rails_app/script/spec +0 -5
  171. data/test_rails_app/script/spec_server +0 -125
  172. data/test_rails_app/spec/controllers/admin/appointments2_controller_spec.rb +0 -88
  173. data/test_rails_app/spec/controllers/admin/appointments_controller_spec.rb +0 -419
  174. data/test_rails_app/spec/controllers/admin/blog_posts2_controller_spec.rb +0 -1021
  175. data/test_rails_app/spec/controllers/admin/blog_posts3_controller_spec.rb +0 -532
  176. data/test_rails_app/spec/controllers/admin/blog_posts4_controller_spec.rb +0 -231
  177. data/test_rails_app/spec/controllers/admin/blog_posts5_controller_spec.rb +0 -77
  178. data/test_rails_app/spec/controllers/admin/blog_posts6_controller_spec.rb +0 -49
  179. data/test_rails_app/spec/controllers/admin/blog_posts_controller_spec.rb +0 -987
  180. data/test_rails_app/spec/controllers/admin/blog_posts_custom_new_and_edit_controller_spec.rb +0 -99
  181. data/test_rails_app/spec/controllers/admin/blog_posts_read_only_controller_spec.rb +0 -94
  182. data/test_rails_app/spec/controllers/admin/bookmarks_controller_spec.rb +0 -505
  183. data/test_rails_app/spec/controllers/admin/comments2_controller_spec.rb +0 -70
  184. data/test_rails_app/spec/controllers/admin/comments_controller_spec.rb +0 -82
  185. data/test_rails_app/spec/controllers/admin/file_column_images2_controller_spec.rb +0 -25
  186. data/test_rails_app/spec/controllers/admin/file_column_images_controller_spec.rb +0 -82
  187. data/test_rails_app/spec/controllers/admin/images2_controller_spec.rb +0 -44
  188. data/test_rails_app/spec/controllers/admin/images_controller_spec.rb +0 -97
  189. data/test_rails_app/spec/controllers/admin/misconfigured1_controller_spec.rb +0 -21
  190. data/test_rails_app/spec/controllers/admin/not_migrated_yets_controller_spec.rb +0 -10
  191. data/test_rails_app/spec/controllers/admin/product_categories2_controller_spec.rb +0 -215
  192. data/test_rails_app/spec/controllers/admin/product_categories_controller_spec.rb +0 -19
  193. data/test_rails_app/spec/controllers/admin/products2_controller_spec.rb +0 -203
  194. data/test_rails_app/spec/controllers/admin/products_controller_spec.rb +0 -255
  195. data/test_rails_app/spec/controllers/admin/television_airings_controller_spec.rb +0 -32
  196. data/test_rails_app/spec/controllers/admin/television_time_slots_controller_spec.rb +0 -10
  197. data/test_rails_app/spec/controllers/admin/users2_controller_spec.rb +0 -65
  198. data/test_rails_app/spec/controllers/admin/users_controller_spec.rb +0 -344
  199. data/test_rails_app/spec/controllers/blog_posts_controller_spec.rb +0 -13
  200. data/test_rails_app/spec/data/ruby_throated.jpg +0 -0
  201. data/test_rails_app/spec/data/tweenbot.jpg +0 -0
  202. data/test_rails_app/spec/fixtures/appointments.yml +0 -9
  203. data/test_rails_app/spec/fixtures/blog_post_tags.yml +0 -9
  204. data/test_rails_app/spec/fixtures/blog_posts.yml +0 -7
  205. data/test_rails_app/spec/fixtures/bookmarks.yml +0 -11
  206. data/test_rails_app/spec/fixtures/comments.yml +0 -11
  207. data/test_rails_app/spec/fixtures/file_column_images.yml +0 -7
  208. data/test_rails_app/spec/fixtures/images.yml +0 -7
  209. data/test_rails_app/spec/fixtures/not_migrated_yets.yml +0 -7
  210. data/test_rails_app/spec/fixtures/product_categories.yml +0 -7
  211. data/test_rails_app/spec/fixtures/products.yml +0 -9
  212. data/test_rails_app/spec/fixtures/tags.yml +0 -7
  213. data/test_rails_app/spec/fixtures/television_airings.yml +0 -11
  214. data/test_rails_app/spec/fixtures/television_time_slots.yml +0 -7
  215. data/test_rails_app/spec/fixtures/users.yml +0 -9
  216. data/test_rails_app/spec/helpers/admin/appointments2_helper_spec.rb +0 -11
  217. data/test_rails_app/spec/helpers/admin/appointments_helper_spec.rb +0 -11
  218. data/test_rails_app/spec/helpers/admin/blog_posts2_helper_spec.rb +0 -11
  219. data/test_rails_app/spec/helpers/admin/blog_posts3_helper_spec.rb +0 -11
  220. data/test_rails_app/spec/helpers/admin/blog_posts4_helper_spec.rb +0 -11
  221. data/test_rails_app/spec/helpers/admin/blog_posts_custom_new_and_edit_helper_spec.rb +0 -11
  222. data/test_rails_app/spec/helpers/admin/blog_posts_helper_spec.rb +0 -11
  223. data/test_rails_app/spec/helpers/admin/blog_posts_read_only_helper_spec.rb +0 -11
  224. data/test_rails_app/spec/helpers/admin/bookmarks_helper_spec.rb +0 -11
  225. data/test_rails_app/spec/helpers/admin/comments2_helper_spec.rb +0 -11
  226. data/test_rails_app/spec/helpers/admin/comments_helper_spec.rb +0 -11
  227. data/test_rails_app/spec/helpers/admin/file_column_images2_helper_spec.rb +0 -11
  228. data/test_rails_app/spec/helpers/admin/file_column_images_helper_spec.rb +0 -11
  229. data/test_rails_app/spec/helpers/admin/images2_helper_spec.rb +0 -11
  230. data/test_rails_app/spec/helpers/admin/images_helper_spec.rb +0 -11
  231. data/test_rails_app/spec/helpers/admin/misconfigured1_helper_spec.rb +0 -11
  232. data/test_rails_app/spec/helpers/admin/not_migrated_yets_helper_spec.rb +0 -11
  233. data/test_rails_app/spec/helpers/admin/product_categories2_helper_spec.rb +0 -11
  234. data/test_rails_app/spec/helpers/admin/product_categories_helper_spec.rb +0 -11
  235. data/test_rails_app/spec/helpers/admin/products2_helper_spec.rb +0 -11
  236. data/test_rails_app/spec/helpers/admin/products_helper_spec.rb +0 -11
  237. data/test_rails_app/spec/helpers/admin/television_airings_helper_spec.rb +0 -11
  238. data/test_rails_app/spec/helpers/admin/television_time_slots_helper_spec.rb +0 -11
  239. data/test_rails_app/spec/helpers/admin/users2_helper_spec.rb +0 -11
  240. data/test_rails_app/spec/helpers/admin/users_helper_spec.rb +0 -11
  241. data/test_rails_app/spec/helpers/blog_posts_helper_spec.rb +0 -11
  242. data/test_rails_app/spec/models/appointment_spec.rb +0 -16
  243. data/test_rails_app/spec/models/blog_post_spec.rb +0 -13
  244. data/test_rails_app/spec/models/blog_post_tag_spec.rb +0 -14
  245. data/test_rails_app/spec/models/bookmark_spec.rb +0 -15
  246. data/test_rails_app/spec/models/comment_spec.rb +0 -15
  247. data/test_rails_app/spec/models/file_column_image_spec.rb +0 -12
  248. data/test_rails_app/spec/models/image_spec.rb +0 -12
  249. data/test_rails_app/spec/models/not_migrated_yet_spec.rb +0 -15
  250. data/test_rails_app/spec/models/product_category_spec.rb +0 -15
  251. data/test_rails_app/spec/models/product_spec.rb +0 -14
  252. data/test_rails_app/spec/models/tag_spec.rb +0 -13
  253. data/test_rails_app/spec/models/television_airing_spec.rb +0 -15
  254. data/test_rails_app/spec/models/television_time_slot_spec.rb +0 -13
  255. data/test_rails_app/spec/models/user_spec.rb +0 -14
  256. data/test_rails_app/spec/rcov.opts +0 -2
  257. data/test_rails_app/spec/spec.opts +0 -4
  258. data/test_rails_app/spec/spec_helper.rb +0 -88
  259. data/test_rails_app/spec/spec_or_test_helper.rb +0 -49
  260. data/test_rails_app/test/fixtures/file_column_images.yml +0 -7
  261. data/test_rails_app/test/integration/admin_blog_posts2_integration_test.rb +0 -16
  262. data/test_rails_app/test/integration/admin_blog_posts5_integration_test.rb +0 -19
  263. data/test_rails_app/test/integration/admin_blog_posts_integration_test.rb +0 -25
  264. data/test_rails_app/test/test_helper.rb +0 -28
  265. data/test_rails_app/vendor/plugins/file_column/CHANGELOG +0 -69
  266. data/test_rails_app/vendor/plugins/file_column/README +0 -54
  267. data/test_rails_app/vendor/plugins/file_column/Rakefile +0 -36
  268. data/test_rails_app/vendor/plugins/file_column/TODO +0 -6
  269. data/test_rails_app/vendor/plugins/file_column/init.rb +0 -13
  270. data/test_rails_app/vendor/plugins/file_column/lib/file_column.rb +0 -723
  271. data/test_rails_app/vendor/plugins/file_column/lib/file_column_helper.rb +0 -150
  272. data/test_rails_app/vendor/plugins/file_column/lib/file_compat.rb +0 -28
  273. data/test_rails_app/vendor/plugins/file_column/lib/magick_file_column.rb +0 -260
  274. data/test_rails_app/vendor/plugins/file_column/lib/rails_file_column.rb +0 -19
  275. data/test_rails_app/vendor/plugins/file_column/lib/test_case.rb +0 -124
  276. data/test_rails_app/vendor/plugins/file_column/lib/validations.rb +0 -112
  277. data/test_rails_app/vendor/plugins/file_column/test/abstract_unit.rb +0 -63
  278. data/test_rails_app/vendor/plugins/file_column/test/connection.rb +0 -17
  279. data/test_rails_app/vendor/plugins/file_column/test/file_column_helper_test.rb +0 -97
  280. data/test_rails_app/vendor/plugins/file_column/test/file_column_test.rb +0 -650
  281. data/test_rails_app/vendor/plugins/file_column/test/fixtures/entry.rb +0 -32
  282. data/test_rails_app/vendor/plugins/file_column/test/fixtures/invalid-image.jpg +0 -1
  283. data/test_rails_app/vendor/plugins/file_column/test/fixtures/kerb.jpg +0 -0
  284. data/test_rails_app/vendor/plugins/file_column/test/fixtures/mysql.sql +0 -25
  285. data/test_rails_app/vendor/plugins/file_column/test/fixtures/schema.rb +0 -10
  286. data/test_rails_app/vendor/plugins/file_column/test/fixtures/skanthak.png +0 -0
  287. data/test_rails_app/vendor/plugins/file_column/test/magick_test.rb +0 -380
  288. data/test_rails_app/vendor/plugins/file_column/test/magick_view_only_test.rb +0 -21
@@ -1,987 +0,0 @@
1
- require File.expand_path(File.dirname(__FILE__) + '/../../spec_helper')
2
-
3
- describe Admin::BlogPostsController do
4
- integrate_views
5
-
6
- before :all do
7
- User.destroy_all
8
- @user = User.create! :username => 'soren'
9
- end
10
-
11
- describe '#autocomplete_user' do
12
- before :all do
13
- @bill1 = User.create! :username => 'Bill 1'
14
- @bill2 = User.create! :username => 'Bill 2'
15
- 1.upto(11) do |i|
16
- User.create! :username => "Bob #{i}"
17
- end
18
- User.create! :username => 'Bob'
19
- end
20
-
21
- describe 'with no matches' do
22
- before :each do
23
- get :autocomplete_user, :user_autocomplete_input => 'Jane'
24
- end
25
-
26
- it 'should return empty results' do
27
- response.should have_tag('ul')
28
- response.should_not have_tag('ul > li')
29
- end
30
-
31
- it 'should not render the admin layout' do
32
- response.should_not have_tag('head > title')
33
- end
34
- end
35
-
36
- describe 'with two matches' do
37
- before :each do
38
- get :autocomplete_user, :user_autocomplete_input => 'Bill'
39
- end
40
-
41
- it 'should return those two matches' do
42
- response.should have_tag('ul') do
43
- with_tag "li[id=user#{@bill1.id}]", :text => 'Bill 1'
44
- with_tag "li[id=user#{@bill2.id}]", :text => 'Bill 2'
45
- end
46
- end
47
- end
48
-
49
- describe 'with 12 matches' do
50
- before :each do
51
- get :autocomplete_user, :user_autocomplete_input => 'Bob'
52
- end
53
-
54
- it 'should return a max of ten users' do
55
- response.should have_tag('ul > li', :count => 10)
56
- end
57
-
58
- it 'should make sure the shortest matches are included in the results' do
59
- response.should have_tag('ul > li', :text => 'Bob')
60
- end
61
- end
62
- end
63
-
64
- describe '#create' do
65
- describe 'when there are no validation errors' do
66
- before :each do
67
- title = random_word
68
- post(
69
- :create,
70
- :blog_post => {
71
- :title => title, :textile => '1', :user_id => @user.id,
72
- 'published_at(1i)' => '', 'published_at(2i)' => '',
73
- 'published_at(3i)' => '', 'published_at(4i)' => '',
74
- 'published_at(5i)' => ''
75
- }
76
- )
77
- @blog_post = BlogPost.find_by_title(title)
78
- end
79
-
80
- it 'should create a new BlogPost' do
81
- @blog_post.should_not be_nil
82
- @blog_post.textile?.should be_true
83
- end
84
-
85
- it 'should not set published_at' do
86
- @blog_post.published_at.should be_nil
87
- end
88
- end
89
-
90
- describe 'when there are validation errors' do
91
- before :each do
92
- post(
93
- :create, :blog_post => {:title => ''}, :origin => '/admin/blog_posts'
94
- )
95
- end
96
-
97
- it 'should not create a new BlogPost' do
98
- BlogPost.find_by_title('').should be_nil
99
- end
100
-
101
- it 'should print all the errors' do
102
- response.should be_success
103
- response.body.should match(/Title can't be blank/)
104
- end
105
-
106
- it 'should show a link back to the index page' do
107
- response.should have_tag("a[href=/admin/blog_posts]", 'Back to index')
108
- end
109
- end
110
-
111
- describe 'when somebody GETs for some reason' do
112
- before :each do
113
- get :create
114
- end
115
-
116
- it 'should just redirect to #new' do
117
- response.should redirect_to(:action => 'new')
118
- end
119
- end
120
- end
121
-
122
- describe '#destroy' do
123
- it 'should be an unknown action' do
124
- lambda { post :destroy, :id => 123 }.should raise_error(
125
- ActionController::UnknownAction
126
- )
127
- end
128
- end
129
-
130
- describe '#edit' do
131
- before :all do
132
- @blog_post = BlogPost.create! :title => random_word, :user => @user
133
- end
134
-
135
- before :each do
136
- @request.env["HTTP_REFERER"] = '/admin/blog_posts'
137
- get :edit, :id => @blog_post.id
138
- end
139
-
140
- it 'should show a form' do
141
- response.body.should match(
142
- %r|<form action="/admin/blog_posts/update/#{@blog_post.id}".*input.*name="blog_post\[title\]"|m
143
- )
144
- end
145
-
146
- it 'should prefill the values' do
147
- response.body.should match(%r|input.*value="#{@blog_post.title}"|)
148
- end
149
-
150
- it 'should show a link back to the index page' do
151
- response.should have_tag("a[href=/admin/blog_posts]", 'Back to index')
152
- end
153
- end
154
-
155
- describe '#edit when there is a referer value on the request' do
156
- it 'should have the origin hidden input value' do
157
- blog_post = BlogPost.create! :title => random_word, :user => @user
158
- referer_page = 'referer_page'
159
- @request.env['HTTP_REFERER'] = referer_page
160
- get :edit, :id => blog_post.id
161
- response.should have_tag("input#origin[value=#{referer_page}]")
162
- end
163
- end
164
-
165
- describe '#edit when there are more than 15 users' do
166
- before :all do
167
- @blog_post = BlogPost.create! :title => random_word, :user => @user
168
- 1.upto(16) do |i|
169
- User.create! :username => "--user #{i}--"
170
- end
171
- end
172
-
173
- before :each do
174
- get :edit, :id => @blog_post.id
175
- end
176
-
177
- it 'should use the restricted autocompleter instead of a drop-down' do
178
- response.should_not have_tag("select[name=?]", "blog_post[user_id]")
179
- response.should have_tag(
180
- "input[id=user_autocomplete_input][value=soren]"
181
- )
182
- response.should have_tag(
183
- "input[type=hidden][name=?][id=blog_post_user_id][value=?]",
184
- "blog_post[user_id]", @user.id.to_s
185
- )
186
- response.should have_tag("div[id=user_autocomplete_palette]")
187
- response.should have_tag('div[id=clear_user_link]')
188
- response.body.should match(
189
- %r|
190
- new\s*AdminAssistant.RestrictedAutocompleter\(
191
- \s*"user",
192
- \s*"blog_post_user_id",
193
- \s*"/admin/blog_posts/autocomplete_user",
194
- [^)]*"includeBlank":\s*true
195
- |mx
196
- )
197
- end
198
- end
199
-
200
- describe '#edit when there are less than 15 users' do
201
- before :all do
202
- @blog_post = BlogPost.create! :title => random_word, :user => @user
203
- User.count.downto(14) do
204
- user = User.find(
205
- :first, :conditions => ['username != ?', @user.username]
206
- )
207
- user.destroy
208
- end
209
- end
210
-
211
- before :each do
212
- get :edit, :id => @blog_post.id
213
- end
214
-
215
- it 'should use a drop-down with a blank option' do
216
- response.should have_tag('select[name=?]', 'blog_post[user_id]') do
217
- with_tag "option[value='']"
218
- end
219
- end
220
- end
221
-
222
- describe '#index' do
223
- describe 'when there are no records' do
224
- before :all do
225
- BlogPost.destroy_all
226
- end
227
-
228
- before :each do
229
- get :index
230
- response.should be_success
231
- end
232
-
233
- it 'should say "No blog posts found"' do
234
- response.body.should match(/No blog posts found/)
235
- end
236
-
237
- it "should say the name of the model you're editing" do
238
- response.body.should match(/Blog posts/)
239
- end
240
-
241
- it 'should have a new link' do
242
- response.should have_tag(
243
- "a[href=/admin/blog_posts/new]", 'New blog post'
244
- )
245
- end
246
-
247
- it 'should have a search form' do
248
- response.body.should match(
249
- %r|<a.*onclick="AdminAssistant.show_search_form\(\);.*>Search</a>|
250
- )
251
- end
252
-
253
- it 'should use the admin layout' do
254
- response.body.should match(/admin_assistant sample Rails app/)
255
- end
256
-
257
- it 'should use the default admin_assistant CSS' do
258
- response.should have_tag(
259
- 'link[href^=/stylesheets/admin_assistant/default.css]'
260
- )
261
- end
262
- end
263
-
264
- describe 'when there is one record' do
265
- before :all do
266
- BlogPost.destroy_all
267
- @blog_post = BlogPost.create!(
268
- :title => "hi there", :user => @user, :textile => false
269
- )
270
- end
271
-
272
- before :each do
273
- get :index
274
- response.should be_success
275
- end
276
-
277
- it 'should show title by default' do
278
- response.body.should match(/hi there/)
279
- end
280
-
281
- it "should say the name of the model you're editing" do
282
- response.body.should match(/Blog posts/)
283
- end
284
-
285
- it 'should have a new link' do
286
- response.should have_tag(
287
- "a[href=/admin/blog_posts/new]", 'New blog post'
288
- )
289
- end
290
-
291
- it 'should have an edit link' do
292
- response.should have_tag('td.actions') do
293
- with_tag "a[href=/admin/blog_posts/edit/#{@blog_post.id}]", 'Edit'
294
- end
295
- end
296
-
297
- it 'should have a show link' do
298
- response.should have_tag(
299
- "a[href=/admin/blog_posts/show/#{@blog_post.id}]", 'Show'
300
- )
301
- end
302
-
303
- it 'should show sort links' do
304
- pretty_column_names = {
305
- 'id' => 'ID', 'title' => 'Title', 'body' => 'Body', 'user' => 'User'
306
- }
307
- pretty_column_names.each do |field, pretty_column_name|
308
- assert_a_tag_with_get_args(
309
- pretty_column_name, '/admin/blog_posts',
310
- {:sort => field, :sort_order => 'asc'}, response.body
311
- )
312
- end
313
- end
314
-
315
- it 'should show pretty column headers' do
316
- column_headers = ['ID', 'Title', 'Body', 'User']
317
- column_headers.each do |column_header|
318
- response.should have_tag('th') do
319
- with_tag 'a', column_header
320
- end
321
- end
322
- end
323
-
324
- it 'should say how many records are found' do
325
- response.should have_tag(
326
- 'div.aa_footer', :text => '1 blog post found'
327
- )
328
- end
329
-
330
- it "should say username because that's one of our default name fields" do
331
- response.should have_tag('td', :text => 'soren')
332
- end
333
-
334
- it 'should make the textile field an Ajax toggle' do
335
- toggle_div_id = "blog_post_#{@blog_post.id}_textile"
336
- post_url =
337
- "/admin/blog_posts/update/#{@blog_post.id}?" +
338
- CGI.escape('blog_post[textile]') + "=1&amp;from=#{toggle_div_id}"
339
- response.should have_tag("div[id=?]", toggle_div_id) do
340
- ajax_substr = "new Ajax.Updater('#{toggle_div_id}', '#{post_url}'"
341
- with_tag("a[href=#][onclick*=?]", ajax_substr, :text => 'false')
342
- end
343
- end
344
-
345
- it 'should not show the page selector form' do
346
- response.should have_tag('.pagination') do
347
- without_tag('form[method=get][action=/admin/blog_posts]')
348
- end
349
- end
350
-
351
- it 'should have a tbody with the ID blog_posts_index_tbody' do
352
- response.should have_tag('tbody#blog_posts_index_tbody')
353
- end
354
-
355
- it 'should have a tr with the ID based on @blog_post.id' do
356
- response.should have_tag("tr[id=blog_post_#{@blog_post.id}]")
357
- end
358
-
359
- it 'should not show created_at or updated_at by default' do
360
- response.body.should_not match(/Created at/)
361
- response.body.should_not match(/Updated at/)
362
- end
363
- end
364
-
365
- describe 'when there is one record that somehow has a nil User' do
366
- before :all do
367
- @blog_post = BlogPost.create! :title => "hi there", :user => @user
368
- BlogPost.update_all "user_id = null"
369
- end
370
-
371
- before :each do
372
- get :index
373
- end
374
-
375
- it 'should be fine with a nil User' do
376
- response.should be_success
377
- end
378
- end
379
-
380
- describe 'when there are more than 10 pages of results' do
381
- before :all do
382
- BlogPost.count.upto(251) do
383
- @blog_post = BlogPost.create!(
384
- :title => "hi there", :user => @user, :textile => false
385
- )
386
- end
387
- end
388
-
389
- before :each do
390
- get :index
391
- end
392
-
393
- it 'should show the page selector form at the bottom' do
394
- response.should have_tag('.pagination') do
395
- with_tag('form[method=get][action=/admin/blog_posts]') do
396
- with_tag 'input[name=page]'
397
- end
398
- end
399
- end
400
- end
401
- end
402
-
403
- describe '#index sorting' do
404
- describe 'when there are two records' do
405
- before :all do
406
- BlogPost.destroy_all
407
- @blog_post1 = BlogPost.create!(
408
- :title => "title 1", :body => "body 2", :user => @user
409
- )
410
- @blog_post2 = BlogPost.create!(
411
- :title => "title 2", :body => "body 1", :user => @user
412
- )
413
- end
414
-
415
- describe 'sorted by title asc' do
416
- before :each do
417
- get :index, :sort => 'title', :sort_order => 'asc'
418
- response.should be_success
419
- end
420
-
421
- it 'should sort by title asc' do
422
- response.body.should match(%r|title 1.*title 2|m)
423
- end
424
-
425
- it 'should show a desc sort link for title' do
426
- assert_a_tag_with_get_args(
427
- 'Title', '/admin/blog_posts',
428
- {:sort => 'title', :sort_order => 'desc'}, response.body
429
- )
430
- end
431
-
432
- it 'should show asc sort links for other fields' do
433
- pretty_column_names = {'id' => 'ID', 'body' => 'Body'}
434
- pretty_column_names.each do |field, pretty_column_name|
435
- assert_a_tag_with_get_args(
436
- pretty_column_name, '/admin/blog_posts',
437
- {:sort => field, :sort_order => 'asc'}, response.body
438
- )
439
- end
440
- end
441
-
442
- it 'should use the right CSS classes in the title header' do
443
- response.should have_tag('th[class="sort asc"]') do
444
- with_tag 'a', :text => 'Title'
445
- end
446
- end
447
-
448
- it 'should have no CSS sorting classes in the header for ID' do
449
- response.should have_tag('th:not([class])') do
450
- with_tag 'a', :text => 'ID'
451
- end
452
- end
453
-
454
- it 'should mark the title cells with CSS sorting classes' do
455
- response.should have_tag('td[class="sort"]', :text => 'title 1')
456
- end
457
- end
458
-
459
- describe 'sorted by title desc' do
460
- before :each do
461
- get :index, :sort => 'title', :sort_order => 'desc'
462
- response.should be_success
463
- end
464
-
465
- it 'should sort by title desc' do
466
- response.body.should match(%r|title 2.*title 1|m)
467
- end
468
-
469
- it 'should show a no-sort link for title' do
470
- response.should have_tag("a[href=/admin/blog_posts]", 'Title')
471
- end
472
-
473
- it 'should show asc sort links for other fields' do
474
- pretty_column_names = {'id' => 'ID', 'body' => 'Body'}
475
- pretty_column_names.each do |field, pretty_column_name|
476
- assert_a_tag_with_get_args(
477
- pretty_column_name, '/admin/blog_posts',
478
- {:sort => field, :sort_order => 'asc'}, response.body
479
- )
480
- end
481
- end
482
-
483
- it 'should use the right CSS classes in the title header' do
484
- response.should have_tag('th[class="sort desc"]') do
485
- with_tag 'a', :text => 'Title'
486
- end
487
- end
488
-
489
- it 'should have no CSS sorting classes in the header for ID' do
490
- response.should have_tag('th:not([class])') do
491
- with_tag 'a', :text => 'ID'
492
- end
493
- end
494
-
495
- it 'should mark the title cells with CSS sorting classes' do
496
- response.should have_tag('td[class="sort"]', :text => 'title 1')
497
- end
498
- end
499
- end
500
-
501
- describe 'by #user, a belongs_to association' do
502
- before :all do
503
- BlogPost.destroy_all
504
- jean_paul = User.create! :username => 'jean-paul'
505
- BlogPost.create!(
506
- :title => 'title 1', :body => 'body 1', :user => @user
507
- )
508
- BlogPost.create!(
509
- :title => 'title 2', :body => 'body 2', :user => jean_paul
510
- )
511
- end
512
-
513
- describe 'asc' do
514
- before :each do
515
- get :index, :sort => 'user', :sort_order => 'asc'
516
- response.should be_success
517
- end
518
-
519
- it "should show jean-paul's blog post before soren's" do
520
- response.body.should match(%r|jean-paul.*soren|m)
521
- end
522
-
523
- it 'should use the right CSS classes in the user header' do
524
- response.should have_tag('th[class="sort asc"]') do
525
- with_tag 'a', :text => 'User'
526
- end
527
- end
528
-
529
- it 'should mark the title cells with CSS sorting classes' do
530
- response.should have_tag('td[class="sort"]', :text => 'jean-paul')
531
- end
532
-
533
- it 'should show a desc sort link for user' do
534
- assert_a_tag_with_get_args(
535
- 'User', '/admin/blog_posts',
536
- {:sort => 'user', :sort_order => 'desc'}, response.body
537
- )
538
- end
539
- end
540
-
541
- describe 'desc' do
542
- before :each do
543
- get :index, :sort => 'user', :sort_order => 'desc'
544
- response.should be_success
545
- end
546
-
547
- it "should show soren's blog post before jean-paul's" do
548
- response.body.should match(%r|soren.*jean-paul|m)
549
- end
550
- end
551
- end
552
- end
553
-
554
- describe '#index search' do
555
- before :all do
556
- BlogPost.destroy_all
557
- end
558
-
559
- before :each do
560
- get :index, :search => 'foo'
561
- response.should be_success
562
- end
563
-
564
- describe 'when there are no records' do
565
- it "should say 'No blog posts found'" do
566
- response.body.should match(/No blog posts found/)
567
- end
568
-
569
- it "should display the search with the terms" do
570
- response.body.should match(
571
- %r|<form[^>]*id="search_form".*show_search_form\(\)|m
572
- )
573
- response.body.should match(%r|input.*value="foo"|)
574
- end
575
-
576
- it 'should show a link back to the index page' do
577
- response.should have_tag("a[href=/admin/blog_posts]", 'Back to index')
578
- end
579
- end
580
-
581
- describe 'when there are no records that match' do
582
- before :all do
583
- BlogPost.create!(
584
- :title => 'no match', :body => 'no match', :user => @user
585
- )
586
- end
587
-
588
- it "should say 'No blog posts found'" do
589
- response.body.should match(/No blog posts found/)
590
- end
591
- end
592
-
593
- describe 'when there is a blog post with a matching title' do
594
- before :all do
595
- BlogPost.create!(
596
- :title => 'foozy', :body => 'blog post body', :user => @user
597
- )
598
- end
599
-
600
- it "should show that blog post" do
601
- response.body.should match(/blog post body/)
602
- end
603
- end
604
-
605
- describe 'when there is a blog post with a matching body' do
606
- before :all do
607
- BlogPost.create!(
608
- :title => 'blog post title', :body => 'barfoo', :user => @user
609
- )
610
- end
611
-
612
- it "should show that blog post" do
613
- response.body.should match(/blog post title/)
614
- end
615
-
616
- it 'should say how many records are found' do
617
- response.body.should match(/1 blog post found/)
618
- end
619
- end
620
- end
621
-
622
- describe '#index pagination with 51 records' do
623
- before :all do
624
- BlogPost.destroy_all
625
- 1.upto(51) do |i|
626
- BlogPost.create!(
627
- :title => "title -#{i}-", :body => "body -#{i}-", :user => @user
628
- )
629
- end
630
- end
631
-
632
- describe 'when looking at the first page' do
633
- before :each do
634
- get :index
635
- response.should be_success
636
- end
637
-
638
- it 'should have a link to the next page' do
639
- response.should have_tag(
640
- "a[href=/admin/blog_posts?page=2]", 'Next &raquo;'
641
- )
642
- response.should have_tag("a[href=/admin/blog_posts?page=2]", '2')
643
- end
644
-
645
- it 'should not have a link to the previous page' do
646
- response.should_not have_tag(
647
- "a[href=/admin/blog_posts?page=0]", '&laquo; Previous'
648
- )
649
- response.should_not have_tag("a[href=/admin/blog_posts?page=0]", '0')
650
- end
651
-
652
- it 'should the full number of posts found' do
653
- response.body.should match(/51 blog posts found/)
654
- end
655
- end
656
-
657
- describe 'when looking at the second page' do
658
- before :each do
659
- get :index, :page => '2'
660
- response.should be_success
661
- end
662
-
663
- it 'should have a link to the next page' do
664
- response.should have_tag(
665
- "a[href=/admin/blog_posts?page=3]", 'Next &raquo;'
666
- )
667
- response.should have_tag("a[href=/admin/blog_posts?page=3]", '3')
668
- end
669
-
670
- it 'should have a link to the previous page' do
671
- response.should have_tag(
672
- "a[href=/admin/blog_posts?page=1]", '&laquo; Previous'
673
- )
674
- response.should have_tag("a[href=/admin/blog_posts?page=1]", '1')
675
- end
676
-
677
- it 'should the full number of posts found' do
678
- response.body.should match(/51 blog posts found/)
679
- end
680
- end
681
-
682
- describe 'when looking at the third page' do
683
- before :each do
684
- get :index, :page => '3'
685
- response.should be_success
686
- end
687
-
688
- it 'should not have a link to the next page' do
689
- response.should_not have_tag(
690
- "a[href=/admin/blog_posts?page=4]", 'Next &raquo;'
691
- )
692
- response.should_not have_tag("a[href=/admin/blog_posts?page=3]", '3')
693
- end
694
-
695
- it 'should have a link to the previous page' do
696
- response.should have_tag(
697
- "a[href=/admin/blog_posts?page=2]", '&laquo; Previous'
698
- )
699
- response.should have_tag("a[href=/admin/blog_posts?page=2]", '2')
700
- end
701
-
702
- it 'should the full number of posts found' do
703
- response.body.should match(/51 blog posts found/)
704
- end
705
- end
706
- end
707
-
708
- describe '#index with 100_000 records' do
709
- before :all do
710
- BlogPost.count.upto(25) do |i|
711
- BlogPost.create!(
712
- :title => "title -#{i}-", :body => "body -#{i}-", :user => @user
713
- )
714
- end
715
- records = BlogPost.paginate(:per_page => 25, :page => 1)
716
- records.total_entries = 100_000
717
- BlogPost.should_receive(:paginate).and_return(records)
718
- end
719
-
720
- before :each do
721
- get :index
722
- end
723
-
724
- it 'should not offer a link to sort by user' do
725
- assert_no_a_tag_with_get_args(
726
- 'User', '/admin/blog_posts', {:sort => 'user', :sort_order => 'asc'},
727
- response.body
728
- )
729
- end
730
- end
731
-
732
- describe '#new' do
733
- before :each do
734
- @alfie = User.find_or_create_by_username 'alfie'
735
- @request.env["HTTP_REFERER"] = '/admin/blog_posts'
736
- get :new
737
- end
738
-
739
- it 'should show a form' do
740
- response.body.should match(
741
- %r|<form action="/admin/blog_posts/create".*input.*name="blog_post\[title\]"|m
742
- )
743
- end
744
-
745
- it 'should use a textarea for the body field' do
746
- response.body.should match(
747
- %r|<textarea.*name="blog_post\[body\]".*>.*</textarea>|
748
- )
749
- end
750
-
751
- it 'should show a link back to the index page' do
752
- response.should have_tag("a[href=/admin/blog_posts]", 'Back to index')
753
- end
754
-
755
- it 'should show pretty field names' do
756
- field_names = ['Title', 'Body']
757
- field_names.each do |field_name|
758
- response.should have_tag('label', field_name)
759
- end
760
- end
761
-
762
- it 'should set the for attribute of the labels' do
763
- field_names = ['Title', 'Body']
764
- field_names.each do |field_name|
765
- response.should have_tag("label[for=blog_post_#{field_name.downcase}]")
766
- end
767
- end
768
-
769
- it "should use a checkbox for the boolean field 'textile'" do
770
- response.body.should match(
771
- %r!
772
- <input[^>]*
773
- (name="blog_post\[textile\][^>]*type="checkbox"|
774
- type="checkbox"[^>]*name="blog_post\[textile\])
775
- !x
776
- )
777
- end
778
-
779
- it 'should use a drop-down for the user field' do
780
- response.should have_tag("select[name=?]", "blog_post[user_id]") do
781
- with_tag "option:nth-child(1)[value='']"
782
- with_tag "option:nth-child(2)[value=?]", @alfie.id, :text => 'alfie'
783
- with_tag "option:nth-child(3)[value=?]", @user.id, :text => 'soren'
784
- end
785
- end
786
-
787
- it 'should set the controller path as a CSS class' do
788
- response.should have_tag("div[class~=admin_blog_posts]")
789
- end
790
-
791
- it 'should use dropdowns with nil defaults for published_at' do
792
- nums_and_dt_fields = {
793
- 1 => :year, 2 => :month, 3 => :day, 4 => :hour, 5 => :min
794
- }
795
- nums_and_dt_fields.each do |num, dt_field|
796
- name = "blog_post[published_at(#{num}i)]"
797
- value_for_now_option = Time.now.send(dt_field).to_s
798
- if [:hour, :min].include?(dt_field) && value_for_now_option.size == 1
799
- value_for_now_option = "0#{value_for_now_option}"
800
- end
801
- response.should have_tag('select[name=?]', name) do
802
- with_tag "option[value='']"
803
- with_tag "option:not([selected])[value=?]", value_for_now_option
804
- end
805
- end
806
- end
807
-
808
- it 'should show a clear link for published_at' do
809
- response.body.should have_tag('a', :text => "Clear")
810
- end
811
- end
812
-
813
- describe '#new with a preset value in the GET arguments' do
814
- before :each do
815
- get :new, :blog_post => {:user_id => @user.id.to_s}
816
- end
817
-
818
- it 'should set that preselected value' do
819
- response.should have_tag("select[name=?]", "blog_post[user_id]") do
820
- with_tag "option[value=?][selected=selected]",
821
- @user.id, :text => 'soren'
822
- with_tag "option[value='']"
823
- end
824
- end
825
- end
826
-
827
- describe '#new when there are more than 15 users' do
828
- before :all do
829
- User.destroy_all
830
- 1.upto(16) do |i|
831
- User.create! :username => "--user #{i}--"
832
- end
833
- end
834
-
835
- before :each do
836
- get :new
837
- end
838
-
839
- it 'should use the restricted autocompleter instead of a drop-down' do
840
- response.should_not have_tag("select[name=?]", "blog_post[user_id]")
841
- response.should have_tag("input[id=user_autocomplete_input]")
842
- response.should have_tag(
843
- "input[type=hidden][name=?][id=blog_post_user_id]",
844
- "blog_post[user_id]"
845
- )
846
- response.should have_tag("div[id=user_autocomplete_palette]")
847
- response.should have_tag('div[id=clear_user_link]')
848
- response.body.should match(
849
- %r|
850
- new\s*AdminAssistant.RestrictedAutocompleter\(
851
- \s*"user",
852
- \s*"blog_post_user_id",
853
- \s*"/admin/blog_posts/autocomplete_user",
854
- [^)]*"includeBlank":\s*true
855
- |mx
856
- )
857
- end
858
- end
859
-
860
- describe '#show' do
861
- before :all do
862
- BlogPost.destroy_all
863
- @blog_post = BlogPost.create!(
864
- :title => "foo > bar & baz", :user => @user, :textile => false
865
- )
866
- end
867
-
868
- before :each do
869
- get :show, :id => @blog_post.id
870
- end
871
-
872
- it 'should show the HTML-escaped title' do
873
- response.body.should match(/foo &gt; bar &amp; baz/)
874
- end
875
-
876
- it 'should have a link to edit' do
877
- response.should have_tag(
878
- "a[href=/admin/blog_posts/edit/#{@blog_post.id}]", 'Edit'
879
- )
880
- end
881
-
882
- it 'should show soren' do
883
- response.body.should match(/soren/)
884
- end
885
- end
886
-
887
- describe '#update' do
888
- before :all do
889
- @blog_post = BlogPost.create! :title => random_word, :user => @user
890
- end
891
-
892
- describe 'when there are no validation errors' do
893
- before :each do
894
- title2 = random_word
895
- post(
896
- :update,
897
- :id => @blog_post.id,
898
- :blog_post => {
899
- :title => title2, 'published_at(1i)' => '2009',
900
- 'published_at(2i)' => '1', 'published_at(3i)' => '2',
901
- 'published_at(4i)' => '3', 'published_at(5i)' => '4'
902
- }
903
- )
904
- response.should redirect_to(:action => 'index')
905
- @blog_post_prime = BlogPost.find_by_title(title2)
906
- end
907
-
908
- it 'should update a pre-existing BlogPost' do
909
- @blog_post_prime.should_not be_nil
910
- end
911
-
912
- it 'should set published_at' do
913
- @blog_post_prime.published_at.should == Time.utc(2009, 1, 2, 3, 4)
914
- end
915
- end
916
-
917
- describe 'when there are validation errors' do
918
- before :each do
919
- post(
920
- :update,
921
- :id => @blog_post.id, :blog_post => {:title => ''},
922
- :origin => '/admin/blog_posts'
923
- )
924
- end
925
-
926
- it 'should not create a new BlogPost' do
927
- BlogPost.find_by_title('').should be_nil
928
- end
929
-
930
- it 'should print all the errors' do
931
- response.should be_success
932
- response.body.should match(/Title can't be blank/)
933
- end
934
-
935
- it 'should show a link back to the index page' do
936
- response.should have_tag("a[href=/admin/blog_posts]", 'Back to index')
937
- end
938
- end
939
-
940
- describe 'on handling the origin param' do
941
- it 'should redirect to the origin when there is a origin on the form submit' do
942
- origin = 'http://foo.com'
943
- post :update, :id => @blog_post.id, :blog_post => {:title => 'foo'}, :origin => origin
944
- response.should redirect_to(origin)
945
- end
946
- end
947
-
948
- end
949
-
950
- describe '#update as Ajax toggle' do
951
- before :all do
952
- @blog_post = BlogPost.create!(
953
- :title => random_word, :user => @user, :textile => false
954
- )
955
- end
956
-
957
- before :each do
958
- post(
959
- :update,
960
- :id => @blog_post.id, :from => "blog_post_#{@blog_post.id}_textile",
961
- :blog_post => {:textile => '1'}
962
- )
963
- end
964
-
965
- it 'should return success' do
966
- response.should be_success
967
- end
968
-
969
- it 'should update the textile field' do
970
- @blog_post.reload.textile.should be_true
971
- end
972
-
973
- it 'should only render a small snippet of HTML with Ajax in it' do
974
- toggle_div_id = "blog_post_#{@blog_post.id}_textile"
975
- post_url =
976
- "/admin/blog_posts/update/#{@blog_post.id}?" +
977
- CGI.escape('blog_post[textile]') + "=0&amp;from=#{toggle_div_id}"
978
- response.should_not have_tag('div[id=?]', toggle_div_id)
979
- ajax_substr = "new Ajax.Updater('#{toggle_div_id}', '#{post_url}'"
980
- response.should have_tag(
981
- "a[href=#][onclick*=?]", ajax_substr, :text => 'true'
982
- )
983
- response.should_not have_tag('title', :text => 'Admin')
984
- end
985
- end
986
-
987
- end