admin_assistant 2.0.1 → 2.1.0
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 +5 -14
- data/VERSION +1 -1
- data/admin_assistant.gemspec +174 -388
- data/lib/admin_assistant/column.rb +2 -2
- data/lib/admin_assistant/has_many_column.rb +6 -1
- data/lib/admin_assistant/polymorphic_belongs_to_column.rb +5 -1
- data/lib/admin_assistant.rb +4 -5
- data/{rails_3_test → rails_3_0}/.gitignore +0 -0
- data/{rails_3_test → rails_3_0}/Gemfile +0 -0
- data/{rails_3_test → rails_3_0}/Gemfile.lock +1 -1
- data/{rails_3_test → rails_3_0}/README +0 -0
- data/{rails_3_test → rails_3_0}/Rakefile +0 -0
- data/{rails_2_test → rails_3_0}/app/controllers/admin/appointments2_controller.rb +0 -0
- data/{rails_2_test → rails_3_0}/app/controllers/admin/appointments_controller.rb +0 -0
- data/{rails_2_test → rails_3_0}/app/controllers/admin/blog_posts2_controller.rb +0 -0
- data/{rails_2_test → rails_3_0}/app/controllers/admin/blog_posts3_controller.rb +0 -0
- data/{rails_2_test → rails_3_0}/app/controllers/admin/blog_posts4_controller.rb +0 -0
- data/{rails_2_test → rails_3_0}/app/controllers/admin/blog_posts5_controller.rb +0 -0
- data/{rails_2_test → rails_3_0}/app/controllers/admin/blog_posts6_controller.rb +0 -0
- data/{rails_3_test → rails_3_0}/app/controllers/admin/blog_posts_controller.rb +0 -0
- data/{rails_2_test → rails_3_0}/app/controllers/admin/blog_posts_custom_new_and_edit_controller.rb +0 -0
- data/{rails_2_test → rails_3_0}/app/controllers/admin/blog_posts_read_only_controller.rb +0 -0
- data/{rails_2_test → rails_3_0}/app/controllers/admin/bookmarks_controller.rb +0 -0
- data/{rails_2_test → rails_3_0}/app/controllers/admin/comments2_controller.rb +0 -0
- data/{rails_2_test → rails_3_0}/app/controllers/admin/comments_controller.rb +0 -0
- data/{rails_2_test → rails_3_0}/app/controllers/admin/images2_controller.rb +0 -0
- data/{rails_2_test → rails_3_0}/app/controllers/admin/images_controller.rb +0 -0
- data/{rails_2_test → rails_3_0}/app/controllers/admin/misconfigured1_controller.rb +0 -0
- data/{rails_2_test → rails_3_0}/app/controllers/admin/not_migrated_yets_controller.rb +0 -0
- data/{rails_2_test → rails_3_0}/app/controllers/admin/product_categories2_controller.rb +0 -0
- data/{rails_2_test → rails_3_0}/app/controllers/admin/product_categories_controller.rb +0 -0
- data/{rails_2_test → rails_3_0}/app/controllers/admin/television_airings_controller.rb +0 -0
- data/{rails_2_test → rails_3_0}/app/controllers/admin/television_time_slots_controller.rb +0 -0
- data/{rails_2_test → rails_3_0}/app/controllers/admin/users2_controller.rb +0 -0
- data/{rails_3_test → rails_3_0}/app/controllers/admin/users_controller.rb +0 -0
- data/{rails_3_test → rails_3_0}/app/controllers/application_controller.rb +0 -0
- data/{rails_2_test → rails_3_0}/app/controllers/blog_posts_controller.rb +0 -0
- data/{rails_2_test → rails_3_0}/app/helpers/admin/appointments_helper.rb +0 -0
- data/{rails_2_test → rails_3_0}/app/helpers/admin/blog_posts2_helper.rb +0 -0
- data/{rails_2_test → rails_3_0}/app/helpers/admin/blog_posts3_helper.rb +0 -0
- data/{rails_2_test → rails_3_0}/app/helpers/admin/blog_posts4_helper.rb +0 -0
- data/{rails_3_test → rails_3_0}/app/helpers/admin/blog_posts6_helper.rb +0 -0
- data/{rails_2_test → rails_3_0}/app/helpers/admin/blog_posts_custom_new_and_edit_helper.rb +0 -0
- data/{rails_2_test → rails_3_0}/app/helpers/admin/blog_posts_helper.rb +0 -0
- data/{rails_2_test → rails_3_0}/app/helpers/admin/blog_posts_read_only_helper.rb +0 -0
- data/{rails_2_test → rails_3_0}/app/helpers/admin/bookmarks_helper.rb +0 -0
- data/{rails_2_test → rails_3_0}/app/helpers/admin/comments2_helper.rb +0 -0
- data/{rails_2_test → rails_3_0}/app/helpers/admin/comments_helper.rb +0 -0
- data/{rails_2_test → rails_3_0}/app/helpers/admin/images2_helper.rb +0 -0
- data/{rails_2_test → rails_3_0}/app/helpers/admin/images_helper.rb +0 -0
- data/{rails_2_test → rails_3_0}/app/helpers/admin/misconfigured1_helper.rb +0 -0
- data/{rails_2_test → rails_3_0}/app/helpers/admin/not_migrated_yets_helper.rb +0 -0
- data/{rails_2_test → rails_3_0}/app/helpers/admin/product_categories2_helper.rb +0 -0
- data/{rails_2_test → rails_3_0}/app/helpers/admin/product_categories_helper.rb +0 -0
- data/{rails_2_test → rails_3_0}/app/helpers/admin/television_airings_helper.rb +0 -0
- data/{rails_2_test → rails_3_0}/app/helpers/admin/television_time_slots_helper.rb +0 -0
- data/{rails_2_test → rails_3_0}/app/helpers/admin/users2_helper.rb +0 -0
- data/{rails_3_test → rails_3_0}/app/helpers/admin/users_helper.rb +0 -0
- data/{rails_3_test → rails_3_0}/app/helpers/application_helper.rb +0 -0
- data/{rails_2_test → rails_3_0}/app/models/appointment.rb +0 -0
- data/{rails_2_test → rails_3_0}/app/models/blog_post.rb +0 -0
- data/{rails_2_test → rails_3_0}/app/models/blog_post_tag.rb +0 -0
- data/{rails_2_test → rails_3_0}/app/models/bookmark.rb +0 -0
- data/{rails_2_test → rails_3_0}/app/models/comment.rb +0 -0
- data/{rails_2_test → rails_3_0}/app/models/image.rb +0 -0
- data/{rails_2_test → rails_3_0}/app/models/not_migrated_yet.rb +0 -0
- data/{rails_3_test → rails_3_0}/app/models/product.rb +0 -0
- data/{rails_2_test → rails_3_0}/app/models/product_category.rb +0 -0
- data/{rails_2_test → rails_3_0}/app/models/tag.rb +0 -0
- data/{rails_2_test → rails_3_0}/app/models/television_airing.rb +0 -0
- data/{rails_2_test → rails_3_0}/app/models/television_time_slot.rb +0 -0
- data/{rails_3_test → rails_3_0}/app/models/user.rb +0 -0
- data/{rails_2_test → rails_3_0}/app/views/admin/appointments/_subject_input.html.erb +0 -0
- data/{rails_2_test → rails_3_0}/app/views/admin/appointments2/_time_input.html.erb +0 -0
- data/{rails_2_test → rails_3_0}/app/views/admin/blog_posts2/_after_form.html.erb +0 -0
- data/{rails_2_test → rails_3_0}/app/views/admin/blog_posts2/_after_index.html.erb +0 -0
- data/{rails_2_test → rails_3_0}/app/views/admin/blog_posts2/_after_tags_input.html.erb +0 -0
- data/{rails_2_test → rails_3_0}/app/views/admin/blog_posts2/_before_index.html.erb +0 -0
- data/{rails_2_test → rails_3_0}/app/views/admin/blog_posts5/_after_index_header.html.erb +0 -0
- data/{rails_2_test → rails_3_0}/app/views/admin/blog_posts_read_only/_body_for_show.html.erb +0 -0
- data/{rails_3_test → rails_3_0}/app/views/layouts/admin.html.erb +0 -0
- data/{rails_3_test → rails_3_0}/app/views/layouts/application.html.erb +0 -0
- data/{rails_3_test → rails_3_0}/config/application.rb +0 -0
- data/{rails_3_test → rails_3_0}/config/boot.rb +0 -0
- data/{rails_3_test → rails_3_0}/config/database.yml +0 -0
- data/{rails_3_test → rails_3_0}/config/environment.rb +0 -0
- data/{rails_3_test → rails_3_0}/config/environments/development.rb +0 -1
- data/{rails_3_test → rails_3_0}/config/environments/production.rb +0 -0
- data/{rails_3_test → rails_3_0}/config/environments/test.rb +0 -0
- data/{rails_3_test → rails_3_0}/config/initializers/backtrace_silencers.rb +0 -0
- data/{rails_3_test → rails_3_0}/config/initializers/inflections.rb +0 -0
- data/{rails_2_test → rails_3_0}/config/initializers/mime_types.rb +0 -0
- data/{rails_3_test → rails_3_0}/config/initializers/secret_token.rb +0 -0
- data/{rails_3_test → rails_3_0}/config/initializers/session_store.rb +0 -0
- data/{rails_3_test → rails_3_0}/config/locales/en.yml +0 -0
- data/rails_3_0/config/routes.rb +8 -0
- data/{rails_3_test → rails_3_0}/config.ru +0 -0
- data/{rails_2_test → rails_3_0}/db/migrate/20090213215514_create_blog_posts.rb +0 -0
- data/{rails_2_test → rails_3_0}/db/migrate/20090217225542_add_body_to_blog_posts.rb +0 -0
- data/{rails_2_test → rails_3_0}/db/migrate/20090221220917_create_tags.rb +0 -0
- data/{rails_2_test → rails_3_0}/db/migrate/20090221220947_create_blog_post_tags.rb +0 -0
- data/{rails_2_test → rails_3_0}/db/migrate/20090222162204_add_textile_to_blog_posts.rb +0 -0
- data/{rails_2_test → rails_3_0}/db/migrate/20090222163231_add_published_at_to_blog_posts.rb +0 -0
- data/{rails_2_test → rails_3_0}/db/migrate/20090301191722_create_images.rb +0 -0
- data/{rails_2_test → rails_3_0}/db/migrate/20090305165345_create_accounts.rb +0 -0
- data/{rails_2_test → rails_3_0}/db/migrate/20090307225027_rename_accounts_to_users.rb +0 -0
- data/{rails_2_test → rails_3_0}/db/migrate/20090307225750_add_user_id_to_blog_posts.rb +0 -0
- data/{rails_2_test → rails_3_0}/db/migrate/20090309185114_change_blog_posts_textile.rb +0 -0
- data/{rails_2_test → rails_3_0}/db/migrate/20090309193635_create_products.rb +0 -0
- data/{rails_2_test → rails_3_0}/db/migrate/20090309203056_create_comments.rb +0 -0
- data/{rails_2_test → rails_3_0}/db/migrate/20090323005947_create_file_column_images.rb +0 -0
- data/{rails_2_test → rails_3_0}/db/migrate/20090326160049_add_birthday_to_users.rb +0 -0
- data/{rails_2_test → rails_3_0}/db/migrate/20090326223606_add_state_to_users.rb +0 -0
- data/{rails_2_test → rails_3_0}/db/migrate/20090503134004_add_file_column_image_to_products.rb +0 -0
- data/{rails_2_test → rails_3_0}/db/migrate/20090617173651_create_bookmarks.rb +0 -0
- data/{rails_2_test → rails_3_0}/db/migrate/20090624165355_add_tags_string_to_blog_post.rb +0 -0
- data/{rails_2_test → rails_3_0}/db/migrate/20090625144313_add_avatar_fields_to_user.rb +0 -0
- data/{rails_2_test → rails_3_0}/db/migrate/20090629202956_add_merged_into_to_blog_posts.rb +0 -0
- data/{rails_2_test → rails_3_0}/db/migrate/20090701171857_add_force_textile_to_users.rb +0 -0
- data/{rails_2_test → rails_3_0}/db/migrate/20090704163647_add_deleted_at_to_products.rb +0 -0
- data/{rails_2_test → rails_3_0}/db/migrate/20090704173800_add_sale_fields_to_products.rb +0 -0
- data/{rails_2_test → rails_3_0}/db/migrate/20090714024501_create_product_categories.rb +0 -0
- data/{rails_2_test → rails_3_0}/db/migrate/20090819162835_add_admin_level_to_users.rb +0 -0
- data/{rails_2_test → rails_3_0}/db/migrate/20091115134559_add_first_and_last_names_to_users.rb +0 -0
- data/{rails_2_test → rails_3_0}/db/migrate/20091221011256_add_position_to_product_categories.rb +0 -0
- data/{rails_2_test → rails_3_0}/db/migrate/20091222160814_create_appointments.rb +0 -0
- data/{rails_2_test → rails_3_0}/db/migrate/20091227224547_add_user_id_to_appointments.rb +0 -0
- data/{rails_2_test → rails_3_0}/db/migrate/20100214213359_create_television_time_slots.rb +0 -0
- data/{rails_2_test → rails_3_0}/db/migrate/20100214213451_create_television_airings.rb +0 -0
- data/{rails_3_test → rails_3_0}/db/migrate/20110426215702_remove_avatar_fields_from_users.rb +0 -0
- data/{rails_3_test → rails_3_0}/db/seeds.rb +0 -0
- data/{rails_3_test → rails_3_0}/doc/README_FOR_APP +0 -0
- data/{rails_3_test → rails_3_0}/lib/tasks/.gitkeep +0 -0
- data/{rails_3_test → rails_3_0}/public/404.html +0 -0
- data/{rails_3_test → rails_3_0}/public/422.html +0 -0
- data/{rails_3_test → rails_3_0}/public/500.html +0 -0
- data/{rails_2_test → rails_3_0}/public/favicon.ico +0 -0
- data/{rails_2_test → rails_3_0}/public/images/rails.png +0 -0
- data/{rails_3_test → rails_3_0}/public/index.html +0 -0
- data/{rails_2_test → rails_3_0}/public/javascripts/application.js +0 -0
- data/{rails_2_test → rails_3_0}/public/javascripts/jquery-1.4.4.min.js +0 -0
- data/{rails_3_test → rails_3_0}/public/javascripts/rails.js +0 -0
- data/{rails_2_test → rails_3_0}/public/robots.txt +0 -0
- data/{rails_3_test → rails_3_0}/public/stylesheets/.gitkeep +0 -0
- data/{rails_2_test → rails_3_0}/public/stylesheets/admin.css +0 -0
- data/{rails_2_test → rails_3_0}/public/stylesheets/scaffold.css +0 -0
- data/{rails_3_test → rails_3_0}/script/rails +0 -0
- data/{rails_2_test → rails_3_0}/test/data/ruby_throated.jpg +0 -0
- data/{rails_2_test → rails_3_0}/test/data/tweenbot.jpg +0 -0
- data/{rails_3_test → rails_3_0}/test/fixtures/placeholder.txt +0 -0
- data/{rails_3_test → rails_3_0}/test/integration/admin/appointments2_integration_test.rb +0 -0
- data/{rails_3_test → rails_3_0}/test/integration/admin/appointments_integration_test.rb +0 -0
- data/{rails_3_test → rails_3_0}/test/integration/admin/blog_posts2_integration_test.rb +2 -2
- data/{rails_3_test → rails_3_0}/test/integration/admin/blog_posts3_integration_test.rb +0 -0
- data/{rails_3_test → rails_3_0}/test/integration/admin/blog_posts4_integration_test.rb +0 -0
- data/{rails_3_test → rails_3_0}/test/integration/admin/blog_posts5_integration_test.rb +0 -0
- data/{rails_3_test → rails_3_0}/test/integration/admin/blog_posts6_integration_test.rb +0 -0
- data/{rails_3_test → rails_3_0}/test/integration/admin/blog_posts_custom_new_and_edit_integration_test.rb +0 -0
- data/{rails_3_test → rails_3_0}/test/integration/admin/blog_posts_integration_test.rb +8 -16
- data/{rails_3_test → rails_3_0}/test/integration/admin/blog_posts_read_only_integration_test.rb +0 -0
- data/{rails_3_test → rails_3_0}/test/integration/admin/bookmarks_integration_test.rb +0 -0
- data/{rails_3_test → rails_3_0}/test/integration/admin/comments2_integration_test.rb +0 -0
- data/{rails_3_test → rails_3_0}/test/integration/admin/comments_integration_test.rb +0 -0
- data/{rails_2_test → rails_3_0}/test/integration/admin/images2_integration_test.rb +0 -0
- data/{rails_3_test → rails_3_0}/test/integration/admin/images_integration_test.rb +0 -0
- data/{rails_3_test → rails_3_0}/test/integration/admin/misconfigured1_integration_test.rb +0 -0
- data/{rails_3_test → rails_3_0}/test/integration/admin/product_categories2_integration_test.rb +0 -0
- data/{rails_2_test → rails_3_0}/test/integration/admin/product_categories_integration_test.rb +0 -0
- data/{rails_2_test → rails_3_0}/test/integration/admin/television_airings_integration_test.rb +0 -0
- data/{rails_2_test → rails_3_0}/test/integration/admin/users2_integration_test.rb +0 -0
- data/{rails_3_test → rails_3_0}/test/integration/admin/users_integration_test.rb +0 -0
- data/{rails_3_test → rails_3_0}/test/integration/blog_posts_integration_test.rb +0 -0
- data/{rails_3_test → rails_3_0}/test/performance/browsing_test.rb +0 -0
- data/{rails_3_test → rails_3_0}/test/test_helper.rb +40 -0
- data/{rails_3_test → rails_3_0}/vendor/plugins/.gitkeep +0 -0
- data/rails_3_1/Gemfile +12 -0
- data/rails_3_1/Gemfile.lock +116 -0
- data/rails_3_1/README +256 -0
- data/{rails_2_test → rails_3_1}/Rakefile +2 -8
- data/rails_3_1/config.ru +4 -0
- metadata +176 -390
- data/lib/admin_assistant/date_time_range_end_point_selector.rb +0 -341
- data/rails_2_test/README +0 -256
- data/rails_2_test/app/controllers/admin/blog_posts_controller.rb +0 -8
- data/rails_2_test/app/controllers/admin/file_column_images2_controller.rb +0 -10
- data/rails_2_test/app/controllers/admin/file_column_images_controller.rb +0 -6
- data/rails_2_test/app/controllers/admin/products2_controller.rb +0 -15
- data/rails_2_test/app/controllers/admin/products_controller.rb +0 -31
- data/rails_2_test/app/controllers/admin/users_controller.rb +0 -63
- data/rails_2_test/app/controllers/application.rb +0 -16
- data/rails_2_test/app/controllers/application_controller.rb +0 -16
- data/rails_2_test/app/helpers/admin/appointments2_helper.rb +0 -2
- data/rails_2_test/app/helpers/admin/blog_posts6_helper.rb +0 -16
- data/rails_2_test/app/helpers/admin/file_column_images2_helper.rb +0 -2
- data/rails_2_test/app/helpers/admin/file_column_images_helper.rb +0 -2
- data/rails_2_test/app/helpers/admin/products2_helper.rb +0 -3
- data/rails_2_test/app/helpers/admin/products_helper.rb +0 -6
- data/rails_2_test/app/helpers/admin/users_helper.rb +0 -25
- data/rails_2_test/app/helpers/application_helper.rb +0 -3
- data/rails_2_test/app/helpers/blog_posts_helper.rb +0 -2
- data/rails_2_test/app/models/file_column_image.rb +0 -3
- data/rails_2_test/app/models/product.rb +0 -7
- data/rails_2_test/app/models/user.rb +0 -14
- data/rails_2_test/app/views/admin/products/_name_input.html.erb +0 -2
- data/rails_2_test/app/views/admin/products/_percent_off_input.html.erb +0 -2
- data/rails_2_test/app/views/admin/products/_price_input.html.erb +0 -10
- data/rails_2_test/app/views/blog_posts/show.html.erb +0 -13
- data/rails_2_test/app/views/layouts/admin.html.erb +0 -31
- data/rails_2_test/config/boot.rb +0 -109
- data/rails_2_test/config/database.yml +0 -28
- data/rails_2_test/config/environment.rb +0 -78
- data/rails_2_test/config/environments/development.rb +0 -17
- data/rails_2_test/config/environments/production.rb +0 -24
- data/rails_2_test/config/environments/test.rb +0 -24
- data/rails_2_test/config/initializers/inflections.rb +0 -10
- data/rails_2_test/config/initializers/new_rails_defaults.rb +0 -17
- data/rails_2_test/config/locales/en.yml +0 -5
- data/rails_2_test/config/routes.rb +0 -43
- data/rails_2_test/doc/README_FOR_APP +0 -5
- data/rails_2_test/lib/tasks/rspec.rake +0 -163
- data/rails_2_test/public/404.html +0 -30
- data/rails_2_test/public/422.html +0 -30
- data/rails_2_test/public/500.html +0 -33
- data/rails_2_test/public/dispatch.cgi +0 -10
- data/rails_2_test/public/dispatch.fcgi +0 -24
- data/rails_2_test/public/dispatch.rb +0 -10
- data/rails_2_test/public/index.html +0 -274
- data/rails_2_test/script/about +0 -4
- data/rails_2_test/script/autospec +0 -5
- data/rails_2_test/script/console +0 -3
- data/rails_2_test/script/dbconsole +0 -3
- data/rails_2_test/script/destroy +0 -3
- data/rails_2_test/script/generate +0 -3
- data/rails_2_test/script/performance/benchmarker +0 -3
- data/rails_2_test/script/performance/profiler +0 -3
- data/rails_2_test/script/performance/request +0 -3
- data/rails_2_test/script/plugin +0 -3
- data/rails_2_test/script/populate_tables.rb +0 -49
- data/rails_2_test/script/process/inspector +0 -3
- data/rails_2_test/script/process/reaper +0 -3
- data/rails_2_test/script/process/spawner +0 -3
- data/rails_2_test/script/runner +0 -3
- data/rails_2_test/script/server +0 -3
- data/rails_2_test/script/spec +0 -5
- data/rails_2_test/script/spec_server +0 -125
- data/rails_2_test/test/fixtures/file_column_images.yml +0 -7
- data/rails_2_test/test/integration/admin/appointments2_integration_test.rb +0 -79
- data/rails_2_test/test/integration/admin/appointments_integration_test.rb +0 -367
- data/rails_2_test/test/integration/admin/blog_posts2_integration_test.rb +0 -806
- data/rails_2_test/test/integration/admin/blog_posts3_integration_test.rb +0 -418
- data/rails_2_test/test/integration/admin/blog_posts4_integration_test.rb +0 -189
- data/rails_2_test/test/integration/admin/blog_posts5_integration_test.rb +0 -75
- data/rails_2_test/test/integration/admin/blog_posts6_integration_test.rb +0 -39
- data/rails_2_test/test/integration/admin/blog_posts_custom_new_and_edit_integration_test.rb +0 -89
- data/rails_2_test/test/integration/admin/blog_posts_integration_test.rb +0 -788
- data/rails_2_test/test/integration/admin/blog_posts_read_only_integration_test.rb +0 -69
- data/rails_2_test/test/integration/admin/bookmarks_integration_test.rb +0 -445
- data/rails_2_test/test/integration/admin/comments2_integration_test.rb +0 -52
- data/rails_2_test/test/integration/admin/comments_integration_test.rb +0 -50
- data/rails_2_test/test/integration/admin/file_column_images2_integration_test.rb +0 -19
- data/rails_2_test/test/integration/admin/file_column_images_integration_test.rb +0 -69
- data/rails_2_test/test/integration/admin/images_integration_test.rb +0 -79
- data/rails_2_test/test/integration/admin/misconfigured1_integration_test.rb +0 -17
- data/rails_2_test/test/integration/admin/product_categories2_integration_test.rb +0 -179
- data/rails_2_test/test/integration/admin/products2_integration_test.rb +0 -155
- data/rails_2_test/test/integration/admin/products_integration_test.rb +0 -210
- data/rails_2_test/test/integration/admin/users_integration_test.rb +0 -266
- data/rails_2_test/test/integration/blog_posts_integration_test.rb +0 -9
- data/rails_2_test/test/test_helper.rb +0 -114
- data/rails_2_test/vendor/plugins/file_column/CHANGELOG +0 -69
- data/rails_2_test/vendor/plugins/file_column/README +0 -54
- data/rails_2_test/vendor/plugins/file_column/Rakefile +0 -36
- data/rails_2_test/vendor/plugins/file_column/TODO +0 -6
- data/rails_2_test/vendor/plugins/file_column/init.rb +0 -13
- data/rails_2_test/vendor/plugins/file_column/lib/file_column.rb +0 -723
- data/rails_2_test/vendor/plugins/file_column/lib/file_column_helper.rb +0 -150
- data/rails_2_test/vendor/plugins/file_column/lib/file_compat.rb +0 -28
- data/rails_2_test/vendor/plugins/file_column/lib/magick_file_column.rb +0 -260
- data/rails_2_test/vendor/plugins/file_column/lib/rails_file_column.rb +0 -19
- data/rails_2_test/vendor/plugins/file_column/lib/test_case.rb +0 -124
- data/rails_2_test/vendor/plugins/file_column/lib/validations.rb +0 -112
- data/rails_2_test/vendor/plugins/file_column/test/abstract_unit.rb +0 -63
- data/rails_2_test/vendor/plugins/file_column/test/connection.rb +0 -17
- data/rails_2_test/vendor/plugins/file_column/test/file_column_helper_test.rb +0 -97
- data/rails_2_test/vendor/plugins/file_column/test/file_column_test.rb +0 -650
- data/rails_2_test/vendor/plugins/file_column/test/fixtures/entry.rb +0 -32
- data/rails_2_test/vendor/plugins/file_column/test/fixtures/invalid-image.jpg +0 -1
- data/rails_2_test/vendor/plugins/file_column/test/fixtures/kerb.jpg +0 -0
- data/rails_2_test/vendor/plugins/file_column/test/fixtures/mysql.sql +0 -25
- data/rails_2_test/vendor/plugins/file_column/test/fixtures/schema.rb +0 -10
- data/rails_2_test/vendor/plugins/file_column/test/fixtures/skanthak.png +0 -0
- data/rails_2_test/vendor/plugins/file_column/test/magick_test.rb +0 -380
- data/rails_2_test/vendor/plugins/file_column/test/magick_view_only_test.rb +0 -21
- data/rails_3_test/app/controllers/admin/appointments2_controller.rb +0 -15
- data/rails_3_test/app/controllers/admin/appointments_controller.rb +0 -11
- data/rails_3_test/app/controllers/admin/blog_posts2_controller.rb +0 -138
- data/rails_3_test/app/controllers/admin/blog_posts3_controller.rb +0 -76
- data/rails_3_test/app/controllers/admin/blog_posts4_controller.rb +0 -21
- data/rails_3_test/app/controllers/admin/blog_posts5_controller.rb +0 -27
- data/rails_3_test/app/controllers/admin/blog_posts6_controller.rb +0 -10
- data/rails_3_test/app/controllers/admin/blog_posts_custom_new_and_edit_controller.rb +0 -15
- data/rails_3_test/app/controllers/admin/blog_posts_read_only_controller.rb +0 -19
- data/rails_3_test/app/controllers/admin/bookmarks_controller.rb +0 -11
- data/rails_3_test/app/controllers/admin/comments2_controller.rb +0 -14
- data/rails_3_test/app/controllers/admin/comments_controller.rb +0 -12
- data/rails_3_test/app/controllers/admin/images2_controller.rb +0 -11
- data/rails_3_test/app/controllers/admin/images_controller.rb +0 -6
- data/rails_3_test/app/controllers/admin/misconfigured1_controller.rb +0 -7
- data/rails_3_test/app/controllers/admin/not_migrated_yets_controller.rb +0 -9
- data/rails_3_test/app/controllers/admin/product_categories2_controller.rb +0 -7
- data/rails_3_test/app/controllers/admin/product_categories_controller.rb +0 -5
- data/rails_3_test/app/controllers/admin/television_airings_controller.rb +0 -5
- data/rails_3_test/app/controllers/admin/television_time_slots_controller.rb +0 -5
- data/rails_3_test/app/controllers/admin/users2_controller.rb +0 -10
- data/rails_3_test/app/controllers/blog_posts_controller.rb +0 -5
- data/rails_3_test/app/helpers/admin/appointments_helper.rb +0 -2
- data/rails_3_test/app/helpers/admin/blog_posts2_helper.rb +0 -27
- data/rails_3_test/app/helpers/admin/blog_posts3_helper.rb +0 -2
- data/rails_3_test/app/helpers/admin/blog_posts4_helper.rb +0 -2
- data/rails_3_test/app/helpers/admin/blog_posts_custom_new_and_edit_helper.rb +0 -29
- data/rails_3_test/app/helpers/admin/blog_posts_helper.rb +0 -2
- data/rails_3_test/app/helpers/admin/blog_posts_read_only_helper.rb +0 -2
- data/rails_3_test/app/helpers/admin/bookmarks_helper.rb +0 -2
- data/rails_3_test/app/helpers/admin/comments2_helper.rb +0 -2
- data/rails_3_test/app/helpers/admin/comments_helper.rb +0 -2
- data/rails_3_test/app/helpers/admin/images2_helper.rb +0 -8
- data/rails_3_test/app/helpers/admin/images_helper.rb +0 -2
- data/rails_3_test/app/helpers/admin/misconfigured1_helper.rb +0 -2
- data/rails_3_test/app/helpers/admin/not_migrated_yets_helper.rb +0 -2
- data/rails_3_test/app/helpers/admin/product_categories2_helper.rb +0 -2
- data/rails_3_test/app/helpers/admin/product_categories_helper.rb +0 -2
- data/rails_3_test/app/helpers/admin/television_airings_helper.rb +0 -2
- data/rails_3_test/app/helpers/admin/television_time_slots_helper.rb +0 -2
- data/rails_3_test/app/helpers/admin/users2_helper.rb +0 -2
- data/rails_3_test/app/models/appointment.rb +0 -5
- data/rails_3_test/app/models/blog_post.rb +0 -14
- data/rails_3_test/app/models/blog_post_tag.rb +0 -6
- data/rails_3_test/app/models/bookmark.rb +0 -6
- data/rails_3_test/app/models/comment.rb +0 -4
- data/rails_3_test/app/models/image.rb +0 -3
- data/rails_3_test/app/models/not_migrated_yet.rb +0 -2
- data/rails_3_test/app/models/product_category.rb +0 -9
- data/rails_3_test/app/models/tag.rb +0 -4
- data/rails_3_test/app/models/television_airing.rb +0 -3
- data/rails_3_test/app/models/television_time_slot.rb +0 -11
- data/rails_3_test/app/views/admin/appointments/_subject_input.html.erb +0 -2
- data/rails_3_test/app/views/admin/appointments2/_time_input.html.erb +0 -31
- data/rails_3_test/app/views/admin/blog_posts2/_after_form.html.erb +0 -5
- data/rails_3_test/app/views/admin/blog_posts2/_after_index.html.erb +0 -1
- data/rails_3_test/app/views/admin/blog_posts2/_after_tags_input.html.erb +0 -16
- data/rails_3_test/app/views/admin/blog_posts2/_before_index.html.erb +0 -2
- data/rails_3_test/app/views/admin/blog_posts5/_after_index_header.html.erb +0 -8
- data/rails_3_test/app/views/admin/blog_posts_read_only/_body_for_show.html.erb +0 -1
- data/rails_3_test/config/initializers/mime_types.rb +0 -5
- data/rails_3_test/config/routes.rb +0 -63
- data/rails_3_test/db/migrate/20090213215514_create_blog_posts.rb +0 -12
- data/rails_3_test/db/migrate/20090217225542_add_body_to_blog_posts.rb +0 -9
- data/rails_3_test/db/migrate/20090221220917_create_tags.rb +0 -13
- data/rails_3_test/db/migrate/20090221220947_create_blog_post_tags.rb +0 -14
- data/rails_3_test/db/migrate/20090222162204_add_textile_to_blog_posts.rb +0 -9
- data/rails_3_test/db/migrate/20090222163231_add_published_at_to_blog_posts.rb +0 -9
- data/rails_3_test/db/migrate/20090301191722_create_images.rb +0 -16
- data/rails_3_test/db/migrate/20090305165345_create_accounts.rb +0 -14
- data/rails_3_test/db/migrate/20090307225027_rename_accounts_to_users.rb +0 -9
- data/rails_3_test/db/migrate/20090307225750_add_user_id_to_blog_posts.rb +0 -9
- data/rails_3_test/db/migrate/20090309185114_change_blog_posts_textile.rb +0 -9
- data/rails_3_test/db/migrate/20090309193635_create_products.rb +0 -14
- data/rails_3_test/db/migrate/20090309203056_create_comments.rb +0 -15
- data/rails_3_test/db/migrate/20090323005947_create_file_column_images.rb +0 -12
- data/rails_3_test/db/migrate/20090326160049_add_birthday_to_users.rb +0 -9
- data/rails_3_test/db/migrate/20090326223606_add_state_to_users.rb +0 -9
- data/rails_3_test/db/migrate/20090503134004_add_file_column_image_to_products.rb +0 -9
- data/rails_3_test/db/migrate/20090617173651_create_bookmarks.rb +0 -15
- data/rails_3_test/db/migrate/20090624165355_add_tags_string_to_blog_post.rb +0 -9
- data/rails_3_test/db/migrate/20090625144313_add_avatar_fields_to_user.rb +0 -11
- data/rails_3_test/db/migrate/20090629202956_add_merged_into_to_blog_posts.rb +0 -9
- data/rails_3_test/db/migrate/20090701171857_add_force_textile_to_users.rb +0 -9
- data/rails_3_test/db/migrate/20090704163647_add_deleted_at_to_products.rb +0 -9
- data/rails_3_test/db/migrate/20090704173800_add_sale_fields_to_products.rb +0 -13
- data/rails_3_test/db/migrate/20090714024501_create_product_categories.rb +0 -15
- data/rails_3_test/db/migrate/20090819162835_add_admin_level_to_users.rb +0 -9
- data/rails_3_test/db/migrate/20091115134559_add_first_and_last_names_to_users.rb +0 -11
- data/rails_3_test/db/migrate/20091221011256_add_position_to_product_categories.rb +0 -9
- data/rails_3_test/db/migrate/20091222160814_create_appointments.rb +0 -14
- data/rails_3_test/db/migrate/20091227224547_add_user_id_to_appointments.rb +0 -9
- data/rails_3_test/db/migrate/20100214213359_create_television_time_slots.rb +0 -13
- data/rails_3_test/db/migrate/20100214213451_create_television_airings.rb +0 -15
- data/rails_3_test/public/favicon.ico +0 -0
- data/rails_3_test/public/images/rails.png +0 -0
- data/rails_3_test/public/javascripts/application.js +0 -2
- data/rails_3_test/public/javascripts/jquery-1.4.4.min.js +0 -167
- data/rails_3_test/public/robots.txt +0 -5
- data/rails_3_test/public/stylesheets/admin.css +0 -3
- data/rails_3_test/public/stylesheets/scaffold.css +0 -54
- data/rails_3_test/test/data/ruby_throated.jpg +0 -0
- data/rails_3_test/test/data/tweenbot.jpg +0 -0
- data/rails_3_test/test/integration/admin/images2_integration_test.rb +0 -33
- data/rails_3_test/test/integration/admin/product_categories_integration_test.rb +0 -12
- data/rails_3_test/test/integration/admin/television_airings_integration_test.rb +0 -25
- data/rails_3_test/test/integration/admin/users2_integration_test.rb +0 -48
|
@@ -1,210 +0,0 @@
|
|
|
1
|
-
require File.expand_path(File.dirname(__FILE__) + "/../../test_helper")
|
|
2
|
-
|
|
3
|
-
class Admin::ProductsIntegrationTest < ActionController::IntegrationTest
|
|
4
|
-
def test_destroy
|
|
5
|
-
@product = Product.find_or_create_by_name 'Chocolate bar'
|
|
6
|
-
post "/admin/products/destroy/#{@product.id}"
|
|
7
|
-
|
|
8
|
-
# should call the custom destroy block
|
|
9
|
-
@product.reload
|
|
10
|
-
assert_not_nil(@product.deleted_at)
|
|
11
|
-
end
|
|
12
|
-
|
|
13
|
-
def test_index_with_at_least_one_Product
|
|
14
|
-
@product = (
|
|
15
|
-
Product.find(:first) || Product.create!(:name => 'product name')
|
|
16
|
-
)
|
|
17
|
-
get "/admin/products"
|
|
18
|
-
|
|
19
|
-
# should have a search form that allows you to specify equals or other options
|
|
20
|
-
assert_select('form[id=search_form][method=get]') do
|
|
21
|
-
assert_select("select[name=?]", "search[price(comparator)]") do
|
|
22
|
-
assert_select("option[value='>']", :text => 'greater than')
|
|
23
|
-
assert_select("option[value='>=']", :text => 'greater than or equal to')
|
|
24
|
-
assert_select("option[value='='][selected=selected]", :text => 'equal to')
|
|
25
|
-
assert_select("option[value='<=']", :text => 'less than or equal to')
|
|
26
|
-
assert_select("option[value='<']", :text => 'less than')
|
|
27
|
-
end
|
|
28
|
-
assert_select('input[name=?]', 'search[price]')
|
|
29
|
-
end
|
|
30
|
-
|
|
31
|
-
# should not have a comparator for the name search field
|
|
32
|
-
assert_select('form[id=search_form][method=get]') do
|
|
33
|
-
assert_select("select[name=?]", "search[name(comparator)]", false)
|
|
34
|
-
end
|
|
35
|
-
|
|
36
|
-
# should not have a Show link
|
|
37
|
-
assert_no_match(%r|<a[^>]*>Show</a>|, response.body)
|
|
38
|
-
end
|
|
39
|
-
|
|
40
|
-
def test_index_search_by_price
|
|
41
|
-
Product.destroy_all
|
|
42
|
-
Product.create!(:name => 'Chocolate bar', :price => 200)
|
|
43
|
-
Product.create!(:name => 'Diamond ring', :price => 200_000)
|
|
44
|
-
get "/admin/products", :search => {"price(comparator)" => '>', :price => 1000}
|
|
45
|
-
|
|
46
|
-
# should only show products more expensive than $10
|
|
47
|
-
assert_no_match(%r|<td[^>]*>Chocolate bar</td>|, response.body)
|
|
48
|
-
assert_select('td', :text => 'Diamond ring')
|
|
49
|
-
|
|
50
|
-
# should show the price comparison in the search form
|
|
51
|
-
assert_select('form[id=search_form][method=get]') do
|
|
52
|
-
assert_select("select[name=?]", "search[price(comparator)]") do
|
|
53
|
-
assert_select(
|
|
54
|
-
"option[value='>'][selected=selected]", :text => 'greater than'
|
|
55
|
-
)
|
|
56
|
-
assert_select("option[value='>=']", :text => 'greater than or equal to')
|
|
57
|
-
assert_select("option[value='=']", :text => 'equal to')
|
|
58
|
-
assert_select("option[value='<=']", :text => 'less than or equal to')
|
|
59
|
-
assert_select("option[value='<']", :text => 'less than')
|
|
60
|
-
end
|
|
61
|
-
assert_select('input[name=?]', 'search[price]')
|
|
62
|
-
end
|
|
63
|
-
end
|
|
64
|
-
|
|
65
|
-
def test_index_sort_by_product_category
|
|
66
|
-
ProductCategory.destroy_all
|
|
67
|
-
Product.destroy_all
|
|
68
|
-
diamond_cat = ProductCategory.create!(
|
|
69
|
-
:category_name => 'diamond', :position => 1
|
|
70
|
-
)
|
|
71
|
-
@diamond = Product.create!(
|
|
72
|
-
:name => 'Diamond', :price => 200_000, :product_category => diamond_cat
|
|
73
|
-
)
|
|
74
|
-
choc_cat = ProductCategory.create!(
|
|
75
|
-
:category_name => 'chocolate', :position => 2
|
|
76
|
-
)
|
|
77
|
-
@chocolate = Product.create!(
|
|
78
|
-
:name => 'Chocolate bar', :price => 200, :product_category => choc_cat
|
|
79
|
-
)
|
|
80
|
-
assert(diamond_cat.id < choc_cat.id)
|
|
81
|
-
get "/admin/products", :sort_order => "asc", :sort => "product_category"
|
|
82
|
-
|
|
83
|
-
# should be a success
|
|
84
|
-
assert_response :success
|
|
85
|
-
|
|
86
|
-
# should order by product_category_id
|
|
87
|
-
assert_match(
|
|
88
|
-
%r|product_#{@diamond.id}.*product_#{@chocolate.id}|m, response.body
|
|
89
|
-
)
|
|
90
|
-
end
|
|
91
|
-
|
|
92
|
-
def test_new
|
|
93
|
-
get "/admin/products/new"
|
|
94
|
-
assert_response :success
|
|
95
|
-
|
|
96
|
-
# should not render the default price input
|
|
97
|
-
assert_select("input[name=?]", 'product[price]', false)
|
|
98
|
-
|
|
99
|
-
# should render the custom price input from _price_input.html.erb
|
|
100
|
-
assert_select("input[name=?]", 'product[price][dollars]')
|
|
101
|
-
|
|
102
|
-
# should show clear links for sale_starts_at and sale_ends_at
|
|
103
|
-
assert_select('a', :text => "Not on sale")
|
|
104
|
-
assert_select('a', :text => "Sale doesn't end")
|
|
105
|
-
end
|
|
106
|
-
|
|
107
|
-
def test_edit
|
|
108
|
-
@product = Product.find_or_create_by_name 'a bird'
|
|
109
|
-
@product.update_attributes(
|
|
110
|
-
:name => 'a bird', :price => 100_00,
|
|
111
|
-
:file_column_image => File.open("./test/data/ruby_throated.jpg"),
|
|
112
|
-
:percent_off => 25
|
|
113
|
-
)
|
|
114
|
-
get "/admin/products/edit/#{@product.id}"
|
|
115
|
-
assert_response :success
|
|
116
|
-
|
|
117
|
-
# should have a multipart form
|
|
118
|
-
assert_select('form[enctype=multipart/form-data]')
|
|
119
|
-
|
|
120
|
-
# should have a file input for image
|
|
121
|
-
assert_select(
|
|
122
|
-
'input[name=?][type=file]', 'product[file_column_image]'
|
|
123
|
-
)
|
|
124
|
-
|
|
125
|
-
# should show the current image
|
|
126
|
-
assert_select(
|
|
127
|
-
"img[src^=?][height=100][width=100]",
|
|
128
|
-
"/product/file_column_image/#{@product.id}/ruby_throated.jpg"
|
|
129
|
-
)
|
|
130
|
-
|
|
131
|
-
# should have a remove-image option
|
|
132
|
-
assert_select(
|
|
133
|
-
"input[type=checkbox][name=?]", 'product[file_column_image(destroy)]'
|
|
134
|
-
)
|
|
135
|
-
|
|
136
|
-
# should the percent_off value pre-filled
|
|
137
|
-
assert_select(
|
|
138
|
-
'input[name=?][value=25]', 'product[percent_off]'
|
|
139
|
-
)
|
|
140
|
-
end
|
|
141
|
-
|
|
142
|
-
def test_update_while_updating_a_current_image
|
|
143
|
-
@product = Product.find_or_create_by_name 'a bird'
|
|
144
|
-
@product.update_attributes(
|
|
145
|
-
:name => 'a bird', :price => 100_00,
|
|
146
|
-
:file_column_image => File.open("./test/data/ruby_throated.jpg")
|
|
147
|
-
)
|
|
148
|
-
file = File.new './test/data/tweenbot.jpg'
|
|
149
|
-
post(
|
|
150
|
-
"/admin/products/update/#{@product.id}",
|
|
151
|
-
:product => {
|
|
152
|
-
:file_column_image => fixture_file_upload(
|
|
153
|
-
"../../test/data/tweenbot.jpg"
|
|
154
|
-
)
|
|
155
|
-
},
|
|
156
|
-
:html => {:multipart => true}
|
|
157
|
-
)
|
|
158
|
-
|
|
159
|
-
# should update the image
|
|
160
|
-
product_prime = Product.find_by_id @product.id
|
|
161
|
-
assert_match(/tweenbot/, product_prime.file_column_image)
|
|
162
|
-
|
|
163
|
-
# should save the image locally
|
|
164
|
-
assert(
|
|
165
|
-
File.exist?(
|
|
166
|
-
"./public/product/file_column_image/#{@product.id}/tweenbot.jpg"
|
|
167
|
-
)
|
|
168
|
-
)
|
|
169
|
-
end
|
|
170
|
-
|
|
171
|
-
def test_update_while_removing_the_current_image
|
|
172
|
-
@product = Product.find_or_create_by_name 'a bird'
|
|
173
|
-
@product.update_attributes(
|
|
174
|
-
:name => 'a bird', :price => 100_00,
|
|
175
|
-
:file_column_image => File.open("./test/data/ruby_throated.jpg")
|
|
176
|
-
)
|
|
177
|
-
post(
|
|
178
|
-
"/admin/products/update/#{@product.id}",
|
|
179
|
-
:product => {
|
|
180
|
-
'file_column_image(destroy)' => '1', :file_column_image => ''
|
|
181
|
-
}
|
|
182
|
-
)
|
|
183
|
-
|
|
184
|
-
# should remove the existing image
|
|
185
|
-
product_prime = Product.find_by_id @product.id
|
|
186
|
-
assert_nil product_prime.file_column_image
|
|
187
|
-
end
|
|
188
|
-
|
|
189
|
-
def test_update_while_trying_to_update_and_remove_at_the_same_time
|
|
190
|
-
@product = Product.find_or_create_by_name 'a bird'
|
|
191
|
-
@product.update_attributes(
|
|
192
|
-
:name => 'a bird', :price => 100_00,
|
|
193
|
-
:file_column_image => File.open("./test/data/ruby_throated.jpg")
|
|
194
|
-
)
|
|
195
|
-
post(
|
|
196
|
-
"/admin/products/update/#{@product.id}",
|
|
197
|
-
:product => {
|
|
198
|
-
:file_column_image => fixture_file_upload(
|
|
199
|
-
"../../test/data/tweenbot.jpg"
|
|
200
|
-
),
|
|
201
|
-
'file_column_image(destroy)' => '1'
|
|
202
|
-
},
|
|
203
|
-
:html => {:multipart => true}
|
|
204
|
-
)
|
|
205
|
-
|
|
206
|
-
# should assume you meant to update
|
|
207
|
-
product_prime = Product.find_by_id @product.id
|
|
208
|
-
assert_match(/tweenbot/, product_prime.file_column_image)
|
|
209
|
-
end
|
|
210
|
-
end
|
|
@@ -1,266 +0,0 @@
|
|
|
1
|
-
require File.expand_path(File.dirname(__FILE__) + "/../../test_helper")
|
|
2
|
-
|
|
3
|
-
class Admin::UsersIntegrationTest < ActionController::IntegrationTest
|
|
4
|
-
def setup
|
|
5
|
-
@user = User.find_or_create_by_username 'betty'
|
|
6
|
-
@user.update_attribute :password, 'crocker'
|
|
7
|
-
end
|
|
8
|
-
|
|
9
|
-
def test_create
|
|
10
|
-
post(
|
|
11
|
-
"/admin/users/create", :user => { :username => 'bill', :password => '' }
|
|
12
|
-
)
|
|
13
|
-
|
|
14
|
-
# should assign a new random password
|
|
15
|
-
user = User.find_by_username 'bill'
|
|
16
|
-
assert_not_nil(user)
|
|
17
|
-
assert_not_equal(user.password, '')
|
|
18
|
-
end
|
|
19
|
-
|
|
20
|
-
def test_create_with_the_same_username
|
|
21
|
-
@user_count = User.count
|
|
22
|
-
post(
|
|
23
|
-
"/admin/users/create", :user => {:username => 'betty', :password => ''}
|
|
24
|
-
)
|
|
25
|
-
|
|
26
|
-
# should not save a new user
|
|
27
|
-
assert_equal(User.count, @user_count)
|
|
28
|
-
|
|
29
|
-
# should not call after_save
|
|
30
|
-
assert_response :success
|
|
31
|
-
end
|
|
32
|
-
|
|
33
|
-
def test_destroy
|
|
34
|
-
post "/admin/users/destroy/#{@user.id}"
|
|
35
|
-
|
|
36
|
-
# should destroy the user
|
|
37
|
-
assert_nil(User.find_by_id(@user.id))
|
|
38
|
-
end
|
|
39
|
-
|
|
40
|
-
def test_edit
|
|
41
|
-
@user.update_attributes(
|
|
42
|
-
:has_avatar => true, :avatar_version => 9,
|
|
43
|
-
:force_blog_posts_to_textile => true
|
|
44
|
-
)
|
|
45
|
-
get "/admin/users/edit/#{@user.id}"
|
|
46
|
-
|
|
47
|
-
# should show the default text input for password
|
|
48
|
-
assert_match(%r|<input[^>]*name="user\[password\]"|, response.body)
|
|
49
|
-
|
|
50
|
-
# should show a reset password checkbox
|
|
51
|
-
assert_select("input[type=checkbox][name=reset_password]")
|
|
52
|
-
|
|
53
|
-
# should have a multipart form
|
|
54
|
-
assert_select('form[enctype=multipart/form-data]')
|
|
55
|
-
|
|
56
|
-
# should have a file input for tmp_avatar
|
|
57
|
-
assert_select('input[name=?][type=file]', 'user[tmp_avatar]')
|
|
58
|
-
|
|
59
|
-
# should show the current tmp_avatar with a custom src
|
|
60
|
-
assert_select(
|
|
61
|
-
"img[src^=?]", "http://my-image-server.com/users/#{@user.id}.jpg?v=9"
|
|
62
|
-
)
|
|
63
|
-
|
|
64
|
-
# should have a remove-image option
|
|
65
|
-
assert_select("input[type=checkbox][name=?]", 'user[tmp_avatar(destroy)]')
|
|
66
|
-
|
|
67
|
-
# should show a drop-down for force_blog_posts_to_textile
|
|
68
|
-
assert_select('select[name=?]', 'user[force_blog_posts_to_textile]') do
|
|
69
|
-
assert_select "option:not([selected])[value='']"
|
|
70
|
-
assert_select "option:not([selected])[value=0]", :text => 'false'
|
|
71
|
-
assert_select "option[selected=selected][value=1]", :text => 'true'
|
|
72
|
-
end
|
|
73
|
-
end
|
|
74
|
-
|
|
75
|
-
def test_index
|
|
76
|
-
get "/admin/users"
|
|
77
|
-
|
|
78
|
-
# should show a Delete link and a link to the profile page
|
|
79
|
-
assert_select('td') do
|
|
80
|
-
assert_select(
|
|
81
|
-
"a.destroy[href=?][data-method=?]",
|
|
82
|
-
"/admin/users/destroy/#{@user.id}", 'delete',
|
|
83
|
-
:text => 'Delete'
|
|
84
|
-
)
|
|
85
|
-
assert_select(
|
|
86
|
-
"a[href=?]",
|
|
87
|
-
"/admin/blog_posts/new?blog_post%5Buser_id%5D=#{@user.id}",
|
|
88
|
-
:text => "New blog post"
|
|
89
|
-
)
|
|
90
|
-
end
|
|
91
|
-
end
|
|
92
|
-
|
|
93
|
-
def test_index_with_a_user_with_an_avatar
|
|
94
|
-
@user.update_attributes :has_avatar => true, :avatar_version => 9
|
|
95
|
-
get "/admin/users"
|
|
96
|
-
|
|
97
|
-
# should show the avatar image in the avatar column
|
|
98
|
-
assert_select(
|
|
99
|
-
'img[src=?]', "http://my-image-server.com/users/#{@user.id}.jpg?v=9"
|
|
100
|
-
)
|
|
101
|
-
end
|
|
102
|
-
|
|
103
|
-
def test_index_search
|
|
104
|
-
User.destroy_all
|
|
105
|
-
@john_doe = User.create! :username => 'johndoe'
|
|
106
|
-
@jane_doe = User.create! :username => 'janedoe', :password => "ihatejohn"
|
|
107
|
-
get "/admin/users", :search => "john"
|
|
108
|
-
assert_response :success
|
|
109
|
-
|
|
110
|
-
# should match username
|
|
111
|
-
assert_select('td', :text => 'johndoe')
|
|
112
|
-
|
|
113
|
-
# should not match password
|
|
114
|
-
assert_no_match(%r|<td[^>]*>janedoe</td>|, response.body)
|
|
115
|
-
end
|
|
116
|
-
|
|
117
|
-
def test_index_search_across_first_name_and_last_name
|
|
118
|
-
User.destroy_all
|
|
119
|
-
@john_doe = User.create!(
|
|
120
|
-
:username => 'johndoe', :first_name => 'john', :last_name => 'doe'
|
|
121
|
-
)
|
|
122
|
-
get "/admin/users", :search => "john doe"
|
|
123
|
-
|
|
124
|
-
# should match
|
|
125
|
-
assert_select('td', :text => 'johndoe')
|
|
126
|
-
end
|
|
127
|
-
|
|
128
|
-
def test_new
|
|
129
|
-
get "/admin/users/new"
|
|
130
|
-
|
|
131
|
-
# should not show an input for password
|
|
132
|
-
assert_match(/autogenerated/, response.body)
|
|
133
|
-
assert_no_match(%r|<input[^>]*name="user\[password\]"|, response.body)
|
|
134
|
-
|
|
135
|
-
# should not show a reset password checkbox
|
|
136
|
-
assert_select("input[type=checkbox][name=reset_password]", false)
|
|
137
|
-
|
|
138
|
-
# should use date dropdowns with nil defaults for birthday
|
|
139
|
-
nums_and_dt_fields = {1 => :year, 2 => :month, 3 => :day}
|
|
140
|
-
nums_and_dt_fields.each do |num, dt_field|
|
|
141
|
-
name = "user[birthday(#{num}i)]"
|
|
142
|
-
assert_select('select[name=?]', name) do
|
|
143
|
-
assert_select "option[value='']"
|
|
144
|
-
assert_select(
|
|
145
|
-
"option:not([selected])[value=?]", Time.now.send(dt_field).to_s
|
|
146
|
-
)
|
|
147
|
-
end
|
|
148
|
-
end
|
|
149
|
-
|
|
150
|
-
# should not try to set an hour or minute for birthday
|
|
151
|
-
nums_and_dt_fields = {4 => :hour, 5 => :min}
|
|
152
|
-
nums_and_dt_fields.each do |num, dt_field|
|
|
153
|
-
name = "blog_post[published_at(#{num}i)]"
|
|
154
|
-
assert_select('select[name=?]', name, false)
|
|
155
|
-
end
|
|
156
|
-
|
|
157
|
-
# should respect start_year and end_year parameters
|
|
158
|
-
assert_select("select[name='user[birthday(1i)]']") do
|
|
159
|
-
(Time.now.year-100).upto(Time.now.year) do |year|
|
|
160
|
-
assert_select "option[value='#{year}']"
|
|
161
|
-
end
|
|
162
|
-
end
|
|
163
|
-
|
|
164
|
-
# should show a drop-down for US states
|
|
165
|
-
assert_select('select[name=?]', 'user[state]') do
|
|
166
|
-
assert_select "option[value='']"
|
|
167
|
-
assert_select "option:not([selected])[value=AK]", :text => 'Alaska'
|
|
168
|
-
assert_select "option:not([selected])[value=NY]", :text => 'New York'
|
|
169
|
-
# blank option, 50 states, DC, Puerto Rico == 53 options
|
|
170
|
-
assert_select "option", :count => 53
|
|
171
|
-
end
|
|
172
|
-
|
|
173
|
-
# should have a multipart form
|
|
174
|
-
assert_select('form[enctype=multipart/form-data]')
|
|
175
|
-
|
|
176
|
-
# should have a file input for tmp_avatar
|
|
177
|
-
assert_match(
|
|
178
|
-
%r|<input[^>]*name="user\[tmp_avatar\]"[^>]*type="file"|, response.body
|
|
179
|
-
)
|
|
180
|
-
|
|
181
|
-
# should show a drop-down for force_blog_posts_to_textile
|
|
182
|
-
assert_select('select[name=?]', 'user[force_blog_posts_to_textile]') do
|
|
183
|
-
assert_select "option[value='']"
|
|
184
|
-
assert_select "option:not([selected])[value=0]", :text => 'false'
|
|
185
|
-
assert_select "option:not([selected])[value=1]", :text => 'true'
|
|
186
|
-
end
|
|
187
|
-
|
|
188
|
-
# should show a select for admin_level
|
|
189
|
-
assert_select("select[name=?]", "user[admin_level]") do
|
|
190
|
-
assert_select("option[value='']", false)
|
|
191
|
-
assert_select "option[value=normal][selected=selected]"
|
|
192
|
-
assert_select "option[value=admin]"
|
|
193
|
-
assert_select "option[value=superuser]"
|
|
194
|
-
end
|
|
195
|
-
end
|
|
196
|
-
|
|
197
|
-
def test_update
|
|
198
|
-
post(
|
|
199
|
-
"/admin/users/update/#{@user.id}",
|
|
200
|
-
:user => {:username => 'bettie', :force_blog_posts_to_textile => ''}
|
|
201
|
-
)
|
|
202
|
-
@user.reload
|
|
203
|
-
|
|
204
|
-
# should not assign a new random password
|
|
205
|
-
assert_equal(@user.password, 'crocker')
|
|
206
|
-
|
|
207
|
-
# should know the difference between nil and false for force_blog_posts_to_textile
|
|
208
|
-
assert_nil(@user.force_blog_posts_to_textile)
|
|
209
|
-
end
|
|
210
|
-
|
|
211
|
-
def test_update_while_resetting_password
|
|
212
|
-
post(
|
|
213
|
-
"/admin/users/update/#{@user.id}",
|
|
214
|
-
:user => {:username => 'bettie'}, :reset_password => '1'
|
|
215
|
-
)
|
|
216
|
-
|
|
217
|
-
# should assign a new random password
|
|
218
|
-
@user.reload
|
|
219
|
-
assert_not_equal(@user.password, 'crocker')
|
|
220
|
-
end
|
|
221
|
-
|
|
222
|
-
def test_update_while_updating_the_current_tmp_avatar
|
|
223
|
-
@user.update_attributes :has_avatar => true, :avatar_version => 9
|
|
224
|
-
post(
|
|
225
|
-
"/admin/users/update/#{@user.id}",
|
|
226
|
-
:user => {
|
|
227
|
-
:tmp_avatar => fixture_file_upload('../../test/data/tweenbot.jpg')
|
|
228
|
-
},
|
|
229
|
-
:html => {:multipart => true}
|
|
230
|
-
)
|
|
231
|
-
|
|
232
|
-
# should increment the avatar_version through before_save
|
|
233
|
-
@user.reload
|
|
234
|
-
assert_equal(@user.avatar_version, 10)
|
|
235
|
-
end
|
|
236
|
-
|
|
237
|
-
def test_update_while_removing_the_current_tmp_avatar
|
|
238
|
-
@user.update_attributes :has_avatar => true, :avatar_version => 9
|
|
239
|
-
post(
|
|
240
|
-
"/admin/users/update/#{@user.id}",
|
|
241
|
-
:user => {:tmp_avatar => '', 'tmp_avatar(destroy)' => '1'},
|
|
242
|
-
:html => {:multipart => true}
|
|
243
|
-
)
|
|
244
|
-
|
|
245
|
-
# should set has_avatar to false
|
|
246
|
-
@user.reload
|
|
247
|
-
assert(!@user.has_avatar?)
|
|
248
|
-
end
|
|
249
|
-
|
|
250
|
-
def test_while_trying_to_update_and_remove_tmp_avatar_at_the_same_time
|
|
251
|
-
@user.update_attributes :has_avatar => true, :avatar_version => 9
|
|
252
|
-
post(
|
|
253
|
-
"/admin/users/update/#{@user.id}",
|
|
254
|
-
:user => {
|
|
255
|
-
:tmp_avatar => fixture_file_upload('../../test/data/tweenbot.jpg'),
|
|
256
|
-
'tmp_avatar(destroy)' => '1'
|
|
257
|
-
},
|
|
258
|
-
:html => {:multipart => true}
|
|
259
|
-
)
|
|
260
|
-
|
|
261
|
-
# should assume you meant to update
|
|
262
|
-
@user.reload
|
|
263
|
-
assert_equal(@user.avatar_version, 10)
|
|
264
|
-
assert(@user.has_avatar?)
|
|
265
|
-
end
|
|
266
|
-
end
|
|
@@ -1,114 +0,0 @@
|
|
|
1
|
-
ENV["RAILS_ENV"] = "test"
|
|
2
|
-
here = File.dirname(__FILE__)
|
|
3
|
-
require File.expand_path(here + "/../config/environment")
|
|
4
|
-
require 'test_help'
|
|
5
|
-
|
|
6
|
-
module TestHelper
|
|
7
|
-
def assert_a_tag_with_get_args(
|
|
8
|
-
content, href_base, href_get_args, response_body
|
|
9
|
-
)
|
|
10
|
-
regex = %r|<a href="#{ href_base }\?([^"]*)"[^>]*>#{ content }</a>|
|
|
11
|
-
assert(
|
|
12
|
-
response_body =~ regex,
|
|
13
|
-
"#{response_body.inspect} expected to match #{regex.inspect}"
|
|
14
|
-
)
|
|
15
|
-
assert_get_args_equal( href_get_args, $1.gsub( /&/, '&' ) )
|
|
16
|
-
end
|
|
17
|
-
|
|
18
|
-
def assert_no_a_tag_with_get_args(
|
|
19
|
-
content, href_base, href_get_args, response_body
|
|
20
|
-
)
|
|
21
|
-
regex = %r|<a href="#{ href_base }\?([^"]*)"[^>]*>#{ content }</a>|
|
|
22
|
-
if response_body =~ regex
|
|
23
|
-
get_args_string = $1.gsub( /&/, '&' )
|
|
24
|
-
response_h = HashWithIndifferentAccess.new
|
|
25
|
-
CGI::parse( get_args_string ).each do |key, values|
|
|
26
|
-
response_h[key] = values.first
|
|
27
|
-
end
|
|
28
|
-
if href_get_args.size == response_h.size
|
|
29
|
-
raise if href_get_args.all? { |key, value|
|
|
30
|
-
response_h[key] == value
|
|
31
|
-
}
|
|
32
|
-
end
|
|
33
|
-
end
|
|
34
|
-
end
|
|
35
|
-
|
|
36
|
-
def assert_get_args_equal( expected_hash, get_args_string )
|
|
37
|
-
response_h = HashWithIndifferentAccess.new
|
|
38
|
-
CGI::parse( get_args_string ).each do |key, values|
|
|
39
|
-
response_h[key] = values.first
|
|
40
|
-
end
|
|
41
|
-
assert_equal(
|
|
42
|
-
expected_hash.size, response_h.size,
|
|
43
|
-
"<#{ expected_hash.inspect }> expected but was\n<#{ response_h.inspect }>."
|
|
44
|
-
)
|
|
45
|
-
expected_hash.each do |key, value|
|
|
46
|
-
assert_equal( value, response_h[key] )
|
|
47
|
-
end
|
|
48
|
-
end
|
|
49
|
-
|
|
50
|
-
def random_word( length = 25 )
|
|
51
|
-
letters = 'abcdefghijklmnopqrstuvwxyz_'.split //
|
|
52
|
-
( 1..length ).to_a.map { letters[rand(letters.size)] }.join( '' )
|
|
53
|
-
end
|
|
54
|
-
end
|
|
55
|
-
|
|
56
|
-
class CacheStoreStub
|
|
57
|
-
def initialize
|
|
58
|
-
flush
|
|
59
|
-
end
|
|
60
|
-
|
|
61
|
-
def expires_in(key)
|
|
62
|
-
@expirations[key.to_s]
|
|
63
|
-
end
|
|
64
|
-
|
|
65
|
-
def flush
|
|
66
|
-
@cache = {}
|
|
67
|
-
@expirations = {}
|
|
68
|
-
@raise_on_write = false
|
|
69
|
-
end
|
|
70
|
-
|
|
71
|
-
def raise_on_write
|
|
72
|
-
@raise_on_write = true
|
|
73
|
-
end
|
|
74
|
-
|
|
75
|
-
def read(key, options = nil)
|
|
76
|
-
@cache[key.to_s]
|
|
77
|
-
end
|
|
78
|
-
|
|
79
|
-
def write(key, value, options = nil)
|
|
80
|
-
raise if @raise_on_write
|
|
81
|
-
@cache[key.to_s] = value
|
|
82
|
-
@expirations[key.to_s] = options[:expires_in]
|
|
83
|
-
end
|
|
84
|
-
end
|
|
85
|
-
|
|
86
|
-
$cache = CacheStoreStub.new
|
|
87
|
-
|
|
88
|
-
module Rails
|
|
89
|
-
mattr_accessor :cache
|
|
90
|
-
self.cache = $cache
|
|
91
|
-
end
|
|
92
|
-
|
|
93
|
-
if %w(2.1.0 2.1.2).include?(RAILS_GEM_VERSION)
|
|
94
|
-
class Test::Unit::TestCase
|
|
95
|
-
self.use_transactional_fixtures = true
|
|
96
|
-
|
|
97
|
-
self.use_instantiated_fixtures = false
|
|
98
|
-
|
|
99
|
-
include TestHelper
|
|
100
|
-
end
|
|
101
|
-
else
|
|
102
|
-
class ActiveSupport::TestCase
|
|
103
|
-
self.use_transactional_fixtures = true
|
|
104
|
-
|
|
105
|
-
self.use_instantiated_fixtures = false
|
|
106
|
-
|
|
107
|
-
include TestHelper
|
|
108
|
-
end
|
|
109
|
-
end
|
|
110
|
-
|
|
111
|
-
Webrat.configure do |config|
|
|
112
|
-
config.mode = :rails
|
|
113
|
-
end
|
|
114
|
-
|
|
@@ -1,69 +0,0 @@
|
|
|
1
|
-
*svn*
|
|
2
|
-
* allow for directories in file_column dirs as well
|
|
3
|
-
* use subdirs for versions instead of fiddling with filename
|
|
4
|
-
* url_for_image_column_helper for dynamic resizing of images from views
|
|
5
|
-
* new "crop" feature [Sean Treadway]
|
|
6
|
-
* url_for_file_column helper: do not require model objects to be stored in
|
|
7
|
-
instance variables
|
|
8
|
-
* allow more fined-grained control over :store_dir via callback
|
|
9
|
-
methods [Gerret Apelt]
|
|
10
|
-
* allow assignment of regular file objects
|
|
11
|
-
* validation of file format and file size [Kyle Maxwell]
|
|
12
|
-
* validation of image dimensions [Lee O'Mara]
|
|
13
|
-
* file permissions can be set via :permissions option
|
|
14
|
-
* fixed bug that prevents deleting of file via assigning nil if
|
|
15
|
-
column is declared as NON NULL on some databases
|
|
16
|
-
* don't expand absolute paths. This is necessary for file_column to work
|
|
17
|
-
when your rails app is deployed into a sub-directory via a symbolic link
|
|
18
|
-
* url_for_*_column will no longer return absolute URLs! Instead, although the
|
|
19
|
-
generated URL starts with a slash, it will be relative to your application's
|
|
20
|
-
root URL. This is so, because rails' image_tag helper will automatically
|
|
21
|
-
convert it to an absolute URL. If you need an absolute URL (e.g., to pass
|
|
22
|
-
it to link_to) use url_for_file_column's :absolute => true option.
|
|
23
|
-
* added support for file_column enabled unit tests [Manuel Holtgrewe]
|
|
24
|
-
* support for custom transformation of images [Frederik Fix]
|
|
25
|
-
* allow setting of image attributes (e.g., quality) [Frederik Fix]
|
|
26
|
-
* :magick columns can optionally ignore non-images (i.e., do not try to
|
|
27
|
-
resize them)
|
|
28
|
-
|
|
29
|
-
0.3.1
|
|
30
|
-
* make object with file_columns serializable
|
|
31
|
-
* use normal require for RMagick, so that it works with gem
|
|
32
|
-
and custom install as well
|
|
33
|
-
|
|
34
|
-
0.3
|
|
35
|
-
* fixed bug where empty file uploads were not recognized with some browsers
|
|
36
|
-
* fixed bug on windows when "file" utility is not present
|
|
37
|
-
* added option to disable automatic file extension correction
|
|
38
|
-
* Only allow one attribute per call to file_column, so that options only
|
|
39
|
-
apply to one argument
|
|
40
|
-
* try to detect when people forget to set the form encoding to
|
|
41
|
-
'multipart/form-data'
|
|
42
|
-
* converted to rails plugin
|
|
43
|
-
* easy integration with RMagick
|
|
44
|
-
|
|
45
|
-
0.2
|
|
46
|
-
* complete rewrite using state pattern
|
|
47
|
-
* fixed sanitize filename [Michael Raidel]
|
|
48
|
-
* fixed bug when no file was uploaded [Michael Raidel]
|
|
49
|
-
* try to fix filename extensions [Michael Raidel]
|
|
50
|
-
* Feed absolute paths through File.expand_path to make them as simple as possible
|
|
51
|
-
* Make file_column_field helper work with auto-ids (e.g., "event[]")
|
|
52
|
-
|
|
53
|
-
0.1.3
|
|
54
|
-
* test cases with more than 1 file_column
|
|
55
|
-
* fixed bug when file_column was called with several arguments
|
|
56
|
-
* treat empty ("") file_columns as nil
|
|
57
|
-
* support for binary files on windows
|
|
58
|
-
|
|
59
|
-
0.1.2
|
|
60
|
-
* better rails integration, so that you do not have to include the modules yourself. You
|
|
61
|
-
just have to "require 'rails_file_column'" in your "config/environment.rb"
|
|
62
|
-
* Rakefile for testing and packaging
|
|
63
|
-
|
|
64
|
-
0.1.1 (2005-08-11)
|
|
65
|
-
* fixed nasty bug in url_for_file_column that made it unusable on Apache
|
|
66
|
-
* prepared for public release
|
|
67
|
-
|
|
68
|
-
0.1 (2005-08-10)
|
|
69
|
-
* initial release
|