sequel 4.49.0 → 5.0.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 +70 -0
- data/README.rdoc +195 -136
- data/Rakefile +26 -42
- data/bin/sequel +3 -5
- data/doc/advanced_associations.rdoc +86 -163
- 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/schema_modification.rdoc +63 -60
- data/doc/security.rdoc +97 -88
- data/doc/sharding.rdoc +43 -30
- data/doc/sql.rdoc +53 -65
- data/doc/testing.rdoc +3 -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.rb +1 -1
- data/lib/sequel/adapters/ado.rb +9 -25
- data/lib/sequel/adapters/ado/access.rb +7 -13
- data/lib/sequel/adapters/ado/mssql.rb +2 -9
- data/lib/sequel/adapters/amalgalite.rb +3 -18
- data/lib/sequel/adapters/ibmdb.rb +9 -45
- data/lib/sequel/adapters/jdbc.rb +13 -73
- 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 +4 -25
- data/lib/sequel/adapters/jdbc/hsqldb.rb +1 -26
- 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 +1 -15
- data/lib/sequel/adapters/jdbc/oracle.rb +4 -26
- data/lib/sequel/adapters/jdbc/postgresql.rb +2 -31
- 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/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.rb +0 -19
- 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/oracle.rb +7 -13
- data/lib/sequel/adapters/postgres.rb +13 -57
- 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 +23 -224
- data/lib/sequel/adapters/shared/oracle.rb +13 -41
- data/lib/sequel/adapters/shared/postgres.rb +44 -259
- data/lib/sequel/adapters/shared/sqlanywhere.rb +4 -96
- data/lib/sequel/adapters/shared/sqlite.rb +12 -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 +2 -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.rb +26 -28
- 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/core.rb +42 -101
- data/lib/sequel/database.rb +12 -2
- 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 +23 -55
- data/lib/sequel/database/query.rb +8 -13
- data/lib/sequel/database/schema_generator.rb +89 -64
- data/lib/sequel/database/schema_methods.rb +61 -79
- data/lib/sequel/database/transactions.rb +4 -24
- data/lib/sequel/dataset.rb +18 -10
- data/lib/sequel/dataset/actions.rb +53 -107
- data/lib/sequel/dataset/dataset_module.rb +3 -15
- data/lib/sequel/dataset/features.rb +30 -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 +71 -155
- data/lib/sequel/dataset/sql.rb +30 -225
- 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 +23 -40
- 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_hstore.rb +11 -50
- data/lib/sequel/extensions/pg_hstore_ops.rb +2 -2
- data/lib/sequel/extensions/pg_inet.rb +2 -15
- 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/model.rb +27 -62
- data/lib/sequel/model/associations.rb +128 -131
- data/lib/sequel/model/base.rb +171 -711
- 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/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 -22
- data/lib/sequel/version.rb +2 -2
- 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 +101 -480
- data/spec/adapters/oracle_spec.rb +1 -9
- data/spec/adapters/postgres_spec.rb +312 -565
- 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 +64 -244
- data/spec/core/dataset_spec.rb +81 -415
- data/spec/core/deprecated_spec.rb +3 -3
- data/spec/core/expression_filters_spec.rb +37 -144
- data/spec/core/mock_adapter_spec.rb +176 -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 +74 -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 +4 -59
- 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 +35 -1086
- 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 +1 -7
- 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 +1 -1
- data/spec/extensions/looser_typecasting_spec.rb +1 -1
- data/spec/extensions/many_through_many_spec.rb +1 -1
- data/spec/extensions/migration_spec.rb +2 -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 +1 -1
- data/spec/extensions/pagination_spec.rb +1 -1
- data/spec/extensions/pg_array_associations_spec.rb +4 -1
- 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_hstore_ops_spec.rb +1 -1
- data/spec/extensions/pg_hstore_spec.rb +23 -32
- 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 +1 -1
- data/spec/extensions/prepared_statements_spec.rb +13 -48
- data/spec/extensions/pretty_table_spec.rb +1 -1
- data/spec/extensions/query_spec.rb +1 -12
- data/spec/extensions/rcte_tree_spec.rb +1 -1
- 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 +1 -1
- 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 +2 -14
- 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/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 +3 -3
- 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 +1 -1
- 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 -12
- 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 +3 -3
- 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 +5 -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 +6 -22
- data/spec/integration/prepared_statement_test.rb +8 -88
- data/spec/integration/schema_test.rb +6 -6
- data/spec/integration/spec_helper.rb +13 -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 +18 -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 +17 -11
- data/spec/model/hooks_spec.rb +5 -300
- data/spec/model/inflector_spec.rb +1 -1
- data/spec/model/model_spec.rb +15 -320
- data/spec/model/plugins_spec.rb +2 -16
- data/spec/model/record_spec.rb +29 -121
- data/spec/model/spec_helper.rb +5 -15
- data/spec/model/validations_spec.rb +1 -1
- data/spec/sequel_warning.rb +1 -12
- metadata +8 -64
- data/doc/active_record.rdoc +0 -927
- data/lib/sequel/adapters/cubrid.rb +0 -160
- data/lib/sequel/adapters/do.rb +0 -166
- 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/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.rb +0 -169
- 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/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,4 +1,4 @@
|
|
1
|
-
|
1
|
+
require_relative "spec_helper"
|
2
2
|
|
3
3
|
describe "Sequel::Plugins::ColumnSelect" do
|
4
4
|
def set_cols(*cols)
|
@@ -63,13 +63,13 @@ describe "Sequel::Plugins::ColumnSelect" do
|
|
63
63
|
@Album.dataset.sql.must_equal 'SELECT name, artist FROM albums'
|
64
64
|
end
|
65
65
|
|
66
|
-
|
66
|
+
it "should work with implicit subqueries used for joined datasets" do
|
67
67
|
@Album.dataset = @Album.db.from(:a1, :a2)
|
68
68
|
@Album.plugin :column_select
|
69
|
-
@Album.dataset.sql.must_equal
|
69
|
+
@Album.dataset.sql.must_equal "SELECT a1.id, a1.a, a1.b, a1.c FROM (SELECT * FROM a1, a2) AS a1"
|
70
70
|
|
71
71
|
@Album.dataset = @Album.db.from(:a1).cross_join(:a2)
|
72
|
-
@Album.dataset.sql.must_equal
|
72
|
+
@Album.dataset.sql.must_equal "SELECT a1.id, a1.a, a1.b, a1.c FROM (SELECT * FROM a1 CROSS JOIN a2) AS a1"
|
73
73
|
end
|
74
74
|
|
75
75
|
it "should add a explicit column selection on existing dataset with a subquery" do
|
@@ -1,4 +1,4 @@
|
|
1
|
-
|
1
|
+
require_relative "spec_helper"
|
2
2
|
|
3
3
|
describe "Composition plugin" do
|
4
4
|
before do
|
@@ -9,12 +9,6 @@ describe "Composition plugin" do
|
|
9
9
|
DB.reset
|
10
10
|
end
|
11
11
|
|
12
|
-
deprecated "should allow access to composition_module" do
|
13
|
-
@c.composition_module.must_be_kind_of Module
|
14
|
-
@c.composition_module = v = Module.new
|
15
|
-
@c.composition_module.must_equal v
|
16
|
-
end
|
17
|
-
|
18
12
|
it ".composition should add compositions" do
|
19
13
|
@o.wont_respond_to(:date)
|
20
14
|
@c.composition :date, :mapping=>[:year, :month, :day]
|
@@ -1,4 +1,4 @@
|
|
1
|
-
|
1
|
+
require_relative "spec_helper"
|
2
2
|
|
3
3
|
connection_expiration_specs = shared_description do
|
4
4
|
describe "connection expiration" do
|
@@ -109,13 +109,13 @@ end
|
|
109
109
|
|
110
110
|
describe "Sequel::ConnectionExpiration with threaded pool" do
|
111
111
|
before do
|
112
|
-
@db = Sequel.mock
|
112
|
+
@db = Sequel.mock(:test=>false)
|
113
113
|
end
|
114
114
|
include connection_expiration_specs
|
115
115
|
end
|
116
116
|
describe "Sequel::ConnectionExpiration with sharded threaded pool" do
|
117
117
|
before do
|
118
|
-
@db = Sequel.mock(:servers=>{})
|
118
|
+
@db = Sequel.mock(:test=>false, :servers=>{})
|
119
119
|
end
|
120
120
|
include connection_expiration_specs
|
121
121
|
end
|
@@ -1,4 +1,4 @@
|
|
1
|
-
|
1
|
+
require_relative "spec_helper"
|
2
2
|
|
3
3
|
connection_validator_specs = shared_description do
|
4
4
|
describe "connection validator" do
|
@@ -114,13 +114,13 @@ end
|
|
114
114
|
|
115
115
|
describe "Sequel::ConnectionValidator with threaded pool" do
|
116
116
|
before do
|
117
|
-
@db = Sequel.mock
|
117
|
+
@db = Sequel.mock(:test=>false)
|
118
118
|
end
|
119
119
|
include connection_validator_specs
|
120
120
|
end
|
121
121
|
describe "Sequel::ConnectionValidator with sharded threaded pool" do
|
122
122
|
before do
|
123
|
-
@db = Sequel.mock(:servers=>{})
|
123
|
+
@db = Sequel.mock(:test=>false, :servers=>{})
|
124
124
|
end
|
125
125
|
include connection_validator_specs
|
126
126
|
end
|
@@ -1,4 +1,4 @@
|
|
1
|
-
|
1
|
+
require_relative "spec_helper"
|
2
2
|
|
3
3
|
if (RUBY_VERSION >= '2.0.0' && RUBY_ENGINE == 'ruby') # || (RUBY_VERSION >= '2.3.0' && RUBY_ENGINE == 'jruby')
|
4
4
|
Sequel.extension :core_refinements, :pg_array, :pg_hstore, :pg_row, :pg_range, :pg_row_ops, :pg_range_ops, :pg_array_ops, :pg_hstore_ops, :pg_json, :pg_json_ops
|
@@ -525,6 +525,4 @@ describe "Postgres extensions integration" do
|
|
525
525
|
@db.literal((1..2).pg_range(:int4range)).must_equal "int4range(1,2,'[]')"
|
526
526
|
end
|
527
527
|
end
|
528
|
-
else
|
529
|
-
skip_warn "core_refinements extension: only works on ruby 2.0+"
|
530
528
|
end
|
@@ -1,11 +1,7 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
require csv_lib
|
6
|
-
rescue LoadError => e
|
7
|
-
skip_warn "csv_serializer plugin: can't load #{csv_lib} (#{e.class}: #{e})"
|
8
|
-
else
|
1
|
+
require_relative "spec_helper"
|
2
|
+
|
3
|
+
require 'csv'
|
4
|
+
|
9
5
|
describe "Sequel::Plugins::CsvSerializer" do
|
10
6
|
before do
|
11
7
|
artist = @Artist = Class.new(Sequel::Model(:artists))
|
@@ -185,4 +181,3 @@ describe "Sequel::Plugins::CsvSerializer" do
|
|
185
181
|
@Album.csv_serializer_opts[:only].frozen?.must_equal true
|
186
182
|
end
|
187
183
|
end
|
188
|
-
end
|
@@ -1,9 +1,10 @@
|
|
1
|
-
|
1
|
+
require_relative "spec_helper"
|
2
2
|
|
3
3
|
describe "Sequel::Plugins::DatasetAssociations" do
|
4
4
|
before do
|
5
5
|
@db = Sequel.mock(:host=>'postgres')
|
6
6
|
@db.extend_datasets do
|
7
|
+
def quote_identifiers?; false end
|
7
8
|
def supports_window_functions?; true; end
|
8
9
|
def supports_distinct_on?; true; end
|
9
10
|
end
|
@@ -1,10 +1,10 @@
|
|
1
|
-
|
1
|
+
require_relative "spec_helper"
|
2
2
|
|
3
3
|
asd = begin
|
4
4
|
require 'active_support/duration'
|
5
5
|
true
|
6
|
-
rescue LoadError
|
7
|
-
|
6
|
+
rescue LoadError
|
7
|
+
warn "Skipping some tests of date_arithmetic extension: can't load active_support/duration"
|
8
8
|
false
|
9
9
|
end
|
10
10
|
|
@@ -1,4 +1,4 @@
|
|
1
|
-
|
1
|
+
require_relative "spec_helper"
|
2
2
|
|
3
3
|
describe "Sequel::Plugins::DefaultsSetter" do
|
4
4
|
before do
|
@@ -9,7 +9,7 @@ describe "Sequel::Plugins::DefaultsSetter" do
|
|
9
9
|
@c.instance_variable_set(:@db_schema, {:a=>{}})
|
10
10
|
@c.plugin :defaults_setter
|
11
11
|
@c.columns :a
|
12
|
-
@pr = proc{|x|
|
12
|
+
@pr = proc{|x| db.define_singleton_method(:schema){|*| [[:id, {:primary_key=>true}], [:a, {:ruby_default => x, :primary_key=>false}]]}; c.dataset = c.dataset; c}
|
13
13
|
end
|
14
14
|
after do
|
15
15
|
Sequel.datetime_class = Time
|
@@ -1,4 +1,4 @@
|
|
1
|
-
|
1
|
+
require_relative "spec_helper"
|
2
2
|
|
3
3
|
describe "Sequel::Plugins::DelayAddAssociation" do
|
4
4
|
before do
|
@@ -16,7 +16,7 @@ describe "Sequel::Plugins::DelayAddAssociation" do
|
|
16
16
|
@o.add_c(@c.load(:id=>2, :name=>'b'))
|
17
17
|
@db.sqls.must_equal []
|
18
18
|
@o.save
|
19
|
-
@db.sqls.must_equal ["INSERT INTO cs (name) VALUES ('a')", "
|
19
|
+
@db.sqls.must_equal ["INSERT INTO cs (name) VALUES ('a')", "SELECT * FROM cs WHERE (id = 1) LIMIT 1", "UPDATE cs SET c_id = 1 WHERE (id = 2)"]
|
20
20
|
end
|
21
21
|
|
22
22
|
it "should immediately reflect changes in cached association" do
|
@@ -55,12 +55,11 @@ describe "Sequel::Plugins::DelayAddAssociation" do
|
|
55
55
|
@o.add_c(:name=>'b')
|
56
56
|
@db.sqls.must_equal []
|
57
57
|
@o.save
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
sqls[3].must_equal "SELECT * FROM cs WHERE (id = 1) LIMIT 1"
|
58
|
+
@db.sqls.must_equal [
|
59
|
+
"INSERT INTO cs (name) VALUES ('a')",
|
60
|
+
"SELECT * FROM cs WHERE (id = 1) LIMIT 1",
|
61
|
+
"INSERT INTO cs (name, c_id) VALUES ('b', 1)",
|
62
|
+
"SELECT * FROM cs WHERE (id = 2) LIMIT 1"]
|
64
63
|
end
|
65
64
|
|
66
65
|
it "should work when passing in primary keys" do
|
@@ -69,6 +68,6 @@ describe "Sequel::Plugins::DelayAddAssociation" do
|
|
69
68
|
@o.add_c(2)
|
70
69
|
@db.sqls.must_equal ["SELECT * FROM cs WHERE (id = 2) LIMIT 1"]
|
71
70
|
@o.save
|
72
|
-
@db.sqls.must_equal ["INSERT INTO cs (name) VALUES ('a')", "
|
71
|
+
@db.sqls.must_equal ["INSERT INTO cs (name) VALUES ('a')", "SELECT * FROM cs WHERE (id = 1) LIMIT 1", "UPDATE cs SET c_id = 1 WHERE (id = 2)"]
|
73
72
|
end
|
74
73
|
end
|
@@ -1,4 +1,4 @@
|
|
1
|
-
|
1
|
+
require_relative "spec_helper"
|
2
2
|
|
3
3
|
describe "Sequel::Plugins::EagerEach" do
|
4
4
|
before do
|
@@ -57,6 +57,6 @@ describe "Sequel::Plugins::EagerEach" do
|
|
57
57
|
end
|
58
58
|
|
59
59
|
it "should not attempt to eager load when getting the columns" do
|
60
|
-
|
60
|
+
@c.eager(:children).with_extend{def all; raise; end}.columns!.must_equal [:id, :parent_id]
|
61
61
|
end
|
62
62
|
end
|
@@ -1,5 +1,5 @@
|
|
1
|
-
|
2
|
-
|
1
|
+
require_relative "spec_helper"
|
2
|
+
|
3
3
|
describe "force_encoding plugin" do
|
4
4
|
before do
|
5
5
|
@c = Class.new(Sequel::Model)
|
@@ -124,6 +124,3 @@ describe "force_encoding plugin" do
|
|
124
124
|
o.x.encoding.must_equal @e1
|
125
125
|
end
|
126
126
|
end
|
127
|
-
else
|
128
|
-
skip_warn "force_encoding plugin: only works on ruby 1.9+"
|
129
|
-
end
|
@@ -1,4 +1,4 @@
|
|
1
|
-
|
1
|
+
require_relative "spec_helper"
|
2
2
|
|
3
3
|
describe Sequel::Dataset, " graphing" do
|
4
4
|
before do
|
@@ -76,7 +76,7 @@ describe Sequel::Dataset, " graphing" do
|
|
76
76
|
end
|
77
77
|
|
78
78
|
it "#graph_each should only include the columns selected with #set_graph_aliases and #add_graph_aliases, if called" do
|
79
|
-
@db.fetch = [
|
79
|
+
@db.fetch = [[{:x=>2,:y=>3}], [{:x=>2}], [{:x=>2, :q=>18}]]
|
80
80
|
|
81
81
|
@ds1.graph(:lines, :x=>:id).set_graph_aliases(:x=>[:points, :x], :y=>[:lines, :y]).all.must_equal [{:points=>{:x=>2}, :lines=>{:y=>3}}]
|
82
82
|
ds = @ds1.graph(:lines, :x=>:id).set_graph_aliases(:x=>[:points, :x])
|
@@ -86,17 +86,17 @@ describe Sequel::Dataset, " graphing" do
|
|
86
86
|
end
|
87
87
|
|
88
88
|
it "#graph_each should correctly map values when #set_graph_aliases is used with a third argument for each entry" do
|
89
|
-
@db.fetch = [
|
89
|
+
@db.fetch = [{:x=>2,:y=>3}]
|
90
90
|
@ds1.graph(:lines, :x=>:id).set_graph_aliases(:x=>[:points, :z1, 2], :y=>[:lines, :z2, Sequel.function(:random)]).all.must_equal [{:points=>{:z1=>2}, :lines=>{:z2=>3}}]
|
91
91
|
end
|
92
92
|
|
93
93
|
it "#graph_each should correctly map values when #set_graph_aliases is used with a single argument for each entry" do
|
94
|
-
@db.fetch = [
|
94
|
+
@db.fetch = [{:x=>2,:y=>3}]
|
95
95
|
@ds1.graph(:lines, :x=>:id).set_graph_aliases(:x=>[:points], :y=>[:lines]).all.must_equal [{:points=>{:x=>2}, :lines=>{:y=>3}}]
|
96
96
|
end
|
97
97
|
|
98
98
|
it "#graph_each should correctly map values when #set_graph_aliases is used with a symbol for each entry" do
|
99
|
-
@db.fetch = [
|
99
|
+
@db.fetch = [{:x=>2,:y=>3}]
|
100
100
|
@ds1.graph(:lines, :x=>:id).set_graph_aliases(:x=>:points, :y=>:lines).all.must_equal [{:points=>{:x=>2}, :lines=>{:y=>3}}]
|
101
101
|
end
|
102
102
|
|
@@ -1,4 +1,4 @@
|
|
1
|
-
|
1
|
+
require_relative "spec_helper"
|
2
2
|
|
3
3
|
model_class = proc do |klass, &block|
|
4
4
|
c = Class.new(klass)
|
@@ -140,39 +140,6 @@ describe Sequel::Model, "hook_class_methods plugin" do
|
|
140
140
|
adds.must_equal ['456']
|
141
141
|
end
|
142
142
|
|
143
|
-
deprecated "should stop processing if a before hook returns false" do
|
144
|
-
flag = true
|
145
|
-
adds = []
|
146
|
-
|
147
|
-
a = model_class.call Sequel::Model do
|
148
|
-
before_save{adds << 'cruel'; flag}
|
149
|
-
before_save{adds << 'blah'; flag}
|
150
|
-
end
|
151
|
-
|
152
|
-
a.new.before_save
|
153
|
-
adds.must_equal ['blah', 'cruel']
|
154
|
-
|
155
|
-
# chain should not break on nil
|
156
|
-
adds = []
|
157
|
-
flag = nil
|
158
|
-
a.new.before_save
|
159
|
-
adds.must_equal ['blah', 'cruel']
|
160
|
-
|
161
|
-
adds = []
|
162
|
-
flag = false
|
163
|
-
a.new.before_save
|
164
|
-
adds.must_equal ['blah']
|
165
|
-
|
166
|
-
b = Class.new(a)
|
167
|
-
b.class_eval do
|
168
|
-
before_save{adds << 'mau'}
|
169
|
-
end
|
170
|
-
|
171
|
-
adds = []
|
172
|
-
b.new.before_save
|
173
|
-
adds.must_equal ['mau', 'blah']
|
174
|
-
end
|
175
|
-
|
176
143
|
it "should stop processing if a before hook calls cancel_action" do
|
177
144
|
flag = true
|
178
145
|
adds = []
|
@@ -226,25 +193,12 @@ describe "Model#before_create && Model#after_create" do
|
|
226
193
|
DB.sqls.must_equal ['BLAH before', 'INSERT INTO items (x) VALUES (2)', 'BLAH after']
|
227
194
|
end
|
228
195
|
|
229
|
-
deprecated ".create should cancel the save and raise an error if before_create returns false and raise_on_save_failure is true" do
|
230
|
-
@c.before_create{false}
|
231
|
-
proc{@c.create(:x => 2)}.must_raise(Sequel::HookFailed)
|
232
|
-
DB.sqls.must_equal []
|
233
|
-
end
|
234
|
-
|
235
196
|
it ".create should cancel the save and raise an error if before_create calls cancel_action and raise_on_save_failure is true" do
|
236
197
|
@c.before_create{cancel_action}
|
237
198
|
proc{@c.create(:x => 2)}.must_raise(Sequel::HookFailed)
|
238
199
|
DB.sqls.must_equal []
|
239
200
|
end
|
240
201
|
|
241
|
-
deprecated ".create should cancel the save and return nil if before_create returns false and raise_on_save_failure is false" do
|
242
|
-
@c.before_create{false}
|
243
|
-
@c.raise_on_save_failure = false
|
244
|
-
@c.create(:x => 2).must_be_nil
|
245
|
-
DB.sqls.must_equal []
|
246
|
-
end
|
247
|
-
|
248
202
|
it ".create should cancel the save and return nil if before_create calls cancel_action and raise_on_save_failure is false" do
|
249
203
|
@c.before_create{cancel_action}
|
250
204
|
@c.raise_on_save_failure = false
|
@@ -269,25 +223,12 @@ describe "Model#before_update && Model#after_update" do
|
|
269
223
|
DB.sqls.must_equal ['BLAH before', 'UPDATE items SET x = 123 WHERE (id = 2233)', 'BLAH after']
|
270
224
|
end
|
271
225
|
|
272
|
-
deprecated "#save should cancel the save and raise an error if before_update returns false and raise_on_save_failure is true" do
|
273
|
-
@c.before_update{false}
|
274
|
-
proc{@c.load(:id => 2233).save}.must_raise(Sequel::HookFailed)
|
275
|
-
DB.sqls.must_equal []
|
276
|
-
end
|
277
|
-
|
278
226
|
it "#save should cancel the save and raise an error if before_update calls cancel_action and raise_on_save_failure is true" do
|
279
227
|
@c.before_update{cancel_action}
|
280
228
|
proc{@c.load(:id => 2233).save}.must_raise(Sequel::HookFailed)
|
281
229
|
DB.sqls.must_equal []
|
282
230
|
end
|
283
231
|
|
284
|
-
deprecated "#save should cancel the save and return nil if before_update returns false and raise_on_save_failure is false" do
|
285
|
-
@c.before_update{false}
|
286
|
-
@c.raise_on_save_failure = false
|
287
|
-
@c.load(:id => 2233).save.must_be_nil
|
288
|
-
DB.sqls.must_equal []
|
289
|
-
end
|
290
|
-
|
291
232
|
it "#save should cancel the save and return nil if before_update calls cancel_action and raise_on_save_failure is false" do
|
292
233
|
@c.before_update{cancel_action}
|
293
234
|
@c.raise_on_save_failure = false
|
@@ -320,25 +261,12 @@ describe "Model#before_save && Model#after_save" do
|
|
320
261
|
DB.sqls.must_equal ['BLAH before', 'INSERT INTO items (x) VALUES (2)', 'BLAH after']
|
321
262
|
end
|
322
263
|
|
323
|
-
deprecated "#save should cancel the save and raise an error if before_save returns false and raise_on_save_failure is true" do
|
324
|
-
@c.before_save{false}
|
325
|
-
proc{@c.load(:id => 2233).save}.must_raise(Sequel::HookFailed)
|
326
|
-
DB.sqls.must_equal []
|
327
|
-
end
|
328
|
-
|
329
264
|
it "#save should cancel the save and raise an error if before_save calls cancel_action and raise_on_save_failure is true" do
|
330
265
|
@c.before_save{cancel_action}
|
331
266
|
proc{@c.load(:id => 2233).save}.must_raise(Sequel::HookFailed)
|
332
267
|
DB.sqls.must_equal []
|
333
268
|
end
|
334
269
|
|
335
|
-
deprecated "#save should cancel the save and return nil if before_save returns false and raise_on_save_failure is false" do
|
336
|
-
@c.before_save{false}
|
337
|
-
@c.raise_on_save_failure = false
|
338
|
-
@c.load(:id => 2233).save.must_be_nil
|
339
|
-
DB.sqls.must_equal []
|
340
|
-
end
|
341
|
-
|
342
270
|
it "#save should cancel the save and return nil if before_save calls cancel_action and raise_on_save_failure is false" do
|
343
271
|
@c.before_save{cancel_action}
|
344
272
|
@c.raise_on_save_failure = false
|
@@ -363,25 +291,12 @@ describe "Model#before_destroy && Model#after_destroy" do
|
|
363
291
|
DB.sqls.must_equal ['BLAH before', "DELETE FROM items WHERE id = 2233", 'BLAH after']
|
364
292
|
end
|
365
293
|
|
366
|
-
deprecated "#destroy should cancel the destroy and raise an error if before_destroy returns false and raise_on_save_failure is true" do
|
367
|
-
@c.before_destroy{false}
|
368
|
-
proc{@c.load(:id => 2233).destroy}.must_raise(Sequel::HookFailed)
|
369
|
-
DB.sqls.must_equal []
|
370
|
-
end
|
371
|
-
|
372
294
|
it "#destroy should cancel the destroy and raise an error if before_destroy calls cancel_action and raise_on_save_failure is true" do
|
373
295
|
@c.before_destroy{cancel_action}
|
374
296
|
proc{@c.load(:id => 2233).destroy}.must_raise(Sequel::HookFailed)
|
375
297
|
DB.sqls.must_equal []
|
376
298
|
end
|
377
299
|
|
378
|
-
deprecated "#destroy should cancel the destroy and return nil if before_destroy returns false and raise_on_save_failure is false" do
|
379
|
-
@c.before_destroy{false}
|
380
|
-
@c.raise_on_save_failure = false
|
381
|
-
@c.load(:id => 2233).destroy.must_be_nil
|
382
|
-
DB.sqls.must_equal []
|
383
|
-
end
|
384
|
-
|
385
300
|
it "#destroy should cancel the destroy and return nil if before_destroy calls cancel_action and raise_on_save_failure is false" do
|
386
301
|
@c.before_destroy{cancel_action}
|
387
302
|
@c.raise_on_save_failure = false
|
@@ -430,25 +345,12 @@ describe "Model#before_validation && Model#after_validation" do
|
|
430
345
|
DB.sqls.must_equal ['BLAH before', 'BLAH after']
|
431
346
|
end
|
432
347
|
|
433
|
-
deprecated "#save should cancel the save and raise an error if before_validation returns false and raise_on_save_failure is true" do
|
434
|
-
@c.before_validation{false}
|
435
|
-
proc{@c.load(:id => 2233).save}.must_raise(Sequel::HookFailed)
|
436
|
-
DB.sqls.must_equal []
|
437
|
-
end
|
438
|
-
|
439
348
|
it "#save should cancel the save and raise an error if before_validation calls cancel_action and raise_on_save_failure is true" do
|
440
349
|
@c.before_validation{cancel_action}
|
441
350
|
proc{@c.load(:id => 2233).save}.must_raise(Sequel::HookFailed)
|
442
351
|
DB.sqls.must_equal []
|
443
352
|
end
|
444
353
|
|
445
|
-
deprecated "#save should cancel the save and return nil if before_validation returns false and raise_on_save_failure is false" do
|
446
|
-
@c.before_validation{false}
|
447
|
-
@c.raise_on_save_failure = false
|
448
|
-
@c.load(:id => 2233).save.must_be_nil
|
449
|
-
DB.sqls.must_equal []
|
450
|
-
end
|
451
|
-
|
452
354
|
it "#save should cancel the save and return nil if before_validation calls cancel_action and raise_on_save_failure is false" do
|
453
355
|
@c.before_validation{cancel_action}
|
454
356
|
@c.raise_on_save_failure = false
|
@@ -457,52 +359,6 @@ describe "Model#before_validation && Model#after_validation" do
|
|
457
359
|
end
|
458
360
|
end
|
459
361
|
|
460
|
-
describe "Model transaction hooks" do
|
461
|
-
before do
|
462
|
-
DB.reset
|
463
|
-
|
464
|
-
@c = model_class.call(Sequel::Model(:items)) do
|
465
|
-
columns :x
|
466
|
-
after_save {DB << "AS"}
|
467
|
-
after_destroy {DB << "AD"}
|
468
|
-
self.use_transactions = true
|
469
|
-
end
|
470
|
-
end
|
471
|
-
|
472
|
-
deprecated "should call after_commit or after_rollback depending on whether the transaction commits or rolls back" do
|
473
|
-
@c.after_commit{DB << 'AC'}
|
474
|
-
@c.after_rollback{DB << 'AR'}
|
475
|
-
m = @c.load(:id => 2233, :x=>123)
|
476
|
-
|
477
|
-
m.save
|
478
|
-
DB.sqls.must_equal ['BEGIN', 'UPDATE items SET x = 123 WHERE (id = 2233)', 'AS', 'COMMIT', 'AC']
|
479
|
-
|
480
|
-
@c.db.transaction(:rollback=>:always){m.save}
|
481
|
-
DB.sqls.must_equal ['BEGIN', 'UPDATE items SET x = 123 WHERE (id = 2233)', 'AS', 'ROLLBACK', 'AR']
|
482
|
-
|
483
|
-
@c.db.transaction do
|
484
|
-
m.save
|
485
|
-
DB.sqls.must_equal ['BEGIN', 'UPDATE items SET x = 123 WHERE (id = 2233)', 'AS']
|
486
|
-
end
|
487
|
-
end
|
488
|
-
|
489
|
-
deprecated "should call after_destroy_commit or after_destroy_rollback depending on whether the transaction commits or rolls back" do
|
490
|
-
@c.after_destroy_commit {DB << 'ADC'}
|
491
|
-
@c.after_destroy_rollback{DB << 'ADR'}
|
492
|
-
|
493
|
-
@c.load(:id => 2233).destroy
|
494
|
-
DB.sqls.must_equal ['BEGIN', 'DELETE FROM items WHERE id = 2233', 'AD', 'COMMIT', 'ADC']
|
495
|
-
|
496
|
-
@c.db.transaction(:rollback=>:always){@c.load(:id => 2233).destroy}
|
497
|
-
DB.sqls.must_equal ['BEGIN', 'DELETE FROM items WHERE id = 2233', 'AD', 'ROLLBACK', 'ADR']
|
498
|
-
|
499
|
-
@c.db.transaction do
|
500
|
-
@c.load(:id => 2233).destroy
|
501
|
-
DB.sqls.must_equal ['BEGIN', 'DELETE FROM items WHERE id = 2233', 'AD']
|
502
|
-
end
|
503
|
-
end
|
504
|
-
end
|
505
|
-
|
506
362
|
describe "Model.has_hooks?" do
|
507
363
|
before do
|
508
364
|
@c = model_class.call(Sequel::Model(:items))
|
@@ -522,52 +378,3 @@ describe "Model.has_hooks?" do
|
|
522
378
|
@d.has_hooks?(:before_save).must_equal false
|
523
379
|
end
|
524
380
|
end
|
525
|
-
|
526
|
-
describe "Model#add_hook_type" do
|
527
|
-
before do
|
528
|
-
deprecated do
|
529
|
-
class ::Foo < Sequel::Model(:items)
|
530
|
-
plugin :hook_class_methods
|
531
|
-
add_hook_type :before_bar, :after_bar
|
532
|
-
|
533
|
-
def bar
|
534
|
-
return :b if before_bar == false
|
535
|
-
return :a if after_bar == false
|
536
|
-
true
|
537
|
-
end
|
538
|
-
end
|
539
|
-
@f = Class.new(Foo)
|
540
|
-
end
|
541
|
-
end
|
542
|
-
after do
|
543
|
-
Object.send(:remove_const, :Foo)
|
544
|
-
end
|
545
|
-
|
546
|
-
deprecated "should have before_bar and after_bar class methods" do
|
547
|
-
@f.must_respond_to(:before_bar)
|
548
|
-
@f.must_respond_to(:before_bar)
|
549
|
-
end
|
550
|
-
|
551
|
-
deprecated "should have before_bar and after_bar instance methods" do
|
552
|
-
@f.new.must_respond_to(:before_bar)
|
553
|
-
@f.new.must_respond_to(:before_bar)
|
554
|
-
end
|
555
|
-
|
556
|
-
deprecated "it should return true for bar when before_bar and after_bar hooks are returing true" do
|
557
|
-
a = 1
|
558
|
-
@f.before_bar { a += 1}
|
559
|
-
@f.new.bar.must_equal true
|
560
|
-
a.must_equal 2
|
561
|
-
@f.after_bar { a *= 2}
|
562
|
-
@f.new.bar.must_equal true
|
563
|
-
a.must_equal 6
|
564
|
-
end
|
565
|
-
|
566
|
-
deprecated "it should return nil for bar when before_bar and after_bar hooks are returing false" do
|
567
|
-
@f.new.bar.must_equal true
|
568
|
-
@f.after_bar { false }
|
569
|
-
@f.new.bar.must_equal :a
|
570
|
-
@f.before_bar { false }
|
571
|
-
@f.new.bar.must_equal :b
|
572
|
-
end
|
573
|
-
end
|