ibm_db 4.0.0-x86-mingw32 → 5.0.2-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 +5 -5
- data/MANIFEST +14 -14
- data/README +208 -208
- data/ext/Makefile +269 -0
- data/ext/Makefile.nt32 +181 -181
- data/ext/Makefile.nt32.191 +212 -212
- data/ext/extconf.rb +322 -291
- data/ext/gil_release_version +3 -0
- data/ext/ibm_db.c +11879 -11887
- data/ext/mkmf.log +110 -0
- 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/ext/unicode_support_version +3 -0
- data/init.rb +41 -41
- data/lib/IBM_DB.rb +27 -27
- data/lib/active_record/connection_adapters/ibm_db_adapter.rb +3533 -3452
- data/lib/active_record/connection_adapters/ibmdb_adapter.rb +5 -5
- data/lib/active_record/vendor/db2-i5-zOS.yaml +328 -328
- data/lib/mswin32/ibm_db.rb +90 -90
- data/lib/mswin32/rb2x/i386/ibm_db.so +0 -0
- data/test/active_record/connection_adapters/fake_adapter.rb +49 -49
- data/test/assets/example.log +1 -1
- data/test/assets/test.txt +1 -1
- data/test/cases/adapter_test.rb +351 -351
- data/test/cases/adapters/mysql2/active_schema_test.rb +193 -193
- data/test/cases/adapters/mysql2/bind_parameter_test.rb +50 -50
- data/test/cases/adapters/mysql2/boolean_test.rb +100 -100
- data/test/cases/adapters/mysql2/case_sensitivity_test.rb +63 -63
- data/test/cases/adapters/mysql2/charset_collation_test.rb +54 -54
- data/test/cases/adapters/mysql2/connection_test.rb +210 -210
- data/test/cases/adapters/mysql2/datetime_precision_quoting_test.rb +45 -45
- data/test/cases/adapters/mysql2/enum_test.rb +26 -26
- data/test/cases/adapters/mysql2/explain_test.rb +21 -21
- data/test/cases/adapters/mysql2/json_test.rb +195 -195
- data/test/cases/adapters/mysql2/mysql2_adapter_test.rb +83 -83
- data/test/cases/adapters/mysql2/reserved_word_test.rb +152 -152
- data/test/cases/adapters/mysql2/schema_migrations_test.rb +59 -59
- data/test/cases/adapters/mysql2/schema_test.rb +126 -126
- data/test/cases/adapters/mysql2/sp_test.rb +36 -36
- data/test/cases/adapters/mysql2/sql_types_test.rb +14 -14
- data/test/cases/adapters/mysql2/table_options_test.rb +42 -42
- data/test/cases/adapters/mysql2/unsigned_type_test.rb +66 -66
- data/test/cases/adapters/postgresql/active_schema_test.rb +98 -98
- data/test/cases/adapters/postgresql/array_test.rb +339 -339
- data/test/cases/adapters/postgresql/bit_string_test.rb +82 -82
- data/test/cases/adapters/postgresql/bytea_test.rb +134 -134
- data/test/cases/adapters/postgresql/case_insensitive_test.rb +26 -26
- data/test/cases/adapters/postgresql/change_schema_test.rb +38 -38
- data/test/cases/adapters/postgresql/cidr_test.rb +25 -25
- data/test/cases/adapters/postgresql/citext_test.rb +78 -78
- data/test/cases/adapters/postgresql/collation_test.rb +53 -53
- data/test/cases/adapters/postgresql/composite_test.rb +132 -132
- data/test/cases/adapters/postgresql/connection_test.rb +257 -257
- data/test/cases/adapters/postgresql/datatype_test.rb +92 -92
- data/test/cases/adapters/postgresql/domain_test.rb +47 -47
- data/test/cases/adapters/postgresql/enum_test.rb +91 -91
- data/test/cases/adapters/postgresql/explain_test.rb +20 -20
- data/test/cases/adapters/postgresql/extension_migration_test.rb +63 -63
- data/test/cases/adapters/postgresql/full_text_test.rb +44 -44
- data/test/cases/adapters/postgresql/geometric_test.rb +378 -378
- data/test/cases/adapters/postgresql/hstore_test.rb +382 -382
- data/test/cases/adapters/postgresql/infinity_test.rb +69 -69
- data/test/cases/adapters/postgresql/integer_test.rb +25 -25
- data/test/cases/adapters/postgresql/json_test.rb +237 -237
- data/test/cases/adapters/postgresql/ltree_test.rb +53 -53
- data/test/cases/adapters/postgresql/money_test.rb +96 -96
- data/test/cases/adapters/postgresql/network_test.rb +94 -94
- data/test/cases/adapters/postgresql/numbers_test.rb +49 -49
- data/test/cases/adapters/postgresql/postgresql_adapter_test.rb +405 -405
- data/test/cases/adapters/postgresql/prepared_statements_test.rb +22 -22
- data/test/cases/adapters/postgresql/quoting_test.rb +44 -44
- data/test/cases/adapters/postgresql/range_test.rb +343 -343
- data/test/cases/adapters/postgresql/referential_integrity_test.rb +111 -111
- data/test/cases/adapters/postgresql/rename_table_test.rb +34 -34
- data/test/cases/adapters/postgresql/schema_authorization_test.rb +119 -119
- data/test/cases/adapters/postgresql/schema_test.rb +597 -597
- data/test/cases/adapters/postgresql/serial_test.rb +154 -154
- data/test/cases/adapters/postgresql/statement_pool_test.rb +41 -41
- data/test/cases/adapters/postgresql/timestamp_test.rb +90 -90
- data/test/cases/adapters/postgresql/type_lookup_test.rb +33 -33
- data/test/cases/adapters/postgresql/utils_test.rb +62 -62
- data/test/cases/adapters/postgresql/uuid_test.rb +294 -294
- data/test/cases/adapters/postgresql/xml_test.rb +54 -54
- data/test/cases/adapters/sqlite3/collation_test.rb +53 -53
- data/test/cases/adapters/sqlite3/copy_table_test.rb +98 -98
- data/test/cases/adapters/sqlite3/explain_test.rb +21 -21
- data/test/cases/adapters/sqlite3/quoting_test.rb +101 -101
- data/test/cases/adapters/sqlite3/sqlite3_adapter_test.rb +441 -441
- data/test/cases/adapters/sqlite3/sqlite3_create_folder_test.rb +24 -24
- data/test/cases/adapters/sqlite3/statement_pool_test.rb +20 -20
- data/test/cases/aggregations_test.rb +168 -168
- data/test/cases/ar_schema_test.rb +146 -146
- data/test/cases/associations/association_scope_test.rb +16 -16
- data/test/cases/associations/belongs_to_associations_test.rb +1141 -1141
- data/test/cases/associations/bidirectional_destroy_dependencies_test.rb +41 -41
- data/test/cases/associations/callbacks_test.rb +190 -190
- data/test/cases/associations/cascaded_eager_loading_test.rb +188 -188
- data/test/cases/associations/eager_load_includes_full_sti_class_test.rb +36 -36
- data/test/cases/associations/eager_load_nested_include_test.rb +126 -126
- data/test/cases/associations/eager_singularization_test.rb +148 -148
- data/test/cases/associations/eager_test.rb +1514 -1514
- data/test/cases/associations/extension_test.rb +87 -87
- data/test/cases/associations/has_and_belongs_to_many_associations_test.rb +1004 -1004
- data/test/cases/associations/has_many_associations_test.rb +2501 -2501
- data/test/cases/associations/has_many_through_associations_test.rb +1271 -1271
- data/test/cases/associations/has_one_associations_test.rb +707 -707
- data/test/cases/associations/has_one_through_associations_test.rb +383 -383
- data/test/cases/associations/inner_join_association_test.rb +139 -139
- data/test/cases/associations/inverse_associations_test.rb +733 -733
- data/test/cases/associations/join_model_test.rb +777 -777
- data/test/cases/associations/left_outer_join_association_test.rb +88 -88
- data/test/cases/associations/nested_through_associations_test.rb +579 -579
- data/test/cases/associations/required_test.rb +102 -102
- data/test/cases/associations_test.rb +385 -385
- data/test/cases/attribute_decorators_test.rb +126 -125
- data/test/cases/attribute_methods/read_test.rb +60 -60
- data/test/cases/attribute_methods_test.rb +1009 -1009
- data/test/cases/attribute_set_test.rb +270 -270
- data/test/cases/attribute_test.rb +246 -246
- data/test/cases/attributes_test.rb +253 -253
- data/test/cases/autosave_association_test.rb +1708 -1708
- data/test/cases/base_test.rb +1713 -1713
- data/test/cases/batches_test.rb +489 -489
- data/test/cases/binary_test.rb +44 -44
- data/test/cases/bind_parameter_test.rb +110 -110
- data/test/cases/cache_key_test.rb +26 -25
- data/test/cases/calculations_test.rb +798 -798
- data/test/cases/callbacks_test.rb +636 -636
- data/test/cases/clone_test.rb +40 -40
- data/test/cases/coders/json_test.rb +15 -15
- data/test/cases/coders/yaml_column_test.rb +63 -63
- data/test/cases/collection_cache_key_test.rb +115 -115
- data/test/cases/column_alias_test.rb +17 -17
- data/test/cases/column_definition_test.rb +92 -92
- data/test/cases/comment_test.rb +145 -143
- data/test/cases/connection_adapters/adapter_leasing_test.rb +56 -56
- data/test/cases/connection_adapters/connection_handler_test.rb +160 -160
- data/test/cases/connection_adapters/connection_specification_test.rb +12 -12
- data/test/cases/connection_adapters/merge_and_resolve_default_url_config_test.rb +255 -255
- data/test/cases/connection_adapters/mysql_type_lookup_test.rb +69 -69
- data/test/cases/connection_adapters/quoting_test.rb +13 -13
- data/test/cases/connection_adapters/schema_cache_test.rb +61 -61
- data/test/cases/connection_adapters/type_lookup_test.rb +118 -118
- data/test/cases/connection_management_test.rb +112 -112
- data/test/cases/connection_pool_test.rb +521 -521
- data/test/cases/connection_specification/resolver_test.rb +131 -131
- data/test/cases/core_test.rb +112 -112
- data/test/cases/counter_cache_test.rb +214 -214
- data/test/cases/custom_locking_test.rb +17 -17
- data/test/cases/database_statements_test.rb +34 -34
- data/test/cases/date_test.rb +44 -44
- data/test/cases/date_time_precision_test.rb +107 -106
- data/test/cases/date_time_test.rb +61 -61
- data/test/cases/defaults_test.rb +219 -218
- data/test/cases/dirty_test.rb +763 -763
- data/test/cases/disconnected_test.rb +30 -30
- data/test/cases/dup_test.rb +157 -157
- data/test/cases/enum_test.rb +444 -444
- data/test/cases/errors_test.rb +16 -16
- data/test/cases/explain_subscriber_test.rb +64 -64
- data/test/cases/explain_test.rb +87 -87
- data/test/cases/finder_respond_to_test.rb +60 -60
- data/test/cases/finder_test.rb +1294 -1294
- data/test/cases/fixture_set/file_test.rb +156 -156
- data/test/cases/fixtures_test.rb +988 -988
- data/test/cases/forbidden_attributes_protection_test.rb +165 -165
- data/test/cases/habtm_destroy_order_test.rb +61 -61
- data/test/cases/helper.rb +204 -204
- data/test/cases/hot_compatibility_test.rb +142 -142
- data/test/cases/i18n_test.rb +45 -45
- data/test/cases/inheritance_test.rb +606 -606
- data/test/cases/integration_test.rb +155 -155
- data/test/cases/invalid_connection_test.rb +24 -24
- data/test/cases/invertible_migration_test.rb +387 -387
- data/test/cases/json_serialization_test.rb +311 -311
- data/test/cases/locking_test.rb +493 -493
- data/test/cases/log_subscriber_test.rb +225 -225
- data/test/cases/migration/change_schema_test.rb +458 -458
- data/test/cases/migration/change_table_test.rb +256 -256
- data/test/cases/migration/column_attributes_test.rb +176 -176
- data/test/cases/migration/column_positioning_test.rb +56 -56
- data/test/cases/migration/columns_test.rb +310 -310
- data/test/cases/migration/command_recorder_test.rb +350 -350
- data/test/cases/migration/compatibility_test.rb +118 -118
- data/test/cases/migration/create_join_table_test.rb +157 -157
- data/test/cases/migration/foreign_key_test.rb +362 -360
- data/test/cases/migration/helper.rb +39 -39
- data/test/cases/migration/index_test.rb +218 -218
- data/test/cases/migration/logger_test.rb +36 -36
- data/test/cases/migration/pending_migrations_test.rb +52 -52
- data/test/cases/migration/references_foreign_key_test.rb +221 -216
- data/test/cases/migration/references_index_test.rb +101 -101
- data/test/cases/migration/references_statements_test.rb +136 -136
- data/test/cases/migration/rename_table_test.rb +93 -93
- data/test/cases/migration_test.rb +1157 -1157
- data/test/cases/migrator_test.rb +471 -470
- data/test/cases/mixin_test.rb +68 -68
- data/test/cases/modules_test.rb +172 -172
- data/test/cases/multiparameter_attributes_test.rb +372 -372
- data/test/cases/multiple_db_test.rb +122 -122
- data/test/cases/nested_attributes_test.rb +1098 -1098
- data/test/cases/nested_attributes_with_callbacks_test.rb +144 -144
- data/test/cases/persistence_test.rb +1001 -1001
- data/test/cases/pooled_connections_test.rb +81 -81
- data/test/cases/primary_keys_test.rb +376 -376
- data/test/cases/query_cache_test.rb +446 -446
- data/test/cases/quoting_test.rb +202 -202
- data/test/cases/readonly_test.rb +119 -119
- data/test/cases/reaper_test.rb +85 -85
- data/test/cases/reflection_test.rb +509 -509
- data/test/cases/relation/delegation_test.rb +63 -63
- data/test/cases/relation/merging_test.rb +157 -157
- data/test/cases/relation/mutation_test.rb +183 -183
- data/test/cases/relation/or_test.rb +92 -92
- data/test/cases/relation/predicate_builder_test.rb +16 -16
- data/test/cases/relation/record_fetch_warning_test.rb +40 -40
- data/test/cases/relation/where_chain_test.rb +105 -105
- data/test/cases/relation/where_clause_test.rb +182 -182
- data/test/cases/relation/where_test.rb +322 -322
- data/test/cases/relation_test.rb +328 -328
- data/test/cases/relations_test.rb +2026 -2026
- data/test/cases/reload_models_test.rb +22 -22
- data/test/cases/result_test.rb +90 -90
- data/test/cases/sanitize_test.rb +176 -176
- data/test/cases/schema_dumper_test.rb +457 -457
- data/test/cases/schema_loading_test.rb +52 -52
- data/test/cases/scoping/default_scoping_test.rb +528 -528
- data/test/cases/scoping/named_scoping_test.rb +561 -561
- data/test/cases/scoping/relation_scoping_test.rb +400 -400
- data/test/cases/secure_token_test.rb +32 -32
- data/test/cases/serialization_test.rb +104 -104
- data/test/cases/serialized_attribute_test.rb +364 -364
- data/test/cases/statement_cache_test.rb +136 -136
- data/test/cases/store_test.rb +195 -195
- data/test/cases/suppressor_test.rb +63 -63
- data/test/cases/tasks/database_tasks_test.rb +462 -462
- data/test/cases/tasks/mysql_rake_test.rb +345 -345
- data/test/cases/tasks/postgresql_rake_test.rb +304 -304
- data/test/cases/tasks/sqlite_rake_test.rb +220 -220
- data/test/cases/test_case.rb +131 -131
- data/test/cases/test_fixtures_test.rb +36 -36
- data/test/cases/time_precision_test.rb +103 -102
- data/test/cases/timestamp_test.rb +501 -501
- data/test/cases/touch_later_test.rb +121 -121
- data/test/cases/transaction_callbacks_test.rb +518 -518
- data/test/cases/transaction_isolation_test.rb +106 -106
- data/test/cases/transactions_test.rb +835 -834
- data/test/cases/type/adapter_specific_registry_test.rb +133 -133
- data/test/cases/type/date_time_test.rb +14 -14
- data/test/cases/type/integer_test.rb +27 -27
- data/test/cases/type/string_test.rb +22 -22
- data/test/cases/type/type_map_test.rb +177 -177
- data/test/cases/type_test.rb +39 -39
- data/test/cases/types_test.rb +24 -24
- data/test/cases/unconnected_test.rb +33 -33
- data/test/cases/validations/absence_validation_test.rb +73 -73
- data/test/cases/validations/association_validation_test.rb +97 -97
- data/test/cases/validations/i18n_generate_message_validation_test.rb +84 -84
- data/test/cases/validations/i18n_validation_test.rb +86 -86
- data/test/cases/validations/length_validation_test.rb +79 -79
- data/test/cases/validations/presence_validation_test.rb +103 -103
- data/test/cases/validations/uniqueness_validation_test.rb +548 -548
- data/test/cases/validations_repair_helper.rb +19 -19
- data/test/cases/validations_test.rb +194 -194
- data/test/cases/view_test.rb +216 -216
- data/test/cases/yaml_serialization_test.rb +121 -121
- data/test/config.example.yml +97 -97
- data/test/config.rb +5 -5
- data/test/connections/native_ibm_db/connection.rb +44 -0
- data/test/fixtures/accounts.yml +29 -29
- data/test/fixtures/admin/accounts.yml +2 -2
- 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/bad_posts.yml +9 -9
- data/test/fixtures/binaries.yml +133 -133
- data/test/fixtures/books.yml +31 -31
- 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/content.yml +3 -3
- data/test/fixtures/content_positions.yml +3 -3
- data/test/fixtures/courses.yml +8 -8
- data/test/fixtures/customers.yml +25 -25
- data/test/fixtures/dashboards.yml +6 -6
- data/test/fixtures/dead_parrots.yml +5 -5
- data/test/fixtures/developers.yml +22 -22
- 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/live_parrots.yml +4 -4
- 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/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/naked/yml/parrots.yml +2 -2
- data/test/fixtures/naked/yml/trees.yml +3 -3
- data/test/fixtures/nodes.yml +29 -29
- data/test/fixtures/organizations.yml +5 -5
- data/test/fixtures/other_comments.yml +6 -6
- data/test/fixtures/other_dogs.yml +2 -2
- data/test/fixtures/other_posts.yml +7 -7
- 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 -15
- data/test/fixtures/posts.yml +80 -80
- data/test/fixtures/price_estimates.yml +16 -16
- data/test/fixtures/products.yml +4 -4
- data/test/fixtures/projects.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/trees.yml +3 -3
- 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/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 +9 -9
- data/test/migrations/missing/1_people_have_last_names.rb +9 -9
- data/test/migrations/missing/3_we_need_reminders.rb +12 -12
- data/test/migrations/missing/4_innocent_jointable.rb +12 -12
- data/test/migrations/rename/1_we_need_things.rb +11 -11
- data/test/migrations/rename/2_rename_things.rb +9 -9
- 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 +12 -12
- data/test/migrations/valid/3_innocent_jointable.rb +12 -12
- 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 +12 -12
- data/test/migrations/valid_with_subdirectories/sub1/3_innocent_jointable.rb +12 -12
- 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 +5 -5
- data/test/models/admin/account.rb +3 -3
- data/test/models/admin/user.rb +40 -40
- data/test/models/aircraft.rb +5 -5
- data/test/models/arunit2_model.rb +3 -3
- data/test/models/author.rb +209 -209
- data/test/models/auto_id.rb +4 -4
- data/test/models/autoloadable/extra_firm.rb +2 -2
- data/test/models/binary.rb +2 -2
- data/test/models/bird.rb +12 -12
- data/test/models/book.rb +23 -23
- data/test/models/boolean.rb +2 -2
- data/test/models/bulb.rb +52 -52
- data/test/models/cake_designer.rb +3 -3
- data/test/models/car.rb +29 -29
- data/test/models/carrier.rb +2 -2
- data/test/models/cat.rb +10 -10
- data/test/models/categorization.rb +19 -19
- data/test/models/category.rb +35 -35
- data/test/models/chef.rb +8 -8
- data/test/models/citation.rb +3 -3
- data/test/models/club.rb +25 -25
- 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 +76 -76
- data/test/models/company.rb +230 -230
- 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/content.rb +40 -40
- 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 +83 -83
- 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 +274 -274
- 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 +3 -3
- 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 +2 -2
- data/test/models/guitar.rb +4 -4
- data/test/models/hotel.rb +11 -11
- 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 +42 -42
- data/test/models/member_detail.rb +8 -8
- data/test/models/member_type.rb +3 -3
- data/test/models/membership.rb +35 -35
- data/test/models/mentor.rb +2 -2
- 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/mocktail_designer.rb +2 -2
- data/test/models/molecule.rb +6 -6
- data/test/models/movie.rb +5 -5
- data/test/models/node.rb +5 -5
- data/test/models/non_primary_key.rb +2 -2
- data/test/models/notification.rb +3 -3
- data/test/models/order.rb +4 -4
- data/test/models/organization.rb +14 -14
- data/test/models/other_dog.rb +5 -5
- data/test/models/owner.rb +37 -37
- data/test/models/parrot.rb +28 -28
- data/test/models/person.rb +142 -142
- data/test/models/personal_legacy_thing.rb +4 -4
- data/test/models/pet.rb +18 -18
- data/test/models/pet_treasure.rb +6 -6
- data/test/models/pirate.rb +92 -92
- data/test/models/possession.rb +3 -3
- data/test/models/post.rb +273 -273
- data/test/models/price_estimate.rb +4 -4
- data/test/models/professor.rb +5 -5
- data/test/models/project.rb +40 -40
- 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/rating.rb +4 -4
- data/test/models/reader.rb +23 -23
- data/test/models/recipe.rb +3 -3
- 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 +39 -39
- data/test/models/ship_part.rb +8 -8
- 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 +13 -13
- data/test/models/tagging.rb +13 -13
- data/test/models/task.rb +5 -5
- data/test/models/topic.rb +118 -118
- 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/tree.rb +3 -3
- data/test/models/tuning_peg.rb +4 -4
- data/test/models/tyre.rb +11 -11
- data/test/models/user.rb +14 -14
- data/test/models/uuid_child.rb +3 -3
- data/test/models/uuid_item.rb +6 -6
- 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/i5/ibm_db_specific_schema.rb +137 -0
- data/test/schema/ids/ibm_db_specific_schema.rb +140 -0
- data/test/schema/luw/ibm_db_specific_schema.rb +137 -0
- data/test/schema/mysql2_specific_schema.rb +68 -68
- data/test/schema/oracle_specific_schema.rb +40 -40
- data/test/schema/postgresql_specific_schema.rb +114 -114
- data/test/schema/schema.rb +1057 -1057
- data/test/schema/schema.rb.original +1057 -1057
- data/test/schema/sqlite_specific_schema.rb +18 -18
- data/test/schema/zOS/ibm_db_specific_schema.rb +208 -0
- data/test/support/config.rb +43 -43
- data/test/support/connection.rb +23 -23
- 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
- data/test/support/yaml_compatibility_fixtures/rails_4_1.yml +22 -22
- data/test/support/yaml_compatibility_fixtures/rails_4_2_0.yml +182 -182
- metadata +24 -13
- data/test/fixtures/author_addresses.original +0 -11
- data/test/fixtures/authors.original +0 -17
@@ -1,84 +1,84 @@
|
|
1
|
-
require "cases/helper"
|
2
|
-
require 'models/topic'
|
3
|
-
|
4
|
-
class I18nGenerateMessageValidationTest < ActiveRecord::TestCase
|
5
|
-
def setup
|
6
|
-
Topic.clear_validators!
|
7
|
-
@topic = Topic.new
|
8
|
-
I18n.backend = I18n::Backend::Simple.new
|
9
|
-
end
|
10
|
-
|
11
|
-
def reset_i18n_load_path
|
12
|
-
@old_load_path, @old_backend = I18n.load_path.dup, I18n.backend
|
13
|
-
I18n.load_path.clear
|
14
|
-
I18n.backend = I18n::Backend::Simple.new
|
15
|
-
yield
|
16
|
-
ensure
|
17
|
-
I18n.load_path.replace @old_load_path
|
18
|
-
I18n.backend = @old_backend
|
19
|
-
end
|
20
|
-
|
21
|
-
# validates_associated: generate_message(attr_name, :invalid, :message => custom_message, :value => value)
|
22
|
-
def test_generate_message_invalid_with_default_message
|
23
|
-
assert_equal 'is invalid', @topic.errors.generate_message(:title, :invalid, :value => 'title')
|
24
|
-
end
|
25
|
-
|
26
|
-
def test_generate_message_invalid_with_custom_message
|
27
|
-
assert_equal 'custom message title', @topic.errors.generate_message(:title, :invalid, :message => 'custom message %{value}', :value => 'title')
|
28
|
-
end
|
29
|
-
|
30
|
-
# validates_uniqueness_of: generate_message(attr_name, :taken, :message => custom_message)
|
31
|
-
def test_generate_message_taken_with_default_message
|
32
|
-
assert_equal "has already been taken", @topic.errors.generate_message(:title, :taken, :value => 'title')
|
33
|
-
end
|
34
|
-
|
35
|
-
def test_generate_message_taken_with_custom_message
|
36
|
-
assert_equal 'custom message title', @topic.errors.generate_message(:title, :taken, :message => 'custom message %{value}', :value => 'title')
|
37
|
-
end
|
38
|
-
|
39
|
-
# ActiveRecord#RecordInvalid exception
|
40
|
-
|
41
|
-
test "RecordInvalid exception can be localized" do
|
42
|
-
topic = Topic.new
|
43
|
-
topic.errors.add(:title, :invalid)
|
44
|
-
topic.errors.add(:title, :blank)
|
45
|
-
assert_equal "Validation failed: Title is invalid, Title can't be blank", ActiveRecord::RecordInvalid.new(topic).message
|
46
|
-
end
|
47
|
-
|
48
|
-
test "RecordInvalid exception translation falls back to the :errors namespace" do
|
49
|
-
reset_i18n_load_path do
|
50
|
-
I18n.backend.store_translations 'en', :errors => {:messages => {:record_invalid => 'fallback message'}}
|
51
|
-
topic = Topic.new
|
52
|
-
topic.errors.add(:title, :blank)
|
53
|
-
assert_equal "fallback message", ActiveRecord::RecordInvalid.new(topic).message
|
54
|
-
end
|
55
|
-
end
|
56
|
-
|
57
|
-
test "translation for 'taken' can be overridden" do
|
58
|
-
reset_i18n_load_path do
|
59
|
-
I18n.backend.store_translations "en", {errors: {attributes: {title: {taken: "Custom taken message" }}}}
|
60
|
-
assert_equal "Custom taken message", @topic.errors.generate_message(:title, :taken, :value => 'title')
|
61
|
-
end
|
62
|
-
end
|
63
|
-
|
64
|
-
test "translation for 'taken' can be overridden in activerecord scope" do
|
65
|
-
reset_i18n_load_path do
|
66
|
-
I18n.backend.store_translations "en", {activerecord: {errors: {messages: {taken: "Custom taken message" }}}}
|
67
|
-
assert_equal "Custom taken message", @topic.errors.generate_message(:title, :taken, :value => 'title')
|
68
|
-
end
|
69
|
-
end
|
70
|
-
|
71
|
-
test "translation for 'taken' can be overridden in activerecord model scope" do
|
72
|
-
reset_i18n_load_path do
|
73
|
-
I18n.backend.store_translations "en", {activerecord: {errors: {models: {topic: {taken: "Custom taken message" }}}}}
|
74
|
-
assert_equal "Custom taken message", @topic.errors.generate_message(:title, :taken, :value => 'title')
|
75
|
-
end
|
76
|
-
end
|
77
|
-
|
78
|
-
test "translation for 'taken' can be overridden in activerecord attributes scope" do
|
79
|
-
reset_i18n_load_path do
|
80
|
-
I18n.backend.store_translations "en", {activerecord: {errors: {models: {topic: {attributes: {title: {taken: "Custom taken message" }}}}}}}
|
81
|
-
assert_equal "Custom taken message", @topic.errors.generate_message(:title, :taken, :value => 'title')
|
82
|
-
end
|
83
|
-
end
|
84
|
-
end
|
1
|
+
require "cases/helper"
|
2
|
+
require 'models/topic'
|
3
|
+
|
4
|
+
class I18nGenerateMessageValidationTest < ActiveRecord::TestCase
|
5
|
+
def setup
|
6
|
+
Topic.clear_validators!
|
7
|
+
@topic = Topic.new
|
8
|
+
I18n.backend = I18n::Backend::Simple.new
|
9
|
+
end
|
10
|
+
|
11
|
+
def reset_i18n_load_path
|
12
|
+
@old_load_path, @old_backend = I18n.load_path.dup, I18n.backend
|
13
|
+
I18n.load_path.clear
|
14
|
+
I18n.backend = I18n::Backend::Simple.new
|
15
|
+
yield
|
16
|
+
ensure
|
17
|
+
I18n.load_path.replace @old_load_path
|
18
|
+
I18n.backend = @old_backend
|
19
|
+
end
|
20
|
+
|
21
|
+
# validates_associated: generate_message(attr_name, :invalid, :message => custom_message, :value => value)
|
22
|
+
def test_generate_message_invalid_with_default_message
|
23
|
+
assert_equal 'is invalid', @topic.errors.generate_message(:title, :invalid, :value => 'title')
|
24
|
+
end
|
25
|
+
|
26
|
+
def test_generate_message_invalid_with_custom_message
|
27
|
+
assert_equal 'custom message title', @topic.errors.generate_message(:title, :invalid, :message => 'custom message %{value}', :value => 'title')
|
28
|
+
end
|
29
|
+
|
30
|
+
# validates_uniqueness_of: generate_message(attr_name, :taken, :message => custom_message)
|
31
|
+
def test_generate_message_taken_with_default_message
|
32
|
+
assert_equal "has already been taken", @topic.errors.generate_message(:title, :taken, :value => 'title')
|
33
|
+
end
|
34
|
+
|
35
|
+
def test_generate_message_taken_with_custom_message
|
36
|
+
assert_equal 'custom message title', @topic.errors.generate_message(:title, :taken, :message => 'custom message %{value}', :value => 'title')
|
37
|
+
end
|
38
|
+
|
39
|
+
# ActiveRecord#RecordInvalid exception
|
40
|
+
|
41
|
+
test "RecordInvalid exception can be localized" do
|
42
|
+
topic = Topic.new
|
43
|
+
topic.errors.add(:title, :invalid)
|
44
|
+
topic.errors.add(:title, :blank)
|
45
|
+
assert_equal "Validation failed: Title is invalid, Title can't be blank", ActiveRecord::RecordInvalid.new(topic).message
|
46
|
+
end
|
47
|
+
|
48
|
+
test "RecordInvalid exception translation falls back to the :errors namespace" do
|
49
|
+
reset_i18n_load_path do
|
50
|
+
I18n.backend.store_translations 'en', :errors => {:messages => {:record_invalid => 'fallback message'}}
|
51
|
+
topic = Topic.new
|
52
|
+
topic.errors.add(:title, :blank)
|
53
|
+
assert_equal "fallback message", ActiveRecord::RecordInvalid.new(topic).message
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
test "translation for 'taken' can be overridden" do
|
58
|
+
reset_i18n_load_path do
|
59
|
+
I18n.backend.store_translations "en", {errors: {attributes: {title: {taken: "Custom taken message" }}}}
|
60
|
+
assert_equal "Custom taken message", @topic.errors.generate_message(:title, :taken, :value => 'title')
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
test "translation for 'taken' can be overridden in activerecord scope" do
|
65
|
+
reset_i18n_load_path do
|
66
|
+
I18n.backend.store_translations "en", {activerecord: {errors: {messages: {taken: "Custom taken message" }}}}
|
67
|
+
assert_equal "Custom taken message", @topic.errors.generate_message(:title, :taken, :value => 'title')
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
71
|
+
test "translation for 'taken' can be overridden in activerecord model scope" do
|
72
|
+
reset_i18n_load_path do
|
73
|
+
I18n.backend.store_translations "en", {activerecord: {errors: {models: {topic: {taken: "Custom taken message" }}}}}
|
74
|
+
assert_equal "Custom taken message", @topic.errors.generate_message(:title, :taken, :value => 'title')
|
75
|
+
end
|
76
|
+
end
|
77
|
+
|
78
|
+
test "translation for 'taken' can be overridden in activerecord attributes scope" do
|
79
|
+
reset_i18n_load_path do
|
80
|
+
I18n.backend.store_translations "en", {activerecord: {errors: {models: {topic: {attributes: {title: {taken: "Custom taken message" }}}}}}}
|
81
|
+
assert_equal "Custom taken message", @topic.errors.generate_message(:title, :taken, :value => 'title')
|
82
|
+
end
|
83
|
+
end
|
84
|
+
end
|
@@ -1,86 +1,86 @@
|
|
1
|
-
require "cases/helper"
|
2
|
-
require 'models/topic'
|
3
|
-
require 'models/reply'
|
4
|
-
|
5
|
-
class I18nValidationTest < ActiveRecord::TestCase
|
6
|
-
repair_validations(Topic, Reply)
|
7
|
-
|
8
|
-
def setup
|
9
|
-
repair_validations(Topic, Reply)
|
10
|
-
Reply.validates_presence_of(:title)
|
11
|
-
@topic = Topic.new
|
12
|
-
@old_load_path, @old_backend = I18n.load_path.dup, I18n.backend
|
13
|
-
I18n.load_path.clear
|
14
|
-
I18n.backend = I18n::Backend::Simple.new
|
15
|
-
I18n.backend.store_translations('en', :errors => {:messages => {:custom => nil}})
|
16
|
-
end
|
17
|
-
|
18
|
-
teardown do
|
19
|
-
I18n.load_path.replace @old_load_path
|
20
|
-
I18n.backend = @old_backend
|
21
|
-
end
|
22
|
-
|
23
|
-
def unique_topic
|
24
|
-
@unique ||= Topic.create :title => 'unique!'
|
25
|
-
end
|
26
|
-
|
27
|
-
def replied_topic
|
28
|
-
@replied_topic ||= begin
|
29
|
-
topic = Topic.create(:title => "topic")
|
30
|
-
topic.replies << Reply.new
|
31
|
-
topic
|
32
|
-
end
|
33
|
-
end
|
34
|
-
|
35
|
-
# A set of common cases for ActiveModel::Validations message generation that
|
36
|
-
# are used to generate tests to keep things DRY
|
37
|
-
#
|
38
|
-
COMMON_CASES = [
|
39
|
-
# [ case, validation_options, generate_message_options]
|
40
|
-
[ "given no options", {}, {}],
|
41
|
-
[ "given custom message", {:message => "custom"}, {:message => "custom"}],
|
42
|
-
[ "given if condition", {:if => lambda { true }}, {}],
|
43
|
-
[ "given unless condition", {:unless => lambda { false }}, {}],
|
44
|
-
[ "given option that is not reserved", {:format => "jpg"}, {:format => "jpg" }]
|
45
|
-
# TODO Add :on case, but below doesn't work, because then the validation isn't run for some reason
|
46
|
-
# even when using .save instead .valid?
|
47
|
-
# [ "given on condition", {on: :save}, {}]
|
48
|
-
]
|
49
|
-
|
50
|
-
COMMON_CASES.each do |name, validation_options, generate_message_options|
|
51
|
-
test "validates_uniqueness_of on generated message #{name}" do
|
52
|
-
Topic.validates_uniqueness_of :title, validation_options
|
53
|
-
@topic.title = unique_topic.title
|
54
|
-
assert_called_with(@topic.errors, :generate_message, [:title, :taken, generate_message_options.merge(:value => 'unique!')]) do
|
55
|
-
@topic.valid?
|
56
|
-
end
|
57
|
-
end
|
58
|
-
end
|
59
|
-
|
60
|
-
COMMON_CASES.each do |name, validation_options, generate_message_options|
|
61
|
-
test "validates_associated on generated message #{name}" do
|
62
|
-
Topic.validates_associated :replies, validation_options
|
63
|
-
assert_called_with(replied_topic.errors, :generate_message, [:replies, :invalid, generate_message_options.merge(:value => replied_topic.replies)]) do
|
64
|
-
replied_topic.save
|
65
|
-
end
|
66
|
-
end
|
67
|
-
end
|
68
|
-
|
69
|
-
def test_validates_associated_finds_custom_model_key_translation
|
70
|
-
I18n.backend.store_translations 'en', :activerecord => {:errors => {:models => {:topic => {:attributes => {:replies => {:invalid => 'custom message'}}}}}}
|
71
|
-
I18n.backend.store_translations 'en', :activerecord => {:errors => {:messages => {:invalid => 'global message'}}}
|
72
|
-
|
73
|
-
Topic.validates_associated :replies
|
74
|
-
replied_topic.valid?
|
75
|
-
assert_equal ['custom message'], replied_topic.errors[:replies].uniq
|
76
|
-
end
|
77
|
-
|
78
|
-
def test_validates_associated_finds_global_default_translation
|
79
|
-
I18n.backend.store_translations 'en', :activerecord => {:errors => {:messages => {:invalid => 'global message'}}}
|
80
|
-
|
81
|
-
Topic.validates_associated :replies
|
82
|
-
replied_topic.valid?
|
83
|
-
assert_equal ['global message'], replied_topic.errors[:replies]
|
84
|
-
end
|
85
|
-
|
86
|
-
end
|
1
|
+
require "cases/helper"
|
2
|
+
require 'models/topic'
|
3
|
+
require 'models/reply'
|
4
|
+
|
5
|
+
class I18nValidationTest < ActiveRecord::TestCase
|
6
|
+
repair_validations(Topic, Reply)
|
7
|
+
|
8
|
+
def setup
|
9
|
+
repair_validations(Topic, Reply)
|
10
|
+
Reply.validates_presence_of(:title)
|
11
|
+
@topic = Topic.new
|
12
|
+
@old_load_path, @old_backend = I18n.load_path.dup, I18n.backend
|
13
|
+
I18n.load_path.clear
|
14
|
+
I18n.backend = I18n::Backend::Simple.new
|
15
|
+
I18n.backend.store_translations('en', :errors => {:messages => {:custom => nil}})
|
16
|
+
end
|
17
|
+
|
18
|
+
teardown do
|
19
|
+
I18n.load_path.replace @old_load_path
|
20
|
+
I18n.backend = @old_backend
|
21
|
+
end
|
22
|
+
|
23
|
+
def unique_topic
|
24
|
+
@unique ||= Topic.create :title => 'unique!'
|
25
|
+
end
|
26
|
+
|
27
|
+
def replied_topic
|
28
|
+
@replied_topic ||= begin
|
29
|
+
topic = Topic.create(:title => "topic")
|
30
|
+
topic.replies << Reply.new
|
31
|
+
topic
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
# A set of common cases for ActiveModel::Validations message generation that
|
36
|
+
# are used to generate tests to keep things DRY
|
37
|
+
#
|
38
|
+
COMMON_CASES = [
|
39
|
+
# [ case, validation_options, generate_message_options]
|
40
|
+
[ "given no options", {}, {}],
|
41
|
+
[ "given custom message", {:message => "custom"}, {:message => "custom"}],
|
42
|
+
[ "given if condition", {:if => lambda { true }}, {}],
|
43
|
+
[ "given unless condition", {:unless => lambda { false }}, {}],
|
44
|
+
[ "given option that is not reserved", {:format => "jpg"}, {:format => "jpg" }]
|
45
|
+
# TODO Add :on case, but below doesn't work, because then the validation isn't run for some reason
|
46
|
+
# even when using .save instead .valid?
|
47
|
+
# [ "given on condition", {on: :save}, {}]
|
48
|
+
]
|
49
|
+
|
50
|
+
COMMON_CASES.each do |name, validation_options, generate_message_options|
|
51
|
+
test "validates_uniqueness_of on generated message #{name}" do
|
52
|
+
Topic.validates_uniqueness_of :title, validation_options
|
53
|
+
@topic.title = unique_topic.title
|
54
|
+
assert_called_with(@topic.errors, :generate_message, [:title, :taken, generate_message_options.merge(:value => 'unique!')]) do
|
55
|
+
@topic.valid?
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
COMMON_CASES.each do |name, validation_options, generate_message_options|
|
61
|
+
test "validates_associated on generated message #{name}" do
|
62
|
+
Topic.validates_associated :replies, validation_options
|
63
|
+
assert_called_with(replied_topic.errors, :generate_message, [:replies, :invalid, generate_message_options.merge(:value => replied_topic.replies)]) do
|
64
|
+
replied_topic.save
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
def test_validates_associated_finds_custom_model_key_translation
|
70
|
+
I18n.backend.store_translations 'en', :activerecord => {:errors => {:models => {:topic => {:attributes => {:replies => {:invalid => 'custom message'}}}}}}
|
71
|
+
I18n.backend.store_translations 'en', :activerecord => {:errors => {:messages => {:invalid => 'global message'}}}
|
72
|
+
|
73
|
+
Topic.validates_associated :replies
|
74
|
+
replied_topic.valid?
|
75
|
+
assert_equal ['custom message'], replied_topic.errors[:replies].uniq
|
76
|
+
end
|
77
|
+
|
78
|
+
def test_validates_associated_finds_global_default_translation
|
79
|
+
I18n.backend.store_translations 'en', :activerecord => {:errors => {:messages => {:invalid => 'global message'}}}
|
80
|
+
|
81
|
+
Topic.validates_associated :replies
|
82
|
+
replied_topic.valid?
|
83
|
+
assert_equal ['global message'], replied_topic.errors[:replies]
|
84
|
+
end
|
85
|
+
|
86
|
+
end
|
@@ -1,79 +1,79 @@
|
|
1
|
-
require "cases/helper"
|
2
|
-
require 'models/owner'
|
3
|
-
require 'models/pet'
|
4
|
-
require 'models/person'
|
5
|
-
|
6
|
-
class LengthValidationTest < ActiveRecord::TestCase
|
7
|
-
fixtures :owners
|
8
|
-
|
9
|
-
setup do
|
10
|
-
@owner = Class.new(Owner) do
|
11
|
-
def self.name; 'Owner'; end
|
12
|
-
end
|
13
|
-
end
|
14
|
-
|
15
|
-
|
16
|
-
def test_validates_size_of_association
|
17
|
-
assert_nothing_raised { @owner.validates_size_of :pets, minimum: 1 }
|
18
|
-
o = @owner.new('name' => 'nopets')
|
19
|
-
assert !o.save
|
20
|
-
assert o.errors[:pets].any?
|
21
|
-
o.pets.build('name' => 'apet')
|
22
|
-
assert o.valid?
|
23
|
-
end
|
24
|
-
|
25
|
-
def test_validates_size_of_association_using_within
|
26
|
-
assert_nothing_raised { @owner.validates_size_of :pets, within: 1..2 }
|
27
|
-
o = @owner.new('name' => 'nopets')
|
28
|
-
assert !o.save
|
29
|
-
assert o.errors[:pets].any?
|
30
|
-
|
31
|
-
o.pets.build('name' => 'apet')
|
32
|
-
assert o.valid?
|
33
|
-
|
34
|
-
2.times { o.pets.build('name' => 'apet') }
|
35
|
-
assert !o.save
|
36
|
-
assert o.errors[:pets].any?
|
37
|
-
end
|
38
|
-
|
39
|
-
def test_validates_size_of_association_utf8
|
40
|
-
@owner.validates_size_of :pets, minimum: 1
|
41
|
-
o = @owner.new('name' => 'あいうえおかきくけこ')
|
42
|
-
assert !o.save
|
43
|
-
assert o.errors[:pets].any?
|
44
|
-
o.pets.build('name' => 'あいうえおかきくけこ')
|
45
|
-
assert o.valid?
|
46
|
-
end
|
47
|
-
|
48
|
-
def test_validates_size_of_respects_records_marked_for_destruction
|
49
|
-
@owner.validates_size_of :pets, minimum: 1
|
50
|
-
owner = @owner.new
|
51
|
-
assert_not owner.save
|
52
|
-
assert owner.errors[:pets].any?
|
53
|
-
pet = owner.pets.build
|
54
|
-
assert owner.valid?
|
55
|
-
assert owner.save
|
56
|
-
|
57
|
-
pet_count = Pet.count
|
58
|
-
assert_not owner.update_attributes pets_attributes: [ {_destroy: 1, id: pet.id} ]
|
59
|
-
assert_not owner.valid?
|
60
|
-
assert owner.errors[:pets].any?
|
61
|
-
assert_equal pet_count, Pet.count
|
62
|
-
end
|
63
|
-
|
64
|
-
def test_validates_length_of_virtual_attribute_on_model
|
65
|
-
repair_validations(Pet) do
|
66
|
-
Pet.send(:attr_accessor, :nickname)
|
67
|
-
Pet.validates_length_of(:name, minimum: 1)
|
68
|
-
Pet.validates_length_of(:nickname, minimum: 1)
|
69
|
-
|
70
|
-
pet = Pet.create!(name: 'Fancy Pants', nickname: 'Fancy')
|
71
|
-
|
72
|
-
assert pet.valid?
|
73
|
-
|
74
|
-
pet.nickname = ''
|
75
|
-
|
76
|
-
assert pet.invalid?
|
77
|
-
end
|
78
|
-
end
|
79
|
-
end
|
1
|
+
require "cases/helper"
|
2
|
+
require 'models/owner'
|
3
|
+
require 'models/pet'
|
4
|
+
require 'models/person'
|
5
|
+
|
6
|
+
class LengthValidationTest < ActiveRecord::TestCase
|
7
|
+
fixtures :owners
|
8
|
+
|
9
|
+
setup do
|
10
|
+
@owner = Class.new(Owner) do
|
11
|
+
def self.name; 'Owner'; end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
|
16
|
+
def test_validates_size_of_association
|
17
|
+
assert_nothing_raised { @owner.validates_size_of :pets, minimum: 1 }
|
18
|
+
o = @owner.new('name' => 'nopets')
|
19
|
+
assert !o.save
|
20
|
+
assert o.errors[:pets].any?
|
21
|
+
o.pets.build('name' => 'apet')
|
22
|
+
assert o.valid?
|
23
|
+
end
|
24
|
+
|
25
|
+
def test_validates_size_of_association_using_within
|
26
|
+
assert_nothing_raised { @owner.validates_size_of :pets, within: 1..2 }
|
27
|
+
o = @owner.new('name' => 'nopets')
|
28
|
+
assert !o.save
|
29
|
+
assert o.errors[:pets].any?
|
30
|
+
|
31
|
+
o.pets.build('name' => 'apet')
|
32
|
+
assert o.valid?
|
33
|
+
|
34
|
+
2.times { o.pets.build('name' => 'apet') }
|
35
|
+
assert !o.save
|
36
|
+
assert o.errors[:pets].any?
|
37
|
+
end
|
38
|
+
|
39
|
+
def test_validates_size_of_association_utf8
|
40
|
+
@owner.validates_size_of :pets, minimum: 1
|
41
|
+
o = @owner.new('name' => 'あいうえおかきくけこ')
|
42
|
+
assert !o.save
|
43
|
+
assert o.errors[:pets].any?
|
44
|
+
o.pets.build('name' => 'あいうえおかきくけこ')
|
45
|
+
assert o.valid?
|
46
|
+
end
|
47
|
+
|
48
|
+
def test_validates_size_of_respects_records_marked_for_destruction
|
49
|
+
@owner.validates_size_of :pets, minimum: 1
|
50
|
+
owner = @owner.new
|
51
|
+
assert_not owner.save
|
52
|
+
assert owner.errors[:pets].any?
|
53
|
+
pet = owner.pets.build
|
54
|
+
assert owner.valid?
|
55
|
+
assert owner.save
|
56
|
+
|
57
|
+
pet_count = Pet.count
|
58
|
+
assert_not owner.update_attributes pets_attributes: [ {_destroy: 1, id: pet.id} ]
|
59
|
+
assert_not owner.valid?
|
60
|
+
assert owner.errors[:pets].any?
|
61
|
+
assert_equal pet_count, Pet.count
|
62
|
+
end
|
63
|
+
|
64
|
+
def test_validates_length_of_virtual_attribute_on_model
|
65
|
+
repair_validations(Pet) do
|
66
|
+
Pet.send(:attr_accessor, :nickname)
|
67
|
+
Pet.validates_length_of(:name, minimum: 1)
|
68
|
+
Pet.validates_length_of(:nickname, minimum: 1)
|
69
|
+
|
70
|
+
pet = Pet.create!(name: 'Fancy Pants', nickname: 'Fancy')
|
71
|
+
|
72
|
+
assert pet.valid?
|
73
|
+
|
74
|
+
pet.nickname = ''
|
75
|
+
|
76
|
+
assert pet.invalid?
|
77
|
+
end
|
78
|
+
end
|
79
|
+
end
|