sequel 3.21.0 → 3.36.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.
- data/CHANGELOG +855 -3
- data/MIT-LICENSE +1 -1
- data/README.rdoc +23 -7
- data/Rakefile +42 -24
- data/bin/sequel +26 -8
- data/doc/active_record.rdoc +1 -0
- data/doc/advanced_associations.rdoc +171 -11
- data/doc/association_basics.rdoc +293 -43
- data/doc/dataset_basics.rdoc +5 -5
- data/doc/dataset_filtering.rdoc +8 -0
- data/doc/mass_assignment.rdoc +56 -0
- data/doc/migration.rdoc +85 -552
- data/doc/model_hooks.rdoc +78 -27
- data/doc/object_model.rdoc +541 -0
- data/doc/opening_databases.rdoc +97 -50
- data/doc/prepared_statements.rdoc +40 -14
- data/doc/querying.rdoc +28 -4
- data/doc/reflection.rdoc +30 -4
- data/doc/release_notes/3.22.0.txt +39 -0
- data/doc/release_notes/3.23.0.txt +172 -0
- data/doc/release_notes/3.24.0.txt +420 -0
- data/doc/release_notes/3.25.0.txt +88 -0
- data/doc/release_notes/3.26.0.txt +88 -0
- data/doc/release_notes/3.27.0.txt +82 -0
- data/doc/release_notes/3.28.0.txt +304 -0
- data/doc/release_notes/3.29.0.txt +459 -0
- data/doc/release_notes/3.30.0.txt +135 -0
- data/doc/release_notes/3.31.0.txt +146 -0
- data/doc/release_notes/3.32.0.txt +202 -0
- data/doc/release_notes/3.33.0.txt +157 -0
- data/doc/release_notes/3.34.0.txt +671 -0
- data/doc/release_notes/3.35.0.txt +144 -0
- data/doc/release_notes/3.36.0.txt +245 -0
- data/doc/schema_modification.rdoc +572 -0
- data/doc/sharding.rdoc +95 -3
- data/doc/testing.rdoc +129 -0
- data/doc/thread_safety.rdoc +17 -0
- data/doc/transactions.rdoc +137 -0
- data/doc/virtual_rows.rdoc +51 -2
- data/lib/sequel/adapters/ado/mssql.rb +18 -6
- data/lib/sequel/adapters/ado.rb +40 -18
- data/lib/sequel/adapters/amalgalite.rb +17 -9
- data/lib/sequel/adapters/db2.rb +175 -86
- data/lib/sequel/adapters/dbi.rb +15 -15
- data/lib/sequel/adapters/do/mysql.rb +17 -11
- data/lib/sequel/adapters/do/postgres.rb +1 -57
- data/lib/sequel/adapters/do/sqlite.rb +0 -10
- data/lib/sequel/adapters/do.rb +18 -36
- data/lib/sequel/adapters/firebird.rb +27 -208
- data/lib/sequel/adapters/ibmdb.rb +453 -0
- data/lib/sequel/adapters/informix.rb +6 -23
- data/lib/sequel/adapters/jdbc/as400.rb +16 -34
- data/lib/sequel/adapters/jdbc/db2.rb +47 -0
- data/lib/sequel/adapters/jdbc/derby.rb +287 -0
- data/lib/sequel/adapters/jdbc/firebird.rb +24 -0
- data/lib/sequel/adapters/jdbc/h2.rb +73 -31
- data/lib/sequel/adapters/jdbc/hsqldb.rb +184 -0
- data/lib/sequel/adapters/jdbc/informix.rb +21 -0
- data/lib/sequel/adapters/jdbc/jtds.rb +29 -0
- data/lib/sequel/adapters/jdbc/mssql.rb +3 -33
- data/lib/sequel/adapters/jdbc/mysql.rb +7 -24
- data/lib/sequel/adapters/jdbc/oracle.rb +88 -25
- data/lib/sequel/adapters/jdbc/postgresql.rb +58 -48
- data/lib/sequel/adapters/jdbc/progress.rb +21 -0
- data/lib/sequel/adapters/jdbc/sqlite.rb +20 -10
- data/lib/sequel/adapters/jdbc/sqlserver.rb +66 -0
- data/lib/sequel/adapters/jdbc/transactions.rb +83 -0
- data/lib/sequel/adapters/jdbc.rb +265 -94
- data/lib/sequel/adapters/mock.rb +361 -0
- data/lib/sequel/adapters/mysql.rb +118 -222
- data/lib/sequel/adapters/mysql2.rb +58 -57
- data/lib/sequel/adapters/odbc/mssql.rb +15 -7
- data/lib/sequel/adapters/odbc.rb +28 -9
- data/lib/sequel/adapters/openbase.rb +3 -5
- data/lib/sequel/adapters/oracle.rb +349 -53
- data/lib/sequel/adapters/postgres.rb +356 -107
- data/lib/sequel/adapters/shared/access.rb +32 -9
- data/lib/sequel/adapters/shared/db2.rb +342 -0
- data/lib/sequel/adapters/shared/firebird.rb +221 -0
- data/lib/sequel/adapters/shared/informix.rb +53 -0
- data/lib/sequel/adapters/shared/mssql.rb +335 -118
- data/lib/sequel/adapters/shared/mysql.rb +340 -76
- data/lib/sequel/adapters/shared/mysql_prepared_statements.rb +155 -0
- data/lib/sequel/adapters/shared/oracle.rb +243 -45
- data/lib/sequel/adapters/shared/postgres.rb +524 -279
- data/lib/sequel/adapters/shared/progress.rb +5 -8
- data/lib/sequel/adapters/shared/sqlite.rb +265 -89
- data/lib/sequel/adapters/sqlite.rb +101 -39
- data/lib/sequel/adapters/swift/mysql.rb +9 -12
- data/lib/sequel/adapters/swift/postgres.rb +9 -74
- data/lib/sequel/adapters/swift/sqlite.rb +8 -6
- data/lib/sequel/adapters/swift.rb +8 -7
- data/lib/sequel/adapters/tinytds.rb +161 -21
- data/lib/sequel/adapters/utils/emulate_offset_with_row_number.rb +66 -0
- data/lib/sequel/adapters/utils/stored_procedures.rb +1 -11
- data/lib/sequel/ast_transformer.rb +194 -0
- data/lib/sequel/connection_pool/sharded_single.rb +11 -1
- data/lib/sequel/connection_pool/sharded_threaded.rb +28 -2
- data/lib/sequel/connection_pool/single.rb +5 -0
- data/lib/sequel/connection_pool/threaded.rb +38 -14
- data/lib/sequel/connection_pool.rb +10 -2
- data/lib/sequel/core.rb +118 -11
- data/lib/sequel/database/connecting.rb +38 -28
- data/lib/sequel/database/dataset.rb +4 -4
- data/lib/sequel/database/dataset_defaults.rb +63 -2
- data/lib/sequel/database/logging.rb +7 -2
- data/lib/sequel/database/misc.rb +150 -46
- data/lib/sequel/database/query.rb +215 -65
- data/lib/sequel/database/schema_generator.rb +64 -20
- data/lib/sequel/database/schema_methods.rb +212 -54
- data/lib/sequel/dataset/actions.rb +322 -85
- data/lib/sequel/dataset/features.rb +96 -8
- data/lib/sequel/dataset/graph.rb +38 -11
- data/lib/sequel/dataset/misc.rb +50 -23
- data/lib/sequel/dataset/mutation.rb +12 -7
- data/lib/sequel/dataset/prepared_statements.rb +68 -30
- data/lib/sequel/dataset/query.rb +237 -44
- data/lib/sequel/dataset/sql.rb +698 -278
- data/lib/sequel/dataset.rb +8 -0
- data/lib/sequel/exceptions.rb +4 -0
- data/lib/sequel/extensions/_pretty_table.rb +79 -0
- data/lib/sequel/extensions/arbitrary_servers.rb +108 -0
- data/lib/sequel/extensions/columns_introspection.rb +61 -0
- data/lib/sequel/{core_sql.rb → extensions/core_extensions.rb} +16 -34
- data/lib/sequel/extensions/migration.rb +97 -11
- data/lib/sequel/extensions/named_timezones.rb +5 -0
- data/lib/sequel/extensions/null_dataset.rb +90 -0
- data/lib/sequel/extensions/pg_array.rb +460 -0
- data/lib/sequel/extensions/pg_array_ops.rb +220 -0
- data/lib/sequel/extensions/pg_auto_parameterize.rb +169 -0
- data/lib/sequel/extensions/pg_hstore.rb +296 -0
- data/lib/sequel/extensions/pg_hstore_ops.rb +259 -0
- data/lib/sequel/extensions/pg_inet.rb +89 -0
- data/lib/sequel/extensions/pg_json.rb +178 -0
- data/lib/sequel/extensions/pg_statement_cache.rb +316 -0
- data/lib/sequel/extensions/pretty_table.rb +5 -71
- data/lib/sequel/extensions/query.rb +1 -1
- data/lib/sequel/extensions/query_literals.rb +79 -0
- data/lib/sequel/extensions/schema_caching.rb +76 -0
- data/lib/sequel/extensions/schema_dumper.rb +251 -37
- data/lib/sequel/extensions/select_remove.rb +35 -0
- data/lib/sequel/extensions/server_block.rb +139 -0
- data/lib/sequel/extensions/sql_expr.rb +4 -110
- data/lib/sequel/extensions/thread_local_timezones.rb +1 -1
- data/lib/sequel/extensions/to_dot.rb +95 -83
- data/lib/sequel/model/associations.rb +1187 -393
- data/lib/sequel/model/base.rb +578 -170
- data/lib/sequel/model/errors.rb +1 -1
- data/lib/sequel/model/exceptions.rb +5 -1
- data/lib/sequel/model/inflections.rb +1 -1
- data/lib/sequel/model.rb +30 -11
- data/lib/sequel/no_core_ext.rb +2 -0
- data/lib/sequel/plugins/active_model.rb +13 -1
- data/lib/sequel/plugins/association_pks.rb +22 -4
- data/lib/sequel/plugins/caching.rb +25 -18
- data/lib/sequel/plugins/class_table_inheritance.rb +4 -4
- data/lib/sequel/plugins/composition.rb +44 -12
- data/lib/sequel/plugins/dataset_associations.rb +100 -0
- data/lib/sequel/plugins/defaults_setter.rb +58 -0
- data/lib/sequel/plugins/dirty.rb +214 -0
- data/lib/sequel/plugins/eager_each.rb +59 -0
- data/lib/sequel/plugins/force_encoding.rb +6 -6
- data/lib/sequel/plugins/hook_class_methods.rb +1 -1
- data/lib/sequel/plugins/identity_map.rb +123 -8
- data/lib/sequel/plugins/instance_filters.rb +10 -0
- data/lib/sequel/plugins/instance_hooks.rb +1 -1
- data/lib/sequel/plugins/json_serializer.rb +58 -6
- data/lib/sequel/plugins/list.rb +12 -2
- data/lib/sequel/plugins/many_through_many.rb +79 -28
- data/lib/sequel/plugins/many_to_one_pk_lookup.rb +71 -0
- data/lib/sequel/plugins/nested_attributes.rb +139 -63
- data/lib/sequel/plugins/optimistic_locking.rb +8 -0
- data/lib/sequel/plugins/prepared_statements.rb +167 -0
- data/lib/sequel/plugins/prepared_statements_associations.rb +87 -0
- data/lib/sequel/plugins/prepared_statements_safe.rb +82 -0
- data/lib/sequel/plugins/prepared_statements_with_pk.rb +59 -0
- data/lib/sequel/plugins/rcte_tree.rb +29 -15
- data/lib/sequel/plugins/schema.rb +7 -2
- data/lib/sequel/plugins/serialization.rb +98 -49
- data/lib/sequel/plugins/serialization_modification_detection.rb +63 -0
- data/lib/sequel/plugins/sharding.rb +21 -54
- data/lib/sequel/plugins/single_table_inheritance.rb +5 -3
- data/lib/sequel/plugins/static_cache.rb +99 -0
- data/lib/sequel/plugins/subclasses.rb +10 -2
- data/lib/sequel/plugins/tactical_eager_loading.rb +7 -7
- data/lib/sequel/plugins/timestamps.rb +1 -1
- data/lib/sequel/plugins/typecast_on_load.rb +9 -12
- data/lib/sequel/plugins/update_primary_key.rb +2 -2
- data/lib/sequel/plugins/validation_class_methods.rb +1 -1
- data/lib/sequel/plugins/xml_serializer.rb +15 -4
- data/lib/sequel/sql.rb +526 -59
- data/lib/sequel/timezones.rb +57 -38
- data/lib/sequel/version.rb +1 -1
- data/spec/adapters/db2_spec.rb +146 -0
- data/spec/adapters/firebird_spec.rb +1 -1
- data/spec/adapters/mssql_spec.rb +142 -40
- data/spec/adapters/mysql_spec.rb +380 -234
- data/spec/adapters/oracle_spec.rb +67 -77
- data/spec/adapters/postgres_spec.rb +1050 -212
- data/spec/adapters/spec_helper.rb +8 -5
- data/spec/adapters/sqlite_spec.rb +139 -27
- data/spec/core/connection_pool_spec.rb +196 -93
- data/spec/core/database_spec.rb +879 -510
- data/spec/core/dataset_spec.rb +1415 -1086
- data/spec/core/expression_filters_spec.rb +554 -109
- data/spec/core/mock_adapter_spec.rb +449 -0
- data/spec/core/object_graph_spec.rb +86 -114
- data/spec/core/schema_generator_spec.rb +4 -4
- data/spec/core/schema_spec.rb +482 -38
- data/spec/core/spec_helper.rb +6 -48
- data/spec/extensions/active_model_spec.rb +13 -0
- data/spec/extensions/arbitrary_servers_spec.rb +110 -0
- data/spec/extensions/association_autoreloading_spec.rb +18 -10
- data/spec/extensions/association_dependencies_spec.rb +15 -25
- data/spec/extensions/association_pks_spec.rb +66 -32
- data/spec/extensions/association_proxies_spec.rb +4 -4
- data/spec/extensions/caching_spec.rb +47 -51
- data/spec/extensions/class_table_inheritance_spec.rb +31 -83
- data/spec/extensions/columns_introspection_spec.rb +91 -0
- data/spec/extensions/composition_spec.rb +18 -13
- data/spec/{core/core_sql_spec.rb → extensions/core_extensions_spec.rb} +119 -139
- data/spec/extensions/dataset_associations_spec.rb +199 -0
- data/spec/extensions/defaults_setter_spec.rb +64 -0
- data/spec/extensions/dirty_spec.rb +155 -0
- data/spec/extensions/eager_each_spec.rb +34 -0
- data/spec/extensions/force_encoding_spec.rb +4 -2
- data/spec/extensions/hook_class_methods_spec.rb +69 -92
- data/spec/extensions/identity_map_spec.rb +131 -22
- data/spec/extensions/inflector_spec.rb +0 -4
- data/spec/extensions/instance_filters_spec.rb +11 -21
- data/spec/extensions/instance_hooks_spec.rb +72 -0
- data/spec/extensions/json_serializer_spec.rb +49 -6
- data/spec/extensions/lazy_attributes_spec.rb +16 -20
- data/spec/extensions/list_spec.rb +48 -39
- data/spec/extensions/many_through_many_spec.rb +283 -250
- data/spec/extensions/many_to_one_pk_lookup_spec.rb +140 -0
- data/spec/extensions/migration_spec.rb +140 -35
- data/spec/extensions/named_timezones_spec.rb +29 -11
- data/spec/extensions/nested_attributes_spec.rb +251 -89
- data/spec/extensions/null_dataset_spec.rb +85 -0
- data/spec/extensions/optimistic_locking_spec.rb +24 -21
- data/spec/extensions/pg_array_ops_spec.rb +105 -0
- data/spec/extensions/pg_array_spec.rb +196 -0
- data/spec/extensions/pg_auto_parameterize_spec.rb +65 -0
- data/spec/extensions/pg_hstore_ops_spec.rb +136 -0
- data/spec/extensions/pg_hstore_spec.rb +195 -0
- data/spec/extensions/pg_inet_spec.rb +44 -0
- data/spec/extensions/pg_json_spec.rb +101 -0
- data/spec/extensions/pg_statement_cache_spec.rb +209 -0
- data/spec/extensions/prepared_statements_associations_spec.rb +111 -0
- data/spec/extensions/prepared_statements_safe_spec.rb +61 -0
- data/spec/extensions/prepared_statements_spec.rb +87 -0
- data/spec/extensions/prepared_statements_with_pk_spec.rb +31 -0
- data/spec/extensions/pretty_table_spec.rb +7 -6
- data/spec/extensions/query_literals_spec.rb +168 -0
- data/spec/extensions/query_spec.rb +6 -0
- data/spec/extensions/rcte_tree_spec.rb +50 -43
- data/spec/extensions/schema_caching_spec.rb +41 -0
- data/spec/extensions/schema_dumper_spec.rb +429 -22
- data/spec/extensions/schema_spec.rb +25 -21
- data/spec/extensions/select_remove_spec.rb +38 -0
- data/spec/extensions/serialization_modification_detection_spec.rb +72 -0
- data/spec/extensions/serialization_spec.rb +85 -43
- data/spec/extensions/server_block_spec.rb +90 -0
- data/spec/extensions/sharding_spec.rb +69 -143
- data/spec/extensions/single_table_inheritance_spec.rb +23 -29
- data/spec/extensions/skip_create_refresh_spec.rb +1 -1
- data/spec/extensions/spec_helper.rb +22 -61
- data/spec/extensions/sql_expr_spec.rb +29 -60
- data/spec/extensions/static_cache_spec.rb +145 -0
- data/spec/extensions/tactical_eager_loading_spec.rb +17 -19
- data/spec/extensions/thread_local_timezones_spec.rb +22 -2
- data/spec/extensions/timestamps_spec.rb +6 -6
- data/spec/extensions/to_dot_spec.rb +4 -7
- data/spec/extensions/touch_spec.rb +13 -14
- data/spec/extensions/tree_spec.rb +11 -26
- data/spec/extensions/typecast_on_load_spec.rb +9 -6
- data/spec/extensions/update_primary_key_spec.rb +30 -24
- data/spec/extensions/validation_class_methods_spec.rb +30 -51
- data/spec/extensions/validation_helpers_spec.rb +16 -35
- data/spec/extensions/xml_serializer_spec.rb +29 -4
- data/spec/files/transaction_specified_migrations/001_create_alt_basic.rb +4 -0
- data/spec/files/transaction_specified_migrations/002_create_basic.rb +4 -0
- data/spec/files/transaction_unspecified_migrations/001_create_alt_basic.rb +3 -0
- data/spec/files/transaction_unspecified_migrations/002_create_basic.rb +3 -0
- data/spec/integration/associations_test.rb +659 -21
- data/spec/integration/database_test.rb +9 -3
- data/spec/integration/dataset_test.rb +605 -91
- data/spec/integration/eager_loader_test.rb +19 -21
- data/spec/integration/migrator_test.rb +2 -3
- data/spec/integration/model_test.rb +81 -2
- data/spec/integration/plugin_test.rb +454 -143
- data/spec/integration/prepared_statement_test.rb +263 -128
- data/spec/integration/schema_test.rb +309 -43
- data/spec/integration/spec_helper.rb +40 -30
- data/spec/integration/timezone_test.rb +38 -12
- data/spec/integration/transaction_test.rb +183 -8
- data/spec/integration/type_test.rb +18 -4
- data/spec/model/association_reflection_spec.rb +201 -7
- data/spec/model/associations_spec.rb +1067 -661
- data/spec/model/base_spec.rb +329 -95
- data/spec/model/dataset_methods_spec.rb +7 -27
- data/spec/model/eager_loading_spec.rb +677 -676
- data/spec/model/hooks_spec.rb +349 -67
- data/spec/model/model_spec.rb +240 -168
- data/spec/model/plugins_spec.rb +24 -13
- data/spec/model/record_spec.rb +490 -232
- data/spec/model/spec_helper.rb +14 -71
- data/spec/model/validations_spec.rb +11 -0
- data/spec/rcov.opts +2 -0
- metadata +178 -80
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
require File.join(File.dirname(File.expand_path(__FILE__)), 'spec_helper.rb')
|
|
2
2
|
|
|
3
3
|
describe "Eagerly loading a tree structure" do
|
|
4
|
-
before do
|
|
4
|
+
before(:all) do
|
|
5
5
|
INTEGRATION_DB.instance_variable_set(:@schemas, {})
|
|
6
6
|
INTEGRATION_DB.create_table!(:nodes) do
|
|
7
7
|
primary_key :id
|
|
@@ -66,9 +66,8 @@ describe "Eagerly loading a tree structure" do
|
|
|
66
66
|
Node.insert(:parent_id=>4)
|
|
67
67
|
Node.insert(:parent_id=>5)
|
|
68
68
|
Node.insert(:parent_id=>6)
|
|
69
|
-
clear_sqls
|
|
70
69
|
end
|
|
71
|
-
after do
|
|
70
|
+
after(:all) do
|
|
72
71
|
INTEGRATION_DB.drop_table :nodes
|
|
73
72
|
Object.send(:remove_const, :Node)
|
|
74
73
|
end
|
|
@@ -145,7 +144,6 @@ describe "Association Extensions" do
|
|
|
145
144
|
many_to_one :author
|
|
146
145
|
end
|
|
147
146
|
@author = Author.create
|
|
148
|
-
clear_sqls
|
|
149
147
|
end
|
|
150
148
|
after do
|
|
151
149
|
INTEGRATION_DB.drop_table :authorships, :authors
|
|
@@ -172,7 +170,7 @@ describe "Association Extensions" do
|
|
|
172
170
|
end
|
|
173
171
|
|
|
174
172
|
describe "has_many :through has_many and has_one :through belongs_to" do
|
|
175
|
-
before do
|
|
173
|
+
before(:all) do
|
|
176
174
|
INTEGRATION_DB.instance_variable_set(:@schemas, {})
|
|
177
175
|
INTEGRATION_DB.create_table!(:firms) do
|
|
178
176
|
primary_key :id
|
|
@@ -251,9 +249,8 @@ describe "has_many :through has_many and has_one :through belongs_to" do
|
|
|
251
249
|
@invoice3 = Invoice.create(:client => @client2)
|
|
252
250
|
@invoice4 = Invoice.create(:client => @client3)
|
|
253
251
|
@invoice5 = Invoice.create(:client => @client3)
|
|
254
|
-
clear_sqls
|
|
255
252
|
end
|
|
256
|
-
after do
|
|
253
|
+
after(:all) do
|
|
257
254
|
INTEGRATION_DB.drop_table :invoices, :clients, :firms
|
|
258
255
|
Object.send(:remove_const, :Firm)
|
|
259
256
|
Object.send(:remove_const, :Client)
|
|
@@ -324,7 +321,7 @@ describe "has_many :through has_many and has_one :through belongs_to" do
|
|
|
324
321
|
end
|
|
325
322
|
|
|
326
323
|
describe "Polymorphic Associations" do
|
|
327
|
-
before do
|
|
324
|
+
before(:all) do
|
|
328
325
|
INTEGRATION_DB.instance_variable_set(:@schemas, {})
|
|
329
326
|
INTEGRATION_DB.create_table!(:assets) do
|
|
330
327
|
primary_key :id
|
|
@@ -413,6 +410,9 @@ describe "Polymorphic Associations" do
|
|
|
413
410
|
.update(:attachable_id=>nil, :attachable_type=>nil)
|
|
414
411
|
end
|
|
415
412
|
end
|
|
413
|
+
end
|
|
414
|
+
before do
|
|
415
|
+
[:assets, :posts, :notes].each{|t| INTEGRATION_DB[t].delete}
|
|
416
416
|
@post = Post.create
|
|
417
417
|
Note.create
|
|
418
418
|
@note = Note.create
|
|
@@ -420,9 +420,8 @@ describe "Polymorphic Associations" do
|
|
|
420
420
|
@asset2 = Asset.create(:attachable=>@note)
|
|
421
421
|
@asset1.associations.clear
|
|
422
422
|
@asset2.associations.clear
|
|
423
|
-
clear_sqls
|
|
424
423
|
end
|
|
425
|
-
after do
|
|
424
|
+
after(:all) do
|
|
426
425
|
INTEGRATION_DB.drop_table :assets, :posts, :notes
|
|
427
426
|
Object.send(:remove_const, :Asset)
|
|
428
427
|
Object.send(:remove_const, :Post)
|
|
@@ -483,7 +482,7 @@ describe "Polymorphic Associations" do
|
|
|
483
482
|
end
|
|
484
483
|
|
|
485
484
|
describe "many_to_one/one_to_many not referencing primary key" do
|
|
486
|
-
before do
|
|
485
|
+
before(:all) do
|
|
487
486
|
INTEGRATION_DB.instance_variable_set(:@schemas, {})
|
|
488
487
|
INTEGRATION_DB.create_table!(:clients) do
|
|
489
488
|
primary_key :id
|
|
@@ -540,14 +539,16 @@ describe "many_to_one/one_to_many not referencing primary key" do
|
|
|
540
539
|
self.client_name = (client.name if client)
|
|
541
540
|
end
|
|
542
541
|
end
|
|
543
|
-
|
|
542
|
+
end
|
|
543
|
+
before do
|
|
544
|
+
Client.delete
|
|
545
|
+
Invoice.delete
|
|
544
546
|
@client1 = Client.create(:name=>'X')
|
|
545
547
|
@client2 = Client.create(:name=>'Y')
|
|
546
548
|
@invoice1 = Invoice.create(:client_name=>'X')
|
|
547
549
|
@invoice2 = Invoice.create(:client_name=>'X')
|
|
548
|
-
clear_sqls
|
|
549
550
|
end
|
|
550
|
-
after do
|
|
551
|
+
after(:all) do
|
|
551
552
|
INTEGRATION_DB.drop_table :invoices, :clients
|
|
552
553
|
Object.send(:remove_const, :Client)
|
|
553
554
|
Object.send(:remove_const, :Invoice)
|
|
@@ -618,7 +619,7 @@ describe "many_to_one/one_to_many not referencing primary key" do
|
|
|
618
619
|
end
|
|
619
620
|
|
|
620
621
|
describe "statistics associations" do
|
|
621
|
-
before do
|
|
622
|
+
before(:all) do
|
|
622
623
|
INTEGRATION_DB.create_table!(:projects) do
|
|
623
624
|
primary_key :id
|
|
624
625
|
String :name
|
|
@@ -658,9 +659,8 @@ describe "statistics associations" do
|
|
|
658
659
|
@ticket2 = Ticket.create(:project=>@project1, :hours=>10)
|
|
659
660
|
@ticket3 = Ticket.create(:project=>@project2, :hours=>2)
|
|
660
661
|
@ticket4 = Ticket.create(:project=>@project2, :hours=>20)
|
|
661
|
-
clear_sqls
|
|
662
662
|
end
|
|
663
|
-
after do
|
|
663
|
+
after(:all) do
|
|
664
664
|
INTEGRATION_DB.drop_table :tickets, :projects
|
|
665
665
|
Object.send(:remove_const, :Project)
|
|
666
666
|
Object.send(:remove_const, :Ticket)
|
|
@@ -679,7 +679,7 @@ describe "statistics associations" do
|
|
|
679
679
|
end
|
|
680
680
|
|
|
681
681
|
describe "one to one associations" do
|
|
682
|
-
before do
|
|
682
|
+
before(:all) do
|
|
683
683
|
INTEGRATION_DB.create_table!(:books) do
|
|
684
684
|
primary_key :id
|
|
685
685
|
end
|
|
@@ -703,10 +703,8 @@ describe "one to one associations" do
|
|
|
703
703
|
@page2 = Page.create(:book=>@book1, :page_number=>2)
|
|
704
704
|
@page3 = Page.create(:book=>@book2, :page_number=>1)
|
|
705
705
|
@page4 = Page.create(:book=>@book2, :page_number=>2)
|
|
706
|
-
clear_sqls
|
|
707
706
|
end
|
|
708
|
-
|
|
709
|
-
after do
|
|
707
|
+
after(:all) do
|
|
710
708
|
INTEGRATION_DB.drop_table :pages, :books
|
|
711
709
|
Object.send(:remove_const, :Book)
|
|
712
710
|
Object.send(:remove_const, :Page)
|
|
@@ -7,7 +7,7 @@ describe Sequel::Migrator do
|
|
|
7
7
|
@m = Sequel::Migrator
|
|
8
8
|
end
|
|
9
9
|
after do
|
|
10
|
-
|
|
10
|
+
@db.drop_table?(:schema_info, :schema_migrations, :sm1111, :sm1122, :sm2222, :sm2233, :sm3333, :sm11111, :sm22222)
|
|
11
11
|
end
|
|
12
12
|
|
|
13
13
|
specify "should be able to migrate up and down all the way successfully" do
|
|
@@ -187,8 +187,7 @@ describe Sequel::Migrator do
|
|
|
187
187
|
|
|
188
188
|
specify "should handle reversible migrations" do
|
|
189
189
|
@dir = 'spec/files/reversible_migrations'
|
|
190
|
-
@db.drop_table(:a)
|
|
191
|
-
@db.drop_table(:b) rescue nil
|
|
190
|
+
@db.drop_table?(:a, :b)
|
|
192
191
|
@m.apply(@db, @dir, 1)
|
|
193
192
|
[:schema_info, :a].each{|n| @db.table_exists?(n).should be_true}
|
|
194
193
|
[:schema_migrations, :b].each{|n| @db.table_exists?(n).should be_false}
|
|
@@ -3,7 +3,7 @@ require File.join(File.dirname(File.expand_path(__FILE__)), 'spec_helper.rb')
|
|
|
3
3
|
describe "Sequel::Model basic support" do
|
|
4
4
|
before do
|
|
5
5
|
@db = INTEGRATION_DB
|
|
6
|
-
@db.create_table!(:items) do
|
|
6
|
+
@db.create_table!(:items, :engine=>:InnoDB) do
|
|
7
7
|
primary_key :id
|
|
8
8
|
String :name
|
|
9
9
|
end
|
|
@@ -11,7 +11,7 @@ describe "Sequel::Model basic support" do
|
|
|
11
11
|
end
|
|
12
12
|
end
|
|
13
13
|
after do
|
|
14
|
-
@db.drop_table(:items)
|
|
14
|
+
@db.drop_table?(:items)
|
|
15
15
|
Object.send(:remove_const, :Item)
|
|
16
16
|
end
|
|
17
17
|
|
|
@@ -38,6 +38,14 @@ describe "Sequel::Model basic support" do
|
|
|
38
38
|
Item::Thing.first.should == Item::Thing.load(:id=>1, :name=>'J')
|
|
39
39
|
end
|
|
40
40
|
|
|
41
|
+
specify "should create accessors for all table columns even if all dataset columns aren't selected" do
|
|
42
|
+
c = Class.new(Sequel::Model(@db[:items].select(:id)))
|
|
43
|
+
o = c.new
|
|
44
|
+
o.name = 'A'
|
|
45
|
+
o.save.should == c.load(:id=>1)
|
|
46
|
+
c.select_map(:name).should == ['A']
|
|
47
|
+
end
|
|
48
|
+
|
|
41
49
|
specify "should work correctly when a dataset restricts the colums it selects" do
|
|
42
50
|
class ::Item::Thing < Sequel::Model(@db[:items].select(:name))
|
|
43
51
|
end
|
|
@@ -52,6 +60,68 @@ describe "Sequel::Model basic support" do
|
|
|
52
60
|
Item.count.should == 0
|
|
53
61
|
end
|
|
54
62
|
|
|
63
|
+
specify "#save should return nil if raise_on_save_failure is false and save isn't successful" do
|
|
64
|
+
i = Item.new(:name=>'J')
|
|
65
|
+
i.use_transactions = true
|
|
66
|
+
def i.after_save
|
|
67
|
+
raise Sequel::Rollback
|
|
68
|
+
end
|
|
69
|
+
i.save.should be_nil
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
specify "#should respect after_commit, after_rollback, after_destroy_commit, and after_destroy_rollback hooks" do
|
|
73
|
+
i = Item.create(:name=>'J')
|
|
74
|
+
i.use_transactions = true
|
|
75
|
+
def i.hooks
|
|
76
|
+
@hooks
|
|
77
|
+
end
|
|
78
|
+
def i.rb=(x)
|
|
79
|
+
@hooks = []
|
|
80
|
+
@rb = x
|
|
81
|
+
end
|
|
82
|
+
def i.after_save
|
|
83
|
+
@hooks << :as
|
|
84
|
+
raise Sequel::Rollback if @rb
|
|
85
|
+
end
|
|
86
|
+
def i.after_destroy
|
|
87
|
+
@hooks << :ad
|
|
88
|
+
raise Sequel::Rollback if @rb
|
|
89
|
+
end
|
|
90
|
+
def i.after_commit
|
|
91
|
+
@hooks << :ac
|
|
92
|
+
end
|
|
93
|
+
def i.after_rollback
|
|
94
|
+
@hooks << :ar
|
|
95
|
+
end
|
|
96
|
+
def i.after_destroy_commit
|
|
97
|
+
@hooks << :adc
|
|
98
|
+
end
|
|
99
|
+
def i.after_destroy_rollback
|
|
100
|
+
@hooks << :adr
|
|
101
|
+
end
|
|
102
|
+
i.name = 'K'
|
|
103
|
+
i.rb = true
|
|
104
|
+
i.save.should be_nil
|
|
105
|
+
i.reload.name.should == 'J'
|
|
106
|
+
i.hooks.should == [:as, :ar]
|
|
107
|
+
|
|
108
|
+
i.rb = true
|
|
109
|
+
i.destroy.should be_nil
|
|
110
|
+
i.exists?.should be_true
|
|
111
|
+
i.hooks.should == [:ad, :adr]
|
|
112
|
+
|
|
113
|
+
i.name = 'K'
|
|
114
|
+
i.rb = false
|
|
115
|
+
i.save.should_not be_nil
|
|
116
|
+
i.reload.name.should == 'K'
|
|
117
|
+
i.hooks.should == [:as, :ac]
|
|
118
|
+
|
|
119
|
+
i.rb = false
|
|
120
|
+
i.destroy.should_not be_nil
|
|
121
|
+
i.exists?.should be_false
|
|
122
|
+
i.hooks.should == [:ad, :adc]
|
|
123
|
+
end
|
|
124
|
+
|
|
55
125
|
specify "#exists? should return whether the item is still in the database" do
|
|
56
126
|
i = Item.create(:name=>'J')
|
|
57
127
|
i.exists?.should == true
|
|
@@ -128,3 +198,12 @@ describe "Sequel::Model basic support" do
|
|
|
128
198
|
end
|
|
129
199
|
end
|
|
130
200
|
end
|
|
201
|
+
|
|
202
|
+
describe "Sequel::Model with no existing table" do
|
|
203
|
+
specify "should not raise an error when setting the dataset" do
|
|
204
|
+
db = INTEGRATION_DB
|
|
205
|
+
db.drop_table?(:items)
|
|
206
|
+
proc{class ::Item < Sequel::Model(db); end; Object.send(:remove_const, :Item)}.should_not raise_error
|
|
207
|
+
proc{c = Class.new(Sequel::Model); c.set_dataset(db[:items])}.should_not raise_error
|
|
208
|
+
end
|
|
209
|
+
end
|