sequel_oracle_extensions 0.5.2 → 0.5.3

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.
@@ -1,157 +1,157 @@
1
- require File.expand_path('../../../spec_helper', __FILE__)
2
- require 'sequel/oracle_extensions/merge'
3
- require 'sequel/oracle_extensions/hints'
4
-
5
- describe "Sequel::OracleExtensions::Hints" do
6
-
7
- CLAUSES = %w(SELECT INSERT UPDATE DELETE MERGE)
8
- TYPES = CLAUSES.map{|clause| clause.downcase.intern}
9
-
10
- before(:all) do
11
- @db = Sequel.connect(DATABASE_URL)
12
- end
13
-
14
- def apply_hints!(*args)
15
- @old_hints = @ds.opts[:hints]
16
- @new_ds = @ds.__send__(@method, *args)
17
-
1
+ require File.expand_path('../../../spec_helper', __FILE__)
2
+ require 'sequel/oracle_extensions/merge'
3
+ require 'sequel/oracle_extensions/hints'
4
+
5
+ describe "Sequel::OracleExtensions::Hints" do
6
+
7
+ CLAUSES = %w(SELECT INSERT UPDATE DELETE MERGE)
8
+ TYPES = CLAUSES.map{|clause| clause.downcase.intern}
9
+
10
+ before(:all) do
11
+ @db = Sequel.connect(DATABASE_URL)
12
+ end
13
+
14
+ def apply_hints!(*args)
15
+ @old_hints = @ds.opts[:hints]
16
+ @new_ds = @ds.__send__(@method, *args)
17
+
18
18
  @new_ds.should be_kind_of(Sequel::Dataset)
19
- @new_ds.opts[:hints].should_not be_empty
20
- end
21
-
22
- it "hooks into dataset clause methods" do
23
- [Sequel::Dataset, Sequel::Oracle::DatasetMethods].each do |klass|
24
- CLAUSES.each do |clause|
25
- next unless klass.const_defined?(k = :"#{clause}_CLAUSE_METHODS")
26
- klass.const_get(k).first.should == "#{clause.downcase}_hint_sql".intern
27
- end
28
- end
29
- end
30
-
31
- share_examples_for "dataset modifying" do
32
- after(:each) do
19
+ @new_ds.opts[:hints].should_not be_empty
20
+ end
21
+
22
+ it "hooks into dataset clause methods" do
23
+ [Sequel::Dataset, Sequel::Oracle::DatasetMethods].each do |klass|
24
+ CLAUSES.each do |clause|
25
+ next unless klass.const_defined?(k = :"#{clause}_CLAUSE_METHODS")
26
+ klass.const_get(k).first.should == "#{clause.downcase}_hint_sql".intern
27
+ end
28
+ end
29
+ end
30
+
31
+ share_examples_for "dataset modifying" do
32
+ after(:each) do
33
33
  @ds.should equal(@new_ds)
34
- @ds.opts[:hints].should_not == @old_hints
35
- end
36
- end
37
-
38
- share_examples_for "dataset cloning" do
39
- after(:each) do
34
+ @ds.opts[:hints].should_not == @old_hints
35
+ end
36
+ end
37
+
38
+ share_examples_for "dataset cloning" do
39
+ after(:each) do
40
40
  @ds.should_not equal(@new_ds)
41
- @ds.opts[:hints].should == @old_hints
42
- end
43
- end
44
-
45
- share_examples_for "standard callspec" do
46
- it "callspec (String) applies :select hints" do
47
- apply_hints! @hints.first
41
+ @ds.opts[:hints].should == @old_hints
42
+ end
43
+ end
44
+
45
+ share_examples_for "standard callspec" do
46
+ it "callspec (String) applies :select hints" do
47
+ apply_hints! @hints.first
48
48
  hints_to_check(@new_ds, :select, @hints[0,1]).should == @hints[0,1]
49
- end
50
- it "callspec (String, ...) applies :select hints" do
51
- apply_hints! *@hints
49
+ end
50
+ it "callspec (String, ...) applies :select hints" do
51
+ apply_hints! *@hints
52
52
  hints_to_check(@new_ds, :select, @hints).should == @hints
53
- end
54
- it "callspec (clause, String) applies clause hints" do
55
- TYPES.each do |type|
56
- apply_hints! type, @hints.first
53
+ end
54
+ it "callspec (clause, String) applies clause hints" do
55
+ TYPES.each do |type|
56
+ apply_hints! type, @hints.first
57
57
  hints_to_check(@new_ds, type, @hints[0,1]).should == @hints[0,1]
58
- end
59
- end
60
- it "callspec (clause, String, ...) applies clause hints" do
61
- TYPES.each do |type|
62
- apply_hints! type, *@hints
58
+ end
59
+ end
60
+ it "callspec (clause, String, ...) applies clause hints" do
61
+ TYPES.each do |type|
62
+ apply_hints! type, *@hints
63
63
  hints_to_check(@new_ds, type, @hints).should == @hints
64
- end
65
- end
66
- end
67
-
68
- share_examples_for "clause-specific callspec" do
69
- it "callspec (String) applies hints" do
70
- apply_hints! @hints.first
64
+ end
65
+ end
66
+ end
67
+
68
+ share_examples_for "clause-specific callspec" do
69
+ it "callspec (String) applies hints" do
70
+ apply_hints! @hints.first
71
71
  hints_to_check(@new_ds, @clause, @hints[0,1]).should == @hints[0,1]
72
- end
73
- it "callspec (String, ...) applies hints" do
74
- apply_hints! *@hints
72
+ end
73
+ it "callspec (String, ...) applies hints" do
74
+ apply_hints! *@hints
75
75
  hints_to_check(@new_ds, @clause, @hints).should == @hints
76
- end
77
- end
78
-
79
- describe "hints" do
80
- before(:each){ @ds, @hints = @db[:dual], ['foo', 'bar'] }
81
-
82
- COMMON_GROUP_BODY = Proc.new do |group,name|
83
- group.class_eval do
84
- describe "##{name}" do
85
- before(:each){ @method = :"#{name}" }
86
- it_should_behave_like "dataset cloning"
87
- it_should_behave_like "standard callspec"
88
- end
89
- describe "##{name}!" do
90
- before(:each){ @method = :"#{name}!" }
91
- it_should_behave_like "dataset modifying"
92
- it_should_behave_like "standard callspec"
93
- end
94
- TYPES.each do |clause|
95
- describe "##{clause}_#{name}" do
96
- before(:each){ @clause, @method = clause, :"#{clause}_#{name}"}
97
- it_should_behave_like "dataset cloning"
98
- it_should_behave_like "clause-specific callspec"
99
- end
100
- describe "##{clause}_#{name}!" do
101
- before(:each){ @clause, @method = clause, :"#{clause}_#{name}!"}
102
- it_should_behave_like "dataset modifying"
103
- it_should_behave_like "clause-specific callspec"
104
- end
105
- end
106
- end
107
- end
108
-
109
- describe "adding hints" do
110
- def hints_to_check(ds, type, input)
111
- ds.opts[:hints][type][(@orig_hints[type].length rescue 0), input.length]
112
- end
113
- COMMON_GROUP_BODY.call self, :hint
114
- end
115
-
116
- describe "overwriting hints" do
117
- def hints_to_check(ds, type, input)
118
- ds.opts[:hints][type]
119
- end
120
- COMMON_GROUP_BODY.call self, :hints
121
- end
122
-
123
- describe "#hint_sql" do
124
- it "generates clause-specific hint SQL" do
125
- # set them all up front so we can test whether they get mixed up.
126
- TYPES.each do |type| @ds.hints! type, "hint for #{type}" end
127
- TYPES.each do |type|
128
- sql = (clause = type.to_s.upcase).dup
129
- @ds.hint_sql(type, sql).should equal(sql)
130
- sql.should == "#{clause} /*+ hint for #{type} */"
131
- end
132
- end
133
-
134
- it "skips empty hints" do
135
- TYPES.each do |type|
136
- sql = (clause = type.to_s.upcase).dup
137
- @ds.hint_sql(type, sql).should be_nil
138
- sql.should == clause
139
- end
140
- end
141
-
142
- TYPES.each do |type|
143
- it "is called by ##{type}_hint_sql" do
144
- clause = type.to_s.upcase
145
- @ds.should_receive(:hint_sql).with(type, clause)
146
- @ds.__send__ :"#{type}_hint_sql", clause
147
- end
148
- it "is called by ##{type}_sql" do
149
- args, clause = [], type.to_s.upcase
150
- @ds.should_receive(:hint_sql).with(type, clause)
151
- args.push :dual, :dual, :x if type == :merge
152
- @ds.__send__ :"#{type}_sql", *args
153
- end
154
- end
155
- end
156
- end
157
- end
76
+ end
77
+ end
78
+
79
+ describe "hints" do
80
+ before(:each){ @ds, @hints = @db[:dual], ['foo', 'bar'] }
81
+
82
+ COMMON_GROUP_BODY = Proc.new do |group,name|
83
+ group.class_eval do
84
+ describe "##{name}" do
85
+ before(:each){ @method = :"#{name}" }
86
+ it_should_behave_like "dataset cloning"
87
+ it_should_behave_like "standard callspec"
88
+ end
89
+ describe "##{name}!" do
90
+ before(:each){ @method = :"#{name}!" }
91
+ it_should_behave_like "dataset modifying"
92
+ it_should_behave_like "standard callspec"
93
+ end
94
+ TYPES.each do |clause|
95
+ describe "##{clause}_#{name}" do
96
+ before(:each){ @clause, @method = clause, :"#{clause}_#{name}"}
97
+ it_should_behave_like "dataset cloning"
98
+ it_should_behave_like "clause-specific callspec"
99
+ end
100
+ describe "##{clause}_#{name}!" do
101
+ before(:each){ @clause, @method = clause, :"#{clause}_#{name}!"}
102
+ it_should_behave_like "dataset modifying"
103
+ it_should_behave_like "clause-specific callspec"
104
+ end
105
+ end
106
+ end
107
+ end
108
+
109
+ describe "adding hints" do
110
+ def hints_to_check(ds, type, input)
111
+ ds.opts[:hints][type][(@orig_hints[type].length rescue 0), input.length]
112
+ end
113
+ COMMON_GROUP_BODY.call self, :hint
114
+ end
115
+
116
+ describe "overwriting hints" do
117
+ def hints_to_check(ds, type, input)
118
+ ds.opts[:hints][type]
119
+ end
120
+ COMMON_GROUP_BODY.call self, :hints
121
+ end
122
+
123
+ describe "#hint_sql" do
124
+ it "generates clause-specific hint SQL" do
125
+ # set them all up front so we can test whether they get mixed up.
126
+ TYPES.each do |type| @ds.hints! type, "hint for #{type}" end
127
+ TYPES.each do |type|
128
+ sql = (clause = type.to_s.upcase).dup
129
+ @ds.hint_sql(type, sql).should equal(sql)
130
+ sql.should == "#{clause} /*+ hint for #{type} */"
131
+ end
132
+ end
133
+
134
+ it "skips empty hints" do
135
+ TYPES.each do |type|
136
+ sql = (clause = type.to_s.upcase).dup
137
+ @ds.hint_sql(type, sql).should be_nil
138
+ sql.should == clause
139
+ end
140
+ end
141
+
142
+ TYPES.each do |type|
143
+ it "is called by ##{type}_hint_sql" do
144
+ clause = type.to_s.upcase
145
+ @ds.should_receive(:hint_sql).with(type, clause)
146
+ @ds.__send__ :"#{type}_hint_sql", clause
147
+ end
148
+ it "is called by ##{type}_sql" do
149
+ args, clause = [], type.to_s.upcase
150
+ @ds.should_receive(:hint_sql).with(type, clause)
151
+ args.push :dual, :dual, :x if type == :merge
152
+ @ds.__send__ :"#{type}_sql", *args
153
+ end
154
+ end
155
+ end
156
+ end
157
+ end
@@ -1,8 +1,8 @@
1
- require File.expand_path('../../../spec_helper', __FILE__)
2
- require 'sequel/oracle_extensions/merge'
3
-
4
- describe "Sequel::OracleExtensions::Merge" do
5
- before(:all) do
6
- @db = Sequel.connect(DATABASE_URL)
7
- end
8
- end
1
+ require File.expand_path('../../../spec_helper', __FILE__)
2
+ require 'sequel/oracle_extensions/merge'
3
+
4
+ describe "Sequel::OracleExtensions::Merge" do
5
+ before(:all) do
6
+ @db = Sequel.connect(DATABASE_URL)
7
+ end
8
+ end
data/spec/spec_helper.rb CHANGED
@@ -1,25 +1,25 @@
1
- require 'rubygems'
2
- require 'pp'
3
- begin require 'win32console' and include Win32::Console::ANSI
4
- rescue LoadError
5
- end if RUBY_PLATFORM =~ /msvc|mingw|cygwin|win32/
6
-
7
- $LOAD_PATH.unshift(File.dirname(__FILE__))
8
- $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
9
- require 'sequel'
10
- require "rspec"
11
-
12
- DATABASE_URL = begin
13
- user = ENV['DATABASE_USER'] || 'hr'
14
- password = ENV['DATABASE_PASSWORD'] || 'hr'
15
- name = ENV['DATABASE_NAME'] || 'xe'
16
- host = ENV['DATABASE_HOST'] || 'localhost'
17
- port = ':'+ENV['DATABASE_PORT'] rescue nil
18
- "oracle://#{user}:#{password}@#{host}#{port}/#{name}"
1
+ require 'rubygems'
2
+ require 'pp'
3
+ begin require 'win32console' and include Win32::Console::ANSI
4
+ rescue LoadError
5
+ end if RUBY_PLATFORM =~ /msvc|mingw|cygwin|win32/
6
+
7
+ $LOAD_PATH.unshift(File.dirname(__FILE__))
8
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
9
+ require 'sequel'
10
+ require "rspec"
11
+
12
+ DATABASE_URL = begin
13
+ user = ENV['DATABASE_USER'] || 'hr'
14
+ password = ENV['DATABASE_PASSWORD'] || 'hr'
15
+ name = ENV['DATABASE_NAME'] || 'xe'
16
+ host = ENV['DATABASE_HOST'] || 'localhost'
17
+ port = ':'+ENV['DATABASE_PORT'] rescue nil
18
+ "oracle://#{user}:#{password}@#{host}#{port}/#{name}"
19
+ end
20
+
21
+ RSpec.configure do |config|
22
+ require 'rspec/expectations'
23
+ config.include RSpec::Matchers
24
+ config.mock_with :rspec
19
25
  end
20
-
21
- Rspec.configure do |config|
22
- require 'rspec/expectations'
23
- config.include Rspec::Matchers
24
- config.mock_with :rspec
25
- end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sequel_oracle_extensions
3
3
  version: !ruby/object:Gem::Version
4
- hash: 15
5
- prerelease:
4
+ hash: 13
5
+ prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 5
9
- - 2
10
- version: 0.5.2
9
+ - 3
10
+ version: 0.5.3
11
11
  platform: ruby
12
12
  authors:
13
13
  - Joe Khoobyar
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-08-16 00:00:00 -04:00
18
+ date: 2011-08-17 00:00:00 -04:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
@@ -105,9 +105,11 @@ required_rubygems_version: !ruby/object:Gem::Requirement
105
105
  requirements: []
106
106
 
107
107
  rubyforge_project:
108
- rubygems_version: 1.5.2
108
+ rubygems_version: 1.3.7
109
109
  signing_key:
110
110
  specification_version: 3
111
111
  summary: Oracle MERGE, optimizer hints, an schema extensions for Sequel
112
- test_files: []
113
-
112
+ test_files:
113
+ - spec/sequel/oracle_extensions/hints_spec.rb
114
+ - spec/sequel/oracle_extensions/merge_spec.rb
115
+ - spec/spec_helper.rb