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
@@ -63,6 +63,18 @@ class AdapterTest < ActiveRecord::TestCase
|
|
63
63
|
def test_show_nonexistent_variable_returns_nil
|
64
64
|
assert_nil @connection.show_variable('foo_bar_baz')
|
65
65
|
end
|
66
|
+
|
67
|
+
def test_not_specifying_database_name_for_cross_database_selects
|
68
|
+
assert_nothing_raised do
|
69
|
+
ActiveRecord::Base.establish_connection({
|
70
|
+
:adapter => 'mysql',
|
71
|
+
:username => 'rails'
|
72
|
+
})
|
73
|
+
ActiveRecord::Base.connection.execute "SELECT activerecord_unittest.pirates.*, activerecord_unittest2.courses.* FROM activerecord_unittest.pirates, activerecord_unittest2.courses"
|
74
|
+
end
|
75
|
+
|
76
|
+
ActiveRecord::Base.establish_connection 'arunit'
|
77
|
+
end
|
66
78
|
end
|
67
79
|
|
68
80
|
if current_adapter?(:PostgreSQLAdapter)
|
@@ -14,6 +14,7 @@ require 'models/tagging'
|
|
14
14
|
require 'models/comment'
|
15
15
|
require 'models/sponsor'
|
16
16
|
require 'models/member'
|
17
|
+
require 'models/essay'
|
17
18
|
|
18
19
|
class BelongsToAssociationsTest < ActiveRecord::TestCase
|
19
20
|
fixtures :accounts, :companies, :developers, :projects, :topics,
|
@@ -25,6 +26,11 @@ class BelongsToAssociationsTest < ActiveRecord::TestCase
|
|
25
26
|
assert !Client.find(3).firm.nil?, "Microsoft should have a firm"
|
26
27
|
end
|
27
28
|
|
29
|
+
def test_belongs_to_with_primary_key
|
30
|
+
client = Client.create(:name => "Primary key client", :firm_name => companies(:first_firm).name)
|
31
|
+
assert_equal companies(:first_firm).name, client.firm_with_primary_key.name
|
32
|
+
end
|
33
|
+
|
28
34
|
def test_proxy_assignment
|
29
35
|
account = Account.find(1)
|
30
36
|
assert_nothing_raised { account.firm = account.firm }
|
@@ -47,6 +53,13 @@ class BelongsToAssociationsTest < ActiveRecord::TestCase
|
|
47
53
|
assert_equal apple.id, citibank.firm_id
|
48
54
|
end
|
49
55
|
|
56
|
+
def test_natural_assignment_with_primary_key
|
57
|
+
apple = Firm.create("name" => "Apple")
|
58
|
+
citibank = Client.create("name" => "Primary key client")
|
59
|
+
citibank.firm_with_primary_key = apple
|
60
|
+
assert_equal apple.name, citibank.firm_name
|
61
|
+
end
|
62
|
+
|
50
63
|
def test_no_unexpected_aliasing
|
51
64
|
first_firm = companies(:first_firm)
|
52
65
|
another_firm = companies(:another_firm)
|
@@ -69,6 +82,15 @@ class BelongsToAssociationsTest < ActiveRecord::TestCase
|
|
69
82
|
assert_equal apple, citibank.firm
|
70
83
|
end
|
71
84
|
|
85
|
+
def test_creating_the_belonging_object_with_primary_key
|
86
|
+
client = Client.create(:name => "Primary key client")
|
87
|
+
apple = client.create_firm_with_primary_key("name" => "Apple")
|
88
|
+
assert_equal apple, client.firm_with_primary_key
|
89
|
+
client.save
|
90
|
+
client.reload
|
91
|
+
assert_equal apple, client.firm_with_primary_key
|
92
|
+
end
|
93
|
+
|
72
94
|
def test_building_the_belonging_object
|
73
95
|
citibank = Account.create("credit_limit" => 10)
|
74
96
|
apple = citibank.build_firm("name" => "Apple")
|
@@ -76,6 +98,13 @@ class BelongsToAssociationsTest < ActiveRecord::TestCase
|
|
76
98
|
assert_equal apple.id, citibank.firm_id
|
77
99
|
end
|
78
100
|
|
101
|
+
def test_building_the_belonging_object_with_primary_key
|
102
|
+
client = Client.create(:name => "Primary key client")
|
103
|
+
apple = client.build_firm_with_primary_key("name" => "Apple")
|
104
|
+
client.save
|
105
|
+
assert_equal apple.name, client.firm_name
|
106
|
+
end
|
107
|
+
|
79
108
|
def test_natural_assignment_to_nil
|
80
109
|
client = Client.find(3)
|
81
110
|
client.firm = nil
|
@@ -84,6 +113,14 @@ class BelongsToAssociationsTest < ActiveRecord::TestCase
|
|
84
113
|
assert_nil client.client_of
|
85
114
|
end
|
86
115
|
|
116
|
+
def test_natural_assignment_to_nil_with_primary_key
|
117
|
+
client = Client.create(:name => "Primary key client", :firm_name => companies(:first_firm).name)
|
118
|
+
client.firm_with_primary_key = nil
|
119
|
+
client.save
|
120
|
+
assert_nil client.firm_with_primary_key(true)
|
121
|
+
assert_nil client.client_of
|
122
|
+
end
|
123
|
+
|
87
124
|
def test_with_different_class_name
|
88
125
|
assert_equal Company.find(1).name, Company.find(3).firm_with_other_name.name
|
89
126
|
assert_not_nil Company.find(3).firm_with_other_name, "Microsoft should have a firm"
|
@@ -110,6 +147,17 @@ class BelongsToAssociationsTest < ActiveRecord::TestCase
|
|
110
147
|
assert_equal 0, Topic.find(debate.id).send(:read_attribute, "replies_count"), "First reply deleted"
|
111
148
|
end
|
112
149
|
|
150
|
+
def test_belongs_to_with_primary_key_counter
|
151
|
+
debate = Topic.create("title" => "debate")
|
152
|
+
assert_equal 0, debate.send(:read_attribute, "replies_count"), "No replies yet"
|
153
|
+
|
154
|
+
trash = debate.replies_with_primary_key.create("title" => "blah!", "content" => "world around!")
|
155
|
+
assert_equal 1, Topic.find(debate.id).send(:read_attribute, "replies_count"), "First reply created"
|
156
|
+
|
157
|
+
trash.destroy
|
158
|
+
assert_equal 0, Topic.find(debate.id).send(:read_attribute, "replies_count"), "First reply deleted"
|
159
|
+
end
|
160
|
+
|
113
161
|
def test_belongs_to_counter_with_assigning_nil
|
114
162
|
p = Post.find(1)
|
115
163
|
c = Comment.find(1)
|
@@ -122,6 +170,18 @@ class BelongsToAssociationsTest < ActiveRecord::TestCase
|
|
122
170
|
assert_equal 1, Post.find(p.id).comments.size
|
123
171
|
end
|
124
172
|
|
173
|
+
def test_belongs_to_with_primary_key_counter_with_assigning_nil
|
174
|
+
debate = Topic.create("title" => "debate")
|
175
|
+
reply = Reply.create("title" => "blah!", "content" => "world around!", "parent_title" => "debate")
|
176
|
+
|
177
|
+
assert_equal debate.title, reply.parent_title
|
178
|
+
assert_equal 1, Topic.find(debate.id).send(:read_attribute, "replies_count")
|
179
|
+
|
180
|
+
reply.topic_with_primary_key = nil
|
181
|
+
|
182
|
+
assert_equal 0, Topic.find(debate.id).send(:read_attribute, "replies_count")
|
183
|
+
end
|
184
|
+
|
125
185
|
def test_belongs_to_counter_with_reassigning
|
126
186
|
t1 = Topic.create("title" => "t1")
|
127
187
|
t2 = Topic.create("title" => "t2")
|
@@ -189,24 +249,6 @@ class BelongsToAssociationsTest < ActiveRecord::TestCase
|
|
189
249
|
assert_equal 1, Topic.find(topic.id)[:replies_count]
|
190
250
|
end
|
191
251
|
|
192
|
-
def test_belongs_to_counter_after_save
|
193
|
-
topic = Topic.create("title" => "monday night")
|
194
|
-
topic.replies.create("title" => "re: monday night", "content" => "football")
|
195
|
-
assert_equal 1, Topic.find(topic.id).send(:read_attribute, "replies_count")
|
196
|
-
|
197
|
-
topic.save
|
198
|
-
assert_equal 1, Topic.find(topic.id).send(:read_attribute, "replies_count")
|
199
|
-
end
|
200
|
-
|
201
|
-
def test_belongs_to_counter_after_update_attributes
|
202
|
-
topic = Topic.create("title" => "37s")
|
203
|
-
topic.replies.create("title" => "re: 37s", "content" => "rails")
|
204
|
-
assert_equal 1, Topic.find(topic.id).send(:read_attribute, "replies_count")
|
205
|
-
|
206
|
-
topic.update_attributes("title" => "37signals")
|
207
|
-
assert_equal 1, Topic.find(topic.id).send(:read_attribute, "replies_count")
|
208
|
-
end
|
209
|
-
|
210
252
|
def test_assignment_before_child_saved
|
211
253
|
final_cut = Client.new("name" => "Final Cut")
|
212
254
|
firm = Firm.find(1)
|
@@ -219,6 +261,18 @@ class BelongsToAssociationsTest < ActiveRecord::TestCase
|
|
219
261
|
assert_equal firm, final_cut.firm(true)
|
220
262
|
end
|
221
263
|
|
264
|
+
def test_assignment_before_child_saved_with_primary_key
|
265
|
+
final_cut = Client.new("name" => "Final Cut")
|
266
|
+
firm = Firm.find(1)
|
267
|
+
final_cut.firm_with_primary_key = firm
|
268
|
+
assert final_cut.new_record?
|
269
|
+
assert final_cut.save
|
270
|
+
assert !final_cut.new_record?
|
271
|
+
assert !firm.new_record?
|
272
|
+
assert_equal firm, final_cut.firm_with_primary_key
|
273
|
+
assert_equal firm, final_cut.firm_with_primary_key(true)
|
274
|
+
end
|
275
|
+
|
222
276
|
def test_new_record_with_foreign_key_but_no_object
|
223
277
|
c = Client.new("firm_id" => 1)
|
224
278
|
assert_equal Firm.find(:first), c.firm_with_basic_id
|
@@ -297,26 +351,52 @@ class BelongsToAssociationsTest < ActiveRecord::TestCase
|
|
297
351
|
member = Member.create
|
298
352
|
sponsor.sponsorable = member
|
299
353
|
assert_equal "Member", sponsor.sponsorable_type
|
300
|
-
|
354
|
+
|
301
355
|
# should update when assigning a new record
|
302
356
|
sponsor = Sponsor.new
|
303
357
|
member = Member.new
|
304
358
|
sponsor.sponsorable = member
|
305
359
|
assert_equal "Member", sponsor.sponsorable_type
|
306
360
|
end
|
307
|
-
|
361
|
+
|
362
|
+
def test_polymorphic_assignment_with_primary_key_foreign_type_field_updating
|
363
|
+
# should update when assigning a saved record
|
364
|
+
essay = Essay.new
|
365
|
+
writer = Author.create(:name => "David")
|
366
|
+
essay.writer = writer
|
367
|
+
assert_equal "Author", essay.writer_type
|
368
|
+
|
369
|
+
# should update when assigning a new record
|
370
|
+
essay = Essay.new
|
371
|
+
writer = Author.new
|
372
|
+
essay.writer = writer
|
373
|
+
assert_equal "Author", essay.writer_type
|
374
|
+
end
|
375
|
+
|
308
376
|
def test_polymorphic_assignment_updates_foreign_id_field_for_new_and_saved_records
|
309
377
|
sponsor = Sponsor.new
|
310
378
|
saved_member = Member.create
|
311
379
|
new_member = Member.new
|
312
|
-
|
380
|
+
|
313
381
|
sponsor.sponsorable = saved_member
|
314
382
|
assert_equal saved_member.id, sponsor.sponsorable_id
|
315
|
-
|
383
|
+
|
316
384
|
sponsor.sponsorable = new_member
|
317
385
|
assert_equal nil, sponsor.sponsorable_id
|
318
386
|
end
|
319
387
|
|
388
|
+
def test_polymorphic_assignment_with_primary_key_updates_foreign_id_field_for_new_and_saved_records
|
389
|
+
essay = Essay.new
|
390
|
+
saved_writer = Author.create(:name => "David")
|
391
|
+
new_writer = Author.new
|
392
|
+
|
393
|
+
essay.writer = saved_writer
|
394
|
+
assert_equal saved_writer.name, essay.writer_id
|
395
|
+
|
396
|
+
essay.writer = new_writer
|
397
|
+
assert_equal nil, essay.writer_id
|
398
|
+
end
|
399
|
+
|
320
400
|
def test_belongs_to_proxy_should_not_respond_to_private_methods
|
321
401
|
assert_raise(NoMethodError) { companies(:first_firm).private_method }
|
322
402
|
assert_raise(NoMethodError) { companies(:second_client).firm.private_method }
|
@@ -1,6 +1,6 @@
|
|
1
1
|
require 'cases/helper'
|
2
|
-
require 'models/author'
|
3
2
|
require 'models/post'
|
3
|
+
require 'models/author'
|
4
4
|
require 'models/comment'
|
5
5
|
require 'models/category'
|
6
6
|
require 'models/categorization'
|
@@ -66,13 +66,13 @@ class EagerLoadPolyAssocsTest < ActiveRecord::TestCase
|
|
66
66
|
def setup
|
67
67
|
generate_test_object_graphs
|
68
68
|
end
|
69
|
-
|
69
|
+
|
70
70
|
def teardown
|
71
|
-
[Circle, Square, Triangle, PaintColor, PaintTexture,
|
71
|
+
[Circle, Square, Triangle, PaintColor, PaintTexture,
|
72
72
|
ShapeExpression, NonPolyOne, NonPolyTwo].each do |c|
|
73
73
|
c.delete_all
|
74
74
|
end
|
75
|
-
|
75
|
+
|
76
76
|
end
|
77
77
|
|
78
78
|
|
@@ -127,4 +127,4 @@ class EagerLoadNestedIncludeWithMissingDataTest < ActiveRecord::TestCase
|
|
127
127
|
Author.all :include => includes, :conditions => {:authors => {:name => @davey_mcdave.name}}, :order => 'categories.name'
|
128
128
|
end
|
129
129
|
end
|
130
|
-
end
|
130
|
+
end
|
@@ -223,6 +223,18 @@ class EagerAssociationTest < ActiveRecord::TestCase
|
|
223
223
|
end
|
224
224
|
end
|
225
225
|
|
226
|
+
def test_eager_association_loading_with_belongs_to_and_conditions_hash
|
227
|
+
comments = []
|
228
|
+
assert_nothing_raised do
|
229
|
+
comments = Comment.find(:all, :include => :post, :conditions => {:posts => {:id => 4}}, :limit => 3, :order => 'comments.id')
|
230
|
+
end
|
231
|
+
assert_equal 3, comments.length
|
232
|
+
assert_equal [5,6,7], comments.collect { |c| c.id }
|
233
|
+
assert_no_queries do
|
234
|
+
comments.first.post
|
235
|
+
end
|
236
|
+
end
|
237
|
+
|
226
238
|
def test_eager_association_loading_with_belongs_to_and_conditions_string_with_quoted_table_name
|
227
239
|
quoted_posts_id= Comment.connection.quote_table_name('posts') + '.' + Comment.connection.quote_column_name('id')
|
228
240
|
assert_nothing_raised do
|
@@ -0,0 +1,56 @@
|
|
1
|
+
require 'cases/helper'
|
2
|
+
|
3
|
+
class MyReader < ActiveRecord::Base
|
4
|
+
has_and_belongs_to_many :my_books
|
5
|
+
end
|
6
|
+
|
7
|
+
class MyBook < ActiveRecord::Base
|
8
|
+
has_and_belongs_to_many :my_readers
|
9
|
+
end
|
10
|
+
|
11
|
+
class HabtmJoinTableTest < ActiveRecord::TestCase
|
12
|
+
def setup
|
13
|
+
ActiveRecord::Base.connection.create_table :my_books, :force => true do |t|
|
14
|
+
t.string :name
|
15
|
+
end
|
16
|
+
assert ActiveRecord::Base.connection.table_exists?(:my_books)
|
17
|
+
|
18
|
+
ActiveRecord::Base.connection.create_table :my_readers, :force => true do |t|
|
19
|
+
t.string :name
|
20
|
+
end
|
21
|
+
assert ActiveRecord::Base.connection.table_exists?(:my_readers)
|
22
|
+
|
23
|
+
ActiveRecord::Base.connection.create_table :my_books_my_readers, :force => true do |t|
|
24
|
+
t.integer :my_book_id
|
25
|
+
t.integer :my_reader_id
|
26
|
+
end
|
27
|
+
assert ActiveRecord::Base.connection.table_exists?(:my_books_my_readers)
|
28
|
+
end
|
29
|
+
|
30
|
+
def teardown
|
31
|
+
ActiveRecord::Base.connection.drop_table :my_books
|
32
|
+
ActiveRecord::Base.connection.drop_table :my_readers
|
33
|
+
ActiveRecord::Base.connection.drop_table :my_books_my_readers
|
34
|
+
end
|
35
|
+
|
36
|
+
uses_transaction :test_should_raise_exception_when_join_table_has_a_primary_key
|
37
|
+
def test_should_raise_exception_when_join_table_has_a_primary_key
|
38
|
+
if ActiveRecord::Base.connection.supports_primary_key?
|
39
|
+
assert_raise ActiveRecord::ConfigurationError do
|
40
|
+
jaime = MyReader.create(:name=>"Jaime")
|
41
|
+
jaime.my_books << MyBook.create(:name=>'Great Expectations')
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
uses_transaction :test_should_cache_result_of_primary_key_check
|
47
|
+
def test_should_cache_result_of_primary_key_check
|
48
|
+
if ActiveRecord::Base.connection.supports_primary_key?
|
49
|
+
ActiveRecord::Base.connection.stubs(:primary_key).with('my_books_my_readers').returns(false).once
|
50
|
+
weaz = MyReader.create(:name=>'Weaz')
|
51
|
+
|
52
|
+
weaz.my_books << MyBook.create(:name=>'Great Expectations')
|
53
|
+
weaz.my_books << MyBook.create(:name=>'Greater Expectations')
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
@@ -10,11 +10,12 @@ require 'models/author'
|
|
10
10
|
require 'models/comment'
|
11
11
|
require 'models/person'
|
12
12
|
require 'models/reader'
|
13
|
+
require 'models/tagging'
|
13
14
|
|
14
15
|
class HasManyAssociationsTest < ActiveRecord::TestCase
|
15
16
|
fixtures :accounts, :categories, :companies, :developers, :projects,
|
16
17
|
:developers_projects, :topics, :authors, :comments, :author_addresses,
|
17
|
-
:people, :posts, :readers
|
18
|
+
:people, :posts, :readers, :taggings
|
18
19
|
|
19
20
|
def setup
|
20
21
|
Client.destroyed_client_ids.clear
|
@@ -279,6 +280,12 @@ class HasManyAssociationsTest < ActiveRecord::TestCase
|
|
279
280
|
assert_equal client2, firm.clients.find(:first, :conditions => ["#{QUOTED_TYPE} = :type", { :type => 'Client' }])
|
280
281
|
end
|
281
282
|
|
283
|
+
def test_find_all_with_include_and_conditions
|
284
|
+
assert_nothing_raised do
|
285
|
+
Developer.find(:all, :joins => :audit_logs, :conditions => {'audit_logs.message' => nil, :name => 'Smith'})
|
286
|
+
end
|
287
|
+
end
|
288
|
+
|
282
289
|
def test_find_in_collection
|
283
290
|
assert_equal Client.find(2).name, companies(:first_firm).clients.find(2).name
|
284
291
|
assert_raise(ActiveRecord::RecordNotFound) { companies(:first_firm).clients.find(6) }
|
@@ -502,6 +509,23 @@ class HasManyAssociationsTest < ActiveRecord::TestCase
|
|
502
509
|
assert_equal 0, new_firm.clients_of_firm.size
|
503
510
|
end
|
504
511
|
|
512
|
+
def test_deleting_updates_counter_cache
|
513
|
+
topic = Topic.first
|
514
|
+
assert_equal topic.replies.to_a.size, topic.replies_count
|
515
|
+
|
516
|
+
topic.replies.delete(topic.replies.first)
|
517
|
+
topic.reload
|
518
|
+
assert_equal topic.replies.to_a.size, topic.replies_count
|
519
|
+
end
|
520
|
+
|
521
|
+
def test_deleting_updates_counter_cache_without_dependent_destroy
|
522
|
+
post = posts(:welcome)
|
523
|
+
|
524
|
+
assert_difference "post.reload.taggings_count", -1 do
|
525
|
+
post.taggings.delete(post.taggings.first)
|
526
|
+
end
|
527
|
+
end
|
528
|
+
|
505
529
|
def test_deleting_a_collection
|
506
530
|
force_signal37_to_load_all_clients_of_firm
|
507
531
|
companies(:first_firm).clients_of_firm.create("name" => "Another Client")
|
@@ -547,6 +571,14 @@ class HasManyAssociationsTest < ActiveRecord::TestCase
|
|
547
571
|
end
|
548
572
|
end
|
549
573
|
|
574
|
+
def test_clearing_updates_counter_cache
|
575
|
+
topic = Topic.first
|
576
|
+
|
577
|
+
topic.replies.clear
|
578
|
+
topic.reload
|
579
|
+
assert_equal 0, topic.replies_count
|
580
|
+
end
|
581
|
+
|
550
582
|
def test_clearing_a_dependent_association_collection
|
551
583
|
firm = companies(:first_firm)
|
552
584
|
client_id = firm.dependent_clients_of_firm.first.id
|
@@ -691,6 +723,28 @@ class HasManyAssociationsTest < ActiveRecord::TestCase
|
|
691
723
|
assert_equal 0, companies(:first_firm).clients_of_firm(true).size
|
692
724
|
end
|
693
725
|
|
726
|
+
def test_destroying_by_fixnum_id
|
727
|
+
force_signal37_to_load_all_clients_of_firm
|
728
|
+
|
729
|
+
assert_difference "Client.count", -1 do
|
730
|
+
companies(:first_firm).clients_of_firm.destroy(companies(:first_firm).clients_of_firm.first.id)
|
731
|
+
end
|
732
|
+
|
733
|
+
assert_equal 0, companies(:first_firm).reload.clients_of_firm.size
|
734
|
+
assert_equal 0, companies(:first_firm).clients_of_firm(true).size
|
735
|
+
end
|
736
|
+
|
737
|
+
def test_destroying_by_string_id
|
738
|
+
force_signal37_to_load_all_clients_of_firm
|
739
|
+
|
740
|
+
assert_difference "Client.count", -1 do
|
741
|
+
companies(:first_firm).clients_of_firm.destroy(companies(:first_firm).clients_of_firm.first.id.to_s)
|
742
|
+
end
|
743
|
+
|
744
|
+
assert_equal 0, companies(:first_firm).reload.clients_of_firm.size
|
745
|
+
assert_equal 0, companies(:first_firm).clients_of_firm(true).size
|
746
|
+
end
|
747
|
+
|
694
748
|
def test_destroying_a_collection
|
695
749
|
force_signal37_to_load_all_clients_of_firm
|
696
750
|
companies(:first_firm).clients_of_firm.create("name" => "Another Client")
|
@@ -719,6 +773,12 @@ class HasManyAssociationsTest < ActiveRecord::TestCase
|
|
719
773
|
assert Client.find(:all, :conditions => "firm_id=#{firm.id}").empty?
|
720
774
|
end
|
721
775
|
|
776
|
+
def test_dependence_for_associations_with_hash_condition
|
777
|
+
david = authors(:david)
|
778
|
+
post = posts(:thinking).id
|
779
|
+
assert_difference('Post.count', -1) { assert david.destroy }
|
780
|
+
end
|
781
|
+
|
722
782
|
def test_destroy_dependent_when_deleted_from_association
|
723
783
|
firm = Firm.find(:first)
|
724
784
|
assert_equal 2, firm.clients.size
|
@@ -855,7 +915,7 @@ class HasManyAssociationsTest < ActiveRecord::TestCase
|
|
855
915
|
lambda { authors(:mary).comments = [comments(:greetings), comments(:more_greetings)] },
|
856
916
|
lambda { authors(:mary).comments << Comment.create!(:body => "Yay", :post_id => 424242) },
|
857
917
|
lambda { authors(:mary).comments.delete(authors(:mary).comments.first) },
|
858
|
-
].each {|block| assert_raise(ActiveRecord::
|
918
|
+
].each {|block| assert_raise(ActiveRecord::HasManyThroughCantAssociateThroughHasOneOrManyReflection, &block) }
|
859
919
|
end
|
860
920
|
|
861
921
|
def test_dynamic_find_should_respect_association_order_for_through
|