radiant 0.8.0 → 0.8.1
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of radiant might be problematic. Click here for more details.
- data/CHANGELOG +33 -1
- data/CONTRIBUTORS +15 -2
- data/INSTALL +9 -7
- data/README +11 -7
- data/app/controllers/admin/layouts_controller.rb +5 -2
- data/app/controllers/admin/pages_controller.rb +8 -5
- data/app/controllers/admin/snippets_controller.rb +5 -2
- data/app/controllers/application_controller.rb +7 -0
- data/app/helpers/admin/node_helper.rb +2 -2
- data/app/helpers/application_helper.rb +2 -2
- data/app/models/radiant/config.rb +36 -4
- data/app/models/standard_tags.rb +1 -1
- data/app/views/admin/layouts/index.html.haml +15 -12
- data/app/views/admin/page_parts/_page_part.html.haml +2 -2
- data/app/views/admin/pages/index.html.haml +1 -1
- data/app/views/admin/snippets/_form.html.haml +1 -1
- data/app/views/admin/snippets/index.html.haml +14 -10
- data/config/database.db2.yml +20 -0
- data/config/environment.rb +4 -4
- data/config/environments/test.rb +1 -2
- data/features/support/env.rb +2 -1
- data/lib/generators/extension/extension_generator.rb +5 -0
- data/lib/generators/extension/templates/RSpecRakefile +11 -8
- data/lib/generators/extension/templates/cucumber.yml +1 -0
- data/lib/generators/extension/templates/cucumber_env.rb +16 -0
- data/lib/generators/extension/templates/cucumber_paths.rb +14 -0
- data/lib/generators/extension/templates/extension.rb +1 -1
- data/lib/generators/instance/instance_generator.rb +1 -1
- data/lib/generators/instance/templates/databases/db2.yml +40 -0
- data/lib/generators/instance/templates/instance_environment.rb +6 -6
- data/lib/local_time.rb +3 -9
- data/lib/radiant.rb +1 -1
- data/lib/radiant/cache.rb +10 -8
- data/lib/radiant/extension.rb +36 -0
- data/lib/radiant/extension/script.rb +1 -1
- data/lib/radiant/extension_loader.rb +5 -1
- data/lib/radiant/initializer.rb +52 -4
- data/lib/task_support.rb +33 -0
- data/lib/tasks/cucumber.rake +5 -1
- data/lib/tasks/radiant_config.rake +18 -0
- data/lib/tasks/release.rake +1 -0
- data/public/javascripts/admin/admin.js +1 -1
- data/spec/controllers/admin/layouts_controller_spec.rb +18 -12
- data/spec/controllers/admin/pages_controller_spec.rb +35 -29
- data/spec/controllers/admin/snippets_controller_spec.rb +11 -5
- data/spec/controllers/admin/welcome_controller_spec.rb +1 -1
- data/spec/controllers/application_controller_spec.rb +18 -0
- data/spec/fixtures/radiant_config.yml +10 -0
- data/spec/generators/extension_generator_spec.rb +12 -0
- data/spec/helpers/admin/node_helper_spec.rb +6 -0
- data/spec/helpers/application_helper_spec.rb +1 -1
- data/spec/lib/radiant/extension_loader_spec.rb +17 -0
- data/spec/lib/radiant/extension_spec.rb +28 -0
- data/spec/lib/radiant/initializer_spec.rb +34 -0
- data/spec/lib/task_support_spec.rb +42 -0
- data/spec/models/page_spec.rb +6 -2
- data/spec/models/radiant/config_spec.rb +42 -1
- data/spec/models/standard_tags_spec.rb +2 -2
- data/test/fixtures/extensions/01_basic/app/metal/basic_metal.rb +9 -0
- data/test/fixtures/extensions/02_overriding/app/metal/basic_metal.rb +9 -0
- data/vendor/extensions/textile_filter/textile.html +2 -2
- data/vendor/plugins/dataset/CHANGELOG +2 -1
- data/vendor/plugins/dataset/Rakefile +3 -0
- data/vendor/plugins/dataset/VERSION.yml +2 -2
- data/vendor/plugins/dataset/dataset.gemspec +9 -3
- data/vendor/plugins/dataset/lib/dataset.rb +3 -0
- data/vendor/radius/lib/radius.rb +5 -0
- data/vendor/radius/test/radius_test.rb +6 -0
- data/vendor/rails/actionmailer/CHANGELOG +8 -0
- data/vendor/rails/actionmailer/Rakefile +3 -2
- data/vendor/rails/actionmailer/lib/action_mailer/base.rb +2 -1
- data/vendor/rails/actionmailer/lib/action_mailer/version.rb +1 -1
- data/vendor/rails/actionmailer/test/abstract_unit.rb +0 -3
- data/vendor/rails/actionmailer/test/mail_service_test.rb +3 -2
- data/vendor/rails/actionpack/CHANGELOG +16 -0
- data/vendor/rails/actionpack/Rakefile +5 -3
- data/vendor/rails/actionpack/lib/action_controller.rb +2 -7
- data/vendor/rails/actionpack/lib/action_controller/assertions/response_assertions.rb +13 -3
- data/vendor/rails/actionpack/lib/action_controller/base.rb +12 -3
- data/vendor/rails/actionpack/lib/action_controller/caching.rb +1 -1
- data/vendor/rails/actionpack/lib/action_controller/caching/actions.rb +9 -1
- data/vendor/rails/actionpack/lib/action_controller/caching/sweeper.rb +45 -0
- data/vendor/rails/actionpack/lib/action_controller/caching/sweeping.rb +0 -42
- data/vendor/rails/actionpack/lib/action_controller/cookies.rb +1 -1
- data/vendor/rails/actionpack/lib/action_controller/dispatcher.rb +21 -6
- data/vendor/rails/actionpack/lib/action_controller/failsafe.rb +40 -6
- data/vendor/rails/actionpack/lib/action_controller/flash.rb +11 -3
- data/vendor/rails/actionpack/lib/action_controller/http_authentication.rb +7 -3
- data/vendor/rails/actionpack/lib/action_controller/integration.rb +5 -12
- data/vendor/rails/actionpack/lib/action_controller/middlewares.rb +0 -1
- data/vendor/rails/actionpack/lib/action_controller/params_parser.rb +6 -0
- data/vendor/rails/actionpack/lib/action_controller/reloader.rb +47 -7
- data/vendor/rails/actionpack/lib/action_controller/request.rb +6 -2
- data/vendor/rails/actionpack/lib/action_controller/request_forgery_protection.rb +2 -1
- data/vendor/rails/actionpack/lib/action_controller/resources.rb +17 -13
- data/vendor/rails/actionpack/lib/action_controller/response.rb +8 -2
- data/vendor/rails/actionpack/lib/action_controller/routing.rb +3 -0
- data/vendor/rails/actionpack/lib/action_controller/routing/route_set.rb +20 -6
- data/vendor/rails/actionpack/lib/action_controller/streaming.rb +4 -2
- data/vendor/rails/actionpack/lib/action_controller/test_process.rb +9 -1
- data/vendor/rails/actionpack/lib/action_controller/url_rewriter.rb +1 -1
- data/vendor/rails/actionpack/lib/action_pack/version.rb +1 -1
- data/vendor/rails/actionpack/lib/action_view/helpers.rb +1 -1
- data/vendor/rails/actionpack/lib/action_view/helpers/asset_tag_helper.rb +21 -9
- data/vendor/rails/actionpack/lib/action_view/helpers/atom_feed_helper.rb +1 -1
- data/vendor/rails/actionpack/lib/action_view/helpers/date_helper.rb +2 -2
- data/vendor/rails/actionpack/lib/action_view/helpers/form_helper.rb +26 -12
- data/vendor/rails/actionpack/lib/action_view/helpers/form_options_helper.rb +71 -1
- data/vendor/rails/actionpack/lib/action_view/helpers/form_tag_helper.rb +10 -4
- data/vendor/rails/actionpack/lib/action_view/helpers/number_helper.rb +1 -1
- data/vendor/rails/actionpack/lib/action_view/helpers/prototype_helper.rb +7 -7
- data/vendor/rails/actionpack/lib/action_view/helpers/scriptaculous_helper.rb +5 -5
- data/vendor/rails/actionpack/lib/action_view/helpers/tag_helper.rb +1 -1
- data/vendor/rails/actionpack/lib/action_view/helpers/text_helper.rb +23 -14
- data/vendor/rails/actionpack/lib/action_view/helpers/url_helper.rb +2 -2
- data/vendor/rails/actionpack/lib/action_view/locale/en.yml +4 -0
- data/vendor/rails/actionpack/lib/action_view/paths.rb +1 -1
- data/vendor/rails/actionpack/lib/action_view/template.rb +22 -33
- data/vendor/rails/actionpack/test/abstract_unit.rb +17 -1
- data/vendor/rails/actionpack/test/activerecord/active_record_store_test.rb +3 -3
- data/vendor/rails/actionpack/test/controller/action_pack_assertions_test.rb +27 -0
- data/vendor/rails/actionpack/test/controller/caching_test.rb +40 -1
- data/vendor/rails/actionpack/test/controller/cookie_test.rb +16 -0
- data/vendor/rails/actionpack/test/controller/dispatcher_test.rb +59 -18
- data/vendor/rails/actionpack/test/controller/failsafe_test.rb +60 -0
- data/vendor/rails/actionpack/test/controller/filter_params_test.rb +3 -1
- data/vendor/rails/actionpack/test/controller/flash_test.rb +6 -1
- data/vendor/rails/actionpack/test/controller/http_basic_authentication_test.rb +25 -0
- data/vendor/rails/actionpack/test/controller/http_digest_authentication_test.rb +63 -9
- data/vendor/rails/actionpack/test/controller/integration_test.rb +31 -3
- data/vendor/rails/actionpack/test/controller/rack_test.rb +18 -1
- data/vendor/rails/actionpack/test/controller/redirect_test.rb +4 -1
- data/vendor/rails/actionpack/test/controller/reloader_test.rb +124 -0
- data/vendor/rails/actionpack/test/controller/render_test.rb +19 -9
- data/vendor/rails/actionpack/test/controller/request/json_params_parsing_test.rb +24 -4
- data/vendor/rails/actionpack/test/controller/request/multipart_params_parsing_test.rb +1 -62
- data/vendor/rails/actionpack/test/controller/request/test_request_test.rb +35 -0
- data/vendor/rails/actionpack/test/controller/request/url_encoded_params_parsing_test.rb +0 -38
- data/vendor/rails/actionpack/test/controller/request/xml_params_parsing_test.rb +15 -0
- data/vendor/rails/actionpack/test/controller/request_forgery_protection_test.rb +6 -5
- data/vendor/rails/actionpack/test/controller/request_test.rb +218 -230
- data/vendor/rails/actionpack/test/controller/resources_test.rb +52 -0
- data/vendor/rails/actionpack/test/controller/routing_test.rb +28 -2
- data/vendor/rails/actionpack/test/controller/send_file_test.rb +12 -2
- data/vendor/rails/actionpack/test/controller/session/cookie_store_test.rb +9 -32
- data/vendor/rails/actionpack/test/controller/test_test.rb +8 -0
- data/vendor/rails/actionpack/test/controller/url_rewriter_test.rb +29 -3
- data/vendor/rails/actionpack/test/fixtures/failsafe/500.html +1 -0
- data/vendor/rails/actionpack/test/fixtures/public/absolute/test.css +23 -0
- data/vendor/rails/actionpack/test/fixtures/public/absolute/test.js +63 -0
- data/vendor/rails/actionpack/test/template/active_record_helper_test.rb +1 -1
- data/vendor/rails/actionpack/test/template/asset_tag_helper_test.rb +46 -0
- data/vendor/rails/actionpack/test/template/atom_feed_helper_test.rb +29 -0
- data/vendor/rails/actionpack/test/template/form_helper_test.rb +143 -6
- data/vendor/rails/actionpack/test/template/form_options_helper_i18n_test.rb +27 -0
- data/vendor/rails/actionpack/test/template/form_options_helper_test.rb +56 -0
- data/vendor/rails/actionpack/test/template/form_tag_helper_test.rb +23 -6
- data/vendor/rails/actionpack/test/template/prototype_helper_test.rb +11 -11
- data/vendor/rails/actionpack/test/template/template_test.rb +32 -0
- data/vendor/rails/actionpack/test/template/text_helper_test.rb +23 -0
- data/vendor/rails/actionpack/test/template/url_helper_test.rb +8 -0
- data/vendor/rails/activerecord/CHANGELOG +18 -0
- data/vendor/rails/activerecord/Rakefile +26 -9
- data/vendor/rails/activerecord/examples/performance.rb +162 -0
- data/vendor/rails/activerecord/lib/active_record/associations.rb +104 -35
- data/vendor/rails/activerecord/lib/active_record/associations/association_collection.rb +10 -5
- data/vendor/rails/activerecord/lib/active_record/associations/association_proxy.rb +2 -2
- data/vendor/rails/activerecord/lib/active_record/associations/belongs_to_association.rb +22 -4
- data/vendor/rails/activerecord/lib/active_record/associations/belongs_to_polymorphic_association.rb +5 -1
- data/vendor/rails/activerecord/lib/active_record/associations/has_and_belongs_to_many_association.rb +16 -0
- data/vendor/rails/activerecord/lib/active_record/associations/has_many_association.rb +1 -0
- data/vendor/rails/activerecord/lib/active_record/associations/has_many_through_association.rb +13 -3
- data/vendor/rails/activerecord/lib/active_record/associations/has_one_through_association.rb +15 -9
- data/vendor/rails/activerecord/lib/active_record/autosave_association.rb +15 -9
- data/vendor/rails/activerecord/lib/active_record/base.rb +34 -31
- data/vendor/rails/activerecord/lib/active_record/batches.rb +23 -15
- data/vendor/rails/activerecord/lib/active_record/calculations.rb +7 -13
- data/vendor/rails/activerecord/lib/active_record/connection_adapters/abstract/schema_definitions.rb +16 -2
- data/vendor/rails/activerecord/lib/active_record/connection_adapters/abstract/schema_statements.rb +2 -2
- data/vendor/rails/activerecord/lib/active_record/connection_adapters/abstract_adapter.rb +7 -0
- data/vendor/rails/activerecord/lib/active_record/connection_adapters/mysql_adapter.rb +17 -8
- data/vendor/rails/activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb +98 -35
- data/vendor/rails/activerecord/lib/active_record/connection_adapters/sqlite_adapter.rb +15 -0
- data/vendor/rails/activerecord/lib/active_record/dirty.rb +1 -1
- data/vendor/rails/activerecord/lib/active_record/fixtures.rb +14 -11
- data/vendor/rails/activerecord/lib/active_record/i18n_interpolation_deprecation.rb +1 -1
- data/vendor/rails/activerecord/lib/active_record/locale/en.yml +4 -0
- data/vendor/rails/activerecord/lib/active_record/named_scope.rb +3 -8
- data/vendor/rails/activerecord/lib/active_record/reflection.rb +1 -1
- data/vendor/rails/activerecord/lib/active_record/schema_dumper.rb +6 -3
- data/vendor/rails/activerecord/lib/active_record/serialization.rb +3 -2
- data/vendor/rails/activerecord/lib/active_record/serializers/json_serializer.rb +10 -18
- data/vendor/rails/activerecord/lib/active_record/serializers/xml_serializer.rb +6 -2
- data/vendor/rails/activerecord/lib/active_record/session_store.rb +9 -1
- data/vendor/rails/activerecord/lib/active_record/timestamp.rb +39 -9
- data/vendor/rails/activerecord/lib/active_record/validations.rb +149 -80
- data/vendor/rails/activerecord/lib/active_record/version.rb +1 -1
- data/vendor/rails/activerecord/test/cases/adapter_test.rb +12 -0
- data/vendor/rails/activerecord/test/cases/associations/belongs_to_associations_test.rb +102 -22
- data/vendor/rails/activerecord/test/cases/associations/eager_load_nested_include_test.rb +5 -5
- data/vendor/rails/activerecord/test/cases/associations/eager_test.rb +12 -0
- data/vendor/rails/activerecord/test/cases/associations/habtm_join_table_test.rb +56 -0
- data/vendor/rails/activerecord/test/cases/associations/has_many_associations_test.rb +62 -2
- data/vendor/rails/activerecord/test/cases/associations/has_many_through_associations_test.rb +46 -1
- data/vendor/rails/activerecord/test/cases/associations/has_one_through_associations_test.rb +18 -1
- data/vendor/rails/activerecord/test/cases/associations/inner_join_association_test.rb +5 -0
- data/vendor/rails/activerecord/test/cases/associations/join_model_test.rb +4 -4
- data/vendor/rails/activerecord/test/cases/autosave_association_test.rb +22 -0
- data/vendor/rails/activerecord/test/cases/base_test.rb +51 -6
- data/vendor/rails/activerecord/test/cases/calculations_test.rb +14 -14
- data/vendor/rails/activerecord/test/cases/column_definition_test.rb +34 -0
- data/vendor/rails/activerecord/test/cases/copy_table_test_sqlite.rb +5 -5
- data/vendor/rails/activerecord/test/cases/dirty_test.rb +10 -0
- data/vendor/rails/activerecord/test/cases/finder_test.rb +21 -50
- data/vendor/rails/activerecord/test/cases/fixtures_test.rb +6 -1
- data/vendor/rails/activerecord/test/cases/helper.rb +1 -2
- data/vendor/rails/activerecord/test/cases/i18n_test.rb +5 -0
- data/vendor/rails/activerecord/test/cases/json_serialization_test.rb +57 -57
- data/vendor/rails/activerecord/test/cases/method_scoping_test.rb +14 -4
- data/vendor/rails/activerecord/test/cases/migration_test.rb +39 -11
- data/vendor/rails/activerecord/test/cases/modules_test.rb +42 -0
- data/vendor/rails/activerecord/test/cases/named_scope_test.rb +6 -4
- data/vendor/rails/activerecord/test/cases/pk_test.rb +18 -0
- data/vendor/rails/activerecord/test/cases/reflection_test.rb +7 -7
- data/vendor/rails/activerecord/test/cases/schema_dumper_test.rb +35 -7
- data/vendor/rails/activerecord/test/cases/schema_test_postgresql.rb +76 -0
- data/vendor/rails/activerecord/test/cases/timestamp_test.rb +75 -0
- data/vendor/rails/activerecord/test/cases/validations_i18n_test.rb +656 -624
- data/vendor/rails/activerecord/test/cases/validations_test.rb +12 -2
- data/vendor/rails/activerecord/test/cases/xml_serialization_test.rb +20 -0
- data/vendor/rails/activerecord/test/fixtures/fixture_database.sqlite +0 -0
- data/vendor/rails/activerecord/test/fixtures/fixture_database.sqlite3 +0 -0
- data/vendor/rails/activerecord/test/fixtures/fixture_database_2.sqlite +0 -0
- data/vendor/rails/activerecord/test/fixtures/fixture_database_2.sqlite3 +0 -0
- data/vendor/rails/activerecord/test/fixtures/posts.yml +3 -0
- data/vendor/rails/activerecord/test/models/author.rb +5 -0
- data/vendor/rails/activerecord/test/models/comment.rb +5 -1
- data/vendor/rails/activerecord/test/models/company.rb +9 -7
- data/vendor/rails/activerecord/test/models/company_in_module.rb +1 -1
- data/vendor/rails/activerecord/test/models/contract.rb +5 -0
- data/vendor/rails/activerecord/test/models/developer.rb +10 -0
- data/vendor/rails/activerecord/test/models/essay.rb +3 -0
- data/vendor/rails/activerecord/test/models/organization.rb +2 -0
- data/vendor/rails/activerecord/test/models/pet.rb +1 -1
- data/vendor/rails/activerecord/test/models/project.rb +1 -1
- data/vendor/rails/activerecord/test/models/reply.rb +2 -1
- data/vendor/rails/activerecord/test/models/topic.rb +1 -2
- data/vendor/rails/activerecord/test/models/toy.rb +2 -0
- data/vendor/rails/activerecord/test/schema/postgresql_specific_schema.rb +13 -2
- data/vendor/rails/activerecord/test/schema/schema.rb +19 -0
- data/vendor/rails/activeresource/CHANGELOG +16 -0
- data/vendor/rails/activeresource/Rakefile +3 -2
- data/vendor/rails/activeresource/lib/active_resource/base.rb +89 -9
- data/vendor/rails/activeresource/lib/active_resource/connection.rb +73 -8
- data/vendor/rails/activeresource/lib/active_resource/exceptions.rb +66 -0
- data/vendor/rails/activeresource/lib/active_resource/formats/json_format.rb +2 -2
- data/vendor/rails/activeresource/lib/active_resource/validations.rb +20 -4
- data/vendor/rails/activeresource/lib/active_resource/version.rb +1 -1
- data/vendor/rails/activeresource/test/abstract_unit.rb +1 -3
- data/vendor/rails/activeresource/test/base/load_test.rb +16 -1
- data/vendor/rails/activeresource/test/base_errors_test.rb +56 -19
- data/vendor/rails/activeresource/test/base_test.rb +147 -0
- data/vendor/rails/activeresource/test/connection_test.rb +42 -0
- data/vendor/rails/activeresource/test/debug.log +7974 -0
- data/vendor/rails/activeresource/test/fixtures/proxy.rb +4 -0
- data/vendor/rails/activesupport/CHANGELOG +13 -0
- data/vendor/rails/activesupport/lib/active_support/all.rb +8 -0
- data/vendor/rails/activesupport/lib/active_support/cache.rb +14 -1
- data/vendor/rails/activesupport/lib/active_support/cache/mem_cache_store.rb +16 -10
- data/vendor/rails/activesupport/lib/active_support/cache/strategy/local_cache.rb +1 -1
- data/vendor/rails/activesupport/lib/active_support/core_ext/array/conversions.rb +1 -0
- data/vendor/rails/activesupport/lib/active_support/core_ext/date/calculations.rb +2 -1
- data/vendor/rails/activesupport/lib/active_support/core_ext/enumerable.rb +2 -4
- data/vendor/rails/activesupport/lib/active_support/core_ext/hash/conversions.rb +14 -4
- data/vendor/rails/activesupport/lib/active_support/core_ext/kernel/debugger.rb +4 -2
- data/vendor/rails/activesupport/lib/active_support/core_ext/module/attribute_accessors.rb +2 -0
- data/vendor/rails/activesupport/lib/active_support/core_ext/module/delegation.rb +19 -5
- data/vendor/rails/activesupport/lib/active_support/core_ext/module/model_naming.rb +8 -6
- data/vendor/rails/activesupport/lib/active_support/core_ext/numeric/bytes.rb +15 -9
- data/vendor/rails/activesupport/lib/active_support/core_ext/string.rb +1 -0
- data/vendor/rails/activesupport/lib/active_support/core_ext/string/access.rb +29 -5
- data/vendor/rails/activesupport/lib/active_support/core_ext/string/bytesize.rb +5 -0
- data/vendor/rails/activesupport/lib/active_support/core_ext/time/calculations.rb +7 -7
- data/vendor/rails/activesupport/lib/active_support/deprecation.rb +9 -9
- data/vendor/rails/activesupport/lib/active_support/duration.rb +4 -2
- data/vendor/rails/activesupport/lib/active_support/json.rb +1 -22
- data/vendor/rails/activesupport/lib/active_support/json/backends/jsongem.rb +38 -0
- data/vendor/rails/activesupport/lib/active_support/json/backends/yaml.rb +88 -0
- data/vendor/rails/activesupport/lib/active_support/json/decoding.rb +23 -72
- data/vendor/rails/activesupport/lib/active_support/json/encoders/date.rb +9 -8
- data/vendor/rails/activesupport/lib/active_support/json/encoders/date_time.rb +9 -8
- data/vendor/rails/activesupport/lib/active_support/json/encoders/enumerable.rb +14 -9
- data/vendor/rails/activesupport/lib/active_support/json/encoders/false_class.rb +4 -2
- data/vendor/rails/activesupport/lib/active_support/json/encoders/hash.rb +21 -11
- data/vendor/rails/activesupport/lib/active_support/json/encoders/nil_class.rb +4 -2
- data/vendor/rails/activesupport/lib/active_support/json/encoders/numeric.rb +16 -0
- data/vendor/rails/activesupport/lib/active_support/json/encoders/object.rb +6 -2
- data/vendor/rails/activesupport/lib/active_support/json/encoders/regexp.rb +4 -0
- data/vendor/rails/activesupport/lib/active_support/json/encoders/string.rb +5 -32
- data/vendor/rails/activesupport/lib/active_support/json/encoders/symbol.rb +2 -2
- data/vendor/rails/activesupport/lib/active_support/json/encoders/time.rb +9 -8
- data/vendor/rails/activesupport/lib/active_support/json/encoders/true_class.rb +4 -2
- data/vendor/rails/activesupport/lib/active_support/json/encoding.rb +80 -9
- data/vendor/rails/activesupport/lib/active_support/memoizable.rb +1 -1
- data/vendor/rails/activesupport/lib/active_support/message_verifier.rb +16 -3
- data/vendor/rails/activesupport/lib/active_support/multibyte.rb +30 -6
- data/vendor/rails/activesupport/lib/active_support/multibyte/chars.rb +23 -17
- data/vendor/rails/activesupport/lib/active_support/multibyte/utils.rb +61 -0
- data/vendor/rails/activesupport/lib/active_support/ordered_hash.rb +28 -0
- data/vendor/rails/activesupport/lib/active_support/test_case.rb +9 -8
- data/vendor/rails/activesupport/lib/active_support/testing/deprecation.rb +2 -0
- data/vendor/rails/activesupport/lib/active_support/time_with_zone.rb +9 -8
- data/vendor/rails/activesupport/lib/active_support/vendor.rb +6 -7
- data/vendor/rails/activesupport/lib/active_support/vendor/i18n-0.1.3/test/i18n_exceptions_test.rb +0 -1
- data/vendor/rails/activesupport/lib/active_support/vendor/i18n-0.1.3/test/i18n_test.rb +0 -1
- data/vendor/rails/activesupport/lib/active_support/vendor/i18n-0.1.3/test/simple_backend_test.rb +0 -1
- data/vendor/rails/activesupport/lib/active_support/vendor/{memcache-client-1.6.5 → memcache-client-1.7.4}/memcache.rb +242 -70
- data/vendor/rails/activesupport/lib/active_support/version.rb +1 -1
- data/vendor/rails/activesupport/lib/active_support/xml_mini/jdom.rb +162 -0
- data/vendor/rails/railties/CHANGELOG +10 -0
- data/vendor/rails/railties/Rakefile +13 -9
- data/vendor/rails/railties/bin/about +2 -2
- data/vendor/rails/railties/bin/console +1 -1
- data/vendor/rails/railties/bin/dbconsole +1 -1
- data/vendor/rails/railties/bin/destroy +1 -1
- data/vendor/rails/railties/bin/generate +1 -1
- data/vendor/rails/railties/bin/performance/benchmarker +1 -1
- data/vendor/rails/railties/bin/performance/profiler +1 -1
- data/vendor/rails/railties/bin/plugin +1 -1
- data/vendor/rails/railties/bin/runner +1 -1
- data/vendor/rails/railties/bin/server +1 -1
- data/vendor/rails/railties/builtin/rails_info/rails/info.rb +4 -2
- data/vendor/rails/railties/configs/initializers/new_rails_defaults.rb +2 -0
- data/vendor/rails/railties/configs/routes.rb +1 -1
- data/vendor/rails/railties/configs/seeds.rb +7 -0
- data/vendor/rails/railties/environments/boot.rb +1 -1
- data/vendor/rails/railties/guides/files/javascripts/code_highlighter.js +188 -0
- data/vendor/rails/railties/guides/files/javascripts/guides.js +8 -0
- data/vendor/rails/railties/guides/files/javascripts/highlighters.js +90 -0
- data/vendor/rails/railties/guides/files/stylesheets/main.css +441 -0
- data/vendor/rails/railties/guides/files/stylesheets/print.css +52 -0
- data/vendor/rails/railties/guides/files/stylesheets/reset.css +43 -0
- data/vendor/rails/railties/guides/files/stylesheets/style.css +13 -0
- data/vendor/rails/railties/guides/files/stylesheets/syntax.css +31 -0
- data/vendor/rails/railties/guides/images/belongs_to.png +0 -0
- data/vendor/rails/railties/guides/images/book_icon.gif +0 -0
- data/vendor/rails/railties/guides/images/bullet.gif +0 -0
- data/vendor/rails/railties/guides/images/chapters_icon.gif +0 -0
- data/vendor/rails/railties/guides/images/check_bullet.gif +0 -0
- data/vendor/rails/railties/guides/images/credits_pic_blank.gif +0 -0
- data/vendor/rails/railties/guides/images/csrf.png +0 -0
- data/vendor/rails/railties/guides/images/customized_error_messages.png +0 -0
- data/vendor/rails/railties/guides/images/error_messages.png +0 -0
- data/vendor/rails/railties/guides/images/feature_tile.gif +0 -0
- data/vendor/rails/railties/guides/images/footer_tile.gif +0 -0
- data/vendor/rails/railties/guides/images/fxn.jpg +0 -0
- data/vendor/rails/railties/guides/images/grey_bullet.gif +0 -0
- data/vendor/rails/railties/guides/images/habtm.png +0 -0
- data/vendor/rails/railties/guides/images/has_many.png +0 -0
- data/vendor/rails/railties/guides/images/has_many_through.png +0 -0
- data/vendor/rails/railties/guides/images/has_one.png +0 -0
- data/vendor/rails/railties/guides/images/has_one_through.png +0 -0
- data/vendor/rails/railties/guides/images/header_backdrop.png +0 -0
- data/vendor/rails/railties/guides/images/header_tile.gif +0 -0
- data/vendor/rails/railties/guides/images/i18n/demo_localized_pirate.png +0 -0
- data/vendor/rails/railties/guides/images/i18n/demo_translated_en.png +0 -0
- data/vendor/rails/railties/guides/images/i18n/demo_translated_pirate.png +0 -0
- data/vendor/rails/railties/guides/images/i18n/demo_translation_missing.png +0 -0
- data/vendor/rails/railties/guides/images/i18n/demo_untranslated.png +0 -0
- data/vendor/rails/railties/guides/images/icons/README +5 -0
- data/vendor/rails/railties/guides/images/icons/callouts/1.png +0 -0
- data/vendor/rails/railties/guides/images/icons/callouts/10.png +0 -0
- data/vendor/rails/railties/guides/images/icons/callouts/11.png +0 -0
- data/vendor/rails/railties/guides/images/icons/callouts/12.png +0 -0
- data/vendor/rails/railties/guides/images/icons/callouts/13.png +0 -0
- data/vendor/rails/railties/guides/images/icons/callouts/14.png +0 -0
- data/vendor/rails/railties/guides/images/icons/callouts/15.png +0 -0
- data/vendor/rails/railties/guides/images/icons/callouts/2.png +0 -0
- data/vendor/rails/railties/guides/images/icons/callouts/3.png +0 -0
- data/vendor/rails/railties/guides/images/icons/callouts/4.png +0 -0
- data/vendor/rails/railties/guides/images/icons/callouts/5.png +0 -0
- data/vendor/rails/railties/guides/images/icons/callouts/6.png +0 -0
- data/vendor/rails/railties/guides/images/icons/callouts/7.png +0 -0
- data/vendor/rails/railties/guides/images/icons/callouts/8.png +0 -0
- data/vendor/rails/railties/guides/images/icons/callouts/9.png +0 -0
- data/vendor/rails/railties/guides/images/icons/caution.png +0 -0
- data/vendor/rails/railties/guides/images/icons/example.png +0 -0
- data/vendor/rails/railties/guides/images/icons/home.png +0 -0
- data/vendor/rails/railties/guides/images/icons/important.png +0 -0
- data/vendor/rails/railties/guides/images/icons/next.png +0 -0
- data/vendor/rails/railties/guides/images/icons/note.png +0 -0
- data/vendor/rails/railties/guides/images/icons/prev.png +0 -0
- data/vendor/rails/railties/guides/images/icons/tip.png +0 -0
- data/vendor/rails/railties/guides/images/icons/up.png +0 -0
- data/vendor/rails/railties/guides/images/icons/warning.png +0 -0
- data/vendor/rails/railties/guides/images/nav_arrow.gif +0 -0
- data/vendor/rails/railties/guides/images/polymorphic.png +0 -0
- data/vendor/rails/railties/guides/images/posts_index.png +0 -0
- data/vendor/rails/railties/guides/images/rails_guides_logo.gif +0 -0
- data/vendor/rails/railties/guides/images/rails_logo_remix.gif +0 -0
- data/vendor/rails/railties/guides/images/rails_welcome.png +0 -0
- data/vendor/rails/railties/guides/images/session_fixation.png +0 -0
- data/vendor/rails/railties/guides/images/tab_grey.gif +0 -0
- data/vendor/rails/railties/guides/images/tab_info.gif +0 -0
- data/vendor/rails/railties/guides/images/tab_note.gif +0 -0
- data/vendor/rails/railties/guides/images/tab_red.gif +0 -0
- data/vendor/rails/railties/guides/images/tab_yellow.gif +0 -0
- data/vendor/rails/railties/guides/images/tab_yellow.png +0 -0
- data/vendor/rails/railties/guides/images/validation_error_messages.png +0 -0
- data/vendor/rails/railties/guides/rails_guides.rb +42 -0
- data/vendor/rails/railties/guides/rails_guides/generator.rb +138 -0
- data/vendor/rails/railties/guides/rails_guides/helpers.rb +34 -0
- data/vendor/rails/railties/guides/rails_guides/indexer.rb +55 -0
- data/vendor/rails/railties/guides/rails_guides/textile_extensions.rb +41 -0
- data/vendor/rails/railties/guides/source/2_2_release_notes.textile +422 -0
- data/vendor/rails/railties/guides/source/2_3_release_notes.textile +610 -0
- data/vendor/rails/railties/guides/source/action_controller_overview.textile +776 -0
- data/vendor/rails/railties/guides/source/action_mailer_basics.textile +424 -0
- data/vendor/rails/railties/guides/source/active_record_basics.textile +135 -0
- data/vendor/rails/railties/guides/source/active_record_querying.textile +969 -0
- data/vendor/rails/railties/guides/source/activerecord_validations_callbacks.textile +1086 -0
- data/vendor/rails/railties/guides/source/association_basics.textile +1781 -0
- data/vendor/rails/railties/guides/source/caching_with_rails.textile +524 -0
- data/vendor/rails/railties/guides/source/command_line.textile +589 -0
- data/vendor/rails/railties/guides/source/configuring.textile +234 -0
- data/vendor/rails/railties/guides/source/contribute.textile +71 -0
- data/vendor/rails/railties/guides/source/contributing_to_rails.textile +239 -0
- data/vendor/rails/railties/guides/source/credits.erb.textile +52 -0
- data/vendor/rails/railties/guides/source/debugging_rails_applications.textile +709 -0
- data/vendor/rails/railties/guides/source/form_helpers.textile +766 -0
- data/vendor/rails/railties/guides/source/getting_started.textile +1297 -0
- data/vendor/rails/railties/guides/source/i18n.textile +912 -0
- data/vendor/rails/railties/guides/source/index.erb.textile +124 -0
- data/vendor/rails/railties/guides/source/layout.html.erb +103 -0
- data/vendor/rails/railties/guides/source/layouts_and_rendering.textile +979 -0
- data/vendor/rails/railties/guides/source/migrations.textile +591 -0
- data/vendor/rails/railties/guides/source/nested_model_forms.textile +222 -0
- data/vendor/rails/railties/guides/source/performance_testing.textile +531 -0
- data/vendor/rails/railties/guides/source/plugins.textile +1512 -0
- data/vendor/rails/railties/guides/source/rails_on_rack.textile +309 -0
- data/vendor/rails/railties/guides/source/routing.textile +903 -0
- data/vendor/rails/railties/guides/source/security.textile +986 -0
- data/vendor/rails/railties/guides/source/testing.textile +951 -0
- data/vendor/rails/railties/lib/commands/dbconsole.rb +8 -4
- data/vendor/rails/railties/lib/commands/performance/profiler.rb +1 -1
- data/vendor/rails/railties/lib/initializer.rb +27 -4
- data/vendor/rails/railties/lib/rails/gem_dependency.rb +35 -6
- data/vendor/rails/railties/lib/rails/plugin.rb +12 -0
- data/vendor/rails/railties/lib/rails/plugin/loader.rb +7 -0
- data/vendor/rails/railties/lib/rails/rack/metal.rb +1 -1
- data/vendor/rails/railties/lib/rails/version.rb +1 -1
- data/vendor/rails/railties/lib/rails_generator/base.rb +1 -1
- data/vendor/rails/railties/lib/rails_generator/generators/applications/app/app_generator.rb +5 -0
- data/vendor/rails/railties/lib/rails_generator/generators/applications/app/template_runner.rb +1 -1
- data/vendor/rails/railties/lib/rails_generator/generators/components/model/model_generator.rb +9 -2
- data/vendor/rails/railties/lib/rails_generator/generators/components/scaffold/scaffold_generator.rb +1 -0
- data/vendor/rails/railties/lib/tasks/databases.rake +17 -4
- data/vendor/rails/railties/lib/tasks/gems.rake +19 -6
- data/vendor/rails/railties/lib/tasks/routes.rake +4 -3
- data/vendor/rails/railties/lib/test_help.rb +4 -1
- metadata +158 -58
- data/spec/lib/local_time_spec.rb +0 -40
- data/vendor/rails/actionpack/lib/action_controller/rewindable_input.rb +0 -28
- data/vendor/rails/actionpack/lib/action_controller/vendor/rack-1.0/rack.rb +0 -89
- data/vendor/rails/actionpack/lib/action_controller/vendor/rack-1.0/rack/adapter/camping.rb +0 -22
- data/vendor/rails/actionpack/lib/action_controller/vendor/rack-1.0/rack/auth/abstract/handler.rb +0 -37
- data/vendor/rails/actionpack/lib/action_controller/vendor/rack-1.0/rack/auth/abstract/request.rb +0 -37
- data/vendor/rails/actionpack/lib/action_controller/vendor/rack-1.0/rack/auth/basic.rb +0 -58
- data/vendor/rails/actionpack/lib/action_controller/vendor/rack-1.0/rack/auth/digest/md5.rb +0 -124
- data/vendor/rails/actionpack/lib/action_controller/vendor/rack-1.0/rack/auth/digest/nonce.rb +0 -51
- data/vendor/rails/actionpack/lib/action_controller/vendor/rack-1.0/rack/auth/digest/params.rb +0 -55
- data/vendor/rails/actionpack/lib/action_controller/vendor/rack-1.0/rack/auth/digest/request.rb +0 -40
- data/vendor/rails/actionpack/lib/action_controller/vendor/rack-1.0/rack/auth/openid.rb +0 -480
- data/vendor/rails/actionpack/lib/action_controller/vendor/rack-1.0/rack/builder.rb +0 -63
- data/vendor/rails/actionpack/lib/action_controller/vendor/rack-1.0/rack/cascade.rb +0 -36
- data/vendor/rails/actionpack/lib/action_controller/vendor/rack-1.0/rack/chunked.rb +0 -49
- data/vendor/rails/actionpack/lib/action_controller/vendor/rack-1.0/rack/commonlogger.rb +0 -61
- data/vendor/rails/actionpack/lib/action_controller/vendor/rack-1.0/rack/conditionalget.rb +0 -45
- data/vendor/rails/actionpack/lib/action_controller/vendor/rack-1.0/rack/content_length.rb +0 -29
- data/vendor/rails/actionpack/lib/action_controller/vendor/rack-1.0/rack/content_type.rb +0 -23
- data/vendor/rails/actionpack/lib/action_controller/vendor/rack-1.0/rack/deflater.rb +0 -85
- data/vendor/rails/actionpack/lib/action_controller/vendor/rack-1.0/rack/directory.rb +0 -153
- data/vendor/rails/actionpack/lib/action_controller/vendor/rack-1.0/rack/file.rb +0 -88
- data/vendor/rails/actionpack/lib/action_controller/vendor/rack-1.0/rack/handler.rb +0 -48
- data/vendor/rails/actionpack/lib/action_controller/vendor/rack-1.0/rack/handler/cgi.rb +0 -61
- data/vendor/rails/actionpack/lib/action_controller/vendor/rack-1.0/rack/handler/evented_mongrel.rb +0 -8
- data/vendor/rails/actionpack/lib/action_controller/vendor/rack-1.0/rack/handler/fastcgi.rb +0 -89
- data/vendor/rails/actionpack/lib/action_controller/vendor/rack-1.0/rack/handler/lsws.rb +0 -55
- data/vendor/rails/actionpack/lib/action_controller/vendor/rack-1.0/rack/handler/mongrel.rb +0 -84
- data/vendor/rails/actionpack/lib/action_controller/vendor/rack-1.0/rack/handler/scgi.rb +0 -59
- data/vendor/rails/actionpack/lib/action_controller/vendor/rack-1.0/rack/handler/swiftiplied_mongrel.rb +0 -8
- data/vendor/rails/actionpack/lib/action_controller/vendor/rack-1.0/rack/handler/thin.rb +0 -18
- data/vendor/rails/actionpack/lib/action_controller/vendor/rack-1.0/rack/handler/webrick.rb +0 -67
- data/vendor/rails/actionpack/lib/action_controller/vendor/rack-1.0/rack/head.rb +0 -19
- data/vendor/rails/actionpack/lib/action_controller/vendor/rack-1.0/rack/lint.rb +0 -462
- data/vendor/rails/actionpack/lib/action_controller/vendor/rack-1.0/rack/lobster.rb +0 -65
- data/vendor/rails/actionpack/lib/action_controller/vendor/rack-1.0/rack/lock.rb +0 -16
- data/vendor/rails/actionpack/lib/action_controller/vendor/rack-1.0/rack/methodoverride.rb +0 -27
- data/vendor/rails/actionpack/lib/action_controller/vendor/rack-1.0/rack/mime.rb +0 -204
- data/vendor/rails/actionpack/lib/action_controller/vendor/rack-1.0/rack/mock.rb +0 -160
- data/vendor/rails/actionpack/lib/action_controller/vendor/rack-1.0/rack/recursive.rb +0 -57
- data/vendor/rails/actionpack/lib/action_controller/vendor/rack-1.0/rack/reloader.rb +0 -64
- data/vendor/rails/actionpack/lib/action_controller/vendor/rack-1.0/rack/request.rb +0 -241
- data/vendor/rails/actionpack/lib/action_controller/vendor/rack-1.0/rack/response.rb +0 -179
- data/vendor/rails/actionpack/lib/action_controller/vendor/rack-1.0/rack/session/abstract/id.rb +0 -142
- data/vendor/rails/actionpack/lib/action_controller/vendor/rack-1.0/rack/session/cookie.rb +0 -91
- data/vendor/rails/actionpack/lib/action_controller/vendor/rack-1.0/rack/session/memcache.rb +0 -109
- data/vendor/rails/actionpack/lib/action_controller/vendor/rack-1.0/rack/session/pool.rb +0 -100
- data/vendor/rails/actionpack/lib/action_controller/vendor/rack-1.0/rack/showexceptions.rb +0 -349
- data/vendor/rails/actionpack/lib/action_controller/vendor/rack-1.0/rack/showstatus.rb +0 -106
- data/vendor/rails/actionpack/lib/action_controller/vendor/rack-1.0/rack/static.rb +0 -38
- data/vendor/rails/actionpack/lib/action_controller/vendor/rack-1.0/rack/urlmap.rb +0 -55
- data/vendor/rails/actionpack/lib/action_controller/vendor/rack-1.0/rack/utils.rb +0 -392
data/vendor/rails/activerecord/test/cases/associations/has_many_through_associations_test.rb
CHANGED
@@ -11,9 +11,13 @@ require 'models/author'
|
|
11
11
|
require 'models/owner'
|
12
12
|
require 'models/pet'
|
13
13
|
require 'models/toy'
|
14
|
+
require 'models/contract'
|
15
|
+
require 'models/company'
|
16
|
+
require 'models/developer'
|
14
17
|
|
15
18
|
class HasManyThroughAssociationsTest < ActiveRecord::TestCase
|
16
|
-
fixtures :posts, :readers, :people, :comments, :authors, :owners, :pets, :toys
|
19
|
+
fixtures :posts, :readers, :people, :comments, :authors, :owners, :pets, :toys,
|
20
|
+
:companies
|
17
21
|
|
18
22
|
def test_associate_existing
|
19
23
|
assert_queries(2) { posts(:thinking);people(:david) }
|
@@ -157,6 +161,30 @@ class HasManyThroughAssociationsTest < ActiveRecord::TestCase
|
|
157
161
|
assert_equal peeps + 1, posts(:thinking).people.count
|
158
162
|
end
|
159
163
|
|
164
|
+
def test_associate_with_create_and_invalid_options
|
165
|
+
peeps = companies(:first_firm).developers.count
|
166
|
+
assert_nothing_raised { companies(:first_firm).developers.create(:name => '0') }
|
167
|
+
assert_equal peeps, companies(:first_firm).developers.count
|
168
|
+
end
|
169
|
+
|
170
|
+
def test_associate_with_create_and_valid_options
|
171
|
+
peeps = companies(:first_firm).developers.count
|
172
|
+
assert_nothing_raised { companies(:first_firm).developers.create(:name => 'developer') }
|
173
|
+
assert_equal peeps + 1, companies(:first_firm).developers.count
|
174
|
+
end
|
175
|
+
|
176
|
+
def test_associate_with_create_bang_and_invalid_options
|
177
|
+
peeps = companies(:first_firm).developers.count
|
178
|
+
assert_raises(ActiveRecord::RecordInvalid) { companies(:first_firm).developers.create!(:name => '0') }
|
179
|
+
assert_equal peeps, companies(:first_firm).developers.count
|
180
|
+
end
|
181
|
+
|
182
|
+
def test_associate_with_create_bang_and_valid_options
|
183
|
+
peeps = companies(:first_firm).developers.count
|
184
|
+
assert_nothing_raised { companies(:first_firm).developers.create!(:name => 'developer') }
|
185
|
+
assert_equal peeps + 1, companies(:first_firm).developers.count
|
186
|
+
end
|
187
|
+
|
160
188
|
def test_clear_associations
|
161
189
|
assert_queries(2) { posts(:welcome);posts(:welcome).people(true) }
|
162
190
|
|
@@ -276,4 +304,21 @@ class HasManyThroughAssociationsTest < ActiveRecord::TestCase
|
|
276
304
|
def test_has_many_association_through_a_has_many_association_with_nonstandard_primary_keys
|
277
305
|
assert_equal 1, owners(:blackbeard).toys.count
|
278
306
|
end
|
307
|
+
|
308
|
+
def test_find_on_has_many_association_collection_with_include_and_conditions
|
309
|
+
post_with_no_comments = people(:michael).posts_with_no_comments.first
|
310
|
+
assert_equal post_with_no_comments, posts(:authorless)
|
311
|
+
end
|
312
|
+
|
313
|
+
def test_has_many_through_has_one_reflection
|
314
|
+
assert_equal [comments(:eager_sti_on_associations_vs_comment)], authors(:david).very_special_comments
|
315
|
+
end
|
316
|
+
|
317
|
+
def test_modifying_has_many_through_has_one_reflection_should_raise
|
318
|
+
[
|
319
|
+
lambda { authors(:david).very_special_comments = [VerySpecialComment.create!(:body => "Gorp!", :post_id => 1011), VerySpecialComment.create!(:body => "Eep!", :post_id => 1012)] },
|
320
|
+
lambda { authors(:david).very_special_comments << VerySpecialComment.create!(:body => "Hoohah!", :post_id => 1013) },
|
321
|
+
lambda { authors(:david).very_special_comments.delete(authors(:david).very_special_comments.first) },
|
322
|
+
].each {|block| assert_raise(ActiveRecord::HasManyThroughCantAssociateThroughHasOneOrManyReflection, &block) }
|
323
|
+
end
|
279
324
|
end
|
@@ -28,6 +28,16 @@ class HasOneThroughAssociationsTest < ActiveRecord::TestCase
|
|
28
28
|
assert_not_nil new_member.current_membership
|
29
29
|
assert_not_nil new_member.club
|
30
30
|
end
|
31
|
+
|
32
|
+
def test_creating_association_builds_through_record_for_new
|
33
|
+
new_member = Member.new(:name => "Jane")
|
34
|
+
new_member.club = clubs(:moustache_club)
|
35
|
+
assert new_member.current_membership
|
36
|
+
assert_equal clubs(:moustache_club), new_member.current_membership.club
|
37
|
+
assert_equal clubs(:moustache_club), new_member.club
|
38
|
+
assert new_member.save
|
39
|
+
assert_equal clubs(:moustache_club), new_member.club
|
40
|
+
end
|
31
41
|
|
32
42
|
def test_replace_target_record
|
33
43
|
new_club = Club.create(:name => "Marx Bros")
|
@@ -43,7 +53,14 @@ class HasOneThroughAssociationsTest < ActiveRecord::TestCase
|
|
43
53
|
@member.reload
|
44
54
|
end
|
45
55
|
end
|
46
|
-
|
56
|
+
|
57
|
+
def test_set_record_to_nil_should_delete_association
|
58
|
+
@member.club = nil
|
59
|
+
@member.reload
|
60
|
+
assert_equal nil, @member.current_membership
|
61
|
+
assert_nil @member.club
|
62
|
+
end
|
63
|
+
|
47
64
|
def test_has_one_through_polymorphic
|
48
65
|
assert_equal clubs(:moustache_club), @member.sponsor_club
|
49
66
|
end
|
@@ -29,6 +29,11 @@ class InnerJoinAssociationTest < ActiveRecord::TestCase
|
|
29
29
|
assert_match /INNER JOIN .?categories.? ON.*AND.*.?General.?.*TERMINATING_MARKER/, sql
|
30
30
|
end
|
31
31
|
|
32
|
+
def test_construct_finder_sql_applies_aliases_tables_on_association_conditions
|
33
|
+
result = Author.find(:all, :joins => [:thinking_posts, :welcome_posts])
|
34
|
+
assert_equal authors(:david), result.first
|
35
|
+
end
|
36
|
+
|
32
37
|
def test_construct_finder_sql_unpacks_nested_joins
|
33
38
|
sql = Author.send(:construct_finder_sql, :joins => {:posts => [[:comments]]})
|
34
39
|
assert_no_match /inner join.*inner join.*inner join/i, sql, "only two join clauses should be present"
|
@@ -317,11 +317,11 @@ class AssociationsJoinModelTest < ActiveRecord::TestCase
|
|
317
317
|
end
|
318
318
|
|
319
319
|
def test_belongs_to_polymorphic_with_counter_cache
|
320
|
-
assert_equal
|
320
|
+
assert_equal 1, posts(:welcome)[:taggings_count]
|
321
321
|
tagging = posts(:welcome).taggings.create(:tag => tags(:general))
|
322
|
-
assert_equal
|
322
|
+
assert_equal 2, posts(:welcome, :reload)[:taggings_count]
|
323
323
|
tagging.destroy
|
324
|
-
|
324
|
+
assert_equal 1, posts(:welcome, :reload)[:taggings_count]
|
325
325
|
end
|
326
326
|
|
327
327
|
def test_unavailable_through_reflection
|
@@ -377,7 +377,7 @@ class AssociationsJoinModelTest < ActiveRecord::TestCase
|
|
377
377
|
end
|
378
378
|
|
379
379
|
def test_has_many_through_polymorphic_has_one
|
380
|
-
|
380
|
+
assert_equal Tagging.find(1,2).sort_by { |t| t.id }, authors(:david).tagging
|
381
381
|
end
|
382
382
|
|
383
383
|
def test_has_many_through_polymorphic_has_many
|
@@ -38,6 +38,17 @@ class TestAutosaveAssociationsInGeneral < ActiveRecord::TestCase
|
|
38
38
|
end
|
39
39
|
|
40
40
|
class TestDefaultAutosaveAssociationOnAHasOneAssociation < ActiveRecord::TestCase
|
41
|
+
def test_should_save_parent_but_not_invalid_child
|
42
|
+
firm = Firm.new(:name => 'GlobalMegaCorp')
|
43
|
+
assert firm.valid?
|
44
|
+
|
45
|
+
firm.build_account_using_primary_key
|
46
|
+
assert !firm.build_account_using_primary_key.valid?
|
47
|
+
|
48
|
+
assert firm.save
|
49
|
+
assert firm.account_using_primary_key.new_record?
|
50
|
+
end
|
51
|
+
|
41
52
|
def test_save_fails_for_invalid_has_one
|
42
53
|
firm = Firm.find(:first)
|
43
54
|
assert firm.valid?
|
@@ -126,6 +137,17 @@ class TestDefaultAutosaveAssociationOnAHasOneAssociation < ActiveRecord::TestCas
|
|
126
137
|
end
|
127
138
|
|
128
139
|
class TestDefaultAutosaveAssociationOnABelongsToAssociation < ActiveRecord::TestCase
|
140
|
+
def test_should_save_parent_but_not_invalid_child
|
141
|
+
client = Client.new(:name => 'Joe (the Plumber)')
|
142
|
+
assert client.valid?
|
143
|
+
|
144
|
+
client.build_firm
|
145
|
+
assert !client.firm.valid?
|
146
|
+
|
147
|
+
assert client.save
|
148
|
+
assert client.firm.new_record?
|
149
|
+
end
|
150
|
+
|
129
151
|
def test_save_fails_for_invalid_belongs_to
|
130
152
|
assert log = AuditLog.create(:developer_id => 0, :message => "")
|
131
153
|
|
@@ -1,4 +1,5 @@
|
|
1
1
|
require "cases/helper"
|
2
|
+
require 'models/post'
|
2
3
|
require 'models/author'
|
3
4
|
require 'models/topic'
|
4
5
|
require 'models/reply'
|
@@ -12,7 +13,6 @@ require 'models/auto_id'
|
|
12
13
|
require 'models/column_name'
|
13
14
|
require 'models/subscriber'
|
14
15
|
require 'models/keyboard'
|
15
|
-
require 'models/post'
|
16
16
|
require 'models/comment'
|
17
17
|
require 'models/minimalistic'
|
18
18
|
require 'models/warehouse_thing'
|
@@ -1012,7 +1012,25 @@ class BasicsTest < ActiveRecord::TestCase
|
|
1012
1012
|
assert_date_from_db Date.new(2004, 6, 24), topic.last_read.to_date
|
1013
1013
|
end
|
1014
1014
|
|
1015
|
-
def
|
1015
|
+
def test_multiparameter_attributes_on_date_with_empty_year
|
1016
|
+
attributes = { "last_read(1i)" => "", "last_read(2i)" => "6", "last_read(3i)" => "24" }
|
1017
|
+
topic = Topic.find(1)
|
1018
|
+
topic.attributes = attributes
|
1019
|
+
# note that extra #to_date call allows test to pass for Oracle, which
|
1020
|
+
# treats dates/times the same
|
1021
|
+
assert_date_from_db Date.new(1, 6, 24), topic.last_read.to_date
|
1022
|
+
end
|
1023
|
+
|
1024
|
+
def test_multiparameter_attributes_on_date_with_empty_month
|
1025
|
+
attributes = { "last_read(1i)" => "2004", "last_read(2i)" => "", "last_read(3i)" => "24" }
|
1026
|
+
topic = Topic.find(1)
|
1027
|
+
topic.attributes = attributes
|
1028
|
+
# note that extra #to_date call allows test to pass for Oracle, which
|
1029
|
+
# treats dates/times the same
|
1030
|
+
assert_date_from_db Date.new(2004, 1, 24), topic.last_read.to_date
|
1031
|
+
end
|
1032
|
+
|
1033
|
+
def test_multiparameter_attributes_on_date_with_empty_day
|
1016
1034
|
attributes = { "last_read(1i)" => "2004", "last_read(2i)" => "6", "last_read(3i)" => "" }
|
1017
1035
|
topic = Topic.find(1)
|
1018
1036
|
topic.attributes = attributes
|
@@ -1021,6 +1039,33 @@ class BasicsTest < ActiveRecord::TestCase
|
|
1021
1039
|
assert_date_from_db Date.new(2004, 6, 1), topic.last_read.to_date
|
1022
1040
|
end
|
1023
1041
|
|
1042
|
+
def test_multiparameter_attributes_on_date_with_empty_day_and_year
|
1043
|
+
attributes = { "last_read(1i)" => "", "last_read(2i)" => "6", "last_read(3i)" => "" }
|
1044
|
+
topic = Topic.find(1)
|
1045
|
+
topic.attributes = attributes
|
1046
|
+
# note that extra #to_date call allows test to pass for Oracle, which
|
1047
|
+
# treats dates/times the same
|
1048
|
+
assert_date_from_db Date.new(1, 6, 1), topic.last_read.to_date
|
1049
|
+
end
|
1050
|
+
|
1051
|
+
def test_multiparameter_attributes_on_date_with_empty_day_and_month
|
1052
|
+
attributes = { "last_read(1i)" => "2004", "last_read(2i)" => "", "last_read(3i)" => "" }
|
1053
|
+
topic = Topic.find(1)
|
1054
|
+
topic.attributes = attributes
|
1055
|
+
# note that extra #to_date call allows test to pass for Oracle, which
|
1056
|
+
# treats dates/times the same
|
1057
|
+
assert_date_from_db Date.new(2004, 1, 1), topic.last_read.to_date
|
1058
|
+
end
|
1059
|
+
|
1060
|
+
def test_multiparameter_attributes_on_date_with_empty_year_and_month
|
1061
|
+
attributes = { "last_read(1i)" => "", "last_read(2i)" => "", "last_read(3i)" => "24" }
|
1062
|
+
topic = Topic.find(1)
|
1063
|
+
topic.attributes = attributes
|
1064
|
+
# note that extra #to_date call allows test to pass for Oracle, which
|
1065
|
+
# treats dates/times the same
|
1066
|
+
assert_date_from_db Date.new(1, 1, 24), topic.last_read.to_date
|
1067
|
+
end
|
1068
|
+
|
1024
1069
|
def test_multiparameter_attributes_on_date_with_all_empty
|
1025
1070
|
attributes = { "last_read(1i)" => "", "last_read(2i)" => "", "last_read(3i)" => "" }
|
1026
1071
|
topic = Topic.find(1)
|
@@ -1115,7 +1160,7 @@ class BasicsTest < ActiveRecord::TestCase
|
|
1115
1160
|
Time.zone = nil
|
1116
1161
|
Topic.skip_time_zone_conversion_for_attributes = []
|
1117
1162
|
end
|
1118
|
-
|
1163
|
+
|
1119
1164
|
def test_multiparameter_attributes_on_time_only_column_with_time_zone_aware_attributes_does_not_do_time_zone_conversion
|
1120
1165
|
ActiveRecord::Base.time_zone_aware_attributes = true
|
1121
1166
|
ActiveRecord::Base.default_timezone = :utc
|
@@ -1439,7 +1484,7 @@ class BasicsTest < ActiveRecord::TestCase
|
|
1439
1484
|
topic = Topic.create("content" => myobj).reload
|
1440
1485
|
assert_equal(myobj, topic.content)
|
1441
1486
|
end
|
1442
|
-
|
1487
|
+
|
1443
1488
|
def test_serialized_string_attribute
|
1444
1489
|
myobj = "Yes"
|
1445
1490
|
topic = Topic.create("content" => myobj).reload
|
@@ -1756,7 +1801,7 @@ class BasicsTest < ActiveRecord::TestCase
|
|
1756
1801
|
end
|
1757
1802
|
|
1758
1803
|
def test_scoped_find_with_group_and_having
|
1759
|
-
developers = Developer.with_scope(:find => { :group => 'salary', :having => "SUM(salary) > 10000", :select => "SUM(salary) as salary" }) do
|
1804
|
+
developers = Developer.with_scope(:find => { :group => 'developers.salary', :having => "SUM(salary) > 10000", :select => "SUM(salary) as salary" }) do
|
1760
1805
|
Developer.find(:all)
|
1761
1806
|
end
|
1762
1807
|
assert_equal 3, developers.size
|
@@ -2014,7 +2059,7 @@ class BasicsTest < ActiveRecord::TestCase
|
|
2014
2059
|
|
2015
2060
|
def test_inspect_instance
|
2016
2061
|
topic = topics(:first)
|
2017
|
-
assert_equal %(#<Topic id: 1, title: "The First Topic", author_name: "David", author_email_address: "david@loudthinking.com", written_on: "#{topic.written_on.to_s(:db)}", bonus_time: "#{topic.bonus_time.to_s(:db)}", last_read: "#{topic.last_read.to_s(:db)}", content: "Have a nice day", approved: false, replies_count: 1, parent_id: nil, type: nil>), topic.inspect
|
2062
|
+
assert_equal %(#<Topic id: 1, title: "The First Topic", author_name: "David", author_email_address: "david@loudthinking.com", written_on: "#{topic.written_on.to_s(:db)}", bonus_time: "#{topic.bonus_time.to_s(:db)}", last_read: "#{topic.last_read.to_s(:db)}", content: "Have a nice day", approved: false, replies_count: 1, parent_id: nil, parent_title: nil, type: nil>), topic.inspect
|
2018
2063
|
end
|
2019
2064
|
|
2020
2065
|
def test_inspect_new_instance
|
@@ -2,6 +2,11 @@ require "cases/helper"
|
|
2
2
|
require 'models/company'
|
3
3
|
require 'models/topic'
|
4
4
|
require 'models/edge'
|
5
|
+
require 'models/owner'
|
6
|
+
require 'models/pet'
|
7
|
+
require 'models/toy'
|
8
|
+
require 'models/club'
|
9
|
+
require 'models/organization'
|
5
10
|
|
6
11
|
Company.has_many :accounts
|
7
12
|
|
@@ -10,7 +15,7 @@ class NumericData < ActiveRecord::Base
|
|
10
15
|
end
|
11
16
|
|
12
17
|
class CalculationsTest < ActiveRecord::TestCase
|
13
|
-
fixtures :companies, :accounts, :topics
|
18
|
+
fixtures :companies, :accounts, :topics, :owners, :pets, :toys
|
14
19
|
|
15
20
|
def test_should_sum_field
|
16
21
|
assert_equal 318, Account.sum(:credit_limit)
|
@@ -223,6 +228,10 @@ class CalculationsTest < ActiveRecord::TestCase
|
|
223
228
|
assert_equal 15, companies(:rails_core).companies.sum(:id)
|
224
229
|
end
|
225
230
|
|
231
|
+
def test_should_sum_scoped_field_with_from
|
232
|
+
assert_equal Club.count, Organization.clubs.count
|
233
|
+
end
|
234
|
+
|
226
235
|
def test_should_sum_scoped_field_with_conditions
|
227
236
|
assert_equal 8, companies(:rails_core).companies.sum(:id, :conditions => 'id > 7')
|
228
237
|
end
|
@@ -264,19 +273,6 @@ class CalculationsTest < ActiveRecord::TestCase
|
|
264
273
|
assert_equal 4, Account.count(:distinct => true, :include => :firm, :select => :credit_limit)
|
265
274
|
end
|
266
275
|
|
267
|
-
def test_should_count_scoped_select
|
268
|
-
Account.update_all("credit_limit = NULL")
|
269
|
-
assert_equal 0, Account.scoped(:select => "credit_limit").count
|
270
|
-
end
|
271
|
-
|
272
|
-
def test_should_count_scoped_select_with_options
|
273
|
-
Account.update_all("credit_limit = NULL")
|
274
|
-
Account.last.update_attribute('credit_limit', 49)
|
275
|
-
Account.first.update_attribute('credit_limit', 51)
|
276
|
-
|
277
|
-
assert_equal 1, Account.scoped(:select => "credit_limit").count(:conditions => ['credit_limit >= 50'])
|
278
|
-
end
|
279
|
-
|
280
276
|
def test_should_count_manual_select_with_include
|
281
277
|
assert_equal 6, Account.count(:select => "DISTINCT accounts.id", :include => :firm)
|
282
278
|
end
|
@@ -297,6 +293,10 @@ class CalculationsTest < ActiveRecord::TestCase
|
|
297
293
|
assert_raise(ArgumentError) { Account.count(1, 2, 3) }
|
298
294
|
end
|
299
295
|
|
296
|
+
def test_count_with_scoped_has_many_through_association
|
297
|
+
assert_equal 1, owners(:blackbeard).toys.with_name('Bone').count
|
298
|
+
end
|
299
|
+
|
300
300
|
def test_should_sum_expression
|
301
301
|
assert_equal '636', Account.sum("2 * credit_limit")
|
302
302
|
end
|
@@ -33,4 +33,38 @@ class ColumnDefinitionTest < ActiveRecord::TestCase
|
|
33
33
|
column.limit, column.precision, column.scale, column.default, column.null)
|
34
34
|
assert_equal %Q{title varchar(20) DEFAULT 'Hello' NOT NULL}, column_def.to_sql
|
35
35
|
end
|
36
|
+
|
37
|
+
if current_adapter?(:MysqlAdapter)
|
38
|
+
def test_should_set_default_for_mysql_binary_data_types
|
39
|
+
binary_column = ActiveRecord::ConnectionAdapters::MysqlColumn.new("title", "a", "binary(1)")
|
40
|
+
assert_equal "a", binary_column.default
|
41
|
+
|
42
|
+
varbinary_column = ActiveRecord::ConnectionAdapters::MysqlColumn.new("title", "a", "varbinary(1)")
|
43
|
+
assert_equal "a", varbinary_column.default
|
44
|
+
end
|
45
|
+
|
46
|
+
def test_should_not_set_default_for_blob_and_text_data_types
|
47
|
+
assert_raise ArgumentError do
|
48
|
+
ActiveRecord::ConnectionAdapters::MysqlColumn.new("title", "a", "blob")
|
49
|
+
end
|
50
|
+
|
51
|
+
assert_raise ArgumentError do
|
52
|
+
ActiveRecord::ConnectionAdapters::MysqlColumn.new("title", "Hello", "text")
|
53
|
+
end
|
54
|
+
|
55
|
+
text_column = ActiveRecord::ConnectionAdapters::MysqlColumn.new("title", nil, "text")
|
56
|
+
assert_equal nil, text_column.default
|
57
|
+
|
58
|
+
not_null_text_column = ActiveRecord::ConnectionAdapters::MysqlColumn.new("title", nil, "text", false)
|
59
|
+
assert_equal "", not_null_text_column.default
|
60
|
+
end
|
61
|
+
|
62
|
+
def test_has_default_should_return_false_for_blog_and_test_data_types
|
63
|
+
blob_column = ActiveRecord::ConnectionAdapters::MysqlColumn.new("title", nil, "blob")
|
64
|
+
assert !blob_column.has_default?
|
65
|
+
|
66
|
+
text_column = ActiveRecord::ConnectionAdapters::MysqlColumn.new("title", nil, "text")
|
67
|
+
assert !text_column.has_default?
|
68
|
+
end
|
69
|
+
end
|
36
70
|
end
|
@@ -10,7 +10,7 @@ class CopyTableTest < ActiveRecord::TestCase
|
|
10
10
|
end
|
11
11
|
end
|
12
12
|
|
13
|
-
def test_copy_table(from = '
|
13
|
+
def test_copy_table(from = 'customers', to = 'customers2', options = {})
|
14
14
|
assert_nothing_raised {copy_table(from, to, options)}
|
15
15
|
assert_equal row_count(from), row_count(to)
|
16
16
|
|
@@ -24,11 +24,11 @@ class CopyTableTest < ActiveRecord::TestCase
|
|
24
24
|
end
|
25
25
|
|
26
26
|
def test_copy_table_renaming_column
|
27
|
-
test_copy_table('
|
28
|
-
:rename => {'
|
29
|
-
expected = column_values(from, '
|
27
|
+
test_copy_table('customers', 'customers2',
|
28
|
+
:rename => {'name' => 'person_name'}) do |from, to, options|
|
29
|
+
expected = column_values(from, 'name')
|
30
30
|
assert expected.any?, 'only nils in resultset; real values are needed'
|
31
|
-
assert_equal expected, column_values(to, '
|
31
|
+
assert_equal expected, column_values(to, 'person_name')
|
32
32
|
end
|
33
33
|
end
|
34
34
|
|
@@ -288,6 +288,16 @@ class DirtyTest < ActiveRecord::TestCase
|
|
288
288
|
end
|
289
289
|
end
|
290
290
|
|
291
|
+
def test_save_should_not_save_serialized_attribute_with_partial_updates_if_not_present
|
292
|
+
with_partial_updates(Topic) do
|
293
|
+
Topic.create!(:author_name => 'Bill', :content => {:a => "a"})
|
294
|
+
topic = Topic.first(:select => 'id, author_name')
|
295
|
+
topic.update_attribute :author_name, 'John'
|
296
|
+
topic = Topic.first
|
297
|
+
assert_not_nil topic.content
|
298
|
+
end
|
299
|
+
end
|
300
|
+
|
291
301
|
private
|
292
302
|
def with_partial_updates(klass, on = true)
|
293
303
|
old = klass.partial_updates?
|
@@ -1,4 +1,5 @@
|
|
1
1
|
require "cases/helper"
|
2
|
+
require 'models/post'
|
2
3
|
require 'models/author'
|
3
4
|
require 'models/categorization'
|
4
5
|
require 'models/comment'
|
@@ -7,7 +8,6 @@ require 'models/topic'
|
|
7
8
|
require 'models/reply'
|
8
9
|
require 'models/entrant'
|
9
10
|
require 'models/developer'
|
10
|
-
require 'models/post'
|
11
11
|
require 'models/customer'
|
12
12
|
require 'models/job'
|
13
13
|
require 'models/categorization'
|
@@ -94,16 +94,16 @@ class FinderTest < ActiveRecord::TestCase
|
|
94
94
|
|
95
95
|
assert_raise(NoMethodError) { Topic.exists?([1,2]) }
|
96
96
|
end
|
97
|
-
|
97
|
+
|
98
98
|
def test_exists_returns_true_with_one_record_and_no_args
|
99
99
|
assert Topic.exists?
|
100
100
|
end
|
101
|
-
|
101
|
+
|
102
102
|
def test_does_not_exist_with_empty_table_and_no_args_given
|
103
103
|
Topic.delete_all
|
104
104
|
assert !Topic.exists?
|
105
105
|
end
|
106
|
-
|
106
|
+
|
107
107
|
def test_exists_with_aggregate_having_three_mappings
|
108
108
|
existing_address = customers(:david).address
|
109
109
|
assert Customer.exists?(:address => existing_address)
|
@@ -119,6 +119,12 @@ class FinderTest < ActiveRecord::TestCase
|
|
119
119
|
Address.new(existing_address.street + "1", existing_address.city, existing_address.country))
|
120
120
|
end
|
121
121
|
|
122
|
+
def test_exists_with_scoped_include
|
123
|
+
Developer.with_scope(:find => { :include => :projects, :order => "projects.name" }) do
|
124
|
+
assert Developer.exists?
|
125
|
+
end
|
126
|
+
end
|
127
|
+
|
122
128
|
def test_find_by_array_of_one_id
|
123
129
|
assert_kind_of(Array, Topic.find([ 1 ]))
|
124
130
|
assert_equal(1, Topic.find([ 1 ]).length)
|
@@ -150,10 +156,8 @@ class FinderTest < ActiveRecord::TestCase
|
|
150
156
|
end
|
151
157
|
|
152
158
|
def test_find_all_with_limit
|
153
|
-
|
154
|
-
|
155
|
-
assert_equal(2, entrants.size)
|
156
|
-
assert_equal(entrants(:first).name, entrants.first.name)
|
159
|
+
assert_equal(2, Entrant.find(:all, :limit => 2).size)
|
160
|
+
assert_equal(0, Entrant.find(:all, :limit => 0).size)
|
157
161
|
end
|
158
162
|
|
159
163
|
def test_find_all_with_prepared_limit_and_offset
|
@@ -162,22 +166,23 @@ class FinderTest < ActiveRecord::TestCase
|
|
162
166
|
assert_equal(2, entrants.size)
|
163
167
|
assert_equal(entrants(:second).name, entrants.first.name)
|
164
168
|
|
169
|
+
assert_equal 3, Entrant.count
|
165
170
|
entrants = Entrant.find(:all, :order => "id ASC", :limit => 2, :offset => 2)
|
166
171
|
assert_equal(1, entrants.size)
|
167
172
|
assert_equal(entrants(:third).name, entrants.first.name)
|
168
173
|
end
|
169
174
|
|
170
|
-
def
|
171
|
-
|
172
|
-
|
173
|
-
|
175
|
+
def test_find_all_with_limit_and_offset_and_multiple_order_clauses
|
176
|
+
first_three_posts = Post.find :all, :order => 'author_id, id', :limit => 3, :offset => 0
|
177
|
+
second_three_posts = Post.find :all, :order => ' author_id,id ', :limit => 3, :offset => 3
|
178
|
+
last_posts = Post.find :all, :order => ' author_id, id ', :limit => 3, :offset => 6
|
174
179
|
|
175
|
-
|
176
|
-
|
177
|
-
assert_equal
|
178
|
-
assert_equal("fixture_3", developers.first.name)
|
180
|
+
assert_equal [[0,3],[1,1],[1,2]], first_three_posts.map { |p| [p.author_id, p.id] }
|
181
|
+
assert_equal [[1,4],[1,5],[1,6]], second_three_posts.map { |p| [p.author_id, p.id] }
|
182
|
+
assert_equal [[2,7]], last_posts.map { |p| [p.author_id, p.id] }
|
179
183
|
end
|
180
184
|
|
185
|
+
|
181
186
|
def test_find_with_group
|
182
187
|
developers = Developer.find(:all, :group => "salary", :select => "salary")
|
183
188
|
assert_equal 4, developers.size
|
@@ -935,40 +940,6 @@ class FinderTest < ActiveRecord::TestCase
|
|
935
940
|
assert_raise(ArgumentError) { Topic.find_by_title 'No Title', :join => "It should be `joins'" }
|
936
941
|
end
|
937
942
|
|
938
|
-
def test_find_all_with_limit
|
939
|
-
first_five_developers = Developer.find :all, :order => 'id ASC', :limit => 5
|
940
|
-
assert_equal 5, first_five_developers.length
|
941
|
-
assert_equal 'David', first_five_developers.first.name
|
942
|
-
assert_equal 'fixture_5', first_five_developers.last.name
|
943
|
-
|
944
|
-
no_developers = Developer.find :all, :order => 'id ASC', :limit => 0
|
945
|
-
assert_equal 0, no_developers.length
|
946
|
-
end
|
947
|
-
|
948
|
-
def test_find_all_with_limit_and_offset
|
949
|
-
first_three_developers = Developer.find :all, :order => 'id ASC', :limit => 3, :offset => 0
|
950
|
-
second_three_developers = Developer.find :all, :order => 'id ASC', :limit => 3, :offset => 3
|
951
|
-
last_two_developers = Developer.find :all, :order => 'id ASC', :limit => 2, :offset => 8
|
952
|
-
|
953
|
-
assert_equal 3, first_three_developers.length
|
954
|
-
assert_equal 3, second_three_developers.length
|
955
|
-
assert_equal 2, last_two_developers.length
|
956
|
-
|
957
|
-
assert_equal 'David', first_three_developers.first.name
|
958
|
-
assert_equal 'fixture_4', second_three_developers.first.name
|
959
|
-
assert_equal 'fixture_9', last_two_developers.first.name
|
960
|
-
end
|
961
|
-
|
962
|
-
def test_find_all_with_limit_and_offset_and_multiple_order_clauses
|
963
|
-
first_three_posts = Post.find :all, :order => 'author_id, id', :limit => 3, :offset => 0
|
964
|
-
second_three_posts = Post.find :all, :order => ' author_id,id ', :limit => 3, :offset => 3
|
965
|
-
last_posts = Post.find :all, :order => ' author_id, id ', :limit => 3, :offset => 6
|
966
|
-
|
967
|
-
assert_equal [[0,3],[1,1],[1,2]], first_three_posts.map { |p| [p.author_id, p.id] }
|
968
|
-
assert_equal [[1,4],[1,5],[1,6]], second_three_posts.map { |p| [p.author_id, p.id] }
|
969
|
-
assert_equal [[2,7]], last_posts.map { |p| [p.author_id, p.id] }
|
970
|
-
end
|
971
|
-
|
972
943
|
def test_find_all_with_join
|
973
944
|
developers_on_project_one = Developer.find(
|
974
945
|
:all,
|