sequel 4.41.0 → 4.42.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 +98 -0
- data/README.rdoc +23 -10
- data/doc/active_record.rdoc +4 -4
- data/doc/advanced_associations.rdoc +2 -2
- data/doc/association_basics.rdoc +5 -2
- data/doc/cheat_sheet.rdoc +3 -3
- data/doc/core_extensions.rdoc +2 -2
- data/doc/dataset_basics.rdoc +4 -4
- data/doc/dataset_filtering.rdoc +1 -1
- data/doc/migration.rdoc +19 -1
- data/doc/prepared_statements.rdoc +2 -2
- data/doc/release_notes/4.42.0.txt +221 -0
- data/doc/testing.rdoc +3 -1
- data/lib/sequel/adapters/ado/access.rb +0 -1
- data/lib/sequel/adapters/ado/mssql.rb +0 -1
- data/lib/sequel/adapters/do/mysql.rb +0 -1
- data/lib/sequel/adapters/do/postgres.rb +0 -1
- data/lib/sequel/adapters/do/sqlite3.rb +0 -1
- data/lib/sequel/adapters/ibmdb.rb +21 -25
- data/lib/sequel/adapters/jdbc.rb +8 -16
- data/lib/sequel/adapters/jdbc/as400.rb +0 -1
- data/lib/sequel/adapters/jdbc/cubrid.rb +0 -1
- data/lib/sequel/adapters/jdbc/db2.rb +0 -1
- data/lib/sequel/adapters/jdbc/derby.rb +0 -1
- data/lib/sequel/adapters/jdbc/firebirdsql.rb +0 -1
- data/lib/sequel/adapters/jdbc/h2.rb +0 -1
- data/lib/sequel/adapters/jdbc/hsqldb.rb +0 -1
- data/lib/sequel/adapters/jdbc/informix-sqli.rb +0 -1
- data/lib/sequel/adapters/jdbc/jdbcprogress.rb +0 -1
- data/lib/sequel/adapters/jdbc/jtds.rb +0 -1
- data/lib/sequel/adapters/jdbc/mssql.rb +0 -1
- data/lib/sequel/adapters/jdbc/mysql.rb +0 -1
- data/lib/sequel/adapters/jdbc/oracle.rb +0 -1
- data/lib/sequel/adapters/jdbc/postgresql.rb +0 -13
- data/lib/sequel/adapters/jdbc/sqlanywhere.rb +0 -1
- data/lib/sequel/adapters/jdbc/sqlite.rb +0 -1
- data/lib/sequel/adapters/jdbc/sqlserver.rb +3 -4
- data/lib/sequel/adapters/mock.rb +54 -12
- data/lib/sequel/adapters/mysql.rb +1 -1
- data/lib/sequel/adapters/mysql2.rb +11 -17
- data/lib/sequel/adapters/odbc/mssql.rb +0 -1
- data/lib/sequel/adapters/oracle.rb +8 -20
- data/lib/sequel/adapters/postgres.rb +11 -29
- data/lib/sequel/adapters/shared/access.rb +5 -12
- data/lib/sequel/adapters/shared/cubrid.rb +4 -13
- data/lib/sequel/adapters/shared/db2.rb +4 -2
- data/lib/sequel/adapters/shared/firebird.rb +2 -4
- data/lib/sequel/adapters/shared/informix.rb +4 -2
- data/lib/sequel/adapters/shared/mssql.rb +3 -5
- data/lib/sequel/adapters/shared/mysql.rb +4 -14
- data/lib/sequel/adapters/shared/oracle.rb +1 -3
- data/lib/sequel/adapters/shared/postgres.rb +16 -38
- data/lib/sequel/adapters/shared/progress.rb +0 -2
- data/lib/sequel/adapters/shared/sqlanywhere.rb +0 -2
- data/lib/sequel/adapters/shared/sqlite.rb +20 -16
- data/lib/sequel/adapters/sqlite.rb +8 -20
- data/lib/sequel/adapters/swift/mysql.rb +0 -1
- data/lib/sequel/adapters/swift/postgres.rb +0 -1
- data/lib/sequel/adapters/swift/sqlite.rb +0 -1
- data/lib/sequel/adapters/tinytds.rb +4 -12
- data/lib/sequel/adapters/utils/emulate_offset_with_reverse_and_count.rb +1 -1
- data/lib/sequel/adapters/utils/mysql_mysql2.rb +2 -2
- data/lib/sequel/adapters/utils/mysql_prepared_statements.rb +11 -34
- data/lib/sequel/adapters/utils/stored_procedures.rb +9 -22
- data/lib/sequel/adapters/utils/unmodified_identifiers.rb +26 -0
- data/lib/sequel/ast_transformer.rb +2 -2
- data/lib/sequel/database/dataset.rb +1 -1
- data/lib/sequel/database/dataset_defaults.rb +0 -66
- data/lib/sequel/database/features.rb +6 -0
- data/lib/sequel/database/misc.rb +31 -17
- data/lib/sequel/database/query.rb +7 -4
- data/lib/sequel/database/schema_methods.rb +1 -1
- data/lib/sequel/dataset.rb +8 -8
- data/lib/sequel/dataset/actions.rb +140 -46
- data/lib/sequel/dataset/features.rb +1 -5
- data/lib/sequel/dataset/graph.rb +7 -8
- data/lib/sequel/dataset/misc.rb +127 -56
- data/lib/sequel/dataset/mutation.rb +9 -20
- data/lib/sequel/dataset/placeholder_literalizer.rb +10 -1
- data/lib/sequel/dataset/prepared_statements.rb +102 -46
- data/lib/sequel/dataset/query.rb +155 -72
- data/lib/sequel/dataset/sql.rb +26 -9
- data/lib/sequel/extensions/columns_introspection.rb +3 -1
- data/lib/sequel/extensions/core_extensions.rb +5 -5
- data/lib/sequel/extensions/core_refinements.rb +5 -5
- data/lib/sequel/extensions/duplicate_columns_handler.rb +4 -2
- data/lib/sequel/extensions/freeze_datasets.rb +69 -0
- data/lib/sequel/extensions/identifier_mangling.rb +196 -0
- data/lib/sequel/extensions/looser_typecasting.rb +11 -7
- data/lib/sequel/extensions/migration.rb +1 -1
- data/lib/sequel/extensions/null_dataset.rb +5 -2
- data/lib/sequel/extensions/pagination.rb +42 -23
- data/lib/sequel/extensions/pg_enum.rb +3 -3
- data/lib/sequel/extensions/query.rb +3 -3
- data/lib/sequel/extensions/sequel_3_dataset_methods.rb +15 -8
- data/lib/sequel/model/associations.rb +25 -8
- data/lib/sequel/model/base.rb +88 -29
- data/lib/sequel/model/dataset_module.rb +37 -0
- data/lib/sequel/plugins/association_pks.rb +4 -4
- data/lib/sequel/plugins/class_table_inheritance.rb +2 -2
- data/lib/sequel/plugins/constraint_validations.rb +1 -2
- data/lib/sequel/plugins/csv_serializer.rb +2 -2
- data/lib/sequel/plugins/dataset_associations.rb +8 -8
- data/lib/sequel/plugins/eager_each.rb +2 -2
- data/lib/sequel/plugins/instance_filters.rb +1 -1
- data/lib/sequel/plugins/json_serializer.rb +2 -2
- data/lib/sequel/plugins/lazy_attributes.rb +1 -1
- data/lib/sequel/plugins/list.rb +4 -4
- data/lib/sequel/plugins/prepared_statements.rb +2 -4
- data/lib/sequel/plugins/prepared_statements_associations.rb +1 -3
- data/lib/sequel/plugins/prepared_statements_with_pk.rb +1 -1
- data/lib/sequel/plugins/rcte_tree.rb +13 -13
- data/lib/sequel/plugins/sharding.rb +1 -1
- data/lib/sequel/plugins/single_table_inheritance.rb +9 -4
- data/lib/sequel/plugins/tactical_eager_loading.rb +4 -4
- data/lib/sequel/plugins/validation_class_methods.rb +1 -1
- data/lib/sequel/plugins/validation_helpers.rb +1 -1
- data/lib/sequel/plugins/xml_serializer.rb +2 -2
- data/lib/sequel/sql.rb +69 -36
- data/lib/sequel/version.rb +1 -1
- data/spec/adapters/db2_spec.rb +10 -0
- data/spec/adapters/firebird_spec.rb +1 -1
- data/spec/adapters/mssql_spec.rb +4 -5
- data/spec/adapters/mysql_spec.rb +9 -9
- data/spec/adapters/postgres_spec.rb +67 -68
- data/spec/adapters/spec_helper.rb +6 -1
- data/spec/adapters/sqlite_spec.rb +29 -15
- data/spec/core/connection_pool_spec.rb +14 -14
- data/spec/core/database_spec.rb +38 -180
- data/spec/core/dataset_mutation_spec.rb +253 -0
- data/spec/core/dataset_spec.rb +394 -537
- data/spec/core/expression_filters_spec.rb +34 -32
- data/spec/core/mock_adapter_spec.rb +27 -35
- data/spec/core/placeholder_literalizer_spec.rb +2 -4
- data/spec/core/schema_generator_spec.rb +4 -4
- data/spec/core/schema_spec.rb +1 -2
- data/spec/core_extensions_spec.rb +22 -29
- data/spec/extensions/active_model_spec.rb +6 -6
- data/spec/extensions/association_dependencies_spec.rb +2 -2
- data/spec/extensions/blacklist_security_spec.rb +3 -3
- data/spec/extensions/boolean_readers_spec.rb +12 -12
- data/spec/extensions/caching_spec.rb +13 -10
- data/spec/extensions/class_table_inheritance_spec.rb +38 -43
- data/spec/extensions/column_conflicts_spec.rb +1 -3
- data/spec/extensions/columns_introspection_spec.rb +2 -3
- data/spec/extensions/composition_spec.rb +5 -3
- data/spec/extensions/constraint_validations_plugin_spec.rb +5 -5
- data/spec/extensions/constraint_validations_spec.rb +14 -8
- data/spec/extensions/core_refinements_spec.rb +22 -29
- data/spec/extensions/csv_serializer_spec.rb +7 -6
- data/spec/extensions/date_arithmetic_spec.rb +15 -15
- data/spec/extensions/defaults_setter_spec.rb +2 -2
- data/spec/extensions/delay_add_association_spec.rb +1 -1
- data/spec/extensions/dirty_spec.rb +19 -10
- data/spec/extensions/duplicate_columns_handler_spec.rb +12 -18
- data/spec/extensions/eager_each_spec.rb +12 -16
- data/spec/extensions/empty_array_consider_nulls_spec.rb +1 -1
- data/spec/extensions/eval_inspect_spec.rb +4 -3
- data/spec/extensions/force_encoding_spec.rb +12 -12
- data/spec/extensions/freeze_datasets_spec.rb +31 -0
- data/spec/extensions/graph_each_spec.rb +6 -18
- data/spec/extensions/hook_class_methods_spec.rb +7 -7
- data/spec/extensions/identifier_mangling_spec.rb +307 -0
- data/spec/extensions/instance_filters_spec.rb +5 -6
- data/spec/extensions/instance_hooks_spec.rb +12 -12
- data/spec/extensions/json_serializer_spec.rb +12 -15
- data/spec/extensions/lazy_attributes_spec.rb +4 -4
- data/spec/extensions/list_spec.rb +19 -21
- data/spec/extensions/many_through_many_spec.rb +108 -163
- data/spec/extensions/meta_def_spec.rb +7 -2
- data/spec/extensions/migration_spec.rb +10 -12
- data/spec/extensions/mssql_optimistic_locking_spec.rb +4 -3
- data/spec/extensions/named_timezones_spec.rb +4 -3
- data/spec/extensions/nested_attributes_spec.rb +2 -2
- data/spec/extensions/null_dataset_spec.rb +17 -12
- data/spec/extensions/optimistic_locking_spec.rb +4 -5
- data/spec/extensions/pagination_spec.rb +8 -10
- data/spec/extensions/pg_array_associations_spec.rb +28 -27
- data/spec/extensions/pg_array_ops_spec.rb +2 -1
- data/spec/extensions/pg_array_spec.rb +6 -2
- data/spec/extensions/pg_enum_spec.rb +5 -3
- data/spec/extensions/pg_hstore_ops_spec.rb +3 -1
- data/spec/extensions/pg_hstore_spec.rb +7 -6
- data/spec/extensions/pg_inet_ops_spec.rb +2 -1
- data/spec/extensions/pg_inet_spec.rb +2 -1
- data/spec/extensions/pg_interval_spec.rb +2 -1
- data/spec/extensions/pg_json_ops_spec.rb +2 -1
- data/spec/extensions/pg_json_spec.rb +6 -3
- data/spec/extensions/pg_loose_count_spec.rb +1 -0
- data/spec/extensions/pg_range_ops_spec.rb +3 -1
- data/spec/extensions/pg_range_spec.rb +9 -5
- data/spec/extensions/pg_row_ops_spec.rb +2 -1
- data/spec/extensions/pg_row_plugin_spec.rb +4 -6
- data/spec/extensions/pg_row_spec.rb +5 -3
- data/spec/extensions/pg_static_cache_updater_spec.rb +2 -1
- data/spec/extensions/pg_typecast_on_load_spec.rb +1 -1
- data/spec/extensions/prepared_statements_associations_spec.rb +1 -1
- data/spec/extensions/prepared_statements_spec.rb +12 -11
- data/spec/extensions/pretty_table_spec.rb +1 -1
- data/spec/extensions/query_spec.rb +8 -5
- data/spec/extensions/rcte_tree_spec.rb +39 -39
- data/spec/extensions/round_timestamps_spec.rb +2 -2
- data/spec/extensions/schema_dumper_spec.rb +3 -2
- data/spec/extensions/schema_spec.rb +2 -2
- data/spec/extensions/scissors_spec.rb +1 -2
- data/spec/extensions/sequel_3_dataset_methods_spec.rb +30 -17
- data/spec/extensions/serialization_modification_detection_spec.rb +2 -2
- data/spec/extensions/serialization_spec.rb +15 -13
- data/spec/extensions/set_overrides_spec.rb +14 -8
- data/spec/extensions/sharding_spec.rb +9 -18
- data/spec/extensions/shared_caching_spec.rb +3 -4
- data/spec/extensions/single_table_inheritance_spec.rb +11 -11
- data/spec/extensions/skip_create_refresh_spec.rb +2 -1
- data/spec/extensions/spec_helper.rb +1 -1
- data/spec/extensions/split_values_spec.rb +2 -2
- data/spec/extensions/sql_comments_spec.rb +6 -0
- data/spec/extensions/static_cache_spec.rb +7 -9
- data/spec/extensions/string_agg_spec.rb +30 -29
- data/spec/extensions/tactical_eager_loading_spec.rb +4 -5
- data/spec/extensions/thread_local_timezones_spec.rb +2 -2
- data/spec/extensions/timestamps_spec.rb +28 -3
- data/spec/extensions/to_dot_spec.rb +1 -2
- data/spec/extensions/tree_spec.rb +33 -29
- data/spec/extensions/typecast_on_load_spec.rb +1 -1
- data/spec/extensions/unlimited_update_spec.rb +1 -0
- data/spec/extensions/update_primary_key_spec.rb +11 -7
- data/spec/extensions/update_refresh_spec.rb +1 -1
- data/spec/extensions/uuid_spec.rb +0 -1
- data/spec/extensions/validate_associated_spec.rb +1 -1
- data/spec/extensions/validation_class_methods_spec.rb +10 -10
- data/spec/extensions/validation_helpers_spec.rb +10 -10
- data/spec/extensions/xml_serializer_spec.rb +7 -3
- data/spec/integration/associations_test.rb +31 -31
- data/spec/integration/dataset_test.rb +17 -19
- data/spec/integration/eager_loader_test.rb +24 -24
- data/spec/integration/model_test.rb +6 -6
- data/spec/integration/plugin_test.rb +43 -43
- data/spec/integration/prepared_statement_test.rb +6 -6
- data/spec/integration/schema_test.rb +63 -52
- data/spec/integration/spec_helper.rb +6 -1
- data/spec/integration/transaction_test.rb +13 -13
- data/spec/model/association_reflection_spec.rb +17 -17
- data/spec/model/associations_spec.rb +101 -96
- data/spec/model/base_spec.rb +175 -49
- data/spec/model/class_dataset_methods_spec.rb +5 -9
- data/spec/model/dataset_methods_spec.rb +5 -5
- data/spec/model/eager_loading_spec.rb +209 -235
- data/spec/model/hooks_spec.rb +15 -15
- data/spec/model/model_spec.rb +28 -21
- data/spec/model/plugins_spec.rb +4 -5
- data/spec/model/record_spec.rb +59 -57
- data/spec/model/spec_helper.rb +1 -1
- data/spec/model/validations_spec.rb +6 -6
- data/spec/spec_config.rb +1 -1
- metadata +10 -2
data/spec/model/hooks_spec.rb
CHANGED
|
@@ -37,14 +37,14 @@ describe "Model#before_create && Model#after_create" do
|
|
|
37
37
|
it ".create should cancel the save and return nil if before_create returns false and raise_on_save_failure is false" do
|
|
38
38
|
@c.send(:define_method, :before_create){false}
|
|
39
39
|
@c.raise_on_save_failure = false
|
|
40
|
-
@c.create(:x => 2).
|
|
40
|
+
@c.create(:x => 2).must_be_nil
|
|
41
41
|
DB.sqls.must_equal []
|
|
42
42
|
end
|
|
43
43
|
|
|
44
44
|
it ".create should cancel the save and return nil if before_create calls cancel_action and raise_on_save_failure is false" do
|
|
45
45
|
@c.send(:define_method, :before_create){cancel_action}
|
|
46
46
|
@c.raise_on_save_failure = false
|
|
47
|
-
@c.create(:x => 2).
|
|
47
|
+
@c.create(:x => 2).must_be_nil
|
|
48
48
|
DB.sqls.must_equal []
|
|
49
49
|
end
|
|
50
50
|
end
|
|
@@ -89,14 +89,14 @@ describe "Model#before_update && Model#after_update" do
|
|
|
89
89
|
it "#save should cancel the save and return nil if before_update returns false and raise_on_save_failure is false" do
|
|
90
90
|
@c.send(:define_method, :before_update){false}
|
|
91
91
|
@c.raise_on_save_failure = false
|
|
92
|
-
@c.load(:id => 2233).save.
|
|
92
|
+
@c.load(:id => 2233).save.must_be_nil
|
|
93
93
|
DB.sqls.must_equal []
|
|
94
94
|
end
|
|
95
95
|
|
|
96
96
|
it "#save should cancel the save and return nil if before_update calls cancel_action and raise_on_save_failure is false" do
|
|
97
97
|
@c.send(:define_method, :before_update){cancel_action}
|
|
98
98
|
@c.raise_on_save_failure = false
|
|
99
|
-
@c.load(:id => 2233).save.
|
|
99
|
+
@c.load(:id => 2233).save.must_be_nil
|
|
100
100
|
DB.sqls.must_equal []
|
|
101
101
|
end
|
|
102
102
|
end
|
|
@@ -150,14 +150,14 @@ describe "Model#before_save && Model#after_save" do
|
|
|
150
150
|
it "#save should cancel the save and return nil if before_save returns false and raise_on_save_failure is false" do
|
|
151
151
|
@c.send(:define_method, :before_save){false}
|
|
152
152
|
@c.raise_on_save_failure = false
|
|
153
|
-
@c.load(:id => 2233).save.
|
|
153
|
+
@c.load(:id => 2233).save.must_be_nil
|
|
154
154
|
DB.sqls.must_equal []
|
|
155
155
|
end
|
|
156
156
|
|
|
157
157
|
it "#save should cancel the save and return nil if before_save calls cancel_action and raise_on_save_failure is false" do
|
|
158
158
|
@c.send(:define_method, :before_save){cancel_action}
|
|
159
159
|
@c.raise_on_save_failure = false
|
|
160
|
-
@c.load(:id => 2233).save.
|
|
160
|
+
@c.load(:id => 2233).save.must_be_nil
|
|
161
161
|
DB.sqls.must_equal []
|
|
162
162
|
end
|
|
163
163
|
|
|
@@ -207,14 +207,14 @@ describe "Model#before_destroy && Model#after_destroy" do
|
|
|
207
207
|
it "#destroy should cancel the destroy and return nil if before_destroy returns false and raise_on_save_failure is false" do
|
|
208
208
|
@c.send(:define_method, :before_destroy){false}
|
|
209
209
|
@c.raise_on_save_failure = false
|
|
210
|
-
@c.load(:id => 2233).destroy.
|
|
210
|
+
@c.load(:id => 2233).destroy.must_be_nil
|
|
211
211
|
DB.sqls.must_equal []
|
|
212
212
|
end
|
|
213
213
|
|
|
214
214
|
it "#destroy should cancel the destroy and return nil if before_destroy calls cancel_action and raise_on_save_failure is false" do
|
|
215
215
|
@c.send(:define_method, :before_destroy){cancel_action; true}
|
|
216
216
|
@c.raise_on_save_failure = false
|
|
217
|
-
@c.load(:id => 2233).destroy.
|
|
217
|
+
@c.load(:id => 2233).destroy.must_be_nil
|
|
218
218
|
DB.sqls.must_equal []
|
|
219
219
|
end
|
|
220
220
|
end
|
|
@@ -253,7 +253,7 @@ describe "Model#before_validation && Model#after_validation" do
|
|
|
253
253
|
|
|
254
254
|
m = @c.load(:id => 22)
|
|
255
255
|
m.raise_on_save_failure = false
|
|
256
|
-
m.save.
|
|
256
|
+
m.save.must_be_nil
|
|
257
257
|
DB.sqls.must_equal ['BLAH before', 'BLAH after']
|
|
258
258
|
end
|
|
259
259
|
|
|
@@ -279,14 +279,14 @@ describe "Model#before_validation && Model#after_validation" do
|
|
|
279
279
|
it "#save should cancel the save and return nil if before_validation returns false and raise_on_save_failure is false" do
|
|
280
280
|
@c.send(:define_method, :before_validation){false}
|
|
281
281
|
@c.raise_on_save_failure = false
|
|
282
|
-
@c.load(:id => 2233).save.
|
|
282
|
+
@c.load(:id => 2233).save.must_be_nil
|
|
283
283
|
DB.sqls.must_equal []
|
|
284
284
|
end
|
|
285
285
|
|
|
286
286
|
it "#save should cancel the save and return nil if before_validation calls cancel_action and raise_on_save_failure is false" do
|
|
287
287
|
@c.send(:define_method, :before_validation){cancel_action}
|
|
288
288
|
@c.raise_on_save_failure = false
|
|
289
|
-
@c.load(:id => 2233).save.
|
|
289
|
+
@c.load(:id => 2233).save.must_be_nil
|
|
290
290
|
DB.sqls.must_equal []
|
|
291
291
|
end
|
|
292
292
|
|
|
@@ -431,19 +431,19 @@ describe "Model around filters" do
|
|
|
431
431
|
|
|
432
432
|
o = @c.load(:id => 1)
|
|
433
433
|
def o.around_save() end
|
|
434
|
-
o.save.
|
|
434
|
+
o.save.must_be_nil
|
|
435
435
|
|
|
436
436
|
o = @c.load(:id => 1)
|
|
437
437
|
def o.around_update() end
|
|
438
|
-
o.save.
|
|
438
|
+
o.save.must_be_nil
|
|
439
439
|
|
|
440
440
|
o = @c.new
|
|
441
441
|
def o.around_create() end
|
|
442
|
-
o.save.
|
|
442
|
+
o.save.must_be_nil
|
|
443
443
|
|
|
444
444
|
o = @c.new
|
|
445
445
|
def o.around_validation() end
|
|
446
|
-
o.save.
|
|
446
|
+
o.save.must_be_nil
|
|
447
447
|
end
|
|
448
448
|
end
|
|
449
449
|
|
data/spec/model/model_spec.rb
CHANGED
|
@@ -9,7 +9,7 @@ describe "Sequel::Model()" do
|
|
|
9
9
|
ds = @db[:blah]
|
|
10
10
|
c = Sequel::Model(ds)
|
|
11
11
|
c.superclass.must_equal Sequel::Model
|
|
12
|
-
c.dataset.must_equal
|
|
12
|
+
c.dataset.row_proc.must_equal c
|
|
13
13
|
end
|
|
14
14
|
|
|
15
15
|
it "should return a model subclass with a dataset with the default database and given table name if given a Symbol" do
|
|
@@ -51,14 +51,14 @@ describe "Sequel::Model()" do
|
|
|
51
51
|
ds = @db[Sequel.identifier(:blah)]
|
|
52
52
|
c = Sequel::Model(ds)
|
|
53
53
|
c.superclass.must_equal Sequel::Model
|
|
54
|
-
c.dataset.must_equal
|
|
54
|
+
c.dataset.row_proc.must_equal c
|
|
55
55
|
end
|
|
56
56
|
|
|
57
57
|
it "should be callable on Sequel::Model" do
|
|
58
58
|
ds = @db[:blah]
|
|
59
59
|
c = Sequel::Model::Model(ds)
|
|
60
60
|
c.superclass.must_equal Sequel::Model
|
|
61
|
-
c.dataset.must_equal
|
|
61
|
+
c.dataset.row_proc.must_equal c
|
|
62
62
|
end
|
|
63
63
|
|
|
64
64
|
it "should be callable on subclasses of Sequel::Model" do
|
|
@@ -66,7 +66,7 @@ describe "Sequel::Model()" do
|
|
|
66
66
|
c = Class.new(Sequel::Model)
|
|
67
67
|
sc = c::Model(ds)
|
|
68
68
|
sc.superclass.must_equal c
|
|
69
|
-
sc.dataset.must_equal
|
|
69
|
+
sc.dataset.row_proc.must_equal sc
|
|
70
70
|
end
|
|
71
71
|
|
|
72
72
|
it "should be callable on other modules if def_Model is used" do
|
|
@@ -75,7 +75,7 @@ describe "Sequel::Model()" do
|
|
|
75
75
|
ds = @db[:blah]
|
|
76
76
|
c = m::Model(ds)
|
|
77
77
|
c.superclass.must_equal Sequel::Model
|
|
78
|
-
c.dataset.must_equal
|
|
78
|
+
c.dataset.row_proc.must_equal c
|
|
79
79
|
end
|
|
80
80
|
|
|
81
81
|
it "should be callable using model subclasses on other modules if def_Model is used" do
|
|
@@ -85,7 +85,7 @@ describe "Sequel::Model()" do
|
|
|
85
85
|
ds = @db[:blah]
|
|
86
86
|
sc = m::Model(ds)
|
|
87
87
|
sc.superclass.must_equal c
|
|
88
|
-
sc.dataset.must_equal
|
|
88
|
+
sc.dataset.row_proc.must_equal sc
|
|
89
89
|
end
|
|
90
90
|
|
|
91
91
|
it "should return a model subclass associated to the given database if given a database" do
|
|
@@ -227,6 +227,12 @@ describe Sequel::Model do
|
|
|
227
227
|
@model.table_name.must_equal :foo
|
|
228
228
|
end
|
|
229
229
|
|
|
230
|
+
it "allows frozen dataset" do
|
|
231
|
+
@model.set_dataset(DB[:foo].freeze)
|
|
232
|
+
@model.table_name.must_equal :foo
|
|
233
|
+
@model.dataset.sql.must_equal 'SELECT * FROM foo'
|
|
234
|
+
end
|
|
235
|
+
|
|
230
236
|
it "allows set_dataset to accept a Symbol" do
|
|
231
237
|
@model.db = DB
|
|
232
238
|
@model.set_dataset(:foo)
|
|
@@ -269,11 +275,10 @@ describe Sequel::Model do
|
|
|
269
275
|
it "set_dataset should add the destroy method to the dataset that destroys each object" do
|
|
270
276
|
ds = DB[:foo]
|
|
271
277
|
ds.wont_respond_to(:destroy)
|
|
272
|
-
@model.set_dataset(ds)
|
|
278
|
+
ds = @model.set_dataset(ds).dataset
|
|
273
279
|
ds.must_respond_to(:destroy)
|
|
274
280
|
DB.sqls
|
|
275
|
-
ds.
|
|
276
|
-
ds.destroy.must_equal 2
|
|
281
|
+
ds.with_fetch([{:id=>1}, {:id=>2}]).destroy.must_equal 2
|
|
277
282
|
DB.sqls.must_equal ["SELECT * FROM foo", "DELETE FROM foo WHERE id = 1", "DELETE FROM foo WHERE id = 2"]
|
|
278
283
|
end
|
|
279
284
|
|
|
@@ -281,7 +286,7 @@ describe Sequel::Model do
|
|
|
281
286
|
db = Sequel.mock(:servers=>{:s1=>{}})
|
|
282
287
|
ds = db[:foo].server(:s1)
|
|
283
288
|
@model.use_transactions = true
|
|
284
|
-
@model.set_dataset(ds)
|
|
289
|
+
ds = @model.set_dataset(ds).dataset
|
|
285
290
|
db.sqls
|
|
286
291
|
ds.destroy.must_equal 0
|
|
287
292
|
db.sqls.must_equal ["BEGIN -- s1", "SELECT * FROM foo -- s1", "COMMIT -- s1"]
|
|
@@ -462,8 +467,7 @@ describe Sequel::Model, "new" do
|
|
|
462
467
|
end
|
|
463
468
|
|
|
464
469
|
it "should use the last inserted id as primary key if not in values" do
|
|
465
|
-
@m.
|
|
466
|
-
@m.instance_dataset.autoid = @m.dataset.autoid = 1234
|
|
470
|
+
@m.dataset = @m.dataset.with_fetch(:x => 1, :id => 1234).with_autoid(1234)
|
|
467
471
|
|
|
468
472
|
o = @m.new(:x => 1)
|
|
469
473
|
o.save
|
|
@@ -508,7 +512,7 @@ end
|
|
|
508
512
|
describe Sequel::Model, ".find" do
|
|
509
513
|
before do
|
|
510
514
|
@c = Class.new(Sequel::Model(:items))
|
|
511
|
-
@c.dataset
|
|
515
|
+
@c.dataset = @c.dataset.with_fetch(:name => 'sharon', :id => 1)
|
|
512
516
|
DB.reset
|
|
513
517
|
end
|
|
514
518
|
|
|
@@ -874,7 +878,7 @@ describe Sequel::Model, "attribute accessors" do
|
|
|
874
878
|
o.methods.collect{|z| z.to_s}.must_include(x)
|
|
875
879
|
end
|
|
876
880
|
|
|
877
|
-
o.x.
|
|
881
|
+
o.x.must_be_nil
|
|
878
882
|
o.x = 34
|
|
879
883
|
o.x.must_equal 34
|
|
880
884
|
end
|
|
@@ -912,7 +916,7 @@ end
|
|
|
912
916
|
describe Sequel::Model, ".[]" do
|
|
913
917
|
before do
|
|
914
918
|
@c = Class.new(Sequel::Model(:items))
|
|
915
|
-
@c.dataset
|
|
919
|
+
@c.dataset = @c.dataset.with_fetch(:name => 'sharon', :id => 1)
|
|
916
920
|
DB.reset
|
|
917
921
|
end
|
|
918
922
|
|
|
@@ -924,8 +928,8 @@ describe Sequel::Model, ".[]" do
|
|
|
924
928
|
end
|
|
925
929
|
|
|
926
930
|
it "should have #[] return nil if no rows match" do
|
|
927
|
-
@c.dataset
|
|
928
|
-
@c[1].
|
|
931
|
+
@c.dataset = @c.dataset.with_fetch([])
|
|
932
|
+
@c[1].must_be_nil
|
|
929
933
|
DB.sqls.must_equal ["SELECT * FROM items WHERE id = 1"]
|
|
930
934
|
end
|
|
931
935
|
|
|
@@ -971,12 +975,15 @@ describe "Model.db_schema" do
|
|
|
971
975
|
def @db.schema(table, opts = {})
|
|
972
976
|
raise Sequel::Error
|
|
973
977
|
end
|
|
974
|
-
@dataset.
|
|
978
|
+
@dataset = @dataset.with_extend do
|
|
979
|
+
def columns
|
|
980
|
+
[:x, :y]
|
|
981
|
+
end
|
|
982
|
+
end
|
|
975
983
|
|
|
976
984
|
@c.dataset = @dataset
|
|
977
985
|
@c.db_schema.must_equal(:x=>{}, :y=>{})
|
|
978
986
|
@c.columns.must_equal [:x, :y]
|
|
979
|
-
@c.dataset.instance_variable_get(:@columns).must_equal [:x, :y]
|
|
980
987
|
end
|
|
981
988
|
|
|
982
989
|
it "should use the database's schema and set the columns and dataset columns" do
|
|
@@ -986,7 +993,7 @@ describe "Model.db_schema" do
|
|
|
986
993
|
@c.dataset = @dataset
|
|
987
994
|
@c.db_schema.must_equal(:x=>{:type=>:integer}, :y=>{:type=>:string})
|
|
988
995
|
@c.columns.must_equal [:x, :y]
|
|
989
|
-
@c.dataset.
|
|
996
|
+
@c.dataset.columns.must_equal [:x, :y]
|
|
990
997
|
end
|
|
991
998
|
|
|
992
999
|
it "should not restrict the schema for datasets with a :select option" do
|
|
@@ -1052,7 +1059,7 @@ describe "Model.db_schema" do
|
|
|
1052
1059
|
@c.primary_key.must_equal :id
|
|
1053
1060
|
@c.dataset = ds
|
|
1054
1061
|
@c.db_schema.must_equal(:x=>{:primary_key=>false}, :y=>{:primary_key=>false})
|
|
1055
|
-
@c.primary_key.
|
|
1062
|
+
@c.primary_key.must_be_nil
|
|
1056
1063
|
end
|
|
1057
1064
|
|
|
1058
1065
|
it "should automatically set primary key for dataset selecting table.*" do
|
data/spec/model/plugins_spec.rb
CHANGED
|
@@ -284,16 +284,15 @@ describe Sequel::Plugins do
|
|
|
284
284
|
m = Module.new do
|
|
285
285
|
module self::ClassMethods
|
|
286
286
|
Sequel::Plugins.after_set_dataset(self, :one)
|
|
287
|
+
def foo; dataset.send(:cache_get, :foo) end
|
|
287
288
|
private
|
|
288
|
-
def one
|
|
289
|
-
dataset.opts[:foo] = 1
|
|
290
|
-
end
|
|
289
|
+
def one; dataset.send(:cache_set, :foo, 1) end
|
|
291
290
|
end
|
|
292
291
|
end
|
|
293
292
|
@c.plugin m
|
|
294
|
-
@c.
|
|
293
|
+
@c.foo.must_be_nil
|
|
295
294
|
@c.set_dataset :blah
|
|
296
|
-
@c.
|
|
295
|
+
@c.foo.must_equal 1
|
|
297
296
|
end
|
|
298
297
|
end
|
|
299
298
|
|
data/spec/model/record_spec.rb
CHANGED
|
@@ -57,7 +57,7 @@ describe "Model#save" do
|
|
|
57
57
|
@c = Class.new(Sequel::Model(:items)) do
|
|
58
58
|
columns :id, :x, :y
|
|
59
59
|
end
|
|
60
|
-
@c.
|
|
60
|
+
@c.dataset = @c.dataset.with_autoid(13)
|
|
61
61
|
DB.reset
|
|
62
62
|
end
|
|
63
63
|
|
|
@@ -69,16 +69,16 @@ describe "Model#save" do
|
|
|
69
69
|
|
|
70
70
|
it "should raise if the object can't be refreshed after save" do
|
|
71
71
|
o = @c.new(:x => 1)
|
|
72
|
-
@c.
|
|
72
|
+
@c.dataset = @c.dataset.with_fetch([])
|
|
73
73
|
proc{o.save}.must_raise(Sequel::NoExistingObject)
|
|
74
74
|
end
|
|
75
75
|
|
|
76
76
|
it "should use dataset's insert_select method if present" do
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
77
|
+
@c.dataset = @c.dataset.with_fetch(:y=>2).with_extend do
|
|
78
|
+
def supports_insert_select?; true end
|
|
79
|
+
def insert_select(hash)
|
|
80
|
+
with_sql_first("INSERT INTO items (y) VALUES (2) RETURNING *")
|
|
81
|
+
end
|
|
82
82
|
end
|
|
83
83
|
o = @c.new(:x => 1)
|
|
84
84
|
o.save
|
|
@@ -88,21 +88,19 @@ describe "Model#save" do
|
|
|
88
88
|
end
|
|
89
89
|
|
|
90
90
|
it "should not use dataset's insert_select method if specific columns are selected" do
|
|
91
|
-
ds = @c.dataset = @c.dataset.select(:y)
|
|
92
|
-
def ds.insert_select(*) raise; end
|
|
91
|
+
ds = @c.dataset = @c.dataset.select(:y).with_extend{def insert_select(*) raise; end}
|
|
93
92
|
@c.new(:x => 1).save
|
|
94
93
|
end
|
|
95
94
|
|
|
96
95
|
it "should use dataset's insert_select method if the dataset uses returning, even if specific columns are selected" do
|
|
97
|
-
|
|
98
|
-
|
|
96
|
+
ds = @c.dataset = @c.dataset.select(:y).with_fetch(:y=>2).with_extend do
|
|
97
|
+
def supports_returning?(_) true end
|
|
98
|
+
def supports_insert_select?; true end
|
|
99
|
+
def insert_select(hash)
|
|
100
|
+
with_sql_first("INSERT INTO items (y) VALUES (2) RETURNING y")
|
|
101
|
+
end
|
|
102
|
+
end.returning(:y)
|
|
99
103
|
DB.reset
|
|
100
|
-
ds = @c.instance_dataset
|
|
101
|
-
ds._fetch = {:y=>2}
|
|
102
|
-
def ds.supports_insert_select?() true end
|
|
103
|
-
def ds.insert_select(hash)
|
|
104
|
-
with_sql_first("INSERT INTO items (y) VALUES (2) RETURNING y")
|
|
105
|
-
end
|
|
106
104
|
o = @c.new(:x => 1)
|
|
107
105
|
o.save
|
|
108
106
|
|
|
@@ -149,19 +147,19 @@ describe "Model#save" do
|
|
|
149
147
|
end
|
|
150
148
|
|
|
151
149
|
it "should raise a NoExistingObject exception if the dataset update call doesn't return 1, unless require_modification is false" do
|
|
150
|
+
i = 0
|
|
151
|
+
@c.dataset = @c.dataset.with_extend{define_method(:numrows){i}}
|
|
152
152
|
o = @c.load(:id => 3, :x => 1)
|
|
153
|
-
t = o.this
|
|
154
|
-
t.numrows = 0
|
|
155
153
|
proc{o.save}.must_raise(Sequel::NoExistingObject)
|
|
156
|
-
|
|
154
|
+
i = 2
|
|
157
155
|
proc{o.save}.must_raise(Sequel::NoExistingObject)
|
|
158
|
-
|
|
156
|
+
i = 1
|
|
159
157
|
o.save
|
|
160
158
|
|
|
161
159
|
o.require_modification = false
|
|
162
|
-
|
|
160
|
+
i = 0
|
|
163
161
|
o.save
|
|
164
|
-
|
|
162
|
+
i = 2
|
|
165
163
|
o.save
|
|
166
164
|
end
|
|
167
165
|
|
|
@@ -190,7 +188,7 @@ describe "Model#save" do
|
|
|
190
188
|
end
|
|
191
189
|
|
|
192
190
|
it "should mark all columns as not changed if this is a new record and insert_select was used" do
|
|
193
|
-
|
|
191
|
+
ds = @c.dataset = @c.dataset.with_extend{def insert_select(h) h.merge(:id=>1) end}
|
|
194
192
|
o = @c.new(:x => 1, :y => nil)
|
|
195
193
|
o.x = 4
|
|
196
194
|
o.changed_columns.must_equal [:x]
|
|
@@ -309,7 +307,7 @@ describe "Model#save" do
|
|
|
309
307
|
false
|
|
310
308
|
end
|
|
311
309
|
DB.transaction do
|
|
312
|
-
o.save(:columns=>:y).
|
|
310
|
+
o.save(:columns=>:y).must_be_nil
|
|
313
311
|
DB.run "BLAH"
|
|
314
312
|
end
|
|
315
313
|
DB.sqls.must_equal ["BEGIN", "BLAH", "COMMIT"]
|
|
@@ -322,7 +320,7 @@ describe "Model#save" do
|
|
|
322
320
|
def o.before_save
|
|
323
321
|
false
|
|
324
322
|
end
|
|
325
|
-
o.save(:columns=>:y).
|
|
323
|
+
o.save(:columns=>:y).must_be_nil
|
|
326
324
|
DB.sqls.must_equal ["BEGIN", "ROLLBACK"]
|
|
327
325
|
end
|
|
328
326
|
|
|
@@ -499,11 +497,13 @@ describe "Model#dup" do
|
|
|
499
497
|
end
|
|
500
498
|
|
|
501
499
|
it "should not copy frozen status" do
|
|
502
|
-
@o.
|
|
503
|
-
@o.freeze.dup
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
500
|
+
this_frozen = @o.this.frozen?
|
|
501
|
+
d = @o.freeze.dup
|
|
502
|
+
d.wont_be :frozen?
|
|
503
|
+
d.values.wont_be :frozen?
|
|
504
|
+
d.changed_columns.wont_be :frozen?
|
|
505
|
+
d.errors.wont_be :frozen?
|
|
506
|
+
d.this.frozen?.must_equal this_frozen
|
|
507
507
|
end
|
|
508
508
|
end
|
|
509
509
|
|
|
@@ -820,7 +820,7 @@ end
|
|
|
820
820
|
|
|
821
821
|
describe Sequel::Model, "without a primary key" do
|
|
822
822
|
it "should return nil for primary key" do
|
|
823
|
-
Class.new(Sequel::Model){no_primary_key}.primary_key.
|
|
823
|
+
Class.new(Sequel::Model){no_primary_key}.primary_key.must_be_nil
|
|
824
824
|
end
|
|
825
825
|
|
|
826
826
|
it "should raise a Sequel::Error on 'this'" do
|
|
@@ -1304,9 +1304,9 @@ describe Sequel::Model, "#(set|update)_(all|only)" do
|
|
|
1304
1304
|
end
|
|
1305
1305
|
|
|
1306
1306
|
it "#set_all should set not set restricted fields" do
|
|
1307
|
-
@o1.use_after_commit_rollback.
|
|
1307
|
+
@o1.use_after_commit_rollback.must_be_nil
|
|
1308
1308
|
@o1.set_all(:x => 1, :use_after_commit_rollback => true)
|
|
1309
|
-
@o1.use_after_commit_rollback.
|
|
1309
|
+
@o1.use_after_commit_rollback.must_be_nil
|
|
1310
1310
|
@o1.values.must_equal(:x => 1)
|
|
1311
1311
|
end
|
|
1312
1312
|
|
|
@@ -1345,17 +1345,18 @@ describe Sequel::Model, "#destroy with filtered dataset" do
|
|
|
1345
1345
|
end
|
|
1346
1346
|
|
|
1347
1347
|
it "should raise a NoExistingObject exception if the dataset delete call doesn't return 1" do
|
|
1348
|
-
|
|
1348
|
+
i = 0
|
|
1349
|
+
@model.dataset = @model.dataset.with_extend{define_method(:execute_dui){|*| i}}
|
|
1349
1350
|
proc{@instance.delete}.must_raise(Sequel::NoExistingObject)
|
|
1350
|
-
|
|
1351
|
+
i = 2
|
|
1351
1352
|
proc{@instance.delete}.must_raise(Sequel::NoExistingObject)
|
|
1352
|
-
|
|
1353
|
+
i = 1
|
|
1353
1354
|
@instance.delete
|
|
1354
1355
|
|
|
1355
1356
|
@instance.require_modification = false
|
|
1356
|
-
|
|
1357
|
+
i = 0
|
|
1357
1358
|
@instance.delete
|
|
1358
|
-
|
|
1359
|
+
i = 2
|
|
1359
1360
|
@instance.delete
|
|
1360
1361
|
end
|
|
1361
1362
|
|
|
@@ -1379,17 +1380,18 @@ describe Sequel::Model, "#destroy" do
|
|
|
1379
1380
|
end
|
|
1380
1381
|
|
|
1381
1382
|
it "should raise a NoExistingObject exception if the dataset delete call doesn't return 1" do
|
|
1382
|
-
|
|
1383
|
+
i = 0
|
|
1384
|
+
@model.dataset = @model.dataset.with_extend{define_method(:execute_dui){|*| i}}
|
|
1383
1385
|
proc{@instance.delete}.must_raise(Sequel::NoExistingObject)
|
|
1384
|
-
|
|
1386
|
+
i = 2
|
|
1385
1387
|
proc{@instance.delete}.must_raise(Sequel::NoExistingObject)
|
|
1386
|
-
|
|
1388
|
+
i = 1
|
|
1387
1389
|
@instance.delete
|
|
1388
1390
|
|
|
1389
1391
|
@instance.require_modification = false
|
|
1390
|
-
|
|
1392
|
+
i = 0
|
|
1391
1393
|
@instance.delete
|
|
1392
|
-
|
|
1394
|
+
i = 2
|
|
1393
1395
|
@instance.delete
|
|
1394
1396
|
end
|
|
1395
1397
|
|
|
@@ -1428,7 +1430,7 @@ end
|
|
|
1428
1430
|
describe Sequel::Model, "#exists?" do
|
|
1429
1431
|
before do
|
|
1430
1432
|
@model = Class.new(Sequel::Model(:items))
|
|
1431
|
-
@model.
|
|
1433
|
+
@model.dataset = @model.dataset.with_fetch(proc{|sql| {:x=>1} if sql =~ /id = 1/})
|
|
1432
1434
|
DB.reset
|
|
1433
1435
|
end
|
|
1434
1436
|
|
|
@@ -1736,7 +1738,7 @@ describe Sequel::Model, "#refresh" do
|
|
|
1736
1738
|
it "should reload the instance values from the database" do
|
|
1737
1739
|
@m = @c.new(:id => 555)
|
|
1738
1740
|
@m[:x] = 'blah'
|
|
1739
|
-
@c.
|
|
1741
|
+
@c.dataset = @c.dataset.with_fetch(:x => 'kaboom', :id => 555)
|
|
1740
1742
|
@m.refresh
|
|
1741
1743
|
@m[:x].must_equal 'kaboom'
|
|
1742
1744
|
DB.sqls.must_equal ["SELECT * FROM items WHERE (id = 555) LIMIT 1"]
|
|
@@ -1744,14 +1746,14 @@ describe Sequel::Model, "#refresh" do
|
|
|
1744
1746
|
|
|
1745
1747
|
it "should raise if the instance is not found" do
|
|
1746
1748
|
@m = @c.new(:id => 555)
|
|
1747
|
-
@c.
|
|
1749
|
+
@c.dataset = @c.dataset.with_fetch([])
|
|
1748
1750
|
proc {@m.refresh}.must_raise(Sequel::NoExistingObject)
|
|
1749
1751
|
DB.sqls.must_equal ["SELECT * FROM items WHERE (id = 555) LIMIT 1"]
|
|
1750
1752
|
end
|
|
1751
1753
|
|
|
1752
1754
|
it "should be aliased by #reload" do
|
|
1753
1755
|
@m = @c.new(:id => 555)
|
|
1754
|
-
@c.
|
|
1756
|
+
@c.dataset = @c.dataset.with_fetch(:x => 'kaboom', :id => 555)
|
|
1755
1757
|
@m.reload
|
|
1756
1758
|
@m[:x].must_equal 'kaboom'
|
|
1757
1759
|
DB.sqls.must_equal ["SELECT * FROM items WHERE (id = 555) LIMIT 1"]
|
|
@@ -1795,7 +1797,7 @@ describe Sequel::Model, "typecasting" do
|
|
|
1795
1797
|
@c.db_schema = {:x=>{:type=>x}}
|
|
1796
1798
|
m = @c.new
|
|
1797
1799
|
m.x = ''
|
|
1798
|
-
m.x.
|
|
1800
|
+
m.x.must_be_nil
|
|
1799
1801
|
end
|
|
1800
1802
|
[:string, :blob].each do |x|
|
|
1801
1803
|
@c.db_schema = {:x=>{:type=>x}}
|
|
@@ -1826,7 +1828,7 @@ describe Sequel::Model, "typecasting" do
|
|
|
1826
1828
|
@c.db_schema[:x][:allow_null] = true
|
|
1827
1829
|
m = @c.new
|
|
1828
1830
|
m.x = nil
|
|
1829
|
-
m.x.
|
|
1831
|
+
m.x.must_be_nil
|
|
1830
1832
|
end
|
|
1831
1833
|
|
|
1832
1834
|
it "should raise an error if attempting to typecast nil and NULLs are not allowed" do
|
|
@@ -1840,7 +1842,7 @@ describe Sequel::Model, "typecasting" do
|
|
|
1840
1842
|
@c.db_schema[:x][:allow_null] = false
|
|
1841
1843
|
m = @c.new
|
|
1842
1844
|
m.x = nil
|
|
1843
|
-
m.x.
|
|
1845
|
+
m.x.must_be_nil
|
|
1844
1846
|
end
|
|
1845
1847
|
|
|
1846
1848
|
it "should not raise when typecasting nil to NOT NULL column but raise_on_typecast_failure is off" do
|
|
@@ -1848,9 +1850,9 @@ describe Sequel::Model, "typecasting" do
|
|
|
1848
1850
|
@c.typecast_on_assignment = true
|
|
1849
1851
|
m = @c.new
|
|
1850
1852
|
m.x = ''
|
|
1851
|
-
m.x.
|
|
1853
|
+
m.x.must_be_nil
|
|
1852
1854
|
m.x = nil
|
|
1853
|
-
m.x.
|
|
1855
|
+
m.x.must_be_nil
|
|
1854
1856
|
end
|
|
1855
1857
|
|
|
1856
1858
|
it "should raise an error if invalid data is used in an integer field" do
|
|
@@ -1950,11 +1952,11 @@ describe Sequel::Model, "typecasting" do
|
|
|
1950
1952
|
m.x = true
|
|
1951
1953
|
m.x.must_equal true
|
|
1952
1954
|
m.x = nil
|
|
1953
|
-
m.x.
|
|
1955
|
+
m.x.must_be_nil
|
|
1954
1956
|
m.x = ''
|
|
1955
|
-
m.x.
|
|
1957
|
+
m.x.must_be_nil
|
|
1956
1958
|
m.x = []
|
|
1957
|
-
m.x.
|
|
1959
|
+
m.x.must_be_nil
|
|
1958
1960
|
m.x = 'f'
|
|
1959
1961
|
m.x.must_equal false
|
|
1960
1962
|
m.x = 'F'
|
|
@@ -2123,7 +2125,7 @@ describe "Model#lock!" do
|
|
|
2123
2125
|
@c = Class.new(Sequel::Model(:items)) do
|
|
2124
2126
|
columns :id
|
|
2125
2127
|
end
|
|
2126
|
-
@c.dataset
|
|
2128
|
+
@c.dataset = @c.dataset.with_fetch(:id=>1)
|
|
2127
2129
|
DB.reset
|
|
2128
2130
|
end
|
|
2129
2131
|
|