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::Uuid" do
|
4
4
|
before do
|
@@ -37,18 +37,16 @@ describe "Sequel::Plugins::Uuid" do
|
|
37
37
|
o.uuid.must_equal @uuid
|
38
38
|
end
|
39
39
|
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
def _save_refresh(*) end
|
47
|
-
end
|
48
|
-
o = c.create
|
49
|
-
c.db.sqls.first.must_match(/INSERT INTO t \(u\) VALUES \('[-0-9a-f]+'\)/)
|
50
|
-
o.u.must_match(/[-0-9a-f]+/)
|
40
|
+
it "should allow specifying the uuid field via the :field option" do
|
41
|
+
c = Class.new(Sequel::Model(:t))
|
42
|
+
c.class_eval do
|
43
|
+
columns :id, :u
|
44
|
+
plugin :uuid, :field=>:u
|
45
|
+
def _save_refresh(*) end
|
51
46
|
end
|
47
|
+
o = c.create
|
48
|
+
c.db.sqls.first.must_match(/INSERT INTO t \(u\) VALUES \('[-0-9a-f]+'\)/)
|
49
|
+
o.u.must_match(/[-0-9a-f]+/)
|
52
50
|
end
|
53
51
|
|
54
52
|
it "should not raise an error if the model doesn't have the uuid column" do
|
@@ -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)
|
@@ -158,7 +158,7 @@ describe Sequel::Model do
|
|
158
158
|
c.must_equal false
|
159
159
|
@c.validates{c = respond_to?(:length_of)}
|
160
160
|
c.must_equal true
|
161
|
-
end
|
161
|
+
end
|
162
162
|
end
|
163
163
|
|
164
164
|
describe Sequel::Model do
|
@@ -197,7 +197,7 @@ describe "Sequel::Plugins::ValidationClassMethods::ClassMethods::Generator" do
|
|
197
197
|
@testit = testit = []
|
198
198
|
|
199
199
|
@c = model_class.call Sequel::Model do
|
200
|
-
|
200
|
+
singleton_class.send(:define_method, :validates_blah) do
|
201
201
|
testit << 1324
|
202
202
|
end
|
203
203
|
end
|
@@ -1,4 +1,4 @@
|
|
1
|
-
|
1
|
+
require_relative "spec_helper"
|
2
2
|
|
3
3
|
describe "Sequel::Plugins::ValidationHelpers" do
|
4
4
|
before do
|
@@ -19,9 +19,7 @@ describe "Sequel::Plugins::ValidationHelpers" do
|
|
19
19
|
@m.value = '1_1'
|
20
20
|
@m.must_be :valid?
|
21
21
|
o = String.new
|
22
|
-
|
23
|
-
undef_method :blank?
|
24
|
-
end
|
22
|
+
o.singleton_class.send(:undef_method, :blank?)
|
25
23
|
@m.value = o
|
26
24
|
@m.must_be :valid?
|
27
25
|
o = Object.new
|
@@ -86,38 +84,6 @@ describe "Sequel::Plugins::ValidationHelpers" do
|
|
86
84
|
@m.must_be :valid?
|
87
85
|
end
|
88
86
|
|
89
|
-
deprecated "should support modifying default options for all models" do
|
90
|
-
@c.set_validations{validates_presence(:value)}
|
91
|
-
@m.wont_be :valid?
|
92
|
-
@m.errors.must_equal(:value=>['is not present'])
|
93
|
-
o = Sequel::Plugins::ValidationHelpers::DEFAULT_OPTIONS[:presence].dup
|
94
|
-
Sequel::Plugins::ValidationHelpers::DEFAULT_OPTIONS[:presence][:message] = lambda{"was not entered"}
|
95
|
-
@m.wont_be :valid?
|
96
|
-
@m.errors.must_equal(:value=>["was not entered"])
|
97
|
-
@m.value = 1
|
98
|
-
@m.must_be :valid?
|
99
|
-
|
100
|
-
@m.values.clear
|
101
|
-
Sequel::Plugins::ValidationHelpers::DEFAULT_OPTIONS[:presence][:allow_missing] = true
|
102
|
-
@m.must_be :valid?
|
103
|
-
@m.value = nil
|
104
|
-
@m.wont_be :valid?
|
105
|
-
@m.errors.must_equal(:value=>["was not entered"])
|
106
|
-
|
107
|
-
c = Class.new(Sequel::Model)
|
108
|
-
c.class_eval do
|
109
|
-
plugin :validation_helpers
|
110
|
-
set_columns([:value])
|
111
|
-
def validate
|
112
|
-
validates_presence(:value)
|
113
|
-
end
|
114
|
-
end
|
115
|
-
m = c.new(:value=>nil)
|
116
|
-
m.wont_be :valid?
|
117
|
-
m.errors.must_equal(:value=>["was not entered"])
|
118
|
-
Sequel::Plugins::ValidationHelpers::DEFAULT_OPTIONS[:presence] = o
|
119
|
-
end
|
120
|
-
|
121
87
|
it "should support modifying default validation options for a particular model" do
|
122
88
|
@c.set_validations{validates_presence(:value)}
|
123
89
|
@m.wont_be :valid?
|
@@ -369,7 +335,7 @@ describe "Sequel::Plugins::ValidationHelpers" do
|
|
369
335
|
it "should support validates_unique with a single attribute" do
|
370
336
|
@c.columns(:id, :username, :password)
|
371
337
|
@c.set_dataset DB[:items]
|
372
|
-
@c.set_validations{validates_unique(:username)}
|
338
|
+
@c.set_validations{validates_unique(:username, :only_if_modified=>false)}
|
373
339
|
@c.dataset = @c.dataset.with_fetch(proc do |sql|
|
374
340
|
case sql
|
375
341
|
when /count.*username = '0records'/
|
@@ -407,7 +373,7 @@ describe "Sequel::Plugins::ValidationHelpers" do
|
|
407
373
|
it "should support validates_unique with multiple attributes" do
|
408
374
|
@c.columns(:id, :username, :password)
|
409
375
|
@c.set_dataset DB[:items]
|
410
|
-
@c.set_validations{validates_unique([:username, :password])}
|
376
|
+
@c.set_validations{validates_unique([:username, :password], :only_if_modified=>false)}
|
411
377
|
@c.dataset = @c.dataset.with_fetch(proc do |sql|
|
412
378
|
case sql
|
413
379
|
when /count.*username = '0records'/
|
@@ -452,7 +418,7 @@ describe "Sequel::Plugins::ValidationHelpers" do
|
|
452
418
|
it "should support validates_unique with a block" do
|
453
419
|
@c.columns(:id, :username, :password)
|
454
420
|
@c.set_dataset DB[:items]
|
455
|
-
@c.set_validations{validates_unique(:username){|ds| ds.filter(:active)}}
|
421
|
+
@c.set_validations{validates_unique(:username, :only_if_modified=>false){|ds| ds.filter(:active)}}
|
456
422
|
@c.dataset = @c.dataset.with_fetch(:v=>0)
|
457
423
|
|
458
424
|
DB.reset
|
@@ -465,7 +431,7 @@ describe "Sequel::Plugins::ValidationHelpers" do
|
|
465
431
|
it "should support validates_unique with :where option" do
|
466
432
|
@c.columns(:id, :username, :password)
|
467
433
|
@c.set_dataset DB[:items]
|
468
|
-
@c.set_validations{validates_unique(:username, :where=>proc{|ds, obj, cols| ds.where(cols.map{|c| [Sequel.function(:lower, c), obj.send(c).downcase]})})}
|
434
|
+
@c.set_validations{validates_unique(:username, :only_if_modified=>false, :where=>proc{|ds, obj, cols| ds.where(cols.map{|c| [Sequel.function(:lower, c), obj.send(c).downcase]})})}
|
469
435
|
@c.dataset = @c.dataset.with_fetch(:v=>0)
|
470
436
|
|
471
437
|
DB.reset
|
@@ -479,7 +445,7 @@ describe "Sequel::Plugins::ValidationHelpers" do
|
|
479
445
|
@c.columns(:id, :username, :password)
|
480
446
|
@c.set_dataset DB[:items]
|
481
447
|
c = @c
|
482
|
-
@c.set_validations{validates_unique(:username, :dataset=>c.where(:a=>[1,2,3]))}
|
448
|
+
@c.set_validations{validates_unique(:username, :only_if_modified=>false, :dataset=>c.where(:a=>[1,2,3]))}
|
483
449
|
@c.dataset = @c.dataset.with_fetch(:v=>0)
|
484
450
|
|
485
451
|
DB.reset
|
@@ -493,7 +459,7 @@ describe "Sequel::Plugins::ValidationHelpers" do
|
|
493
459
|
@c.columns(:id, :username, :password)
|
494
460
|
@c.set_dataset DB[:items]
|
495
461
|
c = @c
|
496
|
-
@c.set_validations{validates_unique(:username, :dataset=>c.cross_join(:a))}
|
462
|
+
@c.set_validations{validates_unique(:username, :only_if_modified=>false, :dataset=>c.cross_join(:a))}
|
497
463
|
@c.dataset = @c.dataset.with_fetch(:v=>0)
|
498
464
|
|
499
465
|
DB.reset
|
@@ -503,10 +469,10 @@ describe "Sequel::Plugins::ValidationHelpers" do
|
|
503
469
|
"SELECT count(*) AS count FROM items CROSS JOIN a WHERE ((username = '0records') AND (items.id != 3)) LIMIT 1"]
|
504
470
|
end
|
505
471
|
|
506
|
-
it "should
|
472
|
+
it "should not have validates_unique check uniqueness for existing records if values haven't changed" do
|
507
473
|
@c.columns(:id, :username, :password)
|
508
474
|
@c.set_dataset DB[:items]
|
509
|
-
@c.set_validations{validates_unique([:username, :password]
|
475
|
+
@c.set_validations{validates_unique([:username, :password])}
|
510
476
|
@c.dataset = @c.dataset.with_fetch(:v=>0)
|
511
477
|
|
512
478
|
DB.reset
|
@@ -1,4 +1,4 @@
|
|
1
|
-
|
1
|
+
require_relative "spec_helper"
|
2
2
|
|
3
3
|
describe Sequel::Model, "#(set|update)_(all|only)" do
|
4
4
|
before do
|
@@ -16,7 +16,7 @@ describe Sequel::Model, "#(set|update)_(all|only)" do
|
|
16
16
|
it "should raise errors if not all hash fields can be set and strict_param_setting is true" do
|
17
17
|
@c.strict_param_setting = true
|
18
18
|
|
19
|
-
proc{@c.new.set_all(:x => 1, :y => 2, :z=>3, :
|
19
|
+
proc{@c.new.set_all(:x => 1, :y => 2, :z=>3, :use_transactions => false)}.must_raise(Sequel::MassAssignmentRestriction)
|
20
20
|
(o = @c.new).set_all(:x => 1, :y => 2, :z=>3)
|
21
21
|
o.values.must_equal(:x => 1, :y => 2, :z=>3)
|
22
22
|
|
@@ -32,9 +32,9 @@ describe Sequel::Model, "#(set|update)_(all|only)" do
|
|
32
32
|
end
|
33
33
|
|
34
34
|
it "#set_all should set not set restricted fields" do
|
35
|
-
@o1.
|
36
|
-
@o1.set_all(:x => 1, :
|
37
|
-
@o1.
|
35
|
+
@o1.use_transactions.must_equal false
|
36
|
+
@o1.set_all(:x => 1, :use_transactions => true)
|
37
|
+
@o1.use_transactions.must_equal false
|
38
38
|
@o1.values.must_equal(:x => 1)
|
39
39
|
end
|
40
40
|
|
@@ -1,9 +1,9 @@
|
|
1
|
-
|
1
|
+
require_relative "spec_helper"
|
2
2
|
|
3
3
|
begin
|
4
4
|
require 'nokogiri'
|
5
|
-
rescue LoadError
|
6
|
-
|
5
|
+
rescue LoadError
|
6
|
+
warn "Skipping test of xml_serializer plugin: can't load nokogiri"
|
7
7
|
else
|
8
8
|
describe "Sequel::Plugins::XmlSerializer" do
|
9
9
|
before do
|
data/spec/guards_helper.rb
CHANGED
@@ -3,7 +3,7 @@ require 'minitest/autorun'
|
|
3
3
|
require 'minitest/hooks/default'
|
4
4
|
require 'minitest/shared_description'
|
5
5
|
|
6
|
-
|
6
|
+
require_relative "deprecation_helper"
|
7
7
|
|
8
8
|
def Sequel.guarded?(*checked)
|
9
9
|
unless ENV['SEQUEL_NO_PENDING']
|
@@ -36,6 +36,7 @@ module Minitest::Spec::DSL
|
|
36
36
|
def cspecify(message, *checked, &block)
|
37
37
|
if pending = Sequel.guarded?(*checked)
|
38
38
|
it(message) do
|
39
|
+
proc{instance_exec(&block)}.must_raise(Exception) if ENV['SEQUEL_CHECK_PENDING']
|
39
40
|
skip "Not yet working on #{Array(pending).map{|x| x.is_a?(Proc) ? :proc : x}.join(', ')}"
|
40
41
|
end
|
41
42
|
else
|
@@ -1,4 +1,4 @@
|
|
1
|
-
|
1
|
+
require_relative "spec_helper"
|
2
2
|
|
3
3
|
OneToOneEagerLimitStrategies = shared_description do
|
4
4
|
it "eager loading one_to_one associations should work correctly" do
|
@@ -1587,28 +1587,6 @@ BasicRegularAndCompositeKeyAssociations = shared_description do
|
|
1587
1587
|
@album.reload.alias_tags.must_equal []
|
1588
1588
|
end
|
1589
1589
|
|
1590
|
-
it "should work correctly with prepared_statements_association plugin" do
|
1591
|
-
deprecated do
|
1592
|
-
@album.update(:artist => @artist)
|
1593
|
-
@album.add_tag(@tag)
|
1594
|
-
|
1595
|
-
@album.reload
|
1596
|
-
@artist.reload
|
1597
|
-
@tag.reload
|
1598
|
-
|
1599
|
-
[Tag, Album, Artist].each{|x| x.plugin :prepared_statements_associations}
|
1600
|
-
@album.artist.must_equal @artist
|
1601
|
-
@artist.first_album.must_equal @album
|
1602
|
-
@artist.albums.must_equal [@album]
|
1603
|
-
@album.tags.must_equal [@tag]
|
1604
|
-
@album.alias_tags.must_equal [@tag]
|
1605
|
-
@tag.albums.must_equal [@album]
|
1606
|
-
unless @no_many_through_many
|
1607
|
-
@album.first_tag.must_equal @tag
|
1608
|
-
end
|
1609
|
-
end
|
1610
|
-
end
|
1611
|
-
|
1612
1590
|
it "should have working dataset associations" do
|
1613
1591
|
album, artist, tag = @pr.call
|
1614
1592
|
|
@@ -1,4 +1,4 @@
|
|
1
|
-
|
1
|
+
require_relative "spec_helper"
|
2
2
|
|
3
3
|
describe Sequel::Database do
|
4
4
|
before do
|
@@ -37,7 +37,7 @@ describe Sequel::Database do
|
|
37
37
|
@db.drop_table?(:test2, :test)
|
38
38
|
end
|
39
39
|
|
40
|
-
cspecify "should raise Sequel::UniqueConstraintViolation when a unique constraint is violated", [:jdbc, :sqlite]
|
40
|
+
cspecify "should raise Sequel::UniqueConstraintViolation when a unique constraint is violated", [:jdbc, :sqlite] do
|
41
41
|
@db.create_table!(:test){String :a, :unique=>true, :null=>false}
|
42
42
|
@db[:test].insert('1')
|
43
43
|
proc{@db[:test].insert('1')}.must_raise(Sequel::UniqueConstraintViolation)
|
@@ -45,7 +45,7 @@ describe Sequel::Database do
|
|
45
45
|
proc{@db[:test].update(:a=>'1')}.must_raise(Sequel::UniqueConstraintViolation)
|
46
46
|
end
|
47
47
|
|
48
|
-
cspecify "should raise Sequel::UniqueConstraintViolation when a unique constraint is violated for composite primary keys", [:jdbc, :sqlite]
|
48
|
+
cspecify "should raise Sequel::UniqueConstraintViolation when a unique constraint is violated for composite primary keys", [:jdbc, :sqlite] do
|
49
49
|
@db.create_table!(:test){String :a; String :b; primary_key [:a, :b]}
|
50
50
|
@db[:test].insert(:a=>'1', :b=>'2')
|
51
51
|
proc{@db[:test].insert(:a=>'1', :b=>'2')}.must_raise(Sequel::UniqueConstraintViolation)
|
@@ -53,14 +53,14 @@ describe Sequel::Database do
|
|
53
53
|
proc{@db[:test].update(:a=>'1', :b=>'2')}.must_raise(Sequel::UniqueConstraintViolation)
|
54
54
|
end
|
55
55
|
|
56
|
-
cspecify "should raise Sequel::CheckConstraintViolation when a check constraint is violated", :mysql, [
|
56
|
+
cspecify "should raise Sequel::CheckConstraintViolation when a check constraint is violated", :mysql, [proc{|db| db.sqlite_version < 30802}, :sqlite] do
|
57
57
|
@db.create_table!(:test){String :a; check Sequel.~(:a=>'1')}
|
58
58
|
proc{@db[:test].insert('1')}.must_raise(Sequel::CheckConstraintViolation)
|
59
59
|
@db[:test].insert('2')
|
60
60
|
proc{@db[:test].insert('1')}.must_raise(Sequel::CheckConstraintViolation)
|
61
61
|
end
|
62
62
|
|
63
|
-
cspecify "should raise Sequel::ForeignKeyConstraintViolation when a foreign key constraint is violated", [:jdbc, :sqlite]
|
63
|
+
cspecify "should raise Sequel::ForeignKeyConstraintViolation when a foreign key constraint is violated", [:jdbc, :sqlite] do
|
64
64
|
@db.create_table!(:test, :engine=>:InnoDB){primary_key :id}
|
65
65
|
@db.create_table!(:test2, :engine=>:InnoDB){foreign_key :tid, :test}
|
66
66
|
proc{@db[:test2].insert(:tid=>1)}.must_raise(Sequel::ForeignKeyConstraintViolation)
|
@@ -70,7 +70,7 @@ describe Sequel::Database do
|
|
70
70
|
proc{@db[:test].where(:id=>1).delete}.must_raise(Sequel::ForeignKeyConstraintViolation)
|
71
71
|
end
|
72
72
|
|
73
|
-
cspecify "should raise Sequel::NotNullConstraintViolation when a not null constraint is violated", [:jdbc, :sqlite]
|
73
|
+
cspecify "should raise Sequel::NotNullConstraintViolation when a not null constraint is violated", [:jdbc, :sqlite] do
|
74
74
|
@db.create_table!(:test){Integer :a, :null=>false}
|
75
75
|
proc{@db[:test].insert(:a=>nil)}.must_raise(Sequel::NotNullConstraintViolation)
|
76
76
|
unless @db.database_type == :mysql
|
@@ -104,7 +104,7 @@ describe Sequel::Database do
|
|
104
104
|
@db.disconnect_connection(conn)
|
105
105
|
end
|
106
106
|
|
107
|
-
|
107
|
+
it "should provide ability to check connections for validity" do
|
108
108
|
conn = @db.synchronize{|c| c}
|
109
109
|
@db.valid_connection?(conn).must_equal true
|
110
110
|
@db.disconnect
|
@@ -1,4 +1,4 @@
|
|
1
|
-
|
1
|
+
require_relative "spec_helper"
|
2
2
|
|
3
3
|
describe "Simple Dataset operations" do
|
4
4
|
before do
|
@@ -49,12 +49,6 @@ describe "Simple Dataset operations" do
|
|
49
49
|
@ds.filter(:id=>2).first[:number].must_equal 20
|
50
50
|
end
|
51
51
|
|
52
|
-
deprecated "should have insert_multiple return primary key values" do
|
53
|
-
@ds.extension(:sequel_3_dataset_methods).insert_multiple([{:number=>20}, {:number=>30}]).must_equal [2, 3]
|
54
|
-
@ds.filter(:id=>2).get(:number).must_equal 20
|
55
|
-
@ds.filter(:id=>3).get(:number).must_equal 30
|
56
|
-
end
|
57
|
-
|
58
52
|
it "should join correctly" do
|
59
53
|
@ds.join(Sequel[:items].as(:b), :id=>:id).select_all(:items).all.must_equal [{:id=>1, :number=>10}]
|
60
54
|
end
|
@@ -108,7 +102,7 @@ describe "Simple Dataset operations" do
|
|
108
102
|
@ds.all.must_equal [{:id=>1, :number=>11}]
|
109
103
|
end
|
110
104
|
|
111
|
-
|
105
|
+
it "should have update return the number of matched rows" do
|
112
106
|
@ds.update(:number=>:number).must_equal 1
|
113
107
|
@ds.filter(:id=>1).update(:number=>:number).must_equal 1
|
114
108
|
@ds.filter(:id=>2).update(:number=>:number).must_equal 0
|
@@ -171,7 +165,7 @@ describe "Simple Dataset operations" do
|
|
171
165
|
@ds.all.must_equal [{:id=>1, :number=>10}]
|
172
166
|
end
|
173
167
|
|
174
|
-
|
168
|
+
it "should skip locked rows correctly" do
|
175
169
|
@ds.insert(:number=>10)
|
176
170
|
q1 = Queue.new
|
177
171
|
q2 = Queue.new
|
@@ -927,13 +921,13 @@ describe Sequel::SQL::Constants do
|
|
927
921
|
(Time.now - @c[@ds.get(:t)]).must_be_close_to 0, 60
|
928
922
|
end
|
929
923
|
|
930
|
-
cspecify "should have working CURRENT_TIMESTAMP", [:jdbc, :sqlite]
|
924
|
+
cspecify "should have working CURRENT_TIMESTAMP", [:jdbc, :sqlite] do
|
931
925
|
@db.create_table!(:constants){DateTime :ts}
|
932
926
|
@ds.insert(:ts=>Sequel::CURRENT_TIMESTAMP)
|
933
927
|
(Time.now - @c[@ds.get(:ts)]).must_be_close_to 0, 60
|
934
928
|
end
|
935
929
|
|
936
|
-
cspecify "should have working CURRENT_TIMESTAMP when used as a column default", [:jdbc, :sqlite]
|
930
|
+
cspecify "should have working CURRENT_TIMESTAMP when used as a column default", [:jdbc, :sqlite] do
|
937
931
|
@db.create_table!(:constants){DateTime :ts, :default=>Sequel::CURRENT_TIMESTAMP}
|
938
932
|
@ds.insert
|
939
933
|
(Time.now - @c[@ds.get(:ts)]).must_be_close_to 0, 60
|
@@ -1055,12 +1049,6 @@ describe "Sequel::Dataset convenience methods" do
|
|
1055
1049
|
@db.drop_table?(:a)
|
1056
1050
|
end
|
1057
1051
|
|
1058
|
-
deprecated "#[]= should update matching rows" do
|
1059
|
-
@ds.insert(20, 10)
|
1060
|
-
@ds.extension(:sequel_3_dataset_methods)[:a=>20] = {:b=>30}
|
1061
|
-
@ds.all.must_equal [{:a=>20, :b=>30}]
|
1062
|
-
end
|
1063
|
-
|
1064
1052
|
it "#empty? should return whether the dataset returns no rows" do
|
1065
1053
|
@ds.empty?.must_equal true
|
1066
1054
|
@ds.insert(20, 10)
|
@@ -1751,36 +1739,6 @@ describe "Dataset identifier methods" do
|
|
1751
1739
|
end
|
1752
1740
|
end if IDENTIFIER_MANGLING
|
1753
1741
|
|
1754
|
-
describe "Dataset defaults and overrides" do
|
1755
|
-
before(:all) do
|
1756
|
-
@db = DB
|
1757
|
-
@db.create_table!(:a){Integer :a}
|
1758
|
-
deprecated do
|
1759
|
-
@ds = @db[:a].order(:a).extension(:set_overrides)
|
1760
|
-
end
|
1761
|
-
end
|
1762
|
-
before do
|
1763
|
-
@ds.delete
|
1764
|
-
end
|
1765
|
-
after(:all) do
|
1766
|
-
@db.drop_table?(:a)
|
1767
|
-
end
|
1768
|
-
|
1769
|
-
it "#set_defaults should set defaults that can be overridden" do
|
1770
|
-
@ds = @ds.set_defaults(:a=>10)
|
1771
|
-
@ds.insert
|
1772
|
-
@ds.insert(:a=>20)
|
1773
|
-
@ds.all.must_equal [{:a=>10}, {:a=>20}]
|
1774
|
-
end
|
1775
|
-
|
1776
|
-
it "#set_overrides should set defaults that cannot be overridden" do
|
1777
|
-
@ds = @ds.set_overrides(:a=>10)
|
1778
|
-
@ds.insert
|
1779
|
-
@ds.insert(:a=>20)
|
1780
|
-
@ds.all.must_equal [{:a=>10}, {:a=>10}]
|
1781
|
-
end
|
1782
|
-
end
|
1783
|
-
|
1784
1742
|
if DB.dataset.supports_modifying_joins?
|
1785
1743
|
describe "Modifying joined datasets" do
|
1786
1744
|
before do
|