elucid-rails_admin 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/Gemfile +54 -0
- data/LICENSE.md +20 -0
- data/README.md +1334 -0
- data/Rakefile +14 -0
- data/app/assets/images/rails_admin/aristo/images/bg_fallback.png +0 -0
- data/app/assets/images/rails_admin/aristo/images/icon_sprite.png +0 -0
- data/app/assets/images/rails_admin/aristo/images/progress_bar.gif +0 -0
- data/app/assets/images/rails_admin/aristo/images/slider_handles.png +0 -0
- data/app/assets/images/rails_admin/aristo/images/ui-icons_222222_256x240.png +0 -0
- data/app/assets/images/rails_admin/aristo/images/ui-icons_454545_256x240.png +0 -0
- data/app/assets/images/rails_admin/bullet_black.png +0 -0
- data/app/assets/images/rails_admin/bullet_white.png +0 -0
- data/app/assets/images/rails_admin/calendar.png +0 -0
- data/app/assets/images/rails_admin/clock.png +0 -0
- data/app/assets/images/rails_admin/colorpicker/colorpicker_background.png +0 -0
- data/app/assets/images/rails_admin/colorpicker/colorpicker_hex.png +0 -0
- data/app/assets/images/rails_admin/colorpicker/colorpicker_hsb_b.png +0 -0
- data/app/assets/images/rails_admin/colorpicker/colorpicker_hsb_h.png +0 -0
- data/app/assets/images/rails_admin/colorpicker/colorpicker_hsb_s.png +0 -0
- data/app/assets/images/rails_admin/colorpicker/colorpicker_indic.gif +0 -0
- data/app/assets/images/rails_admin/colorpicker/colorpicker_overlay.png +0 -0
- data/app/assets/images/rails_admin/colorpicker/colorpicker_rgb_b.png +0 -0
- data/app/assets/images/rails_admin/colorpicker/colorpicker_rgb_g.png +0 -0
- data/app/assets/images/rails_admin/colorpicker/colorpicker_rgb_r.png +0 -0
- data/app/assets/images/rails_admin/colorpicker/colorpicker_select.gif +0 -0
- data/app/assets/images/rails_admin/colorpicker/colorpicker_submit.png +0 -0
- data/app/assets/images/rails_admin/colorpicker/custom_background.png +0 -0
- data/app/assets/images/rails_admin/colorpicker/custom_hex.png +0 -0
- data/app/assets/images/rails_admin/colorpicker/custom_hsb_b.png +0 -0
- data/app/assets/images/rails_admin/colorpicker/custom_hsb_h.png +0 -0
- data/app/assets/images/rails_admin/colorpicker/custom_hsb_s.png +0 -0
- data/app/assets/images/rails_admin/colorpicker/custom_indic.gif +0 -0
- data/app/assets/images/rails_admin/colorpicker/custom_rgb_b.png +0 -0
- data/app/assets/images/rails_admin/colorpicker/custom_rgb_g.png +0 -0
- data/app/assets/images/rails_admin/colorpicker/custom_rgb_r.png +0 -0
- data/app/assets/images/rails_admin/colorpicker/custom_submit.png +0 -0
- data/app/assets/images/rails_admin/colorpicker/select.png +0 -0
- data/app/assets/images/rails_admin/colorpicker/select2.png +0 -0
- data/app/assets/images/rails_admin/colorpicker/slider.png +0 -0
- data/app/assets/images/rails_admin/logo.png +0 -0
- data/app/assets/images/rails_admin/magnifier.png +0 -0
- data/app/assets/images/rails_admin/multiselect/icon_sprite.png +0 -0
- data/app/assets/images/rails_admin/multiselect/ui-icon-circle-triangle-n-dark.png +0 -0
- data/app/assets/images/rails_admin/multiselect/ui-icon-circle-triangle-n-light.png +0 -0
- data/app/assets/images/rails_admin/multiselect/ui-icon-circle-triangle-s-dark.png +0 -0
- data/app/assets/images/rails_admin/multiselect/ui-icon-circle-triangle-s-light.png +0 -0
- data/app/assets/javascripts/rails_admin/custom/ui.js +1 -0
- data/app/assets/javascripts/rails_admin/jquery-ui-1.8.16.custom.js +5019 -0
- data/app/assets/javascripts/rails_admin/jquery.colorpicker.js +484 -0
- data/app/assets/javascripts/rails_admin/jquery.ui.timepicker.js +1219 -0
- data/app/assets/javascripts/rails_admin/ra.datetimepicker.js +67 -0
- data/app/assets/javascripts/rails_admin/ra.filter-box.js +119 -0
- data/app/assets/javascripts/rails_admin/ra.filtering-multiselect.js +280 -0
- data/app/assets/javascripts/rails_admin/ra.filtering-select.js +181 -0
- data/app/assets/javascripts/rails_admin/ra.remote-form.js +147 -0
- data/app/assets/javascripts/rails_admin/rails_admin.js.erb +17 -0
- data/app/assets/javascripts/rails_admin/themes/default/ui.js +1 -0
- data/app/assets/javascripts/rails_admin/ui.js.coffee +30 -0
- data/app/assets/stylesheets/rails_admin/aristo/images/bg_fallback.png +0 -0
- data/app/assets/stylesheets/rails_admin/aristo/images/icon_sprite.png +0 -0
- data/app/assets/stylesheets/rails_admin/aristo/images/progress_bar.gif +0 -0
- data/app/assets/stylesheets/rails_admin/aristo/images/slider_handles.png +0 -0
- data/app/assets/stylesheets/rails_admin/aristo/images/ui-icons_222222_256x240.png +0 -0
- data/app/assets/stylesheets/rails_admin/aristo/images/ui-icons_454545_256x240.png +0 -0
- data/app/assets/stylesheets/rails_admin/aristo/jquery-ui-1.8.7.custom.css.scss +733 -0
- data/app/assets/stylesheets/rails_admin/base/README +2 -0
- data/app/assets/stylesheets/rails_admin/base/mixins.css.scss +1 -0
- data/app/assets/stylesheets/rails_admin/base/theming.css.scss +102 -0
- data/app/assets/stylesheets/rails_admin/base/variables.css.scss +1 -0
- data/app/assets/stylesheets/rails_admin/custom/README +3 -0
- data/app/assets/stylesheets/rails_admin/custom/mixins.css.scss +9 -0
- data/app/assets/stylesheets/rails_admin/custom/theming.css.scss +11 -0
- data/app/assets/stylesheets/rails_admin/custom/variables.css.scss +11 -0
- data/app/assets/stylesheets/rails_admin/imports.css.scss.erb +51 -0
- data/app/assets/stylesheets/rails_admin/jquery.colorpicker.css.scss +180 -0
- data/app/assets/stylesheets/rails_admin/jquery.ui.timepicker.css.scss +53 -0
- data/app/assets/stylesheets/rails_admin/ra.calendar-additions.css.scss +25 -0
- data/app/assets/stylesheets/rails_admin/ra.filtering-multiselect.css.scss +85 -0
- data/app/assets/stylesheets/rails_admin/rails_admin.css +4 -0
- data/app/assets/stylesheets/rails_admin/themes/README +11 -0
- data/app/assets/stylesheets/rails_admin/themes/default/mixins.css.scss +1 -0
- data/app/assets/stylesheets/rails_admin/themes/default/theming.css.scss +1 -0
- data/app/assets/stylesheets/rails_admin/themes/default/variables.css.scss +1 -0
- data/app/controllers/rails_admin/application_controller.rb +62 -0
- data/app/controllers/rails_admin/history_controller.rb +26 -0
- data/app/controllers/rails_admin/main_controller.rb +371 -0
- data/app/helpers/rails_admin/application_helper.rb +65 -0
- data/app/helpers/rails_admin/form_builder.rb +52 -0
- data/app/helpers/rails_admin/main_helper.rb +100 -0
- data/app/models/rails_admin/history.rb +64 -0
- data/app/views/kaminari/twitter-bootstrap/_gap.html.haml +2 -0
- data/app/views/kaminari/twitter-bootstrap/_next_page.html.haml +4 -0
- data/app/views/kaminari/twitter-bootstrap/_page.html.haml +4 -0
- data/app/views/kaminari/twitter-bootstrap/_paginator.html.haml +10 -0
- data/app/views/kaminari/twitter-bootstrap/_prev_page.html.haml +4 -0
- data/app/views/layouts/rails_admin/_navigation.html.haml +19 -0
- data/app/views/layouts/rails_admin/_secondary_navigation.html.haml +9 -0
- data/app/views/layouts/rails_admin/application.html.haml +41 -0
- data/app/views/rails_admin/history/_dashboard.html.haml +10 -0
- data/app/views/rails_admin/history/show.html.haml +42 -0
- data/app/views/rails_admin/main/_delete_notice.html.haml +19 -0
- data/app/views/rails_admin/main/_form_colorpicker.html.haml +26 -0
- data/app/views/rails_admin/main/_form_datetime.html.haml +7 -0
- data/app/views/rails_admin/main/_form_enumeration.html.haml +5 -0
- data/app/views/rails_admin/main/_form_field.html.haml +1 -0
- data/app/views/rails_admin/main/_form_file_upload.html.haml +19 -0
- data/app/views/rails_admin/main/_form_filtering_multiselect.html.haml +57 -0
- data/app/views/rails_admin/main/_form_filtering_select.html.haml +47 -0
- data/app/views/rails_admin/main/_form_polymorphic_association.html.haml +36 -0
- data/app/views/rails_admin/main/_form_text.html.haml +13 -0
- data/app/views/rails_admin/main/_models_links.html.haml +31 -0
- data/app/views/rails_admin/main/_object_links.html.haml +23 -0
- data/app/views/rails_admin/main/_submit_buttons.html.haml +12 -0
- data/app/views/rails_admin/main/bulk_delete.html.haml +6 -0
- data/app/views/rails_admin/main/dashboard.html.haml +31 -0
- data/app/views/rails_admin/main/delete.html.haml +13 -0
- data/app/views/rails_admin/main/edit.html.haml +2 -0
- data/app/views/rails_admin/main/export.html.haml +70 -0
- data/app/views/rails_admin/main/index.html.haml +98 -0
- data/app/views/rails_admin/main/new.html.haml +2 -0
- data/app/views/rails_admin/main/show.html.haml +14 -0
- data/config/initializers/active_record_extensions.rb +19 -0
- data/config/initializers/devise_patch.rb +9 -0
- data/config/initializers/haml.rb +3 -0
- data/config/locales/devise.bg.yml +42 -0
- data/config/locales/devise.de.yml +39 -0
- data/config/locales/devise.en.yml +39 -0
- data/config/locales/devise.es.yml +39 -0
- data/config/locales/devise.fi.yml +39 -0
- data/config/locales/devise.fr.yml +78 -0
- data/config/locales/devise.hr.yml +49 -0
- data/config/locales/devise.it.yml +39 -0
- data/config/locales/devise.lt.yml +39 -0
- data/config/locales/devise.mn.yml +39 -0
- data/config/locales/devise.nb.yml +43 -0
- data/config/locales/devise.pt-BR.yml +39 -0
- data/config/locales/devise.pt-PT.yml +39 -0
- data/config/locales/devise.ro.yml +46 -0
- data/config/locales/devise.ru.yml +39 -0
- data/config/locales/devise.sv.yml +39 -0
- data/config/locales/devise.tr.yml +39 -0
- data/config/locales/devise.uk.yml +39 -0
- data/config/locales/devise.zh-CN.yml +39 -0
- data/config/locales/devise.zh_cn.yml +39 -0
- data/config/locales/rails_admin.bg.yml +104 -0
- data/config/locales/rails_admin.da.yml +99 -0
- data/config/locales/rails_admin.de.yml +110 -0
- data/config/locales/rails_admin.en.yml +114 -0
- data/config/locales/rails_admin.es.yml +112 -0
- data/config/locales/rails_admin.fi.yml +107 -0
- data/config/locales/rails_admin.fr.yml +110 -0
- data/config/locales/rails_admin.hr.yml +81 -0
- data/config/locales/rails_admin.it.yml +109 -0
- data/config/locales/rails_admin.ja.yml +110 -0
- data/config/locales/rails_admin.lt.yml +102 -0
- data/config/locales/rails_admin.lv.yml +100 -0
- data/config/locales/rails_admin.mn.yml +103 -0
- data/config/locales/rails_admin.nb.yml +110 -0
- data/config/locales/rails_admin.nl.yml +135 -0
- data/config/locales/rails_admin.pl.yml +111 -0
- data/config/locales/rails_admin.pt-BR.yml +109 -0
- data/config/locales/rails_admin.pt-PT.yml +109 -0
- data/config/locales/rails_admin.ro.yml +113 -0
- data/config/locales/rails_admin.ru.yml +109 -0
- data/config/locales/rails_admin.sv.yml +103 -0
- data/config/locales/rails_admin.tr.yml +103 -0
- data/config/locales/rails_admin.uk.yml +100 -0
- data/config/locales/rails_admin.zh-CN.yml +114 -0
- data/config/locales/rails_admin.zh_cn.yml +107 -0
- data/config/routes.rb +28 -0
- data/lib/generators/rails_admin/install_generator.rb +83 -0
- data/lib/generators/rails_admin/templates/drop.rb +18 -0
- data/lib/generators/rails_admin/templates/initializer.erb +150 -0
- data/lib/generators/rails_admin/templates/migration.rb +18 -0
- data/lib/generators/rails_admin/uninstall_generator.rb +22 -0
- data/lib/generators/rails_admin/utils.rb +30 -0
- data/lib/rails_admin.rb +57 -0
- data/lib/rails_admin/abstract_model.rb +73 -0
- data/lib/rails_admin/abstract_object.rb +28 -0
- data/lib/rails_admin/adapters/active_record.rb +359 -0
- data/lib/rails_admin/config.rb +287 -0
- data/lib/rails_admin/config/base.rb +111 -0
- data/lib/rails_admin/config/fields.rb +99 -0
- data/lib/rails_admin/config/fields/association.rb +101 -0
- data/lib/rails_admin/config/fields/base.rb +273 -0
- data/lib/rails_admin/config/fields/factories/carrierwave.rb +16 -0
- data/lib/rails_admin/config/fields/factories/devise.rb +31 -0
- data/lib/rails_admin/config/fields/factories/dragonfly.rb +20 -0
- data/lib/rails_admin/config/fields/factories/enum.rb +11 -0
- data/lib/rails_admin/config/fields/factories/paperclip.rb +26 -0
- data/lib/rails_admin/config/fields/factories/password.rb +17 -0
- data/lib/rails_admin/config/fields/group.rb +63 -0
- data/lib/rails_admin/config/fields/groupable.rb +25 -0
- data/lib/rails_admin/config/fields/types.rb +26 -0
- data/lib/rails_admin/config/fields/types/all.rb +22 -0
- data/lib/rails_admin/config/fields/types/belongs_to_association.rb +51 -0
- data/lib/rails_admin/config/fields/types/boolean.rb +29 -0
- data/lib/rails_admin/config/fields/types/carrierwave.rb +32 -0
- data/lib/rails_admin/config/fields/types/color.rb +37 -0
- data/lib/rails_admin/config/fields/types/date.rb +24 -0
- data/lib/rails_admin/config/fields/types/datetime.rb +160 -0
- data/lib/rails_admin/config/fields/types/decimal.rb +14 -0
- data/lib/rails_admin/config/fields/types/dragonfly.rb +51 -0
- data/lib/rails_admin/config/fields/types/enum.rb +35 -0
- data/lib/rails_admin/config/fields/types/file_upload.rb +54 -0
- data/lib/rails_admin/config/fields/types/float.rb +14 -0
- data/lib/rails_admin/config/fields/types/has_and_belongs_to_many_association.rb +14 -0
- data/lib/rails_admin/config/fields/types/has_many_association.rb +42 -0
- data/lib/rails_admin/config/fields/types/has_one_association.rb +31 -0
- data/lib/rails_admin/config/fields/types/integer.rb +24 -0
- data/lib/rails_admin/config/fields/types/paperclip.rb +38 -0
- data/lib/rails_admin/config/fields/types/password.rb +41 -0
- data/lib/rails_admin/config/fields/types/polymorphic_association.rb +78 -0
- data/lib/rails_admin/config/fields/types/string.rb +34 -0
- data/lib/rails_admin/config/fields/types/text.rb +39 -0
- data/lib/rails_admin/config/fields/types/time.rb +31 -0
- data/lib/rails_admin/config/fields/types/timestamp.rb +18 -0
- data/lib/rails_admin/config/has_fields.rb +112 -0
- data/lib/rails_admin/config/has_groups.rb +39 -0
- data/lib/rails_admin/config/hideable.rb +28 -0
- data/lib/rails_admin/config/model.rb +89 -0
- data/lib/rails_admin/config/proxy.rb +40 -0
- data/lib/rails_admin/config/sections.rb +51 -0
- data/lib/rails_admin/config/sections/create.rb +11 -0
- data/lib/rails_admin/config/sections/export.rb +18 -0
- data/lib/rails_admin/config/sections/list.rb +55 -0
- data/lib/rails_admin/config/sections/navigation.rb +21 -0
- data/lib/rails_admin/config/sections/show.rb +50 -0
- data/lib/rails_admin/config/sections/update.rb +11 -0
- data/lib/rails_admin/engine.rb +15 -0
- data/lib/rails_admin/extension.rb +23 -0
- data/lib/rails_admin/extensions/cancan.rb +5 -0
- data/lib/rails_admin/extensions/cancan/authorization_adapter.rb +71 -0
- data/lib/rails_admin/generic_support.rb +15 -0
- data/lib/rails_admin/i18n_support.rb +43 -0
- data/lib/rails_admin/support/core_extensions.rb +44 -0
- data/lib/rails_admin/support/csv_converter.rb +109 -0
- data/lib/rails_admin/version.rb +6 -0
- data/lib/tasks/prepare_ci_env.rake +27 -0
- data/lib/tasks/rails_admin.rake +18 -0
- data/spec/ci.sh +2 -0
- data/spec/controllers/application_controller_spec.rb +30 -0
- data/spec/controllers/main_controller_spec.rb +86 -0
- data/spec/database_helpers.rb +15 -0
- data/spec/dummy_app/Gemfile +52 -0
- data/spec/dummy_app/README +256 -0
- data/spec/dummy_app/Rakefile +7 -0
- data/spec/dummy_app/app/controllers/application_controller.rb +3 -0
- data/spec/dummy_app/app/helpers/application_helper.rb +2 -0
- data/spec/dummy_app/app/locales/models.en.yml +8 -0
- data/spec/dummy_app/app/models/abstract.rb +5 -0
- data/spec/dummy_app/app/models/ball.rb +8 -0
- data/spec/dummy_app/app/models/cms.rb +5 -0
- data/spec/dummy_app/app/models/cms/basic_page.rb +7 -0
- data/spec/dummy_app/app/models/cms/unscoped_page.rb +3 -0
- data/spec/dummy_app/app/models/comment.rb +3 -0
- data/spec/dummy_app/app/models/division.rb +8 -0
- data/spec/dummy_app/app/models/draft.rb +11 -0
- data/spec/dummy_app/app/models/fan.rb +5 -0
- data/spec/dummy_app/app/models/field_test.rb +13 -0
- data/spec/dummy_app/app/models/league.rb +10 -0
- data/spec/dummy_app/app/models/player.rb +15 -0
- data/spec/dummy_app/app/models/rel_test.rb +6 -0
- data/spec/dummy_app/app/models/team.rb +25 -0
- data/spec/dummy_app/app/models/user.rb +21 -0
- data/spec/dummy_app/app/uploaders/carrierwave_uploader.rb +53 -0
- data/spec/dummy_app/app/views/layouts/application.html.erb +13 -0
- data/spec/dummy_app/config.ru +4 -0
- data/spec/dummy_app/config/application.rb +47 -0
- data/spec/dummy_app/config/boot.rb +6 -0
- data/spec/dummy_app/config/database.yml +22 -0
- data/spec/dummy_app/config/environment.rb +5 -0
- data/spec/dummy_app/config/environments/development.rb +27 -0
- data/spec/dummy_app/config/environments/production.rb +51 -0
- data/spec/dummy_app/config/environments/test.rb +39 -0
- data/spec/dummy_app/config/initializers/backtrace_silencers.rb +7 -0
- data/spec/dummy_app/config/initializers/devise.rb +142 -0
- data/spec/dummy_app/config/initializers/inflections.rb +10 -0
- data/spec/dummy_app/config/initializers/mime_types.rb +5 -0
- data/spec/dummy_app/config/initializers/quiet_assets.rb +10 -0
- data/spec/dummy_app/config/initializers/rails_admin.rb +10 -0
- data/spec/dummy_app/config/initializers/secret_token.rb +7 -0
- data/spec/dummy_app/config/initializers/session_store.rb +8 -0
- data/spec/dummy_app/config/routes.rb +8 -0
- data/spec/dummy_app/db/migrate/00000000000001_create_divisions_migration.rb +13 -0
- data/spec/dummy_app/db/migrate/00000000000002_create_drafts_migration.rb +19 -0
- data/spec/dummy_app/db/migrate/00000000000003_create_leagues_migration.rb +12 -0
- data/spec/dummy_app/db/migrate/00000000000004_create_players_migration.rb +20 -0
- data/spec/dummy_app/db/migrate/00000000000005_create_teams_migration.rb +22 -0
- data/spec/dummy_app/db/migrate/00000000000006_devise_create_users.rb +19 -0
- data/spec/dummy_app/db/migrate/00000000000007_create_histories_table.rb +16 -0
- data/spec/dummy_app/db/migrate/00000000000008_create_fans_migration.rb +12 -0
- data/spec/dummy_app/db/migrate/00000000000009_create_fans_teams_migration.rb +11 -0
- data/spec/dummy_app/db/migrate/00000000000010_add_revenue_to_team_migration.rb +9 -0
- data/spec/dummy_app/db/migrate/00000000000011_add_suspended_to_player_migration.rb +9 -0
- data/spec/dummy_app/db/migrate/00000000000012_add_avatar_columns_to_user.rb +16 -0
- data/spec/dummy_app/db/migrate/00000000000013_add_roles_to_user.rb +9 -0
- data/spec/dummy_app/db/migrate/00000000000014_add_color_to_team_migration.rb +9 -0
- data/spec/dummy_app/db/migrate/20101223222233_create_rel_tests.rb +15 -0
- data/spec/dummy_app/db/migrate/20110103205808_create_comments.rb +15 -0
- data/spec/dummy_app/db/migrate/20110123042530_rename_histories_to_rails_admin_histories.rb +9 -0
- data/spec/dummy_app/db/migrate/20110224184303_create_field_tests.rb +22 -0
- data/spec/dummy_app/db/migrate/20110328193014_create_cms_basic_pages.rb +14 -0
- data/spec/dummy_app/db/migrate/20110329183136_remove_league_id_from_teams.rb +9 -0
- data/spec/dummy_app/db/migrate/20110607152842_add_format_to_field_test.rb +9 -0
- data/spec/dummy_app/db/migrate/20110714095433_create_balls.rb +12 -0
- data/spec/dummy_app/db/migrate/20110831090841_add_protected_field_and_restricted_field_to_field_tests.rb +6 -0
- data/spec/dummy_app/db/migrate/20110901131551_change_division_primary_key.rb +19 -0
- data/spec/dummy_app/db/migrate/20110901142530_rename_league_id_foreign_key_on_divisions.rb +5 -0
- data/spec/dummy_app/db/migrate/20110901150912_set_primary_key_not_null_for_divisions.rb +21 -0
- data/spec/dummy_app/db/migrate/20110901154834_change_length_for_rails_admin_histories.rb +9 -0
- data/spec/dummy_app/db/migrate/20111103174459_create_unscoped_pages.rb +9 -0
- data/spec/dummy_app/db/migrate/20111108143642_add_dragonfly_and_carrierwave_to_field_tests.rb +7 -0
- data/spec/dummy_app/db/seeds.rb +18 -0
- data/spec/dummy_app/doc/README_FOR_APP +2 -0
- data/spec/dummy_app/public/404.html +0 -0
- data/spec/dummy_app/public/favicon.ico +0 -0
- data/spec/dummy_app/script/rails +6 -0
- data/spec/factories.rb +62 -0
- data/spec/generator_helpers.rb +30 -0
- data/spec/generators/install_generator_spec.rb +85 -0
- data/spec/generators/uninstall_generator_spec.rb +35 -0
- data/spec/lib/abstract_object_spec.rb +119 -0
- data/spec/lib/rails_admin_spec.rb +153 -0
- data/spec/requests/authorization/cancan_spec.rb +260 -0
- data/spec/requests/basic/bulk_action/rails_admin_basic_bulk_action_spec.rb +25 -0
- data/spec/requests/basic/bulk_destroy/rails_admin_basic_bulk_destroy_spec.rb +55 -0
- data/spec/requests/basic/create/rails_admin_basic_create_spec.rb +143 -0
- data/spec/requests/basic/create/rails_admin_namespaced_model_create_spec.rb +24 -0
- data/spec/requests/basic/delete/rails_admin_basic_delete_spec.rb +35 -0
- data/spec/requests/basic/destroy/rails_admin_basic_destroy_spec.rb +56 -0
- data/spec/requests/basic/edit/rails_admin_basic_edit_spec.rb +98 -0
- data/spec/requests/basic/export/rails_admin_basic_export_spec.rb +84 -0
- data/spec/requests/basic/list/rails_admin_basic_list_spec.rb +401 -0
- data/spec/requests/basic/new/rails_admin_basic_new_spec.rb +74 -0
- data/spec/requests/basic/new/rails_admin_namespaced_model_new_spec.rb +31 -0
- data/spec/requests/basic/show/rails_admin_basic_show_spec.rb +83 -0
- data/spec/requests/basic/update/rails_admin_basic_update_spec.rb +169 -0
- data/spec/requests/config/edit/rails_admin_config_edit_spec.rb +744 -0
- data/spec/requests/config/list/rails_admin_config_list_spec.rb +549 -0
- data/spec/requests/config/navigation/rails_admin_config_navigation_spec.rb +107 -0
- data/spec/requests/config/rails_admin_config_spec.rb +180 -0
- data/spec/requests/config/show/rails_admin_config_show_spec.rb +275 -0
- data/spec/requests/history/rails_admin_history_spec.rb +57 -0
- data/spec/requests/rails_admin_spec.rb +103 -0
- data/spec/requests/relation_spec.rb +26 -0
- data/spec/spec_helper.rb +88 -0
- metadata +717 -0
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe "RailsAdmin Basic New" do
|
|
4
|
+
|
|
5
|
+
subject { page }
|
|
6
|
+
|
|
7
|
+
describe "GET /admin/player/new" do
|
|
8
|
+
before(:each) do
|
|
9
|
+
visit new_path(:model_name => "player")
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
it "should show \"Create model\"" do
|
|
13
|
+
should have_content("Create player")
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
it "should show required fields as \"Required\"" do
|
|
17
|
+
should have_selector("div", :text => /Name\s*Required/)
|
|
18
|
+
should have_selector("div", :text => /Number\s*Required/)
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
it "should show non-required fields as \"Optional\"" do
|
|
22
|
+
should have_selector("#player_position_field .help-block", :text => "Optional")
|
|
23
|
+
should have_selector("#player_born_on_field .help-block", :text => "Optional")
|
|
24
|
+
should have_selector("#player_notes_field .help-block", :text => "Optional")
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
# https://github.com/sferik/rails_admin/issues/362
|
|
28
|
+
# test that no link uses the "wildcard route" with the main
|
|
29
|
+
# controller and new method
|
|
30
|
+
it "should not use the 'wildcard route'" do
|
|
31
|
+
should have_no_selector("a[href^='/rails_admin/main/new']")
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
describe "GET /admin/player/new with has-one/belongs_to/has_many association" do
|
|
36
|
+
before(:each) do
|
|
37
|
+
FactoryGirl.create :draft
|
|
38
|
+
visit new_path(:model_name => "player")
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
it "should show selects" do
|
|
42
|
+
should have_selector("select#player_draft_id")
|
|
43
|
+
should have_selector("select#player_team_id")
|
|
44
|
+
should have_selector("select#player_comment_ids")
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
describe "GET /admin/player/new with missing label" do
|
|
49
|
+
before(:each) do
|
|
50
|
+
FactoryGirl.create :team, :name => ""
|
|
51
|
+
visit new_path(:model_name => "player")
|
|
52
|
+
end
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
describe "GET /admin/player/new with parameters for pre-population" do
|
|
56
|
+
it "should populate form field when corresponding parameters are passed in" do
|
|
57
|
+
visit new_path(:model_name => 'players', :players => {:name => 'Sam'})
|
|
58
|
+
page.should have_css('input[value=Sam]')
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
it "should prepropulate belongs to relationships" do
|
|
62
|
+
@team = FactoryGirl.create :team, :name => "belongs_to association prepopulated"
|
|
63
|
+
visit new_path(:model_name => 'players', :associations => { :team => @team.id } )
|
|
64
|
+
page.should have_css("select#player_team_id option[selected='selected'][value='#{@team.id}']")
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
it "should prepropulate has_many relationships" do
|
|
68
|
+
@player = FactoryGirl.create :player, :name => "has_many association prepopulated"
|
|
69
|
+
visit new_path(:model_name => 'teams', :associations => { :players => @player.id } )
|
|
70
|
+
page.should have_css("select#team_player_ids option[selected='selected'][value='#{@player.id}']")
|
|
71
|
+
end
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
end
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe "RailsAdmin Namespaced Model New" do
|
|
4
|
+
|
|
5
|
+
subject { page }
|
|
6
|
+
|
|
7
|
+
describe "AbstractModel#to_param" do
|
|
8
|
+
it 'turns namespaces into prefixes with ~' do
|
|
9
|
+
RailsAdmin::AbstractModel.new("Cms::BasicPage").to_param.should == 'cms~basic_pages'
|
|
10
|
+
end
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
describe "ApplicationController#to_model_name" do
|
|
14
|
+
it 'turns cms~basic_pages into Cms::BasicPage' do
|
|
15
|
+
RailsAdmin::ApplicationController.new.to_model_name('cms~basic_pages').should == 'Cms::BasicPage'
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
describe "GET /admin/cms_basic_page/new" do
|
|
20
|
+
before(:each) do
|
|
21
|
+
visit new_path(:model_name => "cms~basic_page")
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
it 'should have correct input field names' do
|
|
25
|
+
should have_selector("label[for=cms_basic_page_title]")
|
|
26
|
+
should have_selector("input#cms_basic_page_title[name='cms_basic_page[title]']")
|
|
27
|
+
should have_selector("label[for=cms_basic_page_content]")
|
|
28
|
+
should have_selector("textarea#cms_basic_page_content[name='cms_basic_page[content]']")
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
end
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe "RailsAdmin Basic Show" do
|
|
4
|
+
subject { page }
|
|
5
|
+
|
|
6
|
+
describe "show" do
|
|
7
|
+
before(:each) do
|
|
8
|
+
@player = FactoryGirl.create :player
|
|
9
|
+
visit show_path(:model_name => "player", :id => @player.id)
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
it "should have History, Edit, Delete" do
|
|
13
|
+
should have_selector("a", :text => "History")
|
|
14
|
+
should have_selector("a", :text => "Edit")
|
|
15
|
+
should have_selector("a", :text => "Delete")
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
it "should show 'Details'" do
|
|
19
|
+
should have_content("Details")
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
it "should show attributes" do
|
|
23
|
+
should have_content("Name")
|
|
24
|
+
should have_content(@player.name)
|
|
25
|
+
should have_content("Number")
|
|
26
|
+
should have_content(@player.number)
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
describe "show with belongs_to association" do
|
|
31
|
+
before(:each) do
|
|
32
|
+
@player = FactoryGirl.create :player
|
|
33
|
+
@team = FactoryGirl.create :team
|
|
34
|
+
@player.update_attribute(:team, @team)
|
|
35
|
+
visit show_path(:model_name => "player", :id => @player.id)
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
it "should show associated objects" do
|
|
39
|
+
should have_css("a[href='/admin/teams/#{@team.id}']")
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
describe "show with has-one association" do
|
|
44
|
+
before(:each) do
|
|
45
|
+
@player = FactoryGirl.create :player
|
|
46
|
+
@draft = FactoryGirl.create :draft, :player => @player
|
|
47
|
+
visit show_path(:model_name => "player", :id => @player.id)
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
it "should show associated objects" do
|
|
51
|
+
should have_css("a[href='/admin/drafts/#{@draft.id}']")
|
|
52
|
+
end
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
describe "show with has-and-belongs-to-many association" do
|
|
56
|
+
before(:each) do
|
|
57
|
+
@player = FactoryGirl.create :player
|
|
58
|
+
@comment1 = FactoryGirl.create :comment, :commentable => @player
|
|
59
|
+
@comment2 = FactoryGirl.create :comment, :commentable => @player
|
|
60
|
+
@comment3 = FactoryGirl.create :comment, :commentable => FactoryGirl.create(:player)
|
|
61
|
+
|
|
62
|
+
visit show_path(:model_name => "player", :id => @player.id)
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
it "should show associated objects" do
|
|
66
|
+
should have_css("a[href='/admin/comments/#{@comment1.id}']")
|
|
67
|
+
should have_css("a[href='/admin/comments/#{@comment2.id}']")
|
|
68
|
+
should_not have_css("a[href='/admin/comments/#{@comment3.id}']")
|
|
69
|
+
end
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
describe "show for polymorphic objects" do
|
|
73
|
+
before(:each) do
|
|
74
|
+
@player = FactoryGirl.create :player
|
|
75
|
+
@comment = FactoryGirl.create :comment, :commentable => @player
|
|
76
|
+
visit show_path(:model_name => "comment", :id => @comment.id)
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
it "should show associated object" do
|
|
80
|
+
should have_css("a[href='/admin/players/#{@player.id}']")
|
|
81
|
+
end
|
|
82
|
+
end
|
|
83
|
+
end
|
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe "RailsAdmin Basic Update" do
|
|
4
|
+
|
|
5
|
+
subject { page }
|
|
6
|
+
|
|
7
|
+
describe "update with errors" do
|
|
8
|
+
before(:each) do
|
|
9
|
+
@player = FactoryGirl.create :player
|
|
10
|
+
visit edit_path(:model_name => "player", :id => @player.id)
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
it "should return to edit page" do
|
|
14
|
+
fill_in "player[name]", :with => ""
|
|
15
|
+
click_button "Save"
|
|
16
|
+
page.driver.status_code.should eql(406)
|
|
17
|
+
should have_selector "form", :action => "/admin/players/#{@player.id}"
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
describe "update and add another" do
|
|
22
|
+
before(:each) do
|
|
23
|
+
@player = FactoryGirl.create :player
|
|
24
|
+
|
|
25
|
+
visit edit_path(:model_name => "player", :id => @player.id)
|
|
26
|
+
|
|
27
|
+
fill_in "player[name]", :with => "Jackie Robinson"
|
|
28
|
+
fill_in "player[number]", :with => "42"
|
|
29
|
+
fill_in "player[position]", :with => "Second baseman"
|
|
30
|
+
click_button "Save"
|
|
31
|
+
|
|
32
|
+
@player = RailsAdmin::AbstractModel.new("Player").first
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
it "should update an object with correct attributes" do
|
|
36
|
+
@player.name.should eql("Jackie Robinson")
|
|
37
|
+
@player.number.should eql(42)
|
|
38
|
+
@player.position.should eql("Second baseman")
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
describe "update and edit" do
|
|
43
|
+
before(:each) do
|
|
44
|
+
@player = FactoryGirl.create :player
|
|
45
|
+
|
|
46
|
+
visit edit_path(:model_name => "player", :id => @player.id)
|
|
47
|
+
|
|
48
|
+
fill_in "player[name]", :with => "Jackie Robinson"
|
|
49
|
+
fill_in "player[number]", :with => "42"
|
|
50
|
+
fill_in "player[position]", :with => "Second baseman"
|
|
51
|
+
click_button "Save and edit"
|
|
52
|
+
|
|
53
|
+
@player.reload
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
it "should update an object with correct attributes" do
|
|
57
|
+
@player.name.should eql("Jackie Robinson")
|
|
58
|
+
@player.number.should eql(42)
|
|
59
|
+
@player.position.should eql("Second baseman")
|
|
60
|
+
end
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
describe "update with has-one association" do
|
|
64
|
+
before(:each) do
|
|
65
|
+
@player = FactoryGirl.create :player
|
|
66
|
+
@draft = FactoryGirl.create :draft
|
|
67
|
+
page.driver.put update_path(:model_name => "player", :id => @player.id, :player => {:name => "Jackie Robinson", :draft_id => @draft.id, :number => 42, :position => "Second baseman"})
|
|
68
|
+
@player.reload
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
it "should update an object with correct attributes" do
|
|
72
|
+
@player.name.should eql("Jackie Robinson")
|
|
73
|
+
@player.number.should eql(42)
|
|
74
|
+
@player.position.should eql("Second baseman")
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
it "should update an object with correct associations" do
|
|
78
|
+
@draft.reload
|
|
79
|
+
@player.draft.should eql(@draft)
|
|
80
|
+
end
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
describe "update with has-many association" do
|
|
84
|
+
it "should be fillable and emptyable" do
|
|
85
|
+
@league = FactoryGirl.create :league
|
|
86
|
+
@divisions = 3.times.map { Division.create!(:name => "div #{Time.now.to_f}", :league => League.create!(:name => "league #{Time.now.to_f}")) }
|
|
87
|
+
|
|
88
|
+
page.driver.put update_path(:model_name => "league", :id => @league.id, :league => {:name => "National League", :division_ids => [@divisions[0].id] })
|
|
89
|
+
|
|
90
|
+
@league.reload
|
|
91
|
+
@league.name.should eql("National League")
|
|
92
|
+
@divisions[0].reload
|
|
93
|
+
@league.divisions.should include(@divisions[0])
|
|
94
|
+
@league.divisions.should_not include(@divisions[1])
|
|
95
|
+
@league.divisions.should_not include(@divisions[2])
|
|
96
|
+
RailsAdmin::History.where(:item => @league.id).collect(&:message).should include("Added Divisions ##{@divisions[0].id} associations, Changed name")
|
|
97
|
+
|
|
98
|
+
page.driver.put update_path(:model_name => "league", :id => @league.id, :league => {:division_ids => [""]})
|
|
99
|
+
|
|
100
|
+
@league.reload
|
|
101
|
+
@league.divisions.should be_empty
|
|
102
|
+
RailsAdmin::History.where(:item => @league.id).collect(&:message).should include("Removed Divisions ##{@divisions[0].id} associations")
|
|
103
|
+
end
|
|
104
|
+
end
|
|
105
|
+
|
|
106
|
+
describe "update with missing object" do
|
|
107
|
+
before(:each) do
|
|
108
|
+
page.driver.put(update_path(:model_name => "player", :id => 1), :params => {:player => {:name => "Jackie Robinson", :number => 42, :position => "Second baseman"}})
|
|
109
|
+
end
|
|
110
|
+
|
|
111
|
+
it "should raise NotFound" do
|
|
112
|
+
page.driver.status_code.should eql(404)
|
|
113
|
+
end
|
|
114
|
+
end
|
|
115
|
+
|
|
116
|
+
describe "update with invalid object" do
|
|
117
|
+
before(:each) do
|
|
118
|
+
@player = FactoryGirl.create :player
|
|
119
|
+
|
|
120
|
+
visit edit_path(:model_name => "player", :id => @player.id)
|
|
121
|
+
|
|
122
|
+
fill_in "player[name]", :with => "Jackie Robinson"
|
|
123
|
+
fill_in "player[number]", :with => "a"
|
|
124
|
+
fill_in "player[position]", :with => "Second baseman"
|
|
125
|
+
click_button "Save"
|
|
126
|
+
|
|
127
|
+
@player.reload
|
|
128
|
+
end
|
|
129
|
+
|
|
130
|
+
it "should show an error message" do
|
|
131
|
+
body.should have_content("Player failed to be updated")
|
|
132
|
+
end
|
|
133
|
+
end
|
|
134
|
+
|
|
135
|
+
describe "update with serialized objects" do
|
|
136
|
+
before(:each) do
|
|
137
|
+
@user = FactoryGirl.create :user
|
|
138
|
+
|
|
139
|
+
visit edit_path(:model_name => "user", :id => @user.id)
|
|
140
|
+
|
|
141
|
+
fill_in "user[roles]", :with => %{['admin', 'user']}
|
|
142
|
+
click_button "Save"
|
|
143
|
+
|
|
144
|
+
@user.reload
|
|
145
|
+
end
|
|
146
|
+
|
|
147
|
+
it "should save the serialized data" do
|
|
148
|
+
@user.roles.should eql(['admin','user'])
|
|
149
|
+
end
|
|
150
|
+
end
|
|
151
|
+
|
|
152
|
+
describe "update with overridden to_param" do
|
|
153
|
+
before(:each) do
|
|
154
|
+
@ball = FactoryGirl.create :ball
|
|
155
|
+
|
|
156
|
+
visit edit_path(:model_name => "ball", :id => @ball.id)
|
|
157
|
+
|
|
158
|
+
fill_in "ball[color]", :with => "gray"
|
|
159
|
+
click_button "Save and edit"
|
|
160
|
+
|
|
161
|
+
@ball.reload
|
|
162
|
+
end
|
|
163
|
+
|
|
164
|
+
it "should update an object with correct attributes" do
|
|
165
|
+
@ball.color.should eql("gray")
|
|
166
|
+
end
|
|
167
|
+
end
|
|
168
|
+
|
|
169
|
+
end
|
|
@@ -0,0 +1,744 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe "RailsAdmin Config DSL Edit Section" do
|
|
4
|
+
|
|
5
|
+
subject { page }
|
|
6
|
+
|
|
7
|
+
describe "attr_accessible" do
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
it "should be configurable in the controller scope" do
|
|
11
|
+
|
|
12
|
+
RailsAdmin.config do |config|
|
|
13
|
+
config.excluded_models = []
|
|
14
|
+
config.attr_accessible_role do
|
|
15
|
+
_current_user.attr_accessible_role # sould be :custom_role
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
config.model FieldTest do
|
|
19
|
+
edit do
|
|
20
|
+
field :string_field
|
|
21
|
+
field :restricted_field
|
|
22
|
+
field :protected_field
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
visit new_path(:model_name => "field_test")
|
|
28
|
+
fill_in "field_test[string_field]", :with => "No problem here"
|
|
29
|
+
fill_in "field_test[restricted_field]", :with => "I'm allowed to do that as :custom_role only"
|
|
30
|
+
should have_no_selector "field_test[protected_field]"
|
|
31
|
+
click_button "Save"
|
|
32
|
+
@field_test = FieldTest.first
|
|
33
|
+
@field_test.string_field.should == "No problem here"
|
|
34
|
+
@field_test.restricted_field.should == "I'm allowed to do that as :custom_role only"
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
describe "field groupings" do
|
|
39
|
+
|
|
40
|
+
it "should be hideable" do
|
|
41
|
+
RailsAdmin.config Team do
|
|
42
|
+
edit do
|
|
43
|
+
group :default do
|
|
44
|
+
label "Hidden group"
|
|
45
|
+
hide
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
visit new_path(:model_name => "team")
|
|
50
|
+
# Should not have the group header
|
|
51
|
+
should have_no_selector("legend", :text => "Hidden Group")
|
|
52
|
+
# Should not have any of the group's fields either
|
|
53
|
+
should have_no_selector("select#team_division")
|
|
54
|
+
should have_no_selector("input#team_name")
|
|
55
|
+
should have_no_selector("input#team_logo_url")
|
|
56
|
+
should have_no_selector("input#team_manager")
|
|
57
|
+
should have_no_selector("input#team_ballpark")
|
|
58
|
+
should have_no_selector("input#team_mascot")
|
|
59
|
+
should have_no_selector("input#team_founded")
|
|
60
|
+
should have_no_selector("input#team_wins")
|
|
61
|
+
should have_no_selector("input#team_losses")
|
|
62
|
+
should have_no_selector("input#team_win_percentage")
|
|
63
|
+
should have_no_selector("input#team_revenue")
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
it "should hide association groupings by the name of the association" do
|
|
67
|
+
RailsAdmin.config Team do
|
|
68
|
+
edit do
|
|
69
|
+
group :players do
|
|
70
|
+
hide
|
|
71
|
+
end
|
|
72
|
+
end
|
|
73
|
+
end
|
|
74
|
+
visit new_path(:model_name => "team")
|
|
75
|
+
# Should not have the group header
|
|
76
|
+
should have_no_selector("legend", :text => "Players")
|
|
77
|
+
# Should not have any of the group's fields either
|
|
78
|
+
should have_no_selector("select#team_player_ids")
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
it "should be renameable" do
|
|
82
|
+
RailsAdmin.config Team do
|
|
83
|
+
edit do
|
|
84
|
+
group :default do
|
|
85
|
+
label "Renamed group"
|
|
86
|
+
end
|
|
87
|
+
end
|
|
88
|
+
end
|
|
89
|
+
visit new_path(:model_name => "team")
|
|
90
|
+
should have_selector("legend", :text => "Renamed group")
|
|
91
|
+
end
|
|
92
|
+
|
|
93
|
+
describe "help" do
|
|
94
|
+
|
|
95
|
+
it "should show help section if present" do
|
|
96
|
+
RailsAdmin.config Team do
|
|
97
|
+
edit do
|
|
98
|
+
group :default do
|
|
99
|
+
help "help paragraph to display"
|
|
100
|
+
end
|
|
101
|
+
end
|
|
102
|
+
end
|
|
103
|
+
visit new_path(:model_name => "team")
|
|
104
|
+
should have_selector('legend small', :text => "help paragraph to display")
|
|
105
|
+
end
|
|
106
|
+
|
|
107
|
+
it "should not show help if not present" do
|
|
108
|
+
RailsAdmin.config Team do
|
|
109
|
+
edit do
|
|
110
|
+
group :default do
|
|
111
|
+
label 'no help'
|
|
112
|
+
end
|
|
113
|
+
end
|
|
114
|
+
end
|
|
115
|
+
visit new_path(:model_name => "team")
|
|
116
|
+
should_not have_selector('legend small')
|
|
117
|
+
end
|
|
118
|
+
|
|
119
|
+
it "should be able to display multiple help if there are multiple sections" do
|
|
120
|
+
RailsAdmin.config Team do
|
|
121
|
+
edit do
|
|
122
|
+
group :default do
|
|
123
|
+
field :name
|
|
124
|
+
help 'help for default'
|
|
125
|
+
end
|
|
126
|
+
group :other_section do
|
|
127
|
+
label "Other Section"
|
|
128
|
+
field :division
|
|
129
|
+
help 'help for other section'
|
|
130
|
+
end
|
|
131
|
+
end
|
|
132
|
+
end
|
|
133
|
+
visit new_path(:model_name => "team")
|
|
134
|
+
should have_selector("legend small", :text => 'help for default')
|
|
135
|
+
should have_selector("legend small", :text => 'help for other section')
|
|
136
|
+
should have_selector("legend small", :count => 2)
|
|
137
|
+
end
|
|
138
|
+
end
|
|
139
|
+
|
|
140
|
+
it "should have accessor for its fields" do
|
|
141
|
+
RailsAdmin.config Team do
|
|
142
|
+
edit do
|
|
143
|
+
group :default do
|
|
144
|
+
field :name
|
|
145
|
+
field :logo_url
|
|
146
|
+
end
|
|
147
|
+
group :belongs_to_associations do
|
|
148
|
+
label "Belong's to associations"
|
|
149
|
+
field :division
|
|
150
|
+
end
|
|
151
|
+
end
|
|
152
|
+
end
|
|
153
|
+
visit new_path(:model_name => "team")
|
|
154
|
+
should have_selector("legend", :text => "Basic info")
|
|
155
|
+
should have_selector("legend", :text => "Belong's to associations")
|
|
156
|
+
should have_selector("label", :text => "Name")
|
|
157
|
+
should have_selector("label", :text => "Logo url")
|
|
158
|
+
should have_selector("label", :text => "Division")
|
|
159
|
+
should have_selector(".field", :count => 3)
|
|
160
|
+
end
|
|
161
|
+
|
|
162
|
+
it "should have accessor for its fields by type" do
|
|
163
|
+
RailsAdmin.config Team do
|
|
164
|
+
edit do
|
|
165
|
+
group :default do
|
|
166
|
+
field :name
|
|
167
|
+
field :logo_url
|
|
168
|
+
end
|
|
169
|
+
group :other do
|
|
170
|
+
field :division_id
|
|
171
|
+
field :manager
|
|
172
|
+
field :ballpark
|
|
173
|
+
fields_of_type :string do
|
|
174
|
+
label { "#{label} (STRING)" }
|
|
175
|
+
end
|
|
176
|
+
end
|
|
177
|
+
end
|
|
178
|
+
end
|
|
179
|
+
visit new_path(:model_name => "team")
|
|
180
|
+
should have_selector("label", :text => "Name")
|
|
181
|
+
should have_selector("label", :text => "Logo url")
|
|
182
|
+
should have_selector("label", :text => "Division")
|
|
183
|
+
should have_selector("label", :text => "Manager (STRING)")
|
|
184
|
+
should have_selector("label", :text => "Ballpark (STRING)")
|
|
185
|
+
end
|
|
186
|
+
end
|
|
187
|
+
|
|
188
|
+
describe "items' fields" do
|
|
189
|
+
|
|
190
|
+
it "should show all by default" do
|
|
191
|
+
visit new_path(:model_name => "team")
|
|
192
|
+
should have_selector("select#team_division_id")
|
|
193
|
+
should have_selector("input#team_name")
|
|
194
|
+
should have_selector("input#team_logo_url")
|
|
195
|
+
should have_selector("input#team_manager")
|
|
196
|
+
should have_selector("input#team_ballpark")
|
|
197
|
+
should have_selector("input#team_mascot")
|
|
198
|
+
should have_selector("input#team_founded")
|
|
199
|
+
should have_selector("input#team_wins")
|
|
200
|
+
should have_selector("input#team_losses")
|
|
201
|
+
should have_selector("input#team_win_percentage")
|
|
202
|
+
should have_selector("input#team_revenue")
|
|
203
|
+
should have_selector("select#team_player_ids")
|
|
204
|
+
should have_selector("select#team_fan_ids")
|
|
205
|
+
end
|
|
206
|
+
|
|
207
|
+
it "should appear in order defined" do
|
|
208
|
+
RailsAdmin.config Team do
|
|
209
|
+
edit do
|
|
210
|
+
field :manager
|
|
211
|
+
field :division
|
|
212
|
+
field :name
|
|
213
|
+
end
|
|
214
|
+
end
|
|
215
|
+
visit new_path(:model_name => "team")
|
|
216
|
+
should have_selector(:xpath, "//*[contains(@class, 'field')][1]//*[@id='team_manager']")
|
|
217
|
+
should have_selector(:xpath, "//*[contains(@class, 'field')][2]//*[@id='team_division_id']")
|
|
218
|
+
should have_selector(:xpath, "//*[contains(@class, 'field')][3]//*[@id='team_name']")
|
|
219
|
+
end
|
|
220
|
+
|
|
221
|
+
it "should only show the defined fields if some fields are defined" do
|
|
222
|
+
RailsAdmin.config Team do
|
|
223
|
+
edit do
|
|
224
|
+
field :division
|
|
225
|
+
field :name
|
|
226
|
+
end
|
|
227
|
+
end
|
|
228
|
+
visit new_path(:model_name => "team")
|
|
229
|
+
should have_selector("label", :text => "Division")
|
|
230
|
+
should have_selector("label", :text => "Name")
|
|
231
|
+
should have_selector(".field", :count => 2)
|
|
232
|
+
end
|
|
233
|
+
|
|
234
|
+
it "should delegates the label option to the ActiveModel API" do
|
|
235
|
+
RailsAdmin.config Team do
|
|
236
|
+
edit do
|
|
237
|
+
field :manager
|
|
238
|
+
field :fans
|
|
239
|
+
end
|
|
240
|
+
end
|
|
241
|
+
visit new_path(:model_name => "team")
|
|
242
|
+
should have_selector("label", :text => "Team Manager")
|
|
243
|
+
should have_selector("label", :text => "Some Fans")
|
|
244
|
+
end
|
|
245
|
+
|
|
246
|
+
it "should be renameable" do
|
|
247
|
+
RailsAdmin.config Team do
|
|
248
|
+
edit do
|
|
249
|
+
field :manager do
|
|
250
|
+
label "Renamed field"
|
|
251
|
+
end
|
|
252
|
+
field :division
|
|
253
|
+
field :name
|
|
254
|
+
end
|
|
255
|
+
end
|
|
256
|
+
visit new_path(:model_name => "team")
|
|
257
|
+
should have_selector("label", :text => "Renamed field")
|
|
258
|
+
should have_selector("label", :text => "Division")
|
|
259
|
+
should have_selector("label", :text => "Name")
|
|
260
|
+
end
|
|
261
|
+
|
|
262
|
+
it "should be renameable by type" do
|
|
263
|
+
RailsAdmin.config Team do
|
|
264
|
+
edit do
|
|
265
|
+
fields_of_type :string do
|
|
266
|
+
label { "#{label} (STRING)" }
|
|
267
|
+
end
|
|
268
|
+
end
|
|
269
|
+
end
|
|
270
|
+
visit new_path(:model_name => "team")
|
|
271
|
+
should have_selector("label", :text => "Division")
|
|
272
|
+
should have_selector("label", :text => "Name (STRING)")
|
|
273
|
+
should have_selector("label", :text => "Logo url (STRING)")
|
|
274
|
+
should have_selector("label", :text => "Manager (STRING)")
|
|
275
|
+
should have_selector("label", :text => "Ballpark (STRING)")
|
|
276
|
+
should have_selector("label", :text => "Mascot (STRING)")
|
|
277
|
+
should have_selector("label", :text => "Founded")
|
|
278
|
+
should have_selector("label", :text => "Wins")
|
|
279
|
+
should have_selector("label", :text => "Losses")
|
|
280
|
+
should have_selector("label", :text => "Win percentage")
|
|
281
|
+
should have_selector("label", :text => "Revenue")
|
|
282
|
+
should have_selector("label", :text => "Players")
|
|
283
|
+
should have_selector("label", :text => "Fans")
|
|
284
|
+
end
|
|
285
|
+
|
|
286
|
+
it "should be globally renameable by type" do
|
|
287
|
+
RailsAdmin::Config.models do
|
|
288
|
+
edit do
|
|
289
|
+
fields_of_type :string do
|
|
290
|
+
label { "#{label} (STRING)" }
|
|
291
|
+
end
|
|
292
|
+
end
|
|
293
|
+
end
|
|
294
|
+
visit new_path(:model_name => "team")
|
|
295
|
+
should have_selector("label", :text => "Division")
|
|
296
|
+
should have_selector("label", :text => "Name (STRING)")
|
|
297
|
+
should have_selector("label", :text => "Logo url (STRING)")
|
|
298
|
+
should have_selector("label", :text => "Manager (STRING)")
|
|
299
|
+
should have_selector("label", :text => "Ballpark (STRING)")
|
|
300
|
+
should have_selector("label", :text => "Mascot (STRING)")
|
|
301
|
+
should have_selector("label", :text => "Founded")
|
|
302
|
+
should have_selector("label", :text => "Wins")
|
|
303
|
+
should have_selector("label", :text => "Losses")
|
|
304
|
+
should have_selector("label", :text => "Win percentage")
|
|
305
|
+
should have_selector("label", :text => "Revenue")
|
|
306
|
+
should have_selector("label", :text => "Players")
|
|
307
|
+
should have_selector("label", :text => "Fans")
|
|
308
|
+
end
|
|
309
|
+
|
|
310
|
+
it "should be flaggable as read only and be configurable with formatted_value" do
|
|
311
|
+
RailsAdmin.config Team do
|
|
312
|
+
edit do
|
|
313
|
+
field :name do
|
|
314
|
+
read_only true
|
|
315
|
+
formatted_value do
|
|
316
|
+
"I'm outputed in the form"
|
|
317
|
+
end
|
|
318
|
+
end
|
|
319
|
+
end
|
|
320
|
+
end
|
|
321
|
+
visit new_path(:model_name => "team")
|
|
322
|
+
should have_content("I'm outputed in the form")
|
|
323
|
+
end
|
|
324
|
+
|
|
325
|
+
it "should be hideable" do
|
|
326
|
+
RailsAdmin.config Team do
|
|
327
|
+
edit do
|
|
328
|
+
field :manager do
|
|
329
|
+
hide
|
|
330
|
+
end
|
|
331
|
+
field :division
|
|
332
|
+
field :name
|
|
333
|
+
end
|
|
334
|
+
end
|
|
335
|
+
visit new_path(:model_name => "team")
|
|
336
|
+
should have_no_selector("#team_manager")
|
|
337
|
+
should have_selector("#team_division_id")
|
|
338
|
+
should have_selector("#team_name")
|
|
339
|
+
end
|
|
340
|
+
|
|
341
|
+
it "should be hideable by type" do
|
|
342
|
+
RailsAdmin.config Team do
|
|
343
|
+
edit do
|
|
344
|
+
fields_of_type :string do
|
|
345
|
+
hide
|
|
346
|
+
end
|
|
347
|
+
end
|
|
348
|
+
end
|
|
349
|
+
visit new_path(:model_name => "team")
|
|
350
|
+
should have_selector("label", :text => "Division")
|
|
351
|
+
should have_no_selector("label", :text => "Name")
|
|
352
|
+
should have_no_selector("label", :text => "Logo url")
|
|
353
|
+
should have_no_selector("label", :text => "Manager")
|
|
354
|
+
should have_no_selector("label", :text => "Ballpark")
|
|
355
|
+
should have_no_selector("label", :text => "Mascot")
|
|
356
|
+
should have_selector("label", :text => "Founded")
|
|
357
|
+
should have_selector("label", :text => "Wins")
|
|
358
|
+
should have_selector("label", :text => "Losses")
|
|
359
|
+
should have_selector("label", :text => "Win percentage")
|
|
360
|
+
should have_selector("label", :text => "Revenue")
|
|
361
|
+
should have_selector("label", :text => "Players")
|
|
362
|
+
should have_selector("label", :text => "Fans")
|
|
363
|
+
end
|
|
364
|
+
|
|
365
|
+
it "should be globally hideable by type" do
|
|
366
|
+
RailsAdmin::Config.models do
|
|
367
|
+
edit do
|
|
368
|
+
fields_of_type :string do
|
|
369
|
+
hide
|
|
370
|
+
end
|
|
371
|
+
end
|
|
372
|
+
end
|
|
373
|
+
visit new_path(:model_name => "team")
|
|
374
|
+
should have_selector("label", :text => "Division")
|
|
375
|
+
should have_no_selector("label", :text => "Name")
|
|
376
|
+
should have_no_selector("label", :text => "Logo url")
|
|
377
|
+
should have_no_selector("label", :text => "Manager")
|
|
378
|
+
should have_no_selector("label", :text => "Ballpark")
|
|
379
|
+
should have_no_selector("label", :text => "Mascot")
|
|
380
|
+
should have_selector("label", :text => "Founded")
|
|
381
|
+
should have_selector("label", :text => "Wins")
|
|
382
|
+
should have_selector("label", :text => "Losses")
|
|
383
|
+
should have_selector("label", :text => "Win percentage")
|
|
384
|
+
should have_selector("label", :text => "Revenue")
|
|
385
|
+
should have_selector("label", :text => "Players")
|
|
386
|
+
should have_selector("label", :text => "Fans")
|
|
387
|
+
end
|
|
388
|
+
|
|
389
|
+
it "should have option to customize the help text" do
|
|
390
|
+
RailsAdmin.config Team do
|
|
391
|
+
edit do
|
|
392
|
+
field :manager do
|
|
393
|
+
help "#{help} Additional help text for manager field."
|
|
394
|
+
end
|
|
395
|
+
field :division
|
|
396
|
+
field :name
|
|
397
|
+
end
|
|
398
|
+
end
|
|
399
|
+
visit new_path(:model_name => "team")
|
|
400
|
+
find("#team_manager_field .help-block").should have_content("Required. 100 characters or fewer. Additional help text for manager field.")
|
|
401
|
+
find("#team_division_id_field .help-block").should have_content("Required")
|
|
402
|
+
find("#team_name_field .help-block").should have_content("Optional. 50 characters or fewer.")
|
|
403
|
+
end
|
|
404
|
+
|
|
405
|
+
it "should have option to override required status" do
|
|
406
|
+
RailsAdmin.config Team do
|
|
407
|
+
edit do
|
|
408
|
+
field :manager do
|
|
409
|
+
optional true
|
|
410
|
+
end
|
|
411
|
+
field :division do
|
|
412
|
+
optional true
|
|
413
|
+
end
|
|
414
|
+
field :name do
|
|
415
|
+
required true
|
|
416
|
+
end
|
|
417
|
+
end
|
|
418
|
+
end
|
|
419
|
+
visit new_path(:model_name => "team")
|
|
420
|
+
find("#team_manager_field .help-block").should have_content("Optional. 100 characters or fewer.")
|
|
421
|
+
find("#team_division_id_field .help-block").should have_content("Optional")
|
|
422
|
+
find("#team_name_field .help-block").should have_content("Required. 50 characters or fewer.")
|
|
423
|
+
end
|
|
424
|
+
end
|
|
425
|
+
|
|
426
|
+
describe "input format of" do
|
|
427
|
+
|
|
428
|
+
before(:each) do
|
|
429
|
+
RailsAdmin::Config.excluded_models = [RelTest]
|
|
430
|
+
@time = ::Time.now.getutc
|
|
431
|
+
end
|
|
432
|
+
|
|
433
|
+
describe "a datetime field" do
|
|
434
|
+
|
|
435
|
+
it "should default to %B %d, %Y %H:%M" do
|
|
436
|
+
visit new_path(:model_name => "field_test")
|
|
437
|
+
fill_in "field_test[datetime_field]", :with => @time.strftime("%B %d, %Y %H:%M")
|
|
438
|
+
click_button "Save"
|
|
439
|
+
@record = RailsAdmin::AbstractModel.new("FieldTest").first
|
|
440
|
+
@record.datetime_field.strftime("%Y-%m-%d %H:%M").should eql(@time.strftime("%Y-%m-%d %H:%M"))
|
|
441
|
+
end
|
|
442
|
+
|
|
443
|
+
it "should have a simple customization option" do
|
|
444
|
+
RailsAdmin.config FieldTest do
|
|
445
|
+
edit do
|
|
446
|
+
field :datetime_field do
|
|
447
|
+
date_format :default
|
|
448
|
+
end
|
|
449
|
+
end
|
|
450
|
+
end
|
|
451
|
+
visit new_path(:model_name => "field_test")
|
|
452
|
+
fill_in "field_test[datetime_field]", :with => @time.strftime("%a, %d %b %Y %H:%M:%S")
|
|
453
|
+
click_button "Save"
|
|
454
|
+
@record = RailsAdmin::AbstractModel.new("FieldTest").first
|
|
455
|
+
@record.datetime_field.should eql(::DateTime.parse(@time.to_s))
|
|
456
|
+
end
|
|
457
|
+
|
|
458
|
+
it "should have a customization option" do
|
|
459
|
+
RailsAdmin.config FieldTest do
|
|
460
|
+
list do
|
|
461
|
+
field :datetime_field do
|
|
462
|
+
strftime_format "%Y-%m-%d %H:%M:%S"
|
|
463
|
+
end
|
|
464
|
+
end
|
|
465
|
+
end
|
|
466
|
+
visit new_path(:model_name => "field_test")
|
|
467
|
+
fill_in "field_test[datetime_field]", :with => @time.strftime("%Y-%m-%d %H:%M:%S")
|
|
468
|
+
click_button "Save"
|
|
469
|
+
@record = RailsAdmin::AbstractModel.new("FieldTest").first
|
|
470
|
+
@record.datetime_field.should eql(::DateTime.parse(@time.to_s))
|
|
471
|
+
end
|
|
472
|
+
end
|
|
473
|
+
|
|
474
|
+
describe "a timestamp field" do
|
|
475
|
+
|
|
476
|
+
it "should default to %B %d, %Y %H:%M" do
|
|
477
|
+
visit new_path(:model_name => "field_test")
|
|
478
|
+
fill_in "field_test[timestamp_field]", :with => @time.strftime("%B %d, %Y %H:%M")
|
|
479
|
+
click_button "Save"
|
|
480
|
+
@record = RailsAdmin::AbstractModel.new("FieldTest").first
|
|
481
|
+
@record.timestamp_field.strftime("%Y-%m-%d %H:%M").should eql(@time.strftime("%Y-%m-%d %H:%M"))
|
|
482
|
+
end
|
|
483
|
+
|
|
484
|
+
it "should have a simple customization option" do
|
|
485
|
+
RailsAdmin.config FieldTest do
|
|
486
|
+
edit do
|
|
487
|
+
field :timestamp_field do
|
|
488
|
+
date_format :default
|
|
489
|
+
end
|
|
490
|
+
end
|
|
491
|
+
end
|
|
492
|
+
visit new_path(:model_name => "field_test")
|
|
493
|
+
fill_in "field_test[timestamp_field]", :with => @time.strftime("%a, %d %b %Y %H:%M:%S")
|
|
494
|
+
click_button "Save"
|
|
495
|
+
@record = RailsAdmin::AbstractModel.new("FieldTest").first
|
|
496
|
+
@record.timestamp_field.should eql(::DateTime.parse(@time.to_s))
|
|
497
|
+
end
|
|
498
|
+
|
|
499
|
+
it "should have a customization option" do
|
|
500
|
+
RailsAdmin.config FieldTest do
|
|
501
|
+
edit do
|
|
502
|
+
field :timestamp_field do
|
|
503
|
+
strftime_format "%Y-%m-%d %H:%M:%S"
|
|
504
|
+
end
|
|
505
|
+
end
|
|
506
|
+
end
|
|
507
|
+
visit new_path(:model_name => "field_test")
|
|
508
|
+
fill_in "field_test[timestamp_field]", :with => @time.strftime("%Y-%m-%d %H:%M:%S")
|
|
509
|
+
click_button "Save"
|
|
510
|
+
@record = RailsAdmin::AbstractModel.new("FieldTest").first
|
|
511
|
+
@record.timestamp_field.should eql(::DateTime.parse(@time.to_s))
|
|
512
|
+
end
|
|
513
|
+
end
|
|
514
|
+
|
|
515
|
+
describe " a field with 'format' as a name (Kernel function)" do
|
|
516
|
+
|
|
517
|
+
it "should be updatable without any error" do
|
|
518
|
+
RailsAdmin.config FieldTest do
|
|
519
|
+
edit do
|
|
520
|
+
field :format
|
|
521
|
+
end
|
|
522
|
+
end
|
|
523
|
+
visit new_path(:model_name => "field_test")
|
|
524
|
+
fill_in "field_test[format]", :with => "test for format"
|
|
525
|
+
click_button "Save"
|
|
526
|
+
@record = RailsAdmin::AbstractModel.new("FieldTest").first
|
|
527
|
+
@record.format.should eql("test for format")
|
|
528
|
+
end
|
|
529
|
+
end
|
|
530
|
+
|
|
531
|
+
|
|
532
|
+
describe "a time field" do
|
|
533
|
+
|
|
534
|
+
it "should default to %H:%M" do
|
|
535
|
+
visit new_path(:model_name => "field_test")
|
|
536
|
+
fill_in "field_test[time_field]", :with => @time.strftime("%H:%M")
|
|
537
|
+
click_button "Save"
|
|
538
|
+
@record = RailsAdmin::AbstractModel.new("FieldTest").first
|
|
539
|
+
@record.time_field.strftime("%H:%M").should eql(@time.strftime("%H:%M"))
|
|
540
|
+
end
|
|
541
|
+
|
|
542
|
+
it "should have a customization option" do
|
|
543
|
+
RailsAdmin.config FieldTest do
|
|
544
|
+
edit do
|
|
545
|
+
field :time_field do
|
|
546
|
+
strftime_format "%I:%M %p"
|
|
547
|
+
end
|
|
548
|
+
end
|
|
549
|
+
end
|
|
550
|
+
visit new_path(:model_name => "field_test")
|
|
551
|
+
fill_in "field_test[time_field]", :with => @time.strftime("%I:%M %p")
|
|
552
|
+
click_button "Save"
|
|
553
|
+
@record = RailsAdmin::AbstractModel.new("FieldTest").first
|
|
554
|
+
@record.time_field.strftime("%H:%M").should eql(@time.strftime("%H:%M"))
|
|
555
|
+
end
|
|
556
|
+
end
|
|
557
|
+
|
|
558
|
+
describe "a date field" do
|
|
559
|
+
|
|
560
|
+
it "should default to %B %d, %Y" do
|
|
561
|
+
visit new_path(:model_name => "field_test")
|
|
562
|
+
fill_in "field_test[date_field]", :with => @time.strftime("%B %d, %Y")
|
|
563
|
+
click_button "Save"
|
|
564
|
+
@record = RailsAdmin::AbstractModel.new("FieldTest").first
|
|
565
|
+
@record.date_field.should eql(::Date.parse(@time.to_s))
|
|
566
|
+
end
|
|
567
|
+
|
|
568
|
+
it "should cover a timezone lag even if in UTC+n:00 timezone." do
|
|
569
|
+
Time.zone = 'Tokyo' # +09:00
|
|
570
|
+
|
|
571
|
+
visit new_path(:model_name => "field_test")
|
|
572
|
+
fill_in "field_test[date_field]", :with => @time.strftime("%B %d, %Y")
|
|
573
|
+
click_button "Save"
|
|
574
|
+
@record = RailsAdmin::AbstractModel.new("FieldTest").first
|
|
575
|
+
@record.date_field.should eql(::Date.parse(@time.to_s))
|
|
576
|
+
end
|
|
577
|
+
|
|
578
|
+
it "should have a simple customization option" do
|
|
579
|
+
RailsAdmin.config FieldTest do
|
|
580
|
+
edit do
|
|
581
|
+
field :date_field do
|
|
582
|
+
date_format :default
|
|
583
|
+
end
|
|
584
|
+
end
|
|
585
|
+
end
|
|
586
|
+
visit new_path(:model_name => "field_test")
|
|
587
|
+
fill_in "field_test[date_field]", :with => @time.strftime("%Y-%m-%d")
|
|
588
|
+
click_button "Save"
|
|
589
|
+
@record = RailsAdmin::AbstractModel.new("FieldTest").first
|
|
590
|
+
@record.date_field.should eql(::Date.parse(@time.to_s))
|
|
591
|
+
end
|
|
592
|
+
|
|
593
|
+
it "should have a customization option" do
|
|
594
|
+
RailsAdmin.config FieldTest do
|
|
595
|
+
edit do
|
|
596
|
+
field :date_field do
|
|
597
|
+
strftime_format "%Y-%m-%d"
|
|
598
|
+
end
|
|
599
|
+
end
|
|
600
|
+
end
|
|
601
|
+
visit new_path(:model_name => "field_test")
|
|
602
|
+
fill_in "field_test[date_field]", :with => @time.strftime("%Y-%m-%d")
|
|
603
|
+
click_button "Save"
|
|
604
|
+
@record = RailsAdmin::AbstractModel.new("FieldTest").first
|
|
605
|
+
@record.date_field.should eql(::Date.parse(@time.to_s))
|
|
606
|
+
end
|
|
607
|
+
end
|
|
608
|
+
end
|
|
609
|
+
|
|
610
|
+
describe "fields which are nullable and have AR validations" do
|
|
611
|
+
|
|
612
|
+
it "should be required" do
|
|
613
|
+
# draft.notes is nullable and has no validation
|
|
614
|
+
field = RailsAdmin::config("Draft").edit.fields.find{|f| f.name == :notes}
|
|
615
|
+
field.properties[:nullable?].should be true
|
|
616
|
+
field.required?.should be false
|
|
617
|
+
|
|
618
|
+
# draft.date is nullable in the schema but has an AR
|
|
619
|
+
# validates_presence_of validation that makes it required
|
|
620
|
+
field = RailsAdmin::config("Draft").edit.fields.find{|f| f.name == :date}
|
|
621
|
+
field.properties[:nullable?].should be true
|
|
622
|
+
field.required?.should be true
|
|
623
|
+
|
|
624
|
+
# draft.round is nullable in the schema but has an AR
|
|
625
|
+
# validates_numericality_of validation that makes it required
|
|
626
|
+
field = RailsAdmin::config("Draft").edit.fields.find{|f| f.name == :round}
|
|
627
|
+
field.properties[:nullable?].should be true
|
|
628
|
+
field.required?.should be true
|
|
629
|
+
|
|
630
|
+
# team.revenue is nullable in the schema but has an AR
|
|
631
|
+
# validates_numericality_of validation that allows nil
|
|
632
|
+
field = RailsAdmin::config("Team").edit.fields.find{|f| f.name == :revenue}
|
|
633
|
+
field.properties[:nullable?].should be true
|
|
634
|
+
field.required?.should be false
|
|
635
|
+
end
|
|
636
|
+
end
|
|
637
|
+
|
|
638
|
+
describe "CKEditor Support" do
|
|
639
|
+
|
|
640
|
+
it "should start with CKEditor disabled" do
|
|
641
|
+
field = RailsAdmin::config("Draft").edit.fields.find{|f| f.name == :notes}
|
|
642
|
+
field.ckeditor.should be false
|
|
643
|
+
end
|
|
644
|
+
|
|
645
|
+
it "should add Javascript to enable CKEditor" do
|
|
646
|
+
RailsAdmin.config Draft do
|
|
647
|
+
edit do
|
|
648
|
+
field :notes do
|
|
649
|
+
ckeditor true
|
|
650
|
+
end
|
|
651
|
+
end
|
|
652
|
+
end
|
|
653
|
+
visit new_path(:model_name => "draft")
|
|
654
|
+
should have_selector("script", :text => /CKEDITOR\.replace.*?draft_notes/)
|
|
655
|
+
end
|
|
656
|
+
end
|
|
657
|
+
|
|
658
|
+
describe "Paperclip Support" do
|
|
659
|
+
|
|
660
|
+
it "should show a file upload field" do
|
|
661
|
+
RailsAdmin.config User do
|
|
662
|
+
edit do
|
|
663
|
+
field :avatar
|
|
664
|
+
end
|
|
665
|
+
end
|
|
666
|
+
visit new_path(:model_name => "user")
|
|
667
|
+
should have_selector("input#user_avatar")
|
|
668
|
+
end
|
|
669
|
+
end
|
|
670
|
+
|
|
671
|
+
describe "Enum field support" do
|
|
672
|
+
it "should auto-detect enumeration when object responds to '\#{method}_enum'" do
|
|
673
|
+
class Team
|
|
674
|
+
def color_enum
|
|
675
|
+
["blue", "green", "red"]
|
|
676
|
+
end
|
|
677
|
+
end
|
|
678
|
+
RailsAdmin.config Team do
|
|
679
|
+
edit do
|
|
680
|
+
field :color
|
|
681
|
+
end
|
|
682
|
+
end
|
|
683
|
+
visit new_path(:model_name => "team")
|
|
684
|
+
should have_selector("select.enum")
|
|
685
|
+
should have_content("green")
|
|
686
|
+
Team.send(:remove_method, :color_enum) # Reset
|
|
687
|
+
end
|
|
688
|
+
|
|
689
|
+
it "should allow configuration of the enum method" do
|
|
690
|
+
class Team
|
|
691
|
+
def color_list
|
|
692
|
+
["blue", "green", "red"]
|
|
693
|
+
end
|
|
694
|
+
end
|
|
695
|
+
RailsAdmin.config Team do
|
|
696
|
+
edit do
|
|
697
|
+
field :color, :enum do
|
|
698
|
+
enum_method :color_list
|
|
699
|
+
end
|
|
700
|
+
end
|
|
701
|
+
end
|
|
702
|
+
visit new_path(:model_name => "team")
|
|
703
|
+
should have_selector("select.enum")
|
|
704
|
+
should have_content("green")
|
|
705
|
+
Team.send(:remove_method, :color_list) # Reset
|
|
706
|
+
end
|
|
707
|
+
|
|
708
|
+
it "should allow direct listing of enumeration options and override enum method" do
|
|
709
|
+
class Team
|
|
710
|
+
def color_list
|
|
711
|
+
["blue", "green", "red"]
|
|
712
|
+
end
|
|
713
|
+
end
|
|
714
|
+
RailsAdmin.config Team do
|
|
715
|
+
edit do
|
|
716
|
+
field :color, :enum do
|
|
717
|
+
enum_method :color_list
|
|
718
|
+
enum do
|
|
719
|
+
["yellow", "black"]
|
|
720
|
+
end
|
|
721
|
+
end
|
|
722
|
+
end
|
|
723
|
+
end
|
|
724
|
+
visit new_path(:model_name => "team")
|
|
725
|
+
should have_selector("select.enum")
|
|
726
|
+
should have_no_content("green")
|
|
727
|
+
should have_content("yellow")
|
|
728
|
+
Team.send(:remove_method, :color_list) # Reset
|
|
729
|
+
end
|
|
730
|
+
|
|
731
|
+
end
|
|
732
|
+
|
|
733
|
+
describe "ColorPicker Support" do
|
|
734
|
+
it "should show input with class color" do
|
|
735
|
+
RailsAdmin.config Team do
|
|
736
|
+
edit do
|
|
737
|
+
field :color, :color
|
|
738
|
+
end
|
|
739
|
+
end
|
|
740
|
+
visit new_path(:model_name => "team")
|
|
741
|
+
should have_selector("input.color")
|
|
742
|
+
end
|
|
743
|
+
end
|
|
744
|
+
end
|