ibm_db 3.0.4-x86-mingw32 → 3.0.5-x86-mingw32
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGES +4 -1
- data/LICENSE +1 -1
- data/MANIFEST +14 -14
- data/README +225 -225
- data/ext/Makefile.nt32 +181 -181
- data/ext/Makefile.nt32.191 +212 -212
- data/ext/extconf.rb +291 -291
- data/ext/ibm_db.c +11887 -11884
- data/ext/ruby_ibm_db.h +241 -241
- data/ext/ruby_ibm_db_cli.c +866 -866
- data/ext/ruby_ibm_db_cli.h +500 -500
- data/init.rb +41 -41
- data/lib/IBM_DB.rb +27 -27
- data/lib/active_record/connection_adapters/ibm_db_adapter.rb +3177 -3177
- data/lib/active_record/connection_adapters/ibmdb_adapter.rb +1 -1
- data/lib/active_record/vendor/db2-i5-zOS.yaml +328 -328
- data/lib/mswin32/ibm_db.rb +122 -122
- data/lib/mswin32/rb21x/i386/ibm_db.so +0 -0
- data/lib/mswin32/rb22x/i386/ibm_db.so +0 -0
- data/lib/mswin32/rb23x/i386/ibm_db.so +0 -0
- data/test/active_record/connection_adapters/fake_adapter.rb +46 -46
- data/test/assets/example.log +1 -1
- data/test/assets/test.txt +1 -1
- data/test/cases/adapter_test.rb +276 -261
- data/test/cases/aggregations_test.rb +158 -158
- data/test/cases/ar_schema_test.rb +161 -161
- data/test/cases/associations/association_scope_test.rb +21 -21
- data/test/cases/associations/belongs_to_associations_test.rb +1029 -1029
- data/test/cases/associations/callbacks_test.rb +192 -192
- data/test/cases/associations/cascaded_eager_loading_test.rb +188 -188
- data/test/cases/associations/deprecated_counter_cache_on_has_many_through_test.rb +26 -26
- data/test/cases/associations/eager_load_includes_full_sti_class_test.rb +36 -36
- data/test/cases/associations/eager_load_nested_include_test.rb +128 -128
- data/test/cases/associations/eager_singularization_test.rb +148 -148
- data/test/cases/associations/eager_test.rb +1429 -1411
- data/test/cases/associations/extension_test.rb +82 -82
- data/test/cases/associations/has_and_belongs_to_many_associations_test.rb +972 -932
- data/test/cases/associations/has_many_associations_test.rb +2182 -2162
- data/test/cases/associations/has_many_through_associations_test.rb +1204 -1204
- data/test/cases/associations/has_one_associations_test.rb +610 -610
- data/test/cases/associations/has_one_through_associations_test.rb +380 -380
- data/test/cases/associations/inner_join_association_test.rb +139 -139
- data/test/cases/associations/inverse_associations_test.rb +706 -693
- data/test/cases/associations/join_model_test.rb +754 -754
- data/test/cases/associations/nested_through_associations_test.rb +579 -579
- data/test/cases/associations/required_test.rb +82 -82
- data/test/cases/associations_test.rb +380 -380
- data/test/cases/attribute_decorators_test.rb +125 -125
- data/test/cases/attribute_methods/read_test.rb +60 -60
- data/test/cases/attribute_methods/serialization_test.rb +29 -29
- data/test/cases/attribute_methods_test.rb +952 -952
- data/test/cases/attribute_set_test.rb +210 -200
- data/test/cases/attribute_test.rb +180 -180
- data/test/cases/attributes_test.rb +136 -136
- data/test/cases/autosave_association_test.rb +1595 -1595
- data/test/cases/base_test.rb +1664 -1638
- data/test/cases/batches_test.rb +212 -212
- data/test/cases/binary_test.rb +52 -52
- data/test/cases/bind_parameter_test.rb +100 -100
- data/test/cases/calculations_test.rb +646 -646
- data/test/cases/callbacks_test.rb +543 -543
- data/test/cases/clone_test.rb +40 -40
- data/test/cases/coders/yaml_column_test.rb +63 -63
- data/test/cases/column_alias_test.rb +17 -17
- data/test/cases/column_definition_test.rb +123 -123
- data/test/cases/connection_adapters/adapter_leasing_test.rb +54 -54
- data/test/cases/connection_adapters/connection_handler_test.rb +53 -53
- data/test/cases/connection_adapters/connection_specification_test.rb +12 -12
- data/test/cases/connection_adapters/merge_and_resolve_default_url_config_test.rb +293 -293
- data/test/cases/connection_adapters/mysql_type_lookup_test.rb +65 -65
- data/test/cases/connection_adapters/quoting_test.rb +13 -13
- data/test/cases/connection_adapters/schema_cache_test.rb +56 -56
- data/test/cases/connection_adapters/type_lookup_test.rb +110 -110
- data/test/cases/connection_management_test.rb +122 -122
- data/test/cases/connection_pool_test.rb +346 -346
- data/test/cases/connection_specification/resolver_test.rb +116 -116
- data/test/cases/core_test.rb +112 -112
- data/test/cases/counter_cache_test.rb +209 -209
- data/test/cases/custom_locking_test.rb +17 -17
- data/test/cases/database_statements_test.rb +19 -19
- data/test/cases/date_time_test.rb +61 -61
- data/test/cases/defaults_test.rb +223 -223
- data/test/cases/dirty_test.rb +785 -775
- data/test/cases/disconnected_test.rb +28 -28
- data/test/cases/dup_test.rb +157 -157
- data/test/cases/enum_test.rb +290 -290
- data/test/cases/explain_subscriber_test.rb +64 -64
- data/test/cases/explain_test.rb +76 -76
- data/test/cases/finder_respond_to_test.rb +60 -60
- data/test/cases/finder_test.rb +1169 -1166
- data/test/cases/fixture_set/file_test.rb +138 -138
- data/test/cases/fixtures_test.rb +908 -897
- data/test/cases/forbidden_attributes_protection_test.rb +99 -99
- data/test/cases/habtm_destroy_order_test.rb +61 -61
- data/test/cases/helper.rb +210 -210
- data/test/cases/hot_compatibility_test.rb +54 -54
- data/test/cases/i18n_test.rb +45 -45
- data/test/cases/inheritance_test.rb +375 -375
- data/test/cases/integration_test.rb +139 -139
- data/test/cases/invalid_connection_test.rb +22 -22
- data/test/cases/invalid_date_test.rb +32 -32
- data/test/cases/invertible_migration_test.rb +295 -295
- data/test/cases/json_serialization_test.rb +302 -302
- data/test/cases/locking_test.rb +477 -477
- data/test/cases/log_subscriber_test.rb +136 -136
- data/test/cases/migration/change_schema_test - Copy.rb +448 -448
- data/test/cases/migration/change_schema_test.rb +512 -472
- data/test/cases/migration/change_table_test.rb +224 -224
- data/test/cases/migration/column_attributes_test.rb +192 -192
- data/test/cases/migration/column_positioning_test.rb +56 -56
- data/test/cases/migration/columns_test.rb +304 -304
- data/test/cases/migration/command_recorder_test.rb +305 -305
- data/test/cases/migration/create_join_table_test.rb +148 -148
- data/test/cases/migration/foreign_key_test - Changed.rb +325 -325
- data/test/cases/migration/foreign_key_test.rb +328 -360
- data/test/cases/migration/helper.rb +39 -39
- data/test/cases/migration/index_test.rb +216 -216
- data/test/cases/migration/logger_test.rb +36 -36
- data/test/cases/migration/pending_migrations_test.rb +53 -53
- data/test/cases/migration/references_foreign_key_test.rb +169 -214
- data/test/cases/migration/references_index_test.rb +101 -101
- data/test/cases/migration/references_statements_test.rb +116 -116
- data/test/cases/migration/rename_table_test.rb +93 -93
- data/test/cases/migration/table_and_index_test.rb +24 -24
- data/test/cases/migration_test.rb +959 -959
- data/test/cases/migrator_test.rb +388 -388
- data/test/cases/mixin_test.rb +70 -70
- data/test/cases/modules_test.rb +173 -173
- data/test/cases/multiparameter_attributes_test.rb +350 -350
- data/test/cases/multiple_db_test.rb +115 -115
- data/test/cases/nested_attributes_test.rb +1070 -1057
- data/test/cases/nested_attributes_with_callbacks_test.rb +144 -144
- data/test/cases/persistence_test.rb +909 -909
- data/test/cases/pooled_connections_test.rb +81 -81
- data/test/cases/primary_keys_test.rb +237 -237
- data/test/cases/query_cache_test.rb +326 -326
- data/test/cases/quoting_test.rb +156 -156
- data/test/cases/readonly_test.rb +118 -118
- data/test/cases/reaper_test.rb +85 -85
- data/test/cases/reflection_test.rb +463 -454
- data/test/cases/relation/delegation_test.rb +68 -68
- data/test/cases/relation/merging_test.rb +161 -161
- data/test/cases/relation/mutation_test.rb +165 -165
- data/test/cases/relation/predicate_builder_test.rb +14 -14
- data/test/cases/relation/where_chain_test.rb +181 -181
- data/test/cases/relation/where_test.rb +300 -300
- data/test/cases/relation/where_test2.rb +36 -36
- data/test/cases/relation_test.rb +319 -297
- data/test/cases/relations_test.rb +1815 -1815
- data/test/cases/reload_models_test.rb +22 -22
- data/test/cases/result_test.rb +80 -80
- data/test/cases/sanitize_test.rb +83 -83
- data/test/cases/schema_dumper_test.rb +463 -463
- data/test/cases/scoping/default_scoping_test.rb +454 -454
- data/test/cases/scoping/named_scoping_test.rb +524 -524
- data/test/cases/scoping/relation_scoping_test.rb +357 -357
- data/test/cases/serialization_test.rb +104 -104
- data/test/cases/serialized_attribute_test.rb +277 -277
- data/test/cases/statement_cache_test.rb +98 -98
- data/test/cases/store_test.rb +194 -194
- data/test/cases/tasks/database_tasks_test.rb +398 -396
- data/test/cases/tasks/mysql_rake_test.rb +324 -311
- data/test/cases/tasks/postgresql_rake_test.rb +250 -245
- data/test/cases/tasks/sqlite_rake_test.rb +193 -193
- data/test/cases/test_case.rb +123 -123
- data/test/cases/timestamp_test.rb +467 -468
- data/test/cases/transaction_callbacks_test.rb +452 -452
- data/test/cases/transaction_isolation_test.rb +106 -106
- data/test/cases/transactions_test.rb +817 -817
- data/test/cases/type/decimal_test.rb +56 -51
- data/test/cases/type/integer_test.rb +121 -121
- data/test/cases/type/string_test.rb +36 -36
- data/test/cases/type/type_map_test.rb +177 -177
- data/test/cases/type/unsigned_integer_test.rb +18 -18
- data/test/cases/types_test.rb +141 -141
- data/test/cases/unconnected_test.rb +33 -33
- data/test/cases/validations/association_validation_test.rb +86 -86
- data/test/cases/validations/i18n_generate_message_validation_test.rb +84 -84
- data/test/cases/validations/i18n_validation_test.rb +90 -90
- data/test/cases/validations/length_validation_test.rb +47 -47
- data/test/cases/validations/presence_validation_test.rb +68 -68
- data/test/cases/validations/uniqueness_validation_test.rb +457 -434
- data/test/cases/validations_repair_helper.rb +23 -23
- data/test/cases/validations_test.rb +165 -165
- data/test/cases/view_test.rb +119 -113
- data/test/cases/xml_serialization_test.rb +457 -457
- data/test/cases/yaml_serialization_test.rb +126 -86
- data/test/config.rb +5 -5
- data/test/config.yml +154 -154
- data/test/connections/native_ibm_db/connection.rb +43 -43
- data/test/fixtures/accounts.yml +29 -29
- data/test/fixtures/admin/accounts.yml +2 -2
- data/test/fixtures/admin/randomly_named_a9.yml +7 -7
- data/test/fixtures/admin/randomly_named_b0.yml +7 -7
- data/test/fixtures/admin/users.yml +10 -10
- data/test/fixtures/author_addresses.yml +17 -17
- data/test/fixtures/author_favorites.yml +3 -3
- data/test/fixtures/authors.yml +23 -23
- data/test/fixtures/binaries.yml +133 -133
- data/test/fixtures/books.yml +11 -11
- data/test/fixtures/bulbs.yml +5 -5
- data/test/fixtures/cars.yml +9 -9
- data/test/fixtures/categories.yml +19 -19
- data/test/fixtures/categories/special_categories.yml +9 -9
- data/test/fixtures/categories/subsubdir/arbitrary_filename.yml +4 -4
- data/test/fixtures/categories_ordered.yml +7 -7
- data/test/fixtures/categories_posts.yml +31 -31
- data/test/fixtures/categorizations.yml +23 -23
- data/test/fixtures/clubs.yml +8 -8
- data/test/fixtures/collections.yml +3 -3
- data/test/fixtures/colleges.yml +3 -3
- data/test/fixtures/comments.yml +65 -65
- data/test/fixtures/companies.yml +67 -67
- data/test/fixtures/computers.yml +10 -10
- data/test/fixtures/courses.yml +8 -8
- data/test/fixtures/customers.yml +25 -25
- data/test/fixtures/dashboards.yml +6 -6
- data/test/fixtures/developers.yml +21 -21
- data/test/fixtures/developers_projects.yml +16 -16
- data/test/fixtures/dog_lovers.yml +7 -7
- data/test/fixtures/dogs.yml +4 -4
- data/test/fixtures/doubloons.yml +3 -3
- data/test/fixtures/edges.yml +5 -5
- data/test/fixtures/entrants.yml +14 -14
- data/test/fixtures/essays.yml +6 -6
- data/test/fixtures/faces.yml +11 -11
- data/test/fixtures/fk_test_has_fk.yml +3 -3
- data/test/fixtures/fk_test_has_pk.yml +1 -1
- data/test/fixtures/friendships.yml +4 -4
- data/test/fixtures/funny_jokes.yml +10 -10
- data/test/fixtures/interests.yml +33 -33
- data/test/fixtures/items.yml +3 -3
- data/test/fixtures/jobs.yml +7 -7
- data/test/fixtures/legacy_things.yml +3 -3
- data/test/fixtures/mateys.yml +4 -4
- data/test/fixtures/member_details.yml +8 -8
- data/test/fixtures/member_types.yml +6 -6
- data/test/fixtures/members.yml +11 -11
- data/test/fixtures/memberships.yml +34 -34
- data/test/fixtures/men.yml +5 -5
- data/test/fixtures/minimalistics.yml +2 -2
- data/test/fixtures/minivans.yml +5 -5
- data/test/fixtures/mixed_case_monkeys.yml +6 -6
- data/test/fixtures/mixins.yml +29 -29
- data/test/fixtures/movies.yml +7 -7
- data/test/fixtures/naked/csv/accounts.csv +1 -1
- data/test/fixtures/naked/yml/accounts.yml +1 -1
- data/test/fixtures/naked/yml/companies.yml +1 -1
- data/test/fixtures/naked/yml/courses.yml +1 -1
- data/test/fixtures/organizations.yml +5 -5
- data/test/fixtures/other_topics.yml +42 -42
- data/test/fixtures/owners.yml +9 -9
- data/test/fixtures/parrots.yml +27 -27
- data/test/fixtures/parrots_pirates.yml +7 -7
- data/test/fixtures/people.yml +24 -24
- data/test/fixtures/peoples_treasures.yml +3 -3
- data/test/fixtures/pets.yml +19 -19
- data/test/fixtures/pirates.yml +12 -12
- data/test/fixtures/posts.yml +80 -80
- data/test/fixtures/price_estimates.yml +7 -7
- data/test/fixtures/products.yml +4 -4
- data/test/fixtures/projects.yml +7 -7
- data/test/fixtures/randomly_named_a9.yml +7 -7
- data/test/fixtures/ratings.yml +14 -14
- data/test/fixtures/readers.yml +11 -11
- data/test/fixtures/references.yml +17 -17
- data/test/fixtures/reserved_words/distinct.yml +5 -5
- data/test/fixtures/reserved_words/distinct_select.yml +11 -11
- data/test/fixtures/reserved_words/group.yml +14 -14
- data/test/fixtures/reserved_words/select.yml +8 -8
- data/test/fixtures/reserved_words/values.yml +7 -7
- data/test/fixtures/ships.yml +6 -6
- data/test/fixtures/speedometers.yml +8 -8
- data/test/fixtures/sponsors.yml +12 -12
- data/test/fixtures/string_key_objects.yml +7 -7
- data/test/fixtures/subscribers.yml +10 -10
- data/test/fixtures/subscriptions.yml +12 -12
- data/test/fixtures/taggings.yml +78 -78
- data/test/fixtures/tags.yml +11 -11
- data/test/fixtures/tasks.yml +7 -7
- data/test/fixtures/teapots.yml +3 -3
- data/test/fixtures/to_be_linked/accounts.yml +2 -2
- data/test/fixtures/to_be_linked/users.yml +10 -10
- data/test/fixtures/topics.yml +49 -49
- data/test/fixtures/toys.yml +14 -14
- data/test/fixtures/traffic_lights.yml +9 -9
- data/test/fixtures/treasures.yml +10 -10
- data/test/fixtures/uuid_children.yml +3 -3
- data/test/fixtures/uuid_parents.yml +2 -2
- data/test/fixtures/variants.yml +4 -4
- data/test/fixtures/vegetables.yml +19 -19
- data/test/fixtures/vertices.yml +3 -3
- data/test/fixtures/warehouse_things.yml +2 -2
- data/test/fixtures/zines.yml +5 -5
- data/test/ibm_db_test.rb +24 -24
- data/test/migrations/10_urban/9_add_expressions.rb +11 -11
- data/test/migrations/decimal/1_give_me_big_numbers.rb +15 -15
- data/test/migrations/magic/1_currencies_have_symbols.rb +12 -12
- data/test/migrations/missing/1000_people_have_middle_names.rb +8 -8
- data/test/migrations/missing/1_people_have_last_names.rb +8 -8
- data/test/migrations/missing/3_we_need_reminders.rb +11 -11
- data/test/migrations/missing/4_innocent_jointable.rb +11 -11
- data/test/migrations/rename/1_we_need_things.rb +10 -10
- data/test/migrations/rename/2_rename_things.rb +8 -8
- data/test/migrations/to_copy/1_people_have_hobbies.rb +9 -9
- data/test/migrations/to_copy/2_people_have_descriptions.rb +9 -9
- data/test/migrations/to_copy2/1_create_articles.rb +7 -7
- data/test/migrations/to_copy2/2_create_comments.rb +7 -7
- data/test/migrations/to_copy_with_name_collision/1_people_have_hobbies.rb +9 -9
- data/test/migrations/to_copy_with_timestamps/20090101010101_people_have_hobbies.rb +9 -9
- data/test/migrations/to_copy_with_timestamps/20090101010202_people_have_descriptions.rb +9 -9
- data/test/migrations/to_copy_with_timestamps2/20090101010101_create_articles.rb +7 -7
- data/test/migrations/to_copy_with_timestamps2/20090101010202_create_comments.rb +7 -7
- data/test/migrations/valid/1_valid_people_have_last_names.rb +9 -9
- data/test/migrations/valid/2_we_need_reminders.rb +11 -11
- data/test/migrations/valid/3_innocent_jointable.rb +11 -11
- data/test/migrations/valid_with_subdirectories/1_valid_people_have_last_names.rb +9 -9
- data/test/migrations/valid_with_subdirectories/sub/2_we_need_reminders.rb +11 -11
- data/test/migrations/valid_with_subdirectories/sub1/3_innocent_jointable.rb +11 -11
- data/test/migrations/valid_with_timestamps/20100101010101_valid_with_timestamps_people_have_last_names.rb +9 -9
- data/test/migrations/valid_with_timestamps/20100201010101_valid_with_timestamps_we_need_reminders.rb +12 -12
- data/test/migrations/valid_with_timestamps/20100301010101_valid_with_timestamps_innocent_jointable.rb +12 -12
- data/test/migrations/version_check/20131219224947_migration_version_check.rb +8 -8
- data/test/models/admin.rb +4 -4
- data/test/models/admin/account.rb +2 -2
- data/test/models/admin/randomly_named_c1.rb +3 -3
- data/test/models/admin/user.rb +40 -40
- data/test/models/aircraft.rb +4 -4
- data/test/models/arunit2_model.rb +3 -3
- data/test/models/author.rb +212 -212
- data/test/models/auto_id.rb +4 -4
- data/test/models/autoloadable/extra_firm.rb +2 -2
- data/test/models/binary.rb +1 -1
- data/test/models/bird.rb +12 -12
- data/test/models/book.rb +18 -18
- data/test/models/boolean.rb +2 -2
- data/test/models/bulb.rb +51 -51
- data/test/models/cake_designer.rb +3 -3
- data/test/models/car.rb +26 -26
- data/test/models/carrier.rb +2 -2
- data/test/models/categorization.rb +19 -19
- data/test/models/category.rb +35 -35
- data/test/models/chef.rb +7 -3
- data/test/models/citation.rb +3 -3
- data/test/models/club.rb +23 -23
- data/test/models/college.rb +10 -10
- data/test/models/column.rb +3 -3
- data/test/models/column_name.rb +3 -3
- data/test/models/comment.rb +64 -64
- data/test/models/company.rb +228 -225
- data/test/models/company_in_module.rb +98 -98
- data/test/models/computer.rb +3 -3
- data/test/models/contact.rb +41 -41
- data/test/models/contract.rb +20 -20
- data/test/models/country.rb +7 -7
- data/test/models/course.rb +6 -6
- data/test/models/customer.rb +77 -77
- data/test/models/customer_carrier.rb +14 -14
- data/test/models/dashboard.rb +3 -3
- data/test/models/default.rb +2 -2
- data/test/models/department.rb +4 -4
- data/test/models/developer.rb +255 -252
- data/test/models/dog.rb +5 -5
- data/test/models/dog_lover.rb +5 -5
- data/test/models/doubloon.rb +12 -12
- data/test/models/drink_designer.rb +3 -3
- data/test/models/edge.rb +5 -5
- data/test/models/electron.rb +5 -5
- data/test/models/engine.rb +4 -4
- data/test/models/entrant.rb +3 -3
- data/test/models/essay.rb +5 -5
- data/test/models/event.rb +2 -2
- data/test/models/eye.rb +37 -37
- data/test/models/face.rb +9 -9
- data/test/models/friendship.rb +6 -6
- data/test/models/guid.rb +1 -1
- data/test/models/hotel.rb +9 -6
- data/test/models/image.rb +3 -3
- data/test/models/interest.rb +5 -5
- data/test/models/invoice.rb +4 -4
- data/test/models/item.rb +7 -7
- data/test/models/job.rb +7 -7
- data/test/models/joke.rb +7 -7
- data/test/models/keyboard.rb +3 -3
- data/test/models/legacy_thing.rb +3 -3
- data/test/models/lesson.rb +11 -11
- data/test/models/line_item.rb +3 -3
- data/test/models/liquid.rb +4 -4
- data/test/models/man.rb +11 -11
- data/test/models/matey.rb +4 -4
- data/test/models/member.rb +41 -41
- data/test/models/member_detail.rb +7 -7
- data/test/models/member_type.rb +3 -3
- data/test/models/membership.rb +35 -35
- data/test/models/minimalistic.rb +2 -2
- data/test/models/minivan.rb +9 -9
- data/test/models/mixed_case_monkey.rb +3 -3
- data/test/models/molecule.rb +6 -6
- data/test/models/movie.rb +5 -5
- data/test/models/order.rb +4 -4
- data/test/models/organization.rb +14 -14
- data/test/models/owner.rb +34 -34
- data/test/models/parrot.rb +29 -29
- data/test/models/person.rb +143 -143
- data/test/models/personal_legacy_thing.rb +4 -4
- data/test/models/pet.rb +15 -15
- data/test/models/pirate.rb +92 -92
- data/test/models/possession.rb +3 -3
- data/test/models/post.rb +264 -264
- data/test/models/price_estimate.rb +4 -4
- data/test/models/professor.rb +5 -5
- data/test/models/project.rb +31 -29
- data/test/models/publisher.rb +2 -2
- data/test/models/publisher/article.rb +4 -4
- data/test/models/publisher/magazine.rb +3 -3
- data/test/models/randomly_named_c1.rb +3 -3
- data/test/models/rating.rb +4 -4
- data/test/models/reader.rb +23 -23
- data/test/models/record.rb +2 -2
- data/test/models/reference.rb +22 -22
- data/test/models/reply.rb +61 -61
- data/test/models/ship.rb +33 -33
- data/test/models/ship_part.rb +7 -7
- data/test/models/shop.rb +17 -17
- data/test/models/shop_account.rb +6 -6
- data/test/models/speedometer.rb +6 -6
- data/test/models/sponsor.rb +7 -7
- data/test/models/string_key_object.rb +3 -3
- data/test/models/student.rb +4 -4
- data/test/models/subject.rb +16 -16
- data/test/models/subscriber.rb +8 -8
- data/test/models/subscription.rb +4 -4
- data/test/models/tag.rb +7 -7
- data/test/models/tagging.rb +13 -13
- data/test/models/task.rb +5 -5
- data/test/models/topic.rb +124 -124
- data/test/models/toy.rb +6 -6
- data/test/models/traffic_light.rb +4 -4
- data/test/models/treasure.rb +14 -14
- data/test/models/treaty.rb +7 -7
- data/test/models/tyre.rb +11 -11
- data/test/models/uuid_child.rb +3 -3
- data/test/models/uuid_parent.rb +3 -3
- data/test/models/vegetables.rb +24 -24
- data/test/models/vehicle.rb +6 -6
- data/test/models/vertex.rb +9 -9
- data/test/models/warehouse_thing.rb +5 -5
- data/test/models/wheel.rb +3 -3
- data/test/models/without_table.rb +3 -3
- data/test/models/zine.rb +3 -3
- data/test/schema/mysql2_specific_schema.rb +58 -58
- data/test/schema/mysql_specific_schema.rb +70 -70
- data/test/schema/oracle_specific_schema.rb +43 -43
- data/test/schema/postgresql_specific_schema.rb +202 -202
- data/test/schema/schema.rb +952 -938
- data/test/schema/sqlite_specific_schema.rb +21 -21
- data/test/support/config.rb +43 -43
- data/test/support/connection.rb +22 -22
- data/test/support/connection_helper.rb +14 -14
- data/test/support/ddl_helper.rb +8 -8
- data/test/support/schema_dumping_helper.rb +20 -20
- metadata +2 -2
data/test/cases/quoting_test.rb
CHANGED
@@ -1,156 +1,156 @@
|
|
1
|
-
require "cases/helper"
|
2
|
-
|
3
|
-
module ActiveRecord
|
4
|
-
module ConnectionAdapters
|
5
|
-
class QuotingTest < ActiveRecord::TestCase
|
6
|
-
def setup
|
7
|
-
@quoter = Class.new { include Quoting }.new
|
8
|
-
end
|
9
|
-
|
10
|
-
def test_quoted_true
|
11
|
-
assert_equal "'t'", @quoter.quoted_true
|
12
|
-
end
|
13
|
-
|
14
|
-
def test_quoted_false
|
15
|
-
assert_equal "'f'", @quoter.quoted_false
|
16
|
-
end
|
17
|
-
|
18
|
-
def test_quote_column_name
|
19
|
-
assert_equal "foo", @quoter.quote_column_name('foo')
|
20
|
-
end
|
21
|
-
|
22
|
-
def test_quote_table_name
|
23
|
-
assert_equal "foo", @quoter.quote_table_name('foo')
|
24
|
-
end
|
25
|
-
|
26
|
-
def test_quote_table_name_calls_quote_column_name
|
27
|
-
@quoter.extend(Module.new {
|
28
|
-
def quote_column_name(string)
|
29
|
-
'lol'
|
30
|
-
end
|
31
|
-
})
|
32
|
-
assert_equal 'lol', @quoter.quote_table_name('foo')
|
33
|
-
end
|
34
|
-
|
35
|
-
def test_quote_string
|
36
|
-
assert_equal "''", @quoter.quote_string("'")
|
37
|
-
assert_equal "\\\\", @quoter.quote_string("\\")
|
38
|
-
assert_equal "hi''i", @quoter.quote_string("hi'i")
|
39
|
-
assert_equal "hi\\\\i", @quoter.quote_string("hi\\i")
|
40
|
-
end
|
41
|
-
|
42
|
-
def test_quoted_date
|
43
|
-
t = Date.today
|
44
|
-
assert_equal t.to_s(:db), @quoter.quoted_date(t)
|
45
|
-
end
|
46
|
-
|
47
|
-
def test_quoted_time_utc
|
48
|
-
with_timezone_config default: :utc do
|
49
|
-
t = Time.now
|
50
|
-
assert_equal t.getutc.to_s(:db), @quoter.quoted_date(t)
|
51
|
-
end
|
52
|
-
end
|
53
|
-
|
54
|
-
def test_quoted_time_local
|
55
|
-
with_timezone_config default: :local do
|
56
|
-
t = Time.now
|
57
|
-
assert_equal t.getlocal.to_s(:db), @quoter.quoted_date(t)
|
58
|
-
end
|
59
|
-
end
|
60
|
-
|
61
|
-
def test_quoted_time_crazy
|
62
|
-
with_timezone_config default: :asdfasdf do
|
63
|
-
t = Time.now
|
64
|
-
assert_equal t.getlocal.to_s(:db), @quoter.quoted_date(t)
|
65
|
-
end
|
66
|
-
end
|
67
|
-
|
68
|
-
def test_quoted_datetime_utc
|
69
|
-
with_timezone_config default: :utc do
|
70
|
-
t = DateTime.now
|
71
|
-
assert_equal t.getutc.to_s(:db), @quoter.quoted_date(t)
|
72
|
-
end
|
73
|
-
end
|
74
|
-
|
75
|
-
###
|
76
|
-
# DateTime doesn't define getlocal, so make sure it does nothing
|
77
|
-
def test_quoted_datetime_local
|
78
|
-
with_timezone_config default: :local do
|
79
|
-
t = DateTime.now
|
80
|
-
assert_equal t.to_s(:db), @quoter.quoted_date(t)
|
81
|
-
end
|
82
|
-
end
|
83
|
-
|
84
|
-
def test_quote_with_quoted_id
|
85
|
-
assert_equal 1, @quoter.quote(Struct.new(:quoted_id).new(1), nil)
|
86
|
-
end
|
87
|
-
|
88
|
-
def test_quote_nil
|
89
|
-
assert_equal 'NULL', @quoter.quote(nil, nil)
|
90
|
-
end
|
91
|
-
|
92
|
-
def test_quote_true
|
93
|
-
assert_equal @quoter.quoted_true, @quoter.quote(true, nil)
|
94
|
-
end
|
95
|
-
|
96
|
-
def test_quote_false
|
97
|
-
assert_equal @quoter.quoted_false, @quoter.quote(false, nil)
|
98
|
-
end
|
99
|
-
|
100
|
-
def test_quote_float
|
101
|
-
float = 1.2
|
102
|
-
assert_equal float.to_s, @quoter.quote(float, nil)
|
103
|
-
end
|
104
|
-
|
105
|
-
def test_quote_fixnum
|
106
|
-
fixnum = 1
|
107
|
-
assert_equal fixnum.to_s, @quoter.quote(fixnum, nil)
|
108
|
-
end
|
109
|
-
|
110
|
-
def test_quote_bignum
|
111
|
-
bignum = 1 << 100
|
112
|
-
assert_equal bignum.to_s, @quoter.quote(bignum, nil)
|
113
|
-
end
|
114
|
-
|
115
|
-
def test_quote_bigdecimal
|
116
|
-
bigdec = BigDecimal.new((1 << 100).to_s)
|
117
|
-
assert_equal bigdec.to_s('F'), @quoter.quote(bigdec, nil)
|
118
|
-
end
|
119
|
-
|
120
|
-
def test_dates_and_times
|
121
|
-
@quoter.extend(Module.new { def quoted_date(value) 'lol' end })
|
122
|
-
assert_equal "'lol'", @quoter.quote(Date.today, nil)
|
123
|
-
assert_equal "'lol'", @quoter.quote(Time.now, nil)
|
124
|
-
assert_equal "'lol'", @quoter.quote(DateTime.now, nil)
|
125
|
-
end
|
126
|
-
|
127
|
-
def test_crazy_object
|
128
|
-
crazy = Class.new.new
|
129
|
-
expected = "'#{YAML.dump(crazy)}'"
|
130
|
-
assert_equal expected, @quoter.quote(crazy, nil)
|
131
|
-
end
|
132
|
-
|
133
|
-
def test_crazy_object_calls_quote_string
|
134
|
-
crazy = Class.new { def initialize; @lol = 'lo\l' end }.new
|
135
|
-
assert_match "lo\\\\l", @quoter.quote(crazy, nil)
|
136
|
-
end
|
137
|
-
|
138
|
-
def test_quote_string_no_column
|
139
|
-
assert_equal "'lo\\\\l'", @quoter.quote('lo\l', nil)
|
140
|
-
end
|
141
|
-
|
142
|
-
def test_quote_as_mb_chars_no_column
|
143
|
-
string = ActiveSupport::Multibyte::Chars.new('lo\l')
|
144
|
-
assert_equal "'lo\\\\l'", @quoter.quote(string, nil)
|
145
|
-
end
|
146
|
-
|
147
|
-
def test_string_with_crazy_column
|
148
|
-
assert_equal "'lo\\\\l'", @quoter.quote('lo\l')
|
149
|
-
end
|
150
|
-
|
151
|
-
def test_quote_duration
|
152
|
-
assert_equal "1800", @quoter.quote(30.minutes)
|
153
|
-
end
|
154
|
-
end
|
155
|
-
end
|
156
|
-
end
|
1
|
+
require "cases/helper"
|
2
|
+
|
3
|
+
module ActiveRecord
|
4
|
+
module ConnectionAdapters
|
5
|
+
class QuotingTest < ActiveRecord::TestCase
|
6
|
+
def setup
|
7
|
+
@quoter = Class.new { include Quoting }.new
|
8
|
+
end
|
9
|
+
|
10
|
+
def test_quoted_true
|
11
|
+
assert_equal "'t'", @quoter.quoted_true
|
12
|
+
end
|
13
|
+
|
14
|
+
def test_quoted_false
|
15
|
+
assert_equal "'f'", @quoter.quoted_false
|
16
|
+
end
|
17
|
+
|
18
|
+
def test_quote_column_name
|
19
|
+
assert_equal "foo", @quoter.quote_column_name('foo')
|
20
|
+
end
|
21
|
+
|
22
|
+
def test_quote_table_name
|
23
|
+
assert_equal "foo", @quoter.quote_table_name('foo')
|
24
|
+
end
|
25
|
+
|
26
|
+
def test_quote_table_name_calls_quote_column_name
|
27
|
+
@quoter.extend(Module.new {
|
28
|
+
def quote_column_name(string)
|
29
|
+
'lol'
|
30
|
+
end
|
31
|
+
})
|
32
|
+
assert_equal 'lol', @quoter.quote_table_name('foo')
|
33
|
+
end
|
34
|
+
|
35
|
+
def test_quote_string
|
36
|
+
assert_equal "''", @quoter.quote_string("'")
|
37
|
+
assert_equal "\\\\", @quoter.quote_string("\\")
|
38
|
+
assert_equal "hi''i", @quoter.quote_string("hi'i")
|
39
|
+
assert_equal "hi\\\\i", @quoter.quote_string("hi\\i")
|
40
|
+
end
|
41
|
+
|
42
|
+
def test_quoted_date
|
43
|
+
t = Date.today
|
44
|
+
assert_equal t.to_s(:db), @quoter.quoted_date(t)
|
45
|
+
end
|
46
|
+
|
47
|
+
def test_quoted_time_utc
|
48
|
+
with_timezone_config default: :utc do
|
49
|
+
t = Time.now
|
50
|
+
assert_equal t.getutc.to_s(:db), @quoter.quoted_date(t)
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
def test_quoted_time_local
|
55
|
+
with_timezone_config default: :local do
|
56
|
+
t = Time.now
|
57
|
+
assert_equal t.getlocal.to_s(:db), @quoter.quoted_date(t)
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
def test_quoted_time_crazy
|
62
|
+
with_timezone_config default: :asdfasdf do
|
63
|
+
t = Time.now
|
64
|
+
assert_equal t.getlocal.to_s(:db), @quoter.quoted_date(t)
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
def test_quoted_datetime_utc
|
69
|
+
with_timezone_config default: :utc do
|
70
|
+
t = DateTime.now
|
71
|
+
assert_equal t.getutc.to_s(:db), @quoter.quoted_date(t)
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
###
|
76
|
+
# DateTime doesn't define getlocal, so make sure it does nothing
|
77
|
+
def test_quoted_datetime_local
|
78
|
+
with_timezone_config default: :local do
|
79
|
+
t = DateTime.now
|
80
|
+
assert_equal t.to_s(:db), @quoter.quoted_date(t)
|
81
|
+
end
|
82
|
+
end
|
83
|
+
|
84
|
+
def test_quote_with_quoted_id
|
85
|
+
assert_equal 1, @quoter.quote(Struct.new(:quoted_id).new(1), nil)
|
86
|
+
end
|
87
|
+
|
88
|
+
def test_quote_nil
|
89
|
+
assert_equal 'NULL', @quoter.quote(nil, nil)
|
90
|
+
end
|
91
|
+
|
92
|
+
def test_quote_true
|
93
|
+
assert_equal @quoter.quoted_true, @quoter.quote(true, nil)
|
94
|
+
end
|
95
|
+
|
96
|
+
def test_quote_false
|
97
|
+
assert_equal @quoter.quoted_false, @quoter.quote(false, nil)
|
98
|
+
end
|
99
|
+
|
100
|
+
def test_quote_float
|
101
|
+
float = 1.2
|
102
|
+
assert_equal float.to_s, @quoter.quote(float, nil)
|
103
|
+
end
|
104
|
+
|
105
|
+
def test_quote_fixnum
|
106
|
+
fixnum = 1
|
107
|
+
assert_equal fixnum.to_s, @quoter.quote(fixnum, nil)
|
108
|
+
end
|
109
|
+
|
110
|
+
def test_quote_bignum
|
111
|
+
bignum = 1 << 100
|
112
|
+
assert_equal bignum.to_s, @quoter.quote(bignum, nil)
|
113
|
+
end
|
114
|
+
|
115
|
+
def test_quote_bigdecimal
|
116
|
+
bigdec = BigDecimal.new((1 << 100).to_s)
|
117
|
+
assert_equal bigdec.to_s('F'), @quoter.quote(bigdec, nil)
|
118
|
+
end
|
119
|
+
|
120
|
+
def test_dates_and_times
|
121
|
+
@quoter.extend(Module.new { def quoted_date(value) 'lol' end })
|
122
|
+
assert_equal "'lol'", @quoter.quote(Date.today, nil)
|
123
|
+
assert_equal "'lol'", @quoter.quote(Time.now, nil)
|
124
|
+
assert_equal "'lol'", @quoter.quote(DateTime.now, nil)
|
125
|
+
end
|
126
|
+
|
127
|
+
def test_crazy_object
|
128
|
+
crazy = Class.new.new
|
129
|
+
expected = "'#{YAML.dump(crazy)}'"
|
130
|
+
assert_equal expected, @quoter.quote(crazy, nil)
|
131
|
+
end
|
132
|
+
|
133
|
+
def test_crazy_object_calls_quote_string
|
134
|
+
crazy = Class.new { def initialize; @lol = 'lo\l' end }.new
|
135
|
+
assert_match "lo\\\\l", @quoter.quote(crazy, nil)
|
136
|
+
end
|
137
|
+
|
138
|
+
def test_quote_string_no_column
|
139
|
+
assert_equal "'lo\\\\l'", @quoter.quote('lo\l', nil)
|
140
|
+
end
|
141
|
+
|
142
|
+
def test_quote_as_mb_chars_no_column
|
143
|
+
string = ActiveSupport::Multibyte::Chars.new('lo\l')
|
144
|
+
assert_equal "'lo\\\\l'", @quoter.quote(string, nil)
|
145
|
+
end
|
146
|
+
|
147
|
+
def test_string_with_crazy_column
|
148
|
+
assert_equal "'lo\\\\l'", @quoter.quote('lo\l')
|
149
|
+
end
|
150
|
+
|
151
|
+
def test_quote_duration
|
152
|
+
assert_equal "1800", @quoter.quote(30.minutes)
|
153
|
+
end
|
154
|
+
end
|
155
|
+
end
|
156
|
+
end
|
data/test/cases/readonly_test.rb
CHANGED
@@ -1,118 +1,118 @@
|
|
1
|
-
require "cases/helper"
|
2
|
-
require 'models/author'
|
3
|
-
require 'models/post'
|
4
|
-
require 'models/comment'
|
5
|
-
require 'models/developer'
|
6
|
-
require 'models/computer'
|
7
|
-
require 'models/project'
|
8
|
-
require 'models/reader'
|
9
|
-
require 'models/person'
|
10
|
-
|
11
|
-
class ReadOnlyTest < ActiveRecord::TestCase
|
12
|
-
fixtures :authors, :posts, :comments, :developers, :projects, :developers_projects, :people, :readers, :author_addresses
|
13
|
-
|
14
|
-
def test_cant_save_readonly_record
|
15
|
-
dev = Developer.find(1)
|
16
|
-
assert !dev.readonly?
|
17
|
-
|
18
|
-
dev.readonly!
|
19
|
-
assert dev.readonly?
|
20
|
-
|
21
|
-
assert_nothing_raised do
|
22
|
-
dev.name = 'Luscious forbidden fruit.'
|
23
|
-
assert !dev.save
|
24
|
-
dev.name = 'Forbidden.'
|
25
|
-
end
|
26
|
-
|
27
|
-
e = assert_raise(ActiveRecord::ReadOnlyRecord) { dev.save }
|
28
|
-
assert_equal "Developer is marked as readonly", e.message
|
29
|
-
|
30
|
-
e = assert_raise(ActiveRecord::ReadOnlyRecord) { dev.save! }
|
31
|
-
assert_equal "Developer is marked as readonly", e.message
|
32
|
-
|
33
|
-
e = assert_raise(ActiveRecord::ReadOnlyRecord) { dev.destroy }
|
34
|
-
assert_equal "Developer is marked as readonly", e.message
|
35
|
-
end
|
36
|
-
|
37
|
-
|
38
|
-
def test_find_with_readonly_option
|
39
|
-
Developer.all.each { |d| assert !d.readonly? }
|
40
|
-
Developer.readonly(false).each { |d| assert !d.readonly? }
|
41
|
-
Developer.readonly(true).each { |d| assert d.readonly? }
|
42
|
-
Developer.readonly.each { |d| assert d.readonly? }
|
43
|
-
end
|
44
|
-
|
45
|
-
def test_find_with_joins_option_does_not_imply_readonly
|
46
|
-
Developer.joins(' ').each { |d| assert_not d.readonly? }
|
47
|
-
Developer.joins(' ').readonly(true).each { |d| assert d.readonly? }
|
48
|
-
|
49
|
-
Developer.joins(', projects').each { |d| assert_not d.readonly? }
|
50
|
-
Developer.joins(', projects').readonly(true).each { |d| assert d.readonly? }
|
51
|
-
end
|
52
|
-
|
53
|
-
def test_has_many_find_readonly
|
54
|
-
post = Post.find(1)
|
55
|
-
assert !post.comments.empty?
|
56
|
-
assert !post.comments.any?(&:readonly?)
|
57
|
-
assert !post.comments.to_a.any?(&:readonly?)
|
58
|
-
assert post.comments.readonly(true).all?(&:readonly?)
|
59
|
-
end
|
60
|
-
|
61
|
-
def test_has_many_with_through_is_not_implicitly_marked_readonly
|
62
|
-
assert people = Post.find(1).people
|
63
|
-
assert !people.any?(&:readonly?)
|
64
|
-
end
|
65
|
-
|
66
|
-
def test_has_many_with_through_is_not_implicitly_marked_readonly_while_finding_by_id
|
67
|
-
assert !posts(:welcome).people.find(1).readonly?
|
68
|
-
end
|
69
|
-
|
70
|
-
def test_has_many_with_through_is_not_implicitly_marked_readonly_while_finding_first
|
71
|
-
assert !posts(:welcome).people.first.readonly?
|
72
|
-
end
|
73
|
-
|
74
|
-
def test_has_many_with_through_is_not_implicitly_marked_readonly_while_finding_last
|
75
|
-
assert !posts(:welcome).people.last.readonly?
|
76
|
-
end
|
77
|
-
|
78
|
-
def test_readonly_scoping
|
79
|
-
Post.where('1=1').scoping do
|
80
|
-
assert !Post.find(1).readonly?
|
81
|
-
assert Post.readonly(true).find(1).readonly?
|
82
|
-
assert !Post.readonly(false).find(1).readonly?
|
83
|
-
end
|
84
|
-
|
85
|
-
Post.joins(' ').scoping do
|
86
|
-
assert !Post.find(1).readonly?
|
87
|
-
assert Post.readonly.find(1).readonly?
|
88
|
-
assert !Post.readonly(false).find(1).readonly?
|
89
|
-
end
|
90
|
-
|
91
|
-
# Oracle barfs on this because the join includes unqualified and
|
92
|
-
# conflicting column names
|
93
|
-
unless current_adapter?(:OracleAdapter)
|
94
|
-
Post.joins(', developers').scoping do
|
95
|
-
assert_not Post.find(1).readonly?
|
96
|
-
assert Post.readonly.find(1).readonly?
|
97
|
-
assert !Post.readonly(false).find(1).readonly?
|
98
|
-
end
|
99
|
-
end
|
100
|
-
|
101
|
-
Post.readonly(true).scoping do
|
102
|
-
assert Post.find(1).readonly?
|
103
|
-
assert Post.readonly.find(1).readonly?
|
104
|
-
assert !Post.readonly(false).find(1).readonly?
|
105
|
-
end
|
106
|
-
end
|
107
|
-
|
108
|
-
def test_association_collection_method_missing_scoping_not_readonly
|
109
|
-
developer = Developer.find(1)
|
110
|
-
project = Post.find(1)
|
111
|
-
|
112
|
-
assert !developer.projects.all_as_method.first.readonly?
|
113
|
-
assert !developer.projects.all_as_scope.first.readonly?
|
114
|
-
|
115
|
-
assert !project.comments.all_as_method.first.readonly?
|
116
|
-
assert !project.comments.all_as_scope.first.readonly?
|
117
|
-
end
|
118
|
-
end
|
1
|
+
require "cases/helper"
|
2
|
+
require 'models/author'
|
3
|
+
require 'models/post'
|
4
|
+
require 'models/comment'
|
5
|
+
require 'models/developer'
|
6
|
+
require 'models/computer'
|
7
|
+
require 'models/project'
|
8
|
+
require 'models/reader'
|
9
|
+
require 'models/person'
|
10
|
+
|
11
|
+
class ReadOnlyTest < ActiveRecord::TestCase
|
12
|
+
fixtures :authors, :posts, :comments, :developers, :projects, :developers_projects, :people, :readers, :author_addresses
|
13
|
+
|
14
|
+
def test_cant_save_readonly_record
|
15
|
+
dev = Developer.find(1)
|
16
|
+
assert !dev.readonly?
|
17
|
+
|
18
|
+
dev.readonly!
|
19
|
+
assert dev.readonly?
|
20
|
+
|
21
|
+
assert_nothing_raised do
|
22
|
+
dev.name = 'Luscious forbidden fruit.'
|
23
|
+
assert !dev.save
|
24
|
+
dev.name = 'Forbidden.'
|
25
|
+
end
|
26
|
+
|
27
|
+
e = assert_raise(ActiveRecord::ReadOnlyRecord) { dev.save }
|
28
|
+
assert_equal "Developer is marked as readonly", e.message
|
29
|
+
|
30
|
+
e = assert_raise(ActiveRecord::ReadOnlyRecord) { dev.save! }
|
31
|
+
assert_equal "Developer is marked as readonly", e.message
|
32
|
+
|
33
|
+
e = assert_raise(ActiveRecord::ReadOnlyRecord) { dev.destroy }
|
34
|
+
assert_equal "Developer is marked as readonly", e.message
|
35
|
+
end
|
36
|
+
|
37
|
+
|
38
|
+
def test_find_with_readonly_option
|
39
|
+
Developer.all.each { |d| assert !d.readonly? }
|
40
|
+
Developer.readonly(false).each { |d| assert !d.readonly? }
|
41
|
+
Developer.readonly(true).each { |d| assert d.readonly? }
|
42
|
+
Developer.readonly.each { |d| assert d.readonly? }
|
43
|
+
end
|
44
|
+
|
45
|
+
def test_find_with_joins_option_does_not_imply_readonly
|
46
|
+
Developer.joins(' ').each { |d| assert_not d.readonly? }
|
47
|
+
Developer.joins(' ').readonly(true).each { |d| assert d.readonly? }
|
48
|
+
|
49
|
+
Developer.joins(', projects').each { |d| assert_not d.readonly? }
|
50
|
+
Developer.joins(', projects').readonly(true).each { |d| assert d.readonly? }
|
51
|
+
end
|
52
|
+
|
53
|
+
def test_has_many_find_readonly
|
54
|
+
post = Post.find(1)
|
55
|
+
assert !post.comments.empty?
|
56
|
+
assert !post.comments.any?(&:readonly?)
|
57
|
+
assert !post.comments.to_a.any?(&:readonly?)
|
58
|
+
assert post.comments.readonly(true).all?(&:readonly?)
|
59
|
+
end
|
60
|
+
|
61
|
+
def test_has_many_with_through_is_not_implicitly_marked_readonly
|
62
|
+
assert people = Post.find(1).people
|
63
|
+
assert !people.any?(&:readonly?)
|
64
|
+
end
|
65
|
+
|
66
|
+
def test_has_many_with_through_is_not_implicitly_marked_readonly_while_finding_by_id
|
67
|
+
assert !posts(:welcome).people.find(1).readonly?
|
68
|
+
end
|
69
|
+
|
70
|
+
def test_has_many_with_through_is_not_implicitly_marked_readonly_while_finding_first
|
71
|
+
assert !posts(:welcome).people.first.readonly?
|
72
|
+
end
|
73
|
+
|
74
|
+
def test_has_many_with_through_is_not_implicitly_marked_readonly_while_finding_last
|
75
|
+
assert !posts(:welcome).people.last.readonly?
|
76
|
+
end
|
77
|
+
|
78
|
+
def test_readonly_scoping
|
79
|
+
Post.where('1=1').scoping do
|
80
|
+
assert !Post.find(1).readonly?
|
81
|
+
assert Post.readonly(true).find(1).readonly?
|
82
|
+
assert !Post.readonly(false).find(1).readonly?
|
83
|
+
end
|
84
|
+
|
85
|
+
Post.joins(' ').scoping do
|
86
|
+
assert !Post.find(1).readonly?
|
87
|
+
assert Post.readonly.find(1).readonly?
|
88
|
+
assert !Post.readonly(false).find(1).readonly?
|
89
|
+
end
|
90
|
+
|
91
|
+
# Oracle barfs on this because the join includes unqualified and
|
92
|
+
# conflicting column names
|
93
|
+
unless current_adapter?(:OracleAdapter)
|
94
|
+
Post.joins(', developers').scoping do
|
95
|
+
assert_not Post.find(1).readonly?
|
96
|
+
assert Post.readonly.find(1).readonly?
|
97
|
+
assert !Post.readonly(false).find(1).readonly?
|
98
|
+
end
|
99
|
+
end
|
100
|
+
|
101
|
+
Post.readonly(true).scoping do
|
102
|
+
assert Post.find(1).readonly?
|
103
|
+
assert Post.readonly.find(1).readonly?
|
104
|
+
assert !Post.readonly(false).find(1).readonly?
|
105
|
+
end
|
106
|
+
end
|
107
|
+
|
108
|
+
def test_association_collection_method_missing_scoping_not_readonly
|
109
|
+
developer = Developer.find(1)
|
110
|
+
project = Post.find(1)
|
111
|
+
|
112
|
+
assert !developer.projects.all_as_method.first.readonly?
|
113
|
+
assert !developer.projects.all_as_scope.first.readonly?
|
114
|
+
|
115
|
+
assert !project.comments.all_as_method.first.readonly?
|
116
|
+
assert !project.comments.all_as_scope.first.readonly?
|
117
|
+
end
|
118
|
+
end
|