admin_assistant 1.0.1 → 1.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/Rakefile +1 -0
- data/VERSION +1 -1
- data/admin_assistant.gemspec +1 -285
- metadata +3 -287
- data/test_rails_app/README +0 -256
- data/test_rails_app/Rakefile +0 -13
- data/test_rails_app/app/controllers/admin/appointments2_controller.rb +0 -15
- data/test_rails_app/app/controllers/admin/appointments_controller.rb +0 -11
- data/test_rails_app/app/controllers/admin/blog_posts2_controller.rb +0 -138
- data/test_rails_app/app/controllers/admin/blog_posts3_controller.rb +0 -76
- data/test_rails_app/app/controllers/admin/blog_posts4_controller.rb +0 -21
- data/test_rails_app/app/controllers/admin/blog_posts5_controller.rb +0 -27
- data/test_rails_app/app/controllers/admin/blog_posts6_controller.rb +0 -10
- data/test_rails_app/app/controllers/admin/blog_posts_controller.rb +0 -8
- data/test_rails_app/app/controllers/admin/blog_posts_custom_new_and_edit_controller.rb +0 -15
- data/test_rails_app/app/controllers/admin/blog_posts_read_only_controller.rb +0 -19
- data/test_rails_app/app/controllers/admin/bookmarks_controller.rb +0 -11
- data/test_rails_app/app/controllers/admin/comments2_controller.rb +0 -14
- data/test_rails_app/app/controllers/admin/comments_controller.rb +0 -12
- data/test_rails_app/app/controllers/admin/file_column_images2_controller.rb +0 -10
- data/test_rails_app/app/controllers/admin/file_column_images_controller.rb +0 -6
- data/test_rails_app/app/controllers/admin/images2_controller.rb +0 -11
- data/test_rails_app/app/controllers/admin/images_controller.rb +0 -6
- data/test_rails_app/app/controllers/admin/misconfigured1_controller.rb +0 -7
- data/test_rails_app/app/controllers/admin/not_migrated_yets_controller.rb +0 -9
- data/test_rails_app/app/controllers/admin/product_categories2_controller.rb +0 -7
- data/test_rails_app/app/controllers/admin/product_categories_controller.rb +0 -5
- data/test_rails_app/app/controllers/admin/products2_controller.rb +0 -15
- data/test_rails_app/app/controllers/admin/products_controller.rb +0 -31
- data/test_rails_app/app/controllers/admin/television_airings_controller.rb +0 -5
- data/test_rails_app/app/controllers/admin/television_time_slots_controller.rb +0 -5
- data/test_rails_app/app/controllers/admin/users2_controller.rb +0 -10
- data/test_rails_app/app/controllers/admin/users_controller.rb +0 -63
- data/test_rails_app/app/controllers/application.rb +0 -16
- data/test_rails_app/app/controllers/application_controller.rb +0 -16
- data/test_rails_app/app/controllers/blog_posts_controller.rb +0 -5
- data/test_rails_app/app/helpers/admin/appointments2_helper.rb +0 -2
- data/test_rails_app/app/helpers/admin/appointments_helper.rb +0 -2
- data/test_rails_app/app/helpers/admin/blog_posts2_helper.rb +0 -27
- data/test_rails_app/app/helpers/admin/blog_posts3_helper.rb +0 -2
- data/test_rails_app/app/helpers/admin/blog_posts4_helper.rb +0 -2
- data/test_rails_app/app/helpers/admin/blog_posts6_helper.rb +0 -16
- data/test_rails_app/app/helpers/admin/blog_posts_custom_new_and_edit_helper.rb +0 -29
- data/test_rails_app/app/helpers/admin/blog_posts_helper.rb +0 -2
- data/test_rails_app/app/helpers/admin/blog_posts_read_only_helper.rb +0 -2
- data/test_rails_app/app/helpers/admin/bookmarks_helper.rb +0 -2
- data/test_rails_app/app/helpers/admin/comments2_helper.rb +0 -2
- data/test_rails_app/app/helpers/admin/comments_helper.rb +0 -2
- data/test_rails_app/app/helpers/admin/file_column_images2_helper.rb +0 -2
- data/test_rails_app/app/helpers/admin/file_column_images_helper.rb +0 -2
- data/test_rails_app/app/helpers/admin/images2_helper.rb +0 -8
- data/test_rails_app/app/helpers/admin/images_helper.rb +0 -2
- data/test_rails_app/app/helpers/admin/misconfigured1_helper.rb +0 -2
- data/test_rails_app/app/helpers/admin/not_migrated_yets_helper.rb +0 -2
- data/test_rails_app/app/helpers/admin/product_categories2_helper.rb +0 -2
- data/test_rails_app/app/helpers/admin/product_categories_helper.rb +0 -2
- data/test_rails_app/app/helpers/admin/products2_helper.rb +0 -3
- data/test_rails_app/app/helpers/admin/products_helper.rb +0 -6
- data/test_rails_app/app/helpers/admin/television_airings_helper.rb +0 -2
- data/test_rails_app/app/helpers/admin/television_time_slots_helper.rb +0 -2
- data/test_rails_app/app/helpers/admin/users2_helper.rb +0 -2
- data/test_rails_app/app/helpers/admin/users_helper.rb +0 -25
- data/test_rails_app/app/helpers/application_helper.rb +0 -3
- data/test_rails_app/app/helpers/blog_posts_helper.rb +0 -2
- data/test_rails_app/app/models/appointment.rb +0 -5
- data/test_rails_app/app/models/blog_post.rb +0 -14
- data/test_rails_app/app/models/blog_post_tag.rb +0 -6
- data/test_rails_app/app/models/bookmark.rb +0 -6
- data/test_rails_app/app/models/comment.rb +0 -4
- data/test_rails_app/app/models/file_column_image.rb +0 -3
- data/test_rails_app/app/models/image.rb +0 -3
- data/test_rails_app/app/models/not_migrated_yet.rb +0 -2
- data/test_rails_app/app/models/product.rb +0 -7
- data/test_rails_app/app/models/product_category.rb +0 -9
- data/test_rails_app/app/models/tag.rb +0 -4
- data/test_rails_app/app/models/television_airing.rb +0 -3
- data/test_rails_app/app/models/television_time_slot.rb +0 -11
- data/test_rails_app/app/models/user.rb +0 -14
- data/test_rails_app/app/views/admin/appointments/_subject_input.html.erb +0 -2
- data/test_rails_app/app/views/admin/appointments2/_time_input.html.erb +0 -31
- data/test_rails_app/app/views/admin/blog_posts2/_after_form.html.erb +0 -5
- data/test_rails_app/app/views/admin/blog_posts2/_after_index.html.erb +0 -1
- data/test_rails_app/app/views/admin/blog_posts2/_after_tags_input.html.erb +0 -16
- data/test_rails_app/app/views/admin/blog_posts2/_before_index.html.erb +0 -2
- data/test_rails_app/app/views/admin/blog_posts5/_after_index_header.html.erb +0 -8
- data/test_rails_app/app/views/admin/blog_posts_read_only/_body_for_show.html.erb +0 -1
- data/test_rails_app/app/views/admin/products/_name_input.html.erb +0 -2
- data/test_rails_app/app/views/admin/products/_percent_off_input.html.erb +0 -2
- data/test_rails_app/app/views/admin/products/_price_input.html.erb +0 -10
- data/test_rails_app/app/views/blog_posts/show.html.erb +0 -13
- data/test_rails_app/app/views/layouts/admin.html.erb +0 -31
- data/test_rails_app/config/boot.rb +0 -109
- data/test_rails_app/config/database.yml +0 -28
- data/test_rails_app/config/environment.rb +0 -78
- data/test_rails_app/config/environments/development.rb +0 -17
- data/test_rails_app/config/environments/production.rb +0 -24
- data/test_rails_app/config/environments/test.rb +0 -24
- data/test_rails_app/config/initializers/inflections.rb +0 -10
- data/test_rails_app/config/initializers/mime_types.rb +0 -5
- data/test_rails_app/config/initializers/new_rails_defaults.rb +0 -17
- data/test_rails_app/config/locales/en.yml +0 -5
- data/test_rails_app/config/routes.rb +0 -43
- data/test_rails_app/db/migrate/20090213215514_create_blog_posts.rb +0 -12
- data/test_rails_app/db/migrate/20090217225542_add_body_to_blog_posts.rb +0 -9
- data/test_rails_app/db/migrate/20090221220917_create_tags.rb +0 -13
- data/test_rails_app/db/migrate/20090221220947_create_blog_post_tags.rb +0 -14
- data/test_rails_app/db/migrate/20090222162204_add_textile_to_blog_posts.rb +0 -9
- data/test_rails_app/db/migrate/20090222163231_add_published_at_to_blog_posts.rb +0 -9
- data/test_rails_app/db/migrate/20090301191722_create_images.rb +0 -16
- data/test_rails_app/db/migrate/20090305165345_create_accounts.rb +0 -14
- data/test_rails_app/db/migrate/20090307225027_rename_accounts_to_users.rb +0 -9
- data/test_rails_app/db/migrate/20090307225750_add_user_id_to_blog_posts.rb +0 -9
- data/test_rails_app/db/migrate/20090309185114_change_blog_posts_textile.rb +0 -9
- data/test_rails_app/db/migrate/20090309193635_create_products.rb +0 -14
- data/test_rails_app/db/migrate/20090309203056_create_comments.rb +0 -15
- data/test_rails_app/db/migrate/20090323005947_create_file_column_images.rb +0 -12
- data/test_rails_app/db/migrate/20090326160049_add_birthday_to_users.rb +0 -9
- data/test_rails_app/db/migrate/20090326223606_add_state_to_users.rb +0 -9
- data/test_rails_app/db/migrate/20090503134004_add_file_column_image_to_products.rb +0 -9
- data/test_rails_app/db/migrate/20090617173651_create_bookmarks.rb +0 -15
- data/test_rails_app/db/migrate/20090624165355_add_tags_string_to_blog_post.rb +0 -9
- data/test_rails_app/db/migrate/20090625144313_add_avatar_fields_to_user.rb +0 -11
- data/test_rails_app/db/migrate/20090629202956_add_merged_into_to_blog_posts.rb +0 -9
- data/test_rails_app/db/migrate/20090701171857_add_force_textile_to_users.rb +0 -9
- data/test_rails_app/db/migrate/20090704163647_add_deleted_at_to_products.rb +0 -9
- data/test_rails_app/db/migrate/20090704173800_add_sale_fields_to_products.rb +0 -13
- data/test_rails_app/db/migrate/20090714024501_create_product_categories.rb +0 -15
- data/test_rails_app/db/migrate/20090819162835_add_admin_level_to_users.rb +0 -9
- data/test_rails_app/db/migrate/20091115134559_add_first_and_last_names_to_users.rb +0 -11
- data/test_rails_app/db/migrate/20091221011256_add_position_to_product_categories.rb +0 -9
- data/test_rails_app/db/migrate/20091222160814_create_appointments.rb +0 -14
- data/test_rails_app/db/migrate/20091227224547_add_user_id_to_appointments.rb +0 -9
- data/test_rails_app/db/migrate/20100214213359_create_television_time_slots.rb +0 -13
- data/test_rails_app/db/migrate/20100214213451_create_television_airings.rb +0 -15
- data/test_rails_app/doc/README_FOR_APP +0 -5
- data/test_rails_app/lib/tasks/rspec.rake +0 -163
- data/test_rails_app/public/404.html +0 -30
- data/test_rails_app/public/422.html +0 -30
- data/test_rails_app/public/500.html +0 -33
- data/test_rails_app/public/dispatch.cgi +0 -10
- data/test_rails_app/public/dispatch.fcgi +0 -24
- data/test_rails_app/public/dispatch.rb +0 -10
- data/test_rails_app/public/favicon.ico +0 -0
- data/test_rails_app/public/images/rails.png +0 -0
- data/test_rails_app/public/index.html +0 -274
- data/test_rails_app/public/javascripts/application.js +0 -2
- data/test_rails_app/public/javascripts/controls.js +0 -963
- data/test_rails_app/public/javascripts/dragdrop.js +0 -973
- data/test_rails_app/public/javascripts/effects.js +0 -1128
- data/test_rails_app/public/javascripts/prototype.js +0 -4320
- data/test_rails_app/public/robots.txt +0 -5
- data/test_rails_app/public/stylesheets/admin.css +0 -3
- data/test_rails_app/public/stylesheets/scaffold.css +0 -54
- data/test_rails_app/script/about +0 -4
- data/test_rails_app/script/autospec +0 -5
- data/test_rails_app/script/console +0 -3
- data/test_rails_app/script/dbconsole +0 -3
- data/test_rails_app/script/destroy +0 -3
- data/test_rails_app/script/generate +0 -3
- data/test_rails_app/script/performance/benchmarker +0 -3
- data/test_rails_app/script/performance/profiler +0 -3
- data/test_rails_app/script/performance/request +0 -3
- data/test_rails_app/script/plugin +0 -3
- data/test_rails_app/script/populate_tables.rb +0 -49
- data/test_rails_app/script/process/inspector +0 -3
- data/test_rails_app/script/process/reaper +0 -3
- data/test_rails_app/script/process/spawner +0 -3
- data/test_rails_app/script/runner +0 -3
- data/test_rails_app/script/server +0 -3
- data/test_rails_app/script/spec +0 -5
- data/test_rails_app/script/spec_server +0 -125
- data/test_rails_app/spec/controllers/admin/appointments2_controller_spec.rb +0 -88
- data/test_rails_app/spec/controllers/admin/appointments_controller_spec.rb +0 -419
- data/test_rails_app/spec/controllers/admin/blog_posts2_controller_spec.rb +0 -1021
- data/test_rails_app/spec/controllers/admin/blog_posts3_controller_spec.rb +0 -532
- data/test_rails_app/spec/controllers/admin/blog_posts4_controller_spec.rb +0 -231
- data/test_rails_app/spec/controllers/admin/blog_posts5_controller_spec.rb +0 -77
- data/test_rails_app/spec/controllers/admin/blog_posts6_controller_spec.rb +0 -49
- data/test_rails_app/spec/controllers/admin/blog_posts_controller_spec.rb +0 -987
- data/test_rails_app/spec/controllers/admin/blog_posts_custom_new_and_edit_controller_spec.rb +0 -99
- data/test_rails_app/spec/controllers/admin/blog_posts_read_only_controller_spec.rb +0 -94
- data/test_rails_app/spec/controllers/admin/bookmarks_controller_spec.rb +0 -505
- data/test_rails_app/spec/controllers/admin/comments2_controller_spec.rb +0 -70
- data/test_rails_app/spec/controllers/admin/comments_controller_spec.rb +0 -82
- data/test_rails_app/spec/controllers/admin/file_column_images2_controller_spec.rb +0 -25
- data/test_rails_app/spec/controllers/admin/file_column_images_controller_spec.rb +0 -82
- data/test_rails_app/spec/controllers/admin/images2_controller_spec.rb +0 -44
- data/test_rails_app/spec/controllers/admin/images_controller_spec.rb +0 -97
- data/test_rails_app/spec/controllers/admin/misconfigured1_controller_spec.rb +0 -21
- data/test_rails_app/spec/controllers/admin/not_migrated_yets_controller_spec.rb +0 -10
- data/test_rails_app/spec/controllers/admin/product_categories2_controller_spec.rb +0 -215
- data/test_rails_app/spec/controllers/admin/product_categories_controller_spec.rb +0 -19
- data/test_rails_app/spec/controllers/admin/products2_controller_spec.rb +0 -203
- data/test_rails_app/spec/controllers/admin/products_controller_spec.rb +0 -255
- data/test_rails_app/spec/controllers/admin/television_airings_controller_spec.rb +0 -32
- data/test_rails_app/spec/controllers/admin/television_time_slots_controller_spec.rb +0 -10
- data/test_rails_app/spec/controllers/admin/users2_controller_spec.rb +0 -65
- data/test_rails_app/spec/controllers/admin/users_controller_spec.rb +0 -344
- data/test_rails_app/spec/controllers/blog_posts_controller_spec.rb +0 -13
- data/test_rails_app/spec/data/ruby_throated.jpg +0 -0
- data/test_rails_app/spec/data/tweenbot.jpg +0 -0
- data/test_rails_app/spec/fixtures/appointments.yml +0 -9
- data/test_rails_app/spec/fixtures/blog_post_tags.yml +0 -9
- data/test_rails_app/spec/fixtures/blog_posts.yml +0 -7
- data/test_rails_app/spec/fixtures/bookmarks.yml +0 -11
- data/test_rails_app/spec/fixtures/comments.yml +0 -11
- data/test_rails_app/spec/fixtures/file_column_images.yml +0 -7
- data/test_rails_app/spec/fixtures/images.yml +0 -7
- data/test_rails_app/spec/fixtures/not_migrated_yets.yml +0 -7
- data/test_rails_app/spec/fixtures/product_categories.yml +0 -7
- data/test_rails_app/spec/fixtures/products.yml +0 -9
- data/test_rails_app/spec/fixtures/tags.yml +0 -7
- data/test_rails_app/spec/fixtures/television_airings.yml +0 -11
- data/test_rails_app/spec/fixtures/television_time_slots.yml +0 -7
- data/test_rails_app/spec/fixtures/users.yml +0 -9
- data/test_rails_app/spec/helpers/admin/appointments2_helper_spec.rb +0 -11
- data/test_rails_app/spec/helpers/admin/appointments_helper_spec.rb +0 -11
- data/test_rails_app/spec/helpers/admin/blog_posts2_helper_spec.rb +0 -11
- data/test_rails_app/spec/helpers/admin/blog_posts3_helper_spec.rb +0 -11
- data/test_rails_app/spec/helpers/admin/blog_posts4_helper_spec.rb +0 -11
- data/test_rails_app/spec/helpers/admin/blog_posts_custom_new_and_edit_helper_spec.rb +0 -11
- data/test_rails_app/spec/helpers/admin/blog_posts_helper_spec.rb +0 -11
- data/test_rails_app/spec/helpers/admin/blog_posts_read_only_helper_spec.rb +0 -11
- data/test_rails_app/spec/helpers/admin/bookmarks_helper_spec.rb +0 -11
- data/test_rails_app/spec/helpers/admin/comments2_helper_spec.rb +0 -11
- data/test_rails_app/spec/helpers/admin/comments_helper_spec.rb +0 -11
- data/test_rails_app/spec/helpers/admin/file_column_images2_helper_spec.rb +0 -11
- data/test_rails_app/spec/helpers/admin/file_column_images_helper_spec.rb +0 -11
- data/test_rails_app/spec/helpers/admin/images2_helper_spec.rb +0 -11
- data/test_rails_app/spec/helpers/admin/images_helper_spec.rb +0 -11
- data/test_rails_app/spec/helpers/admin/misconfigured1_helper_spec.rb +0 -11
- data/test_rails_app/spec/helpers/admin/not_migrated_yets_helper_spec.rb +0 -11
- data/test_rails_app/spec/helpers/admin/product_categories2_helper_spec.rb +0 -11
- data/test_rails_app/spec/helpers/admin/product_categories_helper_spec.rb +0 -11
- data/test_rails_app/spec/helpers/admin/products2_helper_spec.rb +0 -11
- data/test_rails_app/spec/helpers/admin/products_helper_spec.rb +0 -11
- data/test_rails_app/spec/helpers/admin/television_airings_helper_spec.rb +0 -11
- data/test_rails_app/spec/helpers/admin/television_time_slots_helper_spec.rb +0 -11
- data/test_rails_app/spec/helpers/admin/users2_helper_spec.rb +0 -11
- data/test_rails_app/spec/helpers/admin/users_helper_spec.rb +0 -11
- data/test_rails_app/spec/helpers/blog_posts_helper_spec.rb +0 -11
- data/test_rails_app/spec/models/appointment_spec.rb +0 -16
- data/test_rails_app/spec/models/blog_post_spec.rb +0 -13
- data/test_rails_app/spec/models/blog_post_tag_spec.rb +0 -14
- data/test_rails_app/spec/models/bookmark_spec.rb +0 -15
- data/test_rails_app/spec/models/comment_spec.rb +0 -15
- data/test_rails_app/spec/models/file_column_image_spec.rb +0 -12
- data/test_rails_app/spec/models/image_spec.rb +0 -12
- data/test_rails_app/spec/models/not_migrated_yet_spec.rb +0 -15
- data/test_rails_app/spec/models/product_category_spec.rb +0 -15
- data/test_rails_app/spec/models/product_spec.rb +0 -14
- data/test_rails_app/spec/models/tag_spec.rb +0 -13
- data/test_rails_app/spec/models/television_airing_spec.rb +0 -15
- data/test_rails_app/spec/models/television_time_slot_spec.rb +0 -13
- data/test_rails_app/spec/models/user_spec.rb +0 -14
- data/test_rails_app/spec/rcov.opts +0 -2
- data/test_rails_app/spec/spec.opts +0 -4
- data/test_rails_app/spec/spec_helper.rb +0 -88
- data/test_rails_app/spec/spec_or_test_helper.rb +0 -49
- data/test_rails_app/test/fixtures/file_column_images.yml +0 -7
- data/test_rails_app/test/integration/admin_blog_posts2_integration_test.rb +0 -16
- data/test_rails_app/test/integration/admin_blog_posts5_integration_test.rb +0 -19
- data/test_rails_app/test/integration/admin_blog_posts_integration_test.rb +0 -25
- data/test_rails_app/test/test_helper.rb +0 -28
- data/test_rails_app/vendor/plugins/file_column/CHANGELOG +0 -69
- data/test_rails_app/vendor/plugins/file_column/README +0 -54
- data/test_rails_app/vendor/plugins/file_column/Rakefile +0 -36
- data/test_rails_app/vendor/plugins/file_column/TODO +0 -6
- data/test_rails_app/vendor/plugins/file_column/init.rb +0 -13
- data/test_rails_app/vendor/plugins/file_column/lib/file_column.rb +0 -723
- data/test_rails_app/vendor/plugins/file_column/lib/file_column_helper.rb +0 -150
- data/test_rails_app/vendor/plugins/file_column/lib/file_compat.rb +0 -28
- data/test_rails_app/vendor/plugins/file_column/lib/magick_file_column.rb +0 -260
- data/test_rails_app/vendor/plugins/file_column/lib/rails_file_column.rb +0 -19
- data/test_rails_app/vendor/plugins/file_column/lib/test_case.rb +0 -124
- data/test_rails_app/vendor/plugins/file_column/lib/validations.rb +0 -112
- data/test_rails_app/vendor/plugins/file_column/test/abstract_unit.rb +0 -63
- data/test_rails_app/vendor/plugins/file_column/test/connection.rb +0 -17
- data/test_rails_app/vendor/plugins/file_column/test/file_column_helper_test.rb +0 -97
- data/test_rails_app/vendor/plugins/file_column/test/file_column_test.rb +0 -650
- data/test_rails_app/vendor/plugins/file_column/test/fixtures/entry.rb +0 -32
- data/test_rails_app/vendor/plugins/file_column/test/fixtures/invalid-image.jpg +0 -1
- data/test_rails_app/vendor/plugins/file_column/test/fixtures/kerb.jpg +0 -0
- data/test_rails_app/vendor/plugins/file_column/test/fixtures/mysql.sql +0 -25
- data/test_rails_app/vendor/plugins/file_column/test/fixtures/schema.rb +0 -10
- data/test_rails_app/vendor/plugins/file_column/test/fixtures/skanthak.png +0 -0
- data/test_rails_app/vendor/plugins/file_column/test/magick_test.rb +0 -380
- data/test_rails_app/vendor/plugins/file_column/test/magick_view_only_test.rb +0 -21
|
@@ -1,1021 +0,0 @@
|
|
|
1
|
-
require File.expand_path(File.dirname(__FILE__) + '/../../spec_helper')
|
|
2
|
-
|
|
3
|
-
describe Admin::BlogPosts2Controller do
|
|
4
|
-
integrate_views
|
|
5
|
-
|
|
6
|
-
before :all do
|
|
7
|
-
User.destroy_all
|
|
8
|
-
@user = User.create! :username => 'soren'
|
|
9
|
-
end
|
|
10
|
-
|
|
11
|
-
describe '#create' do
|
|
12
|
-
describe 'when there are no validation errors' do
|
|
13
|
-
before :each do
|
|
14
|
-
title = random_word
|
|
15
|
-
post(
|
|
16
|
-
:create,
|
|
17
|
-
:blog_post => {
|
|
18
|
-
:title => title, :tags => 'tag1 tag2', :publish => '1',
|
|
19
|
-
:user_id => @user.id
|
|
20
|
-
}
|
|
21
|
-
)
|
|
22
|
-
@blog_post = BlogPost.find_by_title title
|
|
23
|
-
end
|
|
24
|
-
|
|
25
|
-
it 'should create a new BlogPost' do
|
|
26
|
-
@blog_post.should_not be_nil
|
|
27
|
-
end
|
|
28
|
-
|
|
29
|
-
it 'should create tags' do
|
|
30
|
-
@blog_post.should have(2).tags
|
|
31
|
-
%w(tag1 tag2).each do |tag_str|
|
|
32
|
-
assert(@blog_post.tags.any? { |tag| tag.tag == tag_str })
|
|
33
|
-
end
|
|
34
|
-
end
|
|
35
|
-
|
|
36
|
-
it 'should set published_at because of the publish flag' do
|
|
37
|
-
@blog_post.published_at.should_not be_nil
|
|
38
|
-
end
|
|
39
|
-
|
|
40
|
-
it 'should set the tags_string' do
|
|
41
|
-
@blog_post.tags_string.should match(/tag1,tag2/)
|
|
42
|
-
end
|
|
43
|
-
end
|
|
44
|
-
|
|
45
|
-
describe "when the user has clicked 'Preview'" do
|
|
46
|
-
before :each do
|
|
47
|
-
title = random_word
|
|
48
|
-
post(
|
|
49
|
-
:create,
|
|
50
|
-
:blog_post => {
|
|
51
|
-
:title => title, :tags => 'tag1 tag2', :publish => '1',
|
|
52
|
-
:user_id => @user.id
|
|
53
|
-
},
|
|
54
|
-
:commit => 'Preview'
|
|
55
|
-
)
|
|
56
|
-
@blog_post = BlogPost.find_by_title title
|
|
57
|
-
end
|
|
58
|
-
|
|
59
|
-
it 'should redirect to the edit page with the preview flag' do
|
|
60
|
-
response.should redirect_to(
|
|
61
|
-
:action => 'edit', :id => @blog_post.id, :preview => '1'
|
|
62
|
-
)
|
|
63
|
-
end
|
|
64
|
-
end
|
|
65
|
-
end
|
|
66
|
-
|
|
67
|
-
describe '#create with a bad tag' do
|
|
68
|
-
before :each do
|
|
69
|
-
@title = random_word
|
|
70
|
-
post(
|
|
71
|
-
:create,
|
|
72
|
-
:blog_post => {
|
|
73
|
-
:title => @title, :tags => 'foo bar! baz', :user_id => @user.id
|
|
74
|
-
}
|
|
75
|
-
)
|
|
76
|
-
end
|
|
77
|
-
|
|
78
|
-
it 'should not create a new BlogPost' do
|
|
79
|
-
BlogPost.find_by_title(@title).should be_nil
|
|
80
|
-
end
|
|
81
|
-
|
|
82
|
-
it 'should keep the title in the form' do
|
|
83
|
-
response.should have_tag(
|
|
84
|
-
"input[name=?][value=?]", 'blog_post[title]', @title
|
|
85
|
-
)
|
|
86
|
-
end
|
|
87
|
-
|
|
88
|
-
it 'should render a useful error' do
|
|
89
|
-
response.should have_tag("div.errorExplanation") do
|
|
90
|
-
with_tag 'li', :text => "Tags contain invalid string 'bar!'"
|
|
91
|
-
end
|
|
92
|
-
end
|
|
93
|
-
|
|
94
|
-
it 'should highlight the tag string entry' do
|
|
95
|
-
response.should have_tag("div.fieldWithErrors") do
|
|
96
|
-
with_tag "input[name=?][value=?]", "blog_post[tags]", "foo bar! baz"
|
|
97
|
-
end
|
|
98
|
-
end
|
|
99
|
-
end
|
|
100
|
-
|
|
101
|
-
describe '#create with a bad tag and a missing title' do
|
|
102
|
-
before :each do
|
|
103
|
-
@orig_count = BlogPost.count
|
|
104
|
-
post(
|
|
105
|
-
:create,
|
|
106
|
-
:blog_post => {
|
|
107
|
-
:title => '', :tags => 'foo bar! baz', :user_id => @user.id
|
|
108
|
-
}
|
|
109
|
-
)
|
|
110
|
-
end
|
|
111
|
-
|
|
112
|
-
it 'should not create a new BlogPost' do
|
|
113
|
-
BlogPost.count.should == @orig_count
|
|
114
|
-
end
|
|
115
|
-
|
|
116
|
-
it 'should render a useful tags error' do
|
|
117
|
-
response.should have_tag("div.errorExplanation") do
|
|
118
|
-
with_tag 'li', :text => "Tags contain invalid string 'bar!'"
|
|
119
|
-
end
|
|
120
|
-
end
|
|
121
|
-
|
|
122
|
-
it 'should highlight the tag string entry' do
|
|
123
|
-
response.should have_tag("div.fieldWithErrors") do
|
|
124
|
-
with_tag "input[name=?][value=?]", "blog_post[tags]", "foo bar! baz"
|
|
125
|
-
end
|
|
126
|
-
end
|
|
127
|
-
|
|
128
|
-
it 'should render a useful title error' do
|
|
129
|
-
response.should have_tag("div.errorExplanation") do
|
|
130
|
-
with_tag 'li', :text => "Title can't be blank"
|
|
131
|
-
end
|
|
132
|
-
end
|
|
133
|
-
|
|
134
|
-
it 'should highlight the title string entry' do
|
|
135
|
-
response.should have_tag("div.fieldWithErrors") do
|
|
136
|
-
with_tag "input[name=?][value=?]", "blog_post[title]", ""
|
|
137
|
-
end
|
|
138
|
-
end
|
|
139
|
-
end
|
|
140
|
-
|
|
141
|
-
describe '#create with a bad publish value somehow' do
|
|
142
|
-
before :each do
|
|
143
|
-
@title = random_word
|
|
144
|
-
post(
|
|
145
|
-
:create,
|
|
146
|
-
:blog_post => {
|
|
147
|
-
:title => @title, :tags => 'tag1 tag2', :publish => 'FOOBAR',
|
|
148
|
-
}
|
|
149
|
-
)
|
|
150
|
-
end
|
|
151
|
-
|
|
152
|
-
it 'should be successful' do
|
|
153
|
-
response.should be_success
|
|
154
|
-
end
|
|
155
|
-
|
|
156
|
-
it 'should not save the blog post' do
|
|
157
|
-
BlogPost.find_by_title(@title).should be_nil
|
|
158
|
-
end
|
|
159
|
-
|
|
160
|
-
it 'should display the publish error' do
|
|
161
|
-
response.body.should match(/Publish can't be .*FOOBAR.*/)
|
|
162
|
-
end
|
|
163
|
-
|
|
164
|
-
it 'should display a user error too' do
|
|
165
|
-
response.body.should match(/User can't be blank/)
|
|
166
|
-
end
|
|
167
|
-
end
|
|
168
|
-
|
|
169
|
-
describe '#edit' do
|
|
170
|
-
before :all do
|
|
171
|
-
BlogPost.destroy_all
|
|
172
|
-
@blog_post = BlogPost.create!(
|
|
173
|
-
:title => "blog post title", :body => 'blog post body', :user => @user
|
|
174
|
-
)
|
|
175
|
-
tag1 = Tag.find_or_create_by_tag 'tag1'
|
|
176
|
-
BlogPostTag.create! :blog_post => @blog_post, :tag => tag1
|
|
177
|
-
tag2 = Tag.find_or_create_by_tag 'tag2'
|
|
178
|
-
BlogPostTag.create! :blog_post => @blog_post, :tag => tag2
|
|
179
|
-
end
|
|
180
|
-
|
|
181
|
-
before :each do
|
|
182
|
-
get :edit, :id => @blog_post.id
|
|
183
|
-
response.should be_success
|
|
184
|
-
end
|
|
185
|
-
|
|
186
|
-
it 'should show the tags' do
|
|
187
|
-
response.body.should match(%r|<input.*name="blog_post\[tags\]"|m)
|
|
188
|
-
response.body.should match(/(tag2 tag1|tag1 tag2)/)
|
|
189
|
-
end
|
|
190
|
-
|
|
191
|
-
it 'should show a preview button' do
|
|
192
|
-
response.should have_tag('input[type=submit][value=Preview]')
|
|
193
|
-
end
|
|
194
|
-
end
|
|
195
|
-
|
|
196
|
-
describe '#edit in preview mode' do
|
|
197
|
-
before :all do
|
|
198
|
-
@blog_post = BlogPost.create!(
|
|
199
|
-
:title => "blog post title", :body => 'blog post body', :user => @user
|
|
200
|
-
)
|
|
201
|
-
end
|
|
202
|
-
|
|
203
|
-
before :each do
|
|
204
|
-
get :edit, :id => @blog_post.id, :preview => '1'
|
|
205
|
-
response.should be_success
|
|
206
|
-
end
|
|
207
|
-
|
|
208
|
-
it 'should render the preview HTML' do
|
|
209
|
-
response.should have_tag('html') do
|
|
210
|
-
with_tag 'h4', 'Preview'
|
|
211
|
-
end
|
|
212
|
-
end
|
|
213
|
-
end
|
|
214
|
-
|
|
215
|
-
describe '#edit when there are more than 15 users' do
|
|
216
|
-
before :all do
|
|
217
|
-
@blog_post = BlogPost.create! :title => random_word, :user => @user
|
|
218
|
-
1.upto(16) do |i|
|
|
219
|
-
User.create! :username => "--user #{i}--"
|
|
220
|
-
end
|
|
221
|
-
end
|
|
222
|
-
|
|
223
|
-
before :each do
|
|
224
|
-
get :edit, :id => @blog_post.id
|
|
225
|
-
end
|
|
226
|
-
|
|
227
|
-
it 'should use the restricted autocompleter instead of a drop-down' do
|
|
228
|
-
response.should_not have_tag("select[name=?]", "blog_post[user_id]")
|
|
229
|
-
response.should have_tag(
|
|
230
|
-
"input[id=user_autocomplete_input][value=soren]"
|
|
231
|
-
)
|
|
232
|
-
response.should have_tag(
|
|
233
|
-
"input[type=hidden][name=?][id=blog_post_user_id][value=?]",
|
|
234
|
-
"blog_post[user_id]", @user.id.to_s
|
|
235
|
-
)
|
|
236
|
-
response.should have_tag("div[id=user_autocomplete_palette]")
|
|
237
|
-
response.should have_tag('div[id=clear_user_link]')
|
|
238
|
-
response.body.should match(
|
|
239
|
-
%r|
|
|
240
|
-
new\s*AdminAssistant.RestrictedAutocompleter\(
|
|
241
|
-
\s*"user",
|
|
242
|
-
\s*"blog_post_user_id",
|
|
243
|
-
\s*"/admin/blog_posts2/autocomplete_user",
|
|
244
|
-
[^)]*"includeBlank":\s*false
|
|
245
|
-
|mx
|
|
246
|
-
)
|
|
247
|
-
end
|
|
248
|
-
end
|
|
249
|
-
|
|
250
|
-
describe '#edit when there are less than 15 users' do
|
|
251
|
-
before :all do
|
|
252
|
-
@blog_post = BlogPost.create! :title => random_word, :user => @user
|
|
253
|
-
User.count.downto(14) do
|
|
254
|
-
user = User.find(
|
|
255
|
-
:first, :conditions => ['username != ?', @user.username]
|
|
256
|
-
)
|
|
257
|
-
user.destroy
|
|
258
|
-
end
|
|
259
|
-
end
|
|
260
|
-
|
|
261
|
-
before :each do
|
|
262
|
-
get :edit, :id => @blog_post.id
|
|
263
|
-
end
|
|
264
|
-
|
|
265
|
-
it 'should use a drop-down without a blank option' do
|
|
266
|
-
response.should have_tag('select[name=?]', 'blog_post[user_id]') do
|
|
267
|
-
without_tag "option[value='']"
|
|
268
|
-
end
|
|
269
|
-
end
|
|
270
|
-
end
|
|
271
|
-
|
|
272
|
-
describe '#edit a blog_post that has already been published' do
|
|
273
|
-
before :all do
|
|
274
|
-
@blog_post = BlogPost.create!(
|
|
275
|
-
:title => "blog post title", :body => 'blog post body', :user => @user,
|
|
276
|
-
:published_at => Time.now.utc
|
|
277
|
-
)
|
|
278
|
-
end
|
|
279
|
-
|
|
280
|
-
before :each do
|
|
281
|
-
get :edit, :id => @blog_post.id
|
|
282
|
-
response.should be_success
|
|
283
|
-
end
|
|
284
|
-
|
|
285
|
-
it 'should show the publish check-box checked' do
|
|
286
|
-
response.should have_tag(
|
|
287
|
-
'input[type=checkbox][name=?][checked=checked]', 'blog_post[publish]'
|
|
288
|
-
)
|
|
289
|
-
end
|
|
290
|
-
end
|
|
291
|
-
|
|
292
|
-
describe '#index' do
|
|
293
|
-
describe 'when there is one record and 15 or less users' do
|
|
294
|
-
before :all do
|
|
295
|
-
BlogPost.destroy_all
|
|
296
|
-
@blog_post = BlogPost.create!(
|
|
297
|
-
:title => "blog post title", :body => 'blog post body',
|
|
298
|
-
:user => @user
|
|
299
|
-
)
|
|
300
|
-
tag1 = Tag.find_or_create_by_tag 'tag1'
|
|
301
|
-
BlogPostTag.create! :blog_post => @blog_post, :tag => tag1
|
|
302
|
-
tag2 = Tag.find_or_create_by_tag 'tag2'
|
|
303
|
-
BlogPostTag.create! :blog_post => @blog_post, :tag => tag2
|
|
304
|
-
User.count.downto(15) do
|
|
305
|
-
user = User.find(:first, :conditions => ['id != ?', @user.id])
|
|
306
|
-
user.destroy
|
|
307
|
-
end
|
|
308
|
-
end
|
|
309
|
-
|
|
310
|
-
before :each do
|
|
311
|
-
get :index
|
|
312
|
-
response.should be_success
|
|
313
|
-
end
|
|
314
|
-
|
|
315
|
-
it 'should show the tags' do
|
|
316
|
-
response.body.should match(/(tag2 tag1|tag1 tag2)/)
|
|
317
|
-
end
|
|
318
|
-
|
|
319
|
-
it 'should show the title' do
|
|
320
|
-
response.body.should match(/blog post title/)
|
|
321
|
-
end
|
|
322
|
-
|
|
323
|
-
it 'should not show the body' do
|
|
324
|
-
response.body.should_not match(/blog post body/)
|
|
325
|
-
end
|
|
326
|
-
|
|
327
|
-
it 'should show a link to the all index page' do
|
|
328
|
-
response.body.should match(%r|<a.*href="/admin/blog_posts2\?all=1"|)
|
|
329
|
-
end
|
|
330
|
-
|
|
331
|
-
it 'should not show a sort link for tags' do
|
|
332
|
-
response.should_not have_tag("a", :text => 'Tags')
|
|
333
|
-
end
|
|
334
|
-
|
|
335
|
-
it 'should show a sort link for users' do
|
|
336
|
-
assert_a_tag_with_get_args(
|
|
337
|
-
'Author', '/admin/blog_posts2',
|
|
338
|
-
{:sort => 'user', :sort_order => 'asc'}, response.body
|
|
339
|
-
)
|
|
340
|
-
end
|
|
341
|
-
|
|
342
|
-
it 'should render the author as a username with a link' do
|
|
343
|
-
response.should have_tag('td') do
|
|
344
|
-
with_tag(
|
|
345
|
-
"a[href=?]", "/admin/users/edit/#{@user.id}", :text => 'soren'
|
|
346
|
-
)
|
|
347
|
-
end
|
|
348
|
-
end
|
|
349
|
-
|
|
350
|
-
it "should say 'Yes' or 'No' for the textile field" do
|
|
351
|
-
response.body.should match(/No/)
|
|
352
|
-
end
|
|
353
|
-
|
|
354
|
-
it 'should show a search form with specific fields' do
|
|
355
|
-
response.should have_tag(
|
|
356
|
-
'form[id=search_form][method=get]', :text => /Title/
|
|
357
|
-
) do
|
|
358
|
-
with_tag(
|
|
359
|
-
'input[type=radio][name=?][value=all][checked=checked]',
|
|
360
|
-
'search[(all_or_any)]'
|
|
361
|
-
)
|
|
362
|
-
with_tag(
|
|
363
|
-
'input[type=radio][name=?][value=any]', 'search[(all_or_any)]'
|
|
364
|
-
)
|
|
365
|
-
with_tag('input[name=?]', 'search[title]')
|
|
366
|
-
with_tag('input[name=?]', 'search[body]')
|
|
367
|
-
with_tag('select[name=?]', 'search[textile]') do
|
|
368
|
-
with_tag("option[value='']", :text => '')
|
|
369
|
-
with_tag("option[value='true']", :text => 'Yes')
|
|
370
|
-
with_tag("option[value='false']", :text => 'No')
|
|
371
|
-
end
|
|
372
|
-
with_tag('select[name=?]', 'search[user_id]') do
|
|
373
|
-
with_tag("option[value='']", :text => '')
|
|
374
|
-
with_tag("option[value=?]", @user.id)
|
|
375
|
-
end
|
|
376
|
-
end
|
|
377
|
-
end
|
|
378
|
-
|
|
379
|
-
it 'should show a link to /admin/comments/new' do
|
|
380
|
-
response.should have_tag('td') do
|
|
381
|
-
with_tag(
|
|
382
|
-
"a[href=?]",
|
|
383
|
-
"/admin/comments/new?comment%5Bblog_post_id%5D=#{@blog_post.id}",
|
|
384
|
-
:text => "New comment"
|
|
385
|
-
)
|
|
386
|
-
end
|
|
387
|
-
end
|
|
388
|
-
|
|
389
|
-
it "should have a header of 'Blog posts (unpublished)'" do
|
|
390
|
-
response.should have_tag('h2', :text => 'Blog posts (unpublished)')
|
|
391
|
-
end
|
|
392
|
-
|
|
393
|
-
it 'should render custom HTML after the index' do
|
|
394
|
-
response.should have_tag(
|
|
395
|
-
'#after_index', :text => 'Custom HTML rendered after the index'
|
|
396
|
-
)
|
|
397
|
-
end
|
|
398
|
-
|
|
399
|
-
it 'should render custom HTML before the index' do
|
|
400
|
-
response.should have_tag(
|
|
401
|
-
'#before_index', :text => 'Custom HTML rendered before the index'
|
|
402
|
-
)
|
|
403
|
-
end
|
|
404
|
-
|
|
405
|
-
it 'should not have a blank checkbox for the body search field' do
|
|
406
|
-
response.should have_tag('form[id=search_form][method=get]') do
|
|
407
|
-
without_tag("input[type=checkbox][name=?]", "search[body(blank)]")
|
|
408
|
-
end
|
|
409
|
-
end
|
|
410
|
-
|
|
411
|
-
it 'should output ivar set by index_before_render controller hook' do
|
|
412
|
-
assigns(:var_set_by_before_render_for_index_hook).should_not be_nil
|
|
413
|
-
response.body.should match(/Confirmed that we have some records/)
|
|
414
|
-
end
|
|
415
|
-
end
|
|
416
|
-
|
|
417
|
-
describe 'when there is one published post and one unpublished post' do
|
|
418
|
-
before :all do
|
|
419
|
-
BlogPost.create! :title => "--unpublished--", :user => @user
|
|
420
|
-
BlogPost.create!(
|
|
421
|
-
:title => "--published--", :published_at => Time.now.utc,
|
|
422
|
-
:user => @user
|
|
423
|
-
)
|
|
424
|
-
end
|
|
425
|
-
|
|
426
|
-
before :each do
|
|
427
|
-
get :index
|
|
428
|
-
response.should be_success
|
|
429
|
-
end
|
|
430
|
-
|
|
431
|
-
it 'should show the unpublished post' do
|
|
432
|
-
response.body.should match(/--unpublished--/)
|
|
433
|
-
end
|
|
434
|
-
|
|
435
|
-
it 'should not show the published post' do
|
|
436
|
-
response.body.should_not match(/--published--/)
|
|
437
|
-
end
|
|
438
|
-
end
|
|
439
|
-
|
|
440
|
-
end
|
|
441
|
-
|
|
442
|
-
describe '#index when there is 1 blog post and 16 Users' do
|
|
443
|
-
before :all do
|
|
444
|
-
@blog_post = BlogPost.create! :title => random_word, :user => @user
|
|
445
|
-
User.count.upto(16) do |i|
|
|
446
|
-
User.create! :username => random_word
|
|
447
|
-
end
|
|
448
|
-
end
|
|
449
|
-
|
|
450
|
-
before :each do
|
|
451
|
-
get :index
|
|
452
|
-
end
|
|
453
|
-
|
|
454
|
-
it 'should use the autocompleter in the search form for users' do
|
|
455
|
-
response.should_not have_tag("select[name=?]", "search[user_id]]")
|
|
456
|
-
response.should have_tag(
|
|
457
|
-
"input:not([value])[id=user_autocomplete_input]"
|
|
458
|
-
)
|
|
459
|
-
response.should have_tag(
|
|
460
|
-
"input:not([value])[type=hidden][name=?][id=search_user_id]",
|
|
461
|
-
"search[user_id]"
|
|
462
|
-
)
|
|
463
|
-
response.should have_tag("div[id=user_autocomplete_palette]")
|
|
464
|
-
response.should have_tag('div[id=clear_user_link]')
|
|
465
|
-
response.body.should match(
|
|
466
|
-
%r|
|
|
467
|
-
new\s*AdminAssistant.RestrictedAutocompleter\(
|
|
468
|
-
\s*"user",
|
|
469
|
-
\s*"search_user_id",
|
|
470
|
-
\s*"/admin/blog_posts2/autocomplete_user",
|
|
471
|
-
[^)]*"includeBlank":\s*true
|
|
472
|
-
|mx
|
|
473
|
-
)
|
|
474
|
-
end
|
|
475
|
-
end
|
|
476
|
-
|
|
477
|
-
describe '#index?all=1' do
|
|
478
|
-
before :all do
|
|
479
|
-
BlogPost.create!(
|
|
480
|
-
:title => "--published--", :published_at => Time.now.utc,
|
|
481
|
-
:user => @user
|
|
482
|
-
)
|
|
483
|
-
end
|
|
484
|
-
|
|
485
|
-
before :each do
|
|
486
|
-
get :index, :all => '1'
|
|
487
|
-
response.should be_success
|
|
488
|
-
end
|
|
489
|
-
|
|
490
|
-
it 'should show published posts' do
|
|
491
|
-
response.body.should match(/--published--/)
|
|
492
|
-
end
|
|
493
|
-
|
|
494
|
-
it 'should show a sort link for titles that includes all=1' do
|
|
495
|
-
assert_a_tag_with_get_args(
|
|
496
|
-
'Title', '/admin/blog_posts2',
|
|
497
|
-
{:sort => 'title', :sort_order => 'asc', :all => '1'}, response.body
|
|
498
|
-
)
|
|
499
|
-
end
|
|
500
|
-
|
|
501
|
-
it "should have a header of 'Blog posts (all)'" do
|
|
502
|
-
response.should have_tag('h2', :text => 'Blog posts (all)')
|
|
503
|
-
end
|
|
504
|
-
end
|
|
505
|
-
|
|
506
|
-
describe '#index?all=1 with two published posts' do
|
|
507
|
-
before :all do
|
|
508
|
-
BlogPost.create!(
|
|
509
|
-
:title => 'published later', :published_at => Time.utc(2009, 2, 1),
|
|
510
|
-
:user => @user
|
|
511
|
-
)
|
|
512
|
-
BlogPost.create!(
|
|
513
|
-
:title => 'published earlier', :published_at => Time.utc(2009, 1, 1),
|
|
514
|
-
:user => @user
|
|
515
|
-
)
|
|
516
|
-
end
|
|
517
|
-
|
|
518
|
-
before :each do
|
|
519
|
-
get :index, :all => '1'
|
|
520
|
-
end
|
|
521
|
-
|
|
522
|
-
it 'should order by published_at desc' do
|
|
523
|
-
response.body.should match(/published later.*published earlier/m)
|
|
524
|
-
end
|
|
525
|
-
end
|
|
526
|
-
|
|
527
|
-
describe '#index when searching for foobar' do
|
|
528
|
-
before :all do
|
|
529
|
-
BlogPost.destroy_all
|
|
530
|
-
BlogPost.create!(
|
|
531
|
-
:title => 'textile_false_foobar', :textile => false, :user => @user
|
|
532
|
-
)
|
|
533
|
-
BlogPost.create!(
|
|
534
|
-
:title => 'textile_true_foobar', :textile => true, :user => @user
|
|
535
|
-
)
|
|
536
|
-
BlogPost.create!(
|
|
537
|
-
:title => 'not_in_the_title', :textile => false,
|
|
538
|
-
:body => 'foobar here though', :user => @user
|
|
539
|
-
)
|
|
540
|
-
BlogPost.create!(
|
|
541
|
-
:title => 'textile is false', :textile => false,
|
|
542
|
-
:body => "body doesn't say f**bar", :user => @user
|
|
543
|
-
)
|
|
544
|
-
BlogPost.create!(
|
|
545
|
-
:title => 'already published', :textile => false,
|
|
546
|
-
:body => "body doesn't say f**bar", :user => @user,
|
|
547
|
-
:published_at => Time.now.utc
|
|
548
|
-
)
|
|
549
|
-
end
|
|
550
|
-
|
|
551
|
-
describe "for title with 'foobar'" do
|
|
552
|
-
before :each do
|
|
553
|
-
get(
|
|
554
|
-
:index,
|
|
555
|
-
:search => {
|
|
556
|
-
:body => "", :title => "foobar", :textile => "", :id => "",
|
|
557
|
-
:user => ''
|
|
558
|
-
}
|
|
559
|
-
)
|
|
560
|
-
response.should be_success
|
|
561
|
-
end
|
|
562
|
-
|
|
563
|
-
it 'should match records where textile=true' do
|
|
564
|
-
response.should have_tag('td', :text => 'textile_true_foobar')
|
|
565
|
-
end
|
|
566
|
-
|
|
567
|
-
it 'should match records where textile=false' do
|
|
568
|
-
response.should have_tag('td', :text => 'textile_false_foobar')
|
|
569
|
-
end
|
|
570
|
-
|
|
571
|
-
it "should show the textile and title search fields pre-set" do
|
|
572
|
-
response.should have_tag('form[id=search_form][method=get]') do
|
|
573
|
-
with_tag('input[name=?][value=foobar]', 'search[title]')
|
|
574
|
-
with_tag('select[name=?]', 'search[textile]') do
|
|
575
|
-
with_tag("option[value=''][selected=selected]", :text => '')
|
|
576
|
-
with_tag("option[value='true']", :text => 'Yes')
|
|
577
|
-
with_tag("option[value='false']", :text => 'No')
|
|
578
|
-
end
|
|
579
|
-
end
|
|
580
|
-
end
|
|
581
|
-
end
|
|
582
|
-
|
|
583
|
-
describe "for title with 'foobar' and textile=false" do
|
|
584
|
-
before :each do
|
|
585
|
-
get(
|
|
586
|
-
:index,
|
|
587
|
-
:search => {
|
|
588
|
-
:textile => 'false', :title => 'foobar', '(all_or_any)' => 'all',
|
|
589
|
-
:user => ''
|
|
590
|
-
}
|
|
591
|
-
)
|
|
592
|
-
response.should be_success
|
|
593
|
-
end
|
|
594
|
-
|
|
595
|
-
it "should show blog posts with textile=false and the word 'foobar' in the title" do
|
|
596
|
-
response.should have_tag('td', :text => 'textile_false_foobar')
|
|
597
|
-
end
|
|
598
|
-
|
|
599
|
-
it "should not show a blog post with textile=true" do
|
|
600
|
-
response.should_not have_tag('td', :text => 'textile_true_foobar')
|
|
601
|
-
end
|
|
602
|
-
|
|
603
|
-
it "should not show a blog post just 'cause it has 'foobar' in the body" do
|
|
604
|
-
response.should_not have_tag('td', :text => 'not_in_the_title')
|
|
605
|
-
end
|
|
606
|
-
|
|
607
|
-
it "should show the textile, title, and all-or-any search fields pre-set" do
|
|
608
|
-
response.should have_tag('form[id=search_form][method=get]') do
|
|
609
|
-
with_tag(
|
|
610
|
-
'input[type=radio][name=?][value=all][checked=checked]',
|
|
611
|
-
'search[(all_or_any)]'
|
|
612
|
-
)
|
|
613
|
-
with_tag('input[name=?][value=foobar]', 'search[title]')
|
|
614
|
-
with_tag('select[name=?]', 'search[textile]') do
|
|
615
|
-
with_tag("option[value='']", :text => '')
|
|
616
|
-
with_tag("option[value='true']", :text => 'Yes')
|
|
617
|
-
with_tag("option[value='false'][selected=selected]", :text => 'No')
|
|
618
|
-
end
|
|
619
|
-
end
|
|
620
|
-
end
|
|
621
|
-
end
|
|
622
|
-
|
|
623
|
-
describe "for title with 'foobar' or textile=false" do
|
|
624
|
-
before :each do
|
|
625
|
-
get(
|
|
626
|
-
:index,
|
|
627
|
-
:search => {
|
|
628
|
-
:textile => 'false', :title => 'foobar', '(all_or_any)' => 'any',
|
|
629
|
-
:user => ''
|
|
630
|
-
}
|
|
631
|
-
)
|
|
632
|
-
response.should be_success
|
|
633
|
-
end
|
|
634
|
-
|
|
635
|
-
it "should show a blog post with 'foobar' in the title" do
|
|
636
|
-
response.should have_tag('td', :text => 'textile_true_foobar')
|
|
637
|
-
end
|
|
638
|
-
|
|
639
|
-
it "should show a blog post with textile=false" do
|
|
640
|
-
response.should have_tag('td', :text => 'textile is false')
|
|
641
|
-
end
|
|
642
|
-
|
|
643
|
-
it "should not show a blog post that's already published, because of the conditions set in controller" do
|
|
644
|
-
response.should_not have_tag('td', :text => 'already published')
|
|
645
|
-
end
|
|
646
|
-
|
|
647
|
-
it "should show the textile, title, and all-or-any search fields pre-set" do
|
|
648
|
-
response.should have_tag('form[id=search_form][method=get]') do
|
|
649
|
-
with_tag(
|
|
650
|
-
'input[type=radio][name=?][value=any][checked=checked]',
|
|
651
|
-
'search[(all_or_any)]'
|
|
652
|
-
)
|
|
653
|
-
with_tag('input[name=?][value=foobar]', 'search[title]')
|
|
654
|
-
with_tag('select[name=?]', 'search[textile]') do
|
|
655
|
-
with_tag("option[value='']", :text => '')
|
|
656
|
-
with_tag("option[value='true']", :text => 'Yes')
|
|
657
|
-
with_tag("option[value='false'][selected=selected]", :text => 'No')
|
|
658
|
-
end
|
|
659
|
-
end
|
|
660
|
-
end
|
|
661
|
-
end
|
|
662
|
-
end
|
|
663
|
-
|
|
664
|
-
describe '#index when searching by user and there are less than 15 users' do
|
|
665
|
-
before :all do
|
|
666
|
-
@user2 = User.create! :username => 'Jean-Paul'
|
|
667
|
-
User.count.downto(14) do
|
|
668
|
-
user = User.find(
|
|
669
|
-
:first,
|
|
670
|
-
:conditions => [
|
|
671
|
-
'username != ? and username != ?', @user.username, @user.username
|
|
672
|
-
]
|
|
673
|
-
)
|
|
674
|
-
user.destroy
|
|
675
|
-
end
|
|
676
|
-
BlogPost.destroy_all
|
|
677
|
-
BlogPost.create! :title => "Soren's first post", :user => @user
|
|
678
|
-
BlogPost.create! :title => "Soren's second post", :user => @user
|
|
679
|
-
BlogPost.create! :title => "Jean-Paul's post", :user => @user2
|
|
680
|
-
end
|
|
681
|
-
|
|
682
|
-
before :each do
|
|
683
|
-
get(
|
|
684
|
-
:index,
|
|
685
|
-
:search => {:textile => '', :title => '', :user_id => @user2.id.to_s}
|
|
686
|
-
)
|
|
687
|
-
response.should be_success
|
|
688
|
-
end
|
|
689
|
-
|
|
690
|
-
it 'should show blog posts by Jean-Paul' do
|
|
691
|
-
response.should have_tag('td', :text => "Jean-Paul's post")
|
|
692
|
-
end
|
|
693
|
-
|
|
694
|
-
it 'should not show blog posts by Soren' do
|
|
695
|
-
response.should_not have_tag('td', :text => "Soren's first post")
|
|
696
|
-
response.should_not have_tag('td', :text => "Soren's second post")
|
|
697
|
-
end
|
|
698
|
-
|
|
699
|
-
it 'should show the user field pre-set' do
|
|
700
|
-
response.should have_tag(
|
|
701
|
-
'form[id=search_form][method=get]', :text => /Title/
|
|
702
|
-
) do
|
|
703
|
-
with_tag('select[name=?]', 'search[user_id]') do
|
|
704
|
-
with_tag("option[value='']", :text => '')
|
|
705
|
-
with_tag("option[value=?][selected=selected]", @user2.id)
|
|
706
|
-
end
|
|
707
|
-
end
|
|
708
|
-
end
|
|
709
|
-
end
|
|
710
|
-
|
|
711
|
-
describe '#index when searching by user and there are more than 15 users' do
|
|
712
|
-
before :all do
|
|
713
|
-
@blog_post = BlogPost.create! :title => random_word, :user => @user
|
|
714
|
-
User.count.upto(16) do |i|
|
|
715
|
-
User.create! :username => "--user #{i}--"
|
|
716
|
-
end
|
|
717
|
-
end
|
|
718
|
-
|
|
719
|
-
before :each do
|
|
720
|
-
get(
|
|
721
|
-
:index,
|
|
722
|
-
:search => {:textile => '', :title => '', :user_id => @user.id.to_s}
|
|
723
|
-
)
|
|
724
|
-
response.should be_success
|
|
725
|
-
end
|
|
726
|
-
|
|
727
|
-
it 'should show pre-populated user autocomplete in the search form' do
|
|
728
|
-
response.should_not have_tag("select[name=?]", "search[user_id]]")
|
|
729
|
-
response.should have_tag(
|
|
730
|
-
"input[id=user_autocomplete_input][value=?]", @user.username
|
|
731
|
-
)
|
|
732
|
-
response.should have_tag(
|
|
733
|
-
"input[type=hidden][name=?][id=search_user_id][value=?]",
|
|
734
|
-
"search[user_id]", @user.id.to_s
|
|
735
|
-
)
|
|
736
|
-
response.should have_tag("div[id=user_autocomplete_palette]")
|
|
737
|
-
response.should have_tag('div[id=clear_user_link]')
|
|
738
|
-
response.body.should match(
|
|
739
|
-
%r|
|
|
740
|
-
new\s*AdminAssistant.RestrictedAutocompleter\(
|
|
741
|
-
\s*"user",
|
|
742
|
-
\s*"search_user_id",
|
|
743
|
-
\s*"/admin/blog_posts2/autocomplete_user",
|
|
744
|
-
[^)]*"includeBlank":\s*true
|
|
745
|
-
|mx
|
|
746
|
-
)
|
|
747
|
-
end
|
|
748
|
-
end
|
|
749
|
-
|
|
750
|
-
describe '#index with a blank search' do
|
|
751
|
-
before :each do
|
|
752
|
-
get(
|
|
753
|
-
:index,
|
|
754
|
-
:search => {
|
|
755
|
-
:body => '', :title => '', :textile => '', :id => '', :user_id => '',
|
|
756
|
-
'(all_or_any)' => 'all', 'id(comparator)' => ''
|
|
757
|
-
}
|
|
758
|
-
)
|
|
759
|
-
end
|
|
760
|
-
|
|
761
|
-
it 'should be successful' do
|
|
762
|
-
response.should be_success
|
|
763
|
-
end
|
|
764
|
-
end
|
|
765
|
-
|
|
766
|
-
describe '#index with one record with a false textile field' do
|
|
767
|
-
before :all do
|
|
768
|
-
BlogPost.destroy_all
|
|
769
|
-
@blog_post = BlogPost.create!(
|
|
770
|
-
:title => random_word, :user => @user, :textile => false
|
|
771
|
-
)
|
|
772
|
-
end
|
|
773
|
-
|
|
774
|
-
before :each do
|
|
775
|
-
get :index
|
|
776
|
-
end
|
|
777
|
-
|
|
778
|
-
it 'should make the textile field an Ajax toggle' do
|
|
779
|
-
toggle_div_id = "blog_post_#{@blog_post.id}_textile"
|
|
780
|
-
post_url =
|
|
781
|
-
"/admin/blog_posts2/update/#{@blog_post.id}?" +
|
|
782
|
-
CGI.escape('blog_post[textile]') + "=1&from=#{toggle_div_id}"
|
|
783
|
-
response.should have_tag("div[id=?]", toggle_div_id) do
|
|
784
|
-
ajax_substr = "new Ajax.Updater('#{toggle_div_id}', '#{post_url}'"
|
|
785
|
-
with_tag("a[href=#][onclick*=?]", ajax_substr, :text => 'No')
|
|
786
|
-
end
|
|
787
|
-
end
|
|
788
|
-
end
|
|
789
|
-
|
|
790
|
-
describe '#index with 11 blog posts' do
|
|
791
|
-
before :all do
|
|
792
|
-
BlogPost.destroy_all
|
|
793
|
-
1.upto(11) do |i|
|
|
794
|
-
BlogPost.create!(
|
|
795
|
-
:title => "--post #{i}--", :user => @user
|
|
796
|
-
)
|
|
797
|
-
end
|
|
798
|
-
end
|
|
799
|
-
|
|
800
|
-
before :each do
|
|
801
|
-
get :index
|
|
802
|
-
end
|
|
803
|
-
|
|
804
|
-
it 'should show link to page 2' do
|
|
805
|
-
response.should have_tag("a[href=/admin/blog_posts2?page=2]")
|
|
806
|
-
end
|
|
807
|
-
|
|
808
|
-
it 'should say 11 blog posts found' do
|
|
809
|
-
response.body.should match(/11 blog posts found/)
|
|
810
|
-
end
|
|
811
|
-
|
|
812
|
-
it 'should mark the table rows with custom CSS class' do
|
|
813
|
-
response.should have_tag('tr[class~="custom_tr_css_class"]')
|
|
814
|
-
end
|
|
815
|
-
|
|
816
|
-
it 'should mark the user cells with custom CSS class' do
|
|
817
|
-
response.should have_tag('td[class~="custom_td_css_class"]', :text => @user.username)
|
|
818
|
-
end
|
|
819
|
-
end
|
|
820
|
-
|
|
821
|
-
describe '#new' do
|
|
822
|
-
before :all do
|
|
823
|
-
Tag.find_or_create_by_tag 'tag_from_yesterday'
|
|
824
|
-
end
|
|
825
|
-
|
|
826
|
-
before :each do
|
|
827
|
-
get :new
|
|
828
|
-
end
|
|
829
|
-
|
|
830
|
-
it 'should show a field for tags' do
|
|
831
|
-
response.body.should match(%r|<input.*name="blog_post\[tags\]"|m)
|
|
832
|
-
end
|
|
833
|
-
|
|
834
|
-
it 'should show current tags' do
|
|
835
|
-
response.body.should match(/tag_from_yesterday/)
|
|
836
|
-
end
|
|
837
|
-
|
|
838
|
-
it "should show a checkbox for the 'publish' virtual field" do
|
|
839
|
-
if %w(2.3.2 2.3.3 2.3.4).include?(RAILS_GEM_VERSION)
|
|
840
|
-
response.body.should match(
|
|
841
|
-
%r!
|
|
842
|
-
<input[^>]*
|
|
843
|
-
(name="blog_post\[publish\][^>]*type="hidden"[^>]value="0"|
|
|
844
|
-
type="hidden"[^>]*name="blog_post\[publish\][^>]value="0")
|
|
845
|
-
.*
|
|
846
|
-
<input[^>]*
|
|
847
|
-
(name="blog_post\[publish\][^>]*type="checkbox"[^>]value="1"|
|
|
848
|
-
type="checkbox"[^>]*name="blog_post\[publish\][^>]value="1")
|
|
849
|
-
!x
|
|
850
|
-
)
|
|
851
|
-
elsif %w(2.1.0 2.1.2 2.2.2).include?(RAILS_GEM_VERSION)
|
|
852
|
-
response.body.should match(
|
|
853
|
-
%r!
|
|
854
|
-
<input[^>]*
|
|
855
|
-
(name="blog_post\[publish\][^>]*type="checkbox"[^>]value="1"|
|
|
856
|
-
type="checkbox"[^>]*name="blog_post\[publish\][^>]value="1")
|
|
857
|
-
.*
|
|
858
|
-
<input[^>]*
|
|
859
|
-
(name="blog_post\[publish\][^>]*type="hidden"[^>]value="0"|
|
|
860
|
-
type="hidden"[^>]*name="blog_post\[publish\][^>]value="0")
|
|
861
|
-
!x
|
|
862
|
-
)
|
|
863
|
-
else
|
|
864
|
-
raise "I don't have a specified behavior for #{RAILS_GEM_VERSION}"
|
|
865
|
-
end
|
|
866
|
-
end
|
|
867
|
-
|
|
868
|
-
it "should not duplicate the DOM ID of the 'publish' checkbox on the page" do
|
|
869
|
-
response.body.scan(/id="blog_post_publish"|id="blog_post\[publish\]"/).size.should == 1
|
|
870
|
-
end
|
|
871
|
-
|
|
872
|
-
it "should show the description for the 'publish' virtual field" do
|
|
873
|
-
response.body.should match(
|
|
874
|
-
/Click this and published_at will be set automatically/
|
|
875
|
-
)
|
|
876
|
-
end
|
|
877
|
-
|
|
878
|
-
it 'should show a preview button' do
|
|
879
|
-
response.should have_tag('input[type=submit][value=Preview]')
|
|
880
|
-
end
|
|
881
|
-
|
|
882
|
-
it 'should use a textarea for the body field' do
|
|
883
|
-
response.should have_tag(
|
|
884
|
-
'textarea[name=?][cols=20][rows=40]', 'blog_post[body]'
|
|
885
|
-
)
|
|
886
|
-
end
|
|
887
|
-
|
|
888
|
-
it "should use a checkbox for the boolean field 'textile'" do
|
|
889
|
-
response.body.should match(
|
|
890
|
-
%r!
|
|
891
|
-
<input[^>]*
|
|
892
|
-
(name="blog_post\[textile\][^>]*type="checkbox"|
|
|
893
|
-
type="checkbox"[^>]*name="blog_post\[textile\])
|
|
894
|
-
!x
|
|
895
|
-
)
|
|
896
|
-
end
|
|
897
|
-
|
|
898
|
-
it "should say 'Author' instead of 'User'" do
|
|
899
|
-
response.body.should match(/Author/)
|
|
900
|
-
end
|
|
901
|
-
end
|
|
902
|
-
|
|
903
|
-
describe '#show' do
|
|
904
|
-
before :all do
|
|
905
|
-
@blog_post = BlogPost.create! :title => random_word, :user => @user
|
|
906
|
-
end
|
|
907
|
-
|
|
908
|
-
before :each do
|
|
909
|
-
get :show, :id => @blog_post.id
|
|
910
|
-
response.should be_success
|
|
911
|
-
end
|
|
912
|
-
|
|
913
|
-
it 'should show user' do
|
|
914
|
-
response.body.should match(/soren/)
|
|
915
|
-
end
|
|
916
|
-
|
|
917
|
-
it 'should not show created at' do
|
|
918
|
-
response.body.should_not match(/Created at/)
|
|
919
|
-
end
|
|
920
|
-
end
|
|
921
|
-
|
|
922
|
-
describe '#update' do
|
|
923
|
-
before :all do
|
|
924
|
-
@blog_post = BlogPost.create! :title => random_word, :user => @user
|
|
925
|
-
end
|
|
926
|
-
|
|
927
|
-
describe 'when there are no validation errors' do
|
|
928
|
-
before :each do
|
|
929
|
-
post(
|
|
930
|
-
:update,
|
|
931
|
-
:id => @blog_post.id, :blog_post => {:tags => 'tag1 tag2 tag3'}
|
|
932
|
-
)
|
|
933
|
-
end
|
|
934
|
-
|
|
935
|
-
it 'should set the tags_string' do
|
|
936
|
-
@blog_post.reload.tags_string.should match(/tag1,tag2,tag3/)
|
|
937
|
-
end
|
|
938
|
-
end
|
|
939
|
-
|
|
940
|
-
describe "when the user has clicked 'Preview'" do
|
|
941
|
-
before :each do
|
|
942
|
-
title2 = random_word
|
|
943
|
-
post(
|
|
944
|
-
:update,
|
|
945
|
-
:id => @blog_post.id, :blog_post => {:title => title2},
|
|
946
|
-
:commit => 'Preview'
|
|
947
|
-
)
|
|
948
|
-
end
|
|
949
|
-
|
|
950
|
-
it 'should redirect to the edit page with the preview flag' do
|
|
951
|
-
response.should redirect_to(
|
|
952
|
-
:action => 'edit', :id => @blog_post.id, :preview => '1'
|
|
953
|
-
)
|
|
954
|
-
end
|
|
955
|
-
end
|
|
956
|
-
end
|
|
957
|
-
|
|
958
|
-
describe '#update with a bad tag' do
|
|
959
|
-
before :all do
|
|
960
|
-
@blog_post = BlogPost.create! :title => random_word, :user => @user
|
|
961
|
-
end
|
|
962
|
-
|
|
963
|
-
before :each do
|
|
964
|
-
post(
|
|
965
|
-
:update,
|
|
966
|
-
:id => @blog_post.id,
|
|
967
|
-
:blog_post => {:tags => "foo bar! baz"}
|
|
968
|
-
)
|
|
969
|
-
end
|
|
970
|
-
|
|
971
|
-
it 'should render a useful error' do
|
|
972
|
-
response.should have_tag("div.errorExplanation") do
|
|
973
|
-
with_tag 'li', :text => "Tags contain invalid string 'bar!'"
|
|
974
|
-
end
|
|
975
|
-
end
|
|
976
|
-
|
|
977
|
-
it 'should highlight the tag string entry' do
|
|
978
|
-
response.should have_tag("div.fieldWithErrors") do
|
|
979
|
-
with_tag "input[name=?][value=?]", "blog_post[tags]", "foo bar! baz"
|
|
980
|
-
end
|
|
981
|
-
end
|
|
982
|
-
end
|
|
983
|
-
|
|
984
|
-
describe '#update with a bad tag and a missing title' do
|
|
985
|
-
before :all do
|
|
986
|
-
@blog_post = BlogPost.create! :title => random_word, :user => @user
|
|
987
|
-
end
|
|
988
|
-
|
|
989
|
-
before :each do
|
|
990
|
-
post(
|
|
991
|
-
:update,
|
|
992
|
-
:id => @blog_post.id,
|
|
993
|
-
:blog_post => {:tags => "foo bar! baz", :title => ''}
|
|
994
|
-
)
|
|
995
|
-
end
|
|
996
|
-
|
|
997
|
-
it 'should render a useful tags error' do
|
|
998
|
-
response.should have_tag("div.errorExplanation") do
|
|
999
|
-
with_tag 'li', :text => "Tags contain invalid string 'bar!'"
|
|
1000
|
-
end
|
|
1001
|
-
end
|
|
1002
|
-
|
|
1003
|
-
it 'should highlight the tag string entry' do
|
|
1004
|
-
response.should have_tag("div.fieldWithErrors") do
|
|
1005
|
-
with_tag "input[name=?][value=?]", "blog_post[tags]", "foo bar! baz"
|
|
1006
|
-
end
|
|
1007
|
-
end
|
|
1008
|
-
|
|
1009
|
-
it 'should render a useful title error' do
|
|
1010
|
-
response.should have_tag("div.errorExplanation") do
|
|
1011
|
-
with_tag 'li', :text => "Title can't be blank"
|
|
1012
|
-
end
|
|
1013
|
-
end
|
|
1014
|
-
|
|
1015
|
-
it 'should highlight the title string entry' do
|
|
1016
|
-
response.should have_tag("div.fieldWithErrors") do
|
|
1017
|
-
with_tag "input[name=?][value=?]", "blog_post[title]", ""
|
|
1018
|
-
end
|
|
1019
|
-
end
|
|
1020
|
-
end
|
|
1021
|
-
end
|