sequel 5.29.0 → 5.30.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 +8 -1922
- data/doc/release_notes/5.30.0.txt +20 -0
- data/lib/sequel/adapters/shared/sqlite.rb +7 -1
- data/lib/sequel/database/transactions.rb +5 -9
- data/lib/sequel/version.rb +1 -1
- metadata +4 -368
- data/Rakefile +0 -151
- data/doc/release_notes/4.0.0.txt +0 -262
- data/doc/release_notes/4.1.0.txt +0 -85
- data/doc/release_notes/4.10.0.txt +0 -226
- data/doc/release_notes/4.11.0.txt +0 -147
- data/doc/release_notes/4.12.0.txt +0 -105
- data/doc/release_notes/4.13.0.txt +0 -169
- data/doc/release_notes/4.14.0.txt +0 -68
- data/doc/release_notes/4.15.0.txt +0 -56
- data/doc/release_notes/4.16.0.txt +0 -36
- data/doc/release_notes/4.17.0.txt +0 -38
- data/doc/release_notes/4.18.0.txt +0 -36
- data/doc/release_notes/4.19.0.txt +0 -45
- data/doc/release_notes/4.2.0.txt +0 -129
- data/doc/release_notes/4.20.0.txt +0 -79
- data/doc/release_notes/4.21.0.txt +0 -94
- data/doc/release_notes/4.22.0.txt +0 -72
- data/doc/release_notes/4.23.0.txt +0 -65
- data/doc/release_notes/4.24.0.txt +0 -99
- data/doc/release_notes/4.25.0.txt +0 -181
- data/doc/release_notes/4.26.0.txt +0 -44
- data/doc/release_notes/4.27.0.txt +0 -78
- data/doc/release_notes/4.28.0.txt +0 -57
- data/doc/release_notes/4.29.0.txt +0 -41
- data/doc/release_notes/4.3.0.txt +0 -40
- data/doc/release_notes/4.30.0.txt +0 -37
- data/doc/release_notes/4.31.0.txt +0 -57
- data/doc/release_notes/4.32.0.txt +0 -132
- data/doc/release_notes/4.33.0.txt +0 -88
- data/doc/release_notes/4.34.0.txt +0 -86
- data/doc/release_notes/4.35.0.txt +0 -130
- data/doc/release_notes/4.36.0.txt +0 -116
- data/doc/release_notes/4.37.0.txt +0 -50
- data/doc/release_notes/4.38.0.txt +0 -67
- data/doc/release_notes/4.39.0.txt +0 -127
- data/doc/release_notes/4.4.0.txt +0 -92
- data/doc/release_notes/4.40.0.txt +0 -179
- data/doc/release_notes/4.41.0.txt +0 -77
- data/doc/release_notes/4.42.0.txt +0 -221
- data/doc/release_notes/4.43.0.txt +0 -87
- data/doc/release_notes/4.44.0.txt +0 -125
- data/doc/release_notes/4.45.0.txt +0 -370
- data/doc/release_notes/4.46.0.txt +0 -404
- data/doc/release_notes/4.47.0.txt +0 -56
- data/doc/release_notes/4.48.0.txt +0 -293
- data/doc/release_notes/4.49.0.txt +0 -222
- data/doc/release_notes/4.5.0.txt +0 -34
- data/doc/release_notes/4.6.0.txt +0 -30
- data/doc/release_notes/4.7.0.txt +0 -103
- data/doc/release_notes/4.8.0.txt +0 -175
- data/doc/release_notes/4.9.0.txt +0 -190
- data/spec/adapter_spec.rb +0 -4
- data/spec/adapters/db2_spec.rb +0 -170
- data/spec/adapters/mssql_spec.rb +0 -828
- data/spec/adapters/mysql_spec.rb +0 -1060
- data/spec/adapters/oracle_spec.rb +0 -371
- data/spec/adapters/postgres_spec.rb +0 -4476
- data/spec/adapters/spec_helper.rb +0 -44
- data/spec/adapters/sqlanywhere_spec.rb +0 -97
- data/spec/adapters/sqlite_spec.rb +0 -652
- data/spec/bin_spec.rb +0 -278
- data/spec/core/connection_pool_spec.rb +0 -1250
- data/spec/core/database_spec.rb +0 -2915
- data/spec/core/dataset_spec.rb +0 -5544
- data/spec/core/deprecated_spec.rb +0 -70
- data/spec/core/expression_filters_spec.rb +0 -1498
- data/spec/core/mock_adapter_spec.rb +0 -722
- data/spec/core/object_graph_spec.rb +0 -336
- data/spec/core/placeholder_literalizer_spec.rb +0 -166
- data/spec/core/schema_generator_spec.rb +0 -214
- data/spec/core/schema_spec.rb +0 -1844
- data/spec/core/spec_helper.rb +0 -24
- data/spec/core/version_spec.rb +0 -14
- data/spec/core_extensions_spec.rb +0 -763
- data/spec/core_model_spec.rb +0 -2
- data/spec/core_spec.rb +0 -1
- data/spec/deprecation_helper.rb +0 -30
- data/spec/extensions/accessed_columns_spec.rb +0 -51
- data/spec/extensions/active_model_spec.rb +0 -99
- data/spec/extensions/after_initialize_spec.rb +0 -28
- data/spec/extensions/any_not_empty_spec.rb +0 -23
- data/spec/extensions/arbitrary_servers_spec.rb +0 -109
- data/spec/extensions/association_dependencies_spec.rb +0 -125
- data/spec/extensions/association_multi_add_remove_spec.rb +0 -1041
- data/spec/extensions/association_pks_spec.rb +0 -423
- data/spec/extensions/association_proxies_spec.rb +0 -100
- data/spec/extensions/auto_literal_strings_spec.rb +0 -205
- data/spec/extensions/auto_validations_spec.rb +0 -229
- data/spec/extensions/blacklist_security_spec.rb +0 -95
- data/spec/extensions/blank_spec.rb +0 -69
- data/spec/extensions/boolean_readers_spec.rb +0 -93
- data/spec/extensions/boolean_subsets_spec.rb +0 -47
- data/spec/extensions/caching_spec.rb +0 -273
- data/spec/extensions/caller_logging_spec.rb +0 -52
- data/spec/extensions/class_table_inheritance_spec.rb +0 -750
- data/spec/extensions/column_conflicts_spec.rb +0 -75
- data/spec/extensions/column_select_spec.rb +0 -129
- data/spec/extensions/columns_introspection_spec.rb +0 -90
- data/spec/extensions/columns_updated_spec.rb +0 -35
- data/spec/extensions/composition_spec.rb +0 -248
- data/spec/extensions/connection_expiration_spec.rb +0 -151
- data/spec/extensions/connection_validator_spec.rb +0 -144
- data/spec/extensions/constant_sql_override_spec.rb +0 -24
- data/spec/extensions/constraint_validations_plugin_spec.rb +0 -300
- data/spec/extensions/constraint_validations_spec.rb +0 -439
- data/spec/extensions/core_refinements_spec.rb +0 -528
- data/spec/extensions/csv_serializer_spec.rb +0 -183
- data/spec/extensions/current_datetime_timestamp_spec.rb +0 -27
- data/spec/extensions/dataset_associations_spec.rb +0 -365
- data/spec/extensions/dataset_source_alias_spec.rb +0 -51
- data/spec/extensions/date_arithmetic_spec.rb +0 -181
- data/spec/extensions/datetime_parse_to_time_spec.rb +0 -169
- data/spec/extensions/def_dataset_method_spec.rb +0 -100
- data/spec/extensions/defaults_setter_spec.rb +0 -150
- data/spec/extensions/delay_add_association_spec.rb +0 -73
- data/spec/extensions/dirty_spec.rb +0 -222
- data/spec/extensions/duplicate_columns_handler_spec.rb +0 -104
- data/spec/extensions/eager_each_spec.rb +0 -62
- data/spec/extensions/eager_graph_eager_spec.rb +0 -100
- data/spec/extensions/empty_array_consider_nulls_spec.rb +0 -24
- data/spec/extensions/empty_failure_backtraces_spec.rb +0 -60
- data/spec/extensions/error_splitter_spec.rb +0 -18
- data/spec/extensions/error_sql_spec.rb +0 -20
- data/spec/extensions/escaped_like_spec.rb +0 -40
- data/spec/extensions/eval_inspect_spec.rb +0 -81
- data/spec/extensions/exclude_or_null_spec.rb +0 -15
- data/spec/extensions/finder_spec.rb +0 -260
- data/spec/extensions/force_encoding_spec.rb +0 -126
- data/spec/extensions/freeze_datasets_spec.rb +0 -31
- data/spec/extensions/graph_each_spec.rb +0 -113
- data/spec/extensions/hook_class_methods_spec.rb +0 -402
- data/spec/extensions/identifier_mangling_spec.rb +0 -201
- data/spec/extensions/implicit_subquery_spec.rb +0 -58
- data/spec/extensions/index_caching_spec.rb +0 -66
- data/spec/extensions/inflector_spec.rb +0 -183
- data/spec/extensions/input_transformer_spec.rb +0 -69
- data/spec/extensions/insert_conflict_spec.rb +0 -103
- data/spec/extensions/insert_returning_select_spec.rb +0 -72
- data/spec/extensions/instance_filters_spec.rb +0 -79
- data/spec/extensions/instance_hooks_spec.rb +0 -246
- data/spec/extensions/integer64_spec.rb +0 -22
- data/spec/extensions/inverted_subsets_spec.rb +0 -33
- data/spec/extensions/json_serializer_spec.rb +0 -346
- data/spec/extensions/lazy_attributes_spec.rb +0 -183
- data/spec/extensions/list_spec.rb +0 -291
- data/spec/extensions/looser_typecasting_spec.rb +0 -43
- data/spec/extensions/many_through_many_spec.rb +0 -2177
- data/spec/extensions/migration_spec.rb +0 -864
- data/spec/extensions/modification_detection_spec.rb +0 -93
- data/spec/extensions/mssql_optimistic_locking_spec.rb +0 -92
- data/spec/extensions/named_timezones_spec.rb +0 -218
- data/spec/extensions/nested_attributes_spec.rb +0 -815
- data/spec/extensions/null_dataset_spec.rb +0 -85
- data/spec/extensions/optimistic_locking_spec.rb +0 -127
- data/spec/extensions/pagination_spec.rb +0 -116
- data/spec/extensions/pg_array_associations_spec.rb +0 -802
- data/spec/extensions/pg_array_ops_spec.rb +0 -144
- data/spec/extensions/pg_array_spec.rb +0 -398
- data/spec/extensions/pg_auto_constraint_validations_spec.rb +0 -209
- data/spec/extensions/pg_enum_spec.rb +0 -118
- data/spec/extensions/pg_extended_date_support_spec.rb +0 -126
- data/spec/extensions/pg_hstore_ops_spec.rb +0 -238
- data/spec/extensions/pg_hstore_spec.rb +0 -219
- data/spec/extensions/pg_inet_ops_spec.rb +0 -102
- data/spec/extensions/pg_inet_spec.rb +0 -72
- data/spec/extensions/pg_interval_spec.rb +0 -103
- data/spec/extensions/pg_json_ops_spec.rb +0 -356
- data/spec/extensions/pg_json_spec.rb +0 -451
- data/spec/extensions/pg_loose_count_spec.rb +0 -23
- data/spec/extensions/pg_range_ops_spec.rb +0 -60
- data/spec/extensions/pg_range_spec.rb +0 -600
- data/spec/extensions/pg_row_ops_spec.rb +0 -61
- data/spec/extensions/pg_row_plugin_spec.rb +0 -60
- data/spec/extensions/pg_row_spec.rb +0 -363
- data/spec/extensions/pg_static_cache_updater_spec.rb +0 -93
- data/spec/extensions/pg_timestamptz_spec.rb +0 -17
- data/spec/extensions/prepared_statements_safe_spec.rb +0 -66
- data/spec/extensions/prepared_statements_spec.rb +0 -177
- data/spec/extensions/pretty_table_spec.rb +0 -123
- data/spec/extensions/query_spec.rb +0 -94
- data/spec/extensions/rcte_tree_spec.rb +0 -387
- data/spec/extensions/round_timestamps_spec.rb +0 -39
- data/spec/extensions/s_spec.rb +0 -60
- data/spec/extensions/schema_caching_spec.rb +0 -64
- data/spec/extensions/schema_dumper_spec.rb +0 -870
- data/spec/extensions/select_remove_spec.rb +0 -38
- data/spec/extensions/sequel_4_dataset_methods_spec.rb +0 -121
- data/spec/extensions/serialization_modification_detection_spec.rb +0 -98
- data/spec/extensions/serialization_spec.rb +0 -365
- data/spec/extensions/server_block_spec.rb +0 -135
- data/spec/extensions/server_logging_spec.rb +0 -45
- data/spec/extensions/sharding_spec.rb +0 -197
- data/spec/extensions/shared_caching_spec.rb +0 -151
- data/spec/extensions/single_table_inheritance_spec.rb +0 -347
- data/spec/extensions/singular_table_names_spec.rb +0 -22
- data/spec/extensions/skip_create_refresh_spec.rb +0 -18
- data/spec/extensions/spec_helper.rb +0 -70
- data/spec/extensions/split_array_nil_spec.rb +0 -24
- data/spec/extensions/split_values_spec.rb +0 -57
- data/spec/extensions/sql_comments_spec.rb +0 -33
- data/spec/extensions/sql_expr_spec.rb +0 -59
- data/spec/extensions/static_cache_cache_spec.rb +0 -35
- data/spec/extensions/static_cache_spec.rb +0 -471
- data/spec/extensions/string_agg_spec.rb +0 -90
- data/spec/extensions/string_date_time_spec.rb +0 -95
- data/spec/extensions/string_stripper_spec.rb +0 -68
- data/spec/extensions/subclasses_spec.rb +0 -79
- data/spec/extensions/subset_conditions_spec.rb +0 -38
- data/spec/extensions/symbol_aref_refinement_spec.rb +0 -28
- data/spec/extensions/symbol_as_refinement_spec.rb +0 -21
- data/spec/extensions/synchronize_sql_spec.rb +0 -124
- data/spec/extensions/table_select_spec.rb +0 -83
- data/spec/extensions/tactical_eager_loading_spec.rb +0 -402
- data/spec/extensions/thread_local_timezones_spec.rb +0 -67
- data/spec/extensions/throw_failures_spec.rb +0 -74
- data/spec/extensions/timestamps_spec.rb +0 -209
- data/spec/extensions/to_dot_spec.rb +0 -153
- data/spec/extensions/touch_spec.rb +0 -226
- data/spec/extensions/tree_spec.rb +0 -334
- data/spec/extensions/typecast_on_load_spec.rb +0 -86
- data/spec/extensions/unlimited_update_spec.rb +0 -21
- data/spec/extensions/update_or_create_spec.rb +0 -83
- data/spec/extensions/update_primary_key_spec.rb +0 -105
- data/spec/extensions/update_refresh_spec.rb +0 -59
- data/spec/extensions/uuid_spec.rb +0 -101
- data/spec/extensions/validate_associated_spec.rb +0 -52
- data/spec/extensions/validation_class_methods_spec.rb +0 -1040
- data/spec/extensions/validation_contexts_spec.rb +0 -31
- data/spec/extensions/validation_helpers_spec.rb +0 -525
- data/spec/extensions/whitelist_security_spec.rb +0 -157
- data/spec/extensions/xml_serializer_spec.rb +0 -213
- data/spec/files/bad_down_migration/001_create_alt_basic.rb +0 -4
- data/spec/files/bad_down_migration/002_create_alt_advanced.rb +0 -4
- data/spec/files/bad_timestamped_migrations/1273253849_create_sessions.rb +0 -9
- data/spec/files/bad_timestamped_migrations/1273253851_create_nodes.rb +0 -9
- data/spec/files/bad_timestamped_migrations/1273253853_3_create_users.rb +0 -3
- data/spec/files/bad_up_migration/001_create_alt_basic.rb +0 -4
- data/spec/files/bad_up_migration/002_create_alt_advanced.rb +0 -3
- data/spec/files/convert_to_timestamp_migrations/001_create_sessions.rb +0 -9
- data/spec/files/convert_to_timestamp_migrations/002_create_nodes.rb +0 -9
- data/spec/files/convert_to_timestamp_migrations/003_3_create_users.rb +0 -4
- data/spec/files/convert_to_timestamp_migrations/1273253850_create_artists.rb +0 -9
- data/spec/files/convert_to_timestamp_migrations/1273253852_create_albums.rb +0 -9
- data/spec/files/double_migration/001_create_sessions.rb +0 -9
- data/spec/files/double_migration/002_create_nodes.rb +0 -19
- data/spec/files/double_migration/003_3_create_users.rb +0 -4
- data/spec/files/duplicate_integer_migrations/001_create_alt_advanced.rb +0 -4
- data/spec/files/duplicate_integer_migrations/001_create_alt_basic.rb +0 -4
- data/spec/files/duplicate_timestamped_migrations/1273253849_create_sessions.rb +0 -9
- data/spec/files/duplicate_timestamped_migrations/1273253853_create_nodes.rb +0 -9
- data/spec/files/duplicate_timestamped_migrations/1273253853_create_users.rb +0 -4
- data/spec/files/empty_migration/001_create_sessions.rb +0 -9
- data/spec/files/empty_migration/002_create_nodes.rb +0 -0
- data/spec/files/empty_migration/003_3_create_users.rb +0 -4
- data/spec/files/integer_migrations/001_create_sessions.rb +0 -9
- data/spec/files/integer_migrations/002_create_nodes.rb +0 -9
- data/spec/files/integer_migrations/003_3_create_users.rb +0 -4
- data/spec/files/interleaved_timestamped_migrations/1273253849_create_sessions.rb +0 -9
- data/spec/files/interleaved_timestamped_migrations/1273253850_create_artists.rb +0 -9
- data/spec/files/interleaved_timestamped_migrations/1273253851_create_nodes.rb +0 -9
- data/spec/files/interleaved_timestamped_migrations/1273253852_create_albums.rb +0 -9
- data/spec/files/interleaved_timestamped_migrations/1273253853_3_create_users.rb +0 -4
- data/spec/files/missing_integer_migrations/001_create_alt_basic.rb +0 -4
- data/spec/files/missing_integer_migrations/003_create_alt_advanced.rb +0 -4
- data/spec/files/missing_timestamped_migrations/1273253849_create_sessions.rb +0 -9
- data/spec/files/missing_timestamped_migrations/1273253853_3_create_users.rb +0 -4
- data/spec/files/reversible_migrations/001_reversible.rb +0 -5
- data/spec/files/reversible_migrations/002_reversible.rb +0 -5
- data/spec/files/reversible_migrations/003_reversible.rb +0 -5
- data/spec/files/reversible_migrations/004_reversible.rb +0 -5
- data/spec/files/reversible_migrations/005_reversible.rb +0 -10
- data/spec/files/reversible_migrations/006_reversible.rb +0 -10
- data/spec/files/reversible_migrations/007_reversible.rb +0 -10
- data/spec/files/timestamped_migrations/1273253849_create_sessions.rb +0 -9
- data/spec/files/timestamped_migrations/1273253851_create_nodes.rb +0 -9
- data/spec/files/timestamped_migrations/1273253853_3_create_users.rb +0 -4
- data/spec/files/transaction_specified_migrations/001_create_alt_basic.rb +0 -4
- data/spec/files/transaction_specified_migrations/002_create_basic.rb +0 -4
- data/spec/files/transaction_unspecified_migrations/001_create_alt_basic.rb +0 -3
- data/spec/files/transaction_unspecified_migrations/002_create_basic.rb +0 -3
- data/spec/files/uppercase_timestamped_migrations/1273253849_CREATE_SESSIONS.RB +0 -9
- data/spec/files/uppercase_timestamped_migrations/1273253851_CREATE_NODES.RB +0 -9
- data/spec/files/uppercase_timestamped_migrations/1273253853_3_CREATE_USERS.RB +0 -4
- data/spec/guards_helper.rb +0 -59
- data/spec/integration/associations_test.rb +0 -2597
- data/spec/integration/database_test.rb +0 -113
- data/spec/integration/dataset_test.rb +0 -2037
- data/spec/integration/eager_loader_test.rb +0 -687
- data/spec/integration/migrator_test.rb +0 -262
- data/spec/integration/model_test.rb +0 -203
- data/spec/integration/plugin_test.rb +0 -2423
- data/spec/integration/prepared_statement_test.rb +0 -405
- data/spec/integration/schema_test.rb +0 -903
- data/spec/integration/spec_helper.rb +0 -71
- data/spec/integration/timezone_test.rb +0 -86
- data/spec/integration/transaction_test.rb +0 -603
- data/spec/integration/type_test.rb +0 -127
- data/spec/model/association_reflection_spec.rb +0 -803
- data/spec/model/associations_spec.rb +0 -4738
- data/spec/model/base_spec.rb +0 -875
- data/spec/model/class_dataset_methods_spec.rb +0 -146
- data/spec/model/dataset_methods_spec.rb +0 -198
- data/spec/model/eager_loading_spec.rb +0 -2377
- data/spec/model/hooks_spec.rb +0 -370
- data/spec/model/inflector_spec.rb +0 -26
- data/spec/model/model_spec.rb +0 -956
- data/spec/model/plugins_spec.rb +0 -429
- data/spec/model/record_spec.rb +0 -2118
- data/spec/model/spec_helper.rb +0 -46
- data/spec/model/validations_spec.rb +0 -220
- data/spec/model_no_assoc_spec.rb +0 -1
- data/spec/model_spec.rb +0 -1
- data/spec/plugin_spec.rb +0 -1
- data/spec/sequel_coverage.rb +0 -15
- data/spec/sequel_warning.rb +0 -5
- data/spec/spec_config.rb +0 -12
|
@@ -1,209 +0,0 @@
|
|
|
1
|
-
require_relative "spec_helper"
|
|
2
|
-
|
|
3
|
-
describe "pg_auto_constraint_validations plugin" do
|
|
4
|
-
def create_model(ds)
|
|
5
|
-
@ds = ds
|
|
6
|
-
@ds.send(:columns=, [:id, :i])
|
|
7
|
-
@db.fetch = @metadata_results.dup
|
|
8
|
-
c = Sequel::Model(@ds)
|
|
9
|
-
c.plugin :pg_auto_constraint_validations
|
|
10
|
-
c
|
|
11
|
-
end
|
|
12
|
-
|
|
13
|
-
before do
|
|
14
|
-
info = @info = {:schema=>'public', :table=>'items'}
|
|
15
|
-
@db = Sequel.mock(:host=>'postgres')
|
|
16
|
-
def @db.schema(*) [[:i, {}], [:id, {}]] end
|
|
17
|
-
@set_error = lambda{|ec, ei| @db.fetch = @db.autoid = @db.numrows = ec; info.merge!(ei)}
|
|
18
|
-
@db.define_singleton_method(:error_info){|e| info}
|
|
19
|
-
@metadata_results = [
|
|
20
|
-
[{:constraint=>'items_i_check', :column=>'i', :definition=>'CHECK i'}, {:constraint=>'items_i_id_check', :column=>'i', :definition=>'CHECK i + id < 20'}, {:constraint=>'items_i_id_check', :column=>'id', :definition=>'CHECK i + id < 20'}],
|
|
21
|
-
[{:name=>'items_i_uidx', :unique=>true, :column=>'i', :deferrable=>false}, {:name=>'items_i2_idx', :unique=>false, :column=>'i', :deferrable=>false}],
|
|
22
|
-
[{:name=>'items_i_fk', :column=>'i', :on_update=>'a', :on_delete=>'a', :table=>'items2', :refcolumn=>'id', :schema=>'public'}],
|
|
23
|
-
[{:name=>'items2_i_fk', :column=>'id', :on_update=>'a', :on_delete=>'a', :table=>'items2', :refcolumn=>'i', :schema=>'public'}],
|
|
24
|
-
[{:nspname=>'public', :relname=>'items'}]
|
|
25
|
-
]
|
|
26
|
-
@c = create_model(@db[:items])
|
|
27
|
-
end
|
|
28
|
-
|
|
29
|
-
it "should handle check constraint failures as validation errors when creating" do
|
|
30
|
-
o = @c.new(:i=>12)
|
|
31
|
-
@set_error[Sequel::CheckConstraintViolation, :constraint=>'items_i_check']
|
|
32
|
-
proc{o.save}.must_raise Sequel::ValidationFailed
|
|
33
|
-
o.errors.must_equal(:i=>['is invalid'])
|
|
34
|
-
end
|
|
35
|
-
|
|
36
|
-
it "should handle check constraint failures as validation errors when updating" do
|
|
37
|
-
o = @c.load(:i=>3)
|
|
38
|
-
@set_error[Sequel::CheckConstraintViolation, :constraint=>'items_i_check']
|
|
39
|
-
proc{o.update(:i=>12)}.must_raise Sequel::ValidationFailed
|
|
40
|
-
o.errors.must_equal(:i=>['is invalid'])
|
|
41
|
-
end
|
|
42
|
-
|
|
43
|
-
it "should handle unique constraint failures as validation errors when creating" do
|
|
44
|
-
o = @c.new(:i=>2)
|
|
45
|
-
@set_error[Sequel::UniqueConstraintViolation, :constraint=>'items_i_uidx']
|
|
46
|
-
proc{o.save}.must_raise Sequel::ValidationFailed
|
|
47
|
-
o.errors.must_equal(:i=>['is already taken'])
|
|
48
|
-
end
|
|
49
|
-
|
|
50
|
-
it "should handle unique constraint failures as validation errors when updating" do
|
|
51
|
-
o = @c.load(:id=>5, :i=>3)
|
|
52
|
-
@set_error[Sequel::UniqueConstraintViolation, :constraint=>'items_i_uidx']
|
|
53
|
-
proc{o.update(:i=>2)}.must_raise Sequel::ValidationFailed
|
|
54
|
-
o.errors.must_equal(:i=>['is already taken'])
|
|
55
|
-
end
|
|
56
|
-
|
|
57
|
-
it "should handle not null constraint failures as validation errors when creating" do
|
|
58
|
-
o = @c.new(:i=>5)
|
|
59
|
-
@set_error[Sequel::NotNullConstraintViolation, :column=>'i']
|
|
60
|
-
proc{o.save}.must_raise Sequel::ValidationFailed
|
|
61
|
-
o.errors.must_equal(:i=>['is not present'])
|
|
62
|
-
end
|
|
63
|
-
|
|
64
|
-
it "should handle not null constraint failures as validation errors when updating" do
|
|
65
|
-
o = @c.load(:i=>3)
|
|
66
|
-
@set_error[Sequel::NotNullConstraintViolation, :column=>'i']
|
|
67
|
-
proc{o.update(:i=>nil)}.must_raise Sequel::ValidationFailed
|
|
68
|
-
o.errors.must_equal(:i=>['is not present'])
|
|
69
|
-
end
|
|
70
|
-
|
|
71
|
-
it "should handle foreign key constraint failures as validation errors when creating" do
|
|
72
|
-
o = @c.new(:i=>3)
|
|
73
|
-
@set_error[Sequel::ForeignKeyConstraintViolation, :constraint=>'items_i_fk', :message_primary=>'insert or']
|
|
74
|
-
proc{o.save}.must_raise Sequel::ValidationFailed
|
|
75
|
-
o.errors.must_equal(:i=>['is invalid'])
|
|
76
|
-
end
|
|
77
|
-
|
|
78
|
-
it "should handle foreign key constraint failures as validation errors when updating" do
|
|
79
|
-
o = @c.load(:i=>1)
|
|
80
|
-
@set_error[Sequel::ForeignKeyConstraintViolation, :constraint=>'items_i_fk', :message_primary=>'insert or']
|
|
81
|
-
proc{o.update(:i=>3)}.must_raise Sequel::ValidationFailed
|
|
82
|
-
o.errors.must_equal(:i=>['is invalid'])
|
|
83
|
-
end
|
|
84
|
-
|
|
85
|
-
it "should handle foreign key constraint failures in other tables as validation errors when updating" do
|
|
86
|
-
o = @c.load(:i=>1)
|
|
87
|
-
@set_error[Sequel::ForeignKeyConstraintViolation, :constraint=>'items2_i_fk', :message_primary=>'update or', :schema=>'public', :table=>'items2']
|
|
88
|
-
proc{o.update(:i=>3)}.must_raise Sequel::ValidationFailed
|
|
89
|
-
o.errors.must_equal(:i=>['cannot be changed currently'])
|
|
90
|
-
end
|
|
91
|
-
|
|
92
|
-
it "should handle symbol, string, and identifier table names" do
|
|
93
|
-
[@db[:items], @db.from('items'), @db.from{items}, @db.from{public[:items]}].each do |ds|
|
|
94
|
-
c = create_model(ds)
|
|
95
|
-
@set_error[Sequel::CheckConstraintViolation, :constraint=>'items_i_check']
|
|
96
|
-
o = c.new(:i=>3)
|
|
97
|
-
proc{o.save}.must_raise Sequel::ValidationFailed
|
|
98
|
-
o.errors.must_equal(:i=>['is invalid'])
|
|
99
|
-
end
|
|
100
|
-
end
|
|
101
|
-
|
|
102
|
-
it "should skip handling of other table types such as subqueries and functions" do
|
|
103
|
-
[@db.from{foo(:bar)}, @db[:a, :b]].each do |ds|
|
|
104
|
-
@db.fetch = @metadata_results.dup
|
|
105
|
-
@c.dataset = ds
|
|
106
|
-
o = @c.new(:i=>3)
|
|
107
|
-
@set_error[Sequel::CheckConstraintViolation, :constraint=>'items_i_check']
|
|
108
|
-
proc{o.save}.must_raise Sequel::CheckConstraintViolation
|
|
109
|
-
end
|
|
110
|
-
end
|
|
111
|
-
|
|
112
|
-
it "should skip handling if the error_info method is not supported" do
|
|
113
|
-
@db.singleton_class.send(:remove_method, :error_info)
|
|
114
|
-
c = create_model(@db[:items])
|
|
115
|
-
@set_error[Sequel::CheckConstraintViolation, :constraint=>'items_i_check']
|
|
116
|
-
o = c.new(:i=>3)
|
|
117
|
-
proc{o.save}.must_raise Sequel::CheckConstraintViolation
|
|
118
|
-
end
|
|
119
|
-
|
|
120
|
-
it "should not handle constraint failures if they can't be converted" do
|
|
121
|
-
o = @c.new(:i=>12)
|
|
122
|
-
@set_error[Sequel::NotNullConstraintViolation, {}]
|
|
123
|
-
proc{o.save}.must_raise Sequel::NotNullConstraintViolation
|
|
124
|
-
end
|
|
125
|
-
|
|
126
|
-
it "should reraise original exception if there is an error" do
|
|
127
|
-
o = @c.new(:i=>12)
|
|
128
|
-
def o.add_pg_constraint_validation_error; end
|
|
129
|
-
@set_error[Sequel::NotNullConstraintViolation, :column=>'i']
|
|
130
|
-
proc{o.save}.must_raise Sequel::NotNullConstraintViolation
|
|
131
|
-
end
|
|
132
|
-
|
|
133
|
-
it "should not handle constraint failures if schema or table do not match" do
|
|
134
|
-
o = @c.new(:i=>12)
|
|
135
|
-
@set_error[Sequel::CheckConstraintViolation, :constraint=>'items_i_check', :schema=>'x']
|
|
136
|
-
proc{o.save}.must_raise Sequel::CheckConstraintViolation
|
|
137
|
-
@set_error[Sequel::CheckConstraintViolation, :constraint=>'items_i_check', :schema=>'public', :table=>'x']
|
|
138
|
-
proc{o.save}.must_raise Sequel::CheckConstraintViolation
|
|
139
|
-
end
|
|
140
|
-
|
|
141
|
-
it "should handle constraint failures when disabling insert returning" do
|
|
142
|
-
c = create_model(@db[:items].disable_insert_returning)
|
|
143
|
-
o = c.new(:i=>12)
|
|
144
|
-
o.id = 1
|
|
145
|
-
@set_error[Sequel::CheckConstraintViolation, :constraint=>'items_i_check']
|
|
146
|
-
proc{o.save}.must_raise Sequel::ValidationFailed
|
|
147
|
-
o.errors.must_equal(:i=>['is invalid'])
|
|
148
|
-
end
|
|
149
|
-
|
|
150
|
-
it "should handle multi-column constraint failures as validation errors" do
|
|
151
|
-
o = @c.new(:i=>12)
|
|
152
|
-
@set_error[Sequel::CheckConstraintViolation, :constraint=>'items_i_id_check']
|
|
153
|
-
proc{o.save}.must_raise Sequel::ValidationFailed
|
|
154
|
-
o.errors.must_equal([:i, :id]=>['is invalid'])
|
|
155
|
-
end
|
|
156
|
-
|
|
157
|
-
it "should handle multi-column constraint failures as validation errors when using the error_splitter plugin" do
|
|
158
|
-
@c.plugin :error_splitter
|
|
159
|
-
o = @c.new(:i=>12)
|
|
160
|
-
@set_error[Sequel::CheckConstraintViolation, :constraint=>'items_i_id_check']
|
|
161
|
-
proc{o.save}.must_raise Sequel::ValidationFailed
|
|
162
|
-
o.errors.must_equal(:i=>['is invalid'], :id=>['is invalid'])
|
|
163
|
-
end
|
|
164
|
-
|
|
165
|
-
it "should handle overridden constraint failures as validation errors when updating" do
|
|
166
|
-
o = @c.load(:i=>3)
|
|
167
|
-
@c.pg_auto_constraint_validation_override(:items_i_ocheck, :i, "foo bar")
|
|
168
|
-
@set_error[Sequel::CheckConstraintViolation, :constraint=>'items_i_ocheck']
|
|
169
|
-
proc{o.update(:i=>12)}.must_raise Sequel::ValidationFailed
|
|
170
|
-
o.errors.must_equal(:i=>['foo bar'])
|
|
171
|
-
end
|
|
172
|
-
|
|
173
|
-
it "should handle dumping cached metadata and loading metadata from cache" do
|
|
174
|
-
cache_file = "spec/files/pgacv-spec-#{$$}.cache"
|
|
175
|
-
begin
|
|
176
|
-
@ds = @db[:items]
|
|
177
|
-
@ds.send(:columns=, [:id, :i])
|
|
178
|
-
@db.fetch = @metadata_results.dup
|
|
179
|
-
c = Sequel::Model(@ds)
|
|
180
|
-
def c.name; 'Foo' end
|
|
181
|
-
@db.sqls
|
|
182
|
-
c.plugin :pg_auto_constraint_validations, :cache_file=>cache_file
|
|
183
|
-
@db.sqls.length.must_equal 5
|
|
184
|
-
|
|
185
|
-
o = c.new(:i=>12)
|
|
186
|
-
@set_error[Sequel::CheckConstraintViolation, :constraint=>'items_i_id_check']
|
|
187
|
-
proc{o.save}.must_raise Sequel::ValidationFailed
|
|
188
|
-
|
|
189
|
-
c.dump_pg_auto_constraint_validations_cache
|
|
190
|
-
|
|
191
|
-
@db.fetch = []
|
|
192
|
-
c = Sequel::Model(@ds)
|
|
193
|
-
def c.name; 'Foo' end
|
|
194
|
-
@db.sqls
|
|
195
|
-
c.plugin :pg_auto_constraint_validations, :cache_file=>cache_file
|
|
196
|
-
@db.sqls.must_be_empty
|
|
197
|
-
|
|
198
|
-
o = c.new(:i=>12)
|
|
199
|
-
@set_error[Sequel::CheckConstraintViolation, :constraint=>'items_i_id_check']
|
|
200
|
-
proc{o.save}.must_raise Sequel::ValidationFailed
|
|
201
|
-
ensure
|
|
202
|
-
File.delete(cache_file) if File.file?(cache_file)
|
|
203
|
-
end
|
|
204
|
-
end
|
|
205
|
-
|
|
206
|
-
it "should raise error if attempting to dump cached metadata when not using caching" do
|
|
207
|
-
proc{@c.dump_pg_auto_constraint_validations_cache}.must_raise Sequel::Error
|
|
208
|
-
end
|
|
209
|
-
end
|
|
@@ -1,118 +0,0 @@
|
|
|
1
|
-
require_relative "spec_helper"
|
|
2
|
-
|
|
3
|
-
Sequel.extension :migration
|
|
4
|
-
|
|
5
|
-
describe "pg_enum extension" do
|
|
6
|
-
before do
|
|
7
|
-
@db = Sequel.connect('mock://postgres')
|
|
8
|
-
@db.extend_datasets{def quote_identifiers?; false end}
|
|
9
|
-
@db.extend(Module.new do
|
|
10
|
-
def schema_parse_table(*)
|
|
11
|
-
[[:a, {:oid=>1}]]
|
|
12
|
-
end
|
|
13
|
-
def _metadata_dataset
|
|
14
|
-
super.with_fetch([[{:v=>1, :enumlabel=>'a'}, {:v=>1, :enumlabel=>'b'}, {:v=>1, :enumlabel=>'c'}], [{:typname=>'enum1', :v=>212389}]])
|
|
15
|
-
end
|
|
16
|
-
end)
|
|
17
|
-
@db.extension(:pg_array, :pg_enum)
|
|
18
|
-
@db.sqls
|
|
19
|
-
end
|
|
20
|
-
|
|
21
|
-
it "should include enum information in the schema entry" do
|
|
22
|
-
@db.schema(:a).must_equal [[:a, {:oid=>1, :ruby_default=>nil, :type=>:enum, :enum_values=>%w'a b c'}]]
|
|
23
|
-
end
|
|
24
|
-
|
|
25
|
-
it "should typecast objects to string" do
|
|
26
|
-
@db.typecast_value(:enum, :a).must_equal 'a'
|
|
27
|
-
end
|
|
28
|
-
|
|
29
|
-
it "should add array parsers for enum values" do
|
|
30
|
-
@db.conversion_procs[212389].call('{a,b,c}').must_equal %w'a b c'
|
|
31
|
-
end
|
|
32
|
-
|
|
33
|
-
it "should support #create_enum method for adding a new enum" do
|
|
34
|
-
@db.create_enum(:foo, [:a, :b, :c])
|
|
35
|
-
@db.sqls.first.must_equal "CREATE TYPE foo AS ENUM ('a', 'b', 'c')"
|
|
36
|
-
@db.create_enum(Sequel[:sch][:foo], %w'a b c')
|
|
37
|
-
@db.sqls.first.must_equal "CREATE TYPE sch.foo AS ENUM ('a', 'b', 'c')"
|
|
38
|
-
end
|
|
39
|
-
|
|
40
|
-
with_symbol_splitting "should support #create_enum method for adding a new enum with qualified symbol" do
|
|
41
|
-
@db.create_enum(:sch__foo, %w'a b c')
|
|
42
|
-
@db.sqls.first.must_equal "CREATE TYPE sch.foo AS ENUM ('a', 'b', 'c')"
|
|
43
|
-
end
|
|
44
|
-
|
|
45
|
-
it "should support #rename_enum method for renameing an enum" do
|
|
46
|
-
@db.rename_enum(:foo, :bar)
|
|
47
|
-
@db.sqls.first.must_equal "ALTER TYPE foo RENAME TO bar"
|
|
48
|
-
@db.rename_enum(Sequel[:sch][:foo], Sequel[:sch][:bar])
|
|
49
|
-
@db.sqls.first.must_equal "ALTER TYPE sch.foo RENAME TO sch.bar"
|
|
50
|
-
end
|
|
51
|
-
|
|
52
|
-
it "should support #rename_enum_value method for renameing an enum value" do
|
|
53
|
-
@db.rename_enum_value(:foo, :b, :x)
|
|
54
|
-
@db.sqls.first.must_equal "ALTER TYPE foo RENAME VALUE 'b' TO 'x'"
|
|
55
|
-
end
|
|
56
|
-
|
|
57
|
-
it "should support #drop_enum method for dropping an enum" do
|
|
58
|
-
@db.drop_enum(:foo)
|
|
59
|
-
@db.sqls.first.must_equal "DROP TYPE foo"
|
|
60
|
-
@db.drop_enum(Sequel[:sch][:foo], :if_exists=>true)
|
|
61
|
-
@db.sqls.first.must_equal "DROP TYPE IF EXISTS sch.foo"
|
|
62
|
-
@db.drop_enum('foo', :cascade=>true)
|
|
63
|
-
@db.sqls.first.must_equal "DROP TYPE foo CASCADE"
|
|
64
|
-
end
|
|
65
|
-
|
|
66
|
-
with_symbol_splitting "should support #drop_enum method for dropping an enum with a splittable symbol" do
|
|
67
|
-
@db.drop_enum(:sch__foo, :if_exists=>true)
|
|
68
|
-
@db.sqls.first.must_equal "DROP TYPE IF EXISTS sch.foo"
|
|
69
|
-
end
|
|
70
|
-
|
|
71
|
-
it "should support #add_enum_value method for adding value to an existing enum" do
|
|
72
|
-
@db.add_enum_value(:foo, :a)
|
|
73
|
-
@db.sqls.first.must_equal "ALTER TYPE foo ADD VALUE 'a'"
|
|
74
|
-
end
|
|
75
|
-
|
|
76
|
-
it "should support :before option for #add_enum_value method for adding value before an existing enum value" do
|
|
77
|
-
@db.add_enum_value('foo', :a, :before=>:b)
|
|
78
|
-
@db.sqls.first.must_equal "ALTER TYPE foo ADD VALUE 'a' BEFORE 'b'"
|
|
79
|
-
end
|
|
80
|
-
|
|
81
|
-
it "should support :after option for #add_enum_value method for adding value after an existing enum value" do
|
|
82
|
-
@db.add_enum_value(Sequel[:sch][:foo], :a, :after=>:b)
|
|
83
|
-
@db.sqls.first.must_equal "ALTER TYPE sch.foo ADD VALUE 'a' AFTER 'b'"
|
|
84
|
-
end
|
|
85
|
-
|
|
86
|
-
with_symbol_splitting "should support :after option for #add_enum_value method for adding value after an existing enum value with splittable symbol" do
|
|
87
|
-
@db.add_enum_value(:sch__foo, :a, :after=>:b)
|
|
88
|
-
@db.sqls.first.must_equal "ALTER TYPE sch.foo ADD VALUE 'a' AFTER 'b'"
|
|
89
|
-
end
|
|
90
|
-
|
|
91
|
-
it "should support :if_not_exists option for #add_enum_value method for not adding the value if it exists" do
|
|
92
|
-
@db.add_enum_value(:foo, :a, :if_not_exists=>true)
|
|
93
|
-
@db.sqls.first.must_equal "ALTER TYPE foo ADD VALUE IF NOT EXISTS 'a'"
|
|
94
|
-
end
|
|
95
|
-
|
|
96
|
-
it "should reverse a create_enum directive in a migration" do
|
|
97
|
-
m = Sequel.migration{change{create_enum(:type_name, %w'value1 value2 value3')}}
|
|
98
|
-
m.apply(@db, :up)
|
|
99
|
-
@db.sqls.must_equal ["CREATE TYPE type_name AS ENUM ('value1', 'value2', 'value3')",
|
|
100
|
-
"SELECT CAST(enumtypid AS integer) AS v, enumlabel FROM pg_enum ORDER BY enumtypid, enumsortorder",
|
|
101
|
-
"SELECT typname, CAST(typarray AS integer) AS v FROM pg_type WHERE ((1 = 0) AND (typarray != 0))"]
|
|
102
|
-
m.apply(@db, :down)
|
|
103
|
-
@db.sqls.must_equal ["DROP TYPE type_name", "SELECT CAST(enumtypid AS integer) AS v, enumlabel FROM pg_enum ORDER BY enumtypid, enumsortorder",
|
|
104
|
-
"SELECT typname, CAST(typarray AS integer) AS v FROM pg_type WHERE ((1 = 0) AND (typarray != 0))"]
|
|
105
|
-
end
|
|
106
|
-
|
|
107
|
-
it "should reverse a rename_enum directive in a migration" do
|
|
108
|
-
m = Sequel.migration{change{rename_enum(:old_type_name, :new_type_name)}}
|
|
109
|
-
m.apply(@db, :up)
|
|
110
|
-
@db.sqls.must_equal ["ALTER TYPE old_type_name RENAME TO new_type_name",
|
|
111
|
-
"SELECT CAST(enumtypid AS integer) AS v, enumlabel FROM pg_enum ORDER BY enumtypid, enumsortorder",
|
|
112
|
-
"SELECT typname, CAST(typarray AS integer) AS v FROM pg_type WHERE ((1 = 0) AND (typarray != 0))"]
|
|
113
|
-
m.apply(@db, :down)
|
|
114
|
-
@db.sqls.must_equal ["ALTER TYPE new_type_name RENAME TO old_type_name",
|
|
115
|
-
"SELECT CAST(enumtypid AS integer) AS v, enumlabel FROM pg_enum ORDER BY enumtypid, enumsortorder",
|
|
116
|
-
"SELECT typname, CAST(typarray AS integer) AS v FROM pg_type WHERE ((1 = 0) AND (typarray != 0))"]
|
|
117
|
-
end
|
|
118
|
-
end
|
|
@@ -1,126 +0,0 @@
|
|
|
1
|
-
require_relative "spec_helper"
|
|
2
|
-
|
|
3
|
-
describe "pg_extended_date_support extension" do
|
|
4
|
-
before do
|
|
5
|
-
@db = Sequel.mock(:host=>'postgres', :fetch=>{:v=>1}).extension(:pg_extended_date_support)
|
|
6
|
-
@db.extend_datasets{def quote_identifiers?; false end}
|
|
7
|
-
end
|
|
8
|
-
after do
|
|
9
|
-
Sequel.datetime_class = Time
|
|
10
|
-
Sequel.default_timezone = nil
|
|
11
|
-
end
|
|
12
|
-
|
|
13
|
-
it "should convert infinite timestamps and dates as configured" do
|
|
14
|
-
cp = @db.conversion_procs
|
|
15
|
-
d = lambda{|v| cp[1082].call(v)}
|
|
16
|
-
t = lambda{|v| cp[1114].call(v)}
|
|
17
|
-
pi = 'infinity'
|
|
18
|
-
ni = '-infinity'
|
|
19
|
-
today = Date.today
|
|
20
|
-
now = Time.now
|
|
21
|
-
|
|
22
|
-
d.(today.to_s).must_equal today
|
|
23
|
-
t.(now.strftime("%Y-%m-%d %H:%M:%S.%N")).must_equal now
|
|
24
|
-
proc{@db.typecast_value(:date, pi)}.must_raise Sequel::InvalidValue
|
|
25
|
-
proc{@db.typecast_value(:datetime, pi)}.must_raise Sequel::InvalidValue
|
|
26
|
-
|
|
27
|
-
[:nil, 'nil'].each do |v|
|
|
28
|
-
@db.convert_infinite_timestamps = v
|
|
29
|
-
d.(pi).must_be_nil
|
|
30
|
-
t.(pi).must_be_nil
|
|
31
|
-
d.(ni).must_be_nil
|
|
32
|
-
t.(ni).must_be_nil
|
|
33
|
-
@db.typecast_value(:date, pi).must_equal pi
|
|
34
|
-
@db.typecast_value(:datetime, pi).must_equal pi
|
|
35
|
-
@db.typecast_value(:date, ni).must_equal ni
|
|
36
|
-
@db.typecast_value(:datetime, ni).must_equal ni
|
|
37
|
-
end
|
|
38
|
-
|
|
39
|
-
d.(today.to_s).must_equal today
|
|
40
|
-
t.(now.strftime("%Y-%m-%d %H:%M:%S.%N")).must_equal now
|
|
41
|
-
@db.typecast_value(:date, today.to_s).must_equal today
|
|
42
|
-
@db.typecast_value(:datetime, now.strftime("%Y-%m-%d %H:%M:%S.%N")).must_equal now
|
|
43
|
-
|
|
44
|
-
[:string, 'string'].each do |v|
|
|
45
|
-
@db.convert_infinite_timestamps = v
|
|
46
|
-
d.(pi).must_equal pi
|
|
47
|
-
t.(pi).must_equal pi
|
|
48
|
-
d.(ni).must_equal ni
|
|
49
|
-
t.(ni).must_equal ni
|
|
50
|
-
end
|
|
51
|
-
|
|
52
|
-
[:date, 'date'].each do |v|
|
|
53
|
-
@db.convert_infinite_timestamps = v
|
|
54
|
-
d.(pi).must_equal Date::Infinity.new
|
|
55
|
-
t.(pi).must_equal Date::Infinity.new
|
|
56
|
-
d.(ni).must_equal(-Date::Infinity.new)
|
|
57
|
-
t.(ni).must_equal(-Date::Infinity.new)
|
|
58
|
-
end
|
|
59
|
-
|
|
60
|
-
[:float, 'float', 't', true].each do |v|
|
|
61
|
-
@db.convert_infinite_timestamps = v
|
|
62
|
-
d.(pi).must_equal 1.0/0.0
|
|
63
|
-
t.(pi).must_equal 1.0/0.0
|
|
64
|
-
d.(ni).must_equal(-1.0/0.0)
|
|
65
|
-
t.(ni).must_equal(-1.0/0.0)
|
|
66
|
-
end
|
|
67
|
-
|
|
68
|
-
['f', false].each do |v|
|
|
69
|
-
@db.convert_infinite_timestamps = v
|
|
70
|
-
proc{d.(pi)}.must_raise ArgumentError, Sequel::InvalidValue
|
|
71
|
-
proc{t.(pi)}.must_raise ArgumentError, Sequel::InvalidValue
|
|
72
|
-
proc{d.(ni)}.must_raise ArgumentError, Sequel::InvalidValue
|
|
73
|
-
proc{t.(ni)}.must_raise ArgumentError, Sequel::InvalidValue
|
|
74
|
-
end
|
|
75
|
-
end
|
|
76
|
-
|
|
77
|
-
it "should handle parsing BC dates" do
|
|
78
|
-
@db.conversion_procs[1082].call("1092-10-20 BC").must_equal Date.new(-1091, 10, 20)
|
|
79
|
-
end
|
|
80
|
-
|
|
81
|
-
it "should handle parsing BC timestamps as Time values" do
|
|
82
|
-
@db.conversion_procs[1114].call("1200-02-15 14:13:20-00:00 BC").must_equal Time.at(-100000000000).utc
|
|
83
|
-
@db.conversion_procs[1114].call("1200-02-15 14:13:20-00:00:00 BC").must_equal Time.at(-100000000000).utc
|
|
84
|
-
Sequel.default_timezone = :utc
|
|
85
|
-
@db.conversion_procs[1114].call("1200-02-15 14:13:20 BC").must_equal Time.at(-100000000000).utc
|
|
86
|
-
Sequel.default_timezone = nil
|
|
87
|
-
end
|
|
88
|
-
|
|
89
|
-
it "should handle parsing BC timestamps as DateTime values" do
|
|
90
|
-
Sequel.datetime_class = DateTime
|
|
91
|
-
@db.conversion_procs[1114].call("1200-02-15 14:13:20-00:00 BC").must_equal DateTime.new(-1199, 2, 15, 14, 13, 20)
|
|
92
|
-
@db.conversion_procs[1114].call("1200-02-15 14:13:20-00:00:00 BC").must_equal DateTime.new(-1199, 2, 15, 14, 13, 20)
|
|
93
|
-
Sequel.default_timezone = :utc
|
|
94
|
-
@db.conversion_procs[1114].call("1200-02-15 14:13:20 BC").must_equal DateTime.new(-1199, 2, 15, 14, 13, 20)
|
|
95
|
-
end
|
|
96
|
-
|
|
97
|
-
it "should handle parsing AD timestamps with offset seconds" do
|
|
98
|
-
@db.conversion_procs[1114].call("1200-02-15 14:13:20-00:00:00").must_equal DateTime.new(1200, 2, 15, 14, 13, 20).to_time
|
|
99
|
-
Sequel.datetime_class = DateTime
|
|
100
|
-
@db.conversion_procs[1114].call("1200-02-15 14:13:20-00:00:00").must_equal DateTime.new(1200, 2, 15, 14, 13, 20)
|
|
101
|
-
end
|
|
102
|
-
|
|
103
|
-
it "should format Date::Infinity values" do
|
|
104
|
-
@db.literal(Date::Infinity.new).must_equal "'infinity'"
|
|
105
|
-
@db.literal(-Date::Infinity.new).must_equal "'-infinity'"
|
|
106
|
-
end
|
|
107
|
-
|
|
108
|
-
it "should raise errors for literalizing random Objects" do
|
|
109
|
-
proc{@db.literal(Object.new)}.must_raise Sequel::Error
|
|
110
|
-
end
|
|
111
|
-
|
|
112
|
-
it "should format BC dates" do
|
|
113
|
-
@db.literal(Date.new(-1091, 10, 20)).must_equal "'1092-10-20 BC'"
|
|
114
|
-
@db.literal(Date.new(1092, 10, 20)).must_equal "'1092-10-20'"
|
|
115
|
-
end
|
|
116
|
-
|
|
117
|
-
it "should format BC datetimes" do
|
|
118
|
-
@db.literal(DateTime.new(-1199, 2, 15, 14, 13, 20)).must_equal "'1200-02-15 14:13:20.000000000+0000 BC'"
|
|
119
|
-
@db.literal(DateTime.new(1200, 2, 15, 14, 13, 20)).must_equal "'1200-02-15 14:13:20.000000+0000'"
|
|
120
|
-
end
|
|
121
|
-
|
|
122
|
-
it "should format BC times" do
|
|
123
|
-
@db.literal(Time.at(-100000000000).utc).must_equal "'1200-02-15 14:13:20.000000000+0000 BC'"
|
|
124
|
-
@db.literal(Time.at(100000000000).utc).must_equal "'5138-11-16 09:46:40.000000+0000'"
|
|
125
|
-
end
|
|
126
|
-
end
|