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,126 +0,0 @@
|
|
|
1
|
-
require_relative "spec_helper"
|
|
2
|
-
|
|
3
|
-
describe "force_encoding plugin" do
|
|
4
|
-
before do
|
|
5
|
-
@c = Class.new(Sequel::Model)
|
|
6
|
-
@c.columns :id, :x
|
|
7
|
-
@c.plugin :force_encoding, 'UTF-8'
|
|
8
|
-
@e1 = Encoding.find('UTF-8')
|
|
9
|
-
end
|
|
10
|
-
|
|
11
|
-
it "should force encoding to given encoding on load" do
|
|
12
|
-
s = 'blah'.dup
|
|
13
|
-
s.force_encoding('US-ASCII')
|
|
14
|
-
o = @c.load(:id=>1, :x=>s)
|
|
15
|
-
o.x.must_equal 'blah'
|
|
16
|
-
o.x.encoding.must_equal @e1
|
|
17
|
-
end
|
|
18
|
-
|
|
19
|
-
it "should force encoding to given encoding when setting column values" do
|
|
20
|
-
s = 'blah'.dup
|
|
21
|
-
s.force_encoding('US-ASCII')
|
|
22
|
-
o = @c.new(:x=>s)
|
|
23
|
-
o.x.must_equal 'blah'
|
|
24
|
-
o.x.encoding.must_equal @e1
|
|
25
|
-
end
|
|
26
|
-
|
|
27
|
-
it "should not force encoding of blobs to given encoding on load" do
|
|
28
|
-
s = Sequel.blob('blah'.dup.force_encoding('BINARY'))
|
|
29
|
-
o = @c.load(:id=>1, :x=>s)
|
|
30
|
-
o.x.must_equal 'blah'
|
|
31
|
-
o.x.encoding.must_equal Encoding.find('BINARY')
|
|
32
|
-
end
|
|
33
|
-
|
|
34
|
-
it "should not force encoding of blobs to given encoding when setting column values" do
|
|
35
|
-
s = Sequel.blob('blah'.dup.force_encoding('BINARY'))
|
|
36
|
-
o = @c.new(:x=>s)
|
|
37
|
-
o.x.must_equal 'blah'
|
|
38
|
-
o.x.encoding.must_equal Encoding.find('BINARY')
|
|
39
|
-
end
|
|
40
|
-
|
|
41
|
-
it "should work correctly when given a frozen string" do
|
|
42
|
-
s = 'blah'.dup
|
|
43
|
-
s.force_encoding('US-ASCII')
|
|
44
|
-
s.freeze
|
|
45
|
-
o = @c.new(:x=>s)
|
|
46
|
-
o.x.must_equal 'blah'
|
|
47
|
-
o.x.encoding.must_equal @e1
|
|
48
|
-
end
|
|
49
|
-
|
|
50
|
-
it "should have a forced_encoding class accessor" do
|
|
51
|
-
s = 'blah'.dup
|
|
52
|
-
s.force_encoding('US-ASCII')
|
|
53
|
-
@c.forced_encoding = 'Windows-1258'
|
|
54
|
-
o = @c.load(:id=>1, :x=>s)
|
|
55
|
-
o.x.must_equal 'blah'
|
|
56
|
-
o.x.encoding.must_equal Encoding.find('Windows-1258')
|
|
57
|
-
end
|
|
58
|
-
|
|
59
|
-
it "should not force encoding if forced_encoding is nil" do
|
|
60
|
-
s = 'blah'.dup
|
|
61
|
-
s.force_encoding('US-ASCII')
|
|
62
|
-
@c.forced_encoding = nil
|
|
63
|
-
o = @c.load(:id=>1, :x=>s)
|
|
64
|
-
o.x.must_equal 'blah'
|
|
65
|
-
o.x.encoding.must_equal Encoding.find('US-ASCII')
|
|
66
|
-
end
|
|
67
|
-
|
|
68
|
-
it "should work correctly when subclassing" do
|
|
69
|
-
c = Class.new(@c)
|
|
70
|
-
s = 'blah'.dup
|
|
71
|
-
s.force_encoding('US-ASCII')
|
|
72
|
-
o = c.load(:id=>1, :x=>s)
|
|
73
|
-
o.x.must_equal 'blah'
|
|
74
|
-
o.x.encoding.must_equal @e1
|
|
75
|
-
|
|
76
|
-
c.plugin :force_encoding, 'UTF-16LE'
|
|
77
|
-
s = String.new
|
|
78
|
-
s.force_encoding('US-ASCII')
|
|
79
|
-
o = c.load(:id=>1, :x=>s)
|
|
80
|
-
o.x.must_equal ''
|
|
81
|
-
o.x.encoding.must_equal Encoding.find('UTF-16LE')
|
|
82
|
-
|
|
83
|
-
@c.plugin :force_encoding, 'UTF-32LE'
|
|
84
|
-
s = String.new
|
|
85
|
-
s.force_encoding('US-ASCII')
|
|
86
|
-
o = @c.load(:id=>1, :x=>s)
|
|
87
|
-
o.x.must_equal ''
|
|
88
|
-
o.x.encoding.must_equal Encoding.find('UTF-32LE')
|
|
89
|
-
|
|
90
|
-
s = String.new
|
|
91
|
-
s.force_encoding('US-ASCII')
|
|
92
|
-
o = c.load(:id=>1, :x=>s)
|
|
93
|
-
o.x.must_equal ''
|
|
94
|
-
o.x.encoding.must_equal Encoding.find('UTF-16LE')
|
|
95
|
-
end
|
|
96
|
-
|
|
97
|
-
it "should work when saving new model instances" do
|
|
98
|
-
o = @c.new
|
|
99
|
-
@c.dataset = DB[:a].with_extend do
|
|
100
|
-
def first
|
|
101
|
-
s = 'blah'.dup
|
|
102
|
-
s.force_encoding('US-ASCII')
|
|
103
|
-
{:id=>1, :x=>s}
|
|
104
|
-
end
|
|
105
|
-
end
|
|
106
|
-
@c.instance_variable_set(:@fast_pk_lookup_sql, nil)
|
|
107
|
-
o.save
|
|
108
|
-
o.x.must_equal 'blah'
|
|
109
|
-
o.x.encoding.must_equal @e1
|
|
110
|
-
end
|
|
111
|
-
|
|
112
|
-
it "should work when refreshing model instances" do
|
|
113
|
-
o = @c.load(:id=>1, :x=>'as'.dup)
|
|
114
|
-
@c.dataset = DB[:a].with_extend do
|
|
115
|
-
def first
|
|
116
|
-
s = 'blah'.dup
|
|
117
|
-
s.force_encoding('US-ASCII')
|
|
118
|
-
{:id=>1, :x=>s}
|
|
119
|
-
end
|
|
120
|
-
end
|
|
121
|
-
@c.instance_variable_set(:@fast_pk_lookup_sql, nil)
|
|
122
|
-
o.refresh
|
|
123
|
-
o.x.must_equal 'blah'
|
|
124
|
-
o.x.encoding.must_equal @e1
|
|
125
|
-
end
|
|
126
|
-
end
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
require_relative "spec_helper"
|
|
2
|
-
|
|
3
|
-
describe "freeze_datasets extension" do
|
|
4
|
-
before do
|
|
5
|
-
@db = Sequel.mock.extension(:freeze_datasets)
|
|
6
|
-
end
|
|
7
|
-
|
|
8
|
-
it "should freeze datasets by default" do
|
|
9
|
-
@db.dataset.frozen?.must_equal true
|
|
10
|
-
@db.fetch('SQL').frozen?.must_equal true
|
|
11
|
-
@db.from(:table).frozen?.must_equal true
|
|
12
|
-
@db[:table].frozen?.must_equal true
|
|
13
|
-
end
|
|
14
|
-
|
|
15
|
-
it "should have dataset#dup return frozen dataset" do
|
|
16
|
-
@db.dataset.dup.frozen?.must_equal true
|
|
17
|
-
end
|
|
18
|
-
|
|
19
|
-
it "should cache Database#from calls with single symbol tables" do
|
|
20
|
-
@db.from(:foo).must_be_same_as @db.from(:foo)
|
|
21
|
-
@db.from(Sequel[:foo]).wont_be_same_as @db.from(Sequel[:foo])
|
|
22
|
-
end
|
|
23
|
-
|
|
24
|
-
it "should clear Database#from cache when modifying the schema" do
|
|
25
|
-
ds = @db.from(:foo)
|
|
26
|
-
ds.columns(:foo, :bar)
|
|
27
|
-
@db[:foo].columns.must_equal [:foo, :bar]
|
|
28
|
-
@db.create_table!(:foo){Integer :x}
|
|
29
|
-
@db[:foo].columns.wont_equal [:foo, :bar]
|
|
30
|
-
end
|
|
31
|
-
end
|
|
@@ -1,113 +0,0 @@
|
|
|
1
|
-
require_relative "spec_helper"
|
|
2
|
-
|
|
3
|
-
describe Sequel::Dataset, " graphing" do
|
|
4
|
-
before do
|
|
5
|
-
@db = Sequel.mock(:columns=>proc do |sql|
|
|
6
|
-
case sql
|
|
7
|
-
when /points/
|
|
8
|
-
[:id, :x, :y]
|
|
9
|
-
when /lines/
|
|
10
|
-
[:id, :x, :y, :graph_id]
|
|
11
|
-
else
|
|
12
|
-
[:id, :name, :x, :y, :lines_x]
|
|
13
|
-
end
|
|
14
|
-
end).extension(:graph_each)
|
|
15
|
-
@ds1 = @db.from(:points)
|
|
16
|
-
@ds2 = @db.from(:lines)
|
|
17
|
-
@ds3 = @db.from(:graphs)
|
|
18
|
-
[@ds1, @ds2, @ds3].each{|ds| ds.columns}
|
|
19
|
-
@db.sqls
|
|
20
|
-
end
|
|
21
|
-
|
|
22
|
-
it "#graph_each should handle graph using currently selected columns as the basis for the selected columns in a new graph" do
|
|
23
|
-
@ds1.select(:id).graph(@ds2, :x=>:id).with_fetch(:id=>1, :lines_id=>2, :x=>3, :y=>4, :graph_id=>5).all.must_equal [{:points=>{:id=>1}, :lines=>{:id=>2, :x=>3, :y=>4, :graph_id=>5}}]
|
|
24
|
-
|
|
25
|
-
@ds1.select(:id, :x).graph(@ds2, :x=>:id).with_fetch(:id=>1, :x=>-1, :lines_id=>2, :lines_x=>3, :y=>4, :graph_id=>5).all.must_equal [{:points=>{:id=>1, :x=>-1}, :lines=>{:id=>2, :x=>3, :y=>4, :graph_id=>5}}]
|
|
26
|
-
|
|
27
|
-
@ds1.select(Sequel.identifier(:id), Sequel.qualify(:points, :x)).graph(@ds2, :x=>:id).with_fetch(:id=>1, :x=>-1, :lines_id=>2, :lines_x=>3, :y=>4, :graph_id=>5).all.must_equal [{:points=>{:id=>1, :x=>-1}, :lines=>{:id=>2, :x=>3, :y=>4, :graph_id=>5}}]
|
|
28
|
-
|
|
29
|
-
@ds1.select(Sequel.identifier(:id).qualify(:points), Sequel.identifier(:x).as(:y)).graph(@ds2, :x=>:id).with_fetch(:id=>1, :y=>-1, :lines_id=>2, :x=>3, :lines_y=>4, :graph_id=>5).all.must_equal [{:points=>{:id=>1, :y=>-1}, :lines=>{:id=>2, :x=>3, :y=>4, :graph_id=>5}}]
|
|
30
|
-
|
|
31
|
-
@ds1.select(:id, Sequel.identifier(:x).qualify(Sequel.identifier(:points)).as(Sequel.identifier(:y))).graph(@ds2, :x=>:id).with_fetch(:id=>1, :y=>-1, :lines_id=>2, :x=>3, :lines_y=>4, :graph_id=>5).all.must_equal [{:points=>{:id=>1, :y=>-1}, :lines=>{:id=>2, :x=>3, :y=>4, :graph_id=>5}}]
|
|
32
|
-
end
|
|
33
|
-
|
|
34
|
-
it "#graph_each should split the result set into component tables" do
|
|
35
|
-
@db.fetch = [[{:id=>1,:x=>2,:y=>3,:lines_id=>4,:lines_x=>5,:lines_y=>6,:graph_id=>7}],
|
|
36
|
-
[{:id=>1,:x=>2,:y=>3,:lines_id=>4,:lines_x=>5,:lines_y=>6,:graph_id=>7, :graphs_id=>8, :name=>9, :graphs_x=>10, :graphs_y=>11, :graphs_lines_x=>12}],
|
|
37
|
-
[{:id=>1,:x=>2,:y=>3,:lines_id=>4,:lines_x=>5,:lines_y=>6,:graph_id=>7, :graph_id_0=>8, :graph_x=>9, :graph_y=>10, :graph_graph_id=>11}]]
|
|
38
|
-
|
|
39
|
-
@ds1.graph(@ds2, :x=>:id).all.must_equal [{:points=>{:id=>1, :x=>2, :y=>3}, :lines=>{:id=>4, :x=>5, :y=>6, :graph_id=>7}}]
|
|
40
|
-
@ds1.graph(@ds2, :x=>:id).graph(@ds3, :id=>:graph_id).all.must_equal [{:points=>{:id=>1, :x=>2, :y=>3}, :lines=>{:id=>4, :x=>5, :y=>6, :graph_id=>7}, :graphs=>{:id=>8, :name=>9, :x=>10, :y=>11, :lines_x=>12}}]
|
|
41
|
-
@ds1.graph(@ds2, :x=>:id).graph(@ds2, {:y=>Sequel[:points][:id]}, :table_alias=>:graph).all.must_equal [{:points=>{:id=>1, :x=>2, :y=>3}, :lines=>{:id=>4, :x=>5, :y=>6, :graph_id=>7}, :graph=>{:id=>8, :x=>9, :y=>10, :graph_id=>11}}]
|
|
42
|
-
end
|
|
43
|
-
|
|
44
|
-
it "#graph_each should split the result set into component tables when using first" do
|
|
45
|
-
@db.fetch = [[{:id=>1,:x=>2,:y=>3,:lines_id=>4,:lines_x=>5,:lines_y=>6,:graph_id=>7}],
|
|
46
|
-
[{:id=>1,:x=>2,:y=>3,:lines_id=>4,:lines_x=>5,:lines_y=>6,:graph_id=>7, :graphs_id=>8, :name=>9, :graphs_x=>10, :graphs_y=>11, :graphs_lines_x=>12}],
|
|
47
|
-
[{:id=>1,:x=>2,:y=>3,:lines_id=>4,:lines_x=>5,:lines_y=>6,:graph_id=>7, :graph_id_0=>8, :graph_x=>9, :graph_y=>10, :graph_graph_id=>11}]]
|
|
48
|
-
|
|
49
|
-
@ds1.graph(@ds2, :x=>:id).first.must_equal(:points=>{:id=>1, :x=>2, :y=>3}, :lines=>{:id=>4, :x=>5, :y=>6, :graph_id=>7})
|
|
50
|
-
@ds1.graph(@ds2, :x=>:id).graph(@ds3, :id=>:graph_id).first.must_equal(:points=>{:id=>1, :x=>2, :y=>3}, :lines=>{:id=>4, :x=>5, :y=>6, :graph_id=>7}, :graphs=>{:id=>8, :name=>9, :x=>10, :y=>11, :lines_x=>12})
|
|
51
|
-
@ds1.graph(@ds2, :x=>:id).graph(@ds2, {:y=>Sequel[:points][:id]}, :table_alias=>:graph).first.must_equal(:points=>{:id=>1, :x=>2, :y=>3}, :lines=>{:id=>4, :x=>5, :y=>6, :graph_id=>7}, :graph=>{:id=>8, :x=>9, :y=>10, :graph_id=>11})
|
|
52
|
-
end
|
|
53
|
-
|
|
54
|
-
it "#graph_each should give a nil value instead of a hash when all values for a table are nil" do
|
|
55
|
-
@db.fetch = [[{:id=>1,:x=>2,:y=>3,:lines_id=>nil,:lines_x=>nil,:lines_y=>nil,:graph_id=>nil}],
|
|
56
|
-
[{:id=>1,:x=>2,:y=>3,:lines_id=>4,:lines_x=>5,:lines_y=>6,:graph_id=>7, :graphs_id=>nil, :name=>nil, :graphs_x=>nil, :graphs_y=>nil, :graphs_lines_x=>nil},
|
|
57
|
-
{:id=>2,:x=>4,:y=>5,:lines_id=>nil,:lines_x=>nil,:lines_y=>nil,:graph_id=>nil, :graphs_id=>nil, :name=>nil, :graphs_x=>nil, :graphs_y=>nil, :graphs_lines_x=>nil},
|
|
58
|
-
{:id=>3,:x=>5,:y=>6,:lines_id=>4,:lines_x=>5,:lines_y=>6,:graph_id=>7, :graphs_id=>7, :name=>8, :graphs_x=>9, :graphs_y=>10, :graphs_lines_x=>11},
|
|
59
|
-
{:id=>3,:x=>5,:y=>6,:lines_id=>7,:lines_x=>5,:lines_y=>8,:graph_id=>9, :graphs_id=>9, :name=>10, :graphs_x=>10, :graphs_y=>11, :graphs_lines_x=>12}]]
|
|
60
|
-
|
|
61
|
-
@ds1.graph(@ds2, :x=>:id).all.must_equal [{:points=>{:id=>1, :x=>2, :y=>3}, :lines=>nil}]
|
|
62
|
-
@ds1.graph(@ds2, :x=>:id).graph(@ds3, :id=>:graph_id).all.must_equal [{:points=>{:id=>1, :x=>2, :y=>3}, :lines=>{:id=>4, :x=>5, :y=>6, :graph_id=>7}, :graphs=>nil},
|
|
63
|
-
{:points=>{:id=>2, :x=>4, :y=>5}, :lines=>nil, :graphs=>nil},
|
|
64
|
-
{:points=>{:id=>3, :x=>5, :y=>6}, :lines=>{:id=>4, :x=>5, :y=>6, :graph_id=>7}, :graphs=>{:id=>7, :name=>8, :x=>9, :y=>10, :lines_x=>11}},
|
|
65
|
-
{:points=>{:id=>3, :x=>5, :y=>6}, :lines=>{:id=>7, :x=>5, :y=>8, :graph_id=>9}, :graphs=>{:id=>9, :name=>10, :x=>10, :y=>11, :lines_x=>12}}]
|
|
66
|
-
end
|
|
67
|
-
|
|
68
|
-
it "#graph_each should not give a nil value instead of a hash when any value for a table is false" do
|
|
69
|
-
@db.fetch = {:id=>1,:x=>2,:y=>3,:lines_id=>nil,:lines_x=>false,:lines_y=>nil,:graph_id=>nil}
|
|
70
|
-
@ds1.graph(@ds2, :x=>:id).all.must_equal [{:points=>{:id=>1, :x=>2, :y=>3}, :lines=>{:id=>nil, :x=>false, :y=>nil, :graph_id=>nil}}]
|
|
71
|
-
end
|
|
72
|
-
|
|
73
|
-
it "#graph_each should not included tables graphed with the :select => false option in the result set" do
|
|
74
|
-
@db.fetch = {:id=>1,:x=>2,:y=>3,:graphs_id=>8, :name=>9, :graphs_x=>10, :graphs_y=>11, :lines_x=>12}
|
|
75
|
-
@ds1.graph(:lines, {:x=>:id}, :select=>false).graph(:graphs, :id=>:graph_id).all.must_equal [{:points=>{:id=>1, :x=>2, :y=>3}, :graphs=>{:id=>8, :name=>9, :x=>10, :y=>11, :lines_x=>12}}]
|
|
76
|
-
end
|
|
77
|
-
|
|
78
|
-
it "#graph_each should only include the columns selected with #set_graph_aliases and #add_graph_aliases, if called" do
|
|
79
|
-
@db.fetch = [[{:x=>2,:y=>3}], [{:x=>2}], [{:x=>2, :q=>18}]]
|
|
80
|
-
|
|
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
|
-
ds = @ds1.graph(:lines, :x=>:id).set_graph_aliases(:x=>[:points, :x])
|
|
83
|
-
ds.all.must_equal [{:points=>{:x=>2}, :lines=>nil}]
|
|
84
|
-
ds = ds.add_graph_aliases(:q=>[:points, :r, 18])
|
|
85
|
-
ds.all.must_equal [{:points=>{:x=>2, :r=>18}, :lines=>nil}]
|
|
86
|
-
end
|
|
87
|
-
|
|
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 = [{:x=>2,:y=>3}]
|
|
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
|
-
end
|
|
92
|
-
|
|
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 = [{:x=>2,:y=>3}]
|
|
95
|
-
@ds1.graph(:lines, :x=>:id).set_graph_aliases(:x=>[:points], :y=>[:lines]).all.must_equal [{:points=>{:x=>2}, :lines=>{:y=>3}}]
|
|
96
|
-
end
|
|
97
|
-
|
|
98
|
-
it "#graph_each should correctly map values when #set_graph_aliases is used with a symbol for each entry" do
|
|
99
|
-
@db.fetch = [{:x=>2,:y=>3}]
|
|
100
|
-
@ds1.graph(:lines, :x=>:id).set_graph_aliases(:x=>:points, :y=>:lines).all.must_equal [{:points=>{:x=>2}, :lines=>{:y=>3}}]
|
|
101
|
-
end
|
|
102
|
-
|
|
103
|
-
it "#graph_each should run the row_proc for graphed datasets" do
|
|
104
|
-
@db.fetch = {:id=>1,:x=>2,:y=>3,:lines_id=>4,:lines_x=>5,:lines_y=>6,:graph_id=>7}
|
|
105
|
-
@ds1.with_row_proc(proc{|h| h.keys.each{|k| h[k] *= 2}; h}).graph(@ds2.with_row_proc(proc{|h| h.keys.each{|k| h[k] *= 3}; h}), :x=>:id).all.must_equal [{:points=>{:id=>2, :x=>4, :y=>6}, :lines=>{:id=>12, :x=>15, :y=>18, :graph_id=>21}}]
|
|
106
|
-
end
|
|
107
|
-
|
|
108
|
-
it "#with_sql_each should work normally if the dataset is not graphed" do
|
|
109
|
-
@db.fetch = {:x=>1}
|
|
110
|
-
@db.dataset.with_sql_each('SELECT 1 AS x'){|r| r.must_equal(:x=>1)}
|
|
111
|
-
@db.sqls.must_equal ['SELECT 1 AS x']
|
|
112
|
-
end
|
|
113
|
-
end
|
|
@@ -1,402 +0,0 @@
|
|
|
1
|
-
require_relative "spec_helper"
|
|
2
|
-
|
|
3
|
-
model_class = proc do |klass, &block|
|
|
4
|
-
c = Class.new(klass)
|
|
5
|
-
c.plugin :hook_class_methods
|
|
6
|
-
c.class_eval(&block) if block
|
|
7
|
-
c
|
|
8
|
-
end
|
|
9
|
-
|
|
10
|
-
describe Sequel::Model, "hook_class_methods plugin" do
|
|
11
|
-
before do
|
|
12
|
-
DB.reset
|
|
13
|
-
end
|
|
14
|
-
|
|
15
|
-
it "should freeze hooks when freezing model class" do
|
|
16
|
-
c = model_class.call Sequel::Model do
|
|
17
|
-
before_save{adds << 'hi'}
|
|
18
|
-
end
|
|
19
|
-
c.freeze
|
|
20
|
-
hooks = c.instance_variable_get(:@hooks)
|
|
21
|
-
hooks.frozen?.must_equal true
|
|
22
|
-
hooks.values.all?(&:frozen?).must_equal true
|
|
23
|
-
end
|
|
24
|
-
|
|
25
|
-
deprecated ".hook_blocks method should yield each hook block" do
|
|
26
|
-
c = model_class.call Sequel::Model
|
|
27
|
-
a = []
|
|
28
|
-
c.hook_blocks(:before_save){|b| a << b}
|
|
29
|
-
a.must_equal []
|
|
30
|
-
|
|
31
|
-
pr = proc{adds << 'hi'}
|
|
32
|
-
c.before_save(&pr)
|
|
33
|
-
a = []
|
|
34
|
-
c.hook_blocks(:before_save){|b| a << b}
|
|
35
|
-
a.must_equal [pr]
|
|
36
|
-
|
|
37
|
-
c.before_save(&pr)
|
|
38
|
-
a = []
|
|
39
|
-
c.hook_blocks(:before_save){|b| a << b}
|
|
40
|
-
a.must_equal [pr, pr]
|
|
41
|
-
|
|
42
|
-
a = []
|
|
43
|
-
c.hook_blocks(:after_save){|b| a << b}
|
|
44
|
-
a.must_equal []
|
|
45
|
-
end
|
|
46
|
-
|
|
47
|
-
it "should be definable using a block" do
|
|
48
|
-
adds = []
|
|
49
|
-
c = model_class.call Sequel::Model do
|
|
50
|
-
before_save{adds << 'hi'}
|
|
51
|
-
end
|
|
52
|
-
|
|
53
|
-
c.new.before_save
|
|
54
|
-
adds.must_equal ['hi']
|
|
55
|
-
end
|
|
56
|
-
|
|
57
|
-
it "should be definable using a method name" do
|
|
58
|
-
adds = []
|
|
59
|
-
c = model_class.call Sequel::Model do
|
|
60
|
-
define_method(:bye){adds << 'bye'}
|
|
61
|
-
before_save :bye
|
|
62
|
-
end
|
|
63
|
-
|
|
64
|
-
c.new.before_save
|
|
65
|
-
adds.must_equal ['bye']
|
|
66
|
-
end
|
|
67
|
-
|
|
68
|
-
it "should be additive" do
|
|
69
|
-
adds = []
|
|
70
|
-
c = model_class.call Sequel::Model do
|
|
71
|
-
after_save{adds << 'hyiyie'}
|
|
72
|
-
after_save{adds << 'byiyie'}
|
|
73
|
-
end
|
|
74
|
-
|
|
75
|
-
c.new.after_save
|
|
76
|
-
adds.must_equal ['hyiyie', 'byiyie']
|
|
77
|
-
end
|
|
78
|
-
|
|
79
|
-
it "before hooks should run in reverse order" do
|
|
80
|
-
adds = []
|
|
81
|
-
c = model_class.call Sequel::Model do
|
|
82
|
-
before_save{adds << 'hyiyie'}
|
|
83
|
-
before_save{adds << 'byiyie'}
|
|
84
|
-
end
|
|
85
|
-
|
|
86
|
-
c.new.before_save
|
|
87
|
-
adds.must_equal ['byiyie', 'hyiyie']
|
|
88
|
-
end
|
|
89
|
-
|
|
90
|
-
it "should not be additive if the method or tag already exists" do
|
|
91
|
-
adds = []
|
|
92
|
-
c = model_class.call Sequel::Model do
|
|
93
|
-
define_method(:bye){adds << 'bye'}
|
|
94
|
-
before_save :bye
|
|
95
|
-
before_save :bye
|
|
96
|
-
end
|
|
97
|
-
|
|
98
|
-
c.new.before_save
|
|
99
|
-
adds.must_equal ['bye']
|
|
100
|
-
|
|
101
|
-
adds = []
|
|
102
|
-
d = model_class.call Sequel::Model do
|
|
103
|
-
before_save(:bye){adds << 'hyiyie'}
|
|
104
|
-
before_save(:bye){adds << 'byiyie'}
|
|
105
|
-
end
|
|
106
|
-
|
|
107
|
-
d.new.before_save
|
|
108
|
-
adds.must_equal ['byiyie']
|
|
109
|
-
|
|
110
|
-
adds = []
|
|
111
|
-
e = model_class.call Sequel::Model do
|
|
112
|
-
define_method(:bye){adds << 'bye'}
|
|
113
|
-
before_save :bye
|
|
114
|
-
before_save(:bye){adds << 'byiyie'}
|
|
115
|
-
end
|
|
116
|
-
|
|
117
|
-
e.new.before_save
|
|
118
|
-
adds.must_equal ['byiyie']
|
|
119
|
-
|
|
120
|
-
adds = []
|
|
121
|
-
e = model_class.call Sequel::Model do
|
|
122
|
-
define_method(:bye){adds << 'bye'}
|
|
123
|
-
before_save(:bye){adds << 'byiyie'}
|
|
124
|
-
before_save :bye
|
|
125
|
-
end
|
|
126
|
-
|
|
127
|
-
e.new.before_save
|
|
128
|
-
adds.must_equal ['bye']
|
|
129
|
-
end
|
|
130
|
-
|
|
131
|
-
it "should be inheritable" do
|
|
132
|
-
adds = []
|
|
133
|
-
a = model_class.call Sequel::Model do
|
|
134
|
-
after_save{adds << '123'}
|
|
135
|
-
end
|
|
136
|
-
|
|
137
|
-
b = Class.new(a)
|
|
138
|
-
b.class_eval do
|
|
139
|
-
after_save{adds << '456'}
|
|
140
|
-
after_save{adds << '789'}
|
|
141
|
-
end
|
|
142
|
-
|
|
143
|
-
b.new.after_save
|
|
144
|
-
adds.must_equal ['123', '456', '789']
|
|
145
|
-
end
|
|
146
|
-
|
|
147
|
-
it "should be overridable in descendant classes" do
|
|
148
|
-
adds = []
|
|
149
|
-
a = model_class.call Sequel::Model do
|
|
150
|
-
before_save{adds << '123'}
|
|
151
|
-
end
|
|
152
|
-
|
|
153
|
-
b = Class.new(a)
|
|
154
|
-
b.class_eval do
|
|
155
|
-
define_method(:before_save){adds << '456'}
|
|
156
|
-
end
|
|
157
|
-
|
|
158
|
-
a.new.before_save
|
|
159
|
-
adds.must_equal ['123']
|
|
160
|
-
adds = []
|
|
161
|
-
b.new.before_save
|
|
162
|
-
adds.must_equal ['456']
|
|
163
|
-
end
|
|
164
|
-
|
|
165
|
-
it "should stop processing if a before hook calls cancel_action" do
|
|
166
|
-
flag = true
|
|
167
|
-
adds = []
|
|
168
|
-
|
|
169
|
-
a = model_class.call Sequel::Model(:items) do
|
|
170
|
-
before_save{adds << 'cruel'; cancel_action if flag == false}
|
|
171
|
-
before_save{adds << 'blah'; cancel_action if flag == false}
|
|
172
|
-
end
|
|
173
|
-
|
|
174
|
-
a.raise_on_save_failure = false
|
|
175
|
-
a.new.save
|
|
176
|
-
adds.must_equal ['blah', 'cruel']
|
|
177
|
-
|
|
178
|
-
# chain should not break on nil
|
|
179
|
-
adds = []
|
|
180
|
-
flag = nil
|
|
181
|
-
a.new.save
|
|
182
|
-
adds.must_equal ['blah', 'cruel']
|
|
183
|
-
|
|
184
|
-
adds = []
|
|
185
|
-
flag = false
|
|
186
|
-
a.new.save
|
|
187
|
-
adds.must_equal ['blah']
|
|
188
|
-
|
|
189
|
-
b = Class.new(a)
|
|
190
|
-
b.class_eval do
|
|
191
|
-
before_save{adds << 'mau'}
|
|
192
|
-
end
|
|
193
|
-
|
|
194
|
-
adds = []
|
|
195
|
-
b.new.save
|
|
196
|
-
adds.must_equal ['mau', 'blah']
|
|
197
|
-
end
|
|
198
|
-
end
|
|
199
|
-
|
|
200
|
-
describe "Model#before_create && Model#after_create" do
|
|
201
|
-
before do
|
|
202
|
-
DB.reset
|
|
203
|
-
|
|
204
|
-
@c = model_class.call Sequel::Model(:items) do
|
|
205
|
-
columns :x
|
|
206
|
-
no_primary_key
|
|
207
|
-
|
|
208
|
-
after_create {DB << "BLAH after"}
|
|
209
|
-
end
|
|
210
|
-
end
|
|
211
|
-
|
|
212
|
-
it "should be called around new record creation" do
|
|
213
|
-
@c.before_create {DB << "BLAH before"}
|
|
214
|
-
@c.create(:x => 2)
|
|
215
|
-
DB.sqls.must_equal ['BLAH before', 'INSERT INTO items (x) VALUES (2)', 'BLAH after']
|
|
216
|
-
end
|
|
217
|
-
|
|
218
|
-
it ".create should cancel the save and raise an error if before_create calls cancel_action and raise_on_save_failure is true" do
|
|
219
|
-
@c.before_create{cancel_action}
|
|
220
|
-
proc{@c.create(:x => 2)}.must_raise(Sequel::HookFailed)
|
|
221
|
-
DB.sqls.must_equal []
|
|
222
|
-
end
|
|
223
|
-
|
|
224
|
-
it ".create should cancel the save and return nil if before_create calls cancel_action and raise_on_save_failure is false" do
|
|
225
|
-
@c.before_create{cancel_action}
|
|
226
|
-
@c.raise_on_save_failure = false
|
|
227
|
-
@c.create(:x => 2).must_be_nil
|
|
228
|
-
DB.sqls.must_equal []
|
|
229
|
-
end
|
|
230
|
-
end
|
|
231
|
-
|
|
232
|
-
describe "Model#before_update && Model#after_update" do
|
|
233
|
-
before do
|
|
234
|
-
DB.reset
|
|
235
|
-
|
|
236
|
-
@c = model_class.call(Sequel::Model(:items)) do
|
|
237
|
-
after_update {DB << "BLAH after"}
|
|
238
|
-
end
|
|
239
|
-
end
|
|
240
|
-
|
|
241
|
-
it "should be called around record update" do
|
|
242
|
-
@c.before_update {DB << "BLAH before"}
|
|
243
|
-
m = @c.load(:id => 2233, :x=>123)
|
|
244
|
-
m.save
|
|
245
|
-
DB.sqls.must_equal ['BLAH before', 'UPDATE items SET x = 123 WHERE (id = 2233)', 'BLAH after']
|
|
246
|
-
end
|
|
247
|
-
|
|
248
|
-
it "#save should cancel the save and raise an error if before_update calls cancel_action and raise_on_save_failure is true" do
|
|
249
|
-
@c.before_update{cancel_action}
|
|
250
|
-
proc{@c.load(:id => 2233).save}.must_raise(Sequel::HookFailed)
|
|
251
|
-
DB.sqls.must_equal []
|
|
252
|
-
end
|
|
253
|
-
|
|
254
|
-
it "#save should cancel the save and return nil if before_update calls cancel_action and raise_on_save_failure is false" do
|
|
255
|
-
@c.before_update{cancel_action}
|
|
256
|
-
@c.raise_on_save_failure = false
|
|
257
|
-
@c.load(:id => 2233).save.must_be_nil
|
|
258
|
-
DB.sqls.must_equal []
|
|
259
|
-
end
|
|
260
|
-
end
|
|
261
|
-
|
|
262
|
-
describe "Model#before_save && Model#after_save" do
|
|
263
|
-
before do
|
|
264
|
-
DB.reset
|
|
265
|
-
|
|
266
|
-
@c = model_class.call(Sequel::Model(:items)) do
|
|
267
|
-
columns :x
|
|
268
|
-
after_save {DB << "BLAH after"}
|
|
269
|
-
end
|
|
270
|
-
end
|
|
271
|
-
|
|
272
|
-
it "should be called around record update" do
|
|
273
|
-
@c.before_save {DB << "BLAH before"}
|
|
274
|
-
m = @c.load(:id => 2233, :x=>123)
|
|
275
|
-
m.save
|
|
276
|
-
DB.sqls.must_equal ['BLAH before', 'UPDATE items SET x = 123 WHERE (id = 2233)', 'BLAH after']
|
|
277
|
-
end
|
|
278
|
-
|
|
279
|
-
it "should be called around record creation" do
|
|
280
|
-
@c.before_save {DB << "BLAH before"}
|
|
281
|
-
@c.no_primary_key
|
|
282
|
-
@c.create(:x => 2)
|
|
283
|
-
DB.sqls.must_equal ['BLAH before', 'INSERT INTO items (x) VALUES (2)', 'BLAH after']
|
|
284
|
-
end
|
|
285
|
-
|
|
286
|
-
it "#save should cancel the save and raise an error if before_save calls cancel_action and raise_on_save_failure is true" do
|
|
287
|
-
@c.before_save{cancel_action}
|
|
288
|
-
proc{@c.load(:id => 2233).save}.must_raise(Sequel::HookFailed)
|
|
289
|
-
DB.sqls.must_equal []
|
|
290
|
-
end
|
|
291
|
-
|
|
292
|
-
it "#save should cancel the save and return nil if before_save calls cancel_action and raise_on_save_failure is false" do
|
|
293
|
-
@c.before_save{cancel_action}
|
|
294
|
-
@c.raise_on_save_failure = false
|
|
295
|
-
@c.load(:id => 2233).save.must_be_nil
|
|
296
|
-
DB.sqls.must_equal []
|
|
297
|
-
end
|
|
298
|
-
end
|
|
299
|
-
|
|
300
|
-
describe "Model#before_destroy && Model#after_destroy" do
|
|
301
|
-
before do
|
|
302
|
-
DB.reset
|
|
303
|
-
|
|
304
|
-
@c = model_class.call(Sequel::Model(:items)) do
|
|
305
|
-
after_destroy {DB << "BLAH after"}
|
|
306
|
-
end
|
|
307
|
-
end
|
|
308
|
-
|
|
309
|
-
it "should be called around record destruction" do
|
|
310
|
-
@c.before_destroy {DB << "BLAH before"}
|
|
311
|
-
m = @c.load(:id => 2233)
|
|
312
|
-
m.destroy
|
|
313
|
-
DB.sqls.must_equal ['BLAH before', "DELETE FROM items WHERE id = 2233", 'BLAH after']
|
|
314
|
-
end
|
|
315
|
-
|
|
316
|
-
it "#destroy should cancel the destroy and raise an error if before_destroy calls cancel_action and raise_on_save_failure is true" do
|
|
317
|
-
@c.before_destroy{cancel_action}
|
|
318
|
-
proc{@c.load(:id => 2233).destroy}.must_raise(Sequel::HookFailed)
|
|
319
|
-
DB.sqls.must_equal []
|
|
320
|
-
end
|
|
321
|
-
|
|
322
|
-
it "#destroy should cancel the destroy and return nil if before_destroy calls cancel_action and raise_on_save_failure is false" do
|
|
323
|
-
@c.before_destroy{cancel_action}
|
|
324
|
-
@c.raise_on_save_failure = false
|
|
325
|
-
@c.load(:id => 2233).destroy.must_be_nil
|
|
326
|
-
DB.sqls.must_equal []
|
|
327
|
-
end
|
|
328
|
-
end
|
|
329
|
-
|
|
330
|
-
describe "Model#before_validation && Model#after_validation" do
|
|
331
|
-
before do
|
|
332
|
-
DB.reset
|
|
333
|
-
|
|
334
|
-
@c = model_class.call(Sequel::Model(:items)) do
|
|
335
|
-
plugin :validation_class_methods
|
|
336
|
-
after_validation{DB << "BLAH after"}
|
|
337
|
-
|
|
338
|
-
def self.validate(o)
|
|
339
|
-
o.errors.add(:id, 'not valid') unless o[:id] == 2233
|
|
340
|
-
end
|
|
341
|
-
columns :id
|
|
342
|
-
end
|
|
343
|
-
end
|
|
344
|
-
|
|
345
|
-
it "should be called around validation" do
|
|
346
|
-
@c.before_validation{DB << "BLAH before"}
|
|
347
|
-
m = @c.load(:id => 2233)
|
|
348
|
-
m.must_be :valid?
|
|
349
|
-
DB.sqls.must_equal ['BLAH before', 'BLAH after']
|
|
350
|
-
|
|
351
|
-
DB.sqls.clear
|
|
352
|
-
m = @c.load(:id => 22)
|
|
353
|
-
m.wont_be :valid?
|
|
354
|
-
DB.sqls.must_equal ['BLAH before', 'BLAH after']
|
|
355
|
-
end
|
|
356
|
-
|
|
357
|
-
it "should be called when calling save" do
|
|
358
|
-
@c.before_validation{DB << "BLAH before"}
|
|
359
|
-
m = @c.load(:id => 2233, :x=>123)
|
|
360
|
-
m.save.must_equal m
|
|
361
|
-
DB.sqls.must_equal ['BLAH before', 'BLAH after', 'UPDATE items SET x = 123 WHERE (id = 2233)']
|
|
362
|
-
|
|
363
|
-
DB.sqls.clear
|
|
364
|
-
m = @c.load(:id => 22)
|
|
365
|
-
m.raise_on_save_failure = false
|
|
366
|
-
m.save.must_be_nil
|
|
367
|
-
DB.sqls.must_equal ['BLAH before', 'BLAH after']
|
|
368
|
-
end
|
|
369
|
-
|
|
370
|
-
it "#save should cancel the save and raise an error if before_validation calls cancel_action and raise_on_save_failure is true" do
|
|
371
|
-
@c.before_validation{cancel_action}
|
|
372
|
-
proc{@c.load(:id => 2233).save}.must_raise(Sequel::HookFailed)
|
|
373
|
-
DB.sqls.must_equal []
|
|
374
|
-
end
|
|
375
|
-
|
|
376
|
-
it "#save should cancel the save and return nil if before_validation calls cancel_action and raise_on_save_failure is false" do
|
|
377
|
-
@c.before_validation{cancel_action}
|
|
378
|
-
@c.raise_on_save_failure = false
|
|
379
|
-
@c.load(:id => 2233).save.must_be_nil
|
|
380
|
-
DB.sqls.must_equal []
|
|
381
|
-
end
|
|
382
|
-
end
|
|
383
|
-
|
|
384
|
-
describe "Model.has_hooks?" do
|
|
385
|
-
before do
|
|
386
|
-
@c = model_class.call(Sequel::Model(:items))
|
|
387
|
-
end
|
|
388
|
-
|
|
389
|
-
it "should return false if no hooks are defined" do
|
|
390
|
-
@c.has_hooks?(:before_save).must_equal false
|
|
391
|
-
end
|
|
392
|
-
|
|
393
|
-
it "should return true if hooks are defined" do
|
|
394
|
-
@c.before_save {'blah'}
|
|
395
|
-
@c.has_hooks?(:before_save).must_equal true
|
|
396
|
-
end
|
|
397
|
-
|
|
398
|
-
it "should return true if hooks are inherited" do
|
|
399
|
-
@d = Class.new(@c)
|
|
400
|
-
@d.has_hooks?(:before_save).must_equal false
|
|
401
|
-
end
|
|
402
|
-
end
|