admin_assistant 1.0.1 → 1.0.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 (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,1021 +0,0 @@
1
- require File.expand_path(File.dirname(__FILE__) + '/../../spec_helper')
2
-
3
- describe Admin::BlogPosts2Controller do
4
- integrate_views
5
-
6
- before :all do
7
- User.destroy_all
8
- @user = User.create! :username => 'soren'
9
- end
10
-
11
- describe '#create' do
12
- describe 'when there are no validation errors' do
13
- before :each do
14
- title = random_word
15
- post(
16
- :create,
17
- :blog_post => {
18
- :title => title, :tags => 'tag1 tag2', :publish => '1',
19
- :user_id => @user.id
20
- }
21
- )
22
- @blog_post = BlogPost.find_by_title title
23
- end
24
-
25
- it 'should create a new BlogPost' do
26
- @blog_post.should_not be_nil
27
- end
28
-
29
- it 'should create tags' do
30
- @blog_post.should have(2).tags
31
- %w(tag1 tag2).each do |tag_str|
32
- assert(@blog_post.tags.any? { |tag| tag.tag == tag_str })
33
- end
34
- end
35
-
36
- it 'should set published_at because of the publish flag' do
37
- @blog_post.published_at.should_not be_nil
38
- end
39
-
40
- it 'should set the tags_string' do
41
- @blog_post.tags_string.should match(/tag1,tag2/)
42
- end
43
- end
44
-
45
- describe "when the user has clicked 'Preview'" do
46
- before :each do
47
- title = random_word
48
- post(
49
- :create,
50
- :blog_post => {
51
- :title => title, :tags => 'tag1 tag2', :publish => '1',
52
- :user_id => @user.id
53
- },
54
- :commit => 'Preview'
55
- )
56
- @blog_post = BlogPost.find_by_title title
57
- end
58
-
59
- it 'should redirect to the edit page with the preview flag' do
60
- response.should redirect_to(
61
- :action => 'edit', :id => @blog_post.id, :preview => '1'
62
- )
63
- end
64
- end
65
- end
66
-
67
- describe '#create with a bad tag' do
68
- before :each do
69
- @title = random_word
70
- post(
71
- :create,
72
- :blog_post => {
73
- :title => @title, :tags => 'foo bar! baz', :user_id => @user.id
74
- }
75
- )
76
- end
77
-
78
- it 'should not create a new BlogPost' do
79
- BlogPost.find_by_title(@title).should be_nil
80
- end
81
-
82
- it 'should keep the title in the form' do
83
- response.should have_tag(
84
- "input[name=?][value=?]", 'blog_post[title]', @title
85
- )
86
- end
87
-
88
- it 'should render a useful error' do
89
- response.should have_tag("div.errorExplanation") do
90
- with_tag 'li', :text => "Tags contain invalid string 'bar!'"
91
- end
92
- end
93
-
94
- it 'should highlight the tag string entry' do
95
- response.should have_tag("div.fieldWithErrors") do
96
- with_tag "input[name=?][value=?]", "blog_post[tags]", "foo bar! baz"
97
- end
98
- end
99
- end
100
-
101
- describe '#create with a bad tag and a missing title' do
102
- before :each do
103
- @orig_count = BlogPost.count
104
- post(
105
- :create,
106
- :blog_post => {
107
- :title => '', :tags => 'foo bar! baz', :user_id => @user.id
108
- }
109
- )
110
- end
111
-
112
- it 'should not create a new BlogPost' do
113
- BlogPost.count.should == @orig_count
114
- end
115
-
116
- it 'should render a useful tags error' do
117
- response.should have_tag("div.errorExplanation") do
118
- with_tag 'li', :text => "Tags contain invalid string 'bar!'"
119
- end
120
- end
121
-
122
- it 'should highlight the tag string entry' do
123
- response.should have_tag("div.fieldWithErrors") do
124
- with_tag "input[name=?][value=?]", "blog_post[tags]", "foo bar! baz"
125
- end
126
- end
127
-
128
- it 'should render a useful title error' do
129
- response.should have_tag("div.errorExplanation") do
130
- with_tag 'li', :text => "Title can't be blank"
131
- end
132
- end
133
-
134
- it 'should highlight the title string entry' do
135
- response.should have_tag("div.fieldWithErrors") do
136
- with_tag "input[name=?][value=?]", "blog_post[title]", ""
137
- end
138
- end
139
- end
140
-
141
- describe '#create with a bad publish value somehow' do
142
- before :each do
143
- @title = random_word
144
- post(
145
- :create,
146
- :blog_post => {
147
- :title => @title, :tags => 'tag1 tag2', :publish => 'FOOBAR',
148
- }
149
- )
150
- end
151
-
152
- it 'should be successful' do
153
- response.should be_success
154
- end
155
-
156
- it 'should not save the blog post' do
157
- BlogPost.find_by_title(@title).should be_nil
158
- end
159
-
160
- it 'should display the publish error' do
161
- response.body.should match(/Publish can't be .*FOOBAR.*/)
162
- end
163
-
164
- it 'should display a user error too' do
165
- response.body.should match(/User can't be blank/)
166
- end
167
- end
168
-
169
- describe '#edit' do
170
- before :all do
171
- BlogPost.destroy_all
172
- @blog_post = BlogPost.create!(
173
- :title => "blog post title", :body => 'blog post body', :user => @user
174
- )
175
- tag1 = Tag.find_or_create_by_tag 'tag1'
176
- BlogPostTag.create! :blog_post => @blog_post, :tag => tag1
177
- tag2 = Tag.find_or_create_by_tag 'tag2'
178
- BlogPostTag.create! :blog_post => @blog_post, :tag => tag2
179
- end
180
-
181
- before :each do
182
- get :edit, :id => @blog_post.id
183
- response.should be_success
184
- end
185
-
186
- it 'should show the tags' do
187
- response.body.should match(%r|<input.*name="blog_post\[tags\]"|m)
188
- response.body.should match(/(tag2 tag1|tag1 tag2)/)
189
- end
190
-
191
- it 'should show a preview button' do
192
- response.should have_tag('input[type=submit][value=Preview]')
193
- end
194
- end
195
-
196
- describe '#edit in preview mode' do
197
- before :all do
198
- @blog_post = BlogPost.create!(
199
- :title => "blog post title", :body => 'blog post body', :user => @user
200
- )
201
- end
202
-
203
- before :each do
204
- get :edit, :id => @blog_post.id, :preview => '1'
205
- response.should be_success
206
- end
207
-
208
- it 'should render the preview HTML' do
209
- response.should have_tag('html') do
210
- with_tag 'h4', 'Preview'
211
- end
212
- end
213
- end
214
-
215
- describe '#edit when there are more than 15 users' do
216
- before :all do
217
- @blog_post = BlogPost.create! :title => random_word, :user => @user
218
- 1.upto(16) do |i|
219
- User.create! :username => "--user #{i}--"
220
- end
221
- end
222
-
223
- before :each do
224
- get :edit, :id => @blog_post.id
225
- end
226
-
227
- it 'should use the restricted autocompleter instead of a drop-down' do
228
- response.should_not have_tag("select[name=?]", "blog_post[user_id]")
229
- response.should have_tag(
230
- "input[id=user_autocomplete_input][value=soren]"
231
- )
232
- response.should have_tag(
233
- "input[type=hidden][name=?][id=blog_post_user_id][value=?]",
234
- "blog_post[user_id]", @user.id.to_s
235
- )
236
- response.should have_tag("div[id=user_autocomplete_palette]")
237
- response.should have_tag('div[id=clear_user_link]')
238
- response.body.should match(
239
- %r|
240
- new\s*AdminAssistant.RestrictedAutocompleter\(
241
- \s*"user",
242
- \s*"blog_post_user_id",
243
- \s*"/admin/blog_posts2/autocomplete_user",
244
- [^)]*"includeBlank":\s*false
245
- |mx
246
- )
247
- end
248
- end
249
-
250
- describe '#edit when there are less than 15 users' do
251
- before :all do
252
- @blog_post = BlogPost.create! :title => random_word, :user => @user
253
- User.count.downto(14) do
254
- user = User.find(
255
- :first, :conditions => ['username != ?', @user.username]
256
- )
257
- user.destroy
258
- end
259
- end
260
-
261
- before :each do
262
- get :edit, :id => @blog_post.id
263
- end
264
-
265
- it 'should use a drop-down without a blank option' do
266
- response.should have_tag('select[name=?]', 'blog_post[user_id]') do
267
- without_tag "option[value='']"
268
- end
269
- end
270
- end
271
-
272
- describe '#edit a blog_post that has already been published' do
273
- before :all do
274
- @blog_post = BlogPost.create!(
275
- :title => "blog post title", :body => 'blog post body', :user => @user,
276
- :published_at => Time.now.utc
277
- )
278
- end
279
-
280
- before :each do
281
- get :edit, :id => @blog_post.id
282
- response.should be_success
283
- end
284
-
285
- it 'should show the publish check-box checked' do
286
- response.should have_tag(
287
- 'input[type=checkbox][name=?][checked=checked]', 'blog_post[publish]'
288
- )
289
- end
290
- end
291
-
292
- describe '#index' do
293
- describe 'when there is one record and 15 or less users' do
294
- before :all do
295
- BlogPost.destroy_all
296
- @blog_post = BlogPost.create!(
297
- :title => "blog post title", :body => 'blog post body',
298
- :user => @user
299
- )
300
- tag1 = Tag.find_or_create_by_tag 'tag1'
301
- BlogPostTag.create! :blog_post => @blog_post, :tag => tag1
302
- tag2 = Tag.find_or_create_by_tag 'tag2'
303
- BlogPostTag.create! :blog_post => @blog_post, :tag => tag2
304
- User.count.downto(15) do
305
- user = User.find(:first, :conditions => ['id != ?', @user.id])
306
- user.destroy
307
- end
308
- end
309
-
310
- before :each do
311
- get :index
312
- response.should be_success
313
- end
314
-
315
- it 'should show the tags' do
316
- response.body.should match(/(tag2 tag1|tag1 tag2)/)
317
- end
318
-
319
- it 'should show the title' do
320
- response.body.should match(/blog post title/)
321
- end
322
-
323
- it 'should not show the body' do
324
- response.body.should_not match(/blog post body/)
325
- end
326
-
327
- it 'should show a link to the all index page' do
328
- response.body.should match(%r|<a.*href="/admin/blog_posts2\?all=1"|)
329
- end
330
-
331
- it 'should not show a sort link for tags' do
332
- response.should_not have_tag("a", :text => 'Tags')
333
- end
334
-
335
- it 'should show a sort link for users' do
336
- assert_a_tag_with_get_args(
337
- 'Author', '/admin/blog_posts2',
338
- {:sort => 'user', :sort_order => 'asc'}, response.body
339
- )
340
- end
341
-
342
- it 'should render the author as a username with a link' do
343
- response.should have_tag('td') do
344
- with_tag(
345
- "a[href=?]", "/admin/users/edit/#{@user.id}", :text => 'soren'
346
- )
347
- end
348
- end
349
-
350
- it "should say 'Yes' or 'No' for the textile field" do
351
- response.body.should match(/No/)
352
- end
353
-
354
- it 'should show a search form with specific fields' do
355
- response.should have_tag(
356
- 'form[id=search_form][method=get]', :text => /Title/
357
- ) do
358
- with_tag(
359
- 'input[type=radio][name=?][value=all][checked=checked]',
360
- 'search[(all_or_any)]'
361
- )
362
- with_tag(
363
- 'input[type=radio][name=?][value=any]', 'search[(all_or_any)]'
364
- )
365
- with_tag('input[name=?]', 'search[title]')
366
- with_tag('input[name=?]', 'search[body]')
367
- with_tag('select[name=?]', 'search[textile]') do
368
- with_tag("option[value='']", :text => '')
369
- with_tag("option[value='true']", :text => 'Yes')
370
- with_tag("option[value='false']", :text => 'No')
371
- end
372
- with_tag('select[name=?]', 'search[user_id]') do
373
- with_tag("option[value='']", :text => '')
374
- with_tag("option[value=?]", @user.id)
375
- end
376
- end
377
- end
378
-
379
- it 'should show a link to /admin/comments/new' do
380
- response.should have_tag('td') do
381
- with_tag(
382
- "a[href=?]",
383
- "/admin/comments/new?comment%5Bblog_post_id%5D=#{@blog_post.id}",
384
- :text => "New comment"
385
- )
386
- end
387
- end
388
-
389
- it "should have a header of 'Blog posts (unpublished)'" do
390
- response.should have_tag('h2', :text => 'Blog posts (unpublished)')
391
- end
392
-
393
- it 'should render custom HTML after the index' do
394
- response.should have_tag(
395
- '#after_index', :text => 'Custom HTML rendered after the index'
396
- )
397
- end
398
-
399
- it 'should render custom HTML before the index' do
400
- response.should have_tag(
401
- '#before_index', :text => 'Custom HTML rendered before the index'
402
- )
403
- end
404
-
405
- it 'should not have a blank checkbox for the body search field' do
406
- response.should have_tag('form[id=search_form][method=get]') do
407
- without_tag("input[type=checkbox][name=?]", "search[body(blank)]")
408
- end
409
- end
410
-
411
- it 'should output ivar set by index_before_render controller hook' do
412
- assigns(:var_set_by_before_render_for_index_hook).should_not be_nil
413
- response.body.should match(/Confirmed that we have some records/)
414
- end
415
- end
416
-
417
- describe 'when there is one published post and one unpublished post' do
418
- before :all do
419
- BlogPost.create! :title => "--unpublished--", :user => @user
420
- BlogPost.create!(
421
- :title => "--published--", :published_at => Time.now.utc,
422
- :user => @user
423
- )
424
- end
425
-
426
- before :each do
427
- get :index
428
- response.should be_success
429
- end
430
-
431
- it 'should show the unpublished post' do
432
- response.body.should match(/--unpublished--/)
433
- end
434
-
435
- it 'should not show the published post' do
436
- response.body.should_not match(/--published--/)
437
- end
438
- end
439
-
440
- end
441
-
442
- describe '#index when there is 1 blog post and 16 Users' do
443
- before :all do
444
- @blog_post = BlogPost.create! :title => random_word, :user => @user
445
- User.count.upto(16) do |i|
446
- User.create! :username => random_word
447
- end
448
- end
449
-
450
- before :each do
451
- get :index
452
- end
453
-
454
- it 'should use the autocompleter in the search form for users' do
455
- response.should_not have_tag("select[name=?]", "search[user_id]]")
456
- response.should have_tag(
457
- "input:not([value])[id=user_autocomplete_input]"
458
- )
459
- response.should have_tag(
460
- "input:not([value])[type=hidden][name=?][id=search_user_id]",
461
- "search[user_id]"
462
- )
463
- response.should have_tag("div[id=user_autocomplete_palette]")
464
- response.should have_tag('div[id=clear_user_link]')
465
- response.body.should match(
466
- %r|
467
- new\s*AdminAssistant.RestrictedAutocompleter\(
468
- \s*"user",
469
- \s*"search_user_id",
470
- \s*"/admin/blog_posts2/autocomplete_user",
471
- [^)]*"includeBlank":\s*true
472
- |mx
473
- )
474
- end
475
- end
476
-
477
- describe '#index?all=1' do
478
- before :all do
479
- BlogPost.create!(
480
- :title => "--published--", :published_at => Time.now.utc,
481
- :user => @user
482
- )
483
- end
484
-
485
- before :each do
486
- get :index, :all => '1'
487
- response.should be_success
488
- end
489
-
490
- it 'should show published posts' do
491
- response.body.should match(/--published--/)
492
- end
493
-
494
- it 'should show a sort link for titles that includes all=1' do
495
- assert_a_tag_with_get_args(
496
- 'Title', '/admin/blog_posts2',
497
- {:sort => 'title', :sort_order => 'asc', :all => '1'}, response.body
498
- )
499
- end
500
-
501
- it "should have a header of 'Blog posts (all)'" do
502
- response.should have_tag('h2', :text => 'Blog posts (all)')
503
- end
504
- end
505
-
506
- describe '#index?all=1 with two published posts' do
507
- before :all do
508
- BlogPost.create!(
509
- :title => 'published later', :published_at => Time.utc(2009, 2, 1),
510
- :user => @user
511
- )
512
- BlogPost.create!(
513
- :title => 'published earlier', :published_at => Time.utc(2009, 1, 1),
514
- :user => @user
515
- )
516
- end
517
-
518
- before :each do
519
- get :index, :all => '1'
520
- end
521
-
522
- it 'should order by published_at desc' do
523
- response.body.should match(/published later.*published earlier/m)
524
- end
525
- end
526
-
527
- describe '#index when searching for foobar' do
528
- before :all do
529
- BlogPost.destroy_all
530
- BlogPost.create!(
531
- :title => 'textile_false_foobar', :textile => false, :user => @user
532
- )
533
- BlogPost.create!(
534
- :title => 'textile_true_foobar', :textile => true, :user => @user
535
- )
536
- BlogPost.create!(
537
- :title => 'not_in_the_title', :textile => false,
538
- :body => 'foobar here though', :user => @user
539
- )
540
- BlogPost.create!(
541
- :title => 'textile is false', :textile => false,
542
- :body => "body doesn't say f**bar", :user => @user
543
- )
544
- BlogPost.create!(
545
- :title => 'already published', :textile => false,
546
- :body => "body doesn't say f**bar", :user => @user,
547
- :published_at => Time.now.utc
548
- )
549
- end
550
-
551
- describe "for title with 'foobar'" do
552
- before :each do
553
- get(
554
- :index,
555
- :search => {
556
- :body => "", :title => "foobar", :textile => "", :id => "",
557
- :user => ''
558
- }
559
- )
560
- response.should be_success
561
- end
562
-
563
- it 'should match records where textile=true' do
564
- response.should have_tag('td', :text => 'textile_true_foobar')
565
- end
566
-
567
- it 'should match records where textile=false' do
568
- response.should have_tag('td', :text => 'textile_false_foobar')
569
- end
570
-
571
- it "should show the textile and title search fields pre-set" do
572
- response.should have_tag('form[id=search_form][method=get]') do
573
- with_tag('input[name=?][value=foobar]', 'search[title]')
574
- with_tag('select[name=?]', 'search[textile]') do
575
- with_tag("option[value=''][selected=selected]", :text => '')
576
- with_tag("option[value='true']", :text => 'Yes')
577
- with_tag("option[value='false']", :text => 'No')
578
- end
579
- end
580
- end
581
- end
582
-
583
- describe "for title with 'foobar' and textile=false" do
584
- before :each do
585
- get(
586
- :index,
587
- :search => {
588
- :textile => 'false', :title => 'foobar', '(all_or_any)' => 'all',
589
- :user => ''
590
- }
591
- )
592
- response.should be_success
593
- end
594
-
595
- it "should show blog posts with textile=false and the word 'foobar' in the title" do
596
- response.should have_tag('td', :text => 'textile_false_foobar')
597
- end
598
-
599
- it "should not show a blog post with textile=true" do
600
- response.should_not have_tag('td', :text => 'textile_true_foobar')
601
- end
602
-
603
- it "should not show a blog post just 'cause it has 'foobar' in the body" do
604
- response.should_not have_tag('td', :text => 'not_in_the_title')
605
- end
606
-
607
- it "should show the textile, title, and all-or-any search fields pre-set" do
608
- response.should have_tag('form[id=search_form][method=get]') do
609
- with_tag(
610
- 'input[type=radio][name=?][value=all][checked=checked]',
611
- 'search[(all_or_any)]'
612
- )
613
- with_tag('input[name=?][value=foobar]', 'search[title]')
614
- with_tag('select[name=?]', 'search[textile]') do
615
- with_tag("option[value='']", :text => '')
616
- with_tag("option[value='true']", :text => 'Yes')
617
- with_tag("option[value='false'][selected=selected]", :text => 'No')
618
- end
619
- end
620
- end
621
- end
622
-
623
- describe "for title with 'foobar' or textile=false" do
624
- before :each do
625
- get(
626
- :index,
627
- :search => {
628
- :textile => 'false', :title => 'foobar', '(all_or_any)' => 'any',
629
- :user => ''
630
- }
631
- )
632
- response.should be_success
633
- end
634
-
635
- it "should show a blog post with 'foobar' in the title" do
636
- response.should have_tag('td', :text => 'textile_true_foobar')
637
- end
638
-
639
- it "should show a blog post with textile=false" do
640
- response.should have_tag('td', :text => 'textile is false')
641
- end
642
-
643
- it "should not show a blog post that's already published, because of the conditions set in controller" do
644
- response.should_not have_tag('td', :text => 'already published')
645
- end
646
-
647
- it "should show the textile, title, and all-or-any search fields pre-set" do
648
- response.should have_tag('form[id=search_form][method=get]') do
649
- with_tag(
650
- 'input[type=radio][name=?][value=any][checked=checked]',
651
- 'search[(all_or_any)]'
652
- )
653
- with_tag('input[name=?][value=foobar]', 'search[title]')
654
- with_tag('select[name=?]', 'search[textile]') do
655
- with_tag("option[value='']", :text => '')
656
- with_tag("option[value='true']", :text => 'Yes')
657
- with_tag("option[value='false'][selected=selected]", :text => 'No')
658
- end
659
- end
660
- end
661
- end
662
- end
663
-
664
- describe '#index when searching by user and there are less than 15 users' do
665
- before :all do
666
- @user2 = User.create! :username => 'Jean-Paul'
667
- User.count.downto(14) do
668
- user = User.find(
669
- :first,
670
- :conditions => [
671
- 'username != ? and username != ?', @user.username, @user.username
672
- ]
673
- )
674
- user.destroy
675
- end
676
- BlogPost.destroy_all
677
- BlogPost.create! :title => "Soren's first post", :user => @user
678
- BlogPost.create! :title => "Soren's second post", :user => @user
679
- BlogPost.create! :title => "Jean-Paul's post", :user => @user2
680
- end
681
-
682
- before :each do
683
- get(
684
- :index,
685
- :search => {:textile => '', :title => '', :user_id => @user2.id.to_s}
686
- )
687
- response.should be_success
688
- end
689
-
690
- it 'should show blog posts by Jean-Paul' do
691
- response.should have_tag('td', :text => "Jean-Paul's post")
692
- end
693
-
694
- it 'should not show blog posts by Soren' do
695
- response.should_not have_tag('td', :text => "Soren's first post")
696
- response.should_not have_tag('td', :text => "Soren's second post")
697
- end
698
-
699
- it 'should show the user field pre-set' do
700
- response.should have_tag(
701
- 'form[id=search_form][method=get]', :text => /Title/
702
- ) do
703
- with_tag('select[name=?]', 'search[user_id]') do
704
- with_tag("option[value='']", :text => '')
705
- with_tag("option[value=?][selected=selected]", @user2.id)
706
- end
707
- end
708
- end
709
- end
710
-
711
- describe '#index when searching by user and there are more than 15 users' do
712
- before :all do
713
- @blog_post = BlogPost.create! :title => random_word, :user => @user
714
- User.count.upto(16) do |i|
715
- User.create! :username => "--user #{i}--"
716
- end
717
- end
718
-
719
- before :each do
720
- get(
721
- :index,
722
- :search => {:textile => '', :title => '', :user_id => @user.id.to_s}
723
- )
724
- response.should be_success
725
- end
726
-
727
- it 'should show pre-populated user autocomplete in the search form' do
728
- response.should_not have_tag("select[name=?]", "search[user_id]]")
729
- response.should have_tag(
730
- "input[id=user_autocomplete_input][value=?]", @user.username
731
- )
732
- response.should have_tag(
733
- "input[type=hidden][name=?][id=search_user_id][value=?]",
734
- "search[user_id]", @user.id.to_s
735
- )
736
- response.should have_tag("div[id=user_autocomplete_palette]")
737
- response.should have_tag('div[id=clear_user_link]')
738
- response.body.should match(
739
- %r|
740
- new\s*AdminAssistant.RestrictedAutocompleter\(
741
- \s*"user",
742
- \s*"search_user_id",
743
- \s*"/admin/blog_posts2/autocomplete_user",
744
- [^)]*"includeBlank":\s*true
745
- |mx
746
- )
747
- end
748
- end
749
-
750
- describe '#index with a blank search' do
751
- before :each do
752
- get(
753
- :index,
754
- :search => {
755
- :body => '', :title => '', :textile => '', :id => '', :user_id => '',
756
- '(all_or_any)' => 'all', 'id(comparator)' => ''
757
- }
758
- )
759
- end
760
-
761
- it 'should be successful' do
762
- response.should be_success
763
- end
764
- end
765
-
766
- describe '#index with one record with a false textile field' do
767
- before :all do
768
- BlogPost.destroy_all
769
- @blog_post = BlogPost.create!(
770
- :title => random_word, :user => @user, :textile => false
771
- )
772
- end
773
-
774
- before :each do
775
- get :index
776
- end
777
-
778
- it 'should make the textile field an Ajax toggle' do
779
- toggle_div_id = "blog_post_#{@blog_post.id}_textile"
780
- post_url =
781
- "/admin/blog_posts2/update/#{@blog_post.id}?" +
782
- CGI.escape('blog_post[textile]') + "=1&amp;from=#{toggle_div_id}"
783
- response.should have_tag("div[id=?]", toggle_div_id) do
784
- ajax_substr = "new Ajax.Updater('#{toggle_div_id}', '#{post_url}'"
785
- with_tag("a[href=#][onclick*=?]", ajax_substr, :text => 'No')
786
- end
787
- end
788
- end
789
-
790
- describe '#index with 11 blog posts' do
791
- before :all do
792
- BlogPost.destroy_all
793
- 1.upto(11) do |i|
794
- BlogPost.create!(
795
- :title => "--post #{i}--", :user => @user
796
- )
797
- end
798
- end
799
-
800
- before :each do
801
- get :index
802
- end
803
-
804
- it 'should show link to page 2' do
805
- response.should have_tag("a[href=/admin/blog_posts2?page=2]")
806
- end
807
-
808
- it 'should say 11 blog posts found' do
809
- response.body.should match(/11 blog posts found/)
810
- end
811
-
812
- it 'should mark the table rows with custom CSS class' do
813
- response.should have_tag('tr[class~="custom_tr_css_class"]')
814
- end
815
-
816
- it 'should mark the user cells with custom CSS class' do
817
- response.should have_tag('td[class~="custom_td_css_class"]', :text => @user.username)
818
- end
819
- end
820
-
821
- describe '#new' do
822
- before :all do
823
- Tag.find_or_create_by_tag 'tag_from_yesterday'
824
- end
825
-
826
- before :each do
827
- get :new
828
- end
829
-
830
- it 'should show a field for tags' do
831
- response.body.should match(%r|<input.*name="blog_post\[tags\]"|m)
832
- end
833
-
834
- it 'should show current tags' do
835
- response.body.should match(/tag_from_yesterday/)
836
- end
837
-
838
- it "should show a checkbox for the 'publish' virtual field" do
839
- if %w(2.3.2 2.3.3 2.3.4).include?(RAILS_GEM_VERSION)
840
- response.body.should match(
841
- %r!
842
- <input[^>]*
843
- (name="blog_post\[publish\][^>]*type="hidden"[^>]value="0"|
844
- type="hidden"[^>]*name="blog_post\[publish\][^>]value="0")
845
- .*
846
- <input[^>]*
847
- (name="blog_post\[publish\][^>]*type="checkbox"[^>]value="1"|
848
- type="checkbox"[^>]*name="blog_post\[publish\][^>]value="1")
849
- !x
850
- )
851
- elsif %w(2.1.0 2.1.2 2.2.2).include?(RAILS_GEM_VERSION)
852
- response.body.should match(
853
- %r!
854
- <input[^>]*
855
- (name="blog_post\[publish\][^>]*type="checkbox"[^>]value="1"|
856
- type="checkbox"[^>]*name="blog_post\[publish\][^>]value="1")
857
- .*
858
- <input[^>]*
859
- (name="blog_post\[publish\][^>]*type="hidden"[^>]value="0"|
860
- type="hidden"[^>]*name="blog_post\[publish\][^>]value="0")
861
- !x
862
- )
863
- else
864
- raise "I don't have a specified behavior for #{RAILS_GEM_VERSION}"
865
- end
866
- end
867
-
868
- it "should not duplicate the DOM ID of the 'publish' checkbox on the page" do
869
- response.body.scan(/id="blog_post_publish"|id="blog_post\[publish\]"/).size.should == 1
870
- end
871
-
872
- it "should show the description for the 'publish' virtual field" do
873
- response.body.should match(
874
- /Click this and published_at will be set automatically/
875
- )
876
- end
877
-
878
- it 'should show a preview button' do
879
- response.should have_tag('input[type=submit][value=Preview]')
880
- end
881
-
882
- it 'should use a textarea for the body field' do
883
- response.should have_tag(
884
- 'textarea[name=?][cols=20][rows=40]', 'blog_post[body]'
885
- )
886
- end
887
-
888
- it "should use a checkbox for the boolean field 'textile'" do
889
- response.body.should match(
890
- %r!
891
- <input[^>]*
892
- (name="blog_post\[textile\][^>]*type="checkbox"|
893
- type="checkbox"[^>]*name="blog_post\[textile\])
894
- !x
895
- )
896
- end
897
-
898
- it "should say 'Author' instead of 'User'" do
899
- response.body.should match(/Author/)
900
- end
901
- end
902
-
903
- describe '#show' do
904
- before :all do
905
- @blog_post = BlogPost.create! :title => random_word, :user => @user
906
- end
907
-
908
- before :each do
909
- get :show, :id => @blog_post.id
910
- response.should be_success
911
- end
912
-
913
- it 'should show user' do
914
- response.body.should match(/soren/)
915
- end
916
-
917
- it 'should not show created at' do
918
- response.body.should_not match(/Created at/)
919
- end
920
- end
921
-
922
- describe '#update' do
923
- before :all do
924
- @blog_post = BlogPost.create! :title => random_word, :user => @user
925
- end
926
-
927
- describe 'when there are no validation errors' do
928
- before :each do
929
- post(
930
- :update,
931
- :id => @blog_post.id, :blog_post => {:tags => 'tag1 tag2 tag3'}
932
- )
933
- end
934
-
935
- it 'should set the tags_string' do
936
- @blog_post.reload.tags_string.should match(/tag1,tag2,tag3/)
937
- end
938
- end
939
-
940
- describe "when the user has clicked 'Preview'" do
941
- before :each do
942
- title2 = random_word
943
- post(
944
- :update,
945
- :id => @blog_post.id, :blog_post => {:title => title2},
946
- :commit => 'Preview'
947
- )
948
- end
949
-
950
- it 'should redirect to the edit page with the preview flag' do
951
- response.should redirect_to(
952
- :action => 'edit', :id => @blog_post.id, :preview => '1'
953
- )
954
- end
955
- end
956
- end
957
-
958
- describe '#update with a bad tag' do
959
- before :all do
960
- @blog_post = BlogPost.create! :title => random_word, :user => @user
961
- end
962
-
963
- before :each do
964
- post(
965
- :update,
966
- :id => @blog_post.id,
967
- :blog_post => {:tags => "foo bar! baz"}
968
- )
969
- end
970
-
971
- it 'should render a useful error' do
972
- response.should have_tag("div.errorExplanation") do
973
- with_tag 'li', :text => "Tags contain invalid string 'bar!'"
974
- end
975
- end
976
-
977
- it 'should highlight the tag string entry' do
978
- response.should have_tag("div.fieldWithErrors") do
979
- with_tag "input[name=?][value=?]", "blog_post[tags]", "foo bar! baz"
980
- end
981
- end
982
- end
983
-
984
- describe '#update with a bad tag and a missing title' do
985
- before :all do
986
- @blog_post = BlogPost.create! :title => random_word, :user => @user
987
- end
988
-
989
- before :each do
990
- post(
991
- :update,
992
- :id => @blog_post.id,
993
- :blog_post => {:tags => "foo bar! baz", :title => ''}
994
- )
995
- end
996
-
997
- it 'should render a useful tags error' do
998
- response.should have_tag("div.errorExplanation") do
999
- with_tag 'li', :text => "Tags contain invalid string 'bar!'"
1000
- end
1001
- end
1002
-
1003
- it 'should highlight the tag string entry' do
1004
- response.should have_tag("div.fieldWithErrors") do
1005
- with_tag "input[name=?][value=?]", "blog_post[tags]", "foo bar! baz"
1006
- end
1007
- end
1008
-
1009
- it 'should render a useful title error' do
1010
- response.should have_tag("div.errorExplanation") do
1011
- with_tag 'li', :text => "Title can't be blank"
1012
- end
1013
- end
1014
-
1015
- it 'should highlight the title string entry' do
1016
- response.should have_tag("div.fieldWithErrors") do
1017
- with_tag "input[name=?][value=?]", "blog_post[title]", ""
1018
- end
1019
- end
1020
- end
1021
- end