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/batches_test.rb
CHANGED
@@ -1,212 +1,212 @@
|
|
1
|
-
require 'cases/helper'
|
2
|
-
require 'models/post'
|
3
|
-
require 'models/subscriber'
|
4
|
-
|
5
|
-
class EachTest < ActiveRecord::TestCase
|
6
|
-
fixtures :posts, :subscribers
|
7
|
-
|
8
|
-
def setup
|
9
|
-
@posts = Post.order("id asc")
|
10
|
-
@total = Post.count
|
11
|
-
Post.count('id') # preheat arel's table cache
|
12
|
-
end
|
13
|
-
|
14
|
-
def test_each_should_execute_one_query_per_batch
|
15
|
-
assert_queries(@total + 1) do
|
16
|
-
Post.find_each(:batch_size => 1) do |post|
|
17
|
-
assert_kind_of Post, post
|
18
|
-
end
|
19
|
-
end
|
20
|
-
end
|
21
|
-
|
22
|
-
def test_each_should_not_return_query_chain_and_execute_only_one_query
|
23
|
-
assert_queries(1) do
|
24
|
-
result = Post.find_each(:batch_size => 100000){ }
|
25
|
-
assert_nil result
|
26
|
-
end
|
27
|
-
end
|
28
|
-
|
29
|
-
def test_each_should_return_an_enumerator_if_no_block_is_present
|
30
|
-
assert_queries(1) do
|
31
|
-
Post.find_each(:batch_size => 100000).with_index do |post, index|
|
32
|
-
assert_kind_of Post, post
|
33
|
-
assert_kind_of Integer, index
|
34
|
-
end
|
35
|
-
end
|
36
|
-
end
|
37
|
-
|
38
|
-
if Enumerator.method_defined? :size
|
39
|
-
def test_each_should_return_a_sized_enumerator
|
40
|
-
assert_equal 11, Post.find_each(:batch_size => 1).size
|
41
|
-
assert_equal 5, Post.find_each(:batch_size => 2, :start => 7).size
|
42
|
-
assert_equal 11, Post.find_each(:batch_size => 10_000).size
|
43
|
-
end
|
44
|
-
end
|
45
|
-
|
46
|
-
def test_each_enumerator_should_execute_one_query_per_batch
|
47
|
-
assert_queries(@total + 1) do
|
48
|
-
Post.find_each(:batch_size => 1).with_index do |post, index|
|
49
|
-
assert_kind_of Post, post
|
50
|
-
assert_kind_of Integer, index
|
51
|
-
end
|
52
|
-
end
|
53
|
-
end
|
54
|
-
|
55
|
-
def test_each_should_raise_if_select_is_set_without_id
|
56
|
-
assert_raise(RuntimeError) do
|
57
|
-
Post.select(:title).find_each(batch_size: 1) { |post|
|
58
|
-
flunk "should not call this block"
|
59
|
-
}
|
60
|
-
end
|
61
|
-
end
|
62
|
-
|
63
|
-
def test_each_should_execute_if_id_is_in_select
|
64
|
-
assert_queries(6) do
|
65
|
-
Post.select("id, title, type").find_each(:batch_size => 2) do |post|
|
66
|
-
assert_kind_of Post, post
|
67
|
-
end
|
68
|
-
end
|
69
|
-
end
|
70
|
-
|
71
|
-
def test_warn_if_limit_scope_is_set
|
72
|
-
ActiveRecord::Base.logger.expects(:warn)
|
73
|
-
Post.limit(1).find_each { |post| post }
|
74
|
-
end
|
75
|
-
|
76
|
-
def test_warn_if_order_scope_is_set
|
77
|
-
ActiveRecord::Base.logger.expects(:warn)
|
78
|
-
Post.order("title").find_each { |post| post }
|
79
|
-
end
|
80
|
-
|
81
|
-
def test_logger_not_required
|
82
|
-
previous_logger = ActiveRecord::Base.logger
|
83
|
-
ActiveRecord::Base.logger = nil
|
84
|
-
assert_nothing_raised do
|
85
|
-
Post.limit(1).find_each { |post| post }
|
86
|
-
end
|
87
|
-
ensure
|
88
|
-
ActiveRecord::Base.logger = previous_logger
|
89
|
-
end
|
90
|
-
|
91
|
-
def test_find_in_batches_should_return_batches
|
92
|
-
assert_queries(@total + 1) do
|
93
|
-
Post.find_in_batches(:batch_size => 1) do |batch|
|
94
|
-
assert_kind_of Array, batch
|
95
|
-
assert_kind_of Post, batch.first
|
96
|
-
end
|
97
|
-
end
|
98
|
-
end
|
99
|
-
|
100
|
-
def test_find_in_batches_should_start_from_the_start_option
|
101
|
-
assert_queries(@total) do
|
102
|
-
Post.find_in_batches(:batch_size => 1, :start => 2) do |batch|
|
103
|
-
assert_kind_of Array, batch
|
104
|
-
assert_kind_of Post, batch.first
|
105
|
-
end
|
106
|
-
end
|
107
|
-
end
|
108
|
-
|
109
|
-
def test_find_in_batches_shouldnt_execute_query_unless_needed
|
110
|
-
assert_queries(2) do
|
111
|
-
Post.find_in_batches(:batch_size => @total) {|batch| assert_kind_of Array, batch }
|
112
|
-
end
|
113
|
-
|
114
|
-
assert_queries(1) do
|
115
|
-
Post.find_in_batches(:batch_size => @total + 1) {|batch| assert_kind_of Array, batch }
|
116
|
-
end
|
117
|
-
end
|
118
|
-
|
119
|
-
def test_find_in_batches_should_quote_batch_order
|
120
|
-
c = Post.connection
|
121
|
-
assert_sql(/ORDER BY #{c.quote_table_name('posts')}.#{c.quote_column_name('id')}/) do
|
122
|
-
Post.find_in_batches(:batch_size => 1) do |batch|
|
123
|
-
assert_kind_of Array, batch
|
124
|
-
assert_kind_of Post, batch.first
|
125
|
-
end
|
126
|
-
end
|
127
|
-
end
|
128
|
-
|
129
|
-
def test_find_in_batches_should_not_use_records_after_yielding_them_in_case_original_array_is_modified
|
130
|
-
not_a_post = "not a post"
|
131
|
-
not_a_post.stubs(:id).raises(StandardError, "not_a_post had #id called on it")
|
132
|
-
|
133
|
-
assert_nothing_raised do
|
134
|
-
Post.find_in_batches(:batch_size => 1) do |batch|
|
135
|
-
assert_kind_of Array, batch
|
136
|
-
assert_kind_of Post, batch.first
|
137
|
-
|
138
|
-
batch.map! { not_a_post }
|
139
|
-
end
|
140
|
-
end
|
141
|
-
end
|
142
|
-
|
143
|
-
def test_find_in_batches_should_ignore_the_order_default_scope
|
144
|
-
# First post is with title scope
|
145
|
-
first_post = PostWithDefaultScope.first
|
146
|
-
posts = []
|
147
|
-
PostWithDefaultScope.find_in_batches do |batch|
|
148
|
-
posts.concat(batch)
|
149
|
-
end
|
150
|
-
# posts.first will be ordered using id only. Title order scope should not apply here
|
151
|
-
assert_not_equal first_post, posts.first
|
152
|
-
assert_equal posts(:welcome), posts.first
|
153
|
-
end
|
154
|
-
|
155
|
-
def test_find_in_batches_should_not_ignore_the_default_scope_if_it_is_other_then_order
|
156
|
-
special_posts_ids = SpecialPostWithDefaultScope.all.map(&:id).sort
|
157
|
-
posts = []
|
158
|
-
SpecialPostWithDefaultScope.find_in_batches do |batch|
|
159
|
-
posts.concat(batch)
|
160
|
-
end
|
161
|
-
assert_equal special_posts_ids, posts.map(&:id)
|
162
|
-
end
|
163
|
-
|
164
|
-
def test_find_in_batches_should_not_modify_passed_options
|
165
|
-
assert_nothing_raised do
|
166
|
-
Post.find_in_batches({ batch_size: 42, start: 1 }.freeze){}
|
167
|
-
end
|
168
|
-
end
|
169
|
-
|
170
|
-
def test_find_in_batches_should_use_any_column_as_primary_key
|
171
|
-
nick_order_subscribers = Subscriber.order('nick asc')
|
172
|
-
start_nick = nick_order_subscribers.second.nick
|
173
|
-
|
174
|
-
subscribers = []
|
175
|
-
Subscriber.find_in_batches(:batch_size => 1, :start => start_nick) do |batch|
|
176
|
-
subscribers.concat(batch)
|
177
|
-
end
|
178
|
-
|
179
|
-
assert_equal nick_order_subscribers[1..-1].map(&:id), subscribers.map(&:id)
|
180
|
-
end
|
181
|
-
|
182
|
-
def test_find_in_batches_should_use_any_column_as_primary_key_when_start_is_not_specified
|
183
|
-
assert_queries(Subscriber.count + 1) do
|
184
|
-
Subscriber.find_each(:batch_size => 1) do |subscriber|
|
185
|
-
assert_kind_of Subscriber, subscriber
|
186
|
-
end
|
187
|
-
end
|
188
|
-
end
|
189
|
-
|
190
|
-
def test_find_in_batches_should_return_an_enumerator
|
191
|
-
enum = nil
|
192
|
-
assert_queries(0) do
|
193
|
-
enum = Post.find_in_batches(:batch_size => 1)
|
194
|
-
end
|
195
|
-
assert_queries(4) do
|
196
|
-
enum.first(4) do |batch|
|
197
|
-
assert_kind_of Array, batch
|
198
|
-
assert_kind_of Post, batch.first
|
199
|
-
end
|
200
|
-
end
|
201
|
-
end
|
202
|
-
|
203
|
-
if Enumerator.method_defined? :size
|
204
|
-
def test_find_in_batches_should_return_a_sized_enumerator
|
205
|
-
assert_equal 11, Post.find_in_batches(:batch_size => 1).size
|
206
|
-
assert_equal 6, Post.find_in_batches(:batch_size => 2).size
|
207
|
-
assert_equal 4, Post.find_in_batches(:batch_size => 2, :start => 4).size
|
208
|
-
assert_equal 4, Post.find_in_batches(:batch_size => 3).size
|
209
|
-
assert_equal 1, Post.find_in_batches(:batch_size => 10_000).size
|
210
|
-
end
|
211
|
-
end
|
212
|
-
end
|
1
|
+
require 'cases/helper'
|
2
|
+
require 'models/post'
|
3
|
+
require 'models/subscriber'
|
4
|
+
|
5
|
+
class EachTest < ActiveRecord::TestCase
|
6
|
+
fixtures :posts, :subscribers
|
7
|
+
|
8
|
+
def setup
|
9
|
+
@posts = Post.order("id asc")
|
10
|
+
@total = Post.count
|
11
|
+
Post.count('id') # preheat arel's table cache
|
12
|
+
end
|
13
|
+
|
14
|
+
def test_each_should_execute_one_query_per_batch
|
15
|
+
assert_queries(@total + 1) do
|
16
|
+
Post.find_each(:batch_size => 1) do |post|
|
17
|
+
assert_kind_of Post, post
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
def test_each_should_not_return_query_chain_and_execute_only_one_query
|
23
|
+
assert_queries(1) do
|
24
|
+
result = Post.find_each(:batch_size => 100000){ }
|
25
|
+
assert_nil result
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
def test_each_should_return_an_enumerator_if_no_block_is_present
|
30
|
+
assert_queries(1) do
|
31
|
+
Post.find_each(:batch_size => 100000).with_index do |post, index|
|
32
|
+
assert_kind_of Post, post
|
33
|
+
assert_kind_of Integer, index
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
if Enumerator.method_defined? :size
|
39
|
+
def test_each_should_return_a_sized_enumerator
|
40
|
+
assert_equal 11, Post.find_each(:batch_size => 1).size
|
41
|
+
assert_equal 5, Post.find_each(:batch_size => 2, :start => 7).size
|
42
|
+
assert_equal 11, Post.find_each(:batch_size => 10_000).size
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
def test_each_enumerator_should_execute_one_query_per_batch
|
47
|
+
assert_queries(@total + 1) do
|
48
|
+
Post.find_each(:batch_size => 1).with_index do |post, index|
|
49
|
+
assert_kind_of Post, post
|
50
|
+
assert_kind_of Integer, index
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
def test_each_should_raise_if_select_is_set_without_id
|
56
|
+
assert_raise(RuntimeError) do
|
57
|
+
Post.select(:title).find_each(batch_size: 1) { |post|
|
58
|
+
flunk "should not call this block"
|
59
|
+
}
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
def test_each_should_execute_if_id_is_in_select
|
64
|
+
assert_queries(6) do
|
65
|
+
Post.select("id, title, type").find_each(:batch_size => 2) do |post|
|
66
|
+
assert_kind_of Post, post
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
71
|
+
def test_warn_if_limit_scope_is_set
|
72
|
+
ActiveRecord::Base.logger.expects(:warn)
|
73
|
+
Post.limit(1).find_each { |post| post }
|
74
|
+
end
|
75
|
+
|
76
|
+
def test_warn_if_order_scope_is_set
|
77
|
+
ActiveRecord::Base.logger.expects(:warn)
|
78
|
+
Post.order("title").find_each { |post| post }
|
79
|
+
end
|
80
|
+
|
81
|
+
def test_logger_not_required
|
82
|
+
previous_logger = ActiveRecord::Base.logger
|
83
|
+
ActiveRecord::Base.logger = nil
|
84
|
+
assert_nothing_raised do
|
85
|
+
Post.limit(1).find_each { |post| post }
|
86
|
+
end
|
87
|
+
ensure
|
88
|
+
ActiveRecord::Base.logger = previous_logger
|
89
|
+
end
|
90
|
+
|
91
|
+
def test_find_in_batches_should_return_batches
|
92
|
+
assert_queries(@total + 1) do
|
93
|
+
Post.find_in_batches(:batch_size => 1) do |batch|
|
94
|
+
assert_kind_of Array, batch
|
95
|
+
assert_kind_of Post, batch.first
|
96
|
+
end
|
97
|
+
end
|
98
|
+
end
|
99
|
+
|
100
|
+
def test_find_in_batches_should_start_from_the_start_option
|
101
|
+
assert_queries(@total) do
|
102
|
+
Post.find_in_batches(:batch_size => 1, :start => 2) do |batch|
|
103
|
+
assert_kind_of Array, batch
|
104
|
+
assert_kind_of Post, batch.first
|
105
|
+
end
|
106
|
+
end
|
107
|
+
end
|
108
|
+
|
109
|
+
def test_find_in_batches_shouldnt_execute_query_unless_needed
|
110
|
+
assert_queries(2) do
|
111
|
+
Post.find_in_batches(:batch_size => @total) {|batch| assert_kind_of Array, batch }
|
112
|
+
end
|
113
|
+
|
114
|
+
assert_queries(1) do
|
115
|
+
Post.find_in_batches(:batch_size => @total + 1) {|batch| assert_kind_of Array, batch }
|
116
|
+
end
|
117
|
+
end
|
118
|
+
|
119
|
+
def test_find_in_batches_should_quote_batch_order
|
120
|
+
c = Post.connection
|
121
|
+
assert_sql(/ORDER BY #{c.quote_table_name('posts')}.#{c.quote_column_name('id')}/) do
|
122
|
+
Post.find_in_batches(:batch_size => 1) do |batch|
|
123
|
+
assert_kind_of Array, batch
|
124
|
+
assert_kind_of Post, batch.first
|
125
|
+
end
|
126
|
+
end
|
127
|
+
end
|
128
|
+
|
129
|
+
def test_find_in_batches_should_not_use_records_after_yielding_them_in_case_original_array_is_modified
|
130
|
+
not_a_post = "not a post"
|
131
|
+
not_a_post.stubs(:id).raises(StandardError, "not_a_post had #id called on it")
|
132
|
+
|
133
|
+
assert_nothing_raised do
|
134
|
+
Post.find_in_batches(:batch_size => 1) do |batch|
|
135
|
+
assert_kind_of Array, batch
|
136
|
+
assert_kind_of Post, batch.first
|
137
|
+
|
138
|
+
batch.map! { not_a_post }
|
139
|
+
end
|
140
|
+
end
|
141
|
+
end
|
142
|
+
|
143
|
+
def test_find_in_batches_should_ignore_the_order_default_scope
|
144
|
+
# First post is with title scope
|
145
|
+
first_post = PostWithDefaultScope.first
|
146
|
+
posts = []
|
147
|
+
PostWithDefaultScope.find_in_batches do |batch|
|
148
|
+
posts.concat(batch)
|
149
|
+
end
|
150
|
+
# posts.first will be ordered using id only. Title order scope should not apply here
|
151
|
+
assert_not_equal first_post, posts.first
|
152
|
+
assert_equal posts(:welcome), posts.first
|
153
|
+
end
|
154
|
+
|
155
|
+
def test_find_in_batches_should_not_ignore_the_default_scope_if_it_is_other_then_order
|
156
|
+
special_posts_ids = SpecialPostWithDefaultScope.all.map(&:id).sort
|
157
|
+
posts = []
|
158
|
+
SpecialPostWithDefaultScope.find_in_batches do |batch|
|
159
|
+
posts.concat(batch)
|
160
|
+
end
|
161
|
+
assert_equal special_posts_ids, posts.map(&:id)
|
162
|
+
end
|
163
|
+
|
164
|
+
def test_find_in_batches_should_not_modify_passed_options
|
165
|
+
assert_nothing_raised do
|
166
|
+
Post.find_in_batches({ batch_size: 42, start: 1 }.freeze){}
|
167
|
+
end
|
168
|
+
end
|
169
|
+
|
170
|
+
def test_find_in_batches_should_use_any_column_as_primary_key
|
171
|
+
nick_order_subscribers = Subscriber.order('nick asc')
|
172
|
+
start_nick = nick_order_subscribers.second.nick
|
173
|
+
|
174
|
+
subscribers = []
|
175
|
+
Subscriber.find_in_batches(:batch_size => 1, :start => start_nick) do |batch|
|
176
|
+
subscribers.concat(batch)
|
177
|
+
end
|
178
|
+
|
179
|
+
assert_equal nick_order_subscribers[1..-1].map(&:id), subscribers.map(&:id)
|
180
|
+
end
|
181
|
+
|
182
|
+
def test_find_in_batches_should_use_any_column_as_primary_key_when_start_is_not_specified
|
183
|
+
assert_queries(Subscriber.count + 1) do
|
184
|
+
Subscriber.find_each(:batch_size => 1) do |subscriber|
|
185
|
+
assert_kind_of Subscriber, subscriber
|
186
|
+
end
|
187
|
+
end
|
188
|
+
end
|
189
|
+
|
190
|
+
def test_find_in_batches_should_return_an_enumerator
|
191
|
+
enum = nil
|
192
|
+
assert_queries(0) do
|
193
|
+
enum = Post.find_in_batches(:batch_size => 1)
|
194
|
+
end
|
195
|
+
assert_queries(4) do
|
196
|
+
enum.first(4) do |batch|
|
197
|
+
assert_kind_of Array, batch
|
198
|
+
assert_kind_of Post, batch.first
|
199
|
+
end
|
200
|
+
end
|
201
|
+
end
|
202
|
+
|
203
|
+
if Enumerator.method_defined? :size
|
204
|
+
def test_find_in_batches_should_return_a_sized_enumerator
|
205
|
+
assert_equal 11, Post.find_in_batches(:batch_size => 1).size
|
206
|
+
assert_equal 6, Post.find_in_batches(:batch_size => 2).size
|
207
|
+
assert_equal 4, Post.find_in_batches(:batch_size => 2, :start => 4).size
|
208
|
+
assert_equal 4, Post.find_in_batches(:batch_size => 3).size
|
209
|
+
assert_equal 1, Post.find_in_batches(:batch_size => 10_000).size
|
210
|
+
end
|
211
|
+
end
|
212
|
+
end
|
data/test/cases/binary_test.rb
CHANGED
@@ -1,52 +1,52 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
require "cases/helper"
|
3
|
-
|
4
|
-
# Without using prepared statements, it makes no sense to test
|
5
|
-
# BLOB data with DB2, because the length of a statement
|
6
|
-
# is limited to 32KB.
|
7
|
-
unless current_adapter?(:DB2Adapter)
|
8
|
-
require 'models/binary'
|
9
|
-
|
10
|
-
class BinaryTest < ActiveRecord::TestCase
|
11
|
-
FIXTURES = %w(flowers.jpg example.log test.txt)
|
12
|
-
|
13
|
-
def test_mixed_encoding
|
14
|
-
str = "\x80"
|
15
|
-
str.force_encoding('ASCII-8BIT')
|
16
|
-
|
17
|
-
binary = Binary.new :name => 'いただきます!', :data => str
|
18
|
-
binary.save!
|
19
|
-
binary.reload
|
20
|
-
assert_equal str, binary.data
|
21
|
-
|
22
|
-
name = binary.name
|
23
|
-
|
24
|
-
# MySQL adapter doesn't properly encode things, so we have to do it
|
25
|
-
if current_adapter?(:MysqlAdapter, :DB2Adapter)
|
26
|
-
name.force_encoding(Encoding::UTF_8)
|
27
|
-
end
|
28
|
-
assert_equal 'いただきます!', name
|
29
|
-
end
|
30
|
-
|
31
|
-
def test_load_save
|
32
|
-
Binary.delete_all
|
33
|
-
|
34
|
-
FIXTURES.each do |filename|
|
35
|
-
data = File.read(ASSETS_ROOT + "/#{filename}")
|
36
|
-
data.force_encoding('ASCII-8BIT')
|
37
|
-
if current_adapter?(:DB2Adapter)
|
38
|
-
data.force_encoding(Encoding::UTF_8)
|
39
|
-
end
|
40
|
-
data.freeze
|
41
|
-
|
42
|
-
bin = Binary.new(:data => data)
|
43
|
-
assert_equal data, bin.data, 'Newly assigned data differs from original'
|
44
|
-
|
45
|
-
bin.save!
|
46
|
-
assert_equal data, bin.data, 'Data differs from original after save'
|
47
|
-
|
48
|
-
assert_equal data, bin.reload.data, 'Reloaded data differs from original'
|
49
|
-
end
|
50
|
-
end
|
51
|
-
end
|
52
|
-
end
|
1
|
+
# encoding: utf-8
|
2
|
+
require "cases/helper"
|
3
|
+
|
4
|
+
# Without using prepared statements, it makes no sense to test
|
5
|
+
# BLOB data with DB2, because the length of a statement
|
6
|
+
# is limited to 32KB.
|
7
|
+
unless current_adapter?(:DB2Adapter)
|
8
|
+
require 'models/binary'
|
9
|
+
|
10
|
+
class BinaryTest < ActiveRecord::TestCase
|
11
|
+
FIXTURES = %w(flowers.jpg example.log test.txt)
|
12
|
+
|
13
|
+
def test_mixed_encoding
|
14
|
+
str = "\x80"
|
15
|
+
str.force_encoding('ASCII-8BIT')
|
16
|
+
|
17
|
+
binary = Binary.new :name => 'いただきます!', :data => str
|
18
|
+
binary.save!
|
19
|
+
binary.reload
|
20
|
+
assert_equal str, binary.data
|
21
|
+
|
22
|
+
name = binary.name
|
23
|
+
|
24
|
+
# MySQL adapter doesn't properly encode things, so we have to do it
|
25
|
+
if current_adapter?(:MysqlAdapter, :DB2Adapter)
|
26
|
+
name.force_encoding(Encoding::UTF_8)
|
27
|
+
end
|
28
|
+
assert_equal 'いただきます!', name
|
29
|
+
end
|
30
|
+
|
31
|
+
def test_load_save
|
32
|
+
Binary.delete_all
|
33
|
+
|
34
|
+
FIXTURES.each do |filename|
|
35
|
+
data = File.read(ASSETS_ROOT + "/#{filename}")
|
36
|
+
data.force_encoding('ASCII-8BIT')
|
37
|
+
if current_adapter?(:DB2Adapter)
|
38
|
+
data.force_encoding(Encoding::UTF_8)
|
39
|
+
end
|
40
|
+
data.freeze
|
41
|
+
|
42
|
+
bin = Binary.new(:data => data)
|
43
|
+
assert_equal data, bin.data, 'Newly assigned data differs from original'
|
44
|
+
|
45
|
+
bin.save!
|
46
|
+
assert_equal data, bin.data, 'Data differs from original after save'
|
47
|
+
|
48
|
+
assert_equal data, bin.reload.data, 'Reloaded data differs from original'
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|