admin_assistant 2.1.0 → 2.1.1

Sign up to get free protection for your applications and to get access to all the features.
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