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,262 +0,0 @@
|
|
|
1
|
-
require_relative "spec_helper"
|
|
2
|
-
|
|
3
|
-
Sequel.extension :migration
|
|
4
|
-
describe Sequel::Migrator do
|
|
5
|
-
before do
|
|
6
|
-
@db = DB
|
|
7
|
-
@m = Sequel::Migrator
|
|
8
|
-
end
|
|
9
|
-
after do
|
|
10
|
-
@db.drop_table?(:schema_info, :schema_migrations, :sm1111, :sm1122, :sm2222, :sm2233, :sm3333, :sm11111, :sm22222, :a, :b, :c, :d)
|
|
11
|
-
end
|
|
12
|
-
|
|
13
|
-
it "should be able to migrate up and down all the way successfully" do
|
|
14
|
-
@dir = 'spec/files/integer_migrations'
|
|
15
|
-
@m.apply(@db, @dir)
|
|
16
|
-
[:schema_info, :sm1111, :sm2222, :sm3333].each{|n| @db.table_exists?(n).must_equal true}
|
|
17
|
-
@db[:schema_info].get(:version).must_equal 3
|
|
18
|
-
@m.apply(@db, @dir, 0)
|
|
19
|
-
[:sm1111, :sm2222, :sm3333].each{|n| @db.table_exists?(n).must_equal false}
|
|
20
|
-
@db[:schema_info].get(:version).must_equal 0
|
|
21
|
-
end
|
|
22
|
-
|
|
23
|
-
it "should be able to migrate up and down to specific versions successfully" do
|
|
24
|
-
@dir = 'spec/files/integer_migrations'
|
|
25
|
-
@m.apply(@db, @dir, 2)
|
|
26
|
-
[:schema_info, :sm1111, :sm2222].each{|n| @db.table_exists?(n).must_equal true}
|
|
27
|
-
@db.table_exists?(:sm3333).must_equal false
|
|
28
|
-
@db[:schema_info].get(:version).must_equal 2
|
|
29
|
-
@m.apply(@db, @dir, 1)
|
|
30
|
-
[:sm2222, :sm3333].each{|n| @db.table_exists?(n).must_equal false}
|
|
31
|
-
@db.table_exists?(:sm1111).must_equal true
|
|
32
|
-
@db[:schema_info].get(:version).must_equal 1
|
|
33
|
-
end
|
|
34
|
-
|
|
35
|
-
it "should correctly set migration version to the last successful migration if the migration raises an error when migrating up" do
|
|
36
|
-
@dir = 'spec/files/bad_up_migration'
|
|
37
|
-
proc{@m.apply(@db, @dir)}.must_raise Sequel::DatabaseError
|
|
38
|
-
[:schema_info, :sm11111].each{|n| @db.table_exists?(n).must_equal true}
|
|
39
|
-
@db.table_exists?(:sm22222).must_equal false
|
|
40
|
-
@db[:schema_info].get(:version).must_equal 1
|
|
41
|
-
@m.apply(@db, @dir, 0)
|
|
42
|
-
[:sm11111, :sm22222].each{|n| @db.table_exists?(n).must_equal false}
|
|
43
|
-
@db[:schema_info].get(:version).must_equal 0
|
|
44
|
-
end
|
|
45
|
-
|
|
46
|
-
it "should correctly set migration version to the last successful migration if the migration raises an error when migrating down" do
|
|
47
|
-
@dir = 'spec/files/bad_down_migration'
|
|
48
|
-
@m.apply(@db, @dir)
|
|
49
|
-
[:schema_info, :sm11111, :sm22222].each{|n| @db.table_exists?(n).must_equal true}
|
|
50
|
-
@db[:schema_info].get(:version).must_equal 2
|
|
51
|
-
proc{@m.apply(@db, @dir, 0)}.must_raise Sequel::DatabaseError
|
|
52
|
-
[:sm22222].each{|n| @db.table_exists?(n).must_equal false}
|
|
53
|
-
@db.table_exists?(:sm11111).must_equal true
|
|
54
|
-
@db[:schema_info].get(:version).must_equal 1
|
|
55
|
-
end
|
|
56
|
-
|
|
57
|
-
it "should handle migrating up or down all the way with timestamped migrations" do
|
|
58
|
-
@dir = 'spec/files/timestamped_migrations'
|
|
59
|
-
@m.apply(@db, @dir)
|
|
60
|
-
[:schema_migrations, :sm1111, :sm2222, :sm3333].each{|n| @db.table_exists?(n).must_equal true}
|
|
61
|
-
@db[:schema_migrations].select_order_map(:filename).must_equal %w'1273253849_create_sessions.rb 1273253851_create_nodes.rb 1273253853_3_create_users.rb'
|
|
62
|
-
@m.apply(@db, @dir, 0)
|
|
63
|
-
[:sm1111, :sm2222, :sm3333].each{|n| @db.table_exists?(n).must_equal false}
|
|
64
|
-
@db[:schema_migrations].select_order_map(:filename).must_equal []
|
|
65
|
-
end
|
|
66
|
-
|
|
67
|
-
it "should handle migrating up or down to specific timestamps with timestamped migrations" do
|
|
68
|
-
@dir = 'spec/files/timestamped_migrations'
|
|
69
|
-
@m.apply(@db, @dir, 1273253851)
|
|
70
|
-
[:schema_migrations, :sm1111, :sm2222].each{|n| @db.table_exists?(n).must_equal true}
|
|
71
|
-
@db.table_exists?(:sm3333).must_equal false
|
|
72
|
-
@db[:schema_migrations].select_order_map(:filename).must_equal %w'1273253849_create_sessions.rb 1273253851_create_nodes.rb'
|
|
73
|
-
@m.apply(@db, @dir, 1273253849)
|
|
74
|
-
[:sm2222, :sm3333].each{|n| @db.table_exists?(n).must_equal false}
|
|
75
|
-
@db.table_exists?(:sm1111).must_equal true
|
|
76
|
-
@db[:schema_migrations].select_order_map(:filename).must_equal %w'1273253849_create_sessions.rb'
|
|
77
|
-
end
|
|
78
|
-
|
|
79
|
-
it "should apply all missing files when migrating up with timestamped migrations" do
|
|
80
|
-
@dir = 'spec/files/timestamped_migrations'
|
|
81
|
-
@m.apply(@db, @dir)
|
|
82
|
-
@dir = 'spec/files/interleaved_timestamped_migrations'
|
|
83
|
-
@m.apply(@db, @dir)
|
|
84
|
-
[:schema_migrations, :sm1111, :sm1122, :sm2222, :sm2233, :sm3333].each{|n| @db.table_exists?(n).must_equal true}
|
|
85
|
-
@db[:schema_migrations].select_order_map(:filename).must_equal %w'1273253849_create_sessions.rb 1273253850_create_artists.rb 1273253851_create_nodes.rb 1273253852_create_albums.rb 1273253853_3_create_users.rb'
|
|
86
|
-
end
|
|
87
|
-
|
|
88
|
-
it "should not apply down action to migrations where up action hasn't been applied" do
|
|
89
|
-
@dir = 'spec/files/timestamped_migrations'
|
|
90
|
-
@m.apply(@db, @dir)
|
|
91
|
-
@dir = 'spec/files/interleaved_timestamped_migrations'
|
|
92
|
-
@m.apply(@db, @dir, 0)
|
|
93
|
-
[:sm1111, :sm1122, :sm2222, :sm2233, :sm3333].each{|n| @db.table_exists?(n).must_equal false}
|
|
94
|
-
@db[:schema_migrations].select_order_map(:filename).must_equal []
|
|
95
|
-
end
|
|
96
|
-
|
|
97
|
-
it "should handle updating to a specific timestamp when interleaving migrations with timestamps" do
|
|
98
|
-
@dir = 'spec/files/timestamped_migrations'
|
|
99
|
-
@m.apply(@db, @dir)
|
|
100
|
-
@dir = 'spec/files/interleaved_timestamped_migrations'
|
|
101
|
-
@m.apply(@db, @dir, 1273253851)
|
|
102
|
-
[:schema_migrations, :sm1111, :sm1122, :sm2222].each{|n| @db.table_exists?(n).must_equal true}
|
|
103
|
-
[:sm2233, :sm3333].each{|n| @db.table_exists?(n).must_equal false}
|
|
104
|
-
@db[:schema_migrations].select_order_map(:filename).must_equal %w'1273253849_create_sessions.rb 1273253850_create_artists.rb 1273253851_create_nodes.rb'
|
|
105
|
-
end
|
|
106
|
-
|
|
107
|
-
it "should correctly update schema_migrations table when an error occurs when migrating up or down using timestamped migrations" do
|
|
108
|
-
@dir = 'spec/files/bad_timestamped_migrations'
|
|
109
|
-
proc{@m.apply(@db, @dir)}.must_raise Sequel::DatabaseError
|
|
110
|
-
[:schema_migrations, :sm1111, :sm2222].each{|n| @db.table_exists?(n).must_equal true}
|
|
111
|
-
@db.table_exists?(:sm3333).must_equal false
|
|
112
|
-
@db[:schema_migrations].select_order_map(:filename).must_equal %w'1273253849_create_sessions.rb 1273253851_create_nodes.rb'
|
|
113
|
-
proc{@m.apply(@db, @dir, 0)}.must_raise Sequel::DatabaseError
|
|
114
|
-
[:sm2222, :sm3333].each{|n| @db.table_exists?(n).must_equal false}
|
|
115
|
-
@db.table_exists?(:sm1111).must_equal true
|
|
116
|
-
@db[:schema_migrations].select_order_map(:filename).must_equal %w'1273253849_create_sessions.rb'
|
|
117
|
-
end
|
|
118
|
-
|
|
119
|
-
it "should handle multiple migrations with the same timestamp correctly" do
|
|
120
|
-
@dir = 'spec/files/duplicate_timestamped_migrations'
|
|
121
|
-
@m.apply(@db, @dir)
|
|
122
|
-
[:schema_migrations, :sm1111, :sm2222, :sm3333].each{|n| @db.table_exists?(n).must_equal true}
|
|
123
|
-
@db[:schema_migrations].select_order_map(:filename).must_equal %w'1273253849_create_sessions.rb 1273253853_create_nodes.rb 1273253853_create_users.rb'
|
|
124
|
-
@m.apply(@db, @dir, 1273253853)
|
|
125
|
-
[:sm1111, :sm2222, :sm3333].each{|n| @db.table_exists?(n).must_equal true}
|
|
126
|
-
@db[:schema_migrations].select_order_map(:filename).must_equal %w'1273253849_create_sessions.rb 1273253853_create_nodes.rb 1273253853_create_users.rb'
|
|
127
|
-
@m.apply(@db, @dir, 1273253849)
|
|
128
|
-
[:sm1111].each{|n| @db.table_exists?(n).must_equal true}
|
|
129
|
-
[:sm2222, :sm3333].each{|n| @db.table_exists?(n).must_equal false}
|
|
130
|
-
@db[:schema_migrations].select_order_map(:filename).must_equal %w'1273253849_create_sessions.rb'
|
|
131
|
-
@m.apply(@db, @dir, 1273253848)
|
|
132
|
-
[:sm1111, :sm2222, :sm3333].each{|n| @db.table_exists?(n).must_equal false}
|
|
133
|
-
@db[:schema_migrations].select_order_map(:filename).must_equal []
|
|
134
|
-
end
|
|
135
|
-
|
|
136
|
-
it "should convert schema_info table to schema_migrations table" do
|
|
137
|
-
@dir = 'spec/files/integer_migrations'
|
|
138
|
-
@m.apply(@db, @dir)
|
|
139
|
-
[:schema_info, :sm1111, :sm2222, :sm3333].each{|n| @db.table_exists?(n).must_equal true}
|
|
140
|
-
[:schema_migrations, :sm1122, :sm2233].each{|n| @db.table_exists?(n).must_equal false}
|
|
141
|
-
|
|
142
|
-
@dir = 'spec/files/convert_to_timestamp_migrations'
|
|
143
|
-
@m.apply(@db, @dir)
|
|
144
|
-
[:schema_info, :sm1111, :sm2222, :sm3333, :schema_migrations, :sm1122, :sm2233].each{|n| @db.table_exists?(n).must_equal true}
|
|
145
|
-
@db[:schema_migrations].select_order_map(:filename).must_equal %w'001_create_sessions.rb 002_create_nodes.rb 003_3_create_users.rb 1273253850_create_artists.rb 1273253852_create_albums.rb'
|
|
146
|
-
|
|
147
|
-
@m.apply(@db, @dir, 4)
|
|
148
|
-
[:schema_info, :schema_migrations, :sm1111, :sm2222, :sm3333].each{|n| @db.table_exists?(n).must_equal true}
|
|
149
|
-
[:sm1122, :sm2233].each{|n| @db.table_exists?(n).must_equal false}
|
|
150
|
-
@db[:schema_migrations].select_order_map(:filename).must_equal %w'001_create_sessions.rb 002_create_nodes.rb 003_3_create_users.rb'
|
|
151
|
-
|
|
152
|
-
@m.apply(@db, @dir, 0)
|
|
153
|
-
[:schema_info, :schema_migrations].each{|n| @db.table_exists?(n).must_equal true}
|
|
154
|
-
[:sm1111, :sm2222, :sm3333, :sm1122, :sm2233].each{|n| @db.table_exists?(n).must_equal false}
|
|
155
|
-
@db[:schema_migrations].select_order_map(:filename).must_equal []
|
|
156
|
-
end
|
|
157
|
-
|
|
158
|
-
it "should handle unapplied migrations when migrating schema_info table to schema_migrations table" do
|
|
159
|
-
@dir = 'spec/files/integer_migrations'
|
|
160
|
-
@m.apply(@db, @dir, 2)
|
|
161
|
-
[:schema_info, :sm1111, :sm2222].each{|n| @db.table_exists?(n).must_equal true}
|
|
162
|
-
[:schema_migrations, :sm3333, :sm1122, :sm2233].each{|n| @db.table_exists?(n).must_equal false}
|
|
163
|
-
|
|
164
|
-
@dir = 'spec/files/convert_to_timestamp_migrations'
|
|
165
|
-
@m.apply(@db, @dir, 1273253850)
|
|
166
|
-
[:schema_info, :sm1111, :sm2222, :sm3333, :schema_migrations, :sm1122].each{|n| @db.table_exists?(n).must_equal true}
|
|
167
|
-
[:sm2233].each{|n| @db.table_exists?(n).must_equal false}
|
|
168
|
-
@db[:schema_migrations].select_order_map(:filename).must_equal %w'001_create_sessions.rb 002_create_nodes.rb 003_3_create_users.rb 1273253850_create_artists.rb'
|
|
169
|
-
end
|
|
170
|
-
|
|
171
|
-
it "should handle unapplied migrations when migrating schema_info table to schema_migrations table and target is less than last integer migration version" do
|
|
172
|
-
@dir = 'spec/files/integer_migrations'
|
|
173
|
-
@m.apply(@db, @dir, 1)
|
|
174
|
-
[:schema_info, :sm1111].each{|n| @db.table_exists?(n).must_equal true}
|
|
175
|
-
[:schema_migrations, :sm2222, :sm3333, :sm1122, :sm2233].each{|n| @db.table_exists?(n).must_equal false}
|
|
176
|
-
|
|
177
|
-
@dir = 'spec/files/convert_to_timestamp_migrations'
|
|
178
|
-
@m.apply(@db, @dir, 2)
|
|
179
|
-
[:schema_info, :sm1111, :sm2222, :schema_migrations].each{|n| @db.table_exists?(n).must_equal true}
|
|
180
|
-
[:sm3333, :sm1122, :sm2233].each{|n| @db.table_exists?(n).must_equal false}
|
|
181
|
-
@db[:schema_migrations].select_order_map(:filename).must_equal %w'001_create_sessions.rb 002_create_nodes.rb'
|
|
182
|
-
|
|
183
|
-
@m.apply(@db, @dir)
|
|
184
|
-
[:schema_info, :sm1111, :sm2222, :schema_migrations, :sm3333, :sm1122, :sm2233].each{|n| @db.table_exists?(n).must_equal true}
|
|
185
|
-
@db[:schema_migrations].select_order_map(:filename).must_equal %w'001_create_sessions.rb 002_create_nodes.rb 003_3_create_users.rb 1273253850_create_artists.rb 1273253852_create_albums.rb'
|
|
186
|
-
end
|
|
187
|
-
|
|
188
|
-
it "should handle reversible migrations" do
|
|
189
|
-
@dir = 'spec/files/reversible_migrations'
|
|
190
|
-
@db.drop_table?(:a, :b)
|
|
191
|
-
@m.apply(@db, @dir, 1)
|
|
192
|
-
[:schema_info, :a].each{|n| @db.table_exists?(n).must_equal true}
|
|
193
|
-
[:schema_migrations, :b].each{|n| @db.table_exists?(n).must_equal false}
|
|
194
|
-
@db[:a].columns.must_equal [:a]
|
|
195
|
-
|
|
196
|
-
@m.apply(@db, @dir, 2)
|
|
197
|
-
[:schema_info, :a].each{|n| @db.table_exists?(n).must_equal true}
|
|
198
|
-
[:schema_migrations, :b].each{|n| @db.table_exists?(n).must_equal false}
|
|
199
|
-
@db[:a].columns.must_equal [:a, :b]
|
|
200
|
-
|
|
201
|
-
@m.apply(@db, @dir, 3)
|
|
202
|
-
[:schema_info, :a].each{|n| @db.table_exists?(n).must_equal true}
|
|
203
|
-
[:schema_migrations, :b].each{|n| @db.table_exists?(n).must_equal false}
|
|
204
|
-
@db[:a].columns.must_equal [:a, :c]
|
|
205
|
-
|
|
206
|
-
@m.apply(@db, @dir, 4)
|
|
207
|
-
[:schema_info, :b].each{|n| @db.table_exists?(n).must_equal true}
|
|
208
|
-
[:schema_migrations, :a].each{|n| @db.table_exists?(n).must_equal false}
|
|
209
|
-
@db[:b].columns.must_equal [:a, :c]
|
|
210
|
-
|
|
211
|
-
@m.apply(@db, @dir, 5)
|
|
212
|
-
[:schema_info, :b].each{|n| @db.table_exists?(n).must_equal true}
|
|
213
|
-
[:schema_migrations, :a].each{|n| @db.table_exists?(n).must_equal false}
|
|
214
|
-
@db[:b].columns.must_equal [:a, :c, :e]
|
|
215
|
-
|
|
216
|
-
if @db.supports_foreign_key_parsing?
|
|
217
|
-
@m.apply(@db, @dir, 6)
|
|
218
|
-
[:schema_info, :b, :c].each{|n| @db.table_exists?(n).must_equal true}
|
|
219
|
-
[:schema_migrations, :a].each{|n| @db.table_exists?(n).must_equal false}
|
|
220
|
-
@db[:b].columns.must_equal [:a, :c, :e, :f]
|
|
221
|
-
|
|
222
|
-
@m.apply(@db, @dir, 7)
|
|
223
|
-
[:schema_info, :b, :c, :d].each{|n| @db.table_exists?(n).must_equal true}
|
|
224
|
-
[:schema_migrations, :a].each{|n| @db.table_exists?(n).must_equal false}
|
|
225
|
-
@db[:b].columns.must_equal [:a, :c, :e, :f, :g]
|
|
226
|
-
|
|
227
|
-
@m.apply(@db, @dir, 6)
|
|
228
|
-
[:schema_info, :b, :c].each{|n| @db.table_exists?(n).must_equal true}
|
|
229
|
-
[:schema_migrations, :a, :d].each{|n| @db.table_exists?(n).must_equal false}
|
|
230
|
-
@db[:b].columns.must_equal [:a, :c, :e, :f]
|
|
231
|
-
end
|
|
232
|
-
|
|
233
|
-
@m.apply(@db, @dir, 5)
|
|
234
|
-
[:schema_info, :b].each{|n| @db.table_exists?(n).must_equal true}
|
|
235
|
-
[:schema_migrations, :a, :c].each{|n| @db.table_exists?(n).must_equal false}
|
|
236
|
-
@db[:b].columns.must_equal [:a, :c, :e]
|
|
237
|
-
|
|
238
|
-
@m.apply(@db, @dir, 4)
|
|
239
|
-
[:schema_info, :b].each{|n| @db.table_exists?(n).must_equal true}
|
|
240
|
-
[:schema_migrations, :a].each{|n| @db.table_exists?(n).must_equal false}
|
|
241
|
-
@db[:b].columns.must_equal [:a, :c]
|
|
242
|
-
|
|
243
|
-
@m.apply(@db, @dir, 3)
|
|
244
|
-
[:schema_info, :a].each{|n| @db.table_exists?(n).must_equal true}
|
|
245
|
-
[:schema_migrations, :b].each{|n| @db.table_exists?(n).must_equal false}
|
|
246
|
-
@db[:a].columns.must_equal [:a, :c]
|
|
247
|
-
|
|
248
|
-
@m.apply(@db, @dir, 2)
|
|
249
|
-
[:schema_info, :a].each{|n| @db.table_exists?(n).must_equal true}
|
|
250
|
-
[:schema_migrations, :b].each{|n| @db.table_exists?(n).must_equal false}
|
|
251
|
-
@db[:a].columns.must_equal [:a, :b]
|
|
252
|
-
|
|
253
|
-
@m.apply(@db, @dir, 1)
|
|
254
|
-
[:schema_info, :a].each{|n| @db.table_exists?(n).must_equal true}
|
|
255
|
-
[:schema_migrations, :b].each{|n| @db.table_exists?(n).must_equal false}
|
|
256
|
-
@db[:a].columns.must_equal [:a]
|
|
257
|
-
|
|
258
|
-
@m.apply(@db, @dir, 0)
|
|
259
|
-
[:schema_info].each{|n| @db.table_exists?(n).must_equal true}
|
|
260
|
-
[:schema_migrations, :a, :b].each{|n| @db.table_exists?(n).must_equal false}
|
|
261
|
-
end
|
|
262
|
-
end
|
|
@@ -1,203 +0,0 @@
|
|
|
1
|
-
require_relative "spec_helper"
|
|
2
|
-
|
|
3
|
-
describe "Sequel::Model basic support" do
|
|
4
|
-
before do
|
|
5
|
-
@db = DB
|
|
6
|
-
@db.create_table!(:items, :engine=>:InnoDB) do
|
|
7
|
-
primary_key :id
|
|
8
|
-
String :name
|
|
9
|
-
end
|
|
10
|
-
class ::Item < Sequel::Model(@db)
|
|
11
|
-
end
|
|
12
|
-
end
|
|
13
|
-
after do
|
|
14
|
-
@db.drop_table?(:items)
|
|
15
|
-
Object.send(:remove_const, :Item)
|
|
16
|
-
end
|
|
17
|
-
|
|
18
|
-
it ".find should return first matching item" do
|
|
19
|
-
Item.all.must_equal []
|
|
20
|
-
Item.find(:name=>'J').must_be_nil
|
|
21
|
-
Item.create(:name=>'J')
|
|
22
|
-
Item.find(:name=>'J').must_equal Item.load(:id=>1, :name=>'J')
|
|
23
|
-
end
|
|
24
|
-
|
|
25
|
-
it ".finder should create method that returns first matching item" do
|
|
26
|
-
def Item.by_name(name) where(:name=>name) end
|
|
27
|
-
Item.plugin :finder
|
|
28
|
-
Item.finder :by_name
|
|
29
|
-
Item.first_by_name('J').must_be_nil
|
|
30
|
-
Item.create(:name=>'J')
|
|
31
|
-
Item.first_by_name('J').must_equal Item.load(:id=>1, :name=>'J')
|
|
32
|
-
Item.first_by_name(['J', 'K']).must_equal Item.load(:id=>1, :name=>'J')
|
|
33
|
-
end
|
|
34
|
-
|
|
35
|
-
it ".prepared_finder should create method that returns first matching item" do
|
|
36
|
-
def Item.by_name(name) where(:name=>name) end
|
|
37
|
-
Item.plugin :finder
|
|
38
|
-
Item.prepared_finder :by_name
|
|
39
|
-
Item.first_by_name('J').must_be_nil
|
|
40
|
-
Item.create(:name=>'J')
|
|
41
|
-
Item.first_by_name('J').must_equal Item.load(:id=>1, :name=>'J')
|
|
42
|
-
end
|
|
43
|
-
|
|
44
|
-
it ".find_or_create should return first matching item, or create it if it doesn't exist" do
|
|
45
|
-
Item.all.must_equal []
|
|
46
|
-
Item.find_or_create(:name=>'J').must_equal Item.load(:id=>1, :name=>'J')
|
|
47
|
-
Item.all.must_equal [Item.load(:id=>1, :name=>'J')]
|
|
48
|
-
Item.find_or_create(:name=>'J').must_equal Item.load(:id=>1, :name=>'J')
|
|
49
|
-
Item.all.must_equal [Item.load(:id=>1, :name=>'J')]
|
|
50
|
-
end
|
|
51
|
-
|
|
52
|
-
it "should raise an error if the implied database table doesn't exist" do
|
|
53
|
-
proc do
|
|
54
|
-
class ::Item::Thing < Sequel::Model
|
|
55
|
-
end
|
|
56
|
-
end.must_raise Sequel::Error
|
|
57
|
-
end
|
|
58
|
-
|
|
59
|
-
it "should not raise an error if the implied database table doesn't exist if require_valid_table is false" do
|
|
60
|
-
c = Sequel::Model(@db)
|
|
61
|
-
c.require_valid_table = false
|
|
62
|
-
class ::Item::Thing < c
|
|
63
|
-
set_dataset :items
|
|
64
|
-
end
|
|
65
|
-
Item.create(:name=>'J')
|
|
66
|
-
Item::Thing.first.must_equal Item::Thing.load(:id=>1, :name=>'J')
|
|
67
|
-
end
|
|
68
|
-
|
|
69
|
-
it "should create accessors for all table columns even if all dataset columns aren't selected" do
|
|
70
|
-
c = Class.new(Sequel::Model(@db[:items].select(:id)))
|
|
71
|
-
o = c.new
|
|
72
|
-
o.name = 'A'
|
|
73
|
-
o.save.must_equal c.load(:id=>1)
|
|
74
|
-
c.select_map(:name).must_equal ['A']
|
|
75
|
-
end
|
|
76
|
-
|
|
77
|
-
it "should work correctly when a dataset restricts the colums it selects" do
|
|
78
|
-
class ::Item::Thing < Sequel::Model(@db[:items].select(:name))
|
|
79
|
-
end
|
|
80
|
-
Item.create(:name=>'J')
|
|
81
|
-
Item::Thing.first.must_equal Item::Thing.load(:name=>'J')
|
|
82
|
-
end
|
|
83
|
-
|
|
84
|
-
it "#delete should delete items correctly" do
|
|
85
|
-
i = Item.create(:name=>'J')
|
|
86
|
-
Item.count.must_equal 1
|
|
87
|
-
i.delete
|
|
88
|
-
Item.count.must_equal 0
|
|
89
|
-
end
|
|
90
|
-
|
|
91
|
-
it "#save should return nil if raise_on_save_failure is false and save isn't successful" do
|
|
92
|
-
i = Item.new(:name=>'J')
|
|
93
|
-
i.use_transactions = true
|
|
94
|
-
def i.after_save
|
|
95
|
-
raise Sequel::Rollback
|
|
96
|
-
end
|
|
97
|
-
i.save.must_be_nil
|
|
98
|
-
end
|
|
99
|
-
|
|
100
|
-
it "#exists? should return whether the item is still in the database" do
|
|
101
|
-
i = Item.create(:name=>'J')
|
|
102
|
-
i.exists?.must_equal true
|
|
103
|
-
Item.dataset.delete
|
|
104
|
-
i.exists?.must_equal false
|
|
105
|
-
end
|
|
106
|
-
|
|
107
|
-
it "#save should only update specified columns when saving" do
|
|
108
|
-
@db.create_table!(:items) do
|
|
109
|
-
primary_key :id
|
|
110
|
-
String :name
|
|
111
|
-
Integer :num
|
|
112
|
-
end
|
|
113
|
-
Item.dataset = Item.dataset
|
|
114
|
-
i = Item.create(:name=>'J', :num=>1)
|
|
115
|
-
Item.all.must_equal [Item.load(:id=>1, :name=>'J', :num=>1)]
|
|
116
|
-
i.set(:name=>'K', :num=>2)
|
|
117
|
-
i.save(:columns=>:name)
|
|
118
|
-
Item.all.must_equal [Item.load(:id=>1, :name=>'K', :num=>1)]
|
|
119
|
-
i.set(:name=>'L')
|
|
120
|
-
i.save(:columns=>:num)
|
|
121
|
-
Item.all.must_equal [Item.load(:id=>1, :name=>'K', :num=>2)]
|
|
122
|
-
end
|
|
123
|
-
|
|
124
|
-
it "#save should check that the only a single row is modified, unless require_modification is false" do
|
|
125
|
-
i = Item.create(:name=>'a')
|
|
126
|
-
i.require_modification = true
|
|
127
|
-
i.delete
|
|
128
|
-
proc{i.save}.must_raise(Sequel::NoExistingObject)
|
|
129
|
-
proc{i.delete}.must_raise(Sequel::NoExistingObject)
|
|
130
|
-
|
|
131
|
-
i.require_modification = false
|
|
132
|
-
i.save
|
|
133
|
-
i.delete
|
|
134
|
-
end
|
|
135
|
-
|
|
136
|
-
it ".to_hash should return a hash keyed on primary key if no argument provided" do
|
|
137
|
-
Item.create(:name=>'J')
|
|
138
|
-
Item.to_hash.must_equal(1=>Item.load(:id=>1, :name=>'J'))
|
|
139
|
-
end
|
|
140
|
-
|
|
141
|
-
it ".to_hash should return a hash keyed on argument if one argument provided" do
|
|
142
|
-
Item.create(:name=>'J')
|
|
143
|
-
Item.to_hash(:name).must_equal('J'=>Item.load(:id=>1, :name=>'J'))
|
|
144
|
-
end
|
|
145
|
-
|
|
146
|
-
it "should be marshallable before and after saving if marshallable! is called" do
|
|
147
|
-
i = Item.new(:name=>'J')
|
|
148
|
-
s = nil
|
|
149
|
-
i2 = nil
|
|
150
|
-
i.marshallable!
|
|
151
|
-
s = Marshal.dump(i)
|
|
152
|
-
i2 = Marshal.load(s)
|
|
153
|
-
i2.must_equal i
|
|
154
|
-
|
|
155
|
-
i.save
|
|
156
|
-
i.marshallable!
|
|
157
|
-
s = Marshal.dump(i)
|
|
158
|
-
i2 = Marshal.load(s)
|
|
159
|
-
i2.must_equal i
|
|
160
|
-
|
|
161
|
-
i.save
|
|
162
|
-
i.marshallable!
|
|
163
|
-
s = Marshal.dump(i)
|
|
164
|
-
i2 = Marshal.load(s)
|
|
165
|
-
i2.must_equal i
|
|
166
|
-
end
|
|
167
|
-
|
|
168
|
-
it "#lock! should lock records" do
|
|
169
|
-
Item.db.transaction do
|
|
170
|
-
i = Item.create(:name=>'J')
|
|
171
|
-
i.lock!
|
|
172
|
-
i.update(:name=>'K')
|
|
173
|
-
end
|
|
174
|
-
end
|
|
175
|
-
end
|
|
176
|
-
|
|
177
|
-
describe "Sequel::Model with no existing table" do
|
|
178
|
-
it "should not raise an error when setting the dataset" do
|
|
179
|
-
db = DB
|
|
180
|
-
db.drop_table?(:items)
|
|
181
|
-
c = Class.new(Sequel::Model)
|
|
182
|
-
proc{c.set_dataset(db[:items])}.must_raise Sequel::Error
|
|
183
|
-
db.transaction do
|
|
184
|
-
c = Class.new(Sequel::Model)
|
|
185
|
-
proc{c.dataset = db[:items]}.must_raise Sequel::Error
|
|
186
|
-
db.get(Sequel.cast(1, Integer)).must_equal 1
|
|
187
|
-
end
|
|
188
|
-
end
|
|
189
|
-
|
|
190
|
-
it "should not raise an error when setting the dataset when require_valid_table is false" do
|
|
191
|
-
db = DB
|
|
192
|
-
db.drop_table?(:items)
|
|
193
|
-
c = Class.new(Sequel::Model)
|
|
194
|
-
c.require_valid_table = false
|
|
195
|
-
c.set_dataset(db[:items])
|
|
196
|
-
db.transaction do
|
|
197
|
-
c = Class.new(Sequel::Model)
|
|
198
|
-
c.require_valid_table = false
|
|
199
|
-
c.dataset = db[:items]
|
|
200
|
-
db.get(Sequel.cast(1, Integer)).must_equal 1
|
|
201
|
-
end
|
|
202
|
-
end
|
|
203
|
-
end
|