sequel 4.49.0 → 5.3.0
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/CHANGELOG +130 -0
- data/README.rdoc +195 -136
- data/Rakefile +26 -42
- data/bin/sequel +6 -9
- data/doc/advanced_associations.rdoc +91 -168
- data/doc/association_basics.rdoc +197 -274
- data/doc/bin_sequel.rdoc +5 -3
- data/doc/cheat_sheet.rdoc +66 -43
- data/doc/code_order.rdoc +1 -8
- data/doc/core_extensions.rdoc +81 -56
- data/doc/dataset_basics.rdoc +8 -17
- data/doc/dataset_filtering.rdoc +81 -86
- data/doc/extensions.rdoc +3 -10
- data/doc/mass_assignment.rdoc +73 -30
- data/doc/migration.rdoc +19 -36
- data/doc/model_dataset_method_design.rdoc +14 -17
- data/doc/model_hooks.rdoc +15 -25
- data/doc/model_plugins.rdoc +10 -10
- data/doc/mssql_stored_procedures.rdoc +3 -3
- data/doc/object_model.rdoc +52 -70
- data/doc/opening_databases.rdoc +39 -32
- data/doc/postgresql.rdoc +48 -38
- data/doc/prepared_statements.rdoc +27 -22
- data/doc/querying.rdoc +173 -150
- data/doc/reflection.rdoc +5 -6
- data/doc/release_notes/5.0.0.txt +159 -0
- data/doc/release_notes/5.1.0.txt +31 -0
- data/doc/release_notes/5.2.0.txt +33 -0
- data/doc/release_notes/5.3.0.txt +121 -0
- data/doc/schema_modification.rdoc +78 -64
- data/doc/security.rdoc +97 -88
- data/doc/sharding.rdoc +43 -30
- data/doc/sql.rdoc +53 -65
- data/doc/testing.rdoc +4 -5
- data/doc/thread_safety.rdoc +2 -4
- data/doc/transactions.rdoc +18 -17
- data/doc/validations.rdoc +48 -45
- data/doc/virtual_rows.rdoc +87 -115
- data/lib/sequel/adapters/ado/access.rb +7 -13
- data/lib/sequel/adapters/ado/mssql.rb +2 -9
- data/lib/sequel/adapters/ado.rb +9 -25
- data/lib/sequel/adapters/amalgalite.rb +3 -18
- data/lib/sequel/adapters/ibmdb.rb +9 -45
- data/lib/sequel/adapters/jdbc/db2.rb +8 -37
- data/lib/sequel/adapters/jdbc/derby.rb +4 -50
- data/lib/sequel/adapters/jdbc/h2.rb +6 -26
- data/lib/sequel/adapters/jdbc/hsqldb.rb +2 -27
- data/lib/sequel/adapters/jdbc/jtds.rb +2 -9
- data/lib/sequel/adapters/jdbc/mssql.rb +1 -11
- data/lib/sequel/adapters/jdbc/mysql.rb +11 -15
- data/lib/sequel/adapters/jdbc/oracle.rb +4 -26
- data/lib/sequel/adapters/jdbc/postgresql.rb +23 -33
- data/lib/sequel/adapters/jdbc/sqlanywhere.rb +4 -17
- data/lib/sequel/adapters/jdbc/sqlite.rb +1 -7
- data/lib/sequel/adapters/jdbc/sqlserver.rb +1 -13
- data/lib/sequel/adapters/jdbc/transactions.rb +1 -14
- data/lib/sequel/adapters/jdbc.rb +18 -74
- data/lib/sequel/adapters/mock.rb +4 -30
- data/lib/sequel/adapters/mysql.rb +7 -44
- data/lib/sequel/adapters/mysql2.rb +5 -23
- data/lib/sequel/adapters/odbc/db2.rb +1 -1
- data/lib/sequel/adapters/odbc/mssql.rb +4 -12
- data/lib/sequel/adapters/odbc/oracle.rb +1 -1
- data/lib/sequel/adapters/odbc.rb +0 -19
- data/lib/sequel/adapters/oracle.rb +8 -13
- data/lib/sequel/adapters/postgres.rb +28 -150
- data/lib/sequel/adapters/postgresql.rb +1 -1
- data/lib/sequel/adapters/shared/access.rb +11 -51
- data/lib/sequel/adapters/shared/db2.rb +3 -61
- data/lib/sequel/adapters/shared/mssql.rb +21 -157
- data/lib/sequel/adapters/shared/mysql.rb +61 -227
- data/lib/sequel/adapters/shared/oracle.rb +13 -41
- data/lib/sequel/adapters/shared/postgres.rb +58 -264
- data/lib/sequel/adapters/shared/sqlanywhere.rb +4 -96
- data/lib/sequel/adapters/shared/sqlite.rb +22 -101
- data/lib/sequel/adapters/sqlanywhere.rb +4 -23
- data/lib/sequel/adapters/sqlite.rb +2 -19
- data/lib/sequel/adapters/tinytds.rb +5 -15
- data/lib/sequel/adapters/utils/emulate_offset_with_row_number.rb +1 -1
- data/lib/sequel/adapters/utils/mysql_mysql2.rb +4 -4
- data/lib/sequel/adapters/utils/mysql_prepared_statements.rb +3 -6
- data/lib/sequel/adapters/utils/replace.rb +0 -5
- data/lib/sequel/adapters/utils/stored_procedures.rb +0 -2
- data/lib/sequel/adapters/utils/unmodified_identifiers.rb +2 -0
- data/lib/sequel/ast_transformer.rb +3 -94
- data/lib/sequel/connection_pool/sharded_single.rb +1 -4
- data/lib/sequel/connection_pool/sharded_threaded.rb +97 -95
- data/lib/sequel/connection_pool/single.rb +0 -2
- data/lib/sequel/connection_pool/threaded.rb +94 -110
- data/lib/sequel/connection_pool.rb +38 -28
- data/lib/sequel/core.rb +42 -101
- data/lib/sequel/database/connecting.rb +23 -60
- data/lib/sequel/database/dataset.rb +6 -9
- data/lib/sequel/database/dataset_defaults.rb +4 -48
- data/lib/sequel/database/features.rb +5 -4
- data/lib/sequel/database/logging.rb +2 -9
- data/lib/sequel/database/misc.rb +36 -55
- data/lib/sequel/database/query.rb +8 -13
- data/lib/sequel/database/schema_generator.rb +93 -64
- data/lib/sequel/database/schema_methods.rb +61 -79
- data/lib/sequel/database/transactions.rb +4 -24
- data/lib/sequel/database.rb +12 -2
- data/lib/sequel/dataset/actions.rb +57 -107
- data/lib/sequel/dataset/dataset_module.rb +4 -16
- data/lib/sequel/dataset/features.rb +35 -30
- data/lib/sequel/dataset/graph.rb +40 -49
- data/lib/sequel/dataset/misc.rb +12 -37
- data/lib/sequel/dataset/placeholder_literalizer.rb +4 -4
- data/lib/sequel/dataset/prepared_statements.rb +23 -51
- data/lib/sequel/dataset/query.rb +91 -161
- data/lib/sequel/dataset/sql.rb +33 -225
- data/lib/sequel/dataset.rb +18 -10
- data/lib/sequel/deprecated.rb +18 -27
- data/lib/sequel/exceptions.rb +1 -17
- data/lib/sequel/extensions/_model_pg_row.rb +0 -7
- data/lib/sequel/extensions/_pretty_table.rb +1 -3
- data/lib/sequel/extensions/arbitrary_servers.rb +10 -10
- data/lib/sequel/extensions/connection_expiration.rb +1 -1
- data/lib/sequel/extensions/connection_validator.rb +1 -1
- data/lib/sequel/extensions/constraint_validations.rb +11 -11
- data/lib/sequel/extensions/core_extensions.rb +39 -49
- data/lib/sequel/extensions/core_refinements.rb +39 -45
- data/lib/sequel/extensions/current_datetime_timestamp.rb +0 -4
- data/lib/sequel/extensions/date_arithmetic.rb +7 -7
- data/lib/sequel/extensions/duplicate_columns_handler.rb +12 -9
- data/lib/sequel/extensions/empty_array_consider_nulls.rb +2 -2
- data/lib/sequel/extensions/eval_inspect.rb +4 -11
- data/lib/sequel/extensions/freeze_datasets.rb +1 -69
- data/lib/sequel/extensions/from_block.rb +1 -35
- data/lib/sequel/extensions/graph_each.rb +2 -2
- data/lib/sequel/extensions/identifier_mangling.rb +9 -19
- data/lib/sequel/extensions/implicit_subquery.rb +2 -2
- data/lib/sequel/extensions/inflector.rb +4 -4
- data/lib/sequel/extensions/migration.rb +27 -43
- data/lib/sequel/extensions/no_auto_literal_strings.rb +2 -84
- data/lib/sequel/extensions/null_dataset.rb +2 -8
- data/lib/sequel/extensions/pagination.rb +1 -17
- data/lib/sequel/extensions/pg_array.rb +20 -189
- data/lib/sequel/extensions/pg_extended_date_support.rb +230 -0
- data/lib/sequel/extensions/pg_hstore.rb +11 -50
- data/lib/sequel/extensions/pg_hstore_ops.rb +2 -2
- data/lib/sequel/extensions/pg_inet.rb +3 -16
- data/lib/sequel/extensions/pg_interval.rb +1 -20
- data/lib/sequel/extensions/pg_json.rb +7 -27
- data/lib/sequel/extensions/pg_loose_count.rb +1 -1
- data/lib/sequel/extensions/pg_range.rb +6 -121
- data/lib/sequel/extensions/pg_range_ops.rb +1 -3
- data/lib/sequel/extensions/pg_row.rb +5 -77
- data/lib/sequel/extensions/pg_row_ops.rb +2 -13
- data/lib/sequel/extensions/query.rb +3 -4
- data/lib/sequel/extensions/round_timestamps.rb +0 -6
- data/lib/sequel/extensions/schema_dumper.rb +13 -13
- data/lib/sequel/extensions/select_remove.rb +3 -3
- data/lib/sequel/extensions/split_array_nil.rb +2 -2
- data/lib/sequel/extensions/sql_comments.rb +2 -2
- data/lib/sequel/extensions/string_agg.rb +11 -8
- data/lib/sequel/extensions/symbol_aref.rb +6 -20
- data/lib/sequel/extensions/synchronize_sql.rb +45 -0
- data/lib/sequel/model/associations.rb +129 -131
- data/lib/sequel/model/base.rb +133 -731
- data/lib/sequel/model/default_inflections.rb +1 -1
- data/lib/sequel/model/errors.rb +0 -3
- data/lib/sequel/model/exceptions.rb +2 -6
- data/lib/sequel/model/inflections.rb +1 -26
- data/lib/sequel/model/plugins.rb +1 -0
- data/lib/sequel/model.rb +27 -62
- data/lib/sequel/plugins/active_model.rb +2 -5
- data/lib/sequel/plugins/association_dependencies.rb +15 -15
- data/lib/sequel/plugins/association_pks.rb +14 -28
- data/lib/sequel/plugins/association_proxies.rb +6 -7
- data/lib/sequel/plugins/auto_validations.rb +4 -4
- data/lib/sequel/plugins/before_after_save.rb +0 -43
- data/lib/sequel/plugins/blacklist_security.rb +9 -8
- data/lib/sequel/plugins/boolean_readers.rb +3 -3
- data/lib/sequel/plugins/boolean_subsets.rb +2 -2
- data/lib/sequel/plugins/caching.rb +5 -5
- data/lib/sequel/plugins/class_table_inheritance.rb +71 -102
- data/lib/sequel/plugins/column_conflicts.rb +2 -2
- data/lib/sequel/plugins/column_select.rb +2 -2
- data/lib/sequel/plugins/composition.rb +15 -24
- data/lib/sequel/plugins/constraint_validations.rb +4 -3
- data/lib/sequel/plugins/csv_serializer.rb +13 -20
- data/lib/sequel/plugins/dataset_associations.rb +2 -2
- data/lib/sequel/plugins/def_dataset_method.rb +5 -5
- data/lib/sequel/plugins/defaults_setter.rb +1 -1
- data/lib/sequel/plugins/delay_add_association.rb +1 -1
- data/lib/sequel/plugins/finder.rb +16 -10
- data/lib/sequel/plugins/force_encoding.rb +1 -7
- data/lib/sequel/plugins/hook_class_methods.rb +4 -106
- data/lib/sequel/plugins/input_transformer.rb +10 -11
- data/lib/sequel/plugins/insert_returning_select.rb +1 -9
- data/lib/sequel/plugins/instance_filters.rb +5 -5
- data/lib/sequel/plugins/instance_hooks.rb +7 -52
- data/lib/sequel/plugins/inverted_subsets.rb +3 -1
- data/lib/sequel/plugins/json_serializer.rb +19 -19
- data/lib/sequel/plugins/lazy_attributes.rb +1 -10
- data/lib/sequel/plugins/list.rb +6 -6
- data/lib/sequel/plugins/many_through_many.rb +11 -8
- data/lib/sequel/plugins/mssql_optimistic_locking.rb +3 -3
- data/lib/sequel/plugins/nested_attributes.rb +18 -31
- data/lib/sequel/plugins/optimistic_locking.rb +3 -3
- data/lib/sequel/plugins/pg_array_associations.rb +8 -2
- data/lib/sequel/plugins/pg_row.rb +2 -11
- data/lib/sequel/plugins/prepared_statements.rb +13 -66
- data/lib/sequel/plugins/prepared_statements_safe.rb +1 -1
- data/lib/sequel/plugins/rcte_tree.rb +7 -7
- data/lib/sequel/plugins/serialization.rb +15 -33
- data/lib/sequel/plugins/serialization_modification_detection.rb +1 -1
- data/lib/sequel/plugins/sharding.rb +2 -8
- data/lib/sequel/plugins/single_table_inheritance.rb +10 -13
- data/lib/sequel/plugins/skip_create_refresh.rb +3 -3
- data/lib/sequel/plugins/static_cache.rb +8 -9
- data/lib/sequel/plugins/string_stripper.rb +3 -3
- data/lib/sequel/plugins/subclasses.rb +1 -1
- data/lib/sequel/plugins/subset_conditions.rb +2 -2
- data/lib/sequel/plugins/table_select.rb +2 -2
- data/lib/sequel/plugins/tactical_eager_loading.rb +4 -4
- data/lib/sequel/plugins/timestamps.rb +6 -7
- data/lib/sequel/plugins/touch.rb +4 -8
- data/lib/sequel/plugins/tree.rb +3 -3
- data/lib/sequel/plugins/typecast_on_load.rb +2 -2
- data/lib/sequel/plugins/unlimited_update.rb +1 -7
- data/lib/sequel/plugins/update_or_create.rb +3 -3
- data/lib/sequel/plugins/update_refresh.rb +3 -3
- data/lib/sequel/plugins/uuid.rb +7 -11
- data/lib/sequel/plugins/validation_class_methods.rb +10 -9
- data/lib/sequel/plugins/validation_contexts.rb +4 -4
- data/lib/sequel/plugins/validation_helpers.rb +26 -25
- data/lib/sequel/plugins/whitelist_security.rb +13 -9
- data/lib/sequel/plugins/xml_serializer.rb +24 -25
- data/lib/sequel/sql.rb +145 -276
- data/lib/sequel/timezones.rb +8 -23
- data/lib/sequel/version.rb +2 -2
- data/lib/sequel.rb +1 -1
- data/spec/adapter_spec.rb +1 -1
- data/spec/adapters/db2_spec.rb +2 -103
- data/spec/adapters/mssql_spec.rb +89 -68
- data/spec/adapters/mysql_spec.rb +111 -478
- data/spec/adapters/oracle_spec.rb +1 -9
- data/spec/adapters/postgres_spec.rb +459 -664
- data/spec/adapters/spec_helper.rb +12 -31
- data/spec/adapters/sqlanywhere_spec.rb +2 -77
- data/spec/adapters/sqlite_spec.rb +8 -146
- data/spec/bin_spec.rb +11 -16
- data/spec/core/connection_pool_spec.rb +173 -74
- data/spec/core/database_spec.rb +96 -244
- data/spec/core/dataset_spec.rb +99 -414
- data/spec/core/deprecated_spec.rb +3 -3
- data/spec/core/expression_filters_spec.rb +37 -144
- data/spec/core/mock_adapter_spec.rb +241 -4
- data/spec/core/object_graph_spec.rb +11 -60
- data/spec/core/placeholder_literalizer_spec.rb +1 -14
- data/spec/core/schema_generator_spec.rb +51 -40
- data/spec/core/schema_spec.rb +88 -77
- data/spec/core/spec_helper.rb +6 -24
- data/spec/core/version_spec.rb +1 -1
- data/spec/core_extensions_spec.rb +7 -83
- data/spec/core_model_spec.rb +2 -2
- data/spec/deprecation_helper.rb +2 -14
- data/spec/extensions/accessed_columns_spec.rb +1 -1
- data/spec/extensions/active_model_spec.rb +3 -3
- data/spec/extensions/after_initialize_spec.rb +1 -1
- data/spec/extensions/arbitrary_servers_spec.rb +2 -2
- data/spec/extensions/association_dependencies_spec.rb +1 -1
- data/spec/extensions/association_pks_spec.rb +30 -92
- data/spec/extensions/association_proxies_spec.rb +1 -1
- data/spec/extensions/auto_literal_strings_spec.rb +1 -12
- data/spec/extensions/auto_validations_spec.rb +1 -1
- data/spec/extensions/blacklist_security_spec.rb +1 -1
- data/spec/extensions/blank_spec.rb +1 -1
- data/spec/extensions/boolean_readers_spec.rb +1 -1
- data/spec/extensions/boolean_subsets_spec.rb +1 -1
- data/spec/extensions/caching_spec.rb +1 -1
- data/spec/extensions/class_table_inheritance_spec.rb +53 -1118
- data/spec/extensions/column_conflicts_spec.rb +1 -1
- data/spec/extensions/column_select_spec.rb +4 -4
- data/spec/extensions/columns_introspection_spec.rb +1 -1
- data/spec/extensions/columns_updated_spec.rb +1 -1
- data/spec/extensions/composition_spec.rb +8 -30
- data/spec/extensions/connection_expiration_spec.rb +3 -3
- data/spec/extensions/connection_validator_spec.rb +3 -3
- data/spec/extensions/constraint_validations_plugin_spec.rb +1 -1
- data/spec/extensions/constraint_validations_spec.rb +1 -1
- data/spec/extensions/core_refinements_spec.rb +1 -3
- data/spec/extensions/csv_serializer_spec.rb +4 -9
- data/spec/extensions/current_datetime_timestamp_spec.rb +1 -1
- data/spec/extensions/dataset_associations_spec.rb +2 -1
- data/spec/extensions/dataset_source_alias_spec.rb +1 -1
- data/spec/extensions/date_arithmetic_spec.rb +3 -3
- data/spec/extensions/def_dataset_method_spec.rb +1 -1
- data/spec/extensions/defaults_setter_spec.rb +2 -2
- data/spec/extensions/delay_add_association_spec.rb +8 -9
- data/spec/extensions/dirty_spec.rb +1 -1
- data/spec/extensions/duplicate_columns_handler_spec.rb +1 -1
- data/spec/extensions/eager_each_spec.rb +2 -2
- data/spec/extensions/empty_array_consider_nulls_spec.rb +1 -1
- data/spec/extensions/error_splitter_spec.rb +1 -1
- data/spec/extensions/error_sql_spec.rb +1 -1
- data/spec/extensions/eval_inspect_spec.rb +1 -1
- data/spec/extensions/finder_spec.rb +1 -1
- data/spec/extensions/force_encoding_spec.rb +2 -5
- data/spec/extensions/freeze_datasets_spec.rb +1 -1
- data/spec/extensions/graph_each_spec.rb +5 -5
- data/spec/extensions/hook_class_methods_spec.rb +1 -194
- data/spec/extensions/identifier_mangling_spec.rb +17 -170
- data/spec/extensions/implicit_subquery_spec.rb +1 -5
- data/spec/extensions/inflector_spec.rb +1 -1
- data/spec/extensions/input_transformer_spec.rb +7 -2
- data/spec/extensions/insert_returning_select_spec.rb +1 -1
- data/spec/extensions/instance_filters_spec.rb +1 -1
- data/spec/extensions/instance_hooks_spec.rb +1 -95
- data/spec/extensions/inverted_subsets_spec.rb +1 -1
- data/spec/extensions/json_serializer_spec.rb +1 -1
- data/spec/extensions/lazy_attributes_spec.rb +1 -7
- data/spec/extensions/list_spec.rb +5 -6
- data/spec/extensions/looser_typecasting_spec.rb +1 -1
- data/spec/extensions/many_through_many_spec.rb +25 -33
- data/spec/extensions/migration_spec.rb +12 -2
- data/spec/extensions/modification_detection_spec.rb +1 -1
- data/spec/extensions/mssql_optimistic_locking_spec.rb +1 -1
- data/spec/extensions/named_timezones_spec.rb +3 -3
- data/spec/extensions/nested_attributes_spec.rb +1 -29
- data/spec/extensions/null_dataset_spec.rb +1 -11
- data/spec/extensions/optimistic_locking_spec.rb +2 -2
- data/spec/extensions/pagination_spec.rb +1 -1
- data/spec/extensions/pg_array_associations_spec.rb +22 -26
- data/spec/extensions/pg_array_ops_spec.rb +1 -1
- data/spec/extensions/pg_array_spec.rb +3 -48
- data/spec/extensions/pg_enum_spec.rb +1 -1
- data/spec/extensions/pg_extended_date_support_spec.rb +122 -0
- data/spec/extensions/pg_hstore_ops_spec.rb +1 -1
- data/spec/extensions/pg_hstore_spec.rb +22 -31
- data/spec/extensions/pg_inet_ops_spec.rb +1 -1
- data/spec/extensions/pg_inet_spec.rb +1 -14
- data/spec/extensions/pg_interval_spec.rb +3 -13
- data/spec/extensions/pg_json_ops_spec.rb +1 -1
- data/spec/extensions/pg_json_spec.rb +1 -13
- data/spec/extensions/pg_loose_count_spec.rb +1 -1
- data/spec/extensions/pg_range_ops_spec.rb +1 -1
- data/spec/extensions/pg_range_spec.rb +3 -88
- data/spec/extensions/pg_row_ops_spec.rb +1 -1
- data/spec/extensions/pg_row_plugin_spec.rb +1 -1
- data/spec/extensions/pg_row_spec.rb +1 -44
- data/spec/extensions/pg_static_cache_updater_spec.rb +1 -1
- data/spec/extensions/prepared_statements_safe_spec.rb +7 -7
- data/spec/extensions/prepared_statements_spec.rb +13 -48
- data/spec/extensions/pretty_table_spec.rb +40 -9
- data/spec/extensions/query_spec.rb +1 -12
- data/spec/extensions/rcte_tree_spec.rb +23 -34
- data/spec/extensions/round_timestamps_spec.rb +1 -5
- data/spec/extensions/s_spec.rb +1 -1
- data/spec/extensions/schema_caching_spec.rb +1 -1
- data/spec/extensions/schema_dumper_spec.rb +43 -32
- data/spec/extensions/select_remove_spec.rb +1 -1
- data/spec/extensions/sequel_4_dataset_methods_spec.rb +1 -1
- data/spec/extensions/serialization_modification_detection_spec.rb +1 -1
- data/spec/extensions/serialization_spec.rb +5 -17
- data/spec/extensions/server_block_spec.rb +1 -1
- data/spec/extensions/server_logging_spec.rb +2 -2
- data/spec/extensions/sharding_spec.rb +1 -1
- data/spec/extensions/shared_caching_spec.rb +1 -28
- data/spec/extensions/single_table_inheritance_spec.rb +2 -5
- data/spec/extensions/singular_table_names_spec.rb +1 -1
- data/spec/extensions/skip_create_refresh_spec.rb +1 -1
- data/spec/extensions/spec_helper.rb +5 -27
- data/spec/extensions/split_array_nil_spec.rb +1 -1
- data/spec/extensions/split_values_spec.rb +1 -1
- data/spec/extensions/sql_comments_spec.rb +1 -1
- data/spec/extensions/sql_expr_spec.rb +1 -1
- data/spec/extensions/static_cache_spec.rb +1 -1
- data/spec/extensions/string_agg_spec.rb +2 -2
- data/spec/extensions/string_date_time_spec.rb +1 -1
- data/spec/extensions/string_stripper_spec.rb +1 -1
- data/spec/extensions/subclasses_spec.rb +1 -1
- data/spec/extensions/subset_conditions_spec.rb +1 -1
- data/spec/extensions/symbol_aref_refinement_spec.rb +1 -1
- data/spec/extensions/symbol_as_refinement_spec.rb +1 -1
- data/spec/extensions/synchronize_sql_spec.rb +124 -0
- data/spec/extensions/table_select_spec.rb +4 -4
- data/spec/extensions/tactical_eager_loading_spec.rb +1 -6
- data/spec/extensions/thread_local_timezones_spec.rb +1 -1
- data/spec/extensions/timestamps_spec.rb +5 -7
- data/spec/extensions/to_dot_spec.rb +1 -1
- data/spec/extensions/touch_spec.rb +1 -1
- data/spec/extensions/tree_spec.rb +1 -1
- data/spec/extensions/typecast_on_load_spec.rb +1 -1
- data/spec/extensions/unlimited_update_spec.rb +1 -1
- data/spec/extensions/update_or_create_spec.rb +12 -16
- data/spec/extensions/update_primary_key_spec.rb +4 -3
- data/spec/extensions/update_refresh_spec.rb +1 -1
- data/spec/extensions/uuid_spec.rb +10 -13
- data/spec/extensions/validate_associated_spec.rb +1 -1
- data/spec/extensions/validation_class_methods_spec.rb +3 -3
- data/spec/extensions/validation_contexts_spec.rb +1 -1
- data/spec/extensions/validation_helpers_spec.rb +10 -44
- data/spec/extensions/whitelist_security_spec.rb +5 -5
- data/spec/extensions/xml_serializer_spec.rb +8 -13
- data/spec/guards_helper.rb +2 -1
- data/spec/integration/associations_test.rb +1 -23
- data/spec/integration/database_test.rb +7 -7
- data/spec/integration/dataset_test.rb +12 -47
- data/spec/integration/eager_loader_test.rb +1 -1
- data/spec/integration/migrator_test.rb +1 -1
- data/spec/integration/model_test.rb +4 -82
- data/spec/integration/plugin_test.rb +7 -23
- data/spec/integration/prepared_statement_test.rb +8 -88
- data/spec/integration/schema_test.rb +10 -10
- data/spec/integration/spec_helper.rb +17 -21
- data/spec/integration/timezone_test.rb +5 -5
- data/spec/integration/transaction_test.rb +3 -55
- data/spec/integration/type_test.rb +9 -9
- data/spec/model/association_reflection_spec.rb +24 -9
- data/spec/model/associations_spec.rb +124 -303
- data/spec/model/base_spec.rb +43 -137
- data/spec/model/class_dataset_methods_spec.rb +2 -20
- data/spec/model/dataset_methods_spec.rb +1 -20
- data/spec/model/eager_loading_spec.rb +48 -17
- data/spec/model/hooks_spec.rb +5 -300
- data/spec/model/inflector_spec.rb +1 -1
- data/spec/model/model_spec.rb +29 -339
- data/spec/model/plugins_spec.rb +2 -16
- data/spec/model/record_spec.rb +33 -129
- data/spec/model/spec_helper.rb +5 -15
- data/spec/model/validations_spec.rb +1 -1
- data/spec/sequel_warning.rb +1 -12
- metadata +19 -65
- data/doc/active_record.rdoc +0 -927
- data/lib/sequel/adapters/cubrid.rb +0 -160
- data/lib/sequel/adapters/do/mysql.rb +0 -69
- data/lib/sequel/adapters/do/postgres.rb +0 -46
- data/lib/sequel/adapters/do/sqlite3.rb +0 -41
- data/lib/sequel/adapters/do.rb +0 -166
- data/lib/sequel/adapters/jdbc/as400.rb +0 -92
- data/lib/sequel/adapters/jdbc/cubrid.rb +0 -65
- data/lib/sequel/adapters/jdbc/firebirdsql.rb +0 -37
- data/lib/sequel/adapters/jdbc/informix-sqli.rb +0 -34
- data/lib/sequel/adapters/jdbc/jdbcprogress.rb +0 -34
- data/lib/sequel/adapters/odbc/progress.rb +0 -12
- data/lib/sequel/adapters/shared/cubrid.rb +0 -245
- data/lib/sequel/adapters/shared/firebird.rb +0 -261
- data/lib/sequel/adapters/shared/informix.rb +0 -63
- data/lib/sequel/adapters/shared/progress.rb +0 -40
- data/lib/sequel/adapters/swift/mysql.rb +0 -50
- data/lib/sequel/adapters/swift/postgres.rb +0 -49
- data/lib/sequel/adapters/swift/sqlite.rb +0 -48
- data/lib/sequel/adapters/swift.rb +0 -169
- data/lib/sequel/adapters/utils/pg_types.rb +0 -4
- data/lib/sequel/dataset/mutation.rb +0 -98
- data/lib/sequel/extensions/_deprecated_identifier_mangling.rb +0 -117
- data/lib/sequel/extensions/empty_array_ignore_nulls.rb +0 -8
- data/lib/sequel/extensions/filter_having.rb +0 -65
- data/lib/sequel/extensions/hash_aliases.rb +0 -51
- data/lib/sequel/extensions/meta_def.rb +0 -37
- data/lib/sequel/extensions/query_literals.rb +0 -86
- data/lib/sequel/extensions/ruby18_symbol_extensions.rb +0 -26
- data/lib/sequel/extensions/sequel_3_dataset_methods.rb +0 -133
- data/lib/sequel/extensions/set_overrides.rb +0 -82
- data/lib/sequel/no_core_ext.rb +0 -4
- data/lib/sequel/plugins/association_autoreloading.rb +0 -11
- data/lib/sequel/plugins/identifier_columns.rb +0 -49
- data/lib/sequel/plugins/many_to_one_pk_lookup.rb +0 -11
- data/lib/sequel/plugins/pg_typecast_on_load.rb +0 -90
- data/lib/sequel/plugins/prepared_statements_associations.rb +0 -137
- data/lib/sequel/plugins/prepared_statements_with_pk.rb +0 -71
- data/lib/sequel/plugins/schema.rb +0 -84
- data/lib/sequel/plugins/scissors.rb +0 -37
- data/spec/core/dataset_mutation_spec.rb +0 -253
- data/spec/extensions/_deprecated_identifier_mangling_spec.rb +0 -314
- data/spec/extensions/before_after_save_spec.rb +0 -40
- data/spec/extensions/filter_having_spec.rb +0 -42
- data/spec/extensions/from_block_spec.rb +0 -21
- data/spec/extensions/hash_aliases_spec.rb +0 -26
- data/spec/extensions/identifier_columns_spec.rb +0 -19
- data/spec/extensions/meta_def_spec.rb +0 -35
- data/spec/extensions/no_auto_literal_strings_spec.rb +0 -69
- data/spec/extensions/pg_typecast_on_load_spec.rb +0 -70
- data/spec/extensions/prepared_statements_associations_spec.rb +0 -212
- data/spec/extensions/prepared_statements_with_pk_spec.rb +0 -40
- data/spec/extensions/query_literals_spec.rb +0 -185
- data/spec/extensions/schema_spec.rb +0 -123
- data/spec/extensions/scissors_spec.rb +0 -27
- data/spec/extensions/sequel_3_dataset_methods_spec.rb +0 -118
- data/spec/extensions/set_overrides_spec.rb +0 -75
|
@@ -1,314 +0,0 @@
|
|
|
1
|
-
require File.join(File.dirname(File.expand_path(__FILE__)), "spec_helper")
|
|
2
|
-
|
|
3
|
-
describe "identifier_mangling extension" do
|
|
4
|
-
after do
|
|
5
|
-
deprecated do
|
|
6
|
-
Sequel.quote_identifiers = false
|
|
7
|
-
Sequel.identifier_input_method = nil
|
|
8
|
-
Sequel.identifier_output_method = nil
|
|
9
|
-
end
|
|
10
|
-
end
|
|
11
|
-
|
|
12
|
-
deprecated "should respect the :quote_identifiers option" do
|
|
13
|
-
db = Sequel::Database.new(:quote_identifiers=>false, :identifier_mangling=>true)
|
|
14
|
-
db.quote_identifiers?.must_equal false
|
|
15
|
-
db = Sequel::Database.new(:quote_identifiers=>true, :identifier_mangling=>true)
|
|
16
|
-
db.quote_identifiers?.must_equal true
|
|
17
|
-
end
|
|
18
|
-
|
|
19
|
-
deprecated "should respect the :quote_identifiers setting" do
|
|
20
|
-
db = Sequel::Database.new(:identifier_mangling=>true)
|
|
21
|
-
db.quote_identifiers?.must_equal false
|
|
22
|
-
db.quote_identifiers = true
|
|
23
|
-
db.quote_identifiers?.must_equal true
|
|
24
|
-
end
|
|
25
|
-
|
|
26
|
-
deprecated "should upcase on input and downcase on output by default" do
|
|
27
|
-
db = Sequel::Database.new(:identifier_mangling=>true)
|
|
28
|
-
db.send(:identifier_input_method_default).must_equal :upcase
|
|
29
|
-
db.send(:identifier_output_method_default).must_equal :downcase
|
|
30
|
-
end
|
|
31
|
-
|
|
32
|
-
deprecated "should respect the :identifier_input_method option" do
|
|
33
|
-
Sequel.identifier_input_method = nil
|
|
34
|
-
Sequel::Database.identifier_input_method.must_equal false
|
|
35
|
-
db = Sequel::Database.new(:identifier_input_method=>nil, :identifier_mangling=>true)
|
|
36
|
-
db.identifier_input_method.must_be_nil
|
|
37
|
-
db.identifier_input_method = :downcase
|
|
38
|
-
db.identifier_input_method.must_equal :downcase
|
|
39
|
-
db = Sequel::Database.new(:identifier_input_method=>:upcase, :identifier_mangling=>true)
|
|
40
|
-
db.identifier_input_method.must_equal :upcase
|
|
41
|
-
db.identifier_input_method = nil
|
|
42
|
-
db.identifier_input_method.must_be_nil
|
|
43
|
-
Sequel.identifier_input_method = :downcase
|
|
44
|
-
Sequel::Database.identifier_input_method.must_equal :downcase
|
|
45
|
-
db = Sequel::Database.new(:identifier_input_method=>nil, :identifier_mangling=>true)
|
|
46
|
-
db.identifier_input_method.must_be_nil
|
|
47
|
-
db.identifier_input_method = :upcase
|
|
48
|
-
db.identifier_input_method.must_equal :upcase
|
|
49
|
-
db = Sequel::Database.new(:identifier_input_method=>:upcase, :identifier_mangling=>true)
|
|
50
|
-
db.identifier_input_method.must_equal :upcase
|
|
51
|
-
db.identifier_input_method = nil
|
|
52
|
-
db.identifier_input_method.must_be_nil
|
|
53
|
-
end
|
|
54
|
-
|
|
55
|
-
deprecated "should respect the :identifier_output_method option" do
|
|
56
|
-
Sequel.identifier_output_method = nil
|
|
57
|
-
Sequel::Database.identifier_output_method.must_equal false
|
|
58
|
-
db = Sequel::Database.new(:identifier_output_method=>nil, :identifier_mangling=>true)
|
|
59
|
-
db.identifier_output_method.must_be_nil
|
|
60
|
-
db.identifier_output_method = :downcase
|
|
61
|
-
db.identifier_output_method.must_equal :downcase
|
|
62
|
-
db = Sequel::Database.new(:identifier_output_method=>:upcase, :identifier_mangling=>true)
|
|
63
|
-
db.identifier_output_method.must_equal :upcase
|
|
64
|
-
db.identifier_output_method = nil
|
|
65
|
-
db.identifier_output_method.must_be_nil
|
|
66
|
-
Sequel.identifier_output_method = :downcase
|
|
67
|
-
Sequel::Database.identifier_output_method.must_equal :downcase
|
|
68
|
-
db = Sequel::Database.new(:identifier_output_method=>nil, :identifier_mangling=>true)
|
|
69
|
-
db.identifier_output_method.must_be_nil
|
|
70
|
-
db.identifier_output_method = :upcase
|
|
71
|
-
db.identifier_output_method.must_equal :upcase
|
|
72
|
-
db = Sequel::Database.new(:identifier_output_method=>:upcase, :identifier_mangling=>true)
|
|
73
|
-
db.identifier_output_method.must_equal :upcase
|
|
74
|
-
db.identifier_output_method = nil
|
|
75
|
-
db.identifier_output_method.must_be_nil
|
|
76
|
-
end
|
|
77
|
-
|
|
78
|
-
deprecated "should use the default Sequel.quote_identifiers value" do
|
|
79
|
-
Sequel.quote_identifiers = true
|
|
80
|
-
Sequel::Database.new(:identifier_mangling=>true).quote_identifiers?.must_equal true
|
|
81
|
-
Sequel.quote_identifiers = false
|
|
82
|
-
Sequel::Database.new(:identifier_mangling=>true).quote_identifiers?.must_equal false
|
|
83
|
-
Sequel::Database.quote_identifiers = true
|
|
84
|
-
Sequel::Database.new(:identifier_mangling=>true).quote_identifiers?.must_equal true
|
|
85
|
-
Sequel::Database.quote_identifiers = false
|
|
86
|
-
Sequel::Database.new(:identifier_mangling=>true).quote_identifiers?.must_equal false
|
|
87
|
-
end
|
|
88
|
-
|
|
89
|
-
deprecated "should use the default Sequel.identifier_input_method value" do
|
|
90
|
-
Sequel.identifier_input_method = :downcase
|
|
91
|
-
Sequel::Database.new(:identifier_mangling=>true).identifier_input_method.must_equal :downcase
|
|
92
|
-
Sequel.identifier_input_method = :upcase
|
|
93
|
-
Sequel::Database.new(:identifier_mangling=>true).identifier_input_method.must_equal :upcase
|
|
94
|
-
Sequel::Database.identifier_input_method = :downcase
|
|
95
|
-
Sequel::Database.new(:identifier_mangling=>true).identifier_input_method.must_equal :downcase
|
|
96
|
-
Sequel::Database.identifier_input_method = :upcase
|
|
97
|
-
Sequel::Database.new(:identifier_mangling=>true).identifier_input_method.must_equal :upcase
|
|
98
|
-
end
|
|
99
|
-
|
|
100
|
-
deprecated "should use the default Sequel.identifier_output_method value" do
|
|
101
|
-
Sequel.identifier_output_method = :downcase
|
|
102
|
-
Sequel::Database.new(:identifier_mangling=>true).identifier_output_method.must_equal :downcase
|
|
103
|
-
Sequel.identifier_output_method = :upcase
|
|
104
|
-
Sequel::Database.new(:identifier_mangling=>true).identifier_output_method.must_equal :upcase
|
|
105
|
-
Sequel::Database.identifier_output_method = :downcase
|
|
106
|
-
Sequel::Database.new(:identifier_mangling=>true).identifier_output_method.must_equal :downcase
|
|
107
|
-
Sequel::Database.identifier_output_method = :upcase
|
|
108
|
-
Sequel::Database.new(:identifier_mangling=>true).identifier_output_method.must_equal :upcase
|
|
109
|
-
end
|
|
110
|
-
|
|
111
|
-
deprecated "should respect the quote_indentifiers_default method if Sequel.quote_identifiers = nil" do
|
|
112
|
-
Sequel.quote_identifiers = nil
|
|
113
|
-
Sequel::Database.new(:identifier_mangling=>true).quote_identifiers?.must_equal true
|
|
114
|
-
x = Class.new(Sequel::Database){def dataset_class_default; Sequel::Dataset end; def quote_identifiers_default; false end}
|
|
115
|
-
x.new(:identifier_mangling=>true).quote_identifiers?.must_equal false
|
|
116
|
-
y = Class.new(Sequel::Database){def dataset_class_default; Sequel::Dataset end; def quote_identifiers_default; true end}
|
|
117
|
-
y.new(:identifier_mangling=>true).quote_identifiers?.must_equal true
|
|
118
|
-
end
|
|
119
|
-
|
|
120
|
-
deprecated "should respect the identifier_input_method_default method if Sequel.identifier_input_method is not called" do
|
|
121
|
-
class Sequel::Database
|
|
122
|
-
@identifier_input_method = nil
|
|
123
|
-
end
|
|
124
|
-
x = Class.new(Sequel::Database){def dataset_class_default; Sequel::Dataset end; def identifier_input_method_default; :downcase end}
|
|
125
|
-
x.new(:identifier_mangling=>true).identifier_input_method.must_equal :downcase
|
|
126
|
-
y = Class.new(Sequel::Database){def dataset_class_default; Sequel::Dataset end; def identifier_input_method_default; :camelize end}
|
|
127
|
-
y.new(:identifier_mangling=>true).identifier_input_method.must_equal :camelize
|
|
128
|
-
end
|
|
129
|
-
|
|
130
|
-
deprecated "should respect the identifier_output_method_default method if Sequel.identifier_output_method is not called" do
|
|
131
|
-
class Sequel::Database
|
|
132
|
-
@identifier_output_method = nil
|
|
133
|
-
end
|
|
134
|
-
x = Class.new(Sequel::Database){def dataset_class_default; Sequel::Dataset end; def identifier_output_method_default; :upcase end}
|
|
135
|
-
x.new(:identifier_mangling=>true).identifier_output_method.must_equal :upcase
|
|
136
|
-
y = Class.new(Sequel::Database){def dataset_class_default; Sequel::Dataset end; def identifier_output_method_default; :underscore end}
|
|
137
|
-
y.new(:identifier_mangling=>true).identifier_output_method.must_equal :underscore
|
|
138
|
-
end
|
|
139
|
-
end
|
|
140
|
-
|
|
141
|
-
describe "Database#input_identifier_meth" do
|
|
142
|
-
deprecated "should be the input_identifer method of a default dataset for this database" do
|
|
143
|
-
db = Sequel::Database.new(:identifier_mangling=>true)
|
|
144
|
-
db.send(:input_identifier_meth).call(:a).must_equal 'a'
|
|
145
|
-
db.identifier_input_method = :upcase
|
|
146
|
-
db.send(:input_identifier_meth).call(:a).must_equal 'A'
|
|
147
|
-
end
|
|
148
|
-
end
|
|
149
|
-
|
|
150
|
-
describe "Database#output_identifier_meth" do
|
|
151
|
-
deprecated "should be the output_identifer method of a default dataset for this database" do
|
|
152
|
-
db = Sequel::Database.new(:identifier_mangling=>true)
|
|
153
|
-
db.send(:output_identifier_meth).call('A').must_equal :A
|
|
154
|
-
db.identifier_output_method = :downcase
|
|
155
|
-
db.send(:output_identifier_meth).call('A').must_equal :a
|
|
156
|
-
end
|
|
157
|
-
end
|
|
158
|
-
|
|
159
|
-
describe "Database#metadata_dataset" do
|
|
160
|
-
deprecated "should be a dataset with the default settings for identifier_mangling" do
|
|
161
|
-
ds = Sequel::Database.new(:identifier_mangling=>true).send(:metadata_dataset)
|
|
162
|
-
ds.literal(:a).must_equal 'A'
|
|
163
|
-
ds.send(:output_identifier, 'A').must_equal :a
|
|
164
|
-
end
|
|
165
|
-
end
|
|
166
|
-
|
|
167
|
-
describe "Dataset" do
|
|
168
|
-
before do
|
|
169
|
-
@dataset = Sequel.mock(:identifier_mangling=>true).dataset
|
|
170
|
-
end
|
|
171
|
-
|
|
172
|
-
deprecated "should get quote_identifiers default from database" do
|
|
173
|
-
db = Sequel::Database.new(:quote_identifiers=>true, :identifier_mangling=>true)
|
|
174
|
-
db[:a].quote_identifiers?.must_equal true
|
|
175
|
-
db = Sequel::Database.new(:quote_identifiers=>false, :identifier_mangling=>true)
|
|
176
|
-
db[:a].quote_identifiers?.must_equal false
|
|
177
|
-
end
|
|
178
|
-
|
|
179
|
-
deprecated "should get identifier_input_method default from database" do
|
|
180
|
-
db = Sequel::Database.new(:identifier_input_method=>:upcase, :identifier_mangling=>true)
|
|
181
|
-
db[:a].identifier_input_method.must_equal :upcase
|
|
182
|
-
db = Sequel::Database.new(:identifier_input_method=>:downcase, :identifier_mangling=>true)
|
|
183
|
-
db[:a].identifier_input_method.must_equal :downcase
|
|
184
|
-
end
|
|
185
|
-
|
|
186
|
-
deprecated "should get identifier_output_method default from database" do
|
|
187
|
-
db = Sequel::Database.new(:identifier_output_method=>:upcase, :identifier_mangling=>true)
|
|
188
|
-
db[:a].identifier_output_method.must_equal :upcase
|
|
189
|
-
db = Sequel::Database.new(:identifier_output_method=>:downcase, :identifier_mangling=>true)
|
|
190
|
-
db[:a].identifier_output_method.must_equal :downcase
|
|
191
|
-
end
|
|
192
|
-
|
|
193
|
-
# SEQUEL5: Remove
|
|
194
|
-
unless Sequel.mock(:identifier_mangling=>true).dataset.frozen?
|
|
195
|
-
deprecated "should have quote_identifiers= method which changes literalization of identifiers" do
|
|
196
|
-
@dataset.quote_identifiers = true
|
|
197
|
-
@dataset.literal(:a).must_equal '"a"'
|
|
198
|
-
@dataset.quote_identifiers = false
|
|
199
|
-
@dataset.literal(:a).must_equal 'a'
|
|
200
|
-
end
|
|
201
|
-
|
|
202
|
-
deprecated "should have identifier_input_method= method which changes literalization of identifiers" do
|
|
203
|
-
@dataset.identifier_input_method = :upcase
|
|
204
|
-
@dataset.literal(:a).must_equal 'A'
|
|
205
|
-
@dataset.identifier_input_method = :downcase
|
|
206
|
-
@dataset.literal(:A).must_equal 'a'
|
|
207
|
-
@dataset.identifier_input_method = :reverse
|
|
208
|
-
@dataset.literal(:at_b).must_equal 'b_ta'
|
|
209
|
-
end
|
|
210
|
-
|
|
211
|
-
deprecated "should have identifier_output_method= method which changes identifiers returned from the database" do
|
|
212
|
-
@dataset.send(:output_identifier, "at_b_C").must_equal :at_b_C
|
|
213
|
-
@dataset.identifier_output_method = :upcase
|
|
214
|
-
@dataset.send(:output_identifier, "at_b_C").must_equal :AT_B_C
|
|
215
|
-
@dataset.identifier_output_method = :downcase
|
|
216
|
-
@dataset.send(:output_identifier, "at_b_C").must_equal :at_b_c
|
|
217
|
-
@dataset.identifier_output_method = :reverse
|
|
218
|
-
@dataset.send(:output_identifier, "at_b_C").must_equal :C_b_ta
|
|
219
|
-
end
|
|
220
|
-
end
|
|
221
|
-
|
|
222
|
-
deprecated "should have with_quote_identifiers method which returns cloned dataset with changed literalization of identifiers" do
|
|
223
|
-
@dataset.with_quote_identifiers(true).literal(:a).must_equal '"a"'
|
|
224
|
-
@dataset.with_quote_identifiers(false).literal(:a).must_equal 'a'
|
|
225
|
-
ds = @dataset.freeze.with_quote_identifiers(false)
|
|
226
|
-
ds.literal(:a).must_equal 'a'
|
|
227
|
-
ds.frozen?.must_equal true
|
|
228
|
-
end
|
|
229
|
-
|
|
230
|
-
deprecated "should have with_identifier_input_method method which returns cloned dataset with changed literalization of identifiers" do
|
|
231
|
-
@dataset.with_identifier_input_method(:upcase).literal(:a).must_equal 'A'
|
|
232
|
-
@dataset.with_identifier_input_method(:downcase).literal(:A).must_equal 'a'
|
|
233
|
-
@dataset.with_identifier_input_method(:reverse).literal(:at_b).must_equal 'b_ta'
|
|
234
|
-
ds = @dataset.freeze.with_identifier_input_method(:reverse)
|
|
235
|
-
ds.frozen?.must_equal true
|
|
236
|
-
ds.literal(:at_b).must_equal 'b_ta'
|
|
237
|
-
end
|
|
238
|
-
|
|
239
|
-
deprecated "should have with_identifier_output_method method which returns cloned dataset with changed identifiers returned from the database" do
|
|
240
|
-
@dataset.send(:output_identifier, "at_b_C").must_equal :at_b_C
|
|
241
|
-
@dataset.with_identifier_output_method(:upcase).send(:output_identifier, "at_b_C").must_equal :AT_B_C
|
|
242
|
-
@dataset.with_identifier_output_method(:downcase).send(:output_identifier, "at_b_C").must_equal :at_b_c
|
|
243
|
-
@dataset.with_identifier_output_method(:reverse).send(:output_identifier, "at_b_C").must_equal :C_b_ta
|
|
244
|
-
ds = @dataset.freeze.with_identifier_output_method(:reverse)
|
|
245
|
-
ds.send(:output_identifier, "at_b_C").must_equal :C_b_ta
|
|
246
|
-
ds.frozen?.must_equal true
|
|
247
|
-
end
|
|
248
|
-
|
|
249
|
-
deprecated "should have output_identifier handle empty identifiers" do
|
|
250
|
-
@dataset.send(:output_identifier, "").must_equal :untitled
|
|
251
|
-
@dataset.with_identifier_output_method(:upcase).send(:output_identifier, "").must_equal :UNTITLED
|
|
252
|
-
@dataset.with_identifier_output_method(:downcase).send(:output_identifier, "").must_equal :untitled
|
|
253
|
-
@dataset.with_identifier_output_method(:reverse).send(:output_identifier, "").must_equal :deltitnu
|
|
254
|
-
end
|
|
255
|
-
end
|
|
256
|
-
|
|
257
|
-
describe "Frozen Datasets" do
|
|
258
|
-
before do
|
|
259
|
-
@ds = Sequel.mock(:identifier_mangling=>true)[:test].freeze
|
|
260
|
-
end
|
|
261
|
-
|
|
262
|
-
deprecated "should raise an error when calling mutation methods" do
|
|
263
|
-
proc{@ds.identifier_input_method = :a}.must_raise RuntimeError
|
|
264
|
-
proc{@ds.identifier_output_method = :a}.must_raise RuntimeError
|
|
265
|
-
proc{@ds.quote_identifiers = false}.must_raise RuntimeError
|
|
266
|
-
end
|
|
267
|
-
end
|
|
268
|
-
|
|
269
|
-
describe "identifier_mangling extension" do
|
|
270
|
-
deprecated "should be able to load dialects based on the database name" do
|
|
271
|
-
begin
|
|
272
|
-
qi = class Sequel::Database; @quote_identifiers; end
|
|
273
|
-
ii = class Sequel::Database; @identifier_input_method; end
|
|
274
|
-
io = class Sequel::Database; @identifier_output_method; end
|
|
275
|
-
Sequel.quote_identifiers = nil
|
|
276
|
-
class Sequel::Database; @identifier_input_method=nil; end
|
|
277
|
-
class Sequel::Database; @identifier_output_method=nil; end
|
|
278
|
-
Sequel.mock(:host=>'access').select(Date.new(2011, 12, 13)).sql.must_equal 'SELECT #2011-12-13#'
|
|
279
|
-
Sequel.mock(:host=>'db2').select(1).sql.must_equal 'SELECT 1 FROM "SYSIBM"."SYSDUMMY1"'
|
|
280
|
-
Sequel.mock(:host=>'mssql')[:a].full_text_search(:b, 'c').sql.must_equal "SELECT * FROM [A] WHERE (CONTAINS ([B], 'c'))"
|
|
281
|
-
Sequel.mock(:host=>'mysql')[:a].full_text_search(:b, 'c').sql.must_equal "SELECT * FROM `a` WHERE (MATCH (`b`) AGAINST ('c'))"
|
|
282
|
-
Sequel.mock(:host=>'oracle')[:a].limit(1).sql.must_equal 'SELECT * FROM (SELECT * FROM "A") "T1" WHERE (ROWNUM <= 1)'
|
|
283
|
-
Sequel.mock(:host=>'postgres')[:a].full_text_search(:b, 'c').sql.must_equal "SELECT * FROM \"a\" WHERE (to_tsvector(CAST('simple' AS regconfig), (COALESCE(\"b\", ''))) @@ to_tsquery(CAST('simple' AS regconfig), 'c'))"
|
|
284
|
-
Sequel.mock(:host=>'sqlanywhere').from(:a).offset(1).sql.must_equal 'SELECT TOP 2147483647 START AT (1 + 1) * FROM "A"'
|
|
285
|
-
Sequel.mock(:host=>'sqlite')[:a___b].sql.must_equal "SELECT * FROM `a` AS 'b'"
|
|
286
|
-
ensure
|
|
287
|
-
Sequel.quote_identifiers = qi
|
|
288
|
-
Sequel::Database.send(:instance_variable_set, :@identifier_input_method, ii)
|
|
289
|
-
Sequel::Database.send(:instance_variable_set, :@identifier_output_method, io)
|
|
290
|
-
end
|
|
291
|
-
end
|
|
292
|
-
end
|
|
293
|
-
|
|
294
|
-
describe Sequel::Model, ".[] optimization" do
|
|
295
|
-
before do
|
|
296
|
-
@db = Sequel.mock(:identifier_mangling=>true, :quote_identifiers=>true)
|
|
297
|
-
def @db.schema(*) [[:id, {:primary_key=>true}]] end
|
|
298
|
-
def @db.supports_schema_parsing?() true end
|
|
299
|
-
@c = Class.new(Sequel::Model(@db))
|
|
300
|
-
@ds = @db.dataset.with_quote_identifiers(true)
|
|
301
|
-
end
|
|
302
|
-
|
|
303
|
-
deprecated "should have simple_pk and simple_table respect dataset's identifier input methods" do
|
|
304
|
-
ds = @db.from(:ab).with_identifier_input_method(:reverse)
|
|
305
|
-
@c.set_dataset ds
|
|
306
|
-
@c.simple_table.must_equal '"ba"'
|
|
307
|
-
@c.set_primary_key :cd
|
|
308
|
-
@c.simple_pk.must_equal '"dc"'
|
|
309
|
-
|
|
310
|
-
@c.set_dataset ds.from(:ef__gh)
|
|
311
|
-
@c.simple_table.must_equal '"fe"."hg"'
|
|
312
|
-
end
|
|
313
|
-
end
|
|
314
|
-
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
require File.join(File.dirname(File.expand_path(__FILE__)), "spec_helper")
|
|
2
|
-
|
|
3
|
-
describe "Sequel::Plugins::BeforeAfterSave" do
|
|
4
|
-
before do
|
|
5
|
-
@db = Sequel.mock(:numrows=>1, :fetch=>{:id=>1, :name=>'b'})
|
|
6
|
-
@c = Class.new(Sequel::Model(@db[:test]))
|
|
7
|
-
@ds = @c.dataset
|
|
8
|
-
@c.columns :id, :name
|
|
9
|
-
@c.plugin :before_after_save
|
|
10
|
-
@c.plugin :instance_hooks
|
|
11
|
-
@o = @c.new
|
|
12
|
-
@db.sqls
|
|
13
|
-
end
|
|
14
|
-
|
|
15
|
-
it "should reset modified flag before calling after hooks" do
|
|
16
|
-
a = []
|
|
17
|
-
@o.after_create_hook{@o.modified?.must_equal false; a << 1}
|
|
18
|
-
@o.after_save_hook{@o.modified?.must_equal false; a << 2}
|
|
19
|
-
|
|
20
|
-
@o.modified!
|
|
21
|
-
@o.save
|
|
22
|
-
a.must_equal [1, 2]
|
|
23
|
-
|
|
24
|
-
@o.after_save_hook{@o.modified?.must_equal false; a << 2}
|
|
25
|
-
@o.after_update_hook{@o.modified?.must_equal false; a << 3}
|
|
26
|
-
a = []
|
|
27
|
-
@o.modified!
|
|
28
|
-
@o.save
|
|
29
|
-
a.must_equal [3, 2]
|
|
30
|
-
end
|
|
31
|
-
|
|
32
|
-
it "should refresh the instance before calling after hooks" do
|
|
33
|
-
a = []
|
|
34
|
-
@o.after_create_hook{@o.values.must_equal(:id=>1, :name=>'b'); a << 1}
|
|
35
|
-
@o.after_save_hook{@o.values.must_equal(:id=>1, :name=>'b'); a << 2}
|
|
36
|
-
|
|
37
|
-
@o.save
|
|
38
|
-
a.must_equal [1, 2]
|
|
39
|
-
end
|
|
40
|
-
end
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
require File.join(File.dirname(File.expand_path(__FILE__)), "spec_helper")
|
|
2
|
-
|
|
3
|
-
describe "filter_having extension" do
|
|
4
|
-
before do
|
|
5
|
-
deprecated do
|
|
6
|
-
@ds = Sequel.mock[:t].extension(:filter_having)
|
|
7
|
-
end
|
|
8
|
-
@dsh = @ds.having(:a)
|
|
9
|
-
end
|
|
10
|
-
|
|
11
|
-
it "should make filter operate on HAVING clause if dataset has a HAVING clause" do
|
|
12
|
-
@dsh.filter(:b).sql.must_equal 'SELECT * FROM t HAVING (a AND b)'
|
|
13
|
-
end
|
|
14
|
-
|
|
15
|
-
it "should make filter operate on WHERE clause if dataset does not have a HAVING clause" do
|
|
16
|
-
@ds.filter(:b).sql.must_equal 'SELECT * FROM t WHERE b'
|
|
17
|
-
end
|
|
18
|
-
|
|
19
|
-
deprecated "should make and operate on HAVING clause if dataset has a HAVING clause" do
|
|
20
|
-
@dsh.and(:b).sql.must_equal 'SELECT * FROM t HAVING (a AND b)'
|
|
21
|
-
end
|
|
22
|
-
|
|
23
|
-
deprecated "should make and operate on WHERE clause if dataset does not have a HAVING clause" do
|
|
24
|
-
@ds.where(:a).and(:b).sql.must_equal 'SELECT * FROM t WHERE (a AND b)'
|
|
25
|
-
end
|
|
26
|
-
|
|
27
|
-
it "should make or operate on HAVING clause if dataset has a HAVING clause" do
|
|
28
|
-
@dsh.or(:b).sql.must_equal 'SELECT * FROM t HAVING (a OR b)'
|
|
29
|
-
end
|
|
30
|
-
|
|
31
|
-
it "should make or operate on WHERE clause if dataset does not have a HAVING clause" do
|
|
32
|
-
@ds.where(:a).or(:b).sql.must_equal 'SELECT * FROM t WHERE (a OR b)'
|
|
33
|
-
end
|
|
34
|
-
|
|
35
|
-
it "should make exclude operate on HAVING clause if dataset has a HAVING clause" do
|
|
36
|
-
@dsh.exclude(:b).sql.must_equal 'SELECT * FROM t HAVING (a AND NOT b)'
|
|
37
|
-
end
|
|
38
|
-
|
|
39
|
-
it "should make exclude operate on WHERE clause if dataset does not have a HAVING clause" do
|
|
40
|
-
@ds.exclude(:b).sql.must_equal 'SELECT * FROM t WHERE NOT b'
|
|
41
|
-
end
|
|
42
|
-
end
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
require File.join(File.dirname(File.expand_path(__FILE__)), "spec_helper")
|
|
2
|
-
|
|
3
|
-
describe "from_block extension" do
|
|
4
|
-
before do
|
|
5
|
-
@db = Sequel.mock
|
|
6
|
-
@db.extension(:from_block)
|
|
7
|
-
end
|
|
8
|
-
|
|
9
|
-
it "should make Database#from blocks apply to FROM" do
|
|
10
|
-
@db.from{f}.sql.must_equal 'SELECT * FROM f'
|
|
11
|
-
@db.from{[f, g(f)]}.sql.must_equal 'SELECT * FROM f, g(f)'
|
|
12
|
-
end
|
|
13
|
-
|
|
14
|
-
it "should handle from blocks with method arguments" do
|
|
15
|
-
@db.from(:f){g(f)}.sql.must_equal 'SELECT * FROM f, g(f)'
|
|
16
|
-
end
|
|
17
|
-
|
|
18
|
-
it "should handle from without block" do
|
|
19
|
-
@db.from(:f).sql.must_equal 'SELECT * FROM f'
|
|
20
|
-
end
|
|
21
|
-
end
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
require File.join(File.dirname(File.expand_path(__FILE__)), "spec_helper")
|
|
2
|
-
|
|
3
|
-
describe "hash_aliases extension" do
|
|
4
|
-
before do
|
|
5
|
-
deprecated do
|
|
6
|
-
@ds = Sequel.mock.dataset.extension(:hash_aliases)
|
|
7
|
-
end
|
|
8
|
-
end
|
|
9
|
-
|
|
10
|
-
it "should make from treat hash arguments as alias specifiers" do
|
|
11
|
-
@ds.from(:a=>:b).sql.must_equal "SELECT * FROM a AS b"
|
|
12
|
-
end
|
|
13
|
-
|
|
14
|
-
it "should not affect other arguments to from" do
|
|
15
|
-
@ds.from(:a, :b).sql.must_equal "SELECT * FROM a, b"
|
|
16
|
-
end
|
|
17
|
-
|
|
18
|
-
it "should make select treat hash arguments as alias specifiers" do
|
|
19
|
-
@ds.select(:a=>:b).sql.must_equal "SELECT a AS b"
|
|
20
|
-
@ds.select{{:a=>:b}}.sql.must_equal "SELECT a AS b"
|
|
21
|
-
end
|
|
22
|
-
|
|
23
|
-
it "should not affect other arguments to select" do
|
|
24
|
-
@ds.select(:a, :b).sql.must_equal "SELECT a, b"
|
|
25
|
-
end
|
|
26
|
-
end
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
require File.join(File.dirname(File.expand_path(__FILE__)), "spec_helper")
|
|
2
|
-
|
|
3
|
-
describe "identifier_columns plugin" do
|
|
4
|
-
before do
|
|
5
|
-
@db = Sequel.mock(:numrows=>1, :fetch=>{:id=>1, :a__b=>2}, :autoid=>1)
|
|
6
|
-
@c = Class.new(Sequel::Model(@db[:test]))
|
|
7
|
-
@ds = @c.dataset
|
|
8
|
-
@c.columns :id, :a__b
|
|
9
|
-
deprecated do
|
|
10
|
-
@c.plugin :identifier_columns
|
|
11
|
-
end
|
|
12
|
-
@db.sqls
|
|
13
|
-
end
|
|
14
|
-
|
|
15
|
-
it "should not use qualification when updating or inserting values" do
|
|
16
|
-
@c.create(:a__b=>2).save
|
|
17
|
-
@db.sqls.must_equal ["INSERT INTO test (a__b) VALUES (2)", "SELECT * FROM test WHERE (id = 1) LIMIT 1", "UPDATE test SET a__b = 2 WHERE (id = 1)"]
|
|
18
|
-
end
|
|
19
|
-
end
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
require File.join(File.dirname(File.expand_path(__FILE__)), "spec_helper")
|
|
2
|
-
|
|
3
|
-
describe "Sequel::Metaprogramming" do
|
|
4
|
-
before do
|
|
5
|
-
deprecated do
|
|
6
|
-
Sequel.extension :meta_def
|
|
7
|
-
end
|
|
8
|
-
end
|
|
9
|
-
after do
|
|
10
|
-
Sequel::Metaprogramming.send(:remove_method, :meta_def)
|
|
11
|
-
end
|
|
12
|
-
|
|
13
|
-
it "should add meta_def method to Database, Dataset, and Model classes and instances" do
|
|
14
|
-
Sequel::Database.meta_def(:foo){1}
|
|
15
|
-
Sequel::Database.foo.must_equal 1
|
|
16
|
-
Sequel::Dataset.meta_def(:foo){2}
|
|
17
|
-
Sequel::Dataset.foo.must_equal 2
|
|
18
|
-
Sequel::Model.meta_def(:foo){3}
|
|
19
|
-
Sequel::Model.foo.must_equal 3
|
|
20
|
-
o = Sequel::Database.new
|
|
21
|
-
o.meta_def(:foo){4}
|
|
22
|
-
o.foo.must_equal 4
|
|
23
|
-
|
|
24
|
-
o = o[:a]
|
|
25
|
-
# SEQUEL5: Remove
|
|
26
|
-
unless o.frozen?
|
|
27
|
-
o.meta_def(:foo){5}
|
|
28
|
-
o.foo.must_equal 5
|
|
29
|
-
end
|
|
30
|
-
|
|
31
|
-
o = Sequel::Model.new
|
|
32
|
-
o.meta_def(:foo){6}
|
|
33
|
-
o.foo.must_equal 6
|
|
34
|
-
end
|
|
35
|
-
end
|
|
@@ -1,69 +0,0 @@
|
|
|
1
|
-
require File.join(File.dirname(File.expand_path(__FILE__)), "spec_helper")
|
|
2
|
-
|
|
3
|
-
describe "no_auto_literal_strings extension" do
|
|
4
|
-
before do
|
|
5
|
-
@ds = Sequel.mock[:t].extension(:no_auto_literal_strings)
|
|
6
|
-
end
|
|
7
|
-
|
|
8
|
-
it "should raise exception for plain strings in filter methods" do
|
|
9
|
-
proc{@ds.where("a")}.must_raise Sequel::Error
|
|
10
|
-
proc{@ds.having("a")}.must_raise Sequel::Error
|
|
11
|
-
proc{@ds.filter("a")}.must_raise Sequel::Error
|
|
12
|
-
proc{@ds.exclude_having("a")}.must_raise Sequel::Error
|
|
13
|
-
deprecated do
|
|
14
|
-
proc{@ds.exclude_where("a")}.must_raise Sequel::Error
|
|
15
|
-
proc{@ds.and("a")}.must_raise Sequel::Error
|
|
16
|
-
end
|
|
17
|
-
proc{@ds.where(:a).or("a")}.must_raise Sequel::Error
|
|
18
|
-
proc{@ds.first("a")}.must_raise Sequel::Error
|
|
19
|
-
proc{@ds.order(:a).last("a")}.must_raise Sequel::Error
|
|
20
|
-
proc{@ds["a"]}.must_raise Sequel::Error
|
|
21
|
-
end
|
|
22
|
-
|
|
23
|
-
it "should raise exception for plain strings arrays in filter methods" do
|
|
24
|
-
proc{@ds.where(["a"])}.must_raise Sequel::Error
|
|
25
|
-
end
|
|
26
|
-
|
|
27
|
-
it "should handle explicit literal strings in filter methods" do
|
|
28
|
-
@ds.where(Sequel.lit("a")).sql.must_equal 'SELECT * FROM t WHERE (a)'
|
|
29
|
-
@ds.having(Sequel.lit("a")).sql.must_equal 'SELECT * FROM t HAVING (a)'
|
|
30
|
-
@ds.filter(Sequel.lit("a")).sql.must_equal 'SELECT * FROM t WHERE (a)'
|
|
31
|
-
@ds.exclude_having(Sequel.lit("a")).sql.must_equal 'SELECT * FROM t HAVING NOT (a)'
|
|
32
|
-
deprecated do
|
|
33
|
-
@ds.exclude_where(Sequel.lit("a")).sql.must_equal 'SELECT * FROM t WHERE NOT (a)'
|
|
34
|
-
@ds.and(Sequel.lit("a")).sql.must_equal 'SELECT * FROM t WHERE (a)'
|
|
35
|
-
end
|
|
36
|
-
@ds.where(:a).or(Sequel.lit("a")).sql.must_equal 'SELECT * FROM t WHERE (a OR (a))'
|
|
37
|
-
@ds.first(Sequel.lit("a"))
|
|
38
|
-
@ds.order(:a).last(Sequel.lit("a"))
|
|
39
|
-
@ds[Sequel.lit("a")]
|
|
40
|
-
@ds.db.sqls.must_equal ["SELECT * FROM t WHERE (a) LIMIT 1",
|
|
41
|
-
"SELECT * FROM t WHERE (a) ORDER BY a DESC LIMIT 1",
|
|
42
|
-
"SELECT * FROM t WHERE (a) LIMIT 1"]
|
|
43
|
-
end
|
|
44
|
-
|
|
45
|
-
deprecated "should handle literal strings in arrays in filter methods" do
|
|
46
|
-
@ds.where([Sequel.lit("a")]).sql.must_equal 'SELECT * FROM t WHERE (a)'
|
|
47
|
-
end
|
|
48
|
-
|
|
49
|
-
it "should handle other objects in filter methods" do
|
|
50
|
-
@ds.where(:a).sql.must_equal 'SELECT * FROM t WHERE a'
|
|
51
|
-
end
|
|
52
|
-
|
|
53
|
-
it "should raise exception for plain strings in update methods" do
|
|
54
|
-
proc{@ds.update("a = a + 1")}.must_raise Sequel::Error
|
|
55
|
-
proc{@ds.update_sql("a = a + 1")}.must_raise Sequel::Error
|
|
56
|
-
end
|
|
57
|
-
|
|
58
|
-
it "should handle explicit literal strings in update methods" do
|
|
59
|
-
@ds.update_sql(Sequel.lit("a = a + 1")).must_equal "UPDATE t SET a = a + 1"
|
|
60
|
-
@ds.update(Sequel.lit("a = a + 1"))
|
|
61
|
-
@ds.db.sqls.must_equal ["UPDATE t SET a = a + 1"]
|
|
62
|
-
end
|
|
63
|
-
|
|
64
|
-
it "should handle other objects in update methods" do
|
|
65
|
-
@ds.update_sql(:a=>:a).must_equal "UPDATE t SET a = a"
|
|
66
|
-
@ds.update(:a=>:a)
|
|
67
|
-
@ds.db.sqls.must_equal ["UPDATE t SET a = a"]
|
|
68
|
-
end
|
|
69
|
-
end
|
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
require File.join(File.dirname(File.expand_path(__FILE__)), "spec_helper")
|
|
2
|
-
|
|
3
|
-
describe Sequel::Model, "PgTypecastOnLoad plugin" do
|
|
4
|
-
before do
|
|
5
|
-
@db = Sequel.mock(:host=>'postgres', :fetch=>{:id=>1, :b=>"t", :y=>"0"}, :columns=>[:id, :b, :y], :numrows=>1)
|
|
6
|
-
def @db.schema(*args)
|
|
7
|
-
[[:id, {}], [:b, {:type=>:boolean, :oid=>16}], [:y, {:type=>:integer, :oid=>20}]]
|
|
8
|
-
end
|
|
9
|
-
@c = Class.new(Sequel::Model(@db[:items]))
|
|
10
|
-
deprecated do
|
|
11
|
-
@c.plugin :pg_typecast_on_load, :b, :y
|
|
12
|
-
end
|
|
13
|
-
end
|
|
14
|
-
|
|
15
|
-
deprecated "should call the database conversion proc for all given columns" do
|
|
16
|
-
@c.first.values.must_equal(:id=>1, :b=>true, :y=>0)
|
|
17
|
-
end
|
|
18
|
-
|
|
19
|
-
deprecated "should call the database conversion proc with value when reloading the object, for all given columns" do
|
|
20
|
-
@c.first.refresh.values.must_equal(:id=>1, :b=>true, :y=>0)
|
|
21
|
-
end
|
|
22
|
-
|
|
23
|
-
deprecated "should not fail if schema oid does not have a related conversion proc" do
|
|
24
|
-
@c.db_schema[:b][:oid] = 0
|
|
25
|
-
@c.first.refresh.values.must_equal(:id=>1, :b=>"t", :y=>0)
|
|
26
|
-
end
|
|
27
|
-
|
|
28
|
-
deprecated "should call the database conversion proc with value when automatically reloading the object on creation via insert_select" do
|
|
29
|
-
@c.dataset = @c.dataset.with_extend{def insert_select(h) insert(h); first end}
|
|
30
|
-
@c.create.values.must_equal(:id=>1, :b=>true, :y=>0)
|
|
31
|
-
end
|
|
32
|
-
|
|
33
|
-
deprecated "should allowing setting columns separately via add_pg_typecast_on_load_columns" do
|
|
34
|
-
@c = Class.new(Sequel::Model(@db[:items]))
|
|
35
|
-
@c.plugin :pg_typecast_on_load
|
|
36
|
-
@c.first.values.must_equal(:id=>1, :b=>"t", :y=>"0")
|
|
37
|
-
@c.add_pg_typecast_on_load_columns :b
|
|
38
|
-
@c.first.values.must_equal(:id=>1, :b=>true, :y=>"0")
|
|
39
|
-
@c.add_pg_typecast_on_load_columns :y
|
|
40
|
-
@c.first.values.must_equal(:id=>1, :b=>true, :y=>0)
|
|
41
|
-
end
|
|
42
|
-
|
|
43
|
-
deprecated "should work with subclasses" do
|
|
44
|
-
@c = Class.new(Sequel::Model(@db[:items]))
|
|
45
|
-
@c.plugin :pg_typecast_on_load
|
|
46
|
-
@c.first.values.must_equal(:id=>1, :b=>"t", :y=>"0")
|
|
47
|
-
|
|
48
|
-
c1 = Class.new(@c)
|
|
49
|
-
@c.add_pg_typecast_on_load_columns :b
|
|
50
|
-
@c.first.values.must_equal(:id=>1, :b=>true, :y=>"0")
|
|
51
|
-
c1.first.values.must_equal(:id=>1, :b=>"t", :y=>"0")
|
|
52
|
-
|
|
53
|
-
c2 = Class.new(@c)
|
|
54
|
-
@c.add_pg_typecast_on_load_columns :y
|
|
55
|
-
@c.first.values.must_equal(:id=>1, :b=>true, :y=>0)
|
|
56
|
-
c2.first.values.must_equal(:id=>1, :b=>true, :y=>"0")
|
|
57
|
-
|
|
58
|
-
c1.add_pg_typecast_on_load_columns :y
|
|
59
|
-
c1.first.values.must_equal(:id=>1, :b=>"t", :y=>0)
|
|
60
|
-
end
|
|
61
|
-
|
|
62
|
-
deprecated "should not mark the object as modified" do
|
|
63
|
-
@c.first.modified?.must_equal false
|
|
64
|
-
end
|
|
65
|
-
|
|
66
|
-
deprecated "should freeze pg_typecast_on_load_columns" do
|
|
67
|
-
@c.freeze
|
|
68
|
-
@c.pg_typecast_on_load_columns.frozen?.must_equal true
|
|
69
|
-
end
|
|
70
|
-
end
|