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,69 +0,0 @@
1
- require File.expand_path(File.dirname(__FILE__) + "/../../test_helper")
2
-
3
- class Admin::BlogPostsReadOnlyIntegrationTest <
4
- ActionController::IntegrationTest
5
- def setup
6
- User.destroy_all
7
- @user = User.create! :username => 'soren'
8
- end
9
-
10
- def test_index
11
- BlogPost.destroy_all
12
- @blog_post = BlogPost.create!(
13
- :title => "hi there", :user => @user, :textile => false
14
- )
15
- get "/admin/blog_posts_read_only"
16
-
17
- # should be successful
18
- assert_response :success
19
-
20
- # should not have a new link
21
- assert_no_match(%r|<a[^>]*>New blog post</a>|, response.body)
22
-
23
- # should not make the textile field an Ajax toggle
24
- assert_select(
25
- "div[id=?]", "blog_post_#{@blog_post.id}_textile", false
26
- )
27
-
28
- # should have a show link
29
- assert_select(
30
- "a[href=/admin/blog_posts_read_only/#{@blog_post.id}]", 'Show'
31
- )
32
- end
33
-
34
- def test_show_for_a_published_blog_post
35
- @blog_post = BlogPost.create!(
36
- :title => 'published', :user => @user, :published_at => Time.now.utc,
37
- :body => 'Today I ate a sandwich.'
38
- )
39
- get "/admin/blog_posts_read_only/#{@blog_post.id}"
40
-
41
- # should not show textile
42
- assert_no_match(/Textile/, response.body)
43
-
44
- # should use the block for the title
45
- assert_select(
46
- 'h2', :text => "Published blog post #{@blog_post.id}"
47
- )
48
-
49
- # should not show an edit link
50
- assert_select(
51
- 'a[href=?]', "/admin/blog_posts_read_only/edit/#{@blog_post.id}", false
52
- )
53
-
54
- # should use the custom partial to render the body
55
- assert_select('strong', :text => 'Today I ate a sandwich.')
56
- end
57
-
58
- def test_show_for_an_unpublished_blog_post
59
- @blog_post = BlogPost.create!(
60
- :title => 'unpublished', :user_id => @user.id, :published_at => nil
61
- )
62
- get "/admin/blog_posts_read_only/#{@blog_post.id}"
63
-
64
- # should use the block for the title
65
- assert_select(
66
- 'h2', :text => "Unpublished blog post #{@blog_post.id}"
67
- )
68
- end
69
- end
@@ -1,445 +0,0 @@
1
- require File.expand_path(File.dirname(__FILE__) + "/../../test_helper")
2
- require 'json'
3
-
4
- class Admin::BookmarksIntegrationTest < ActionController::IntegrationTest
5
- def setup
6
- @user = User.find_or_create_by_username 'soren'
7
- @blog_post = (BlogPost.find(:first) or
8
- BlogPost.create!(:title => random_word, :user => @user))
9
- end
10
-
11
- def setup_15_blog_posts_16_comments_16_products_and_16_users
12
- Bookmark.destroy_all
13
- @blog_post_bookmark = Bookmark.create!(
14
- :user => @user, :bookmarkable => @blog_post
15
- )
16
- BlogPost.count.downto(14) do
17
- bp = BlogPost.find :first, :conditions => ['id != ?', @blog_post.id]
18
- bp.destroy
19
- end
20
- Comment.count.upto(16) do
21
- Comment.create!(
22
- :user => @user, :blog_post => @blog_post, :comment => random_word
23
- )
24
- end
25
- @comment = Comment.first
26
- @comment_bookmark = Bookmark.create!(
27
- :user => @user, :bookmarkable => @comment
28
- )
29
- Product.count.upto(16) do
30
- Product.create! :name => random_word
31
- end
32
- @product = Product.first
33
- @product_bookmark = Bookmark.create!(
34
- :user => @user, :bookmarkable => @product
35
- )
36
- User.count.upto(16) do
37
- User.create! :username => random_word
38
- end
39
- @user_bookmark = Bookmark.create! :user => @user, :bookmarkable => @user
40
- end
41
-
42
- def test_autocomplete_blog_post_with_one_match
43
- get(
44
- "/admin/bookmarks/autocomplete_blog_post", :q => @blog_post.title
45
- )
46
- results = JSON.parse(response.body)
47
-
48
- assert(
49
- results.any? { |r|
50
- r['id'] == @blog_post.id.to_s && r['name'] == @blog_post.title
51
- }
52
- )
53
- end
54
-
55
- def test_index_while_not_searching
56
- setup_15_blog_posts_16_comments_16_products_and_16_users
57
- get "/admin/bookmarks"
58
-
59
- # should be successful
60
- assert_response :success
61
-
62
- # should have base hidden values for the polymorphic fields in the search form
63
- assert_select('form#search_form') do
64
- assert_select(
65
- 'input:not([value])[type=hidden][name=?][id=?]',
66
- 'search[bookmarkable_id]', 'search_bookmarkable_id'
67
- )
68
- assert_select(
69
- 'input:not([value])[type=hidden][name=?][id=?]',
70
- 'search[bookmarkable_type]', 'search_bookmarkable_type'
71
- )
72
- end
73
-
74
- # should show autocompleters for products and users in its search form
75
- assert_select('form#search_form') do
76
- [Product, User].each do |model_class|
77
- name = model_class.name.downcase
78
- assert_select(
79
- "input:not([data-initial-name])[id=bookmarkable_#{name}_id]" +
80
- "[data-behavior=autocomplete]"
81
- )
82
- end
83
- end
84
-
85
- # should show drop-downs for blog posts in its search form
86
- assert_select('form#search_form') do
87
- assert_select(
88
- "input[id=bookmarkable_blog_post_id][data-behavior=autocomplete]",
89
- false
90
- )
91
- assert_select('select[name=?]', 'bookmarkable_blog_post_id') do
92
- assert_select("option[value='']", :text => '')
93
- assert_select 'option[value=?]', @blog_post.id
94
- end
95
- end
96
-
97
- # should show ID entry for comments since it has no default_name_method
98
- assert_select('form#search_form') do
99
- assert_select('select[name=?]', 'bookmarkable_comment_id', false)
100
- assert_select 'input[name=?]', 'bookmarkable_comment_id'
101
- end
102
-
103
- # should show bookmarkable fields, using the target's default name method if it can find one
104
- assert_select(
105
- 'tr[id=?]', "bookmark_#{@blog_post_bookmark.id}"
106
- ) do
107
- assert_select(
108
- 'td', :text => "Blog post '#{@blog_post.title}'"
109
- )
110
- end
111
- assert_select(
112
- 'tr[id=?]', "bookmark_#{@comment_bookmark.id}"
113
- ) do
114
- assert_select 'td', :text => "Comment #{@comment.id}"
115
- end
116
- assert_select(
117
- 'tr[id=?]', "bookmark_#{@product_bookmark.id}"
118
- ) do
119
- assert_select 'td', :text => "Product '#{@product.name}'"
120
- end
121
- assert_select(
122
- 'tr[id=?]', "bookmark_#{@user_bookmark.id}"
123
- ) do
124
- assert_select 'td', :text => "User '#{@user.username}'"
125
- end
126
- end
127
-
128
- def test_index_while_searching_by_bookmarked_blog_post
129
- setup_15_blog_posts_16_comments_16_products_and_16_users
130
- get(
131
- "/admin/bookmarks",
132
- :search => {
133
- :bookmarkable_type => 'BlogPost', :bookmarkable_id => @blog_post.id
134
- }
135
- )
136
-
137
- # should be successful
138
- assert_response :success
139
-
140
- # should have base hidden values for the polymorphic fields in the search form
141
- assert_select('form#search_form') do
142
- assert_select(
143
- 'input[type=hidden][name=?][id=?][value=?]',
144
- 'search[bookmarkable_id]', 'search_bookmarkable_id', @blog_post.id
145
- )
146
- assert_select(
147
- 'input[type=hidden][name=?][id=?][value=?]',
148
- 'search[bookmarkable_type]', 'search_bookmarkable_type', 'BlogPost'
149
- )
150
- end
151
-
152
- # should show autocompleters for products and users in its search form
153
- assert_select('form#search_form') do
154
- [Product, User].each do |model_class|
155
- name = model_class.name.downcase
156
- assert_select(
157
- "input:not([value])[id=bookmarkable_#{name}_id]" +
158
- "[data-behavior=autocomplete]"
159
- )
160
- end
161
- end
162
-
163
- # should show drop-downs for blog posts in its search form
164
- assert_select('form#search_form') do
165
- assert_select(
166
- "input[id=bookmarkable_blog_post_id][data-behavior=autocomplete]",
167
- false
168
- )
169
- assert_select('select[name=?]', 'bookmarkable_blog_post_id') do
170
- assert_select("option[value='']", :text => '')
171
- assert_select 'option[value=?][selected=selected]', @blog_post.id
172
- end
173
- end
174
-
175
- # should show ID entry for comments since it has no default_name_method
176
- assert_select('form#search_form') do
177
- assert_select('select[name=?]', 'bookmarkable_comment_id', false)
178
- assert_select 'input[name=?]', 'bookmarkable_comment_id'
179
- end
180
-
181
- # should only show bookmarks of that blog post
182
- assert_select(
183
- 'tr[id=?]', "bookmark_#{@blog_post_bookmark.id}"
184
- )
185
- excluded_bookmarks = [
186
- @comment_bookmark, @product_bookmark, @user_bookmark
187
- ]
188
- excluded_bookmarks.each do |bookmark|
189
- assert_select('tr[id=?]', "bookmark_#{bookmark.id}", false)
190
- end
191
- end
192
-
193
- def test_index_while_searching_by_bookmarked_product
194
- setup_15_blog_posts_16_comments_16_products_and_16_users
195
- get(
196
- "/admin/bookmarks",
197
- :search => {
198
- :bookmarkable_type => 'Product',
199
- :bookmarkable_id => @product_bookmark.bookmarkable_id
200
- }
201
- )
202
-
203
- # should be successful
204
- assert_response :success
205
-
206
- # should have base hidden values for the polymorphic fields in the search form
207
- assert_select('form#search_form') do
208
- assert_select(
209
- 'input[type=hidden][name=?][id=?][value=?]',
210
- 'search[bookmarkable_id]', 'search_bookmarkable_id',
211
- @product_bookmark.bookmarkable_id
212
- )
213
- assert_select(
214
- 'input[type=hidden][name=?][id=?][value=?]',
215
- 'search[bookmarkable_type]', 'search_bookmarkable_type', 'Product'
216
- )
217
- end
218
-
219
- # should show autocompleters for products and users in its search form
220
- assert_select('form#search_form') do
221
- assert_select(
222
- "input[id=bookmarkable_product_id][data-initial-name=?]",
223
- "#{@product_bookmark.bookmarkable.name}"
224
- )
225
- assert_select("input:not([data-initial-name])[id=bookmarkable_user_id]")
226
- end
227
-
228
- # should show drop-downs for blog posts in its search form
229
- assert_select('form#search_form') do
230
- assert_select(
231
- "input[id=bookmarkable_blog_post_id][data-behavior=autocomplete]",
232
- false
233
- )
234
- assert_select('select[name=?]', 'bookmarkable_blog_post_id') do
235
- assert_select("option[value='']", :text => '')
236
- assert_select 'option[value=?]', @blog_post.id
237
- end
238
- end
239
-
240
- # should show only bookmarks of that product
241
- assert_select(
242
- 'tr[id=?]', "bookmark_#{@product_bookmark.id}"
243
- )
244
- excluded_bookmarks = [
245
- @blog_post_bookmark, @comment_bookmark, @user_bookmark
246
- ]
247
- excluded_bookmarks.each do |bookmark|
248
- assert_select('tr[id=?]', "bookmark_#{bookmark.id}", false)
249
- end
250
-
251
- # should show ID entry for comments since it has no default_name_method
252
- assert_select('form#search_form') do
253
- assert_select('select[name=?]', 'bookmarkable_comment_id', false)
254
- assert_select 'input[name=?]', 'bookmarkable_comment_id'
255
- end
256
- end
257
-
258
- def test_index_while_searching_by_bookmarked_comment
259
- setup_15_blog_posts_16_comments_16_products_and_16_users
260
- get(
261
- "/admin/bookmarks",
262
- :search => {
263
- :bookmarkable_type => 'Comment',
264
- :bookmarkable_id => @comment_bookmark.bookmarkable_id
265
- }
266
- )
267
-
268
- # should be successful
269
- assert_response :success
270
-
271
- # should have base hidden values for the polymorphic fields in the search form
272
- assert_select('form#search_form') do
273
- assert_select(
274
- 'input[type=hidden][name=?][id=?][value=?]',
275
- 'search[bookmarkable_id]', 'search_bookmarkable_id',
276
- @comment_bookmark.bookmarkable_id
277
- )
278
- assert_select(
279
- 'input[type=hidden][name=?][id=?][value=?]',
280
- 'search[bookmarkable_type]', 'search_bookmarkable_type', 'Comment'
281
- )
282
- end
283
-
284
- # should show autocompleters for products and users in its search form
285
- assert_select('form#search_form') do
286
- [Product, User].each do |model_class|
287
- name = model_class.name.downcase
288
- assert_select(
289
- "input:not([data-initial-name])[id=bookmarkable_#{name}_id]" +
290
- "[data-behavior=autocomplete]"
291
- )
292
- end
293
- end
294
-
295
- # should show drop-downs for blog posts in its search form
296
- assert_select('form#search_form') do
297
- assert_select(
298
- "input[id=bookmarkable_blog_post_id][data-behavior=autocomplete]",
299
- false
300
- )
301
- assert_select('select[name=?]', 'bookmarkable_blog_post_id') do
302
- assert_select("option[value='']", :text => '')
303
- assert_select 'option[value=?]', @blog_post.id
304
- end
305
- end
306
-
307
- # should show only bookmarks of that comment
308
- assert_select(
309
- 'tr[id=?]', "bookmark_#{@comment_bookmark.id}"
310
- )
311
- excluded_bookmarks = [
312
- @blog_post_bookmark, @product_bookmark, @user_bookmark
313
- ]
314
- excluded_bookmarks.each do |bookmark|
315
- assert_select('tr[id=?]', "bookmark_#{bookmark.id}", false)
316
- end
317
-
318
- # should show ID entry for comments since it has no default_name_method
319
- assert_select('form#search_form') do
320
- assert_select('select[name=?]', 'bookmarkable_comment_id', false)
321
- assert_select(
322
- 'input[name=?][value=?]', 'bookmarkable_comment_id',
323
- @comment_bookmark.bookmarkable_id
324
- )
325
- end
326
- end
327
-
328
- def test_index_with_bookmarks_of_different_blog_posts_by_different_users
329
- @user_blog_post_bookmark = Bookmark.create!(
330
- :user => @user, :bookmarkable => @blog_post
331
- )
332
- user2 = User.find_or_create_by_username 'Jean-Paul'
333
- blog_post2 = BlogPost.create!(:title => random_word, :user => user2)
334
- @user_blog_post2_bookmark = Bookmark.create!(
335
- :user => @user, :bookmarkable => blog_post2
336
- )
337
- @user2_blog_post_bookmark = Bookmark.create!(
338
- :user => user2, :bookmarkable => @blog_post
339
- )
340
- @user2_blog_post2_bookmark = Bookmark.create!(
341
- :user => user2, :bookmarkable => blog_post2
342
- )
343
- product = Product.find_or_create_by_name 'Chocolate bar'
344
- @user2_product_bookmark = Bookmark.create!(
345
- :user => user2, :bookmarkable => product
346
- )
347
-
348
- get(
349
- "/admin/bookmarks",
350
- :search => {
351
- '(all_or_any)' => 'any', :bookmarkable_type => 'BlogPost',
352
- :bookmarkable_id => @blog_post.id, :user_id => @user.id
353
- }
354
- )
355
-
356
- # should include bookmarks of the blog post
357
- assert_select(
358
- 'tr[id=?]', "bookmark_#{@user_blog_post_bookmark.id}"
359
- )
360
- assert_select(
361
- 'tr[id=?]', "bookmark_#{@user2_blog_post_bookmark.id}"
362
- )
363
-
364
- # should exclude bookmarks of other blog posts by other users
365
- assert_select(
366
- 'tr[id=?]', "bookmark_#{@user2_blog_post2_bookmark.id}", false
367
- )
368
-
369
- # should include bookmarks from the user
370
- assert_select(
371
- 'tr[id=?]', "bookmark_#{@user_blog_post_bookmark.id}"
372
- )
373
- assert_select(
374
- 'tr[id=?]', "bookmark_#{@user_blog_post2_bookmark.id}"
375
- )
376
-
377
- # should exclude bookmarks of other bookmarkable types by other users
378
- assert_select(
379
- 'tr[id=?]', "bookmark_#{@user2_product_bookmark.id}", false
380
- )
381
- end
382
-
383
- def test_index_with_a_blank_search
384
- Bookmark.destroy_all
385
- @blog_post_bookmark = Bookmark.create!(
386
- :user => @user, :bookmarkable => @blog_post
387
- )
388
-
389
- get(
390
- "/admin/bookmarks",
391
- :search => {
392
- :bookmarkable_type => '', :bookmarkable_id => '', :user_id => '',
393
- '(all_or_any)' => 'all'
394
- }
395
- )
396
-
397
- # should be successful
398
- assert_response :success
399
-
400
- # should include the bookmarks
401
- assert_select(
402
- 'tr[id=?]', "bookmark_#{@blog_post_bookmark.id}"
403
- )
404
- end
405
-
406
- def test_edit
407
- @bookmark = Bookmark.create! :user => @user, :bookmarkable => @blog_post
408
-
409
- get "/admin/bookmarks/#{@bookmark.id}/edit"
410
-
411
- # should have a 'Bookmarkable' field
412
- bt_name = 'bookmark[bookmarkable_type]'
413
- assert_select('select[name=?]', bt_name) do
414
- assert_select 'option[value=BlogPost][selected=selected]',
415
- :text => 'BlogPost'
416
- assert_select 'option[value=Comment]', :text => 'Comment'
417
- assert_select 'option[value=Product]', :text => 'Product'
418
- assert_select 'option[value=User]', :text => 'User'
419
- end
420
- assert_select(
421
- 'input[name=?][value=?]', 'bookmark[bookmarkable_id]', @blog_post.id
422
- )
423
- end
424
-
425
- def test_new
426
- get "/admin/bookmarks/new"
427
-
428
- # should be successful
429
- assert_response :success
430
-
431
- # should not have a 'Bookmarkable type' field label
432
- assert_no_match(%r|<label[^>]*>Bookmarkable type</label>|, response.body)
433
-
434
- # should have a 'Bookmarkable' field
435
- assert_select('label', :text => 'Bookmarkable')
436
- bt_name = 'bookmark[bookmarkable_type]'
437
- assert_select('select[name=?]', bt_name) do
438
- assert_select 'option[value=BlogPost]', :text => 'BlogPost'
439
- assert_select 'option[value=Comment]', :text => 'Comment'
440
- assert_select 'option[value=Product]', :text => 'Product'
441
- assert_select 'option[value=User]', :text => 'User'
442
- end
443
- assert_select('input[name=?]', 'bookmark[bookmarkable_id]')
444
- end
445
- end