rails_admin 0.6.0 → 0.6.1
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of rails_admin might be problematic. Click here for more details.
- checksums.yaml +7 -0
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +0 -0
- data/Gemfile +22 -10
- data/README.md +32 -92
- data/Rakefile +13 -2
- data/app/assets/stylesheets/rails_admin/aristo/jquery-ui-1.8.7.custom.scss +3 -3
- data/app/assets/stylesheets/rails_admin/base/font-awesome-4-compability.scss +153 -58
- data/app/controllers/rails_admin/application_controller.rb +12 -12
- data/app/controllers/rails_admin/main_controller.rb +30 -35
- data/app/helpers/rails_admin/application_helper.rb +37 -40
- data/app/helpers/rails_admin/form_builder.rb +26 -25
- data/app/helpers/rails_admin/main_helper.rb +10 -9
- data/app/views/rails_admin/main/_dashboard_history.html.haml +5 -4
- data/app/views/rails_admin/main/index.html.haml +7 -0
- data/config/initializers/active_record_extensions.rb +3 -3
- data/config/initializers/haml.rb +1 -1
- data/config/routes.rb +7 -7
- data/lib/generators/rails_admin/install_generator.rb +5 -84
- data/lib/generators/rails_admin/templates/initializer.erb +29 -95
- data/lib/generators/rails_admin/utils.rb +3 -14
- data/lib/rails_admin.rb +1 -1
- data/lib/rails_admin/abstract_model.rb +30 -28
- data/lib/rails_admin/adapters/active_record.rb +36 -36
- data/lib/rails_admin/adapters/active_record/abstract_object.rb +2 -2
- data/lib/rails_admin/adapters/mongoid.rb +102 -108
- data/lib/rails_admin/adapters/mongoid/abstract_object.rb +1 -1
- data/lib/rails_admin/adapters/mongoid/extension.rb +5 -5
- data/lib/rails_admin/bootstrap-sass.rb +7 -8
- data/lib/rails_admin/bootstrap-sass/compass_functions.rb +2 -1
- data/lib/rails_admin/config.rb +24 -29
- data/lib/rails_admin/config/actions.rb +12 -15
- data/lib/rails_admin/config/actions/base.rb +8 -8
- data/lib/rails_admin/config/actions/bulk_delete.rb +3 -3
- data/lib/rails_admin/config/actions/dashboard.rb +5 -5
- data/lib/rails_admin/config/actions/delete.rb +4 -4
- data/lib/rails_admin/config/actions/edit.rb +3 -3
- data/lib/rails_admin/config/actions/export.rb +1 -1
- data/lib/rails_admin/config/actions/history_index.rb +1 -1
- data/lib/rails_admin/config/actions/history_show.rb +1 -1
- data/lib/rails_admin/config/actions/index.rb +20 -11
- data/lib/rails_admin/config/actions/new.rb +3 -3
- data/lib/rails_admin/config/actions/show.rb +2 -2
- data/lib/rails_admin/config/actions/show_in_app.rb +1 -1
- data/lib/rails_admin/config/configurable.rb +27 -27
- data/lib/rails_admin/config/fields.rb +7 -7
- data/lib/rails_admin/config/fields/association.rb +6 -7
- data/lib/rails_admin/config/fields/base.rb +32 -30
- data/lib/rails_admin/config/fields/factories/association.rb +9 -10
- data/lib/rails_admin/config/fields/factories/carrierwave.rb +3 -9
- data/lib/rails_admin/config/fields/factories/devise.rb +2 -4
- data/lib/rails_admin/config/fields/factories/dragonfly.rb +3 -5
- data/lib/rails_admin/config/fields/factories/enum.rb +1 -1
- data/lib/rails_admin/config/fields/factories/paperclip.rb +3 -3
- data/lib/rails_admin/config/fields/group.rb +6 -8
- data/lib/rails_admin/config/fields/types.rb +2 -2
- data/lib/rails_admin/config/fields/types/belongs_to_association.rb +4 -4
- data/lib/rails_admin/config/fields/types/boolean.rb +2 -2
- data/lib/rails_admin/config/fields/types/bson_object_id.rb +7 -12
- data/lib/rails_admin/config/fields/types/carrierwave.rb +1 -1
- data/lib/rails_admin/config/fields/types/ck_editor.rb +3 -3
- data/lib/rails_admin/config/fields/types/code_mirror.rb +9 -9
- data/lib/rails_admin/config/fields/types/color.rb +2 -2
- data/lib/rails_admin/config/fields/types/date.rb +2 -2
- data/lib/rails_admin/config/fields/types/datetime.rb +52 -54
- data/lib/rails_admin/config/fields/types/decimal.rb +1 -1
- data/lib/rails_admin/config/fields/types/dragonfly.rb +2 -2
- data/lib/rails_admin/config/fields/types/enum.rb +3 -3
- data/lib/rails_admin/config/fields/types/file_upload.rb +5 -5
- data/lib/rails_admin/config/fields/types/float.rb +1 -1
- data/lib/rails_admin/config/fields/types/has_and_belongs_to_many_association.rb +1 -1
- data/lib/rails_admin/config/fields/types/has_many_association.rb +1 -1
- data/lib/rails_admin/config/fields/types/has_one_association.rb +3 -4
- data/lib/rails_admin/config/fields/types/hidden.rb +1 -1
- data/lib/rails_admin/config/fields/types/integer.rb +1 -1
- data/lib/rails_admin/config/fields/types/paperclip.rb +2 -2
- data/lib/rails_admin/config/fields/types/password.rb +4 -4
- data/lib/rails_admin/config/fields/types/polymorphic_association.rb +8 -11
- data/lib/rails_admin/config/fields/types/serialized.rb +1 -1
- data/lib/rails_admin/config/fields/types/string.rb +5 -6
- data/lib/rails_admin/config/fields/types/text.rb +6 -6
- data/lib/rails_admin/config/fields/types/time.rb +4 -4
- data/lib/rails_admin/config/fields/types/timestamp.rb +1 -1
- data/lib/rails_admin/config/fields/types/wysihtml5.rb +1 -2
- data/lib/rails_admin/config/has_fields.rb +24 -24
- data/lib/rails_admin/config/has_groups.rb +5 -3
- data/lib/rails_admin/config/hideable.rb +2 -2
- data/lib/rails_admin/config/lazy_model.rb +1 -1
- data/lib/rails_admin/config/model.rb +6 -7
- data/lib/rails_admin/config/proxyable/proxy.rb +4 -6
- data/lib/rails_admin/config/sections.rb +1 -3
- data/lib/rails_admin/config/sections/base.rb +1 -1
- data/lib/rails_admin/config/sections/list.rb +4 -0
- data/lib/rails_admin/engine.rb +3 -3
- data/lib/rails_admin/extension.rb +3 -3
- data/lib/rails_admin/extensions/cancan.rb +3 -3
- data/lib/rails_admin/extensions/cancan/authorization_adapter.rb +1 -1
- data/lib/rails_admin/extensions/history.rb +3 -3
- data/lib/rails_admin/extensions/history/auditing_adapter.rb +1 -1
- data/lib/rails_admin/extensions/history/history.rb +12 -11
- data/lib/rails_admin/extensions/paper_trail.rb +3 -3
- data/lib/rails_admin/extensions/paper_trail/auditing_adapter.rb +30 -19
- data/lib/rails_admin/i18n_support.rb +11 -15
- data/lib/rails_admin/support/core_extensions.rb +4 -5
- data/lib/rails_admin/support/csv_converter.rb +21 -23
- data/lib/rails_admin/version.rb +4 -7
- data/lib/rails_admin/version.rbc +582 -0
- data/lib/tasks/rails_admin.rake +0 -12
- data/spec/controllers/rails_admin/application_controller_spec.rb +12 -12
- data/spec/controllers/rails_admin/main_controller_spec.rb +127 -131
- data/spec/dummy_app/Gemfile +12 -6
- data/spec/dummy_app/Gemfile.lock +276 -47
- data/spec/dummy_app/app/active_record/abstract.rb +0 -2
- data/spec/dummy_app/app/active_record/another_field_test.rb +1 -1
- data/spec/dummy_app/app/active_record/ball.rb +2 -2
- data/spec/dummy_app/app/active_record/carrierwave_uploader.rb +1 -3
- data/spec/dummy_app/app/active_record/category.rb +1 -1
- data/spec/dummy_app/app/active_record/cms/basic_page.rb +1 -1
- data/spec/dummy_app/app/active_record/comment.rb +1 -1
- data/spec/dummy_app/app/active_record/comment/confirmed.rb +1 -1
- data/spec/dummy_app/app/active_record/division.rb +2 -2
- data/spec/dummy_app/app/active_record/draft.rb +5 -5
- data/spec/dummy_app/app/active_record/field_test.rb +6 -6
- data/spec/dummy_app/app/active_record/image.rb +1 -1
- data/spec/dummy_app/app/active_record/league.rb +3 -3
- data/spec/dummy_app/app/active_record/nested_field_test.rb +4 -4
- data/spec/dummy_app/app/active_record/player.rb +7 -7
- data/spec/dummy_app/app/active_record/team.rb +12 -9
- data/spec/dummy_app/app/active_record/user.rb +2 -2
- data/spec/dummy_app/app/mongoid/another_field_test.rb +1 -1
- data/spec/dummy_app/app/mongoid/ball.rb +3 -3
- data/spec/dummy_app/app/mongoid/carrierwave_uploader.rb +1 -3
- data/spec/dummy_app/app/mongoid/category.rb +1 -1
- data/spec/dummy_app/app/mongoid/cms/basic_page.rb +3 -3
- data/spec/dummy_app/app/mongoid/comment.rb +2 -2
- data/spec/dummy_app/app/mongoid/comment/confirmed.rb +1 -1
- data/spec/dummy_app/app/mongoid/division.rb +2 -2
- data/spec/dummy_app/app/mongoid/draft.rb +11 -11
- data/spec/dummy_app/app/mongoid/embed.rb +1 -1
- data/spec/dummy_app/app/mongoid/fan.rb +1 -1
- data/spec/dummy_app/app/mongoid/field_test.rb +35 -35
- data/spec/dummy_app/app/mongoid/image.rb +1 -1
- data/spec/dummy_app/app/mongoid/league.rb +3 -3
- data/spec/dummy_app/app/mongoid/nested_field_test.rb +5 -5
- data/spec/dummy_app/app/mongoid/player.rb +17 -17
- data/spec/dummy_app/app/mongoid/team.rb +28 -24
- data/spec/dummy_app/app/mongoid/user.rb +13 -13
- data/spec/dummy_app/config/application.rb +5 -5
- data/spec/dummy_app/config/boot.rb +1 -3
- data/spec/dummy_app/config/environments/test.rb +1 -1
- data/spec/dummy_app/config/initializers/devise.rb +2 -2
- data/spec/dummy_app/config/initializers/session_patch.rb +1 -2
- data/spec/dummy_app/config/initializers/session_store.rb +1 -1
- data/spec/dummy_app/config/initializers/wrap_parameters.rb +1 -1
- data/spec/dummy_app/config/routes.rb +2 -2
- data/spec/dummy_app/db/development.sqlite3 +0 -0
- data/spec/dummy_app/db/migrate/00000000000001_create_divisions_migration.rb +1 -1
- data/spec/dummy_app/db/migrate/00000000000002_create_drafts_migration.rb +1 -1
- data/spec/dummy_app/db/migrate/00000000000003_create_leagues_migration.rb +1 -1
- data/spec/dummy_app/db/migrate/00000000000004_create_players_migration.rb +5 -5
- data/spec/dummy_app/db/migrate/00000000000005_create_teams_migration.rb +5 -5
- data/spec/dummy_app/db/migrate/00000000000006_devise_create_users.rb +5 -5
- data/spec/dummy_app/db/migrate/00000000000007_create_histories_table.rb +7 -7
- data/spec/dummy_app/db/migrate/00000000000008_create_fans_migration.rb +1 -1
- data/spec/dummy_app/db/migrate/00000000000009_create_fans_teams_migration.rb +1 -1
- data/spec/dummy_app/db/migrate/00000000000010_add_revenue_to_team_migration.rb +1 -1
- data/spec/dummy_app/db/migrate/00000000000011_add_suspended_to_player_migration.rb +1 -1
- data/spec/dummy_app/db/migrate/00000000000012_add_avatar_columns_to_user.rb +0 -1
- data/spec/dummy_app/db/migrate/20101223222233_create_rel_tests.rb +1 -1
- data/spec/dummy_app/db/migrate/20110714095433_create_balls.rb +1 -1
- data/spec/dummy_app/db/migrate/20110901131551_change_division_primary_key.rb +3 -3
- data/spec/dummy_app/db/migrate/20110901150912_set_primary_key_not_null_for_divisions.rb +4 -5
- data/spec/dummy_app/db/migrate/20120319041705_drop_rel_tests.rb +1 -1
- data/spec/dummy_app/db/schema.rb +197 -0
- data/spec/dummy_app/db/seeds.rb +9 -9
- data/spec/dummy_app/db/test.sqlite3 +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sass/{46504e29e25493e203f6e081863c6f722ba34fce → 0e28199903adc18ba5ed7000a3cfbe6be324f02c}/mixins.scssc +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sass/{46504e29e25493e203f6e081863c6f722ba34fce → 0e28199903adc18ba5ed7000a3cfbe6be324f02c}/theming.scssc +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sass/{46504e29e25493e203f6e081863c6f722ba34fce → 0e28199903adc18ba5ed7000a3cfbe6be324f02c}/variables.scssc +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sass/66bb15d356a3ae9531c123a31be7776c5874ac21/font-awesome.css.erbc +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sass/7a85589b70ac6319b07ac05552a98bba4b834a39/font-awesome-4-compability.scssc +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sass/{245c4be20f01db9121b0992275b77e082f23d7df → 7a85589b70ac6319b07ac05552a98bba4b834a39}/mixins.scssc +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sass/{245c4be20f01db9121b0992275b77e082f23d7df → 7a85589b70ac6319b07ac05552a98bba4b834a39}/theming.scssc +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sass/{245c4be20f01db9121b0992275b77e082f23d7df → 7a85589b70ac6319b07ac05552a98bba4b834a39}/variables.scssc +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sass/{ebde8a6cd2923d8c583ca746dd952b4fe080c2a1 → 92899d6fb50bc282d329302d61a5c00fa959d762}/jquery-ui-1.8.7.custom.scssc +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sass/{c7aba53479ebd90acc5f6ba8fb7463fa43b1ae1c → 977fdcd1d57ae400c0a80cee764210478c5780f6}/jquery.colorpicker.scssc +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sass/{c7aba53479ebd90acc5f6ba8fb7463fa43b1ae1c → 977fdcd1d57ae400c0a80cee764210478c5780f6}/jquery.ui.timepicker.scssc +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sass/{c7aba53479ebd90acc5f6ba8fb7463fa43b1ae1c → 977fdcd1d57ae400c0a80cee764210478c5780f6}/ra.calendar-additions.scssc +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sass/{c7aba53479ebd90acc5f6ba8fb7463fa43b1ae1c → 977fdcd1d57ae400c0a80cee764210478c5780f6}/ra.filtering-multiselect.scssc +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sass/{c7aba53479ebd90acc5f6ba8fb7463fa43b1ae1c → 977fdcd1d57ae400c0a80cee764210478c5780f6}/ra.widgets.scssc +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sass/{c7aba53479ebd90acc5f6ba8fb7463fa43b1ae1c → 977fdcd1d57ae400c0a80cee764210478c5780f6}/rails_admin.scss.erbc +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sass/{a65ba3e01aefad1ad59b6317cbb14d0560ca012b → 9a24497045e3375a0450bb40eb1ffe1eb56bc709}/mixins.scssc +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sass/{a65ba3e01aefad1ad59b6317cbb14d0560ca012b → 9a24497045e3375a0450bb40eb1ffe1eb56bc709}/theming.scssc +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sass/{a65ba3e01aefad1ad59b6317cbb14d0560ca012b → 9a24497045e3375a0450bb40eb1ffe1eb56bc709}/variables.scssc +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sass/{c996a898a33b80a44fab822802e73b6e409755d2 → a011cf534fa35e4fa0708adf6019078657586c2c}/_accordion.scssc +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sass/{c996a898a33b80a44fab822802e73b6e409755d2 → a011cf534fa35e4fa0708adf6019078657586c2c}/_alerts.scssc +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sass/{c996a898a33b80a44fab822802e73b6e409755d2 → a011cf534fa35e4fa0708adf6019078657586c2c}/_breadcrumbs.scssc +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sass/{c996a898a33b80a44fab822802e73b6e409755d2 → a011cf534fa35e4fa0708adf6019078657586c2c}/_button-groups.scssc +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sass/{c996a898a33b80a44fab822802e73b6e409755d2 → a011cf534fa35e4fa0708adf6019078657586c2c}/_buttons.scssc +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sass/{c996a898a33b80a44fab822802e73b6e409755d2 → a011cf534fa35e4fa0708adf6019078657586c2c}/_carousel.scssc +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sass/{c996a898a33b80a44fab822802e73b6e409755d2 → a011cf534fa35e4fa0708adf6019078657586c2c}/_close.scssc +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sass/{c996a898a33b80a44fab822802e73b6e409755d2 → a011cf534fa35e4fa0708adf6019078657586c2c}/_component-animations.scssc +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sass/{c996a898a33b80a44fab822802e73b6e409755d2 → a011cf534fa35e4fa0708adf6019078657586c2c}/_dropdowns.scssc +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sass/{c996a898a33b80a44fab822802e73b6e409755d2 → a011cf534fa35e4fa0708adf6019078657586c2c}/_forms.scssc +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sass/{c996a898a33b80a44fab822802e73b6e409755d2 → a011cf534fa35e4fa0708adf6019078657586c2c}/_grid.scssc +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sass/{c996a898a33b80a44fab822802e73b6e409755d2 → a011cf534fa35e4fa0708adf6019078657586c2c}/_hero-unit.scssc +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sass/{c996a898a33b80a44fab822802e73b6e409755d2 → a011cf534fa35e4fa0708adf6019078657586c2c}/_labels-badges.scssc +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sass/{c996a898a33b80a44fab822802e73b6e409755d2 → a011cf534fa35e4fa0708adf6019078657586c2c}/_layouts.scssc +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sass/{c996a898a33b80a44fab822802e73b6e409755d2 → a011cf534fa35e4fa0708adf6019078657586c2c}/_mixins.scssc +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sass/{c996a898a33b80a44fab822802e73b6e409755d2 → a011cf534fa35e4fa0708adf6019078657586c2c}/_modals.scssc +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sass/{c996a898a33b80a44fab822802e73b6e409755d2 → a011cf534fa35e4fa0708adf6019078657586c2c}/_navbar.scssc +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sass/{c996a898a33b80a44fab822802e73b6e409755d2 → a011cf534fa35e4fa0708adf6019078657586c2c}/_navs.scssc +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sass/{c996a898a33b80a44fab822802e73b6e409755d2 → a011cf534fa35e4fa0708adf6019078657586c2c}/_pager.scssc +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sass/{c996a898a33b80a44fab822802e73b6e409755d2 → a011cf534fa35e4fa0708adf6019078657586c2c}/_pagination.scssc +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sass/{c996a898a33b80a44fab822802e73b6e409755d2 → a011cf534fa35e4fa0708adf6019078657586c2c}/_popovers.scssc +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sass/{c996a898a33b80a44fab822802e73b6e409755d2 → a011cf534fa35e4fa0708adf6019078657586c2c}/_progress-bars.scssc +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sass/{c996a898a33b80a44fab822802e73b6e409755d2 → a011cf534fa35e4fa0708adf6019078657586c2c}/_reset.scssc +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sass/{c996a898a33b80a44fab822802e73b6e409755d2 → a011cf534fa35e4fa0708adf6019078657586c2c}/_scaffolding.scssc +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sass/{c996a898a33b80a44fab822802e73b6e409755d2 → a011cf534fa35e4fa0708adf6019078657586c2c}/_tables.scssc +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sass/{c996a898a33b80a44fab822802e73b6e409755d2 → a011cf534fa35e4fa0708adf6019078657586c2c}/_thumbnails.scssc +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sass/{c996a898a33b80a44fab822802e73b6e409755d2 → a011cf534fa35e4fa0708adf6019078657586c2c}/_tooltip.scssc +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sass/{c996a898a33b80a44fab822802e73b6e409755d2 → a011cf534fa35e4fa0708adf6019078657586c2c}/_type.scssc +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sass/{c996a898a33b80a44fab822802e73b6e409755d2 → a011cf534fa35e4fa0708adf6019078657586c2c}/_utilities.scssc +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sass/{c996a898a33b80a44fab822802e73b6e409755d2 → a011cf534fa35e4fa0708adf6019078657586c2c}/_variables.scssc +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sass/{c996a898a33b80a44fab822802e73b6e409755d2 → a011cf534fa35e4fa0708adf6019078657586c2c}/_wells.scssc +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/{d1c2c3a2df8517e019edf30db44566b4 → 021e87bfe65a024a849db3c621f39607} +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/02da6cc33425a1387089c6030cf514db +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/{4863c57f6c9bbf8cf392ba250f7e8e99 → 04880af615c5763f7808495d1676565b} +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/0599094d22f449fecdbc1ae48e3d901e +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/{5c75555dac51f16619f3630fc4ce7811 → 06065efe9216af455ca5ae63b780842a} +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/{fb0757f81f5726edb2a3fecb73c190ac → 07f7c76677c34256252f23976ce6c2a1} +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/0843377cd450cc8688003ba317723fae +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/0a4355e8cc379590a5aaf8542419d306 +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/0b35ad462ccf12ca91cff9c51164c5a0 +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/0f04a8cf5d989e555542213f5b5db676 +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/{129530d9cbfe95daa40fefb31b541d13 → 1252be603446e6064e85dae1533eaa59} +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/12b2ef118f691f66646eac032f7535d3 +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/136f479ebd2eedeb83550b4a882538e5 +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/1381657fbbc4cc175ae0406c8cbdd852 +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/161f8f439887fb5926b02a917b2fab29 +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/1b26b92ae53bdc1e9f8a5afa7b72b381 +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/1befe9a4bb03dc468cd7f5e7148a6a52 +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/1d12409a91dcc8c8a4965c52a7f6b099 +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/1db0d2a002e581a113a91a6e93e5d4e7 +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/{10c9ca24ee38f89898883cf73e22a947 → 1dd74057b76db8f42e06cbb888f14956} +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/{996f66db546cbb0e74c8e1b206934a8b → 1e7b3532f20949a13b8b69d2dddc559a} +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/2051323c87c06ef9fb769ff13afe1d46 +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/{714f390b93b33846a6c8358e3fb0555e → 2197e41c9dda6c82b109eaa0d5adaf2f} +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/{cde5d358d89af1813033adcf5abdc012 → 22003805d8abcf11f0649bff9cef6c35} +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/258dbc982e14f78732a377754ed23a4b +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/26489e402a71f43f962d6055e30787d0 +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/{969c58767a7de67e78f9ea69195183d9 → 276e2819a676347a7de259b70679adb8} +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/2894746ab7d895286c1b09e42fc94281 +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/{2ab4ad958f77a3629fb62246f5604bce → 28c0c99cd6d41ead252f979cef74c6c5} +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/{095e7d24e036c328ff8a353b062c075e → 2943f3fe07d2ae0184c2282647d5c50e} +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/{a03d8b8153d1a1abc2abf53568d4dad0 → 2a421ff8fbf280e0d7323f26d2656144} +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/{d35f06fe57bd03bea2483b5398b2c6f8 → 2f23e3869b68c4c9492f9497b288f6bb} +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/{9011102569db38052e6353455fac950e → 30539f6bae0581cb548f51ee6d9d5b9b} +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/{2656c3bece9f7e34887e2fceded0784e → 318296efd3e38c26a302d99d1638e4ad} +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/31bfcc7896d47062b682cb7305aa9052 +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/346057a4a317d5399f0faa78baf2be98 +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/{0ed0d802514844bf10f8361f431c8cc8 → 374aecf6aa1d05dd23ce4881c1bdd71b} +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/{76c588a87498d0a7b9c4b93f78c47965 → 382ebccfe8b6bce742f4a2bc0c109d0f} +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/{9ba5c2b7b2f656550a0deffc19472e39 → 39792f57ea45373a09c7ac823905cb29} +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/{e647f039e5c667d1ca130f914fb70624 → 3a3728ebf0994eb3f68ac9acf74c5904} +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/{5395b275597f09db5cc276d8a35b1c9b → 3aaf980536f44c31d1d0145ba8f1721d} +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/{460d342022e00bbd6edff25125a60ab1 → 3ba808481868b8a56fdf9f106eeda367} +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/44e79847ae7bb5c853dbfefa452355f0 +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/459777cb1d30f6467da8dd53d9841bee +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/46842ce793ce3da43a6c21ef0c0e745e +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/4764b71e86b2ebfa988853e0ce3bb441 +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/4821eb4277ad6a0983c16630cd5806ae +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/{375cc143f1184d76e6b3ff0dfb60187c → 485a6b0358511c73965a851ba5569014} +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/{ba4f88faafacc90d28bc5a92032f2608 → 49ccc514fe103c24a38f100cecb21be9} +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/{b8e717c8deb6edc80a7a690369d13d35 → 49de4f401551329c23b46284313de8d1} +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/{c61f7caef6bb75b1c15bde82e7cbbee2 → 4f3e6b4e40b631d3d949509f32ea9bc3} +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/{5de4f3048b6d83b2236bfbc041ad8f11 → 4fb06529e2126644ddf41924f5be2880} +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/4fbd3f63d231f5b25d1b8eb02ecdd150 +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/4ffa898a34dcdcfb92898d913da3f720 +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/5159e29eea352859ecad8605385bc97e +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/{498ee0d8892d5d9be8a37030e3253e14 → 529d621e1fb6b730d9d035b143e93f69} +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/54c3d5d9311b5d421c51b5d473de5b05 +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/582efaa561d6a724a7cd82b2023e8e29 +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/{b7ffc32371aea730fc8e27be3be8e633 → 59c191aebff69f4e76cb50860ff17df5} +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/5a0024fd5a8ae8322b07acc733c6caed +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/5a8fc55cb58b423142d530fc066dd3a4 +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/5b1732a4f9d541544d84a04dda73e752 +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/5c8e7da8dcddc72d152039cec5b173c9 +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/5e2e774a2e56e0db0d18d782bbcb9639 +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/{6eff33b3b8fa010e960659ed61b250e6 → 5e9526449d8415fba07fb15676ccea95} +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/{63ff3018e663064066c3dae6658c36fc → 5eed513a4451dedcc36ec16c45745bd4} +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/5fab61053117e1d102e0a355e4b870d3 +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/{8cfd86644ffefe11ed4880518435c8a5 → 62313843f7d1e2195eca82386ddbafc4} +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/{6e2e2c829c91d3d0c079771ed77e6654 → 638b254892f40165bda0c1ee6f62a6d6} +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/{540da504e121104c4de8155ec685b4ea → 660d820d7f5e69fe59c0a7f01aaef8c6} +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/69f59cfc7f92e5d7ebf02df73928083b +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/6a09089b5590cbb5dbccba9199b1aa0e +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/6ab99dcd31d6d0380c0df7baa42a2b18 +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/6b3e9ff481b3a040acb4e1ea61e4c8fc +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/6ce0b5fdde88a0e3ff318a0c2726d46f +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/6d278334e72b135765a41e991bec0500 +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/{e13a9d14cda66ff1562d59bae5bb0009 → 6f70cf17d6c5ba22b8afddd7d39c4d70} +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/{743e275172178779f8b1f7fbe08dd5ea → 729b76b484c9c4df3af759a93635b21d} +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/72d8ec2796504cc9604b01118b806cd8 +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/74b195601a5c6c8bf93e5e7e9e6da12b +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/{2d1df5e32a061a951d5a2d4d9f6c3d24 → 75c3e223b3986acf0bc6c669d16054b8} +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/{d4a49843caf12d9a6dc764014f42b895 → 75ed3fc3c431fc2154cdd1f760f3210e} +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/7795054eed96c541e38536fa029a42ad +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/{2e8383214772b291c87934ed8a84b955 → 77a4a5a208b8121488fd9ef247d67813} +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/7ec629ff58b2d1e0dfe7f8c56f2fc5d7 +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/{b82696d97bda7df1d71f90b91abbbb80 → 840324d228205039aaaafc391c208430} +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/{7be36e83efedfb86b40e05e2c2e9cacf → 842328de502c909f498ccca706cd47dc} +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/{5cb7d2cb1418d5831b0b61ca68d18a07 → 8644f94b9a1a902153cd97473ce23266} +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/{bdf867751d648676e25e36a9435e6b26 → 88f2fbf474d52591035c94b07b696ff9} +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/{e1bba75ba340cdef270c20efd6f983ac → 89fe3f3e75d5eb4ecb1b836fd792990d} +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/{a03fc26531eea1055e58e91bd64792b3 → 917c85b2a002bf08c90f4509aba5b538} +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/{7f5f2d823155f3f1da616e146d540dc1 → 920f17a87bb2678c28568f5e686a4cf1} +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/925c3596709eb590d786f15a3cf817bb +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/984e0e653074756d5c241ac3597b68d8 +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/{7ed06e4bd001b429d263963fbe783f11 → 98a0e68016b3c8f8000d991b1d5bc044} +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/9b9810623fa8a8a92e55d065f93340ee +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/9c834e292807614b87fc885949cb12d5 +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/{aa87eff56d455dae33b13bb129cd4d3f → 9dab4fa8ba5260be660ee06b90e3e847} +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/9f60a2e19502e0f9ad7ccffa2da50342 +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/{d5cb053b401e51026a9c743fc9442a45 → 9f6c080a6bd27db284fbb211f3f44a6c} +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/9fb546f0f37deda2fdcfd48930de0f69 +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/{bb2bc7acd86cbf95e1ca5d978aa3b407 → a0bdc79935fc14ace4c5366e1ba7d527} +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/a1f2411c0e3e9a52183b5f0c96fa84c8 +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/{24dcc2914999ebf715353482d3b22e51 → a41cd406b752008bf3aaeb365d9d5e8b} +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/{bedffc652989e272a8e2774aab019da5 → a50199939a6040343c5487c1dde55260} +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/a80f3bf6075735abb8874bf40ca7a4cd +0 -0
- data/spec/dummy_app/tmp/{dragonfly/cache/body/20/4b9c4f1d960805e206c28eac62367b6970f63b → cache/assets/test/sprockets/ad452a261b3fc90b3aca85ffc630817d} +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/{38fd3d9139702eff7281ee67b638d92e → b0b910efc00aa49d187637e761ea0654} +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/{0c78a1295e80206cd724fb0661c58ee4 → b12de6d4d7f222f76b111c25f5dab178} +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/b1d340312b1b800c7c5e652e1db6c9cc +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/b31203d66a43ee74d976dc763f42f38a +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/{20967f4e0f44fccf2c2de06aad218647 → b944bc4b0799f7954005e8b1a5336687} +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/{f8d79539ba48d44d737f7ca1295354f7 → baf1f20ee8ed55082855f5ecfbb9db4e} +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/bf1fd5d742a16de894278017732d1b2c +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/bffa7d2c518d584c3f1ba8b9e11cf745 +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/{0f72b417ab87169150cd61260cc18f4e → c2f1cee7fb8eb8492c4084ce00dc53b6} +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/c53a5fc1810ee9b6c3c933fd5590228e +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/c801ebd7cabbdbe237c427692b2f6017 +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/{98c978063ce9eca4f00d35e8ee8ccccb → c87758b6b5f54876dccc4562ebd59a43} +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/cb1a9d6c11a7eb5430d3c79838a53eb1 +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/cb1d6fcc9bad898327636cf414f73b57 +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/cd8be896a3bf8f11cc61e0fb6b90eb80 +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/{550d461012567dbfec3138e404c434e3 → ce027086e6de68f182037504b6227485} +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/ce9ba680277b6a7f2f6c65c077e83384 +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/{d4d934ea7bb7519042bc79deb3028314 → cf435b3d4a48bc16f5cc1db8f7049596} +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/{672892e6983bdb28969d20d688b445c3 → d024b2e0207c1a894ac2fc0c0e002033} +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/{6983eaa0179424c5a469abec763c7433 → d1b6047944a0a6e232951727bba44560} +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/{306d8bf77dac0876fb62a6d7d7279f8b → d2acbd849a5e6d1809ac9e9639dbc893} +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/d3e77ae2b265a7b6a4e6619ae888c02f +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/{55b24a753c1452383f987ea056096fc8 → d43f3b9f17586aa28c6097e3be02822f} +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/d533eddb21cd722c5216bc0bb88f1c6d +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/d6205326f914ac8b2f61b0fefad24ef1 +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/{1ef09ffd0e1376aabbac9def4652b166 → d79f4cb89c0bf1ea5e42bfda6e6b27c5} +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/{b68666c0d1bd7d3d06bacd7767043149 → d917eb39b30dcf6725854039c98a5012} +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/{3a6a4e5299d2063b2dd6e980fa0551d5 → de1a47afa53c502369479e8dbbfebd9b} +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/{e7da37b727b2c61d4f654f88ebda783d → dee3a9569b9ee7368f88a014ba475c3a} +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/e1309c718c63004add03fd7c472ec5c1 +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/{d4de3cd17da73d9e0d3c4ff1142385c3 → e3e93c085f3fc84da01f92b8d61981ae} +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/e5ce6cd41375d04320a8a3150db827a3 +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/{8864a718fb2c0b6c297e9efbd210e1f5 → e613b18c9e1811582dc0aeaf095e56ae} +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/{c242b461c1c4aa60e2dfa5486dc9a1a8 → e69a4b84ef07dbc0ac277803d272a6fa} +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/{d104a4ce0d9dc0398049425d45fd6e47 → e72ab273009021b9a7b5770457a9d13b} +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/{2998aba256780a65cc4058fdd00f3b8f → ebf2567e766b39401f690380a2d00e66} +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/ec99299f858e97986ac4ba883d94826c +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/ecddf8ef16cc19c9634433c4f5dcc256 +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/{2e96c0383b32e1ec0746b08f3bea0c7b → eefb724057cd7d3f1e6fee605910718d} +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/{51173669b5ab5031ba6c9eff069b6ae7 → f1f9a7b96317af0df54445979f298b68} +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/f342ebdd61bbcd9b91b4d09aac84b7e6 +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/{d778ac3298efe5fc7d13405e66041015 → f37153d14eee1485b7d6bb7bd5196af6} +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/f3ad8cf21b94a7a5f382482e0529fe3c +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/{1c166333b9ae232ca3c43174ff7ed396 → f4f596c9ba337be0d71e4ef01d05e45c} +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/{b1f49e09b0df0a360d041969f76da859 → fe334a948fd2e5baccfa25d2c4abffc4} +0 -0
- data/spec/dummy_app/tmp/dragonfly/cache/body/3e/2e27ad204d468500de8d9902b63d1e88657389 +4 -0
- data/spec/dummy_app/tmp/{cache/assets/test/sprockets/b1b5c83a14fd8b2081cbb32dd26021c4 → dragonfly/cache/body/6f/58795de38055147320844c9fa5ff32e0aa123e} +0 -0
- data/spec/dummy_app/tmp/dragonfly/cache/meta/1c/caf9bcaeb88256d4e9505faaa85621e4b53a8d +0 -0
- data/spec/dummy_app/tmp/dragonfly/cache/meta/25/1c81c04032b247ef575f4c929301f7f1963a39 +0 -0
- data/spec/dummy_app/tmp/dragonfly/cache/meta/2b/b5469f96538f0f47bb9c2828b5f970fae89a8d +0 -0
- data/spec/dummy_app/tmp/dragonfly/cache/meta/2e/276270b8e924ea3de50db2ad7a265c3bc4f0a1 +0 -0
- data/spec/dummy_app/tmp/dragonfly/cache/meta/62/36dfc092f525f643ded34bb316308d788f8f41 +0 -0
- data/spec/dummy_app/tmp/dragonfly/cache/meta/70/d58ddc461366882590f97c0d9ea3af5545b5a1 +0 -0
- data/spec/dummy_app/tmp/dragonfly/cache/meta/bd/bb171fbf5c5c34eff7efc8fa78817acc7dea9d +0 -0
- data/spec/dummy_app/tmp/dragonfly/cache/meta/d1/6c9c5ef0b7ae606b4a12cb7daf2fa7dc21acd5 +0 -0
- data/spec/factories.rb +2 -3
- data/spec/helpers/rails_admin/application_helper_spec.rb +86 -86
- data/spec/helpers/rails_admin/form_builder_spec.rb +6 -6
- data/spec/integration/authorization/cancan_spec.rb +168 -173
- data/spec/integration/basic/bulk_action/rails_admin_basic_bulk_action_spec.rb +11 -11
- data/spec/integration/basic/bulk_destroy/rails_admin_basic_bulk_destroy_spec.rb +16 -16
- data/spec/integration/basic/create/rails_admin_basic_create_spec.rb +69 -69
- data/spec/integration/basic/create/rails_admin_namespaced_model_create_spec.rb +8 -8
- data/spec/integration/basic/delete/rails_admin_basic_delete_spec.rb +21 -21
- data/spec/integration/basic/destroy/rails_admin_basic_destroy_spec.rb +32 -32
- data/spec/integration/basic/edit/rails_admin_basic_edit_spec.rb +39 -39
- data/spec/integration/basic/export/rails_admin_basic_export_spec.rb +36 -36
- data/spec/integration/basic/list/rails_admin_basic_list_spec.rb +194 -102
- data/spec/integration/basic/new/rails_admin_basic_new_spec.rb +30 -30
- data/spec/integration/basic/new/rails_admin_namespaced_model_new_spec.rb +12 -12
- data/spec/integration/basic/show/rails_admin_basic_show_spec.rb +34 -34
- data/spec/integration/basic/update/rails_admin_basic_update_spec.rb +90 -90
- data/spec/integration/config/edit/rails_admin_config_edit_spec.rb +351 -352
- data/spec/integration/config/list/rails_admin_config_list_spec.rb +132 -133
- data/spec/integration/config/show/rails_admin_config_show_spec.rb +82 -83
- data/spec/integration/history/rails_admin_history_spec.rb +15 -15
- data/spec/integration/rails_admin_spec.rb +48 -49
- data/spec/integration/relation_spec.rb +12 -12
- data/spec/orm/active_record.rb +7 -4
- data/spec/orm/mongoid.rb +1 -7
- data/spec/rails_admin/abstract_model_spec.rb +28 -28
- data/spec/rails_admin/active_record_extension_spec.rb +3 -3
- data/spec/rails_admin/adapters/active_record/abstract_object_spec.rb +29 -29
- data/spec/rails_admin/adapters/active_record_spec.rb +210 -215
- data/spec/rails_admin/adapters/mongoid/abstract_object_spec.rb +19 -19
- data/spec/rails_admin/adapters/mongoid_spec.rb +429 -435
- data/spec/rails_admin/config/actions/base_spec.rb +9 -9
- data/spec/rails_admin/config/actions_spec.rb +42 -42
- data/spec/rails_admin/config/fields/base_spec.rb +135 -136
- data/spec/rails_admin/config/fields/date_spec.rb +17 -17
- data/spec/rails_admin/config/fields/datetime_spec.rb +12 -13
- data/spec/rails_admin/config/fields/file_upload_spec.rb +4 -5
- data/spec/rails_admin/config/fields/time_spec.rb +12 -13
- data/spec/rails_admin/config/fields/timestamp_spec.rb +5 -5
- data/spec/rails_admin/config/fields/types/ck_editor_spec.rb +1 -1
- data/spec/rails_admin/config/fields/types/datetime_spec.rb +2 -2
- data/spec/rails_admin/config/fields_spec.rb +4 -4
- data/spec/rails_admin/config/has_fields_spec.rb +4 -4
- data/spec/rails_admin/config/lazy_model_spec.rb +5 -5
- data/spec/rails_admin/config/model_spec.rb +50 -50
- data/spec/rails_admin/config/proxyable/proxy_spec.rb +7 -10
- data/spec/rails_admin/config/sections_spec.rb +22 -22
- data/spec/rails_admin/config_spec.rb +81 -80
- data/spec/rails_admin/support/csv_converter_spec.rb +3 -3
- data/spec/spec_helper.rb +11 -14
- metadata +509 -548
- metadata.gz.sig +0 -0
- data/lib/generators/rails_admin/templates/drop.rb +0 -18
- data/lib/generators/rails_admin/templates/migration.rb +0 -18
- data/lib/generators/rails_admin/uninstall_generator.rb +0 -22
- data/spec/dummy_app/tmp/cache/assets/test/sass/245c4be20f01db9121b0992275b77e082f23d7df/font-awesome-4-compability.scssc +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sass/ec09962bad77c2bf0bbd3ac3d62b1dd18394a9fe/font-awesome.css.erbc +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/0166686128d421b993db59eb5e22c92c +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/03c695c9019f09cbb02f63a7ae21d79f +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/09f8aac43754fe92352c1a0dac795897 +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/0ae5c9a0fc0ac395440fd4a9475ad717 +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/11f4d136083919b98336de97c5a27364 +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/128dcffe5acb878aaf10cb69ede11e54 +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/143fa89e22fd0f160912728242c12d20 +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/174a5ce6774da56e0d025f915d2a5656 +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/1e909aba91e1216beb4533895a4a6ffa +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/21af0c9472c74ff4307411a74eb52a08 +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/232be00ca912eb52d6fc11676eee2f52 +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/245b58f60816ff2e286784b47a8124a6 +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/24df57fbd4ef4a5d613ab3360a611f9d +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/26495c65c6a62b71419149d7dd3b601b +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/2d69e41d82df0b55096aed4faa6f16c6 +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/2f60f107ce85662c1588f521bb9e2c8b +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/30061ffe89ebc51d869d6b363b18a7cf +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/34ac1a6bcf81e3f9139511c7be3dfed9 +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/3c44e3b6e6c89b71c859ee6552fd8abb +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/412440cb48736db6d625f0ecb113344d +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/4557193886d8770d362ce8103d320b9f +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/498f25956085afc83e15c44ffb1170e6 +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/57dc08580327982fc6a9e8c0a7f168ad +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/5a6cbfd514173d817be78f9d005c5680 +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/5e2c9668e1a6c05d64b5c7cd79ddd647 +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/64277385d99fc22b7ff9fa9cacc0dc93 +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/66c9b69b948666df4d011498e6631eed +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/696be962f98b08b9fee127ddd7e99903 +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/69d2c687f9659c7d6fb668bddb032834 +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/6bd55d53bef2f0dd81671f0f02f7d3ed +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/70b145271cbc457a0b6fd0c63af2983f +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/73f41636108e88974107e84d4d50801d +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/75f716413cdabd240c8b85adc42ddad9 +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/7741691076a9f393f20d291004464ac0 +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/785ad3ea421e6a5227ad573a68eb210e +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/7a9b30ad67a8c153e95d638e962bf463 +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/7aa93b56c89c66301f9154d27ea9014f +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/7c081ddde599ff1c2e0006defac49285 +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/7ef92f534d8e2b3abde760d1813145d9 +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/82d50803717341c893f612a86d9a1400 +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/8626144fc98fb2a6c7ede9bf55f84cac +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/898f5214bcdb21409c81c8aade73b535 +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/8f5d6d8fba731caff3f9e84487876612 +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/91c2a4d8729e7c56e56029d18edb1176 +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/99e5beb37b7130f59a12936b6b763447 +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/9ad9a36052fd8184d3634f8edbf52a68 +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/a70e63d06a6899f97de5cf676b2c395c +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/b1b02c2fe88268d3d00709aeca4c2eb5 +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/b95121cacfdf3b3cd1197526fbc6c098 +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/bab598b96111d2c4545459320f65853b +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/bbc9f2cbbd599b8b17e585cd2ebfc9a2 +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/c1bbc7c7493a2006f9116a79be4aad50 +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/c3381e393b50c9df2f8b97e4634b1349 +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/c402e3bddd9e25c23e52df17c8bb42a3 +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/c7222887ab4570345607228eed54b7c4 +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/d4e4ebef5c7337c61bee8cc343e473d4 +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/d5150138d2eedf2573c71dbd75180e2a +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/dbeda8fff4e9b5084fd1bc79a0f220d0 +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/e43b6fc5e743fc33b6ec77b00fc1c916 +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/ec6a90e298605bce56e3e47e1c4a6d5c +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/ef41f276ef9b69b0d57e4566493cc15d +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/efba5ca5522c353d79d1b624f22179c1 +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/f304c66c0c0e65597b8a53e4b9883357 +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/f386bc0d31bc15498eaff65440bf1ead +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/f9c9bd4d84f1951260e50180fa8ae0d2 +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/fa6cff1eeaad0d65a825b3ebd3045070 +0 -0
- data/spec/dummy_app/tmp/cache/assets/test/sprockets/fead2dec6a8d5e520cd797810ef316bd +0 -0
- data/spec/dummy_app/tmp/dragonfly/cache/body/d9/6abc70a2bba359cc1bebcf56d7d4e522eacbad +0 -4
- data/spec/dummy_app/tmp/dragonfly/cache/meta/01/52bba6767d462a8815bfef629b8413079a9d31 +0 -0
- data/spec/dummy_app/tmp/dragonfly/cache/meta/38/703cefed91dd44c4a8fea5cbb4b17e1ebfc99d +0 -0
- data/spec/dummy_app/tmp/dragonfly/cache/meta/40/1d77fa6d5446212f87dac823fbdcb241ec9325 +0 -0
- data/spec/dummy_app/tmp/dragonfly/cache/meta/40/95eda2cf7223fc56a96360973c859a9f24d468 +0 -0
- data/spec/dummy_app/tmp/dragonfly/cache/meta/5b/7f94b5e3c284cefaa1531e7b5c7f20354a6735 +0 -0
- data/spec/dummy_app/tmp/dragonfly/cache/meta/5e/ef47362a4fd7fd0542ff5e873eb5b76d7d5002 +0 -0
- data/spec/dummy_app/tmp/dragonfly/cache/meta/64/5a7c779a6e798b4f85e897f1d39ef331e1678c +0 -0
- data/spec/dummy_app/tmp/dragonfly/cache/meta/67/d60c85f99af4a911cf86702114da2d9fff52ac +0 -0
- data/spec/dummy_app/tmp/dragonfly/cache/meta/82/f18afea133bee8e0c723324497383d7bb510f9 +0 -0
- data/spec/dummy_app/tmp/dragonfly/cache/meta/84/9965055e94a3d5727a725d174bbbed8f8ecce3 +0 -0
- data/spec/dummy_app/tmp/dragonfly/cache/meta/90/acadf04574dc9417c2f7c238ee48e901b92474 +0 -0
- data/spec/dummy_app/tmp/dragonfly/cache/meta/a8/8839a9c373f06becc049eeb4f4cdb194c1ceda +0 -0
- data/spec/dummy_app/tmp/dragonfly/cache/meta/b7/b845f13b154ef49a71b1be96931905695a62fc +0 -0
- data/spec/dummy_app/tmp/dragonfly/cache/meta/ca/9693eea0638512131858fa1fc6c43a76687529 +0 -0
- data/spec/dummy_app/tmp/dragonfly/cache/meta/e7/c486ba5ec259581c09ba1f4ee381c719719397 +0 -0
- data/spec/dummy_app/tmp/dragonfly/cache/meta/f2/220f8edf3a69687421c04f7fc325efd46ca120 +0 -0
@@ -1,38 +1,38 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
require 'rails_admin/adapters/mongoid/abstract_object'
|
3
3
|
|
4
|
-
describe
|
5
|
-
before
|
4
|
+
describe 'RailsAdmin::Adapters::Mongoid::AbstractObject', mongoid: true do
|
5
|
+
before do
|
6
6
|
@players = FactoryGirl.create_list :player, 3
|
7
7
|
@draft = FactoryGirl.create :draft
|
8
8
|
@team = RailsAdmin::Adapters::Mongoid::AbstractObject.new FactoryGirl.create :team
|
9
9
|
end
|
10
10
|
|
11
|
-
describe
|
12
|
-
it
|
11
|
+
describe 'references_many association' do
|
12
|
+
it 'supports retrieval of ids through foo_ids' do
|
13
13
|
expect(@team.player_ids).to eq([])
|
14
|
-
player = FactoryGirl.create :player, :
|
14
|
+
player = FactoryGirl.create :player, team: @team
|
15
15
|
expect(@team.player_ids).to eq([player.id])
|
16
16
|
end
|
17
17
|
|
18
|
-
it
|
18
|
+
it 'supports assignment of items through foo_ids=' do
|
19
19
|
expect(@team.players).to eq([])
|
20
|
-
@team.player_ids = @players.
|
20
|
+
@team.player_ids = @players.collect(&:id)
|
21
21
|
@team.reload
|
22
|
-
expect(@team.players.
|
22
|
+
expect(@team.players.collect(&:id)).to match_array @players.collect(&:id)
|
23
23
|
end
|
24
24
|
|
25
|
-
it
|
26
|
-
@team.player_ids = @players.
|
25
|
+
it 'skips invalid id on assignment through foo_ids=' do
|
26
|
+
@team.player_ids = @players.collect { |item| item.id.to_s }.unshift('4f431021dcf2310db7000006')
|
27
27
|
@team.reload
|
28
|
-
@players.each
|
29
|
-
expect(@team.players.
|
28
|
+
@players.each(&:reload)
|
29
|
+
expect(@team.players.collect(&:id)).to match_array @players.collect(&:id)
|
30
30
|
end
|
31
31
|
|
32
32
|
describe "model's custom setter" do
|
33
33
|
before do
|
34
34
|
Team.class_eval do
|
35
|
-
def player_ids=
|
35
|
+
def player_ids=(players_ids)
|
36
36
|
self.custom_field = players_ids * ', '
|
37
37
|
end
|
38
38
|
end
|
@@ -44,19 +44,19 @@ describe "RailsAdmin::Adapters::Mongoid::AbstractObject", :mongoid => true do
|
|
44
44
|
end
|
45
45
|
end
|
46
46
|
|
47
|
-
it
|
47
|
+
it 'have been called' do
|
48
48
|
expect(@team.custom_field).to eq(nil)
|
49
|
-
@team.player_ids = @players.
|
50
|
-
expect(@team.custom_field).to eq(@players.
|
49
|
+
@team.player_ids = @players.collect(&:id)
|
50
|
+
expect(@team.custom_field).to eq(@players.collect(&:id) * ', ')
|
51
51
|
end
|
52
52
|
end
|
53
53
|
end
|
54
54
|
|
55
|
-
describe
|
55
|
+
describe 'references_one association' do
|
56
56
|
describe "model's custom setter" do
|
57
57
|
before do
|
58
58
|
Team.class_eval do
|
59
|
-
def draft_id=
|
59
|
+
def draft_id=(draft_id)
|
60
60
|
self.custom_field = draft_id.to_s
|
61
61
|
end
|
62
62
|
end
|
@@ -68,7 +68,7 @@ describe "RailsAdmin::Adapters::Mongoid::AbstractObject", :mongoid => true do
|
|
68
68
|
end
|
69
69
|
end
|
70
70
|
|
71
|
-
it
|
71
|
+
it 'have been called' do
|
72
72
|
expect(@team.custom_field).to eq(nil)
|
73
73
|
@team.draft_id = @draft.id
|
74
74
|
expect(@team.custom_field).to eq(@draft.id.to_s)
|
@@ -1,16 +1,16 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
require 'timecop'
|
3
3
|
|
4
|
-
describe
|
5
|
-
describe
|
4
|
+
describe 'RailsAdmin::Adapters::Mongoid', mongoid: true do
|
5
|
+
describe '#associations' do
|
6
6
|
before :all do
|
7
7
|
RailsAdmin::AbstractModel.reset_polymorphic_parents
|
8
8
|
|
9
9
|
class MongoBlog
|
10
10
|
include Mongoid::Document
|
11
11
|
has_many :mongo_posts
|
12
|
-
has_many :mongo_comments, :
|
13
|
-
belongs_to :librarian, :
|
12
|
+
has_many :mongo_comments, as: :commentable
|
13
|
+
belongs_to :librarian, polymorphic: true
|
14
14
|
field :mongo_blog_id
|
15
15
|
end
|
16
16
|
|
@@ -18,7 +18,7 @@ describe "RailsAdmin::Adapters::Mongoid", :mongoid => true do
|
|
18
18
|
include Mongoid::Document
|
19
19
|
belongs_to :mongo_blog
|
20
20
|
has_and_belongs_to_many :mongo_categories
|
21
|
-
has_many :mongo_comments, :
|
21
|
+
has_many :mongo_comments, as: :commentable
|
22
22
|
embeds_one :mongo_note
|
23
23
|
accepts_nested_attributes_for :mongo_note
|
24
24
|
end
|
@@ -26,32 +26,32 @@ describe "RailsAdmin::Adapters::Mongoid", :mongoid => true do
|
|
26
26
|
class MongoCategory
|
27
27
|
include Mongoid::Document
|
28
28
|
has_and_belongs_to_many :mongo_posts
|
29
|
-
belongs_to :librarian, :
|
29
|
+
belongs_to :librarian, polymorphic: true
|
30
30
|
end
|
31
31
|
|
32
32
|
class MongoUser
|
33
33
|
include Mongoid::Document
|
34
34
|
has_one :mongo_profile
|
35
|
-
has_many :mongo_categories, :
|
35
|
+
has_many :mongo_categories, as: :librarian
|
36
36
|
|
37
37
|
embeds_many :mongo_notes
|
38
38
|
accepts_nested_attributes_for :mongo_notes
|
39
|
-
field :name, :
|
40
|
-
field :message, :
|
41
|
-
field :short_text, :
|
39
|
+
field :name, type: String
|
40
|
+
field :message, type: String
|
41
|
+
field :short_text, type: String
|
42
42
|
|
43
|
-
validates :short_text, :
|
43
|
+
validates :short_text, length: {maximum: 255}
|
44
44
|
end
|
45
45
|
|
46
46
|
class MongoProfile
|
47
47
|
include Mongoid::Document
|
48
48
|
belongs_to :mongo_user
|
49
|
-
has_many :mongo_blogs, :
|
49
|
+
has_many :mongo_blogs, as: :librarian
|
50
50
|
end
|
51
51
|
|
52
52
|
class MongoComment
|
53
53
|
include Mongoid::Document
|
54
|
-
belongs_to :commentable, :
|
54
|
+
belongs_to :commentable, polymorphic: true
|
55
55
|
end
|
56
56
|
|
57
57
|
class MongoNote
|
@@ -72,161 +72,161 @@ describe "RailsAdmin::Adapters::Mongoid", :mongoid => true do
|
|
72
72
|
RailsAdmin::AbstractModel.reset_polymorphic_parents
|
73
73
|
end
|
74
74
|
|
75
|
-
it
|
76
|
-
expect(@post.associations.
|
75
|
+
it 'lists associations' do
|
76
|
+
expect(@post.associations.collect { |a| a[:name] }).to match_array [:mongo_blog, :mongo_categories, :mongo_comments, :mongo_note]
|
77
77
|
end
|
78
78
|
|
79
|
-
it
|
80
|
-
expect((@post.associations + @blog.associations + @user.associations).
|
79
|
+
it 'reads correct and know types in [:belongs_to, :has_and_belongs_to_many, :has_many, :has_one]' do
|
80
|
+
expect((@post.associations + @blog.associations + @user.associations).collect { |a|a[:type].to_s }.uniq).to match_array %w(belongs_to has_and_belongs_to_many has_many has_one)
|
81
81
|
end
|
82
82
|
|
83
|
-
it
|
84
|
-
param = @post.associations.
|
85
|
-
expect(param.reject{|k, v| [:primary_key_proc, :model_proc].include? k }).to eq(
|
86
|
-
:
|
87
|
-
:
|
88
|
-
:
|
89
|
-
:
|
90
|
-
:
|
91
|
-
:
|
92
|
-
:
|
93
|
-
:
|
94
|
-
:
|
95
|
-
:
|
96
|
-
:
|
97
|
-
|
83
|
+
it 'has correct parameter of belongs_to association' do
|
84
|
+
param = @post.associations.detect { |a| a[:name] == :mongo_blog }
|
85
|
+
expect(param.reject { |k, v| [:primary_key_proc, :model_proc].include? k }).to eq(
|
86
|
+
name: :mongo_blog,
|
87
|
+
pretty_name: 'Mongo blog',
|
88
|
+
type: :belongs_to,
|
89
|
+
foreign_key: :mongo_blog_id,
|
90
|
+
foreign_type: nil,
|
91
|
+
foreign_inverse_of: nil,
|
92
|
+
as: nil,
|
93
|
+
polymorphic: false,
|
94
|
+
inverse_of: nil,
|
95
|
+
read_only: nil,
|
96
|
+
nested_form: nil
|
97
|
+
)
|
98
98
|
expect(param[:primary_key_proc].call).to eq(:_id)
|
99
99
|
expect(param[:model_proc].call).to eq(MongoBlog)
|
100
100
|
end
|
101
101
|
|
102
|
-
it
|
103
|
-
param = @blog.associations.
|
104
|
-
expect(param.reject{|k, v| [:primary_key_proc, :model_proc].include? k }).to eq(
|
105
|
-
:
|
106
|
-
:
|
107
|
-
:
|
108
|
-
:
|
109
|
-
:
|
110
|
-
:
|
111
|
-
:
|
112
|
-
:
|
113
|
-
:
|
114
|
-
:
|
115
|
-
:
|
116
|
-
|
102
|
+
it 'has correct parameter of has_many association' do
|
103
|
+
param = @blog.associations.detect { |a| a[:name] == :mongo_posts }
|
104
|
+
expect(param.reject { |k, v| [:primary_key_proc, :model_proc].include? k }).to eq(
|
105
|
+
name: :mongo_posts,
|
106
|
+
pretty_name: 'Mongo posts',
|
107
|
+
type: :has_many,
|
108
|
+
foreign_key: :mongo_blog_id,
|
109
|
+
foreign_type: nil,
|
110
|
+
foreign_inverse_of: nil,
|
111
|
+
as: nil,
|
112
|
+
polymorphic: false,
|
113
|
+
inverse_of: nil,
|
114
|
+
read_only: nil,
|
115
|
+
nested_form: nil
|
116
|
+
)
|
117
117
|
expect(param[:primary_key_proc].call).to eq(:_id)
|
118
118
|
expect(param[:model_proc].call).to eq(MongoPost)
|
119
|
-
expect(@post.properties.
|
120
|
-
end
|
121
|
-
|
122
|
-
it
|
123
|
-
expect(@blog.properties.
|
124
|
-
end
|
125
|
-
|
126
|
-
it
|
127
|
-
param = @post.associations.
|
128
|
-
expect(param.reject{|k, v| [:primary_key_proc, :model_proc].include? k }).to eq(
|
129
|
-
:
|
130
|
-
:
|
131
|
-
:
|
132
|
-
:
|
133
|
-
:
|
134
|
-
:
|
135
|
-
:
|
136
|
-
:
|
137
|
-
:
|
138
|
-
:
|
139
|
-
:
|
140
|
-
|
119
|
+
expect(@post.properties.detect { |f| f[:name] == :mongo_blog_id }[:type]).to eq(:bson_object_id)
|
120
|
+
end
|
121
|
+
|
122
|
+
it 'does not confuse foreign_key column which belongs to associated model' do
|
123
|
+
expect(@blog.properties.detect { |f| f[:name] == :mongo_blog_id }[:type]).to eq(:string)
|
124
|
+
end
|
125
|
+
|
126
|
+
it 'has correct parameter of has_and_belongs_to_many association' do
|
127
|
+
param = @post.associations.detect { |a| a[:name] == :mongo_categories }
|
128
|
+
expect(param.reject { |k, v| [:primary_key_proc, :model_proc].include? k }).to eq(
|
129
|
+
name: :mongo_categories,
|
130
|
+
pretty_name: 'Mongo categories',
|
131
|
+
type: :has_and_belongs_to_many,
|
132
|
+
foreign_key: :mongo_category_ids,
|
133
|
+
foreign_type: nil,
|
134
|
+
foreign_inverse_of: nil,
|
135
|
+
as: nil,
|
136
|
+
polymorphic: false,
|
137
|
+
inverse_of: nil,
|
138
|
+
read_only: nil,
|
139
|
+
nested_form: nil
|
140
|
+
)
|
141
141
|
expect(param[:primary_key_proc].call).to eq(:_id)
|
142
142
|
expect(param[:model_proc].call).to eq(MongoCategory)
|
143
143
|
end
|
144
144
|
|
145
|
-
it
|
146
|
-
allow(RailsAdmin::Config).to receive(:models_pool).and_return(
|
147
|
-
param = @comment.associations.
|
148
|
-
expect(param.reject{|k, v| [:primary_key_proc, :model_proc].include? k }).to eq(
|
149
|
-
:
|
150
|
-
:
|
151
|
-
:
|
152
|
-
:
|
153
|
-
:
|
154
|
-
:
|
155
|
-
:
|
156
|
-
:
|
157
|
-
:
|
158
|
-
:
|
159
|
-
:
|
160
|
-
|
145
|
+
it 'has correct parameter of polymorphic belongs_to association' do
|
146
|
+
allow(RailsAdmin::Config).to receive(:models_pool).and_return(%w(MongoBlog MongoPost MongoCategory MongoUser MongoProfile MongoComment))
|
147
|
+
param = @comment.associations.detect { |a| a[:name] == :commentable }
|
148
|
+
expect(param.reject { |k, v| [:primary_key_proc, :model_proc].include? k }).to eq(
|
149
|
+
name: :commentable,
|
150
|
+
pretty_name: 'Commentable',
|
151
|
+
type: :belongs_to,
|
152
|
+
foreign_key: :commentable_id,
|
153
|
+
foreign_type: :commentable_type,
|
154
|
+
foreign_inverse_of: nil,
|
155
|
+
as: nil,
|
156
|
+
polymorphic: true,
|
157
|
+
inverse_of: nil,
|
158
|
+
read_only: nil,
|
159
|
+
nested_form: nil
|
160
|
+
)
|
161
161
|
expect(param[:primary_key_proc].call).to eq(:_id)
|
162
162
|
expect(param[:model_proc].call).to eq([MongoBlog, MongoPost])
|
163
163
|
end
|
164
164
|
|
165
|
-
it
|
166
|
-
allow(RailsAdmin::Config).to receive(:models_pool).and_return(
|
167
|
-
param = @blog.associations.
|
168
|
-
expect(param.reject{|k, v| [:primary_key_proc, :model_proc].include? k }).to eq(
|
169
|
-
:
|
170
|
-
:
|
171
|
-
:
|
172
|
-
:
|
173
|
-
:
|
174
|
-
:
|
175
|
-
:
|
176
|
-
:
|
177
|
-
:
|
178
|
-
:
|
179
|
-
:
|
180
|
-
|
165
|
+
it 'has correct parameter of polymorphic inverse has_many association' do
|
166
|
+
allow(RailsAdmin::Config).to receive(:models_pool).and_return(%w(MongoBlog MongoPost MongoCategory MongoUser MongoProfile MongoComment))
|
167
|
+
param = @blog.associations.detect { |a| a[:name] == :mongo_comments }
|
168
|
+
expect(param.reject { |k, v| [:primary_key_proc, :model_proc].include? k }).to eq(
|
169
|
+
name: :mongo_comments,
|
170
|
+
pretty_name: 'Mongo comments',
|
171
|
+
type: :has_many,
|
172
|
+
foreign_key: :commentable_id,
|
173
|
+
foreign_type: nil,
|
174
|
+
foreign_inverse_of: nil,
|
175
|
+
as: :commentable,
|
176
|
+
polymorphic: false,
|
177
|
+
inverse_of: nil,
|
178
|
+
read_only: nil,
|
179
|
+
nested_form: nil
|
180
|
+
)
|
181
181
|
expect(param[:primary_key_proc].call).to eq(:_id)
|
182
182
|
expect(param[:model_proc].call).to eq(MongoComment)
|
183
183
|
end
|
184
184
|
|
185
185
|
it 'has correct opposite model lookup for polymorphic associations' do
|
186
|
-
allow(RailsAdmin::Config).to receive(:models_pool).and_return(
|
187
|
-
expect(@category.associations.
|
188
|
-
expect(@blog.associations.
|
189
|
-
end
|
190
|
-
|
191
|
-
it
|
192
|
-
param = @post.associations.
|
193
|
-
expect(param.reject{|k, v| [:primary_key_proc, :model_proc].include? k }).to eq(
|
194
|
-
:
|
195
|
-
:
|
196
|
-
:
|
197
|
-
:
|
198
|
-
:
|
199
|
-
:
|
200
|
-
:
|
201
|
-
:
|
202
|
-
:
|
203
|
-
:
|
204
|
-
:
|
205
|
-
|
186
|
+
allow(RailsAdmin::Config).to receive(:models_pool).and_return(%w(MongoBlog MongoPost MongoCategory MongoUser MongoProfile MongoComment))
|
187
|
+
expect(@category.associations.detect { |a| a[:name] == :librarian }[:model_proc].call).to eq [MongoUser]
|
188
|
+
expect(@blog.associations.detect { |a| a[:name] == :librarian }[:model_proc].call).to eq [MongoProfile]
|
189
|
+
end
|
190
|
+
|
191
|
+
it 'has correct parameter of embeds_one association' do
|
192
|
+
param = @post.associations.detect { |a| a[:name] == :mongo_note }
|
193
|
+
expect(param.reject { |k, v| [:primary_key_proc, :model_proc].include? k }).to eq(
|
194
|
+
name: :mongo_note,
|
195
|
+
pretty_name: 'Mongo note',
|
196
|
+
type: :has_one,
|
197
|
+
foreign_key: nil,
|
198
|
+
foreign_type: nil,
|
199
|
+
foreign_inverse_of: nil,
|
200
|
+
as: nil,
|
201
|
+
polymorphic: false,
|
202
|
+
inverse_of: nil,
|
203
|
+
read_only: nil,
|
204
|
+
nested_form: {allow_destroy: false, update_only: false}
|
205
|
+
)
|
206
206
|
expect(param[:primary_key_proc].call).to eq(:_id)
|
207
207
|
expect(param[:model_proc].call).to eq(MongoNote)
|
208
208
|
end
|
209
209
|
|
210
|
-
it
|
211
|
-
param = @user.associations.
|
212
|
-
expect(param.reject{|k, v| [:primary_key_proc, :model_proc].include? k }).to eq(
|
213
|
-
:
|
214
|
-
:
|
215
|
-
:
|
216
|
-
:
|
217
|
-
:
|
218
|
-
:
|
219
|
-
:
|
220
|
-
:
|
221
|
-
:
|
222
|
-
:
|
223
|
-
:
|
224
|
-
|
210
|
+
it 'has correct parameter of embeds_many association' do
|
211
|
+
param = @user.associations.detect { |a| a[:name] == :mongo_notes }
|
212
|
+
expect(param.reject { |k, v| [:primary_key_proc, :model_proc].include? k }).to eq(
|
213
|
+
name: :mongo_notes,
|
214
|
+
pretty_name: 'Mongo notes',
|
215
|
+
type: :has_many,
|
216
|
+
foreign_key: nil,
|
217
|
+
foreign_type: nil,
|
218
|
+
foreign_inverse_of: nil,
|
219
|
+
as: nil,
|
220
|
+
polymorphic: false,
|
221
|
+
inverse_of: nil,
|
222
|
+
read_only: nil,
|
223
|
+
nested_form: {allow_destroy: false, update_only: false}
|
224
|
+
)
|
225
225
|
expect(param[:primary_key_proc].call).to eq(:_id)
|
226
226
|
expect(param[:model_proc].call).to eq(MongoNote)
|
227
227
|
end
|
228
228
|
|
229
|
-
it
|
229
|
+
it 'raises error when embeds_* is used without accepts_nested_attributes_for' do
|
230
230
|
class MongoEmbedsOne
|
231
231
|
include Mongoid::Document
|
232
232
|
embeds_one :mongo_embedded
|
@@ -253,17 +253,17 @@ describe "RailsAdmin::Adapters::Mongoid", :mongoid => true do
|
|
253
253
|
recursively_embeds_many
|
254
254
|
end
|
255
255
|
|
256
|
-
expect(lambda{ RailsAdmin::AbstractModel.new(MongoEmbedsOne).associations }).to raise_error(RuntimeError,
|
257
|
-
|
256
|
+
expect(lambda { RailsAdmin::AbstractModel.new(MongoEmbedsOne).associations }).to raise_error(RuntimeError,
|
257
|
+
"Embbeded association without accepts_nested_attributes_for can't be handled by RailsAdmin,\nbecause embedded model doesn't have top-level access.\nPlease add `accepts_nested_attributes_for :mongo_embedded' line to `MongoEmbedsOne' model.\n"
|
258
258
|
)
|
259
|
-
expect(lambda{ RailsAdmin::AbstractModel.new(MongoEmbedsMany).associations }).to raise_error(RuntimeError,
|
260
|
-
|
259
|
+
expect(lambda { RailsAdmin::AbstractModel.new(MongoEmbedsMany).associations }).to raise_error(RuntimeError,
|
260
|
+
"Embbeded association without accepts_nested_attributes_for can't be handled by RailsAdmin,\nbecause embedded model doesn't have top-level access.\nPlease add `accepts_nested_attributes_for :mongo_embeddeds' line to `MongoEmbedsMany' model.\n"
|
261
261
|
)
|
262
|
-
expect(lambda{ RailsAdmin::AbstractModel.new(MongoRecursivelyEmbedsOne).associations }).not_to raise_error
|
263
|
-
expect(lambda{ RailsAdmin::AbstractModel.new(MongoRecursivelyEmbedsMany).associations }).not_to raise_error
|
262
|
+
expect(lambda { RailsAdmin::AbstractModel.new(MongoRecursivelyEmbedsOne).associations }).not_to raise_error
|
263
|
+
expect(lambda { RailsAdmin::AbstractModel.new(MongoRecursivelyEmbedsMany).associations }).not_to raise_error
|
264
264
|
end
|
265
265
|
|
266
|
-
it
|
266
|
+
it 'works with inherited embeds_many model' do
|
267
267
|
class MongoEmbedsParent
|
268
268
|
include Mongoid::Document
|
269
269
|
embeds_many :mongo_embeddeds
|
@@ -277,252 +277,249 @@ describe "RailsAdmin::Adapters::Mongoid", :mongoid => true do
|
|
277
277
|
|
278
278
|
class MongoEmbedsChild < MongoEmbedsParent; end
|
279
279
|
|
280
|
-
expect(lambda{ RailsAdmin::AbstractModel.new(MongoEmbedsChild).associations }).not_to raise_error
|
280
|
+
expect(lambda { RailsAdmin::AbstractModel.new(MongoEmbedsChild).associations }).not_to raise_error
|
281
281
|
end
|
282
282
|
end
|
283
283
|
|
284
|
-
describe
|
284
|
+
describe '#properties' do
|
285
285
|
before :all do
|
286
286
|
@abstract_model = RailsAdmin::AbstractModel.new(FieldTest)
|
287
287
|
end
|
288
288
|
|
289
|
-
it
|
290
|
-
|
291
|
-
|
292
|
-
|
293
|
-
|
294
|
-
|
295
|
-
|
296
|
-
|
297
|
-
|
298
|
-
|
299
|
-
|
300
|
-
|
301
|
-
|
302
|
-
|
303
|
-
|
304
|
-
|
305
|
-
|
306
|
-
|
307
|
-
|
308
|
-
|
309
|
-
|
310
|
-
|
311
|
-
|
312
|
-
|
313
|
-
|
314
|
-
|
315
|
-
|
316
|
-
|
317
|
-
|
318
|
-
|
319
|
-
|
320
|
-
|
321
|
-
|
322
|
-
|
323
|
-
|
324
|
-
|
325
|
-
|
326
|
-
|
327
|
-
|
328
|
-
|
329
|
-
|
330
|
-
|
331
|
-
|
332
|
-
|
333
|
-
|
334
|
-
|
335
|
-
|
336
|
-
|
337
|
-
|
338
|
-
|
339
|
-
|
340
|
-
|
341
|
-
|
342
|
-
|
343
|
-
|
344
|
-
|
345
|
-
|
346
|
-
|
347
|
-
|
348
|
-
|
349
|
-
|
350
|
-
|
351
|
-
|
352
|
-
|
353
|
-
|
354
|
-
|
355
|
-
|
356
|
-
|
357
|
-
|
358
|
-
|
359
|
-
|
360
|
-
|
361
|
-
|
362
|
-
|
363
|
-
|
364
|
-
|
365
|
-
|
366
|
-
|
367
|
-
|
368
|
-
|
369
|
-
|
370
|
-
|
371
|
-
|
372
|
-
|
373
|
-
|
374
|
-
|
375
|
-
|
376
|
-
|
377
|
-
|
378
|
-
|
379
|
-
|
380
|
-
|
381
|
-
|
382
|
-
|
383
|
-
|
384
|
-
|
385
|
-
|
386
|
-
|
387
|
-
|
388
|
-
|
389
|
-
|
390
|
-
|
391
|
-
|
392
|
-
|
393
|
-
|
394
|
-
|
395
|
-
|
396
|
-
|
397
|
-
|
398
|
-
|
399
|
-
|
400
|
-
|
401
|
-
|
402
|
-
|
403
|
-
|
404
|
-
|
405
|
-
|
406
|
-
|
407
|
-
|
408
|
-
|
409
|
-
|
410
|
-
|
411
|
-
|
412
|
-
|
413
|
-
|
414
|
-
|
415
|
-
|
416
|
-
|
417
|
-
|
418
|
-
:serial? => false,
|
419
|
-
:type => :string,
|
420
|
-
:length => 255 }
|
289
|
+
it 'maps Mongoid column types to RA types' do
|
290
|
+
properties = %w(_id array_field big_decimal_field boolean_field bson_object_id_field bson_binary_field date_field datetime_field time_with_zone_field default_field float_field hash_field integer_field name object_field range_field short_text string_field subject symbol_field text_field time_field title)
|
291
|
+
expect(@abstract_model.properties.select { |p| properties.include? p[:name].to_s }).to match_array [
|
292
|
+
{:name => :_id,
|
293
|
+
:pretty_name => 'Id',
|
294
|
+
:nullable? => true,
|
295
|
+
:serial? => true,
|
296
|
+
:type => :bson_object_id,
|
297
|
+
:length => nil},
|
298
|
+
{:name => :array_field,
|
299
|
+
:pretty_name => 'Array field',
|
300
|
+
:nullable? => true,
|
301
|
+
:serial? => false,
|
302
|
+
:type => :serialized,
|
303
|
+
:length => nil},
|
304
|
+
{:name => :big_decimal_field,
|
305
|
+
:pretty_name => 'Big decimal field',
|
306
|
+
:nullable? => true,
|
307
|
+
:serial? => false,
|
308
|
+
:type => :decimal,
|
309
|
+
:length => nil},
|
310
|
+
{:name => :boolean_field,
|
311
|
+
:pretty_name => 'Boolean field',
|
312
|
+
:nullable? => true,
|
313
|
+
:serial? => false,
|
314
|
+
:type => :boolean,
|
315
|
+
:length => nil},
|
316
|
+
{:name => :bson_object_id_field,
|
317
|
+
:pretty_name => 'Bson object id field',
|
318
|
+
:nullable? => true,
|
319
|
+
:serial? => false,
|
320
|
+
:type => :bson_object_id,
|
321
|
+
:length => nil},
|
322
|
+
{:name => :date_field,
|
323
|
+
:pretty_name => 'Date field',
|
324
|
+
:nullable? => true,
|
325
|
+
:serial? => false,
|
326
|
+
:type => :date,
|
327
|
+
:length => nil},
|
328
|
+
{:name => :datetime_field,
|
329
|
+
:pretty_name => 'Datetime field',
|
330
|
+
:nullable? => true,
|
331
|
+
:serial? => false,
|
332
|
+
:type => :datetime,
|
333
|
+
:length => nil},
|
334
|
+
{:name => :time_with_zone_field,
|
335
|
+
:pretty_name => 'Time with zone field',
|
336
|
+
:nullable? => true,
|
337
|
+
:serial? => false,
|
338
|
+
:type => :datetime,
|
339
|
+
:length => nil},
|
340
|
+
{:name => :default_field,
|
341
|
+
:pretty_name => 'Default field',
|
342
|
+
:nullable? => true,
|
343
|
+
:serial? => false,
|
344
|
+
:type => :string,
|
345
|
+
:length => 255},
|
346
|
+
{:name => :float_field,
|
347
|
+
:pretty_name => 'Float field',
|
348
|
+
:nullable? => true,
|
349
|
+
:serial? => false,
|
350
|
+
:type => :float,
|
351
|
+
:length => nil},
|
352
|
+
{:name => :hash_field,
|
353
|
+
:pretty_name => 'Hash field',
|
354
|
+
:nullable? => true,
|
355
|
+
:serial? => false,
|
356
|
+
:type => :serialized,
|
357
|
+
:length => nil},
|
358
|
+
{:name => :integer_field,
|
359
|
+
:pretty_name => 'Integer field',
|
360
|
+
:nullable? => true,
|
361
|
+
:serial? => false,
|
362
|
+
:type => :integer,
|
363
|
+
:length => nil},
|
364
|
+
{:name => :name,
|
365
|
+
:pretty_name => 'Name',
|
366
|
+
:nullable? => true,
|
367
|
+
:serial? => false,
|
368
|
+
:type => :string,
|
369
|
+
:length => 255},
|
370
|
+
{:name => :object_field,
|
371
|
+
:pretty_name => 'Object field',
|
372
|
+
:nullable? => true,
|
373
|
+
:serial? => false,
|
374
|
+
:type => :string,
|
375
|
+
:length => 255},
|
376
|
+
{:name => :short_text,
|
377
|
+
:pretty_name => 'Short text',
|
378
|
+
:nullable? => true,
|
379
|
+
:serial? => false,
|
380
|
+
:type => :string,
|
381
|
+
:length => 255},
|
382
|
+
{:name => :string_field,
|
383
|
+
:pretty_name => 'String field',
|
384
|
+
:nullable? => true,
|
385
|
+
:serial? => false,
|
386
|
+
:type => :text,
|
387
|
+
:length => nil},
|
388
|
+
{:name => :subject,
|
389
|
+
:pretty_name => 'Subject',
|
390
|
+
:nullable? => true,
|
391
|
+
:serial? => false,
|
392
|
+
:type => :string,
|
393
|
+
:length => 255},
|
394
|
+
{:name => :symbol_field,
|
395
|
+
:pretty_name => 'Symbol field',
|
396
|
+
:nullable? => true,
|
397
|
+
:serial? => false,
|
398
|
+
:type => :string,
|
399
|
+
:length => 255},
|
400
|
+
{:name => :text_field,
|
401
|
+
:pretty_name => 'Text field',
|
402
|
+
:nullable? => true,
|
403
|
+
:serial? => false,
|
404
|
+
:type => :text,
|
405
|
+
:length => nil},
|
406
|
+
{:name => :time_field,
|
407
|
+
:pretty_name => 'Time field',
|
408
|
+
:nullable? => true,
|
409
|
+
:serial? => false,
|
410
|
+
:type => :datetime,
|
411
|
+
:length => nil},
|
412
|
+
{:name => :title,
|
413
|
+
:pretty_name => 'Title',
|
414
|
+
:nullable? => true,
|
415
|
+
:serial? => false,
|
416
|
+
:type => :string,
|
417
|
+
:length => 255}
|
421
418
|
]
|
422
419
|
end
|
423
420
|
|
424
|
-
it
|
421
|
+
it 'detects validation length properly' do
|
425
422
|
class LengthValiated
|
426
423
|
include Mongoid::Document
|
427
|
-
field :text, :
|
428
|
-
validates :text, :
|
424
|
+
field :text, type: String
|
425
|
+
validates :text, length: {maximum: 50}
|
429
426
|
end
|
430
427
|
expect(RailsAdmin::AbstractModel.new('LengthValiated').send(:length_validation_lookup, :text)).to eq(50)
|
431
428
|
end
|
432
429
|
|
433
|
-
it
|
430
|
+
it 'does not cause problem with custom validators' do
|
434
431
|
class MyCustomValidator < ActiveModel::Validator
|
435
432
|
def validate(r); end
|
436
433
|
end
|
437
434
|
class CustomValiated
|
438
435
|
include Mongoid::Document
|
439
|
-
field :text, :
|
436
|
+
field :text, type: String
|
440
437
|
validates_with MyCustomValidator
|
441
438
|
end
|
442
|
-
expect(lambda{ RailsAdmin::AbstractModel.new('CustomValiated').send(:length_validation_lookup, :text) }).not_to raise_error
|
439
|
+
expect(lambda { RailsAdmin::AbstractModel.new('CustomValiated').send(:length_validation_lookup, :text) }).not_to raise_error
|
443
440
|
end
|
444
441
|
end
|
445
442
|
|
446
|
-
describe
|
443
|
+
describe 'data access method' do
|
447
444
|
before do
|
448
445
|
@players = FactoryGirl.create_list(:player, 3)
|
449
446
|
@abstract_model = RailsAdmin::AbstractModel.new('Player')
|
450
447
|
end
|
451
448
|
|
452
|
-
it
|
449
|
+
it '#new returns instance of AbstractObject' do
|
453
450
|
expect(@abstract_model.new.object).to be_instance_of(Player)
|
454
451
|
end
|
455
452
|
|
456
|
-
it
|
453
|
+
it '#get returns instance of AbstractObject' do
|
457
454
|
expect(@abstract_model.get(@players.first.id.to_s).object).to eq(@players.first)
|
458
455
|
end
|
459
456
|
|
460
|
-
it
|
457
|
+
it '#get returns nil when id does not exist' do
|
461
458
|
expect(@abstract_model.get('4f4f0824dcf2315093000000')).to be_nil
|
462
459
|
end
|
463
460
|
|
464
|
-
it
|
461
|
+
it '#first returns a player' do
|
465
462
|
expect(@players).to include @abstract_model.first
|
466
463
|
end
|
467
464
|
|
468
|
-
it
|
465
|
+
it '#count returns count of items' do
|
469
466
|
expect(@abstract_model.count).to eq(@players.count)
|
470
467
|
end
|
471
468
|
|
472
|
-
it
|
469
|
+
it '#destroy destroys multiple items' do
|
473
470
|
@abstract_model.destroy(@players[0..1])
|
474
471
|
expect(Player.all).to eq(@players[2..2])
|
475
472
|
end
|
476
473
|
|
477
|
-
it
|
478
|
-
expect(@abstract_model.where(:
|
474
|
+
it '#where returns filtered results' do
|
475
|
+
expect(@abstract_model.where(name: @players.first.name).to_a).to eq([@players.first])
|
479
476
|
end
|
480
477
|
|
481
|
-
describe
|
482
|
-
it
|
478
|
+
describe '#all' do
|
479
|
+
it 'works without options' do
|
483
480
|
expect(@abstract_model.all.to_a).to match_array @players
|
484
481
|
end
|
485
482
|
|
486
|
-
it
|
487
|
-
expect(@abstract_model.all(:
|
483
|
+
it 'supports eager loading' do
|
484
|
+
expect(@abstract_model.all(include: :team).inclusions.collect { |i| i.class_name }).to eq(['Team'])
|
488
485
|
end
|
489
486
|
|
490
|
-
it
|
491
|
-
expect(@abstract_model.all(:
|
487
|
+
it 'supports limiting' do
|
488
|
+
expect(@abstract_model.all(limit: 2).to_a).to have(2).items
|
492
489
|
end
|
493
490
|
|
494
|
-
it
|
495
|
-
expect(@abstract_model.all(:
|
491
|
+
it 'supports retrieval by bulk_ids' do
|
492
|
+
expect(@abstract_model.all(bulk_ids: @players[0..1].collect { |player| player.id.to_s }).to_a).to match_array @players[0..1]
|
496
493
|
end
|
497
494
|
|
498
|
-
it
|
499
|
-
expect(@abstract_model.all(:
|
495
|
+
it 'supports pagination' do
|
496
|
+
expect(@abstract_model.all(sort: 'players._id', page: 2, per: 1).to_a).to eq(@players[1..1])
|
500
497
|
# To prevent RSpec matcher to call Mongoid::Criteria#== method,
|
501
498
|
# (we want to test equality of query result, not of Mongoid criteria)
|
502
499
|
# to_a is added to invoke Mongoid query
|
503
500
|
end
|
504
501
|
|
505
|
-
it
|
506
|
-
expect(@abstract_model.all(:
|
507
|
-
expect(@abstract_model.all(:
|
502
|
+
it 'supports ordering' do
|
503
|
+
expect(@abstract_model.all(sort: 'players._id', sort_reverse: true).to_a).to eq(@players.sort)
|
504
|
+
expect(@abstract_model.all(sort: 'players._id', sort_reverse: false).to_a).to eq(@players.sort.reverse)
|
508
505
|
end
|
509
506
|
|
510
|
-
it
|
511
|
-
expect(@abstract_model.all(:
|
507
|
+
it 'supports querying' do
|
508
|
+
expect(@abstract_model.all(query: @players[1].name)).to eq(@players[1..1])
|
512
509
|
end
|
513
510
|
|
514
|
-
it
|
515
|
-
expect(@abstract_model.all(:
|
511
|
+
it 'supports filtering' do
|
512
|
+
expect(@abstract_model.all(filters: {'name' => {'0000' => {o: 'is', v: @players[1].name}}})).to eq(@players[1..1])
|
516
513
|
end
|
517
514
|
|
518
|
-
it
|
519
|
-
expect(lambda{ @abstract_model.all(:
|
515
|
+
it 'ignores non-existent field name on filtering' do
|
516
|
+
expect(lambda { @abstract_model.all(filters: {'dummy' => {'0000' => {o: 'is', v: @players[1].name}}}) }).not_to raise_error
|
520
517
|
end
|
521
518
|
end
|
522
519
|
end
|
523
520
|
|
524
|
-
describe
|
525
|
-
describe
|
521
|
+
describe 'searching on association' do
|
522
|
+
describe 'whose type is belongs_to' do
|
526
523
|
before do
|
527
524
|
RailsAdmin.config Player do
|
528
525
|
field :team do
|
@@ -530,21 +527,21 @@ describe "RailsAdmin::Adapters::Mongoid", :mongoid => true do
|
|
530
527
|
end
|
531
528
|
end
|
532
529
|
@players = FactoryGirl.create_list(:player, 3)
|
533
|
-
@team = FactoryGirl.create :team, :
|
530
|
+
@team = FactoryGirl.create :team, name: 'foobar'
|
534
531
|
@team.players << @players[1]
|
535
532
|
@abstract_model = RailsAdmin::AbstractModel.new('Player')
|
536
533
|
end
|
537
534
|
|
538
|
-
it
|
539
|
-
expect(@abstract_model.all(:
|
535
|
+
it 'supports querying' do
|
536
|
+
expect(@abstract_model.all(query: 'foobar').to_a).to eq(@players[1..1])
|
540
537
|
end
|
541
538
|
|
542
|
-
it
|
543
|
-
expect(@abstract_model.all(:
|
539
|
+
it 'supports filtering' do
|
540
|
+
expect(@abstract_model.all(filters: {'team' => {'0000' => {o: 'is', v: 'foobar'}}}).to_a).to eq(@players[1..1])
|
544
541
|
end
|
545
542
|
end
|
546
543
|
|
547
|
-
describe
|
544
|
+
describe 'whose type is has_many' do
|
548
545
|
before do
|
549
546
|
RailsAdmin.config Team do
|
550
547
|
field :players do
|
@@ -553,22 +550,22 @@ describe "RailsAdmin::Adapters::Mongoid", :mongoid => true do
|
|
553
550
|
end
|
554
551
|
end
|
555
552
|
@teams = FactoryGirl.create_list(:team, 3)
|
556
|
-
@players = [{:
|
557
|
-
|
558
|
-
|
553
|
+
@players = [{team: @teams[1]},
|
554
|
+
{team: @teams[1], name: 'foobar'},
|
555
|
+
{team: @teams[2]}].collect { |h| FactoryGirl.create :player, h }
|
559
556
|
@abstract_model = RailsAdmin::AbstractModel.new('Team')
|
560
557
|
end
|
561
558
|
|
562
|
-
it
|
563
|
-
expect(@abstract_model.all(:
|
559
|
+
it 'supports querying' do
|
560
|
+
expect(@abstract_model.all(query: 'foobar').to_a).to eq(@teams[1..1])
|
564
561
|
end
|
565
562
|
|
566
|
-
it
|
567
|
-
expect(@abstract_model.all(:
|
563
|
+
it 'supports filtering' do
|
564
|
+
expect(@abstract_model.all(filters: {'players' => {'0000' => {o: 'is', v: 'foobar'}}}).to_a).to eq(@teams[1..1])
|
568
565
|
end
|
569
566
|
end
|
570
567
|
|
571
|
-
describe
|
568
|
+
describe 'whose type is has_and_belongs_to_many' do
|
572
569
|
before do
|
573
570
|
RailsAdmin.config Team do
|
574
571
|
field :fans do
|
@@ -577,22 +574,22 @@ describe "RailsAdmin::Adapters::Mongoid", :mongoid => true do
|
|
577
574
|
end
|
578
575
|
end
|
579
576
|
@teams = FactoryGirl.create_list(:team, 3)
|
580
|
-
@fans = [{}, {:
|
577
|
+
@fans = [{}, {name: 'foobar'}, {}].collect { |h| FactoryGirl.create :fan, h }
|
581
578
|
@teams[1].fans = [@fans[0], @fans[1]]
|
582
579
|
@teams[2].fans << @fans[2]
|
583
580
|
@abstract_model = RailsAdmin::AbstractModel.new('Team')
|
584
581
|
end
|
585
582
|
|
586
|
-
it
|
587
|
-
expect(@abstract_model.all(:
|
583
|
+
it 'supports querying' do
|
584
|
+
expect(@abstract_model.all(query: 'foobar').to_a).to eq(@teams[1..1])
|
588
585
|
end
|
589
586
|
|
590
|
-
it
|
591
|
-
expect(@abstract_model.all(:
|
587
|
+
it 'supports filtering' do
|
588
|
+
expect(@abstract_model.all(filters: {'fans' => {'0000' => {o: 'is', v: 'foobar'}}}).to_a).to eq(@teams[1..1])
|
592
589
|
end
|
593
590
|
end
|
594
591
|
|
595
|
-
describe
|
592
|
+
describe 'whose type is embedded has_many' do
|
596
593
|
before do
|
597
594
|
RailsAdmin.config FieldTest do
|
598
595
|
field :embeds do
|
@@ -601,224 +598,221 @@ describe "RailsAdmin::Adapters::Mongoid", :mongoid => true do
|
|
601
598
|
end
|
602
599
|
end
|
603
600
|
@field_tests = FactoryGirl.create_list(:field_test, 3)
|
604
|
-
@field_tests[0].embeds.create :
|
605
|
-
@field_tests[1].embeds.create :
|
601
|
+
@field_tests[0].embeds.create name: 'foo'
|
602
|
+
@field_tests[1].embeds.create name: 'bar'
|
606
603
|
@abstract_model = RailsAdmin::AbstractModel.new('FieldTest')
|
607
604
|
end
|
608
605
|
|
609
|
-
it
|
610
|
-
expect(@abstract_model.all(:
|
606
|
+
it 'supports querying' do
|
607
|
+
expect(@abstract_model.all(query: 'bar').to_a).to eq(@field_tests[1..1])
|
611
608
|
end
|
612
609
|
|
613
|
-
it
|
614
|
-
expect(@abstract_model.all(:
|
610
|
+
it 'supports filtering' do
|
611
|
+
expect(@abstract_model.all(filters: {'embeds' => {'0000' => {o: 'is', v: 'bar'}}}).to_a).to eq(@field_tests[1..1])
|
615
612
|
end
|
616
613
|
end
|
617
614
|
end
|
618
615
|
|
619
|
-
describe
|
616
|
+
describe '#query_conditions' do
|
620
617
|
before do
|
621
618
|
@abstract_model = RailsAdmin::AbstractModel.new('Player')
|
622
|
-
@players = [{}, {:
|
623
|
-
|
619
|
+
@players = [{}, {name: 'Many foos'}, {position: 'foo shortage'}].
|
620
|
+
collect { |h| FactoryGirl.create :player, h }
|
624
621
|
end
|
625
622
|
|
626
|
-
it
|
627
|
-
expect(@abstract_model.all(:
|
623
|
+
it 'makes correct query' do
|
624
|
+
expect(@abstract_model.all(query: 'foo').to_a).to match_array @players[1..2]
|
628
625
|
end
|
629
626
|
end
|
630
627
|
|
631
|
-
describe
|
628
|
+
describe '#filter_conditions' do
|
632
629
|
before do
|
633
630
|
@abstract_model = RailsAdmin::AbstractModel.new('Player')
|
634
|
-
@team = FactoryGirl.create :team, :
|
635
|
-
@players = [{}, {:
|
636
|
-
|
631
|
+
@team = FactoryGirl.create :team, name: 'king of bar'
|
632
|
+
@players = [{}, {team: @team}, {name: 'Many foos', team: @team}, {name: 'Great foo'}].
|
633
|
+
collect { |h| FactoryGirl.create :player, h }
|
637
634
|
end
|
638
635
|
|
639
|
-
it
|
640
|
-
expect(@abstract_model.all(:
|
641
|
-
{"name" => {"0000" => {:o => "like", :v => "foo"}},
|
642
|
-
"team" => {"0001" => {:o => "like", :v => "bar"}}}
|
643
|
-
)).to eq([@players[2]])
|
636
|
+
it 'makes correct query' do
|
637
|
+
expect(@abstract_model.all(filters: {'name' => {'0000' => {o: 'like', v: 'foo'}}, 'team' => {'0001' => {o: 'like', v: 'bar'}}})).to eq([@players[2]])
|
644
638
|
end
|
645
639
|
end
|
646
640
|
|
647
|
-
describe
|
641
|
+
describe '#build_statement' do
|
648
642
|
before do
|
649
643
|
@abstract_model = RailsAdmin::AbstractModel.new('FieldTest')
|
650
644
|
end
|
651
645
|
|
652
646
|
it "ignores '_discard' operator or value" do
|
653
|
-
[[
|
647
|
+
[['_discard', ''], ['', '_discard']].each do |value, operator|
|
654
648
|
expect(@abstract_model.send(:build_statement, :name, :string, value, operator)).to be_nil
|
655
649
|
end
|
656
650
|
end
|
657
651
|
|
658
652
|
it "supports '_blank' operator" do
|
659
|
-
[[
|
660
|
-
expect(@abstract_model.send(:build_statement, :name, :string, value, operator)).to eq(
|
653
|
+
[['_blank', ''], ['', '_blank']].each do |value, operator|
|
654
|
+
expect(@abstract_model.send(:build_statement, :name, :string, value, operator)).to eq(name: {'$in' => [nil, '']})
|
661
655
|
end
|
662
656
|
end
|
663
657
|
|
664
658
|
it "supports '_present' operator" do
|
665
|
-
[[
|
666
|
-
expect(@abstract_model.send(:build_statement, :name, :string, value, operator)).to eq(
|
659
|
+
[['_present', ''], ['', '_present']].each do |value, operator|
|
660
|
+
expect(@abstract_model.send(:build_statement, :name, :string, value, operator)).to eq(name: {'$nin' => [nil, '']})
|
667
661
|
end
|
668
662
|
end
|
669
663
|
|
670
664
|
it "supports '_null' operator" do
|
671
|
-
[[
|
672
|
-
expect(@abstract_model.send(:build_statement, :name, :string, value, operator)).to eq(
|
665
|
+
[['_null', ''], ['', '_null']].each do |value, operator|
|
666
|
+
expect(@abstract_model.send(:build_statement, :name, :string, value, operator)).to eq(name: nil)
|
673
667
|
end
|
674
668
|
end
|
675
669
|
|
676
670
|
it "supports '_not_null' operator" do
|
677
|
-
[[
|
678
|
-
expect(@abstract_model.send(:build_statement, :name, :string, value, operator)).to eq(
|
671
|
+
[['_not_null', ''], ['', '_not_null']].each do |value, operator|
|
672
|
+
expect(@abstract_model.send(:build_statement, :name, :string, value, operator)).to eq(name: {'$ne' => nil})
|
679
673
|
end
|
680
674
|
end
|
681
675
|
|
682
676
|
it "supports '_empty' operator" do
|
683
|
-
[[
|
684
|
-
expect(@abstract_model.send(:build_statement, :name, :string, value, operator)).to eq(
|
677
|
+
[['_empty', ''], ['', '_empty']].each do |value, operator|
|
678
|
+
expect(@abstract_model.send(:build_statement, :name, :string, value, operator)).to eq(name: '')
|
685
679
|
end
|
686
680
|
end
|
687
681
|
|
688
682
|
it "supports '_not_empty' operator" do
|
689
|
-
[[
|
690
|
-
expect(@abstract_model.send(:build_statement, :name, :string, value, operator)).to eq(
|
683
|
+
[['_not_empty', ''], ['', '_not_empty']].each do |value, operator|
|
684
|
+
expect(@abstract_model.send(:build_statement, :name, :string, value, operator)).to eq(name: {'$ne' => ''})
|
691
685
|
end
|
692
686
|
end
|
693
687
|
|
694
|
-
it
|
695
|
-
|
696
|
-
expect(@abstract_model.send(:build_statement, :field, :boolean, value, nil)).to eq(
|
688
|
+
it 'supports boolean type query' do
|
689
|
+
%w(false f 0).each do |value|
|
690
|
+
expect(@abstract_model.send(:build_statement, :field, :boolean, value, nil)).to eq(field: false)
|
697
691
|
end
|
698
|
-
|
699
|
-
expect(@abstract_model.send(:build_statement, :field, :boolean, value, nil)).to eq(
|
692
|
+
%w(true t 1).each do |value|
|
693
|
+
expect(@abstract_model.send(:build_statement, :field, :boolean, value, nil)).to eq(field: true)
|
700
694
|
end
|
701
695
|
expect(@abstract_model.send(:build_statement, :field, :boolean, 'word', nil)).to be_nil
|
702
696
|
end
|
703
697
|
|
704
|
-
it
|
705
|
-
expect(@abstract_model.send(:build_statement, :field, :integer,
|
698
|
+
it 'supports integer type query' do
|
699
|
+
expect(@abstract_model.send(:build_statement, :field, :integer, '1', nil)).to eq(field: 1)
|
706
700
|
expect(@abstract_model.send(:build_statement, :field, :integer, 'word', nil)).to be_nil
|
707
701
|
end
|
708
702
|
|
709
|
-
it
|
703
|
+
it 'supports integer type range query' do
|
710
704
|
expect(@abstract_model.send(:build_statement, :field, :integer, ['', '', ''], 'between')).to be_nil
|
711
705
|
expect(@abstract_model.send(:build_statement, :field, :integer, ['2', '', ''], 'between')).to be_nil
|
712
|
-
expect(@abstract_model.send(:build_statement, :field, :integer, ['', '3', ''], 'between')).to eq(
|
713
|
-
expect(@abstract_model.send(:build_statement, :field, :integer, ['', '', '5'], 'between')).to eq(
|
714
|
-
expect(@abstract_model.send(:build_statement, :field, :integer, ['' , '10', '20'], 'between')).to eq(
|
715
|
-
expect(@abstract_model.send(:build_statement, :field, :integer,
|
716
|
-
expect(@abstract_model.send(:build_statement, :field, :integer, ['', 'word1', ''
|
706
|
+
expect(@abstract_model.send(:build_statement, :field, :integer, ['', '3', ''], 'between')).to eq(field: {'$gte' => 3})
|
707
|
+
expect(@abstract_model.send(:build_statement, :field, :integer, ['', '', '5'], 'between')).to eq(field: {'$lte' => 5})
|
708
|
+
expect(@abstract_model.send(:build_statement, :field, :integer, ['' , '10', '20'], 'between')).to eq(field: {'$gte' => 10, '$lte' => 20})
|
709
|
+
expect(@abstract_model.send(:build_statement, :field, :integer, %w(15 10 20), 'between')).to eq(field: {'$gte' => 10, '$lte' => 20})
|
710
|
+
expect(@abstract_model.send(:build_statement, :field, :integer, ['', 'word1', ''], 'between')).to be_nil
|
717
711
|
expect(@abstract_model.send(:build_statement, :field, :integer, ['', '' , 'word2'], 'between')).to be_nil
|
718
712
|
expect(@abstract_model.send(:build_statement, :field, :integer, ['', 'word3', 'word4'], 'between')).to be_nil
|
719
713
|
end
|
720
714
|
|
721
|
-
it
|
722
|
-
expect(@abstract_model.send(:build_statement, :field, :decimal,
|
715
|
+
it 'supports both decimal and float type queries' do
|
716
|
+
expect(@abstract_model.send(:build_statement, :field, :decimal, '1.1', nil)).to eq(field: 1.1)
|
723
717
|
expect(@abstract_model.send(:build_statement, :field, :decimal, 'word', nil)).to be_nil
|
724
|
-
expect(@abstract_model.send(:build_statement, :field, :decimal,
|
718
|
+
expect(@abstract_model.send(:build_statement, :field, :decimal, '1.1' , 'default')).to eq(field: 1.1)
|
725
719
|
expect(@abstract_model.send(:build_statement, :field, :decimal, 'word', 'default')).to be_nil
|
726
|
-
expect(@abstract_model.send(:build_statement, :field, :decimal,
|
720
|
+
expect(@abstract_model.send(:build_statement, :field, :decimal, '1.1' , 'between')).to eq(field: 1.1)
|
727
721
|
expect(@abstract_model.send(:build_statement, :field, :decimal, 'word', 'between')).to be_nil
|
728
|
-
expect(@abstract_model.send(:build_statement, :field, :decimal, ['6.1', '' , ''
|
729
|
-
expect(@abstract_model.send(:build_statement, :field, :decimal, ['7.1', '10.1', ''
|
730
|
-
expect(@abstract_model.send(:build_statement, :field, :decimal, ['8.1', '' , '20.1'], 'default')).to eq(
|
731
|
-
expect(@abstract_model.send(:build_statement, :field, :decimal, ['9.1', '10.1', '20.1'], 'default')).to eq(
|
722
|
+
expect(@abstract_model.send(:build_statement, :field, :decimal, ['6.1', '' , ''], 'default')).to eq(field: 6.1)
|
723
|
+
expect(@abstract_model.send(:build_statement, :field, :decimal, ['7.1', '10.1', ''], 'default')).to eq(field: 7.1)
|
724
|
+
expect(@abstract_model.send(:build_statement, :field, :decimal, ['8.1', '' , '20.1'], 'default')).to eq(field: 8.1)
|
725
|
+
expect(@abstract_model.send(:build_statement, :field, :decimal, ['9.1', '10.1', '20.1'], 'default')).to eq(field: 9.1)
|
732
726
|
expect(@abstract_model.send(:build_statement, :field, :decimal, ['', '', ''], 'between')).to be_nil
|
733
727
|
expect(@abstract_model.send(:build_statement, :field, :decimal, ['2.1', '', ''], 'between')).to be_nil
|
734
|
-
expect(@abstract_model.send(:build_statement, :field, :decimal, ['', '3.1', ''], 'between')).to eq(
|
735
|
-
expect(@abstract_model.send(:build_statement, :field, :decimal, ['', '', '5.1'], 'between')).to eq(
|
736
|
-
expect(@abstract_model.send(:build_statement, :field, :decimal, ['' , '10.1', '20.1'], 'between')).to eq(
|
737
|
-
expect(@abstract_model.send(:build_statement, :field, :decimal, ['15.1', '10.1', '20.1'], 'between')).to eq(
|
738
|
-
expect(@abstract_model.send(:build_statement, :field, :decimal, ['', 'word1', ''
|
728
|
+
expect(@abstract_model.send(:build_statement, :field, :decimal, ['', '3.1', ''], 'between')).to eq(field: {'$gte' => 3.1})
|
729
|
+
expect(@abstract_model.send(:build_statement, :field, :decimal, ['', '', '5.1'], 'between')).to eq(field: {'$lte' => 5.1})
|
730
|
+
expect(@abstract_model.send(:build_statement, :field, :decimal, ['' , '10.1', '20.1'], 'between')).to eq(field: {'$gte' => 10.1, '$lte' => 20.1})
|
731
|
+
expect(@abstract_model.send(:build_statement, :field, :decimal, ['15.1', '10.1', '20.1'], 'between')).to eq(field: {'$gte' => 10.1, '$lte' => 20.1})
|
732
|
+
expect(@abstract_model.send(:build_statement, :field, :decimal, ['', 'word1', ''], 'between')).to be_nil
|
739
733
|
expect(@abstract_model.send(:build_statement, :field, :decimal, ['', '' , 'word2'], 'between')).to be_nil
|
740
734
|
expect(@abstract_model.send(:build_statement, :field, :decimal, ['', 'word3', 'word4'], 'between')).to be_nil
|
741
735
|
|
742
|
-
expect(@abstract_model.send(:build_statement, :field, :float,
|
736
|
+
expect(@abstract_model.send(:build_statement, :field, :float, '1.1', nil)).to eq(field: 1.1)
|
743
737
|
expect(@abstract_model.send(:build_statement, :field, :float, 'word', nil)).to be_nil
|
744
|
-
expect(@abstract_model.send(:build_statement, :field, :float,
|
738
|
+
expect(@abstract_model.send(:build_statement, :field, :float, '1.1' , 'default')).to eq(field: 1.1)
|
745
739
|
expect(@abstract_model.send(:build_statement, :field, :float, 'word', 'default')).to be_nil
|
746
|
-
expect(@abstract_model.send(:build_statement, :field, :float,
|
740
|
+
expect(@abstract_model.send(:build_statement, :field, :float, '1.1' , 'between')).to eq(field: 1.1)
|
747
741
|
expect(@abstract_model.send(:build_statement, :field, :float, 'word', 'between')).to be_nil
|
748
|
-
expect(@abstract_model.send(:build_statement, :field, :float, ['6.1', '' , ''
|
749
|
-
expect(@abstract_model.send(:build_statement, :field, :float, ['7.1', '10.1', ''
|
750
|
-
expect(@abstract_model.send(:build_statement, :field, :float, ['8.1', '' , '20.1'], 'default')).to eq(
|
751
|
-
expect(@abstract_model.send(:build_statement, :field, :float, ['9.1', '10.1', '20.1'], 'default')).to eq(
|
742
|
+
expect(@abstract_model.send(:build_statement, :field, :float, ['6.1', '' , ''], 'default')).to eq(field: 6.1)
|
743
|
+
expect(@abstract_model.send(:build_statement, :field, :float, ['7.1', '10.1', ''], 'default')).to eq(field: 7.1)
|
744
|
+
expect(@abstract_model.send(:build_statement, :field, :float, ['8.1', '' , '20.1'], 'default')).to eq(field: 8.1)
|
745
|
+
expect(@abstract_model.send(:build_statement, :field, :float, ['9.1', '10.1', '20.1'], 'default')).to eq(field: 9.1)
|
752
746
|
expect(@abstract_model.send(:build_statement, :field, :float, ['', '', ''], 'between')).to be_nil
|
753
747
|
expect(@abstract_model.send(:build_statement, :field, :float, ['2.1', '', ''], 'between')).to be_nil
|
754
|
-
expect(@abstract_model.send(:build_statement, :field, :float, ['', '3.1', ''], 'between')).to eq(
|
755
|
-
expect(@abstract_model.send(:build_statement, :field, :float, ['', '', '5.1'], 'between')).to eq(
|
756
|
-
expect(@abstract_model.send(:build_statement, :field, :float, ['' , '10.1', '20.1'], 'between')).to eq(
|
757
|
-
expect(@abstract_model.send(:build_statement, :field, :float, ['15.1', '10.1', '20.1'], 'between')).to eq(
|
758
|
-
expect(@abstract_model.send(:build_statement, :field, :float, ['', 'word1', ''
|
748
|
+
expect(@abstract_model.send(:build_statement, :field, :float, ['', '3.1', ''], 'between')).to eq(field: {'$gte' => 3.1})
|
749
|
+
expect(@abstract_model.send(:build_statement, :field, :float, ['', '', '5.1'], 'between')).to eq(field: {'$lte' => 5.1})
|
750
|
+
expect(@abstract_model.send(:build_statement, :field, :float, ['' , '10.1', '20.1'], 'between')).to eq(field: {'$gte' => 10.1, '$lte' => 20.1})
|
751
|
+
expect(@abstract_model.send(:build_statement, :field, :float, ['15.1', '10.1', '20.1'], 'between')).to eq(field: {'$gte' => 10.1, '$lte' => 20.1})
|
752
|
+
expect(@abstract_model.send(:build_statement, :field, :float, ['', 'word1', ''], 'between')).to be_nil
|
759
753
|
expect(@abstract_model.send(:build_statement, :field, :float, ['', '' , 'word2'], 'between')).to be_nil
|
760
754
|
expect(@abstract_model.send(:build_statement, :field, :float, ['', 'word3', 'word4'], 'between')).to be_nil
|
761
755
|
end
|
762
756
|
|
763
|
-
it
|
764
|
-
expect(@abstract_model.send(:build_statement, :field, :string,
|
765
|
-
expect(@abstract_model.send(:build_statement, :field, :string,
|
766
|
-
expect(@abstract_model.send(:build_statement, :field, :string,
|
767
|
-
expect(@abstract_model.send(:build_statement, :field, :string,
|
768
|
-
expect(@abstract_model.send(:build_statement, :field, :string,
|
769
|
-
expect(@abstract_model.send(:build_statement, :field, :string,
|
770
|
-
expect(@abstract_model.send(:build_statement, :field, :string,
|
757
|
+
it 'supports string type query' do
|
758
|
+
expect(@abstract_model.send(:build_statement, :field, :string, '', nil)).to be_nil
|
759
|
+
expect(@abstract_model.send(:build_statement, :field, :string, 'foo', 'was')).to be_nil
|
760
|
+
expect(@abstract_model.send(:build_statement, :field, :string, 'foo', 'default')).to eq(field: /foo/i)
|
761
|
+
expect(@abstract_model.send(:build_statement, :field, :string, 'foo', 'like')).to eq(field: /foo/i)
|
762
|
+
expect(@abstract_model.send(:build_statement, :field, :string, 'foo', 'starts_with')).to eq(field: /^foo/i)
|
763
|
+
expect(@abstract_model.send(:build_statement, :field, :string, 'foo', 'ends_with')).to eq(field: /foo$/i)
|
764
|
+
expect(@abstract_model.send(:build_statement, :field, :string, 'foo', 'is')).to eq(field: 'foo')
|
771
765
|
end
|
772
766
|
|
773
|
-
it
|
774
|
-
expect(@abstract_model.send(:filter_conditions,
|
775
|
-
expect(@abstract_model.send(:filter_conditions,
|
776
|
-
expect(@abstract_model.send(:filter_conditions,
|
777
|
-
expect(@abstract_model.send(:filter_conditions,
|
767
|
+
it 'supports date type query' do
|
768
|
+
expect(@abstract_model.send(:filter_conditions, 'date_field' => {'1' => {v: ['', '01/02/2012', '01/03/2012'], o: 'between'}})).to eq('$and' => [{'date_field' => {'$gte' => Date.new(2012, 1, 2), '$lte' => Date.new(2012, 1, 3)}}])
|
769
|
+
expect(@abstract_model.send(:filter_conditions, 'date_field' => {'1' => {v: ['', '01/03/2012', ''], o: 'between'}})).to eq('$and' => [{'date_field' => {'$gte' => Date.new(2012, 1, 3)}}])
|
770
|
+
expect(@abstract_model.send(:filter_conditions, 'date_field' => {'1' => {v: ['', '', '01/02/2012'], o: 'between'}})).to eq('$and' => [{'date_field' => {'$lte' => Date.new(2012, 1, 2)}}])
|
771
|
+
expect(@abstract_model.send(:filter_conditions, 'date_field' => {'1' => {v: ['01/02/2012'], o: 'default'}})).to eq('$and' => [{'date_field' => {'$gte' => Date.new(2012, 1, 2), '$lte' => Date.new(2012, 1, 2)}}])
|
778
772
|
end
|
779
773
|
|
780
|
-
it
|
781
|
-
expect(@abstract_model.send(:filter_conditions,
|
782
|
-
expect(@abstract_model.send(:filter_conditions,
|
783
|
-
expect(@abstract_model.send(:filter_conditions,
|
784
|
-
expect(@abstract_model.send(:filter_conditions,
|
774
|
+
it 'supports datetime type query' do
|
775
|
+
expect(@abstract_model.send(:filter_conditions, 'datetime_field' => {'1' => {v: ['', '01/02/2012', '01/03/2012'], o: 'between'}})).to eq('$and' => [{'datetime_field' => {'$gte' => Time.local(2012, 1, 2), '$lte' => Time.local(2012, 1, 3).end_of_day}}])
|
776
|
+
expect(@abstract_model.send(:filter_conditions, 'datetime_field' => {'1' => {v: ['', '01/03/2012', ''], o: 'between'}})).to eq('$and' => [{'datetime_field' => {'$gte' => Time.local(2012, 1, 3)}}])
|
777
|
+
expect(@abstract_model.send(:filter_conditions, 'datetime_field' => {'1' => {v: ['', '', '01/02/2012'], o: 'between'}})).to eq('$and' => [{'datetime_field' => {'$lte' => Time.local(2012, 1, 2).end_of_day}}])
|
778
|
+
expect(@abstract_model.send(:filter_conditions, 'datetime_field' => {'1' => {v: ['01/02/2012'], o: 'default'}})).to eq('$and' => [{'datetime_field' => {'$gte' => Time.local(2012, 1, 2), '$lte' => Time.local(2012, 1, 2).end_of_day}}])
|
785
779
|
end
|
786
780
|
|
787
|
-
it
|
788
|
-
expect(@abstract_model.send(:build_statement, :field, :enum,
|
781
|
+
it 'supports enum type query' do
|
782
|
+
expect(@abstract_model.send(:build_statement, :field, :enum, '1', nil)).to eq(field: {'$in' => ['1']})
|
789
783
|
end
|
790
784
|
end
|
791
785
|
|
792
|
-
describe
|
786
|
+
describe 'model attribute method' do
|
793
787
|
before do
|
794
788
|
@abstract_model = RailsAdmin::AbstractModel.new('Player')
|
795
789
|
end
|
796
790
|
|
797
|
-
it
|
791
|
+
it '#scoped returns relation object' do
|
798
792
|
expect(@abstract_model.scoped).to be_instance_of(Mongoid::Criteria)
|
799
793
|
end
|
800
794
|
|
801
|
-
it
|
795
|
+
it '#table_name works' do
|
802
796
|
expect(@abstract_model.table_name).to eq('players')
|
803
797
|
end
|
804
798
|
end
|
805
799
|
|
806
|
-
describe
|
800
|
+
describe 'serialization' do
|
807
801
|
before do
|
808
802
|
@abstract_model = RailsAdmin::AbstractModel.new('FieldTest')
|
809
803
|
@controller = RailsAdmin::MainController.new
|
810
804
|
end
|
811
805
|
|
812
|
-
it
|
813
|
-
params = HashWithIndifferentAccess.new(
|
806
|
+
it 'accepts array value' do
|
807
|
+
params = HashWithIndifferentAccess.new(array_field: '[1, 3]')
|
814
808
|
@controller.send(:sanitize_params_for!, 'create', @abstract_model.config, params)
|
815
809
|
expect(params[:array_field]).to eq([1, 3])
|
816
810
|
end
|
817
811
|
|
818
|
-
it
|
819
|
-
params = HashWithIndifferentAccess.new(
|
812
|
+
it 'accepts hash value' do
|
813
|
+
params = HashWithIndifferentAccess.new(hash_field: '{a: 1, b: 3}')
|
820
814
|
@controller.send(:sanitize_params_for!, 'create', @abstract_model.config, params)
|
821
|
-
expect(params[:hash_field]).to eq(
|
815
|
+
expect(params[:hash_field]).to eq('a' => 1, 'b' => 3)
|
822
816
|
end
|
823
817
|
end
|
824
818
|
end
|