sequel 5.29.0 → 5.34.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 +70 -1922
- data/README.rdoc +1 -1
- data/doc/advanced_associations.rdoc +4 -4
- data/doc/association_basics.rdoc +3 -3
- data/doc/code_order.rdoc +12 -2
- data/doc/model_dataset_method_design.rdoc +1 -1
- data/doc/postgresql.rdoc +71 -0
- data/doc/release_notes/5.30.0.txt +20 -0
- data/doc/release_notes/5.31.0.txt +148 -0
- data/doc/release_notes/5.32.0.txt +46 -0
- data/doc/release_notes/5.33.0.txt +24 -0
- data/doc/release_notes/5.34.0.txt +40 -0
- data/doc/testing.rdoc +1 -1
- data/lib/sequel/adapters/shared/access.rb +6 -6
- data/lib/sequel/adapters/shared/mssql.rb +5 -5
- data/lib/sequel/adapters/shared/mysql.rb +9 -9
- data/lib/sequel/adapters/shared/oracle.rb +16 -16
- data/lib/sequel/adapters/shared/postgres.rb +169 -14
- data/lib/sequel/adapters/shared/sqlanywhere.rb +9 -9
- data/lib/sequel/adapters/shared/sqlite.rb +32 -5
- data/lib/sequel/connection_pool/sharded_single.rb +4 -1
- data/lib/sequel/connection_pool/sharded_threaded.rb +12 -12
- data/lib/sequel/connection_pool/single.rb +1 -1
- data/lib/sequel/connection_pool/threaded.rb +2 -2
- data/lib/sequel/core.rb +318 -314
- data/lib/sequel/database/connecting.rb +1 -1
- data/lib/sequel/database/misc.rb +16 -10
- data/lib/sequel/database/query.rb +3 -1
- data/lib/sequel/database/schema_generator.rb +0 -1
- data/lib/sequel/database/schema_methods.rb +15 -16
- data/lib/sequel/database/transactions.rb +12 -13
- data/lib/sequel/dataset/placeholder_literalizer.rb +3 -7
- data/lib/sequel/dataset/query.rb +4 -3
- data/lib/sequel/deprecated.rb +2 -0
- data/lib/sequel/exceptions.rb +2 -0
- data/lib/sequel/extensions/connection_expiration.rb +2 -2
- data/lib/sequel/extensions/connection_validator.rb +2 -2
- data/lib/sequel/extensions/fiber_concurrency.rb +24 -0
- data/lib/sequel/extensions/index_caching.rb +9 -7
- data/lib/sequel/extensions/integer64.rb +2 -0
- data/lib/sequel/extensions/migration.rb +1 -1
- data/lib/sequel/extensions/pg_enum.rb +5 -2
- data/lib/sequel/extensions/pg_hstore.rb +6 -0
- data/lib/sequel/extensions/pg_inet.rb +13 -5
- data/lib/sequel/extensions/pg_interval.rb +2 -0
- data/lib/sequel/extensions/pg_range.rb +2 -0
- data/lib/sequel/extensions/pg_timestamptz.rb +2 -0
- data/lib/sequel/extensions/run_transaction_hooks.rb +72 -0
- data/lib/sequel/extensions/schema_dumper.rb +10 -4
- data/lib/sequel/extensions/server_block.rb +3 -3
- data/lib/sequel/model.rb +2 -0
- data/lib/sequel/model/associations.rb +30 -18
- data/lib/sequel/model/base.rb +64 -55
- data/lib/sequel/model/plugins.rb +3 -3
- data/lib/sequel/plugins/association_lazy_eager_option.rb +66 -0
- data/lib/sequel/plugins/association_multi_add_remove.rb +2 -0
- data/lib/sequel/plugins/association_pks.rb +57 -16
- data/lib/sequel/plugins/association_proxies.rb +2 -0
- data/lib/sequel/plugins/boolean_subsets.rb +4 -1
- data/lib/sequel/plugins/class_table_inheritance.rb +26 -26
- data/lib/sequel/plugins/dirty.rb +13 -13
- data/lib/sequel/plugins/forbid_lazy_load.rb +214 -0
- data/lib/sequel/plugins/json_serializer.rb +3 -7
- data/lib/sequel/plugins/rcte_tree.rb +2 -2
- data/lib/sequel/plugins/single_table_inheritance.rb +15 -15
- data/lib/sequel/plugins/skip_saving_columns.rb +108 -0
- data/lib/sequel/plugins/subclasses.rb +2 -0
- data/lib/sequel/timezones.rb +6 -4
- data/lib/sequel/version.rb +1 -1
- metadata +17 -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,69 +0,0 @@
|
|
|
1
|
-
require_relative "spec_helper"
|
|
2
|
-
|
|
3
|
-
Sequel.extension :blank
|
|
4
|
-
|
|
5
|
-
describe "Object#blank?" do
|
|
6
|
-
it "it should be true if the object responds true to empty?" do
|
|
7
|
-
[].blank?.must_equal true
|
|
8
|
-
{}.blank?.must_equal true
|
|
9
|
-
o = Object.new
|
|
10
|
-
def o.empty?; true; end
|
|
11
|
-
o.blank?.must_equal true
|
|
12
|
-
end
|
|
13
|
-
|
|
14
|
-
it "it should be false if the object doesn't respond true to empty?" do
|
|
15
|
-
[2].blank?.must_equal false
|
|
16
|
-
{1=>2}.blank?.must_equal false
|
|
17
|
-
Object.new.blank?.must_equal false
|
|
18
|
-
end
|
|
19
|
-
end
|
|
20
|
-
|
|
21
|
-
describe "Numeric#blank?" do
|
|
22
|
-
it "it should always be false" do
|
|
23
|
-
1.blank?.must_equal false
|
|
24
|
-
0.blank?.must_equal false
|
|
25
|
-
-1.blank?.must_equal false
|
|
26
|
-
1.0.blank?.must_equal false
|
|
27
|
-
0.0.blank?.must_equal false
|
|
28
|
-
-1.0.blank?.must_equal false
|
|
29
|
-
10000000000000000.blank?.must_equal false
|
|
30
|
-
-10000000000000000.blank?.must_equal false
|
|
31
|
-
10000000000000000.0.blank?.must_equal false
|
|
32
|
-
-10000000000000000.0.blank?.must_equal false
|
|
33
|
-
end
|
|
34
|
-
end
|
|
35
|
-
|
|
36
|
-
describe "NilClass#blank?" do
|
|
37
|
-
it "it should always be true" do
|
|
38
|
-
nil.blank?.must_equal true
|
|
39
|
-
end
|
|
40
|
-
end
|
|
41
|
-
|
|
42
|
-
describe "TrueClass#blank?" do
|
|
43
|
-
it "it should always be false" do
|
|
44
|
-
true.blank?.must_equal false
|
|
45
|
-
end
|
|
46
|
-
end
|
|
47
|
-
|
|
48
|
-
describe "FalseClass#blank?" do
|
|
49
|
-
it "it should always be true" do
|
|
50
|
-
false.blank?.must_equal true
|
|
51
|
-
end
|
|
52
|
-
end
|
|
53
|
-
|
|
54
|
-
describe "String#blank?" do
|
|
55
|
-
it "it should be true if the string is empty" do
|
|
56
|
-
''.blank?.must_equal true
|
|
57
|
-
end
|
|
58
|
-
it "it should be true if the string is composed of just whitespace" do
|
|
59
|
-
' '.blank?.must_equal true
|
|
60
|
-
"\r\n\t".blank?.must_equal true
|
|
61
|
-
(' '*4000).blank?.must_equal true
|
|
62
|
-
("\r\n\t"*4000).blank?.must_equal true
|
|
63
|
-
end
|
|
64
|
-
it "it should be false if the string has any non whitespace characters" do
|
|
65
|
-
'1'.blank?.must_equal false
|
|
66
|
-
("\r\n\t"*4000 + 'a').blank?.must_equal false
|
|
67
|
-
("\r\na\t"*4000).blank?.must_equal false
|
|
68
|
-
end
|
|
69
|
-
end
|
|
@@ -1,93 +0,0 @@
|
|
|
1
|
-
require_relative "spec_helper"
|
|
2
|
-
|
|
3
|
-
describe Sequel::Model, "BooleanReaders plugin" do
|
|
4
|
-
before do
|
|
5
|
-
@db = Sequel.mock
|
|
6
|
-
def @db.supports_schema_parsing?() true end
|
|
7
|
-
def @db.schema(*args)
|
|
8
|
-
[[:id, {}], [:z, {:type=>:integer, :db_type=>'tinyint(1)'}], [:b, {:type=>:boolean, :db_type=>'boolean'}]]
|
|
9
|
-
end
|
|
10
|
-
|
|
11
|
-
@c = Class.new(Sequel::Model(@db[:items]))
|
|
12
|
-
@p = proc do
|
|
13
|
-
@columns = [:id, :b, :z]
|
|
14
|
-
def columns; @columns; end
|
|
15
|
-
end
|
|
16
|
-
@c.instance_eval(&@p)
|
|
17
|
-
end
|
|
18
|
-
|
|
19
|
-
it "should create attribute? readers for all boolean attributes" do
|
|
20
|
-
@c.plugin(:boolean_readers)
|
|
21
|
-
o = @c.new
|
|
22
|
-
o.b?.must_be_nil
|
|
23
|
-
o.b = '1'
|
|
24
|
-
o.b?.must_equal true
|
|
25
|
-
o.b = '0'
|
|
26
|
-
o.b?.must_equal false
|
|
27
|
-
o.b = ''
|
|
28
|
-
o.b?.must_be_nil
|
|
29
|
-
end
|
|
30
|
-
|
|
31
|
-
it "should not create attribute? readers for non-boolean attributes" do
|
|
32
|
-
@c.plugin(:boolean_readers)
|
|
33
|
-
proc{@c.new.z?}.must_raise(NoMethodError)
|
|
34
|
-
proc{@c.new.id?}.must_raise(NoMethodError)
|
|
35
|
-
end
|
|
36
|
-
|
|
37
|
-
it "should accept a block to determine if an attribute is boolean" do
|
|
38
|
-
@c.plugin(:boolean_readers){|c| db_schema[c][:db_type] == 'tinyint(1)'}
|
|
39
|
-
proc{@c.new.b?}.must_raise(NoMethodError)
|
|
40
|
-
o = @c.new
|
|
41
|
-
o.z.must_be_nil
|
|
42
|
-
o.z?.must_be_nil
|
|
43
|
-
o.z = '1'
|
|
44
|
-
o.z.must_equal 1
|
|
45
|
-
o.z?.must_equal true
|
|
46
|
-
o.z = '0'
|
|
47
|
-
o.z.must_equal 0
|
|
48
|
-
o.z?.must_equal false
|
|
49
|
-
o.z = ''
|
|
50
|
-
o.z.must_be_nil
|
|
51
|
-
o.z?.must_be_nil
|
|
52
|
-
end
|
|
53
|
-
|
|
54
|
-
it "should create boolean readers when set_dataset is defined" do
|
|
55
|
-
c = Class.new(Sequel::Model(@db))
|
|
56
|
-
c.instance_eval(&@p)
|
|
57
|
-
c.plugin(:boolean_readers)
|
|
58
|
-
c.set_dataset(@db[:a])
|
|
59
|
-
o = c.new
|
|
60
|
-
o.b?.must_be_nil
|
|
61
|
-
o.b = '1'
|
|
62
|
-
o.b?.must_equal true
|
|
63
|
-
o.b = '0'
|
|
64
|
-
o.b?.must_equal false
|
|
65
|
-
o.b = ''
|
|
66
|
-
o.b?.must_be_nil
|
|
67
|
-
proc{o.i?}.must_raise(NoMethodError)
|
|
68
|
-
|
|
69
|
-
c = Class.new(Sequel::Model(@db))
|
|
70
|
-
c.instance_eval(&@p)
|
|
71
|
-
c.plugin(:boolean_readers){|x| db_schema[x][:db_type] == 'tinyint(1)'}
|
|
72
|
-
c.set_dataset(@db[:a])
|
|
73
|
-
o = c.new
|
|
74
|
-
o.z.must_be_nil
|
|
75
|
-
o.z?.must_be_nil
|
|
76
|
-
o.z = '1'
|
|
77
|
-
o.z.must_equal 1
|
|
78
|
-
o.z?.must_equal true
|
|
79
|
-
o.z = '0'
|
|
80
|
-
o.z.must_equal 0
|
|
81
|
-
o.z?.must_equal false
|
|
82
|
-
o.z = ''
|
|
83
|
-
o.z.must_be_nil
|
|
84
|
-
o.z?.must_be_nil
|
|
85
|
-
proc{o.b?}.must_raise(NoMethodError)
|
|
86
|
-
end
|
|
87
|
-
|
|
88
|
-
it "should handle cases where getting the columns raises an error" do
|
|
89
|
-
def @c.columns; raise Sequel::Error end
|
|
90
|
-
@c.plugin(:boolean_readers)
|
|
91
|
-
proc{@c.new.b?}.must_raise(NoMethodError)
|
|
92
|
-
end
|
|
93
|
-
end
|
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
require_relative "spec_helper"
|
|
2
|
-
|
|
3
|
-
describe "boolean_subsets plugin" do
|
|
4
|
-
before do
|
|
5
|
-
@db = Sequel.mock
|
|
6
|
-
def @db.supports_schema_parsing?() true end
|
|
7
|
-
def @db.schema(*args)
|
|
8
|
-
[[:asdaf9898as, {}], [:active, {:type=>:boolean}]]
|
|
9
|
-
end
|
|
10
|
-
|
|
11
|
-
@c = Class.new(Sequel::Model(@db[:items]))
|
|
12
|
-
@p = proc do
|
|
13
|
-
@columns = [:asdaf9898as, :active]
|
|
14
|
-
def columns; @columns; end
|
|
15
|
-
end
|
|
16
|
-
@c.instance_eval(&@p)
|
|
17
|
-
end
|
|
18
|
-
|
|
19
|
-
it "should create subsets only for boolean attributes" do
|
|
20
|
-
@c.plugin(:boolean_subsets)
|
|
21
|
-
@c.active.sql.must_equal "SELECT * FROM items WHERE (active IS TRUE)"
|
|
22
|
-
@c.respond_to?(:asdaf9898as).must_equal false
|
|
23
|
-
end
|
|
24
|
-
|
|
25
|
-
it "should handle a block passed to the plugin" do
|
|
26
|
-
@c.plugin(:boolean_subsets){|c| ["where_#{c}", c]}
|
|
27
|
-
@c.where_active.sql.must_equal "SELECT * FROM items WHERE active"
|
|
28
|
-
@c.respond_to?(:active).must_equal false
|
|
29
|
-
end
|
|
30
|
-
|
|
31
|
-
it "should create boolean subsets when set_dataset is called" do
|
|
32
|
-
c = Class.new(Sequel::Model(@db))
|
|
33
|
-
c.instance_eval(&@p)
|
|
34
|
-
c.plugin(:boolean_subsets)
|
|
35
|
-
c.respond_to?(:active).must_equal false
|
|
36
|
-
|
|
37
|
-
c.set_dataset(@db[:items])
|
|
38
|
-
c.active.sql.must_equal "SELECT * FROM items WHERE (active IS TRUE)"
|
|
39
|
-
c.respond_to?(:asdaf9898as).must_equal false
|
|
40
|
-
end
|
|
41
|
-
|
|
42
|
-
it "should handle cases where getting the columns raises an error" do
|
|
43
|
-
def @c.columns; raise Sequel::Error end
|
|
44
|
-
@c.plugin(:boolean_subsets)
|
|
45
|
-
@c.respond_to?(:active).must_equal false
|
|
46
|
-
end
|
|
47
|
-
end
|
|
@@ -1,273 +0,0 @@
|
|
|
1
|
-
require_relative "spec_helper"
|
|
2
|
-
|
|
3
|
-
describe Sequel::Model, "caching" do
|
|
4
|
-
before do
|
|
5
|
-
@cache_class = Class.new(Hash) do
|
|
6
|
-
attr_accessor :ttl
|
|
7
|
-
def set(k, v, ttl); self[k] = v; @ttl = ttl; end
|
|
8
|
-
def get(k); self[k]; end
|
|
9
|
-
end
|
|
10
|
-
cache = @cache_class.new
|
|
11
|
-
@cache = cache
|
|
12
|
-
|
|
13
|
-
@memcached_class = Class.new(Hash) do
|
|
14
|
-
attr_accessor :ttl
|
|
15
|
-
def set(k, v, ttl); self[k] = v; @ttl = ttl; end
|
|
16
|
-
def get(k); if self[k] then return self[k]; else raise ArgumentError; end end
|
|
17
|
-
def delete(k); if self[k] then super; else raise ArgumentError; end end
|
|
18
|
-
end
|
|
19
|
-
cache2 = @memcached_class.new
|
|
20
|
-
@memcached = cache2
|
|
21
|
-
|
|
22
|
-
@c = Class.new(Sequel::Model(:items))
|
|
23
|
-
@c.class_eval do
|
|
24
|
-
plugin :caching, cache
|
|
25
|
-
def self.name; 'Item' end
|
|
26
|
-
|
|
27
|
-
columns :name, :id
|
|
28
|
-
end
|
|
29
|
-
|
|
30
|
-
@c3 = Class.new(Sequel::Model(:items))
|
|
31
|
-
@c3.class_eval do
|
|
32
|
-
plugin :caching, cache2
|
|
33
|
-
def self.name; 'Item' end
|
|
34
|
-
|
|
35
|
-
columns :name, :id
|
|
36
|
-
end
|
|
37
|
-
|
|
38
|
-
@c4 = Class.new(Sequel::Model(:items))
|
|
39
|
-
@c4.class_eval do
|
|
40
|
-
plugin :caching, cache2, :ignore_exceptions => true
|
|
41
|
-
def self.name; 'Item' end
|
|
42
|
-
|
|
43
|
-
columns :name, :id
|
|
44
|
-
end
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
@c2 = Class.new(@c) do
|
|
48
|
-
def self.name; 'SubItem' end
|
|
49
|
-
end
|
|
50
|
-
|
|
51
|
-
[@c, @c2, @c3, @c4].each do |c|
|
|
52
|
-
c.dataset = c.dataset.with_fetch(:name => 'sharon'.dup, :id => 1).with_numrows(1)
|
|
53
|
-
end
|
|
54
|
-
|
|
55
|
-
@c.db.reset
|
|
56
|
-
end
|
|
57
|
-
|
|
58
|
-
it "should set the model's cache store" do
|
|
59
|
-
@c.cache_store.wont_be_nil
|
|
60
|
-
@c2.cache_store.wont_be_nil
|
|
61
|
-
end
|
|
62
|
-
|
|
63
|
-
it "should have a default ttl of 3600" do
|
|
64
|
-
@c.cache_ttl.must_equal 3600
|
|
65
|
-
@c2.cache_ttl.must_equal 3600
|
|
66
|
-
end
|
|
67
|
-
|
|
68
|
-
it "should take a ttl option" do
|
|
69
|
-
c = Class.new(Sequel::Model(:items))
|
|
70
|
-
c.plugin :caching, @cache, :ttl => 1234
|
|
71
|
-
c.cache_ttl.must_equal 1234
|
|
72
|
-
Class.new(c).cache_ttl.must_equal 1234
|
|
73
|
-
end
|
|
74
|
-
|
|
75
|
-
it "should allow overriding the ttl option via a plugin :caching call" do
|
|
76
|
-
@c.plugin :caching, @cache, :ttl => 1234
|
|
77
|
-
@c.cache_ttl.must_equal 1234
|
|
78
|
-
Class.new(@c).cache_ttl.must_equal 1234
|
|
79
|
-
end
|
|
80
|
-
|
|
81
|
-
it "should offer a set_cache_ttl method for setting the ttl" do
|
|
82
|
-
@c.cache_ttl.must_equal 3600
|
|
83
|
-
@c.set_cache_ttl 1234
|
|
84
|
-
@c.cache_ttl.must_equal 1234
|
|
85
|
-
Class.new(@c).cache_ttl.must_equal 1234
|
|
86
|
-
end
|
|
87
|
-
|
|
88
|
-
it "should generate a cache key appropriate to the class via the Model#cache_key" do
|
|
89
|
-
m = @c.new
|
|
90
|
-
m.values[:id] = 1
|
|
91
|
-
m.cache_key.must_equal "#{m.class}:1"
|
|
92
|
-
m = @c2.new
|
|
93
|
-
m.values[:id] = 1
|
|
94
|
-
m.cache_key.must_equal "#{m.class}:1"
|
|
95
|
-
|
|
96
|
-
# custom primary key
|
|
97
|
-
@c.set_primary_key :ttt
|
|
98
|
-
m = @c.new
|
|
99
|
-
m.values[:ttt] = 333
|
|
100
|
-
m.cache_key.must_equal "#{m.class}:333"
|
|
101
|
-
c = Class.new(@c)
|
|
102
|
-
m = c.new
|
|
103
|
-
m.values[:ttt] = 333
|
|
104
|
-
m.cache_key.must_equal "#{m.class}:333"
|
|
105
|
-
|
|
106
|
-
# composite primary key
|
|
107
|
-
@c.set_primary_key [:a, :b, :c]
|
|
108
|
-
m = @c.new
|
|
109
|
-
m.values[:a] = 123
|
|
110
|
-
m.values[:c] = 456
|
|
111
|
-
m.values[:b] = 789
|
|
112
|
-
m.cache_key.must_equal "#{m.class}:123,789,456"
|
|
113
|
-
c = Class.new(@c)
|
|
114
|
-
m = c.new
|
|
115
|
-
m.values[:a] = 123
|
|
116
|
-
m.values[:c] = 456
|
|
117
|
-
m.values[:b] = 789
|
|
118
|
-
m.cache_key.must_equal "#{m.class}:123,789,456"
|
|
119
|
-
end
|
|
120
|
-
|
|
121
|
-
it "should generate a cache key via the Model.cache_key method" do
|
|
122
|
-
@c.cache_key(1).must_equal "#{@c}:1"
|
|
123
|
-
@c.cache_key([1, 2]).must_equal "#{@c}:1,2"
|
|
124
|
-
end
|
|
125
|
-
|
|
126
|
-
it "should raise error if attempting to generate cache_key and primary key value is null" do
|
|
127
|
-
m = @c.new
|
|
128
|
-
proc {m.cache_key}.must_raise(Sequel::Error)
|
|
129
|
-
m.values[:id] = 1
|
|
130
|
-
m.cache_key
|
|
131
|
-
|
|
132
|
-
m = @c2.new
|
|
133
|
-
proc {m.cache_key}.must_raise(Sequel::Error)
|
|
134
|
-
m.values[:id] = 1
|
|
135
|
-
m.cache_key
|
|
136
|
-
end
|
|
137
|
-
|
|
138
|
-
it "should not raise error if trying to save a new record" do
|
|
139
|
-
@c.new(:name=>'blah').save
|
|
140
|
-
@c.create(:name=>'blah')
|
|
141
|
-
@c2.new(:name=>'blah').save
|
|
142
|
-
@c2.create(:name=>'blah')
|
|
143
|
-
end
|
|
144
|
-
|
|
145
|
-
it "should set the cache when reading from the database" do
|
|
146
|
-
@c.db.sqls.must_equal []
|
|
147
|
-
@cache.must_be :empty?
|
|
148
|
-
|
|
149
|
-
m = @c[1]
|
|
150
|
-
@c.db.sqls.must_equal ['SELECT * FROM items WHERE id = 1']
|
|
151
|
-
m.values.must_equal(:name=>"sharon", :id=>1)
|
|
152
|
-
@cache[m.cache_key].must_equal m
|
|
153
|
-
m2 = @c[1]
|
|
154
|
-
@c.db.sqls.must_equal []
|
|
155
|
-
m2.must_equal m
|
|
156
|
-
m2.values.must_equal(:name=>"sharon", :id=>1)
|
|
157
|
-
|
|
158
|
-
m = @c2[1]
|
|
159
|
-
@c.db.sqls.must_equal ['SELECT * FROM items WHERE id = 1']
|
|
160
|
-
m.values.must_equal(:name=>"sharon", :id=>1)
|
|
161
|
-
@cache[m.cache_key].must_equal m
|
|
162
|
-
m2 = @c2[1]
|
|
163
|
-
@c.db.sqls.must_equal []
|
|
164
|
-
m2.must_equal m
|
|
165
|
-
m2.values.must_equal(:name=>"sharon", :id=>1)
|
|
166
|
-
end
|
|
167
|
-
|
|
168
|
-
it "should handle lookups by nil primary keys" do
|
|
169
|
-
@c[nil].must_be_nil
|
|
170
|
-
@c.db.sqls.must_equal []
|
|
171
|
-
end
|
|
172
|
-
|
|
173
|
-
it "should delete the cache when writing to the database" do
|
|
174
|
-
m = @c[1]
|
|
175
|
-
@cache[m.cache_key].must_equal m
|
|
176
|
-
m.name = 'hey'
|
|
177
|
-
m.save
|
|
178
|
-
@cache.has_key?(m.cache_key).must_equal false
|
|
179
|
-
@c.db.sqls.must_equal ["SELECT * FROM items WHERE id = 1", "UPDATE items SET name = 'hey' WHERE (id = 1)"]
|
|
180
|
-
|
|
181
|
-
m = @c2[1]
|
|
182
|
-
@cache[m.cache_key].must_equal m
|
|
183
|
-
m.name = 'hey'
|
|
184
|
-
m.save
|
|
185
|
-
@cache.has_key?(m.cache_key).must_equal false
|
|
186
|
-
@c.db.sqls.must_equal ["SELECT * FROM items WHERE id = 1", "UPDATE items SET name = 'hey' WHERE (id = 1)"]
|
|
187
|
-
end
|
|
188
|
-
|
|
189
|
-
it "should delete the cache when deleting the record" do
|
|
190
|
-
m = @c[1]
|
|
191
|
-
@cache[m.cache_key].must_equal m
|
|
192
|
-
m.delete
|
|
193
|
-
@cache.has_key?(m.cache_key).must_equal false
|
|
194
|
-
@c.db.sqls.must_equal ["SELECT * FROM items WHERE id = 1", "DELETE FROM items WHERE id = 1"]
|
|
195
|
-
|
|
196
|
-
m = @c2[1]
|
|
197
|
-
@cache[m.cache_key].must_equal m
|
|
198
|
-
m.delete
|
|
199
|
-
@cache.has_key?(m.cache_key).must_equal false
|
|
200
|
-
@c.db.sqls.must_equal ["SELECT * FROM items WHERE id = 1", "DELETE FROM items WHERE id = 1"]
|
|
201
|
-
end
|
|
202
|
-
|
|
203
|
-
it "should support #[] as a shortcut to #find with hash" do
|
|
204
|
-
m = @c[:id => 3]
|
|
205
|
-
@cache[m.cache_key].must_be_nil
|
|
206
|
-
@c.db.sqls.must_equal ["SELECT * FROM items WHERE (id = 3) LIMIT 1"]
|
|
207
|
-
m = @c[1]
|
|
208
|
-
@cache[m.cache_key].must_equal m
|
|
209
|
-
@c.db.sqls.must_equal ["SELECT * FROM items WHERE id = 1"]
|
|
210
|
-
@c[:id => 4]
|
|
211
|
-
@c.db.sqls.must_equal ["SELECT * FROM items WHERE (id = 4) LIMIT 1"]
|
|
212
|
-
|
|
213
|
-
m = @c2[:id => 3]
|
|
214
|
-
@cache[m.cache_key].must_be_nil
|
|
215
|
-
@c.db.sqls.must_equal ["SELECT * FROM items WHERE (id = 3) LIMIT 1"]
|
|
216
|
-
m = @c2[1]
|
|
217
|
-
@cache[m.cache_key].must_equal m
|
|
218
|
-
@c.db.sqls.must_equal ["SELECT * FROM items WHERE id = 1"]
|
|
219
|
-
@c2[:id => 4]
|
|
220
|
-
@c.db.sqls.must_equal ["SELECT * FROM items WHERE (id = 4) LIMIT 1"]
|
|
221
|
-
end
|
|
222
|
-
|
|
223
|
-
it "should support ignore_exception option" do
|
|
224
|
-
c = Class.new(Sequel::Model(:items))
|
|
225
|
-
c.plugin :caching, @cache, :ignore_exceptions => true
|
|
226
|
-
Class.new(c).cache_ignore_exceptions.must_equal true
|
|
227
|
-
end
|
|
228
|
-
|
|
229
|
-
it "should raise an exception if cache_store is memcached and ignore_exception is not enabled" do
|
|
230
|
-
proc{@c3[1]}.must_raise ArgumentError
|
|
231
|
-
m = @c3.new.save
|
|
232
|
-
proc{m.update({:name=>'blah'})}.must_raise ArgumentError
|
|
233
|
-
end
|
|
234
|
-
|
|
235
|
-
it "should rescue an exception if cache_store is memcached and ignore_exception is enabled" do
|
|
236
|
-
@c4[1].values.must_equal(:name => 'sharon', :id => 1)
|
|
237
|
-
@c4.dataset = @c4.dataset.with_fetch(:name => 'sharon', :id => 1, :x=>1)
|
|
238
|
-
m = @c4.new.save
|
|
239
|
-
m.update({:name=>'blah'})
|
|
240
|
-
m.values.must_equal(:name => 'blah', :id => 1, :x => 1)
|
|
241
|
-
end
|
|
242
|
-
|
|
243
|
-
it "should support Model.cache_get_pk for getting a value from the cache by primary key" do
|
|
244
|
-
@c.cache_get_pk(1).must_be_nil
|
|
245
|
-
m = @c[1]
|
|
246
|
-
@c.cache_get_pk(1).must_equal m
|
|
247
|
-
end
|
|
248
|
-
|
|
249
|
-
it "should support Model.cache_delete_pk for removing a value from the cache by primary key" do
|
|
250
|
-
@c[1]
|
|
251
|
-
@c.cache_get_pk(1).wont_equal nil
|
|
252
|
-
@c.cache_delete_pk(1).must_be_nil
|
|
253
|
-
@c.cache_get_pk(1).must_be_nil
|
|
254
|
-
end
|
|
255
|
-
|
|
256
|
-
it "should support overriding the cache key prefix" do
|
|
257
|
-
c2 = Class.new(@c)
|
|
258
|
-
def c2.cache_key_prefix; "ceetwo" end
|
|
259
|
-
c3 = Class.new(c2)
|
|
260
|
-
@c.cache_key(:id).wont_equal c2.cache_key(:id)
|
|
261
|
-
c2.cache_key(:id).must_equal c3.cache_key(:id)
|
|
262
|
-
|
|
263
|
-
@c[1]
|
|
264
|
-
c2.cache_get_pk(1).must_be_nil
|
|
265
|
-
m = c2[1]
|
|
266
|
-
c2.cache_get_pk(1).values.must_equal @c[1].values
|
|
267
|
-
c3.cache_get_pk(1).values.must_equal m.values
|
|
268
|
-
|
|
269
|
-
m.name << m.name
|
|
270
|
-
m.save
|
|
271
|
-
c2[1].values.must_equal c3[1].values
|
|
272
|
-
end
|
|
273
|
-
end
|