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,52 +0,0 @@
1
- require File.expand_path(File.dirname(__FILE__) + "/../../test_helper")
2
-
3
- class Admin::Comments2IntegrationTest < ActionController::IntegrationTest
4
- def setup
5
- @user = User.find_or_create_by_username 'soren'
6
- @published_blog_post = BlogPost.create!(
7
- :title => 'published', :user => @user, :published_at => Time.now.utc
8
- )
9
- @unpublished_blog_post = BlogPost.create!(
10
- :title => 'unpublished', :user => @user, :published_at => nil
11
- )
12
- end
13
-
14
- def test_edit
15
- @comment = Comment.create!(
16
- :comment => "you're funny but I'm funnier",
17
- :blog_post => @published_blog_post
18
- )
19
- get "/admin/comments2/#{@comment.id}/edit"
20
-
21
- # should not have a textarea for Comment#comment
22
- assert_select("textarea[name=?]", "comment[comment]", false)
23
- end
24
-
25
- def test_index
26
- Comment.destroy_all
27
- @comment_on_published = Comment.create!(
28
- :comment => "this is published",
29
- :blog_post => @published_blog_post
30
- )
31
- @comment_on_unpublished = Comment.create!(
32
- :comment => "this was published but no more",
33
- :blog_post => @unpublished_blog_post
34
- )
35
- get "/admin/comments2"
36
-
37
- # should show a comment on a published blog post
38
- assert_select('td', :text => 'this is published')
39
-
40
- # should not show a comment on an unpublished blog post
41
- assert_no_match(
42
- %r|<td[^>]*>this was published but no more</td>|, response.body
43
- )
44
- end
45
-
46
- def test_new
47
- get "/admin/comments2/new"
48
-
49
- # should have a textarea for Comment#comment
50
- assert_select("textarea[name=?]", "comment[comment]")
51
- end
52
- end
@@ -1,50 +0,0 @@
1
- require File.expand_path(File.dirname(__FILE__) + "/../../test_helper")
2
-
3
- class Admin::CommentsIntegrationTest < ActionController::IntegrationTest
4
- def test_edit
5
- @comment = Comment.create! :comment => "you think you're so smart"
6
- get "/admin/comments/#{@comment.id}/edit"
7
-
8
- # should not allow the comments to be editable
9
- assert_match(/you think you're so smart/, response.body)
10
- assert_select('textarea', false)
11
- end
12
-
13
- def test_index_with_a_comment_without_the_word_smart
14
- Comment.create! :comment => "something else"
15
- get "/admin/comments"
16
-
17
- # should not include the index
18
- assert_no_match(/something else/, response.body)
19
- end
20
-
21
- def test_index_when_searching_by_comment
22
- @comment = Comment.create! :comment => "you think you're so smart"
23
- get "/admin/comments", :search => 'you'
24
-
25
- # should find the comment
26
- assert_match(/you think you're so smart/, response.body)
27
- end
28
-
29
- def test_index_when_searching_by_ID
30
- @comment = Comment.create! :comment => "you think you're so smart"
31
- get "/admin/comments", :search => @comment.id.to_s
32
-
33
- # should find the comment
34
- assert_match(/you think you're so smart/, response.body)
35
- end
36
-
37
- def test_new_with_at_least_16_blog_posts_and_16_users
38
- user = User.find_or_create_by_username 'soren'
39
- BlogPost.count.upto(16) do
40
- BlogPost.create! :title => random_word, :user => user
41
- end
42
- User.count.upto(16) do
43
- User.create! :username => random_word
44
- end
45
- get "/admin/comments/new"
46
-
47
- # should be a success
48
- assert_response :success
49
- end
50
- end
@@ -1,33 +0,0 @@
1
- require File.expand_path(File.dirname(__FILE__) + "/../../test_helper")
2
-
3
- class Admin::Images2IntegrationTest < ActionController::IntegrationTest
4
- def test_index
5
- Image.destroy_all
6
- @image = Image.create!(
7
- :image_file_name => '123.jpg', :image_content_type => 'image/jpeg',
8
- :image_file_size => '456'
9
- )
10
- @path = "/images/#{@image.id}/original/123.jpg"
11
- get "/admin/images2"
12
- assert_response :success
13
-
14
- # should show the image in-line as an <img> tag
15
- assert_select("img[src=?]", @path)
16
-
17
- # should not show the image path on its own as a value
18
- assert_no_match(%r|<td[^>]*>#{@path}</td>|, response.body)
19
-
20
- # should show path text field
21
- assert_select('input[value=?]', "http://www.example.com#{@path}")
22
-
23
- # should not show an edit link since we can only create or index
24
- assert_select(
25
- 'a[href=?]', "/admin/images2/edit/#{@image.id}", false
26
- )
27
-
28
- # should have a new link
29
- assert_select(
30
- "a[href=/admin/images2/new]", 'New image'
31
- )
32
- end
33
- end
@@ -1,79 +0,0 @@
1
- require File.expand_path(File.dirname(__FILE__) + "/../../test_helper")
2
-
3
- class Admin::ImagesIntegrationTest < ActionController::IntegrationTest
4
- def test_index
5
- @image = Image.create!(
6
- :image_file_name => '123.jpg', :image_content_type => 'image/jpeg',
7
- :image_file_size => '456'
8
- )
9
- get "/admin/images"
10
- assert_response :success
11
-
12
- # should show the image in-line as an <img> tag
13
- assert_select("img[src=/images/#{@image.id}/original/123.jpg]")
14
-
15
- # should not show paperclip-fields
16
- assert_no_match(/image_file_name/, response.body)
17
- assert_no_match(/image_content_type/, response.body)
18
- assert_no_match(/image_file_size/, response.body)
19
- assert_no_match(/image_updated_at/, response.body)
20
- end
21
-
22
- def test_create
23
- file = File.new './test/data/ruby_throated.jpg'
24
- post(
25
- "/admin/images",
26
- :image => {
27
- :image => fixture_file_upload('../../test/data/ruby_throated.jpg')
28
- },
29
- :html => {:multipart => true}
30
- )
31
- @image = Image.find_by_image_file_name 'ruby_throated.jpg'
32
-
33
- # should save an image record
34
- assert_not_nil @image
35
-
36
- # should save the image locally
37
- assert(
38
- File.exist?("./public/images/#{@image.id}/original/ruby_throated.jpg")
39
- )
40
- end
41
-
42
- def test_new
43
- get "/admin/images/new"
44
- assert_response :success
45
-
46
- # should have a multipart form
47
- assert_select('form[enctype=multipart/form-data]')
48
-
49
- # should have a file input for image
50
- assert_match(
51
- %r|<input[^>]*name="image\[image\]"[^>]*type="file"|,
52
- response.body
53
- )
54
-
55
- # should not show paperclip-fields
56
- assert_no_match(/image_file_name/, response.body)
57
- assert_no_match(/image_content_type/, response.body)
58
- assert_no_match(/image_file_size/, response.body)
59
- assert_no_match(/image_updated_at/, response.body)
60
- end
61
-
62
- def test_show
63
- @image = Image.create!(
64
- :image_file_name => '123.jpg', :image_content_type => 'image/jpeg',
65
- :image_file_size => '456'
66
- )
67
- get "/admin/images/#{@image.id}"
68
- assert_response :success
69
-
70
- # should show the image in-line as an <img> tag
71
- assert_select("img[src=/images/#{@image.id}/original/123.jpg]")
72
-
73
- # should not show paperclip-fields
74
- assert_no_match(/image_file_name/, response.body)
75
- assert_no_match(/image_content_type/, response.body)
76
- assert_no_match(/image_file_size/, response.body)
77
- assert_no_match(/image_updated_at/, response.body)
78
- end
79
- end
@@ -1,21 +0,0 @@
1
- require File.expand_path(File.dirname(__FILE__) + "/../../test_helper")
2
-
3
- class Admin::Misconfigured1IntegrationTest < ActionController::IntegrationTest
4
- def setup
5
- User.destroy_all
6
- @user = User.create! :username => 'soren', :password => 'password'
7
- end
8
-
9
- def test_index
10
- # should raise an explanatory error
11
- begin
12
- get "/admin/misconfigured1"
13
- fail "raise expected"
14
- rescue ActionView::Template::Error
15
- assert_match(
16
- /Virtual search column :has_something needs a conditions block/,
17
- $!.message
18
- )
19
- end
20
- end
21
- end
@@ -1,179 +0,0 @@
1
- require File.expand_path(File.dirname(__FILE__) + "/../../test_helper")
2
-
3
- class Admin::ProductCategories2IntegrationTest <
4
- ActionController::IntegrationTest
5
- def test_create_with_3_new_valid_product_categories_and_7_blanks
6
- ProductCategory.destroy_all
7
- post(
8
- "/admin/product_categories2",
9
- :product_category => {
10
- 'a' => {'category_name' => 'shiny', 'position' => 1},
11
- 'b' => {'category_name' => 'bouncy', 'position' => 2},
12
- 'c' => {'category_name' => 'sparkly', 'position' => 3},
13
- 'd' => {'category_name' => ''},
14
- 'e' => {'category_name' => ''},
15
- 'f' => {'category_name' => ''},
16
- 'g' => {'category_name' => ''},
17
- 'h' => {'category_name' => ''},
18
- 'i' => {'category_name' => ''},
19
- 'j' => {'category_name' => ''},
20
- }
21
- )
22
-
23
- # should create 3 product categories
24
- assert_equal(3, ProductCategory.count)
25
- %w(shiny bouncy sparkly).each do |name|
26
- assert_not_nil(
27
- ProductCategory.first(:conditions => {:category_name => name})
28
- )
29
- end
30
-
31
- # should redirect to index
32
- assert_redirected_to(:action => 'index')
33
- end
34
-
35
- def test_create_with_2_new_valid_product_categories_1_invalid_product_category_and_7_blanks
36
- ProductCategory.destroy_all
37
- ProductCategory.create! :category_name => 'shiny', :position => 1
38
- @orig_pc_count = ProductCategory.count
39
- post(
40
- "/admin/product_categories2",
41
- :product_category => {
42
- 'a' => {'category_name' => ''},
43
- 'b' => {'category_name' => ''},
44
- 'c' => {'category_name' => 'shiny', :position => 2},
45
- 'd' => {'category_name' => ''},
46
- 'e' => {'category_name' => 'bouncy', :position => 3},
47
- 'f' => {'category_name' => ''},
48
- 'g' => {'category_name' => 'sparkly', :position => 4},
49
- 'h' => {'category_name' => ''},
50
- 'i' => {'category_name' => ''},
51
- 'j' => {'category_name' => ''},
52
- }
53
- )
54
- assert_response :success
55
-
56
- # should not create any product categories
57
- assert_equal(@orig_pc_count, ProductCategory.count)
58
-
59
- # should render the error for the invalid product category
60
- assert_match(/has already been taken/, response.body)
61
-
62
- # should move non-empty records to the top of the rendered form
63
- assert_select("form") do
64
- assert_select(
65
- 'input[name=?][value=?]', "product_category[a][category_name]",
66
- 'shiny'
67
- )
68
- assert_select(
69
- 'input[name=?][value=?]', "product_category[b][category_name]",
70
- 'bouncy'
71
- )
72
- assert_select(
73
- 'input[name=?][value=?]', "product_category[c][category_name]",
74
- 'sparkly'
75
- )
76
- end
77
-
78
- # should render the error directly above the row with the error in it
79
- assert_select('form') do
80
- assert_select('table') do
81
- assert_select('tr') do
82
- assert_select('td', :text => /^\s*$/)
83
- assert_select(
84
- 'td.errorExplanation:not([colspan])',
85
- :text => /Category name has already been taken/
86
- )
87
- end
88
- assert_select('td.field_with_errors') do
89
- assert_select(
90
- 'input[name=?][value=?]', "product_category[a][category_name]",
91
- 'shiny'
92
- )
93
- end
94
- end
95
- end
96
-
97
- # should have 7 blank slots at the bottom
98
- 'd'.upto('j') do |prefix|
99
- assert_select(
100
- 'input[name=?]', "product_category[#{prefix}][category_name]"
101
- )
102
- end
103
- end
104
-
105
- def test_create_with_nothing_entered
106
- post(
107
- "/admin/product_categories2",
108
- :product_category => {
109
- 'a' => {'category_name' => ''},
110
- 'b' => {'category_name' => ''},
111
- 'c' => {'category_name' => ''},
112
- 'd' => {'category_name' => ''},
113
- 'e' => {'category_name' => ''},
114
- 'f' => {'category_name' => ''},
115
- 'g' => {'category_name' => ''},
116
- 'h' => {'category_name' => ''},
117
- 'i' => {'category_name' => ''},
118
- 'j' => {'category_name' => ''},
119
- }
120
- )
121
-
122
- # should redirect to index
123
- assert_redirected_to(:action => 'index')
124
- end
125
-
126
- def test_edit
127
- ProductCategory.destroy_all
128
- @pc = ProductCategory.create!(
129
- :category_name => 'shiny', :position => 1
130
- )
131
- get "/admin/product_categories2/#{@pc.id}/edit"
132
-
133
- # should show the form for one record at a time, like normal
134
- assert_select(
135
- 'form[action=?]', "/admin/product_categories2/#{@pc.id}"
136
- ) do
137
- assert_select(
138
- "input[name=?][value=?]", 'product_category[category_name]',
139
- @pc.category_name
140
- )
141
- end
142
- end
143
-
144
- def test_index
145
- get "/admin/product_categories2"
146
-
147
- # should use different text for the new link because we're doing multiple creates
148
- assert_select(
149
- "a[href=/admin/product_categories2/new]", 'New product categories'
150
- )
151
- end
152
-
153
- def test_new
154
- get "/admin/product_categories2/new"
155
-
156
- # should show a form for 10 product categories at once
157
- assert_select('form') do
158
- 'a'.upto('j') do |i|
159
- assert_select 'input[name=?]', "product_category[#{i}][category_name]"
160
- end
161
- assert_select 'input[type=submit]'
162
- end
163
- end
164
-
165
- def test_update
166
- ProductCategory.destroy_all
167
- @pc = ProductCategory.create!(
168
- :category_name => 'shiny', :position => 1
169
- )
170
- put(
171
- "/admin/product_categories2/#{@pc.id}",
172
- :product_category => {:category_name => 'SHINY'}
173
- )
174
-
175
- # should update one record at a time
176
- @pc.reload
177
- assert_equal('SHINY', @pc.category_name)
178
- end
179
- end
@@ -1,12 +0,0 @@
1
- require File.expand_path(File.dirname(__FILE__) + "/../../test_helper")
2
-
3
- class Admin::ProductCategoriesIntegrationTest <
4
- ActionController::IntegrationTest
5
- def test_index_with_no_records
6
- ProductCategory.destroy_all
7
- get "/admin/product_categories"
8
-
9
- # should say 'No product categories found'
10
- assert_match(/No product categories found/, response.body)
11
- end
12
- end
@@ -1,25 +0,0 @@
1
- require File.expand_path(File.dirname(__FILE__) + "/../../test_helper")
2
-
3
- class Admin::TelevisionAiringsIntegrationTest <
4
- ActionController::IntegrationTest
5
- def test_new
6
- TelevisionTimeSlot.destroy_all
7
- @tv_time_slot1 = TelevisionTimeSlot.create!(
8
- :time => Time.utc(2010, 2, 14, 9)
9
- )
10
- @tv_time_slot2 = TelevisionTimeSlot.create!(
11
- :time => Time.utc(2010, 2, 14, 14)
12
- )
13
- get "/admin/television_airings/new"
14
- assert_response :success
15
-
16
- # should sort television time slots by time, not by the time string
17
- assert_select(
18
- 'select[name=?]', 'television_airing[television_time_slot_id]'
19
- ) do
20
- assert_select 'option:first-child[value=""]'
21
- assert_select 'option:nth-child(2)[value=?]', @tv_time_slot1.id
22
- assert_select 'option:nth-child(3)[value=?]', @tv_time_slot2.id
23
- end
24
- end
25
- end