admin_assistant 2.1.0 → 2.1.1

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 (173) hide show
  1. data/Rakefile +2 -2
  2. data/VERSION +1 -1
  3. data/admin_assistant.gemspec +2 -171
  4. metadata +4 -173
  5. data/rails_3_0/Gemfile +0 -12
  6. data/rails_3_0/Gemfile.lock +0 -100
  7. data/rails_3_0/README +0 -256
  8. data/rails_3_0/Rakefile +0 -7
  9. data/rails_3_0/app/controllers/admin/appointments2_controller.rb +0 -15
  10. data/rails_3_0/app/controllers/admin/appointments_controller.rb +0 -11
  11. data/rails_3_0/app/controllers/admin/blog_posts2_controller.rb +0 -138
  12. data/rails_3_0/app/controllers/admin/blog_posts3_controller.rb +0 -76
  13. data/rails_3_0/app/controllers/admin/blog_posts4_controller.rb +0 -21
  14. data/rails_3_0/app/controllers/admin/blog_posts5_controller.rb +0 -27
  15. data/rails_3_0/app/controllers/admin/blog_posts6_controller.rb +0 -10
  16. data/rails_3_0/app/controllers/admin/blog_posts_controller.rb +0 -9
  17. data/rails_3_0/app/controllers/admin/blog_posts_custom_new_and_edit_controller.rb +0 -15
  18. data/rails_3_0/app/controllers/admin/blog_posts_read_only_controller.rb +0 -19
  19. data/rails_3_0/app/controllers/admin/bookmarks_controller.rb +0 -11
  20. data/rails_3_0/app/controllers/admin/comments2_controller.rb +0 -14
  21. data/rails_3_0/app/controllers/admin/comments_controller.rb +0 -12
  22. data/rails_3_0/app/controllers/admin/images2_controller.rb +0 -11
  23. data/rails_3_0/app/controllers/admin/images_controller.rb +0 -6
  24. data/rails_3_0/app/controllers/admin/misconfigured1_controller.rb +0 -7
  25. data/rails_3_0/app/controllers/admin/not_migrated_yets_controller.rb +0 -9
  26. data/rails_3_0/app/controllers/admin/product_categories2_controller.rb +0 -7
  27. data/rails_3_0/app/controllers/admin/product_categories_controller.rb +0 -5
  28. data/rails_3_0/app/controllers/admin/television_airings_controller.rb +0 -5
  29. data/rails_3_0/app/controllers/admin/television_time_slots_controller.rb +0 -5
  30. data/rails_3_0/app/controllers/admin/users2_controller.rb +0 -10
  31. data/rails_3_0/app/controllers/admin/users_controller.rb +0 -48
  32. data/rails_3_0/app/controllers/application_controller.rb +0 -7
  33. data/rails_3_0/app/controllers/blog_posts_controller.rb +0 -5
  34. data/rails_3_0/app/helpers/admin/appointments_helper.rb +0 -2
  35. data/rails_3_0/app/helpers/admin/blog_posts2_helper.rb +0 -27
  36. data/rails_3_0/app/helpers/admin/blog_posts3_helper.rb +0 -2
  37. data/rails_3_0/app/helpers/admin/blog_posts4_helper.rb +0 -2
  38. data/rails_3_0/app/helpers/admin/blog_posts6_helper.rb +0 -13
  39. data/rails_3_0/app/helpers/admin/blog_posts_custom_new_and_edit_helper.rb +0 -29
  40. data/rails_3_0/app/helpers/admin/blog_posts_helper.rb +0 -2
  41. data/rails_3_0/app/helpers/admin/blog_posts_read_only_helper.rb +0 -2
  42. data/rails_3_0/app/helpers/admin/bookmarks_helper.rb +0 -2
  43. data/rails_3_0/app/helpers/admin/comments2_helper.rb +0 -2
  44. data/rails_3_0/app/helpers/admin/comments_helper.rb +0 -2
  45. data/rails_3_0/app/helpers/admin/images2_helper.rb +0 -8
  46. data/rails_3_0/app/helpers/admin/images_helper.rb +0 -2
  47. data/rails_3_0/app/helpers/admin/misconfigured1_helper.rb +0 -2
  48. data/rails_3_0/app/helpers/admin/not_migrated_yets_helper.rb +0 -2
  49. data/rails_3_0/app/helpers/admin/product_categories2_helper.rb +0 -2
  50. data/rails_3_0/app/helpers/admin/product_categories_helper.rb +0 -2
  51. data/rails_3_0/app/helpers/admin/television_airings_helper.rb +0 -2
  52. data/rails_3_0/app/helpers/admin/television_time_slots_helper.rb +0 -2
  53. data/rails_3_0/app/helpers/admin/users2_helper.rb +0 -2
  54. data/rails_3_0/app/helpers/admin/users_helper.rb +0 -13
  55. data/rails_3_0/app/helpers/application_helper.rb +0 -2
  56. data/rails_3_0/app/models/appointment.rb +0 -5
  57. data/rails_3_0/app/models/blog_post.rb +0 -14
  58. data/rails_3_0/app/models/blog_post_tag.rb +0 -6
  59. data/rails_3_0/app/models/bookmark.rb +0 -6
  60. data/rails_3_0/app/models/comment.rb +0 -4
  61. data/rails_3_0/app/models/image.rb +0 -3
  62. data/rails_3_0/app/models/not_migrated_yet.rb +0 -2
  63. data/rails_3_0/app/models/product.rb +0 -5
  64. data/rails_3_0/app/models/product_category.rb +0 -9
  65. data/rails_3_0/app/models/tag.rb +0 -4
  66. data/rails_3_0/app/models/television_airing.rb +0 -3
  67. data/rails_3_0/app/models/television_time_slot.rb +0 -11
  68. data/rails_3_0/app/models/user.rb +0 -11
  69. data/rails_3_0/app/views/admin/appointments/_subject_input.html.erb +0 -2
  70. data/rails_3_0/app/views/admin/appointments2/_time_input.html.erb +0 -31
  71. data/rails_3_0/app/views/admin/blog_posts2/_after_form.html.erb +0 -5
  72. data/rails_3_0/app/views/admin/blog_posts2/_after_index.html.erb +0 -1
  73. data/rails_3_0/app/views/admin/blog_posts2/_after_tags_input.html.erb +0 -16
  74. data/rails_3_0/app/views/admin/blog_posts2/_before_index.html.erb +0 -2
  75. data/rails_3_0/app/views/admin/blog_posts5/_after_index_header.html.erb +0 -8
  76. data/rails_3_0/app/views/admin/blog_posts_read_only/_body_for_show.html.erb +0 -1
  77. data/rails_3_0/app/views/layouts/admin.html.erb +0 -32
  78. data/rails_3_0/app/views/layouts/application.html.erb +0 -14
  79. data/rails_3_0/config.ru +0 -4
  80. data/rails_3_0/config/application.rb +0 -42
  81. data/rails_3_0/config/boot.rb +0 -6
  82. data/rails_3_0/config/database.yml +0 -22
  83. data/rails_3_0/config/environment.rb +0 -5
  84. data/rails_3_0/config/environments/development.rb +0 -25
  85. data/rails_3_0/config/environments/production.rb +0 -49
  86. data/rails_3_0/config/environments/test.rb +0 -35
  87. data/rails_3_0/config/initializers/backtrace_silencers.rb +0 -7
  88. data/rails_3_0/config/initializers/inflections.rb +0 -10
  89. data/rails_3_0/config/initializers/mime_types.rb +0 -5
  90. data/rails_3_0/config/initializers/secret_token.rb +0 -7
  91. data/rails_3_0/config/initializers/session_store.rb +0 -8
  92. data/rails_3_0/config/locales/en.yml +0 -5
  93. data/rails_3_0/config/routes.rb +0 -8
  94. data/rails_3_0/db/migrate/20090213215514_create_blog_posts.rb +0 -12
  95. data/rails_3_0/db/migrate/20090217225542_add_body_to_blog_posts.rb +0 -9
  96. data/rails_3_0/db/migrate/20090221220917_create_tags.rb +0 -13
  97. data/rails_3_0/db/migrate/20090221220947_create_blog_post_tags.rb +0 -14
  98. data/rails_3_0/db/migrate/20090222162204_add_textile_to_blog_posts.rb +0 -9
  99. data/rails_3_0/db/migrate/20090222163231_add_published_at_to_blog_posts.rb +0 -9
  100. data/rails_3_0/db/migrate/20090301191722_create_images.rb +0 -16
  101. data/rails_3_0/db/migrate/20090305165345_create_accounts.rb +0 -14
  102. data/rails_3_0/db/migrate/20090307225027_rename_accounts_to_users.rb +0 -9
  103. data/rails_3_0/db/migrate/20090307225750_add_user_id_to_blog_posts.rb +0 -9
  104. data/rails_3_0/db/migrate/20090309185114_change_blog_posts_textile.rb +0 -9
  105. data/rails_3_0/db/migrate/20090309193635_create_products.rb +0 -14
  106. data/rails_3_0/db/migrate/20090309203056_create_comments.rb +0 -15
  107. data/rails_3_0/db/migrate/20090323005947_create_file_column_images.rb +0 -12
  108. data/rails_3_0/db/migrate/20090326160049_add_birthday_to_users.rb +0 -9
  109. data/rails_3_0/db/migrate/20090326223606_add_state_to_users.rb +0 -9
  110. data/rails_3_0/db/migrate/20090503134004_add_file_column_image_to_products.rb +0 -9
  111. data/rails_3_0/db/migrate/20090617173651_create_bookmarks.rb +0 -15
  112. data/rails_3_0/db/migrate/20090624165355_add_tags_string_to_blog_post.rb +0 -9
  113. data/rails_3_0/db/migrate/20090625144313_add_avatar_fields_to_user.rb +0 -11
  114. data/rails_3_0/db/migrate/20090629202956_add_merged_into_to_blog_posts.rb +0 -9
  115. data/rails_3_0/db/migrate/20090701171857_add_force_textile_to_users.rb +0 -9
  116. data/rails_3_0/db/migrate/20090704163647_add_deleted_at_to_products.rb +0 -9
  117. data/rails_3_0/db/migrate/20090704173800_add_sale_fields_to_products.rb +0 -13
  118. data/rails_3_0/db/migrate/20090714024501_create_product_categories.rb +0 -15
  119. data/rails_3_0/db/migrate/20090819162835_add_admin_level_to_users.rb +0 -9
  120. data/rails_3_0/db/migrate/20091115134559_add_first_and_last_names_to_users.rb +0 -11
  121. data/rails_3_0/db/migrate/20091221011256_add_position_to_product_categories.rb +0 -9
  122. data/rails_3_0/db/migrate/20091222160814_create_appointments.rb +0 -14
  123. data/rails_3_0/db/migrate/20091227224547_add_user_id_to_appointments.rb +0 -9
  124. data/rails_3_0/db/migrate/20100214213359_create_television_time_slots.rb +0 -13
  125. data/rails_3_0/db/migrate/20100214213451_create_television_airings.rb +0 -15
  126. data/rails_3_0/db/migrate/20110426215702_remove_avatar_fields_from_users.rb +0 -11
  127. data/rails_3_0/db/seeds.rb +0 -7
  128. data/rails_3_0/doc/README_FOR_APP +0 -2
  129. data/rails_3_0/public/404.html +0 -26
  130. data/rails_3_0/public/422.html +0 -26
  131. data/rails_3_0/public/500.html +0 -26
  132. data/rails_3_0/public/favicon.ico +0 -0
  133. data/rails_3_0/public/images/rails.png +0 -0
  134. data/rails_3_0/public/index.html +0 -239
  135. data/rails_3_0/public/javascripts/application.js +0 -2
  136. data/rails_3_0/public/javascripts/jquery-1.4.4.min.js +0 -167
  137. data/rails_3_0/public/javascripts/rails.js +0 -191
  138. data/rails_3_0/public/robots.txt +0 -5
  139. data/rails_3_0/public/stylesheets/admin.css +0 -3
  140. data/rails_3_0/public/stylesheets/scaffold.css +0 -54
  141. data/rails_3_0/script/rails +0 -6
  142. data/rails_3_0/test/data/ruby_throated.jpg +0 -0
  143. data/rails_3_0/test/data/tweenbot.jpg +0 -0
  144. data/rails_3_0/test/fixtures/placeholder.txt +0 -0
  145. data/rails_3_0/test/integration/admin/appointments2_integration_test.rb +0 -79
  146. data/rails_3_0/test/integration/admin/appointments_integration_test.rb +0 -367
  147. data/rails_3_0/test/integration/admin/blog_posts2_integration_test.rb +0 -789
  148. data/rails_3_0/test/integration/admin/blog_posts3_integration_test.rb +0 -418
  149. data/rails_3_0/test/integration/admin/blog_posts4_integration_test.rb +0 -189
  150. data/rails_3_0/test/integration/admin/blog_posts5_integration_test.rb +0 -75
  151. data/rails_3_0/test/integration/admin/blog_posts6_integration_test.rb +0 -39
  152. data/rails_3_0/test/integration/admin/blog_posts_custom_new_and_edit_integration_test.rb +0 -89
  153. data/rails_3_0/test/integration/admin/blog_posts_integration_test.rb +0 -776
  154. data/rails_3_0/test/integration/admin/blog_posts_read_only_integration_test.rb +0 -69
  155. data/rails_3_0/test/integration/admin/bookmarks_integration_test.rb +0 -445
  156. data/rails_3_0/test/integration/admin/comments2_integration_test.rb +0 -52
  157. data/rails_3_0/test/integration/admin/comments_integration_test.rb +0 -50
  158. data/rails_3_0/test/integration/admin/images2_integration_test.rb +0 -33
  159. data/rails_3_0/test/integration/admin/images_integration_test.rb +0 -79
  160. data/rails_3_0/test/integration/admin/misconfigured1_integration_test.rb +0 -21
  161. data/rails_3_0/test/integration/admin/product_categories2_integration_test.rb +0 -179
  162. data/rails_3_0/test/integration/admin/product_categories_integration_test.rb +0 -12
  163. data/rails_3_0/test/integration/admin/television_airings_integration_test.rb +0 -25
  164. data/rails_3_0/test/integration/admin/users2_integration_test.rb +0 -48
  165. data/rails_3_0/test/integration/admin/users_integration_test.rb +0 -182
  166. data/rails_3_0/test/integration/blog_posts_integration_test.rb +0 -10
  167. data/rails_3_0/test/performance/browsing_test.rb +0 -9
  168. data/rails_3_0/test/test_helper.rb +0 -138
  169. data/rails_3_1/Gemfile +0 -12
  170. data/rails_3_1/Gemfile.lock +0 -116
  171. data/rails_3_1/README +0 -256
  172. data/rails_3_1/Rakefile +0 -7
  173. data/rails_3_1/config.ru +0 -4
@@ -1,75 +0,0 @@
1
- require File.expand_path(File.dirname(__FILE__) + "/../../test_helper")
2
-
3
- class Admin::BlogPosts5IntegrationTest < ActionController::IntegrationTest
4
- def setup
5
- User.destroy_all
6
- @soren = User.create! :username => 'soren'
7
- @jean = User.create! :username => 'jean'
8
- end
9
-
10
- def test_create_with_title_alt
11
- post(
12
- "/admin/blog_posts5",
13
- :blog_post => {
14
- :user_id => @soren.id, :title => '', :title_alt => 'alternate field'
15
- }
16
- )
17
- assert_response :redirect
18
-
19
- # should use the value of title alt for the title
20
- bp = BlogPost.last
21
- assert_equal('alternate field', bp.title)
22
- end
23
-
24
- def test_index
25
- BlogPost.create!(
26
- :published_at => Time.utc(2009, 9, 1, 12, 30, 0), :user => @soren,
27
- :title => 'whatever'
28
- )
29
- BlogPost.create!(
30
- :published_at => Time.utc(2009, 9, 1, 12, 30, 0), :user => @soren,
31
- :title => 'just do it'
32
- )
33
- get "/admin/blog_posts5"
34
- assert_response :success
35
-
36
- # should render the filter.html.erb partial
37
- assert_select('ul.aa_filter')
38
- assert_select('ul.aa_filter li a', :text => "soren")
39
- assert_select('td', :text => "whatever")
40
- assert_select('td', :text => "just do it")
41
- end
42
-
43
- def test_index_filter
44
- BlogPost.create!(
45
- :published_at => Time.utc(2009, 9, 1, 12, 30, 0), :user => @soren,
46
- :title => 'whatever'
47
- )
48
- BlogPost.create!(
49
- :published_at => Time.utc(2009, 9, 1, 12, 30, 0), :user => @soren,
50
- :title => 'whatever'
51
- )
52
-
53
- get "/admin/blog_posts5?filter=#{@soren.id}"
54
- assert_response :success
55
-
56
- # should filter blog posts by user id
57
- assert_select('td', :text => "whatever")
58
- assert_no_match(%r|<td[^>]*>just do it</td>|, response.body)
59
- end
60
-
61
- def test_search_retains_filter
62
- user1 = User.find_or_create_by_username 'friedrich'
63
- user2 = User.find_or_create_by_username 'rene'
64
-
65
- BlogPost.create! :title => "God is dead", :user => user1
66
- blog_post2 = BlogPost.create! :title => "I think therefore I am", :user => user2
67
-
68
- visit "/admin/blog_posts5"
69
- click_link "friedrich"
70
- fill_in "search", :with => 'I think therefore I am'
71
- click_button 'Search'
72
-
73
- assert_select 'a[href=?]', "/admin/blog_posts5/edit/#{blog_post2.id}", false
74
- end
75
- end
@@ -1,39 +0,0 @@
1
- require File.expand_path(File.dirname(__FILE__) + "/../../test_helper")
2
-
3
- class Admin::BlogPosts6IntegrationTest < ActionController::IntegrationTest
4
- def setup
5
- User.destroy_all
6
- @user = User.create! :username => 'soren'
7
- end
8
-
9
- def test_index_when_there_is_one_record_and_15_or_less_users
10
- BlogPost.destroy_all
11
- @blog_post = BlogPost.create!(
12
- :title => "blog post title", :body => 'blog post body',
13
- :user => @user
14
- )
15
- tag1 = Tag.find_or_create_by_tag 'tag1'
16
- BlogPostTag.create! :blog_post => @blog_post, :tag => tag1
17
- tag2 = Tag.find_or_create_by_tag 'tag2'
18
- BlogPostTag.create! :blog_post => @blog_post, :tag => tag2
19
- User.count.downto(15) do
20
- user = User.find(:first, :conditions => ['id != ?', @user.id])
21
- user.destroy
22
- end
23
-
24
- BlogPost.create!(
25
- :title => "return nil", :body => 'blog post body', :user => @user
26
- )
27
- get "/admin/blog_posts6"
28
- assert_response :success
29
-
30
- # should show a link to /admin/comments/new because extra_right_column_links_for_index is defined in the helper
31
- assert_select('td') do
32
- assert_select(
33
- "a[href=?]",
34
- "/admin/comments/new?comment[blog_post_id]=#{@blog_post.id}",
35
- :text => "New comment"
36
- )
37
- end
38
- end
39
- end
@@ -1,89 +0,0 @@
1
- require File.expand_path(File.dirname(__FILE__) + "/../../test_helper")
2
-
3
- class Admin::BlogPostsCustomNewAndEditIntegrationTest <
4
- ActionController::IntegrationTest
5
- def setup
6
- User.destroy_all
7
- @user = User.create! :username => 'soren'
8
- end
9
-
10
- def test_index_with_one_blog_psot
11
- BlogPost.destroy_all
12
- @blog_post = BlogPost.create!(
13
- :title => "hi there", :user => @user, :textile => false
14
- )
15
-
16
- get "/admin/blog_posts_custom_new_and_edit"
17
- assert_response :success
18
-
19
- # should have a new link
20
- assert_select(
21
- "a[href=/admin/blog_posts_custom_new_and_edit/new]", 'New blog post'
22
- )
23
-
24
- # should have an edit link
25
- assert_select('td.actions') do
26
- assert_select(
27
- "a[href=/admin/blog_posts_custom_new_and_edit/#{@blog_post.id}/edit]",
28
- 'Edit'
29
- )
30
- end
31
-
32
- # should have a destroy link
33
- assert_select('td.actions') do
34
- assert_select(
35
- "a.destroy[href=?][data-method=?]",
36
- "/admin/blog_posts_custom_new_and_edit/#{@blog_post.id}",
37
- 'delete',
38
- :text => 'Delete'
39
- )
40
- end
41
-
42
- # should have a show link
43
- assert_select('td.actions') do
44
- assert_select(
45
- "a[href=/admin/blog_posts_custom_new_and_edit/#{@blog_post.id}]",
46
- 'Show'
47
- )
48
- end
49
- end
50
-
51
- def test_index_with_helper_methods_suppressing_links
52
- BlogPost.destroy_all
53
- @blog_post = BlogPost.create!(
54
- :title => "hi there", :user => @user, :textile => false
55
- )
56
-
57
- get(
58
- "/admin/blog_posts_custom_new_and_edit",
59
- :flag_to_trigger_helper_methods => '1'
60
- )
61
- assert_response :success
62
-
63
- # should not have a new link
64
- assert_select(
65
- "a[href=/admin/blog_posts_custom_new_and_edit/new]", false,
66
- 'New blog post'
67
- )
68
-
69
- # should not have an edit link
70
- assert_select(
71
- "td.actions a[href=/admin/blog_posts_custom_new_and_edit/edit/#{@blog_post.id}]",
72
- false,
73
- 'Edit'
74
- )
75
-
76
- # should not have a destroy link
77
- assert_select("td.actions a[href=#]", false, 'Delete')
78
-
79
- # should not have a show link
80
- assert_select(
81
- "td.actions a[href=/admin/blog_posts_custom_new_and_edit/show/#{@blog_post.id}]",
82
- false,
83
- 'Show'
84
- )
85
-
86
- # should not have a search link
87
- assert_no_match(%r|<a[^>]*>Search</a>|, response.body)
88
- end
89
- end
@@ -1,776 +0,0 @@
1
- require File.expand_path(File.dirname(__FILE__) + "/../../test_helper")
2
-
3
- class Admin::BlogPostsIntegrationTest < ActionController::IntegrationTest
4
- def setup
5
- User.destroy_all
6
- @user = User.create! :username => 'soren'
7
- end
8
-
9
- def teardown
10
- # undoing mocking done for test_index_with_100_000_records
11
- def BlogPost.paginate(*args)
12
- super
13
- end
14
- end
15
-
16
- def test_autocomplete_user
17
- @bill1 = User.create! :username => 'Bill 1'
18
- @bill2 = User.create! :username => 'Bill 2'
19
- 1.upto(11) do |i|
20
- User.create! :username => "Bob #{i}"
21
- end
22
- User.create! :username => 'Bob'
23
-
24
- get "/admin/blog_posts/autocomplete_user?q=Jane"
25
- results = JSON.parse(response.body)
26
- assert results.empty?
27
-
28
- get "/admin/blog_posts/autocomplete_user?q=Bill"
29
- results = JSON.parse(response.body)
30
- assert_equal(2, results.size)
31
- assert(
32
- results.any? { |r| r['id'] == @bill1.id.to_s && r['name'] == 'Bill 1' }
33
- )
34
- assert(
35
- results.any? { |r| r['id'] == @bill2.id.to_s && r['name'] == 'Bill 2' }
36
- )
37
-
38
- get "/admin/blog_posts/autocomplete_user?q=Bob"
39
- results = JSON.parse(response.body)
40
- # should return a max of ten users
41
- assert_equal(10, results.size)
42
- # should make sure the shortest matches are included in the results
43
- assert(results.any? { |r| r['name'] == 'Bob' })
44
- end
45
-
46
- def test_back_to_index_comes_back_to_index_sorted_by_published_at
47
- user = User.find_or_create_by_username 'soren'
48
- BlogPost.create! :title => random_word, :user => user
49
- visit "/admin/blog_posts"
50
- click_link "Published at"
51
- click_link "New blog post"
52
- click_link "Back to index"
53
- assert_select 'th.asc', :text => 'Published at'
54
- end
55
-
56
- def test_comes_back_to_index_sorted_by_published_at_after_successful_creation
57
- user = User.find_or_create_by_username 'soren'
58
- BlogPost.create! :title => random_word, :user => user
59
- visit "/admin/blog_posts"
60
- click_link "Published at"
61
- click_link "New blog post"
62
- fill_in "blog_post[title]", :with => 'Funny ha ha'
63
- select "soren", :from => "blog_post[user_id]"
64
- click_button 'Create'
65
- assert_select 'th.asc', :text => 'Published at'
66
- end
67
-
68
- def test_create_when_there_are_no_validation_errors
69
- title = random_word
70
- post(
71
- "/admin/blog_posts",
72
- :blog_post => {
73
- :title => title, :textile => '1', :user_id => @user.id,
74
- 'published_at(1i)' => '', 'published_at(2i)' => '',
75
- 'published_at(3i)' => '', 'published_at(4i)' => '',
76
- 'published_at(5i)' => ''
77
- }
78
- )
79
- @blog_post = BlogPost.find_by_title(title)
80
-
81
- # should create a new BlogPost
82
- assert_not_nil(@blog_post)
83
- assert(@blog_post.textile?)
84
-
85
- # should not set published_at
86
- assert_nil(@blog_post.published_at)
87
- end
88
-
89
- def test_create_when_there_are_validation_errors
90
- post(
91
- "/admin/blog_posts",
92
- :blog_post => {:title => ''}, :origin => '/admin/blog_posts'
93
- )
94
-
95
- # should not create a new BlogPost
96
- assert_nil(BlogPost.find_by_title(''))
97
-
98
- # should print all the errors
99
- assert_response :success
100
- assert_match(/Title can't be blank/, response.body)
101
-
102
- # should show a link back to the index page
103
- assert_select("a[href=/admin/blog_posts]", 'Back to index')
104
- end
105
-
106
- def test_destroy
107
- # should be an unknown action
108
- assert_raises(AbstractController::ActionNotFound) do
109
- delete "/admin/blog_posts/123"
110
- end
111
- end
112
-
113
- def test_edit
114
- @blog_post = BlogPost.create! :title => random_word, :user => @user
115
-
116
- visit "/admin/blog_posts"
117
- click_link "Edit"
118
-
119
- # should show a form
120
- assert_match(
121
- %r|<form[^>]*action="/admin/blog_posts/#{@blog_post.id}".*input.*name="blog_post\[title\]"|m,
122
- response.body
123
- )
124
-
125
- # should prefill the values
126
- assert_match(%r|input.*value="#{@blog_post.title}"|, response.body)
127
-
128
- # should show a link back to the index page
129
- assert_select("a[href=/admin/blog_posts]", 'Back to index')
130
- end
131
-
132
- def test_edit_when_there_is_a_referer_value_on_the_request
133
- # should have the origin hidden input value
134
- blog_post = BlogPost.create! :title => random_word, :user => @user
135
- visit "/admin/blog_posts"
136
- click_link 'Published at'
137
- click_link 'Edit'
138
- assert_select(
139
- "input#origin[value=?]",
140
- "/admin/blog_posts?sort=published_at&amp;sort_order=asc"
141
- )
142
- end
143
-
144
- def test_edit_when_there_are_more_than_15_users
145
- @blog_post = BlogPost.create! :title => random_word, :user => @user
146
- 1.upto(16) do |i|
147
- User.create! :username => "--user #{i}--"
148
- end
149
- get "/admin/blog_posts/#{@blog_post.id}/edit"
150
-
151
- # should use the token input instead of a drop-down
152
- assert_select("select[name=?]", "blog_post[user_id]", false)
153
- assert_select("input[name=?][value=?]", 'blog_post[user_id]', @user.id)
154
- assert_match(
155
- %r|
156
- \$\("\#blog_post_user_id"\)\.tokenInput\(
157
- \s*"/admin/blog_posts/autocomplete_user",
158
- .*prePopulate
159
- .*"id":\s*#{@user.id}
160
- |mx,
161
- response.body
162
- )
163
- end
164
-
165
- def test_edit_when_there_are_less_than_15_users
166
- @blog_post = BlogPost.create! :title => random_word, :user => @user
167
- User.count.downto(14) do
168
- user = User.find(
169
- :first, :conditions => ['username != ?', @user.username]
170
- )
171
- user.destroy
172
- end
173
- get "/admin/blog_posts/#{@blog_post.id}/edit"
174
-
175
- # should use a drop-down with a blank option
176
- assert_select('select[name=?]', 'blog_post[user_id]') do
177
- assert_select "option[value='']"
178
- end
179
- end
180
-
181
- def test_index_when_there_are_no_records
182
- BlogPost.destroy_all
183
- get "/admin/blog_posts"
184
- assert_response :success
185
-
186
- # should say "No blog posts found"
187
- assert_match(/No blog posts found/, response.body)
188
-
189
- # should say the name of the model you're editing
190
- assert_match(/Blog posts/, response.body)
191
-
192
- # should have a new link
193
- assert_select(
194
- "a[href=/admin/blog_posts/new]", 'New blog post'
195
- )
196
-
197
- # should have a search form
198
- assert_select("a#show_search_form", :text => 'Search')
199
-
200
- # should use the admin layout
201
- assert_match(/admin_assistant sample Rails app/, response.body)
202
-
203
- # should use the default admin_assistant CSS
204
- assert_select(
205
- 'link[href^=/stylesheets/admin_assistant/default.css]'
206
- )
207
- end
208
-
209
- def test_index_when_there_is_one_record
210
- BlogPost.destroy_all
211
- @blog_post = BlogPost.create!(
212
- :title => "hi there", :user => @user, :textile => false
213
- )
214
- get "/admin/blog_posts"
215
- assert_response :success
216
-
217
- # should show title by default
218
- assert_match(/hi there/, response.body)
219
-
220
- # should say the name of the model you're editing
221
- assert_match(/Blog posts/, response.body)
222
-
223
- # should have a new link
224
- assert_select(
225
- "a[href=/admin/blog_posts/new]", 'New blog post'
226
- )
227
-
228
- # should have an edit link
229
- assert_select('td.actions') do
230
- assert_select "a[href=/admin/blog_posts/#{@blog_post.id}/edit]", 'Edit'
231
- end
232
-
233
- # should have a show link
234
- assert_select(
235
- "a[href=/admin/blog_posts/#{@blog_post.id}]", 'Show'
236
- )
237
-
238
- # should show sort links
239
- pretty_column_names = {
240
- 'id' => 'ID', 'title' => 'Title', 'body' => 'Body', 'user' => 'User'
241
- }
242
- pretty_column_names.each do |field, pretty_column_name|
243
- assert_a_tag_with_get_args(
244
- pretty_column_name, '/admin/blog_posts',
245
- {:sort => field, :sort_order => 'asc'}, response.body
246
- )
247
- end
248
-
249
- # should show pretty column headers
250
- column_headers = ['ID', 'Title', 'Body', 'User']
251
- column_headers.each do |column_header|
252
- assert_select('th') do
253
- assert_select 'a', column_header
254
- end
255
- end
256
-
257
- # should say how many records are found
258
- assert_select(
259
- 'div.aa_footer', :text => '1 blog post found'
260
- )
261
-
262
- # should say username because that's one of our default name fields
263
- assert_select('td', :text => 'soren')
264
-
265
- # should make the textile field an Ajax toggle
266
- toggle_div_id = "blog_post_#{@blog_post.id}_textile"
267
- post_url =
268
- "/admin/blog_posts/#{@blog_post.id}?" +
269
- 'blog_post[textile]' + "=1&amp;from=#{toggle_div_id}"
270
- assert_select("div[id=?]", toggle_div_id) do
271
- assert_select('a.toggle[href=?]', post_url, :text => 'false')
272
- end
273
-
274
- # should not show the page selector form
275
- assert_select('.pagination') do
276
- assert_select('form[method=get][action=/admin/blog_posts]', false)
277
- end
278
-
279
- # should have a tbody with the ID blog_posts_index_tbody
280
- assert_select('tbody#blog_posts_index_tbody')
281
-
282
- # should have a tr with the ID based on @blog_post.id
283
- assert_select("tr[id=blog_post_#{@blog_post.id}]")
284
-
285
- # should not show created_at or updated_at by default
286
- assert_no_match(/Created at/, response.body)
287
- assert_no_match(/Updated at/, response.body)
288
- end
289
-
290
- def test_index_when_there_is_one_record_that_somehow_has_a_nil_User
291
- @blog_post = BlogPost.create! :title => "hi there", :user => @user
292
- BlogPost.update_all "user_id = null"
293
- get "/admin/blog_posts"
294
-
295
- # should be fine with a nil User
296
- assert_response :success
297
- end
298
-
299
- def test_index_when_there_are_more_than_10_pages_of_results
300
- BlogPost.count.upto(251) do
301
- @blog_post = BlogPost.create!(
302
- :title => "hi there", :user => @user, :textile => false
303
- )
304
- end
305
- get "/admin/blog_posts"
306
-
307
- # should show the page selector form at the bottom
308
- assert_select('.pagination') do
309
- assert_select('form[method=get][action=/admin/blog_posts]') do
310
- assert_select 'input[name=page]'
311
- end
312
- end
313
- end
314
-
315
- def test_index_sorting_when_there_are_two_records
316
- BlogPost.destroy_all
317
- @blog_post1 = BlogPost.create!(
318
- :title => "title 1", :body => "body 2", :user => @user
319
- )
320
- @blog_post2 = BlogPost.create!(
321
- :title => "title 2", :body => "body 1", :user => @user
322
- )
323
-
324
- get "/admin/blog_posts", :sort => 'title', :sort_order => 'asc'
325
- assert_response :success
326
-
327
- # should sort by title asc
328
- assert_match(%r|title 1.*title 2|m, response.body)
329
-
330
- # should show a desc sort link for title
331
- assert_a_tag_with_get_args(
332
- 'Title', '/admin/blog_posts',
333
- {:sort => 'title', :sort_order => 'desc'}, response.body
334
- )
335
-
336
- # should show asc sort links for other fields
337
- pretty_column_names = {'id' => 'ID', 'body' => 'Body'}
338
- pretty_column_names.each do |field, pretty_column_name|
339
- assert_a_tag_with_get_args(
340
- pretty_column_name, '/admin/blog_posts',
341
- {:sort => field, :sort_order => 'asc'}, response.body
342
- )
343
- end
344
-
345
- # should use the right CSS classes in the title header
346
- assert_select('th[class="sort asc"]') do
347
- assert_select 'a', :text => 'Title'
348
- end
349
-
350
- # should have no CSS sorting classes in the header for ID
351
- assert_select('th:not([class])') do
352
- assert_select 'a', :text => 'ID'
353
- end
354
-
355
- # should mark the title cells with CSS sorting classes
356
- assert_select('td[class="sort"]', :text => 'title 1')
357
-
358
- get "/admin/blog_posts", :sort => 'title', :sort_order => 'desc'
359
- assert_response :success
360
-
361
- # should sort by title desc
362
- assert_match(%r|title 2.*title 1|m, response.body)
363
-
364
- # should show a no-sort link for title
365
- assert_select("a[href=/admin/blog_posts]", 'Title')
366
-
367
- # should show asc sort links for other fields
368
- pretty_column_names = {'id' => 'ID', 'body' => 'Body'}
369
- pretty_column_names.each do |field, pretty_column_name|
370
- assert_a_tag_with_get_args(
371
- pretty_column_name, '/admin/blog_posts',
372
- {:sort => field, :sort_order => 'asc'}, response.body
373
- )
374
- end
375
-
376
- # should use the right CSS classes in the title header
377
- assert_select('th[class="sort desc"]') do
378
- assert_select 'a', :text => 'Title'
379
- end
380
-
381
- # should have no CSS sorting classes in the header for ID
382
- assert_select('th:not([class])') do
383
- assert_select 'a', :text => 'ID'
384
- end
385
-
386
- # should mark the title cells with CSS sorting classes
387
- assert_select('td[class="sort"]', :text => 'title 1')
388
- end
389
-
390
- def test_index_sorting_by_user
391
- BlogPost.destroy_all
392
- jean_paul = User.create! :username => 'jean-paul'
393
- BlogPost.create!(
394
- :title => 'title 1', :body => 'body 1', :user => @user
395
- )
396
- BlogPost.create!(
397
- :title => 'title 2', :body => 'body 2', :user => jean_paul
398
- )
399
-
400
- get "/admin/blog_posts", :sort => 'user', :sort_order => 'asc'
401
- assert_response :success
402
-
403
- # should show jean-paul's blog post before soren's
404
- assert_match(%r|jean-paul.*soren|m, response.body)
405
-
406
- # should use the right CSS classes in the user header
407
- assert_select('th[class="sort asc"]') do
408
- assert_select 'a', :text => 'User'
409
- end
410
-
411
- # should mark the title cells with CSS sorting classes
412
- assert_select('td[class="sort"]', :text => 'jean-paul')
413
-
414
- # should show a desc sort link for user
415
- assert_a_tag_with_get_args(
416
- 'User', '/admin/blog_posts',
417
- {:sort => 'user', :sort_order => 'desc'}, response.body
418
- )
419
-
420
- get "/admin/blog_posts", :sort => 'user', :sort_order => 'desc'
421
- assert_response :success
422
-
423
- # should show soren's blog post before jean-paul's
424
- assert_match(%r|soren.*jean-paul|m, response.body)
425
- end
426
-
427
- def test_index_search_when_there_are_no_records
428
- BlogPost.destroy_all
429
- get "/admin/blog_posts", :search => 'foo'
430
- assert_response :success
431
-
432
- # should say 'No blog posts found'
433
- assert_match(/No blog posts found/, response.body)
434
-
435
- # should display the search with the terms
436
- assert_select("form#search_form");
437
- assert_match(
438
- %r|<script.*\$\('#show_search_form'\).click\(\);|m,
439
- response.body
440
- )
441
- assert_match(%r|input.*value="foo"|, response.body)
442
-
443
- # should show a link back to the index page
444
- assert_select("a[href=/admin/blog_posts]", 'Back to index')
445
- end
446
-
447
- def test_index_search_when_there_are_no_records_that_match
448
- BlogPost.destroy_all
449
- BlogPost.create!(
450
- :title => 'no match', :body => 'no match', :user => @user
451
- )
452
- get "/admin/blog_posts", :search => 'foo'
453
- assert_response :success
454
-
455
- # should say 'No blog posts found'
456
- assert_match(/No blog posts found/, response.body)
457
- end
458
-
459
- def test_index_search_when_there_is_a_blog_post_with_a_matching_title
460
- BlogPost.destroy_all
461
- BlogPost.create!(
462
- :title => 'foozy', :body => 'blog post body', :user => @user
463
- )
464
- get "/admin/blog_posts", :search => 'foo'
465
- assert_response :success
466
-
467
- # should show that blog post
468
- assert_match(/blog post body/, response.body)
469
- end
470
-
471
- def test_index_search_when_there_is_a_matching_body
472
- BlogPost.destroy_all
473
- BlogPost.create!(
474
- :title => 'blog post title', :body => 'barfoo', :user => @user
475
- )
476
- get "/admin/blog_posts", :search => 'foo'
477
- assert_response :success
478
-
479
- # should show that blog post
480
- assert_match(/blog post title/, response.body)
481
-
482
- # should say how many records are found
483
- assert_match(/1 blog post found/, response.body)
484
- end
485
-
486
- def test_index_pagination_with_51_records_when_looking_at_the_first_page
487
- BlogPost.destroy_all
488
- 1.upto(51) do |i|
489
- BlogPost.create!(
490
- :title => "title -#{i}-", :body => "body -#{i}-", :user => @user
491
- )
492
- end
493
-
494
- get "/admin/blog_posts"
495
- assert_response :success
496
-
497
- # should have a link to the next page
498
- assert_will_paginate_link("/admin/blog_posts", 2, 'Next &#8594;')
499
- assert_will_paginate_link("/admin/blog_posts", 2, '2')
500
-
501
- # should not have a link to the previous page
502
- assert_select(
503
- "a[href=/admin/blog_posts?page=0]", false, '&#8592; Previous'
504
- )
505
- assert_select("a[href=/admin/blog_posts?page=0]", false, '0')
506
-
507
- # should the full number of posts found
508
- assert_match(/51 blog posts found/, response.body)
509
- end
510
-
511
- def test_index_pagination_with_51_records_when_looking_at_the_second_page
512
- BlogPost.destroy_all
513
- 1.upto(51) do |i|
514
- BlogPost.create!(
515
- :title => "title -#{i}-", :body => "body -#{i}-", :user => @user
516
- )
517
- end
518
-
519
- get "/admin/blog_posts", :page => '2'
520
- assert_response :success
521
-
522
- # should have a link to the next page
523
- assert_will_paginate_link("/admin/blog_posts", 3, 'Next &#8594;')
524
- assert_will_paginate_link("/admin/blog_posts", 3, '3')
525
-
526
- # should have a link to the previous page
527
- assert_will_paginate_link("/admin/blog_posts", 1, '&#8592; Previous')
528
- assert_will_paginate_link("/admin/blog_posts", 1, '1')
529
-
530
- # should the full number of posts found
531
- assert_match(/51 blog posts found/, response.body)
532
- end
533
-
534
- def test_index_pagination_with_51_records_when_looking_at_the_third_page
535
- BlogPost.destroy_all
536
- 1.upto(51) do |i|
537
- BlogPost.create!(
538
- :title => "title -#{i}-", :body => "body -#{i}-", :user => @user
539
- )
540
- end
541
-
542
- get "/admin/blog_posts", :page => '3'
543
- assert_response :success
544
-
545
- # should not have a link to the next page
546
- assert_select(
547
- "a[href=/admin/blog_posts?page=4]", false, 'Next &#8594;'
548
- )
549
- assert_select("a[href=/admin/blog_posts?page=3]", false, '3')
550
-
551
- # should have a link to the previous page
552
- assert_will_paginate_link("/admin/blog_posts", 2, '&#8592; Previous')
553
- assert_will_paginate_link("/admin/blog_posts", 2, '2')
554
-
555
- # should the full number of posts found
556
- assert_match(/51 blog posts found/, response.body)
557
- end
558
-
559
- def test_index_with_100_000_records
560
- BlogPost.count.upto(25) do |i|
561
- BlogPost.create!(
562
- :title => "title -#{i}-", :body => "body -#{i}-", :user => @user
563
- )
564
- end
565
- def BlogPost.paginate(*args)
566
- collection = super(*args)
567
- collection.total_entries = 100_000
568
- collection
569
- end
570
-
571
- get "/admin/blog_posts"
572
-
573
- # should not offer a link to sort by user
574
- assert_no_a_tag_with_get_args(
575
- 'User', '/admin/blog_posts', {:sort => 'user', :sort_order => 'asc'},
576
- response.body
577
- )
578
- end
579
-
580
- def test_new
581
- @alfie = User.find_or_create_by_username 'alfie'
582
- visit "/admin/blog_posts"
583
- click_link "New blog post"
584
-
585
- # should show a form
586
- assert_match(
587
- %r|<form[^>]*action="/admin/blog_posts".*input.*name="blog_post\[title\]"|m,
588
- response.body
589
- )
590
-
591
- # should use a textarea for the body field
592
- assert_match(
593
- %r|<textarea.*name="blog_post\[body\]".*>.*</textarea>|, response.body
594
- )
595
-
596
- # should show a link back to the index page
597
- assert_select("a[href=/admin/blog_posts]", 'Back to index')
598
-
599
- # should show pretty field names
600
- field_names = ['Title', 'Body']
601
- field_names.each do |field_name|
602
- assert_select('label', field_name)
603
- end
604
-
605
- # should set the for attribute of the labels
606
- field_names = ['Title', 'Body']
607
- field_names.each do |field_name|
608
- assert_select("label[for=blog_post_#{field_name.downcase}]")
609
- end
610
-
611
- # should use a checkbox for the boolean field 'textile'
612
- assert_match(
613
- %r!
614
- <input[^>]*
615
- (name="blog_post\[textile\][^>]*type="checkbox"|
616
- type="checkbox"[^>]*name="blog_post\[textile\])
617
- !x,
618
- response.body
619
- )
620
-
621
- # should use a drop-down for the user field
622
- assert_select("select[name=?]", "blog_post[user_id]") do
623
- assert_select "option:nth-child(1)[value='']"
624
- assert_select "option:nth-child(2)[value=?]", @alfie.id, :text => 'alfie'
625
- assert_select "option:nth-child(3)[value=?]", @user.id, :text => 'soren'
626
- end
627
-
628
- # should set the controller path as a CSS class
629
- assert_select("div[class~=admin_blog_posts]")
630
-
631
- # should use dropdowns with nil defaults for published_at
632
- nums_and_dt_fields = {
633
- 1 => :year, 2 => :month, 3 => :day, 4 => :hour, 5 => :min
634
- }
635
- nums_and_dt_fields.each do |num, dt_field|
636
- name = "blog_post[published_at(#{num}i)]"
637
- value_for_now_option = Time.now.send(dt_field).to_s
638
- if [:hour, :min].include?(dt_field) && value_for_now_option.size == 1
639
- value_for_now_option = "0#{value_for_now_option}"
640
- end
641
- assert_select('select[name=?]', name) do
642
- assert_select "option[value='']"
643
- assert_select "option:not([selected])[value=?]", value_for_now_option
644
- end
645
- end
646
-
647
- # should show a clear link for published_at
648
- assert_select('a', :text => "Clear")
649
- end
650
-
651
- def test_new_with_a_preset_value_in_the_GET_arguments
652
- get "/admin/blog_posts/new", :blog_post => {:user_id => @user.id.to_s}
653
-
654
- # should set that preselected value
655
- assert_select("select[name=?]", "blog_post[user_id]") do
656
- assert_select "option[value=?][selected=selected]",
657
- @user.id, :text => 'soren'
658
- assert_select "option[value='']"
659
- end
660
- end
661
-
662
- def test_new_when_there_are_more_than_15_users
663
- User.destroy_all
664
- 1.upto(16) do |i|
665
- User.create! :username => "--user #{i}--"
666
- end
667
- get "/admin/blog_posts/new"
668
-
669
- # should use the token input instead of a drop-down
670
- assert_select("select[name=?]", "blog_post[user_id]", false)
671
- assert_select("input[name=?]", 'blog_post[user_id]')
672
- assert_match(
673
- %r|
674
- \$\("\#blog_post_user_id"\)\.tokenInput\(
675
- \s*"/admin/blog_posts/autocomplete_user"
676
- |mx,
677
- response.body
678
- )
679
- end
680
-
681
- def test_show
682
- BlogPost.destroy_all
683
- @blog_post = BlogPost.create!(
684
- :title => "foo > bar & baz", :user => @user, :textile => false
685
- )
686
- get "/admin/blog_posts/#{@blog_post.id}"
687
-
688
- # should show the HTML-escaped title
689
- assert_match(/foo &gt; bar &amp; baz/, response.body)
690
-
691
- # should have a link to edit
692
- assert_select(
693
- "a[href=/admin/blog_posts/#{@blog_post.id}/edit]", 'Edit'
694
- )
695
-
696
- # should show soren
697
- assert_match(/soren/, response.body)
698
- end
699
-
700
- def test_update_when_there_are_no_validation_errors
701
- @blog_post = BlogPost.create! :title => random_word, :user => @user
702
- title2 = random_word
703
- put(
704
- "/admin/blog_posts/#{@blog_post.id}",
705
- :blog_post => {
706
- :title => title2, 'published_at(1i)' => '2009',
707
- 'published_at(2i)' => '1', 'published_at(3i)' => '2',
708
- 'published_at(4i)' => '3', 'published_at(5i)' => '4'
709
- }
710
- )
711
- assert_redirected_to(:action => 'index')
712
- @blog_post_prime = BlogPost.find_by_title(title2)
713
-
714
- # should update a pre-existing BlogPost
715
- assert_not_nil(@blog_post_prime)
716
-
717
- # should set published_at
718
- assert_equal(Time.utc(2009, 1, 2, 3, 4), @blog_post_prime.published_at)
719
- end
720
-
721
- def test_update_when_there_are_validation_errors
722
- @blog_post = BlogPost.create! :title => random_word, :user => @user
723
- put(
724
- "/admin/blog_posts/#{@blog_post.id}",
725
- :blog_post => {:title => ''}, :origin => '/admin/blog_posts'
726
- )
727
-
728
- # should not create a new BlogPost
729
- assert_nil(BlogPost.find_by_title(''))
730
-
731
- # should print all the errors
732
- assert_response :success
733
- assert_match(/Title can't be blank/, response.body)
734
-
735
- # should show a link back to the index page
736
- assert_select("a[href=/admin/blog_posts]", 'Back to index')
737
- end
738
-
739
- def test_update_handles_the_origin_param
740
- @blog_post = BlogPost.create! :title => random_word, :user => @user
741
-
742
- # should redirect to the origin when there is a origin on the form submit
743
- origin = 'http://foo.com'
744
- put(
745
- "/admin/blog_posts/#{@blog_post.id}",
746
- :blog_post => {:title => 'foo'}, :origin => origin
747
- )
748
- assert_redirected_to(origin)
749
- end
750
-
751
- def test_update_as_Ajax_toggle
752
- @blog_post = BlogPost.create!(
753
- :title => random_word, :user => @user, :textile => false
754
- )
755
- put(
756
- "/admin/blog_posts/#{@blog_post.id}",
757
- :from => "blog_post_#{@blog_post.id}_textile",
758
- :blog_post => {:textile => '1'}
759
- )
760
-
761
- # should return success
762
- assert_response :success
763
-
764
- # should update the textile field
765
- assert(@blog_post.reload.textile)
766
-
767
- # should only render a small snippet of HTML with Ajax in it
768
- toggle_div_id = "blog_post_#{@blog_post.id}_textile"
769
- post_url =
770
- "/admin/blog_posts/#{@blog_post.id}?" +
771
- 'blog_post[textile]' + "=0&amp;from=#{toggle_div_id}"
772
- assert_select('div[id=?]', toggle_div_id, false)
773
- assert_select('a.toggle[href=?]', post_url, :text => 'true')
774
- assert_no_match(%r|<title>Admin</title>|, response.body)
775
- end
776
- end