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,86 +0,0 @@
|
|
|
1
|
-
require_relative "spec_helper"
|
|
2
|
-
|
|
3
|
-
describe Sequel::Model, "TypecastOnLoad plugin" do
|
|
4
|
-
before do
|
|
5
|
-
@db = Sequel.mock(:fetch=>{:id=>1, :b=>"1", :y=>"0"}, :columns=>[:id, :b, :y], :numrows=>1)
|
|
6
|
-
def @db.supports_schema_parsing?() true end
|
|
7
|
-
def @db.schema(*args)
|
|
8
|
-
[[:id, {}], [:y, {:type=>:boolean, :db_type=>'tinyint(1)'}], [:b, {:type=>:integer, :db_type=>'integer'}]]
|
|
9
|
-
end
|
|
10
|
-
@c = Class.new(Sequel::Model(@db[:items])) do
|
|
11
|
-
attr_accessor :bset
|
|
12
|
-
def b=(x)
|
|
13
|
-
self.bset = true
|
|
14
|
-
super
|
|
15
|
-
end
|
|
16
|
-
end
|
|
17
|
-
end
|
|
18
|
-
|
|
19
|
-
it "should call setter method with value when loading the object, for all given columns" do
|
|
20
|
-
@c.plugin :typecast_on_load, :b
|
|
21
|
-
o = @c.load(:id=>1, :b=>"1", :y=>"0")
|
|
22
|
-
o.values.must_equal(:id=>1, :b=>1, :y=>"0")
|
|
23
|
-
o.bset.must_equal true
|
|
24
|
-
end
|
|
25
|
-
|
|
26
|
-
it "should call setter method with value when reloading the object, for all given columns" do
|
|
27
|
-
@c.plugin :typecast_on_load, :b
|
|
28
|
-
o = @c.load(:id=>1, :b=>"1", :y=>"0")
|
|
29
|
-
o.refresh
|
|
30
|
-
o.values.must_equal(:id=>1, :b=>1, :y=>"0")
|
|
31
|
-
o.bset.must_equal true
|
|
32
|
-
end
|
|
33
|
-
|
|
34
|
-
it "should call setter method with value when automatically reloading the object on creation" do
|
|
35
|
-
@c.plugin :typecast_on_load, :b
|
|
36
|
-
o = @c.new(:b=>"1", :y=>"0")
|
|
37
|
-
o.save.values.must_equal(:id=>1, :b=>1, :y=>"0")
|
|
38
|
-
o.bset.must_equal true
|
|
39
|
-
end
|
|
40
|
-
|
|
41
|
-
it "should call setter method with value when automatically reloading the object on creation via insert_select" do
|
|
42
|
-
@c.plugin :typecast_on_load, :b
|
|
43
|
-
@c.dataset = @c.dataset.with_extend{def insert_select(h) insert(h); first end}
|
|
44
|
-
o = @c.new(:b=>"1", :y=>"0")
|
|
45
|
-
o.save.values.must_equal(:id=>1, :b=>1, :y=>"0")
|
|
46
|
-
o.bset.must_equal true
|
|
47
|
-
end
|
|
48
|
-
|
|
49
|
-
it "should allowing setting columns separately via add_typecast_on_load_columns" do
|
|
50
|
-
@c.plugin :typecast_on_load
|
|
51
|
-
@c.load(:id=>1, :b=>"1", :y=>"0").values.must_equal(:id=>1, :b=>"1", :y=>"0")
|
|
52
|
-
@c.add_typecast_on_load_columns :b
|
|
53
|
-
@c.load(:id=>1, :b=>"1", :y=>"0").values.must_equal(:id=>1, :b=>1, :y=>"0")
|
|
54
|
-
@c.add_typecast_on_load_columns :y
|
|
55
|
-
@c.load(:id=>1, :b=>"1", :y=>"0").values.must_equal(:id=>1, :b=>1, :y=>false)
|
|
56
|
-
end
|
|
57
|
-
|
|
58
|
-
it "should work with subclasses" do
|
|
59
|
-
@c.plugin :typecast_on_load
|
|
60
|
-
@c.load(:id=>1, :b=>"1", :y=>"0").values.must_equal(:id=>1, :b=>"1", :y=>"0")
|
|
61
|
-
|
|
62
|
-
c1 = Class.new(@c)
|
|
63
|
-
@c.add_typecast_on_load_columns :b
|
|
64
|
-
@c.load(:id=>1, :b=>"1", :y=>"0").values.must_equal(:id=>1, :b=>1, :y=>"0")
|
|
65
|
-
c1.load(:id=>1, :b=>"1", :y=>"0").values.must_equal(:id=>1, :b=>"1", :y=>"0")
|
|
66
|
-
|
|
67
|
-
c2 = Class.new(@c)
|
|
68
|
-
@c.add_typecast_on_load_columns :y
|
|
69
|
-
@c.load(:id=>1, :b=>"1", :y=>"0").values.must_equal(:id=>1, :b=>1, :y=>false)
|
|
70
|
-
c2.load(:id=>1, :b=>"1", :y=>"0").values.must_equal(:id=>1, :b=>1, :y=>"0")
|
|
71
|
-
|
|
72
|
-
c1.add_typecast_on_load_columns :y
|
|
73
|
-
c1.load(:id=>1, :b=>"1", :y=>"0").values.must_equal(:id=>1, :b=>"1", :y=>false)
|
|
74
|
-
end
|
|
75
|
-
|
|
76
|
-
it "should not mark the object as modified" do
|
|
77
|
-
@c.plugin :typecast_on_load, :b
|
|
78
|
-
@c.load(:id=>1, :b=>"1", :y=>"0").modified?.must_equal false
|
|
79
|
-
end
|
|
80
|
-
|
|
81
|
-
it "should freeze typecast_on_load columns when freezing model class" do
|
|
82
|
-
@c.plugin :typecast_on_load, :b
|
|
83
|
-
@c.freeze
|
|
84
|
-
@c.typecast_on_load_columns.frozen?.must_equal true
|
|
85
|
-
end
|
|
86
|
-
end
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
require_relative "spec_helper"
|
|
2
|
-
|
|
3
|
-
describe "Sequel::Plugins::UnlimitedUpdate" do
|
|
4
|
-
before do
|
|
5
|
-
@db = Sequel.mock(:host=>'mysql', :numrows=>1)
|
|
6
|
-
@db.extend_datasets{def quote_identifiers?; false end}
|
|
7
|
-
@c = Class.new(Sequel::Model(@db[:test]))
|
|
8
|
-
@c.columns :id, :name
|
|
9
|
-
@o = @c.load(:id=>1, :name=>'a')
|
|
10
|
-
@db.sqls
|
|
11
|
-
end
|
|
12
|
-
|
|
13
|
-
it "should remove limit from update dataset" do
|
|
14
|
-
@o.save
|
|
15
|
-
@db.sqls.must_equal ["UPDATE test SET name = 'a' WHERE (id = 1) LIMIT 1"]
|
|
16
|
-
|
|
17
|
-
@c.plugin :unlimited_update
|
|
18
|
-
@o.save
|
|
19
|
-
@db.sqls.must_equal ["UPDATE test SET name = 'a' WHERE (id = 1)"]
|
|
20
|
-
end
|
|
21
|
-
end
|
|
@@ -1,83 +0,0 @@
|
|
|
1
|
-
require_relative "spec_helper"
|
|
2
|
-
|
|
3
|
-
describe "Sequel::Plugins::UpdateOrCreate" do
|
|
4
|
-
before do
|
|
5
|
-
@db = Sequel.mock(:autoid=>proc{1}, :numrows=>1)
|
|
6
|
-
@c = Class.new(Sequel::Model(@db[:test]))
|
|
7
|
-
@c.plugin :update_or_create
|
|
8
|
-
@c.columns :id, :a, :b
|
|
9
|
-
@db.sqls
|
|
10
|
-
end
|
|
11
|
-
|
|
12
|
-
it ".update_or_create should update an existing record if one exists" do
|
|
13
|
-
@db.fetch = [[{:id=>1, :a=>2, :b=>3}]]
|
|
14
|
-
@c.update_or_create(:a=>2){|t| t.b = 4}.must_equal @c.load(:id=>1, :a=>2, :b=>4)
|
|
15
|
-
@db.sqls.must_equal ["SELECT * FROM test WHERE (a = 2) LIMIT 1", "UPDATE test SET b = 4 WHERE (id = 1)"]
|
|
16
|
-
|
|
17
|
-
@db.fetch = [[{:id=>1, :a=>2, :b=>3}]]
|
|
18
|
-
@c.update_or_create({:a=>2}, :b=>4).must_equal @c.load(:id=>1, :a=>2, :b=>4)
|
|
19
|
-
@db.sqls.must_equal ["SELECT * FROM test WHERE (a = 2) LIMIT 1", "UPDATE test SET b = 4 WHERE (id = 1)"]
|
|
20
|
-
|
|
21
|
-
@db.fetch = [[{:id=>1, :a=>2, :b=>3}]]
|
|
22
|
-
@c.update_or_create({:a=>2}, :a=>3){|t| t.b = 4}.must_equal @c.load(:id=>1, :a=>3, :b=>4)
|
|
23
|
-
@db.sqls.must_equal ["SELECT * FROM test WHERE (a = 2) LIMIT 1",
|
|
24
|
-
'UPDATE test SET a = 3, b = 4 WHERE (id = 1)']
|
|
25
|
-
end
|
|
26
|
-
|
|
27
|
-
it ".update_or_create should create a record if an existing record does not exist" do
|
|
28
|
-
@db.fetch = [[], [{:id=>1, :a=>1, :b=>4}]]
|
|
29
|
-
@c.update_or_create(:a=>1){|t| t.b = 4}.must_equal @c.load(:id=>1, :a=>1, :b=>4)
|
|
30
|
-
@db.sqls.must_equal ["SELECT * FROM test WHERE (a = 1) LIMIT 1",
|
|
31
|
-
"INSERT INTO test (a, b) VALUES (1, 4)",
|
|
32
|
-
"SELECT * FROM test WHERE (id = 1) LIMIT 1"]
|
|
33
|
-
|
|
34
|
-
@db.fetch = [[], [{:id=>1, :a=>1, :b=>4}]]
|
|
35
|
-
@c.update_or_create({:a=>1}, :b=>4).must_equal @c.load(:id=>1, :a=>1, :b=>4)
|
|
36
|
-
@db.sqls.must_equal ["SELECT * FROM test WHERE (a = 1) LIMIT 1",
|
|
37
|
-
"INSERT INTO test (a, b) VALUES (1, 4)",
|
|
38
|
-
"SELECT * FROM test WHERE (id = 1) LIMIT 1"]
|
|
39
|
-
|
|
40
|
-
@db.fetch = [[], [{:id=>1, :a=>3, :b=>4}]]
|
|
41
|
-
@c.update_or_create({:a=>1}, :a=>3){|t| t.b = 4}.must_equal @c.load(:id=>1, :a=>3, :b=>4)
|
|
42
|
-
@db.sqls.must_equal ["SELECT * FROM test WHERE (a = 1) LIMIT 1",
|
|
43
|
-
"INSERT INTO test (a, b) VALUES (3, 4)",
|
|
44
|
-
"SELECT * FROM test WHERE (id = 1) LIMIT 1"]
|
|
45
|
-
end
|
|
46
|
-
|
|
47
|
-
it ".update_or_create should return an existing record even if no changes necessary" do
|
|
48
|
-
@db.fetch = [[{:id=>1, :a=>2, :b=>3}]]
|
|
49
|
-
@c.update_or_create(:a=>2){|t| t.b = 3}.must_equal @c.load(:id=>1, :a=>2, :b=>3)
|
|
50
|
-
@db.sqls.must_equal ["SELECT * FROM test WHERE (a = 2) LIMIT 1"]
|
|
51
|
-
end
|
|
52
|
-
|
|
53
|
-
it ".find_or_new should return an existing record" do
|
|
54
|
-
@db.fetch = [[{:id=>1, :a=>2, :b=>3}]]
|
|
55
|
-
@c.find_or_new(:a=>2){|t| t.b = 4}.must_equal @c.load(:id=>1, :a=>2, :b=>4)
|
|
56
|
-
@db.sqls.must_equal ["SELECT * FROM test WHERE (a = 2) LIMIT 1"]
|
|
57
|
-
|
|
58
|
-
@db.fetch = [[{:id=>1, :a=>2, :b=>3}]]
|
|
59
|
-
@c.find_or_new({:a=>2}, :b=>4).must_equal @c.load(:id=>1, :a=>2, :b=>4)
|
|
60
|
-
@db.sqls.must_equal ["SELECT * FROM test WHERE (a = 2) LIMIT 1"]
|
|
61
|
-
|
|
62
|
-
@db.fetch = [[{:id=>1, :a=>2, :b=>3}]]
|
|
63
|
-
@c.find_or_new({:a=>2}, :a=>3){|t| t.b = 4}.must_equal @c.load(:id=>1, :a=>3, :b=>4)
|
|
64
|
-
@db.sqls.must_equal ["SELECT * FROM test WHERE (a = 2) LIMIT 1"]
|
|
65
|
-
end
|
|
66
|
-
|
|
67
|
-
it ".find_or_new should return a new record if no record exists" do
|
|
68
|
-
o = @c.find_or_new(:a=>1){|t| t.b = 4}
|
|
69
|
-
o.must_equal @c.load(:a=>1, :b=>4)
|
|
70
|
-
o.new?.must_equal true
|
|
71
|
-
@db.sqls.must_equal ["SELECT * FROM test WHERE (a = 1) LIMIT 1"]
|
|
72
|
-
|
|
73
|
-
o = @c.find_or_new({:a=>1}, :b=>4)
|
|
74
|
-
o.must_equal @c.load(:a=>1, :b=>4)
|
|
75
|
-
o.new?.must_equal true
|
|
76
|
-
@db.sqls.must_equal ["SELECT * FROM test WHERE (a = 1) LIMIT 1"]
|
|
77
|
-
|
|
78
|
-
o = @c.find_or_new({:a=>1}, :a=>3){|t| t.b = 4}
|
|
79
|
-
o.must_equal @c.load(:a=>3, :b=>4)
|
|
80
|
-
o.new?.must_equal true
|
|
81
|
-
@db.sqls.must_equal ["SELECT * FROM test WHERE (a = 1) LIMIT 1"]
|
|
82
|
-
end
|
|
83
|
-
end
|
|
@@ -1,105 +0,0 @@
|
|
|
1
|
-
require_relative "spec_helper"
|
|
2
|
-
|
|
3
|
-
describe "Sequel::Plugins::UpdatePrimaryKey" do
|
|
4
|
-
before do
|
|
5
|
-
@c = Class.new(Sequel::Model(:a))
|
|
6
|
-
@c.plugin :update_primary_key
|
|
7
|
-
@c.columns :a, :b
|
|
8
|
-
def @c.set_dataset(*)
|
|
9
|
-
super
|
|
10
|
-
set_primary_key :a
|
|
11
|
-
end
|
|
12
|
-
@c.set_primary_key :a
|
|
13
|
-
@c.unrestrict_primary_key
|
|
14
|
-
@ds = @c.dataset
|
|
15
|
-
DB.reset
|
|
16
|
-
end
|
|
17
|
-
|
|
18
|
-
it "should handle regular updates" do
|
|
19
|
-
@c.dataset = @c.dataset.with_fetch([[{:a=>1, :b=>3}], [{:a=>1, :b=>4}], [{:a=>1, :b=>4}], [{:a=>1, :b=>5}], [{:a=>1, :b=>5}], [{:a=>1, :b=>6}], [{:a=>1, :b=>6}]])
|
|
20
|
-
@c.first.update(:b=>4)
|
|
21
|
-
@c.all.must_equal [@c.load(:a=>1, :b=>4)]
|
|
22
|
-
DB.sqls.must_equal ["SELECT * FROM a LIMIT 1", "UPDATE a SET b = 4 WHERE (a = 1)", "SELECT * FROM a"]
|
|
23
|
-
@c.first.set(:b=>5).save
|
|
24
|
-
@c.all.must_equal [@c.load(:a=>1, :b=>5)]
|
|
25
|
-
DB.sqls.must_equal ["SELECT * FROM a LIMIT 1", "UPDATE a SET b = 5 WHERE (a = 1)", "SELECT * FROM a"]
|
|
26
|
-
@c.first.set(:b=>6).save(:columns=>:b)
|
|
27
|
-
@c.all.must_equal [@c.load(:a=>1, :b=>6)]
|
|
28
|
-
DB.sqls.must_equal ["SELECT * FROM a LIMIT 1", "UPDATE a SET b = 6 WHERE (a = 1)", "SELECT * FROM a"]
|
|
29
|
-
end
|
|
30
|
-
|
|
31
|
-
it "should handle updating the primary key field with another field" do
|
|
32
|
-
@c.dataset = @c.dataset.with_fetch([[{:a=>1, :b=>3}], [{:a=>2, :b=>4}]])
|
|
33
|
-
@c.first.update(:a=>2, :b=>4)
|
|
34
|
-
@c.all.must_equal [@c.load(:a=>2, :b=>4)]
|
|
35
|
-
sqls = DB.sqls
|
|
36
|
-
["UPDATE a SET a = 2, b = 4 WHERE (a = 1)", "UPDATE a SET b = 4, a = 2 WHERE (a = 1)"].must_include(sqls.slice!(1))
|
|
37
|
-
sqls.must_equal ["SELECT * FROM a LIMIT 1", "SELECT * FROM a"]
|
|
38
|
-
end
|
|
39
|
-
|
|
40
|
-
it "should handle updating just the primary key field when saving changes" do
|
|
41
|
-
@c.dataset = @c.dataset.with_fetch([[{:a=>1, :b=>3}], [{:a=>2, :b=>3}], [{:a=>2, :b=>3}], [{:a=>3, :b=>3}]])
|
|
42
|
-
@c.first.update(:a=>2)
|
|
43
|
-
@c.all.must_equal [@c.load(:a=>2, :b=>3)]
|
|
44
|
-
DB.sqls.must_equal ["SELECT * FROM a LIMIT 1", "UPDATE a SET a = 2 WHERE (a = 1)", "SELECT * FROM a"]
|
|
45
|
-
@c.first.set(:a=>3).save(:columns=>:a)
|
|
46
|
-
@c.all.must_equal [@c.load(:a=>3, :b=>3)]
|
|
47
|
-
DB.sqls.must_equal ["SELECT * FROM a LIMIT 1", "UPDATE a SET a = 3 WHERE (a = 2)", "SELECT * FROM a"]
|
|
48
|
-
end
|
|
49
|
-
|
|
50
|
-
it "should handle saving after modifying the primary key field with another field" do
|
|
51
|
-
@c.dataset = @c.dataset.with_fetch([[{:a=>1, :b=>3}], [{:a=>2, :b=>4}]])
|
|
52
|
-
@c.first.set(:a=>2, :b=>4).save
|
|
53
|
-
@c.all.must_equal [@c.load(:a=>2, :b=>4)]
|
|
54
|
-
sqls = DB.sqls
|
|
55
|
-
["UPDATE a SET a = 2, b = 4 WHERE (a = 1)", "UPDATE a SET b = 4, a = 2 WHERE (a = 1)"].must_include(sqls.slice!(1))
|
|
56
|
-
sqls.must_equal ["SELECT * FROM a LIMIT 1", "SELECT * FROM a"]
|
|
57
|
-
end
|
|
58
|
-
|
|
59
|
-
it "should handle saving after modifying just the primary key field" do
|
|
60
|
-
@c.dataset = @c.dataset.with_fetch([[{:a=>1, :b=>3}], [{:a=>2, :b=>3}]])
|
|
61
|
-
@c.first.set(:a=>2).save
|
|
62
|
-
@c.all.must_equal [@c.load(:a=>2, :b=>3)]
|
|
63
|
-
sqls = DB.sqls
|
|
64
|
-
["UPDATE a SET a = 2, b = 3 WHERE (a = 1)", "UPDATE a SET b = 3, a = 2 WHERE (a = 1)"].must_include(sqls.slice!(1))
|
|
65
|
-
sqls.must_equal ["SELECT * FROM a LIMIT 1", "SELECT * FROM a"]
|
|
66
|
-
end
|
|
67
|
-
|
|
68
|
-
it "should handle saving after updating the primary key" do
|
|
69
|
-
@c.dataset = @c.dataset.with_fetch([[{:a=>1, :b=>3}], [{:a=>2, :b=>5}]])
|
|
70
|
-
@c.first.update(:a=>2).update(:b=>4).set(:b=>5).save
|
|
71
|
-
@c.all.must_equal [@c.load(:a=>2, :b=>5)]
|
|
72
|
-
DB.sqls.must_equal ["SELECT * FROM a LIMIT 1", "UPDATE a SET a = 2 WHERE (a = 1)", "UPDATE a SET b = 4 WHERE (a = 2)", "UPDATE a SET b = 5 WHERE (a = 2)", "SELECT * FROM a"]
|
|
73
|
-
end
|
|
74
|
-
|
|
75
|
-
it "should work correctly when using the prepared_statements plugin" do
|
|
76
|
-
@c.plugin :prepared_statements
|
|
77
|
-
@c.dataset = @c.dataset.with_fetch([[{:a=>1, :b=>3}], [{:a=>2, :b=>4}], [{:a=>3}]])
|
|
78
|
-
o = @c.first
|
|
79
|
-
o.update(:a=>2, :b=>4)
|
|
80
|
-
@c.all.must_equal [@c.load(:a=>2, :b=>4)]
|
|
81
|
-
sqls = DB.sqls
|
|
82
|
-
["UPDATE a SET a = 2, b = 4 WHERE (a = 1)", "UPDATE a SET b = 4, a = 2 WHERE (a = 1)"].must_include(sqls.slice!(1))
|
|
83
|
-
sqls.must_equal ["SELECT * FROM a LIMIT 1", "SELECT * FROM a"]
|
|
84
|
-
|
|
85
|
-
@c.create(:a=>3)
|
|
86
|
-
DB.sqls.must_equal ["INSERT INTO a (a) VALUES (3)", "SELECT * FROM a WHERE a = 3"]
|
|
87
|
-
end
|
|
88
|
-
|
|
89
|
-
it "should clear the associations cache of non-many_to_one associations when changing the primary key" do
|
|
90
|
-
@c.one_to_many :cs, :class=>@c
|
|
91
|
-
@c.many_to_one :c, :class=>@c
|
|
92
|
-
o = @c.new(:a=>1)
|
|
93
|
-
o.associations[:cs] = @c.new
|
|
94
|
-
o.associations[:c] = o2 = @c.new
|
|
95
|
-
o.a = 2
|
|
96
|
-
o.associations.must_equal(:c=>o2)
|
|
97
|
-
end
|
|
98
|
-
|
|
99
|
-
it "should handle frozen instances" do
|
|
100
|
-
o = @c.new
|
|
101
|
-
o.a = 1
|
|
102
|
-
o.freeze
|
|
103
|
-
o.pk_hash.must_equal(:a=>1)
|
|
104
|
-
end
|
|
105
|
-
end
|
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
require_relative "spec_helper"
|
|
2
|
-
|
|
3
|
-
describe "Sequel::Plugins::UpdateRefresh" do
|
|
4
|
-
before do
|
|
5
|
-
@db = Sequel.mock(:numrows=>1, :fetch=>{:id=>1, :name=>'b'})
|
|
6
|
-
@c = Class.new(Sequel::Model(@db[:test]))
|
|
7
|
-
@ds = @c.dataset
|
|
8
|
-
@c.columns :id, :name
|
|
9
|
-
@c.plugin :update_refresh
|
|
10
|
-
@db.sqls
|
|
11
|
-
end
|
|
12
|
-
|
|
13
|
-
it "should refresh the instance after updating" do
|
|
14
|
-
o = @c.load(:id=>1, :name=>'a')
|
|
15
|
-
o.save
|
|
16
|
-
@db.sqls.must_equal ["UPDATE test SET name = 'a' WHERE (id = 1)", "SELECT * FROM test WHERE (id = 1) LIMIT 1"]
|
|
17
|
-
o.name.must_equal 'b'
|
|
18
|
-
end
|
|
19
|
-
|
|
20
|
-
it "should refresh the instance after updating" do
|
|
21
|
-
@db.extend_datasets{def supports_returning?(x) true end; def update_sql(*); sql = super; update_returning_sql(sql); sql end}
|
|
22
|
-
@c.dataset = @db[:test]
|
|
23
|
-
@db.sqls
|
|
24
|
-
o = @c.load(:id=>1, :name=>'a')
|
|
25
|
-
o.save
|
|
26
|
-
@db.sqls.must_equal ["UPDATE test SET name = 'a' WHERE (id = 1) RETURNING *"]
|
|
27
|
-
o.name.must_equal 'b'
|
|
28
|
-
end
|
|
29
|
-
|
|
30
|
-
it "should support specifying columns to return" do
|
|
31
|
-
@db.extend_datasets{def supports_returning?(x) true end; def update_sql(*); sql = super; update_returning_sql(sql); sql end}
|
|
32
|
-
@c.plugin :update_refresh, :columns => [ :a ]
|
|
33
|
-
@c.dataset = @db[:test]
|
|
34
|
-
@db.sqls
|
|
35
|
-
o = @c.load(:id=>1, :name=>'a')
|
|
36
|
-
o.save
|
|
37
|
-
@db.sqls.must_equal ["UPDATE test SET name = 'a' WHERE (id = 1) RETURNING a"]
|
|
38
|
-
o.name.must_equal 'b'
|
|
39
|
-
end
|
|
40
|
-
|
|
41
|
-
it "should refresh the instance after updating when returning specific columns" do
|
|
42
|
-
@db.extend_datasets{def supports_returning?(x) true end; def update_sql(*); sql = super; update_returning_sql(sql); sql end}
|
|
43
|
-
@c.plugin :insert_returning_select
|
|
44
|
-
@c.dataset = @db[:test].select(:id, :name)
|
|
45
|
-
@db.sqls
|
|
46
|
-
o = @c.load(:id=>1, :name=>'a')
|
|
47
|
-
o.instance_variable_set(:@this, o.this.returning(:id, :name))
|
|
48
|
-
o.save
|
|
49
|
-
@db.sqls.must_equal ["UPDATE test SET name = 'a' WHERE (id = 1) RETURNING id, name"]
|
|
50
|
-
o.name.must_equal 'b'
|
|
51
|
-
end
|
|
52
|
-
|
|
53
|
-
it "should freeze update refresh columns when freezing model class" do
|
|
54
|
-
@db.extend_datasets{def supports_returning?(x) true end; def update_sql(*); sql = super; update_returning_sql(sql); sql end}
|
|
55
|
-
@c.plugin :update_refresh, :columns => [ :a ]
|
|
56
|
-
@c.freeze
|
|
57
|
-
@c.update_refresh_columns.frozen?.must_equal true
|
|
58
|
-
end
|
|
59
|
-
end
|
|
@@ -1,101 +0,0 @@
|
|
|
1
|
-
require_relative "spec_helper"
|
|
2
|
-
|
|
3
|
-
describe "Sequel::Plugins::Uuid" do
|
|
4
|
-
before do
|
|
5
|
-
uuid = @uuid = '57308544-4e83-47b8-b87f-6f68b987f4f9'
|
|
6
|
-
@alt_uuid = 'd5d1ec46-5e8e-4a7b-adc9-50e76b819e19'
|
|
7
|
-
@c = Class.new(Sequel::Model(:t))
|
|
8
|
-
@c.class_eval do
|
|
9
|
-
columns :id, :uuid
|
|
10
|
-
plugin :uuid
|
|
11
|
-
def _save_refresh(*) end
|
|
12
|
-
define_method(:create_uuid) do
|
|
13
|
-
uuid
|
|
14
|
-
end
|
|
15
|
-
db.reset
|
|
16
|
-
end
|
|
17
|
-
end
|
|
18
|
-
|
|
19
|
-
it "should handle validations on the uuid field for new objects" do
|
|
20
|
-
@c.plugin :uuid, :force=>true
|
|
21
|
-
o = @c.new
|
|
22
|
-
def o.validate
|
|
23
|
-
errors.add(model.uuid_field, 'not present') unless send(model.uuid_field)
|
|
24
|
-
end
|
|
25
|
-
o.valid?.must_equal true
|
|
26
|
-
end
|
|
27
|
-
|
|
28
|
-
it "should set uuid field when skipping validations" do
|
|
29
|
-
@c.plugin :uuid
|
|
30
|
-
@c.new.save(:validate=>false)
|
|
31
|
-
@c.db.sqls.must_equal ["INSERT INTO t (uuid) VALUES ('#{@uuid}')"]
|
|
32
|
-
end
|
|
33
|
-
|
|
34
|
-
it "should set the uuid field on creation" do
|
|
35
|
-
o = @c.create
|
|
36
|
-
@c.db.sqls.must_equal ["INSERT INTO t (uuid) VALUES ('#{@uuid}')"]
|
|
37
|
-
o.uuid.must_equal @uuid
|
|
38
|
-
end
|
|
39
|
-
|
|
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
|
|
46
|
-
end
|
|
47
|
-
o = c.create
|
|
48
|
-
c.db.sqls.must_equal ["INSERT INTO t (u) VALUES ('#{o.u}')"]
|
|
49
|
-
end
|
|
50
|
-
|
|
51
|
-
it "should not raise an error if the model doesn't have the uuid column" do
|
|
52
|
-
@c.columns :id, :x
|
|
53
|
-
@c.send(:undef_method, :uuid)
|
|
54
|
-
@c.create(:x=>2)
|
|
55
|
-
@c.load(:id=>1, :x=>2).save
|
|
56
|
-
@c.db.sqls.must_equal ["INSERT INTO t (x) VALUES (2)", "UPDATE t SET x = 2 WHERE (id = 1)"]
|
|
57
|
-
end
|
|
58
|
-
|
|
59
|
-
it "should not overwrite an existing uuid value" do
|
|
60
|
-
o = @c.create(:uuid=>@alt_uuid)
|
|
61
|
-
@c.db.sqls.must_equal ["INSERT INTO t (uuid) VALUES ('#{@alt_uuid}')"]
|
|
62
|
-
o.uuid.must_equal @alt_uuid
|
|
63
|
-
end
|
|
64
|
-
|
|
65
|
-
it "should overwrite an existing uuid if the :force option is used" do
|
|
66
|
-
@c.plugin :uuid, :force=>true
|
|
67
|
-
o = @c.create(:uuid=>@alt_uuid)
|
|
68
|
-
@c.db.sqls.must_equal ["INSERT INTO t (uuid) VALUES ('#{@uuid}')"]
|
|
69
|
-
o.uuid.must_equal @uuid
|
|
70
|
-
end
|
|
71
|
-
|
|
72
|
-
it "should have uuid_field give the uuid field" do
|
|
73
|
-
@c.uuid_field.must_equal :uuid
|
|
74
|
-
@c.plugin :uuid, :field=>:u
|
|
75
|
-
@c.uuid_field.must_equal :u
|
|
76
|
-
end
|
|
77
|
-
|
|
78
|
-
it "should have uuid_overwrite? give the whether to overwrite an existing uuid" do
|
|
79
|
-
@c.uuid_overwrite?.must_equal false
|
|
80
|
-
@c.plugin :uuid, :force=>true
|
|
81
|
-
@c.uuid_overwrite?.must_equal true
|
|
82
|
-
end
|
|
83
|
-
|
|
84
|
-
it "should work with subclasses" do
|
|
85
|
-
c = Class.new(@c)
|
|
86
|
-
o = c.create
|
|
87
|
-
o.uuid.must_equal @uuid
|
|
88
|
-
c.db.sqls.must_equal ["INSERT INTO t (uuid) VALUES ('#{@uuid}')"]
|
|
89
|
-
c.create(:uuid=>@alt_uuid).uuid.must_equal @alt_uuid
|
|
90
|
-
|
|
91
|
-
c.class_eval do
|
|
92
|
-
columns :id, :u
|
|
93
|
-
plugin :uuid, :field=>:u, :force=>true
|
|
94
|
-
end
|
|
95
|
-
c2 = Class.new(c)
|
|
96
|
-
c2.db.reset
|
|
97
|
-
o = c2.create
|
|
98
|
-
o.u.must_equal @uuid
|
|
99
|
-
c2.db.sqls.must_equal ["INSERT INTO t (u) VALUES ('#{@uuid}')"]
|
|
100
|
-
end
|
|
101
|
-
end
|