sequel 4.5.0 → 4.6.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.
Files changed (65) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG +14 -0
  3. data/README.rdoc +0 -1
  4. data/doc/mssql_stored_procedures.rdoc +43 -0
  5. data/doc/release_notes/3.18.0.txt +2 -3
  6. data/doc/release_notes/3.9.0.txt +1 -1
  7. data/doc/release_notes/4.6.0.txt +30 -0
  8. data/doc/security.rdoc +7 -0
  9. data/lib/sequel/adapters/jdbc/h2.rb +4 -4
  10. data/lib/sequel/adapters/jdbc/postgresql.rb +4 -0
  11. data/lib/sequel/adapters/oracle.rb +1 -0
  12. data/lib/sequel/adapters/shared/mssql.rb +94 -1
  13. data/lib/sequel/adapters/shared/mysql.rb +4 -4
  14. data/lib/sequel/adapters/shared/postgres.rb +4 -4
  15. data/lib/sequel/adapters/tinytds.rb +22 -4
  16. data/lib/sequel/adapters/utils/emulate_offset_with_row_number.rb +8 -2
  17. data/lib/sequel/database/dataset_defaults.rb +1 -1
  18. data/lib/sequel/model/associations.rb +1 -1
  19. data/lib/sequel/version.rb +1 -1
  20. data/spec/adapters/mssql_spec.rb +35 -0
  21. data/spec/adapters/oracle_spec.rb +4 -4
  22. data/spec/adapters/postgres_spec.rb +93 -93
  23. data/spec/adapters/spec_helper.rb +3 -1
  24. data/spec/bin_spec.rb +2 -0
  25. data/spec/core/database_spec.rb +22 -22
  26. data/spec/core/dataset_spec.rb +8 -8
  27. data/spec/core/expression_filters_spec.rb +1 -1
  28. data/spec/core/mock_adapter_spec.rb +2 -2
  29. data/spec/core/schema_generator_spec.rb +3 -3
  30. data/spec/core/spec_helper.rb +3 -1
  31. data/spec/core_extensions_spec.rb +3 -1
  32. data/spec/extensions/auto_validations_spec.rb +17 -17
  33. data/spec/extensions/caching_spec.rb +4 -4
  34. data/spec/extensions/error_splitter_spec.rb +1 -1
  35. data/spec/extensions/hook_class_methods_spec.rb +6 -6
  36. data/spec/extensions/migration_spec.rb +53 -53
  37. data/spec/extensions/pagination_spec.rb +9 -9
  38. data/spec/extensions/pg_array_associations_spec.rb +2 -2
  39. data/spec/extensions/pg_array_spec.rb +2 -2
  40. data/spec/extensions/pg_hstore_spec.rb +15 -15
  41. data/spec/extensions/pg_interval_spec.rb +3 -3
  42. data/spec/extensions/pg_range_spec.rb +20 -20
  43. data/spec/extensions/pg_row_spec.rb +1 -1
  44. data/spec/extensions/schema_caching_spec.rb +3 -3
  45. data/spec/extensions/spec_helper.rb +3 -1
  46. data/spec/extensions/static_cache_spec.rb +16 -16
  47. data/spec/extensions/tree_spec.rb +8 -8
  48. data/spec/extensions/validation_class_methods_spec.rb +10 -10
  49. data/spec/integration/database_test.rb +3 -3
  50. data/spec/integration/dataset_test.rb +6 -0
  51. data/spec/integration/migrator_test.rb +67 -67
  52. data/spec/integration/model_test.rb +2 -2
  53. data/spec/integration/schema_test.rb +1 -1
  54. data/spec/integration/spec_helper.rb +3 -1
  55. data/spec/integration/transaction_test.rb +2 -2
  56. data/spec/model/association_reflection_spec.rb +4 -4
  57. data/spec/model/associations_spec.rb +1 -1
  58. data/spec/model/class_dataset_methods_spec.rb +1 -1
  59. data/spec/model/eager_loading_spec.rb +7 -0
  60. data/spec/model/model_spec.rb +4 -4
  61. data/spec/model/record_spec.rb +20 -20
  62. data/spec/model/spec_helper.rb +2 -1
  63. data/spec/model/validations_spec.rb +1 -1
  64. data/spec/rspec_helper.rb +18 -0
  65. metadata +8 -3
@@ -31,7 +31,7 @@ module Sequel
31
31
  # Change the default identifier output method to use for all databases,
32
32
  def self.identifier_output_method=(v)
33
33
  @identifier_output_method = v.nil? ? false : v
34
- end
34
+ end
35
35
 
36
36
  # The class to use for creating datasets. Should respond to
37
37
  # new with the Database argument as the first argument, and
@@ -2229,7 +2229,7 @@ module Sequel
2229
2229
  # and/or load other associations if #eager was used.
2230
2230
  def post_load(all_records)
2231
2231
  eager_graph_build_associations(all_records) if @opts[:eager_graph]
2232
- eager_load(all_records) if @opts[:eager]
2232
+ eager_load(all_records) if @opts[:eager] && (row_proc || @opts[:eager_graph])
2233
2233
  super
2234
2234
  end
2235
2235
  end
@@ -3,7 +3,7 @@ module Sequel
3
3
  MAJOR = 4
4
4
  # The minor version of Sequel. Bumped for every non-patch level
5
5
  # release, generally around once a month.
6
- MINOR = 5
6
+ MINOR = 6
7
7
  # The tiny version of Sequel. Usually 0, only bumped for bugfix
8
8
  # releases that fix regressions from previous versions.
9
9
  TINY = 0
@@ -643,3 +643,38 @@ describe "MSSQL optimistic locking plugin" do
643
643
  proc{o2.save}.should raise_error(Sequel::NoExistingObject)
644
644
  end
645
645
  end unless DB.adapter_scheme == :odbc
646
+
647
+ describe "MSSQL Stored Procedure support" do
648
+ before do
649
+ @db = DB
650
+ @now = DateTime.now.to_s
651
+ @db.execute('CREATE PROCEDURE dbo.SequelTest
652
+ (@Input varchar(25), @IntegerInput int, @Output varchar(25) OUTPUT, @IntegerOutput int OUTPUT) AS
653
+ BEGIN SET @Output = @Input SET @IntegerOutput = @IntegerInput RETURN @IntegerInput END')
654
+ end
655
+ after do
656
+ @db.execute('DROP PROCEDURE dbo.SequelTest')
657
+ end
658
+
659
+ it "should return a hash of output variables" do
660
+ r = @db.call_mssql_sproc(:SequelTest, {:args => [@now, 1, :output, :output]})
661
+ r.should be_a_kind_of(Hash)
662
+ r.values_at(:var2, :var3).should == [@now, '1']
663
+ end
664
+
665
+ it "should support typed output variables" do
666
+ @db.call_mssql_sproc(:SequelTest, {:args => [@now, 1, :output, [:output, 'int']]})[:var3].should == 1
667
+ end
668
+
669
+ it "should support named output variables" do
670
+ @db.call_mssql_sproc(:SequelTest, {:args => [@now, 1, [:output, nil, 'output'], :output]})[:output].should == @now
671
+ end
672
+
673
+ it "should return the number of Affected Rows" do
674
+ @db.call_mssql_sproc(:SequelTest, {:args => [@now, 1, :output, :output]})[:numrows].should == 1
675
+ end
676
+
677
+ it "should return the Result Code" do
678
+ @db.call_mssql_sproc(:SequelTest, {:args => [@now, 1, :output, :output]})[:result].should == 1
679
+ end
680
+ end unless DB.adapter_scheme == :odbc
@@ -60,15 +60,15 @@ describe "An Oracle database" do
60
60
 
61
61
  specify "should have working view_exists?" do
62
62
  begin
63
- DB.view_exists?(:cats).should be_false
63
+ DB.view_exists?(:cats).should == false
64
64
  DB.create_view(:cats, DB[:categories])
65
- DB.view_exists?(:cats).should be_true
65
+ DB.view_exists?(:cats).should == true
66
66
  om = DB.identifier_output_method
67
67
  im = DB.identifier_input_method
68
68
  DB.identifier_output_method = :reverse
69
69
  DB.identifier_input_method = :reverse
70
- DB.view_exists?(:STAC).should be_true
71
- DB.view_exists?(:cats).should be_false
70
+ DB.view_exists?(:STAC).should == true
71
+ DB.view_exists?(:cats).should == false
72
72
  ensure
73
73
  DB.identifier_output_method = om
74
74
  DB.identifier_input_method = im
@@ -32,21 +32,21 @@ describe "PostgreSQL", '#create_table' do
32
32
  @db.transaction do
33
33
  @db.create_table(:some_table, :temp => true, :on_commit => :drop){text :name}
34
34
  end
35
- @db.table_exists?(:some_table).should be_false
35
+ @db.table_exists?(:some_table).should == false
36
36
 
37
37
  @db.transaction do
38
38
  @db.create_table(:some_table, :temp => true, :on_commit => :delete_rows){text :name}
39
39
  @db[:some_table].insert('a')
40
40
  end
41
- @db.table_exists?(:some_table).should be_true
42
- @db[:some_table].empty?.should be_true
41
+ @db.table_exists?(:some_table).should == true
42
+ @db[:some_table].empty?.should == true
43
43
 
44
44
  @db.drop_table(:some_table)
45
45
  @db.transaction do
46
46
  @db.create_table(:some_table, :temp => true, :on_commit => :preserve_rows){text :name}
47
47
  @db[:some_table].insert('a')
48
48
  end
49
- @db.table_exists?(:some_table).should be_true
49
+ @db.table_exists?(:some_table).should == true
50
50
  @db[:some_table].count.should == 1
51
51
  @db.drop_table(:some_table)
52
52
  end
@@ -56,7 +56,7 @@ describe "PostgreSQL", '#create_table' do
56
56
  @db.transaction do
57
57
  @db.create_table(:some_table, :temp => true, :on_commit => :drop, :as => 'select 1')
58
58
  end
59
- @db.table_exists?(:some_table).should be_false
59
+ @db.table_exists?(:some_table).should == false
60
60
  end
61
61
 
62
62
  specify ":on_commit should raise error if not used on a temporary table" do
@@ -1688,7 +1688,7 @@ if DB.adapter_scheme == :postgres && SEQUEL_POSTGRES_USES_PG && DB.server_versio
1688
1688
  ['', nil].should include(payload)
1689
1689
  called = true
1690
1690
  end.should == 'foo'
1691
- called.should be_true
1691
+ called.should == true
1692
1692
 
1693
1693
  # Check weird identifier names
1694
1694
  called = false
@@ -1698,7 +1698,7 @@ if DB.adapter_scheme == :postgres && SEQUEL_POSTGRES_USES_PG && DB.server_versio
1698
1698
  ['', nil].should include(payload)
1699
1699
  called = true
1700
1700
  end.should == 'FOO bar'
1701
- called.should be_true
1701
+ called.should == true
1702
1702
 
1703
1703
  # Check identifier symbols
1704
1704
  called = false
@@ -1708,7 +1708,7 @@ if DB.adapter_scheme == :postgres && SEQUEL_POSTGRES_USES_PG && DB.server_versio
1708
1708
  ['', nil].should include(payload)
1709
1709
  called = true
1710
1710
  end.should == 'foo'
1711
- called.should be_true
1711
+ called.should == true
1712
1712
 
1713
1713
  called = false
1714
1714
  @db.listen('foo', :after_listen=>proc{@db.notify('foo', :payload=>'bar')}) do |ev, pid, payload|
@@ -1717,7 +1717,7 @@ if DB.adapter_scheme == :postgres && SEQUEL_POSTGRES_USES_PG && DB.server_versio
1717
1717
  payload.should == 'bar'
1718
1718
  called = true
1719
1719
  end.should == 'foo'
1720
- called.should be_true
1720
+ called.should == true
1721
1721
 
1722
1722
  @db.listen('foo', :after_listen=>proc{@db.notify('foo')}).should == 'foo'
1723
1723
 
@@ -1738,8 +1738,8 @@ if DB.adapter_scheme == :postgres && SEQUEL_POSTGRES_USES_PG && DB.server_versio
1738
1738
  break
1739
1739
  end
1740
1740
  end.should be_nil
1741
- called.should be_true
1742
- called2.should be_true
1741
+ called.should == true
1742
+ called2.should == true
1743
1743
  i.should == 1
1744
1744
  end
1745
1745
 
@@ -1747,7 +1747,7 @@ if DB.adapter_scheme == :postgres && SEQUEL_POSTGRES_USES_PG && DB.server_versio
1747
1747
  @db.listen('foo2', :timeout=>0.001).should == nil
1748
1748
  called = false
1749
1749
  @db.listen('foo2', :timeout=>0.001){|ev, pid, payload| called = true}.should == nil
1750
- called.should be_false
1750
+ called.should == false
1751
1751
  i = 0
1752
1752
  @db.listen('foo2', :timeout=>0.001, :loop=>proc{i+=1; throw :stop if i > 3}){|ev, pid, payload| called = true}.should == nil
1753
1753
  i.should == 4
@@ -1787,7 +1787,7 @@ describe 'PostgreSQL special float handling' do
1787
1787
  specify 'inserts NaN' do
1788
1788
  nan = 0.0/0.0
1789
1789
  @ds.insert(:value=>nan)
1790
- @ds.all[0][:value].nan?.should be_true
1790
+ @ds.all[0][:value].nan?.should == true
1791
1791
  end
1792
1792
 
1793
1793
  specify 'inserts +Infinity' do
@@ -2093,26 +2093,26 @@ describe 'PostgreSQL array handling' do
2093
2093
  @db.create_table!(:items){column :i, 'integer[]'; column :i2, 'integer[]'; column :i3, 'integer[]'; column :i4, 'integer[]'; column :i5, 'integer[]'}
2094
2094
  @ds.insert(Sequel.pg_array([1, 2, 3]), Sequel.pg_array([2, 1]), Sequel.pg_array([4, 4]), Sequel.pg_array([[5, 5], [4, 3]]), Sequel.pg_array([1, nil, 5]))
2095
2095
 
2096
- @ds.get(Sequel.pg_array(:i) > :i3).should be_false
2097
- @ds.get(Sequel.pg_array(:i3) > :i).should be_true
2096
+ @ds.get(Sequel.pg_array(:i) > :i3).should == false
2097
+ @ds.get(Sequel.pg_array(:i3) > :i).should == true
2098
2098
 
2099
- @ds.get(Sequel.pg_array(:i) >= :i3).should be_false
2100
- @ds.get(Sequel.pg_array(:i) >= :i).should be_true
2099
+ @ds.get(Sequel.pg_array(:i) >= :i3).should == false
2100
+ @ds.get(Sequel.pg_array(:i) >= :i).should == true
2101
2101
 
2102
- @ds.get(Sequel.pg_array(:i3) < :i).should be_false
2103
- @ds.get(Sequel.pg_array(:i) < :i3).should be_true
2102
+ @ds.get(Sequel.pg_array(:i3) < :i).should == false
2103
+ @ds.get(Sequel.pg_array(:i) < :i3).should == true
2104
2104
 
2105
- @ds.get(Sequel.pg_array(:i3) <= :i).should be_false
2106
- @ds.get(Sequel.pg_array(:i) <= :i).should be_true
2105
+ @ds.get(Sequel.pg_array(:i3) <= :i).should == false
2106
+ @ds.get(Sequel.pg_array(:i) <= :i).should == true
2107
2107
 
2108
- @ds.get(Sequel.expr(5=>Sequel.pg_array(:i).any)).should be_false
2109
- @ds.get(Sequel.expr(1=>Sequel.pg_array(:i).any)).should be_true
2108
+ @ds.get(Sequel.expr(5=>Sequel.pg_array(:i).any)).should == false
2109
+ @ds.get(Sequel.expr(1=>Sequel.pg_array(:i).any)).should == true
2110
2110
 
2111
- @ds.get(Sequel.expr(1=>Sequel.pg_array(:i3).all)).should be_false
2112
- @ds.get(Sequel.expr(4=>Sequel.pg_array(:i3).all)).should be_true
2111
+ @ds.get(Sequel.expr(1=>Sequel.pg_array(:i3).all)).should == false
2112
+ @ds.get(Sequel.expr(4=>Sequel.pg_array(:i3).all)).should == true
2113
2113
 
2114
- @ds.get(Sequel.expr(1=>Sequel.pg_array(:i)[1..1].any)).should be_true
2115
- @ds.get(Sequel.expr(2=>Sequel.pg_array(:i)[1..1].any)).should be_false
2114
+ @ds.get(Sequel.expr(1=>Sequel.pg_array(:i)[1..1].any)).should == true
2115
+ @ds.get(Sequel.expr(2=>Sequel.pg_array(:i)[1..1].any)).should == false
2116
2116
 
2117
2117
  @ds.get(Sequel.pg_array(:i2)[1]).should == 2
2118
2118
  @ds.get(Sequel.pg_array(:i2)[1]).should == 2
@@ -2121,14 +2121,14 @@ describe 'PostgreSQL array handling' do
2121
2121
  @ds.get(Sequel.pg_array(:i4)[2][1]).should == 4
2122
2122
  @ds.get(Sequel.pg_array(:i4)[2][2]).should == 3
2123
2123
 
2124
- @ds.get(Sequel.pg_array(:i).contains(:i2)).should be_true
2125
- @ds.get(Sequel.pg_array(:i).contains(:i3)).should be_false
2124
+ @ds.get(Sequel.pg_array(:i).contains(:i2)).should == true
2125
+ @ds.get(Sequel.pg_array(:i).contains(:i3)).should == false
2126
2126
 
2127
- @ds.get(Sequel.pg_array(:i2).contained_by(:i)).should be_true
2128
- @ds.get(Sequel.pg_array(:i).contained_by(:i2)).should be_false
2127
+ @ds.get(Sequel.pg_array(:i2).contained_by(:i)).should == true
2128
+ @ds.get(Sequel.pg_array(:i).contained_by(:i2)).should == false
2129
2129
 
2130
- @ds.get(Sequel.pg_array(:i).overlaps(:i2)).should be_true
2131
- @ds.get(Sequel.pg_array(:i2).overlaps(:i3)).should be_false
2130
+ @ds.get(Sequel.pg_array(:i).overlaps(:i2)).should == true
2131
+ @ds.get(Sequel.pg_array(:i2).overlaps(:i3)).should == false
2132
2132
 
2133
2133
  @ds.get(Sequel.pg_array(:i).dims).should == '[1:3]'
2134
2134
  @ds.get(Sequel.pg_array(:i).length).should == 3
@@ -2144,8 +2144,8 @@ describe 'PostgreSQL array handling' do
2144
2144
  end
2145
2145
  if @db.server_version >= 90300
2146
2146
  @ds.get(Sequel.pg_array(:i5).remove(1).length).should == 2
2147
- @ds.get(Sequel.pg_array(:i5).replace(1, 4).contains([1])).should be_false
2148
- @ds.get(Sequel.pg_array(:i5).replace(1, 4).contains([4])).should be_true
2147
+ @ds.get(Sequel.pg_array(:i5).replace(1, 4).contains([1])).should == false
2148
+ @ds.get(Sequel.pg_array(:i5).replace(1, 4).contains([4])).should == true
2149
2149
  end
2150
2150
 
2151
2151
  if @native
@@ -2616,7 +2616,7 @@ describe 'PostgreSQL inet/cidr types' do
2616
2616
  @ds.count.should == 1
2617
2617
  if @native
2618
2618
  rs = @ds.all
2619
- rs.first.values.all?{|c| c.is_a?(Sequel::Postgres::PGArray)}.should be_true
2619
+ rs.first.values.all?{|c| c.is_a?(Sequel::Postgres::PGArray)}.should == true
2620
2620
  rs.first[:i].first.should == @ipv4
2621
2621
  rs.first[:c].first.should == @ipv4nm
2622
2622
  rs.first[:m].first.should == '12:34:56:78:90:ab'
@@ -2775,70 +2775,70 @@ describe 'PostgreSQL range types' do
2775
2775
  specify 'operations/functions with pg_range_ops' do
2776
2776
  Sequel.extension :pg_range_ops
2777
2777
 
2778
- @db.get(Sequel.pg_range(1..5, :int4range).op.contains(2..4)).should be_true
2779
- @db.get(Sequel.pg_range(1..5, :int4range).op.contains(3..6)).should be_false
2780
- @db.get(Sequel.pg_range(1..5, :int4range).op.contains(0..6)).should be_false
2778
+ @db.get(Sequel.pg_range(1..5, :int4range).op.contains(2..4)).should == true
2779
+ @db.get(Sequel.pg_range(1..5, :int4range).op.contains(3..6)).should == false
2780
+ @db.get(Sequel.pg_range(1..5, :int4range).op.contains(0..6)).should == false
2781
2781
 
2782
- @db.get(Sequel.pg_range(1..5, :int4range).op.contained_by(0..6)).should be_true
2783
- @db.get(Sequel.pg_range(1..5, :int4range).op.contained_by(3..6)).should be_false
2784
- @db.get(Sequel.pg_range(1..5, :int4range).op.contained_by(2..4)).should be_false
2782
+ @db.get(Sequel.pg_range(1..5, :int4range).op.contained_by(0..6)).should == true
2783
+ @db.get(Sequel.pg_range(1..5, :int4range).op.contained_by(3..6)).should == false
2784
+ @db.get(Sequel.pg_range(1..5, :int4range).op.contained_by(2..4)).should == false
2785
2785
 
2786
- @db.get(Sequel.pg_range(1..5, :int4range).op.overlaps(5..6)).should be_true
2787
- @db.get(Sequel.pg_range(1...5, :int4range).op.overlaps(5..6)).should be_false
2786
+ @db.get(Sequel.pg_range(1..5, :int4range).op.overlaps(5..6)).should == true
2787
+ @db.get(Sequel.pg_range(1...5, :int4range).op.overlaps(5..6)).should == false
2788
2788
 
2789
- @db.get(Sequel.pg_range(1..5, :int4range).op.left_of(6..10)).should be_true
2790
- @db.get(Sequel.pg_range(1..5, :int4range).op.left_of(5..10)).should be_false
2791
- @db.get(Sequel.pg_range(1..5, :int4range).op.left_of(-1..0)).should be_false
2792
- @db.get(Sequel.pg_range(1..5, :int4range).op.left_of(-1..3)).should be_false
2793
-
2794
- @db.get(Sequel.pg_range(1..5, :int4range).op.right_of(6..10)).should be_false
2795
- @db.get(Sequel.pg_range(1..5, :int4range).op.right_of(5..10)).should be_false
2796
- @db.get(Sequel.pg_range(1..5, :int4range).op.right_of(-1..0)).should be_true
2797
- @db.get(Sequel.pg_range(1..5, :int4range).op.right_of(-1..3)).should be_false
2798
-
2799
- @db.get(Sequel.pg_range(1..5, :int4range).op.ends_before(6..10)).should be_true
2800
- @db.get(Sequel.pg_range(1..5, :int4range).op.ends_before(5..10)).should be_true
2801
- @db.get(Sequel.pg_range(1..5, :int4range).op.ends_before(-1..0)).should be_false
2802
- @db.get(Sequel.pg_range(1..5, :int4range).op.ends_before(-1..3)).should be_false
2803
- @db.get(Sequel.pg_range(1..5, :int4range).op.ends_before(-1..7)).should be_true
2804
-
2805
- @db.get(Sequel.pg_range(1..5, :int4range).op.starts_after(6..10)).should be_false
2806
- @db.get(Sequel.pg_range(1..5, :int4range).op.starts_after(5..10)).should be_false
2807
- @db.get(Sequel.pg_range(1..5, :int4range).op.starts_after(3..10)).should be_false
2808
- @db.get(Sequel.pg_range(1..5, :int4range).op.starts_after(-1..10)).should be_true
2809
- @db.get(Sequel.pg_range(1..5, :int4range).op.starts_after(-1..0)).should be_true
2810
- @db.get(Sequel.pg_range(1..5, :int4range).op.starts_after(-1..3)).should be_true
2811
- @db.get(Sequel.pg_range(1..5, :int4range).op.starts_after(-5..-1)).should be_true
2812
-
2813
- @db.get(Sequel.pg_range(1..5, :int4range).op.adjacent_to(6..10)).should be_true
2814
- @db.get(Sequel.pg_range(1...5, :int4range).op.adjacent_to(6..10)).should be_false
2815
-
2816
- @db.get((Sequel.pg_range(1..5, :int4range).op + (6..10)).adjacent_to(6..10)).should be_false
2817
- @db.get((Sequel.pg_range(1..5, :int4range).op + (6..10)).adjacent_to(11..20)).should be_true
2818
-
2819
- @db.get((Sequel.pg_range(1..5, :int4range).op * (2..6)).adjacent_to(6..10)).should be_true
2820
- @db.get((Sequel.pg_range(1..4, :int4range).op * (2..6)).adjacent_to(6..10)).should be_false
2821
-
2822
- @db.get((Sequel.pg_range(1..5, :int4range).op - (2..6)).adjacent_to(2..10)).should be_true
2823
- @db.get((Sequel.pg_range(0..4, :int4range).op - (3..6)).adjacent_to(4..10)).should be_false
2789
+ @db.get(Sequel.pg_range(1..5, :int4range).op.left_of(6..10)).should == true
2790
+ @db.get(Sequel.pg_range(1..5, :int4range).op.left_of(5..10)).should == false
2791
+ @db.get(Sequel.pg_range(1..5, :int4range).op.left_of(-1..0)).should == false
2792
+ @db.get(Sequel.pg_range(1..5, :int4range).op.left_of(-1..3)).should == false
2793
+
2794
+ @db.get(Sequel.pg_range(1..5, :int4range).op.right_of(6..10)).should == false
2795
+ @db.get(Sequel.pg_range(1..5, :int4range).op.right_of(5..10)).should == false
2796
+ @db.get(Sequel.pg_range(1..5, :int4range).op.right_of(-1..0)).should == true
2797
+ @db.get(Sequel.pg_range(1..5, :int4range).op.right_of(-1..3)).should == false
2798
+
2799
+ @db.get(Sequel.pg_range(1..5, :int4range).op.ends_before(6..10)).should == true
2800
+ @db.get(Sequel.pg_range(1..5, :int4range).op.ends_before(5..10)).should == true
2801
+ @db.get(Sequel.pg_range(1..5, :int4range).op.ends_before(-1..0)).should == false
2802
+ @db.get(Sequel.pg_range(1..5, :int4range).op.ends_before(-1..3)).should == false
2803
+ @db.get(Sequel.pg_range(1..5, :int4range).op.ends_before(-1..7)).should == true
2804
+
2805
+ @db.get(Sequel.pg_range(1..5, :int4range).op.starts_after(6..10)).should == false
2806
+ @db.get(Sequel.pg_range(1..5, :int4range).op.starts_after(5..10)).should == false
2807
+ @db.get(Sequel.pg_range(1..5, :int4range).op.starts_after(3..10)).should == false
2808
+ @db.get(Sequel.pg_range(1..5, :int4range).op.starts_after(-1..10)).should == true
2809
+ @db.get(Sequel.pg_range(1..5, :int4range).op.starts_after(-1..0)).should == true
2810
+ @db.get(Sequel.pg_range(1..5, :int4range).op.starts_after(-1..3)).should == true
2811
+ @db.get(Sequel.pg_range(1..5, :int4range).op.starts_after(-5..-1)).should == true
2812
+
2813
+ @db.get(Sequel.pg_range(1..5, :int4range).op.adjacent_to(6..10)).should == true
2814
+ @db.get(Sequel.pg_range(1...5, :int4range).op.adjacent_to(6..10)).should == false
2815
+
2816
+ @db.get((Sequel.pg_range(1..5, :int4range).op + (6..10)).adjacent_to(6..10)).should == false
2817
+ @db.get((Sequel.pg_range(1..5, :int4range).op + (6..10)).adjacent_to(11..20)).should == true
2818
+
2819
+ @db.get((Sequel.pg_range(1..5, :int4range).op * (2..6)).adjacent_to(6..10)).should == true
2820
+ @db.get((Sequel.pg_range(1..4, :int4range).op * (2..6)).adjacent_to(6..10)).should == false
2821
+
2822
+ @db.get((Sequel.pg_range(1..5, :int4range).op - (2..6)).adjacent_to(2..10)).should == true
2823
+ @db.get((Sequel.pg_range(0..4, :int4range).op - (3..6)).adjacent_to(4..10)).should == false
2824
2824
 
2825
2825
  @db.get(Sequel.pg_range(0..4, :int4range).op.lower).should == 0
2826
2826
  @db.get(Sequel.pg_range(0..4, :int4range).op.upper).should == 5
2827
2827
 
2828
- @db.get(Sequel.pg_range(0..4, :int4range).op.isempty).should be_false
2829
- @db.get(Sequel::Postgres::PGRange.empty(:int4range).op.isempty).should be_true
2828
+ @db.get(Sequel.pg_range(0..4, :int4range).op.isempty).should == false
2829
+ @db.get(Sequel::Postgres::PGRange.empty(:int4range).op.isempty).should == true
2830
2830
 
2831
- @db.get(Sequel.pg_range(1..5, :numrange).op.lower_inc).should be_true
2832
- @db.get(Sequel::Postgres::PGRange.new(1, 5, :exclude_begin=>true, :db_type=>:numrange).op.lower_inc).should be_false
2831
+ @db.get(Sequel.pg_range(1..5, :numrange).op.lower_inc).should == true
2832
+ @db.get(Sequel::Postgres::PGRange.new(1, 5, :exclude_begin=>true, :db_type=>:numrange).op.lower_inc).should == false
2833
2833
 
2834
- @db.get(Sequel.pg_range(1..5, :numrange).op.upper_inc).should be_true
2835
- @db.get(Sequel.pg_range(1...5, :numrange).op.upper_inc).should be_false
2834
+ @db.get(Sequel.pg_range(1..5, :numrange).op.upper_inc).should == true
2835
+ @db.get(Sequel.pg_range(1...5, :numrange).op.upper_inc).should == false
2836
2836
 
2837
- @db.get(Sequel::Postgres::PGRange.new(1, 5, :db_type=>:int4range).op.lower_inf).should be_false
2838
- @db.get(Sequel::Postgres::PGRange.new(nil, 5, :db_type=>:int4range).op.lower_inf).should be_true
2837
+ @db.get(Sequel::Postgres::PGRange.new(1, 5, :db_type=>:int4range).op.lower_inf).should == false
2838
+ @db.get(Sequel::Postgres::PGRange.new(nil, 5, :db_type=>:int4range).op.lower_inf).should == true
2839
2839
 
2840
- @db.get(Sequel::Postgres::PGRange.new(1, 5, :db_type=>:int4range).op.upper_inf).should be_false
2841
- @db.get(Sequel::Postgres::PGRange.new(1, nil, :db_type=>:int4range).op.upper_inf).should be_true
2840
+ @db.get(Sequel::Postgres::PGRange.new(1, 5, :db_type=>:int4range).op.upper_inf).should == false
2841
+ @db.get(Sequel::Postgres::PGRange.new(1, nil, :db_type=>:int4range).op.upper_inf).should == true
2842
2842
  end
2843
2843
  end if DB.server_version >= 90200
2844
2844
 
@@ -2882,7 +2882,7 @@ describe 'PostgreSQL interval types' do
2882
2882
  if @native
2883
2883
  @ds.get(Sequel.cast(:i, String)).should == outstr
2884
2884
  rs = @ds.all
2885
- rs.first[:i].is_a?(ActiveSupport::Duration).should be_true
2885
+ rs.first[:i].is_a?(ActiveSupport::Duration).should == true
2886
2886
  rs.first[:i].should == ActiveSupport::Duration.new(value, parts)
2887
2887
  rs.first[:i].parts.sort_by{|k,v| k.to_s}.reject{|k,v| v == 0}.should == parts.sort_by{|k,v| k.to_s}
2888
2888
  @ds.delete
@@ -2899,8 +2899,8 @@ describe 'PostgreSQL interval types' do
2899
2899
  @ds.count.should == 1
2900
2900
  if @native
2901
2901
  rs = @ds.all
2902
- rs.first[:i].is_a?(Sequel::Postgres::PGArray).should be_true
2903
- rs.first[:i].first.is_a?(ActiveSupport::Duration).should be_true
2902
+ rs.first[:i].is_a?(Sequel::Postgres::PGArray).should == true
2903
+ rs.first[:i].first.is_a?(ActiveSupport::Duration).should == true
2904
2904
  rs.first[:i].first.should == ActiveSupport::Duration.new(31557600 + 2*86400*30 + 3*86400*7 + 4*86400 + 5*3600 + 6*60 + 7, [[:years, 1], [:months, 2], [:days, 25], [:seconds, 18367]])
2905
2905
  rs.first[:i].first.parts.sort_by{|k,v| k.to_s}.should == [[:years, 1], [:months, 2], [:days, 25], [:seconds, 18367]].sort_by{|k,v| k.to_s}
2906
2906
  @ds.delete
@@ -2936,7 +2936,7 @@ describe 'PostgreSQL interval types' do
2936
2936
  c = Class.new(Sequel::Model(@db[:items]))
2937
2937
  c.plugin :pg_typecast_on_load, :i, :c unless @native
2938
2938
  v = c.create(:i=>'1 year 2 mons 25 days 05:06:07').i
2939
- v.is_a?(ActiveSupport::Duration).should be_true
2939
+ v.is_a?(ActiveSupport::Duration).should == true
2940
2940
  v.should == ActiveSupport::Duration.new(31557600 + 2*86400*30 + 3*86400*7 + 4*86400 + 5*3600 + 6*60 + 7, [[:years, 1], [:months, 2], [:days, 25], [:seconds, 18367]])
2941
2941
  v.parts.sort_by{|k,_| k.to_s}.should == [[:years, 1], [:months, 2], [:days, 25], [:seconds, 18367]].sort_by{|k,_| k.to_s}
2942
2942
  end
@@ -24,7 +24,9 @@ class Sequel::Database
24
24
  end
25
25
  end
26
26
 
27
- (defined?(RSpec) ? RSpec::Core::ExampleGroup : Spec::Example::ExampleGroup).class_eval do
27
+ require File.join(File.dirname(File.expand_path(__FILE__)), "../rspec_helper.rb")
28
+
29
+ RSPEC_EXAMPLE_GROUP.class_eval do
28
30
  def log
29
31
  begin
30
32
  DB.loggers << Logger.new(STDOUT)
data/spec/bin_spec.rb CHANGED
@@ -26,6 +26,8 @@ DB2 = Sequel.connect("#{CONN_PREFIX}#{BIN_SPEC_DB2}")
26
26
  File.delete(BIN_SPEC_DB) if File.file?(BIN_SPEC_DB)
27
27
  File.delete(BIN_SPEC_DB2) if File.file?(BIN_SPEC_DB2)
28
28
 
29
+ require File.join(File.dirname(File.expand_path(__FILE__)), "rspec_helper.rb")
30
+
29
31
  describe "bin/sequel" do
30
32
  def bin(opts={})
31
33
  cmd = "#{opts[:pre]}\"#{RUBY}\" -I lib bin/sequel #{opts[:args]} #{"#{CONN_PREFIX}#{BIN_SPEC_DB}" unless opts[:no_conn]} #{opts[:post]}> #{OUTPUT}#{" 2>&1" if opts[:stderr]}"
@@ -483,18 +483,18 @@ describe "Database#disconnect_connection" do
483
483
  o = Object.new
484
484
  def o.close() @closed=true end
485
485
  Sequel::Database.new.disconnect_connection(o)
486
- o.instance_variable_get(:@closed).should be_true
486
+ o.instance_variable_get(:@closed).should == true
487
487
  end
488
488
  end
489
489
 
490
490
  describe "Database#valid_connection?" do
491
491
  specify "should issue a query to validate the connection" do
492
492
  db = Sequel.mock
493
- db.synchronize{|c| db.valid_connection?(c)}.should be_true
493
+ db.synchronize{|c| db.valid_connection?(c)}.should == true
494
494
  db.synchronize do |c|
495
495
  def c.execute(*) raise Sequel::DatabaseError, "error" end
496
496
  db.valid_connection?(c)
497
- end.should be_false
497
+ end.should == false
498
498
  end
499
499
  end
500
500
 
@@ -581,7 +581,7 @@ describe "Database#test_connection" do
581
581
  end
582
582
 
583
583
  specify "should return true if successful" do
584
- @db.test_connection.should be_true
584
+ @db.test_connection.should == true
585
585
  end
586
586
 
587
587
  specify "should raise an error if the attempting to connect raises an error" do
@@ -593,10 +593,10 @@ end
593
593
  describe "Database#table_exists?" do
594
594
  specify "should test existence by selecting a row from the table's dataset" do
595
595
  db = Sequel.mock(:fetch=>[Sequel::Error, [], [{:a=>1}]])
596
- db.table_exists?(:a).should be_false
596
+ db.table_exists?(:a).should == false
597
597
  db.sqls.should == ["SELECT NULL AS nil FROM a LIMIT 1"]
598
- db.table_exists?(:b).should be_true
599
- db.table_exists?(:c).should be_true
598
+ db.table_exists?(:b).should == true
599
+ db.table_exists?(:c).should == true
600
600
  end
601
601
  end
602
602
 
@@ -746,7 +746,7 @@ shared_examples_for "Database#transaction" do
746
746
  specify "should have in_transaction? return true if inside a transaction" do
747
747
  c = nil
748
748
  @db.transaction{c = @db.in_transaction?}
749
- c.should be_true
749
+ c.should == true
750
750
  end
751
751
 
752
752
  specify "should have in_transaction? handle sharding correctly" do
@@ -757,7 +757,7 @@ shared_examples_for "Database#transaction" do
757
757
  end
758
758
 
759
759
  specify "should have in_transaction? return false if not in a transaction" do
760
- @db.in_transaction?.should be_false
760
+ @db.in_transaction?.should == false
761
761
  end
762
762
 
763
763
  specify "should return nil if Sequel::Rollback is called in the transaction" do
@@ -1741,16 +1741,16 @@ describe "Database#typecast_value" do
1741
1741
  end
1742
1742
 
1743
1743
  specify "should typecast boolean values to true, false, or nil" do
1744
- @db.typecast_value(:boolean, false).should be_false
1745
- @db.typecast_value(:boolean, 0).should be_false
1746
- @db.typecast_value(:boolean, "0").should be_false
1747
- @db.typecast_value(:boolean, 'f').should be_false
1748
- @db.typecast_value(:boolean, 'false').should be_false
1749
- @db.typecast_value(:boolean, true).should be_true
1750
- @db.typecast_value(:boolean, 1).should be_true
1751
- @db.typecast_value(:boolean, '1').should be_true
1752
- @db.typecast_value(:boolean, 't').should be_true
1753
- @db.typecast_value(:boolean, 'true').should be_true
1744
+ @db.typecast_value(:boolean, false).should == false
1745
+ @db.typecast_value(:boolean, 0).should == false
1746
+ @db.typecast_value(:boolean, "0").should == false
1747
+ @db.typecast_value(:boolean, 'f').should == false
1748
+ @db.typecast_value(:boolean, 'false').should == false
1749
+ @db.typecast_value(:boolean, true).should == true
1750
+ @db.typecast_value(:boolean, 1).should == true
1751
+ @db.typecast_value(:boolean, '1').should == true
1752
+ @db.typecast_value(:boolean, 't').should == true
1753
+ @db.typecast_value(:boolean, 'true').should == true
1754
1754
  @db.typecast_value(:boolean, '').should be_nil
1755
1755
  end
1756
1756
 
@@ -2326,13 +2326,13 @@ describe "Database extensions" do
2326
2326
  specify "should be able to register an extension with a block and have Database#extension call the block" do
2327
2327
  @db.quote_identifiers = false
2328
2328
  Sequel::Database.register_extension(:foo){|db| db.quote_identifiers = true}
2329
- @db.extension(:foo).quote_identifiers?.should be_true
2329
+ @db.extension(:foo).quote_identifiers?.should == true
2330
2330
  end
2331
2331
 
2332
2332
  specify "should be able to register an extension with a callable and Database#extension call the callable" do
2333
2333
  @db.quote_identifiers = false
2334
2334
  Sequel::Database.register_extension(:foo, proc{|db| db.quote_identifiers = true})
2335
- @db.extension(:foo).quote_identifiers?.should be_true
2335
+ @db.extension(:foo).quote_identifiers?.should == true
2336
2336
  end
2337
2337
 
2338
2338
  specify "should be able to load multiple extensions in the same call" do
@@ -2341,7 +2341,7 @@ describe "Database extensions" do
2341
2341
  Sequel::Database.register_extension(:foo, proc{|db| db.quote_identifiers = true})
2342
2342
  Sequel::Database.register_extension(:bar, proc{|db| db.identifier_input_method = nil})
2343
2343
  @db.extension(:foo, :bar)
2344
- @db.quote_identifiers?.should be_true
2344
+ @db.quote_identifiers?.should == true
2345
2345
  @db.identifier_input_method.should be_nil
2346
2346
  end
2347
2347