data_objects 0.10.0 → 0.10.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/ChangeLog.markdown +20 -0
- data/LICENSE +1 -29
- data/README.markdown +16 -2
- data/Rakefile +41 -7
- data/lib/data_objects.rb +3 -2
- data/lib/data_objects/byte_array.rb +6 -0
- data/lib/data_objects/connection.rb +21 -9
- data/lib/data_objects/logger.rb +15 -15
- data/lib/data_objects/pooling.rb +250 -0
- data/lib/data_objects/reader.rb +16 -0
- data/lib/data_objects/spec/bacon.rb +9 -0
- data/lib/data_objects/spec/command_spec.rb +54 -47
- data/lib/data_objects/spec/connection_spec.rb +119 -30
- data/lib/data_objects/spec/encoding_spec.rb +64 -6
- data/lib/data_objects/spec/helpers/immediate_red_green_output.rb +59 -0
- data/lib/data_objects/spec/helpers/pending.rb +22 -0
- data/lib/data_objects/spec/helpers/ssl.rb +21 -0
- data/lib/data_objects/spec/reader_spec.rb +47 -24
- data/lib/data_objects/spec/result_spec.rb +10 -19
- data/lib/data_objects/spec/typecast/array_spec.rb +16 -20
- data/lib/data_objects/spec/typecast/bigdecimal_spec.rb +16 -24
- data/lib/data_objects/spec/typecast/boolean_spec.rb +16 -24
- data/lib/data_objects/spec/typecast/byte_array_spec.rb +11 -15
- data/lib/data_objects/spec/typecast/class_spec.rb +7 -11
- data/lib/data_objects/spec/typecast/date_spec.rb +17 -25
- data/lib/data_objects/spec/typecast/datetime_spec.rb +18 -26
- data/lib/data_objects/spec/typecast/float_spec.rb +19 -27
- data/lib/data_objects/spec/typecast/integer_spec.rb +10 -14
- data/lib/data_objects/spec/typecast/nil_spec.rb +18 -30
- data/lib/data_objects/spec/typecast/other_spec.rb +45 -0
- data/lib/data_objects/spec/typecast/range_spec.rb +16 -20
- data/lib/data_objects/spec/typecast/string_spec.rb +72 -13
- data/lib/data_objects/spec/typecast/time_spec.rb +11 -15
- data/lib/data_objects/utilities.rb +18 -0
- data/lib/data_objects/version.rb +1 -2
- data/spec/command_spec.rb +2 -2
- data/spec/connection_spec.rb +7 -5
- data/spec/do_mock2.rb +31 -0
- data/spec/pooling_spec.rb +162 -0
- data/spec/reader_spec.rb +7 -4
- data/spec/result_spec.rb +2 -2
- data/spec/spec_helper.rb +26 -5
- data/spec/transaction_spec.rb +11 -9
- data/tasks/metrics.rake +36 -0
- data/tasks/release.rake +10 -70
- data/tasks/spec.rake +16 -14
- data/tasks/yard.rake +9 -0
- data/tasks/yardstick.rake +19 -0
- metadata +53 -27
- data/HISTORY.markdown +0 -7
- data/Manifest.txt +0 -44
- data/spec/lib/pending_helpers.rb +0 -11
- data/spec/lib/rspec_immediate_feedback_formatter.rb +0 -53
- data/spec/lib/ssl_helpers.rb +0 -20
- data/tasks/gem.rake +0 -8
- data/tasks/install.rake +0 -13
@@ -1,16 +1,12 @@
|
|
1
|
-
|
1
|
+
shared 'supporting BigDecimal' do
|
2
2
|
|
3
|
-
|
3
|
+
setup_test_environment
|
4
4
|
|
5
|
-
before
|
6
|
-
setup_test_environment
|
7
|
-
end
|
8
|
-
|
9
|
-
before :each do
|
5
|
+
before do
|
10
6
|
@connection = DataObjects::Connection.new(CONFIG.uri)
|
11
7
|
end
|
12
8
|
|
13
|
-
after
|
9
|
+
after do
|
14
10
|
@connection.close
|
15
11
|
end
|
16
12
|
|
@@ -18,7 +14,7 @@ share_examples_for 'supporting BigDecimal' do
|
|
18
14
|
|
19
15
|
describe 'with manual typecasting' do
|
20
16
|
|
21
|
-
before
|
17
|
+
before do
|
22
18
|
@command = @connection.create_command("SELECT cost1 FROM widgets WHERE ad_description = ?")
|
23
19
|
@command.set_types(BigDecimal)
|
24
20
|
@reader = @command.execute_reader('Buy this product now!')
|
@@ -31,7 +27,7 @@ share_examples_for 'supporting BigDecimal' do
|
|
31
27
|
end
|
32
28
|
|
33
29
|
it 'should return the correctly typed result' do
|
34
|
-
@values.first.should
|
30
|
+
@values.first.should.be.kind_of(BigDecimal)
|
35
31
|
end
|
36
32
|
|
37
33
|
it 'should return the correct result' do
|
@@ -43,7 +39,7 @@ share_examples_for 'supporting BigDecimal' do
|
|
43
39
|
|
44
40
|
describe 'with manual typecasting a nil value' do
|
45
41
|
|
46
|
-
before
|
42
|
+
before do
|
47
43
|
@command = @connection.create_command("SELECT cost2 FROM widgets WHERE id = ?")
|
48
44
|
@command.set_types(BigDecimal)
|
49
45
|
@reader = @command.execute_reader(6)
|
@@ -56,11 +52,11 @@ share_examples_for 'supporting BigDecimal' do
|
|
56
52
|
end
|
57
53
|
|
58
54
|
it 'should return the correctly typed result' do
|
59
|
-
@values.first.should
|
55
|
+
@values.first.should.be.kind_of(NilClass)
|
60
56
|
end
|
61
57
|
|
62
58
|
it 'should return the correct result' do
|
63
|
-
@values.first.should
|
59
|
+
@values.first.should.be.nil
|
64
60
|
end
|
65
61
|
|
66
62
|
end
|
@@ -69,7 +65,7 @@ share_examples_for 'supporting BigDecimal' do
|
|
69
65
|
|
70
66
|
describe 'writing an Integer' do
|
71
67
|
|
72
|
-
before
|
68
|
+
before do
|
73
69
|
@reader = @connection.create_command("SELECT id FROM widgets WHERE id = ?").execute_reader(BigDecimal("2.0"))
|
74
70
|
@reader.next!
|
75
71
|
@values = @reader.values
|
@@ -87,19 +83,15 @@ share_examples_for 'supporting BigDecimal' do
|
|
87
83
|
|
88
84
|
end
|
89
85
|
|
90
|
-
|
86
|
+
shared 'supporting BigDecimal autocasting' do
|
91
87
|
|
92
|
-
|
93
|
-
|
94
|
-
before :all do
|
95
|
-
setup_test_environment
|
96
|
-
end
|
88
|
+
setup_test_environment
|
97
89
|
|
98
|
-
before
|
90
|
+
before do
|
99
91
|
@connection = DataObjects::Connection.new(CONFIG.uri)
|
100
92
|
end
|
101
93
|
|
102
|
-
after
|
94
|
+
after do
|
103
95
|
@connection.close
|
104
96
|
end
|
105
97
|
|
@@ -107,7 +99,7 @@ share_examples_for 'supporting BigDecimal autocasting' do
|
|
107
99
|
|
108
100
|
describe 'with automatic typecasting' do
|
109
101
|
|
110
|
-
before
|
102
|
+
before do
|
111
103
|
@reader = @connection.create_command("SELECT cost2 FROM widgets WHERE ad_description = ?").execute_reader('Buy this product now!')
|
112
104
|
@reader.next!
|
113
105
|
@values = @reader.values
|
@@ -118,7 +110,7 @@ share_examples_for 'supporting BigDecimal autocasting' do
|
|
118
110
|
end
|
119
111
|
|
120
112
|
it 'should return the correctly typed result' do
|
121
|
-
@values.first.should
|
113
|
+
@values.first.should.be.kind_of(BigDecimal)
|
122
114
|
end
|
123
115
|
|
124
116
|
it 'should return the correct result' do
|
@@ -1,16 +1,12 @@
|
|
1
|
-
|
1
|
+
shared 'supporting Boolean' do
|
2
2
|
|
3
|
-
|
3
|
+
setup_test_environment
|
4
4
|
|
5
|
-
before
|
6
|
-
setup_test_environment
|
7
|
-
end
|
8
|
-
|
9
|
-
before :each do
|
5
|
+
before do
|
10
6
|
@connection = DataObjects::Connection.new(CONFIG.uri)
|
11
7
|
end
|
12
8
|
|
13
|
-
after
|
9
|
+
after do
|
14
10
|
@connection.close
|
15
11
|
end
|
16
12
|
|
@@ -18,7 +14,7 @@ share_examples_for 'supporting Boolean' do
|
|
18
14
|
|
19
15
|
describe 'with manual typecasting' do
|
20
16
|
|
21
|
-
before
|
17
|
+
before do
|
22
18
|
@command = @connection.create_command("SELECT flags FROM widgets WHERE ad_description = ?")
|
23
19
|
@command.set_types(TrueClass)
|
24
20
|
@reader = @command.execute_reader('Buy this product now!')
|
@@ -31,7 +27,7 @@ share_examples_for 'supporting Boolean' do
|
|
31
27
|
end
|
32
28
|
|
33
29
|
it 'should return the correctly typed result' do
|
34
|
-
@values.first.should
|
30
|
+
@values.first.should.be.kind_of(FalseClass)
|
35
31
|
end
|
36
32
|
|
37
33
|
it 'should return the correct result' do
|
@@ -42,7 +38,7 @@ share_examples_for 'supporting Boolean' do
|
|
42
38
|
|
43
39
|
describe 'with manual typecasting a nil value' do
|
44
40
|
|
45
|
-
before
|
41
|
+
before do
|
46
42
|
@command = @connection.create_command("SELECT flags FROM widgets WHERE id = ?")
|
47
43
|
@command.set_types(TrueClass)
|
48
44
|
@reader = @command.execute_reader(4)
|
@@ -55,11 +51,11 @@ share_examples_for 'supporting Boolean' do
|
|
55
51
|
end
|
56
52
|
|
57
53
|
it 'should return the correctly typed result' do
|
58
|
-
@values.first.should
|
54
|
+
@values.first.should.be.kind_of(NilClass)
|
59
55
|
end
|
60
56
|
|
61
57
|
it 'should return the correct result' do
|
62
|
-
@values.first.should
|
58
|
+
@values.first.should.be.nil
|
63
59
|
end
|
64
60
|
|
65
61
|
end
|
@@ -68,7 +64,7 @@ share_examples_for 'supporting Boolean' do
|
|
68
64
|
|
69
65
|
describe 'writing an Boolean' do
|
70
66
|
|
71
|
-
before
|
67
|
+
before do
|
72
68
|
@reader = @connection.create_command("SELECT id FROM widgets WHERE flags = ?").execute_reader(true)
|
73
69
|
@reader.next!
|
74
70
|
@values = @reader.values
|
@@ -86,19 +82,15 @@ share_examples_for 'supporting Boolean' do
|
|
86
82
|
|
87
83
|
end
|
88
84
|
|
89
|
-
|
85
|
+
shared 'supporting Boolean autocasting' do
|
90
86
|
|
91
|
-
|
92
|
-
|
93
|
-
before :all do
|
94
|
-
setup_test_environment
|
95
|
-
end
|
87
|
+
setup_test_environment
|
96
88
|
|
97
|
-
before
|
89
|
+
before do
|
98
90
|
@connection = DataObjects::Connection.new(CONFIG.uri)
|
99
91
|
end
|
100
92
|
|
101
|
-
after
|
93
|
+
after do
|
102
94
|
@connection.close
|
103
95
|
end
|
104
96
|
|
@@ -106,7 +98,7 @@ share_examples_for 'supporting Boolean autocasting' do
|
|
106
98
|
|
107
99
|
describe 'with automatic typecasting' do
|
108
100
|
|
109
|
-
before
|
101
|
+
before do
|
110
102
|
@reader = @connection.create_command("SELECT flags FROM widgets WHERE ad_description = ?").execute_reader('Buy this product now!')
|
111
103
|
@reader.next!
|
112
104
|
@values = @reader.values
|
@@ -117,7 +109,7 @@ share_examples_for 'supporting Boolean autocasting' do
|
|
117
109
|
end
|
118
110
|
|
119
111
|
it 'should return the correctly typed result' do
|
120
|
-
@values.first.should
|
112
|
+
@values.first.should.be.kind_of(FalseClass)
|
121
113
|
end
|
122
114
|
|
123
115
|
it 'should return the correct result' do
|
@@ -1,16 +1,12 @@
|
|
1
|
-
|
1
|
+
shared 'supporting ByteArray' do
|
2
2
|
|
3
|
-
|
3
|
+
setup_test_environment
|
4
4
|
|
5
|
-
before
|
6
|
-
setup_test_environment
|
7
|
-
end
|
8
|
-
|
9
|
-
before :each do
|
5
|
+
before do
|
10
6
|
@connection = DataObjects::Connection.new(CONFIG.uri)
|
11
7
|
end
|
12
8
|
|
13
|
-
after
|
9
|
+
after do
|
14
10
|
@connection.close
|
15
11
|
end
|
16
12
|
|
@@ -18,7 +14,7 @@ share_examples_for 'supporting ByteArray' do
|
|
18
14
|
|
19
15
|
describe 'with automatic typecasting' do
|
20
16
|
|
21
|
-
before
|
17
|
+
before do
|
22
18
|
@reader = @connection.create_command("SELECT cad_drawing FROM widgets WHERE ad_description = ?").execute_reader('Buy this product now!')
|
23
19
|
@reader.next!
|
24
20
|
@values = @reader.values
|
@@ -29,7 +25,7 @@ share_examples_for 'supporting ByteArray' do
|
|
29
25
|
end
|
30
26
|
|
31
27
|
it 'should return the correctly typed result' do
|
32
|
-
@values.first.should
|
28
|
+
@values.first.should.be.kind_of(::Extlib::ByteArray)
|
33
29
|
end
|
34
30
|
|
35
31
|
it 'should return the correct result' do
|
@@ -40,7 +36,7 @@ share_examples_for 'supporting ByteArray' do
|
|
40
36
|
|
41
37
|
describe 'with manual typecasting' do
|
42
38
|
|
43
|
-
before
|
39
|
+
before do
|
44
40
|
@command = @connection.create_command("SELECT cad_drawing FROM widgets WHERE ad_description = ?")
|
45
41
|
@command.set_types(::Extlib::ByteArray)
|
46
42
|
@reader = @command.execute_reader('Buy this product now!')
|
@@ -53,7 +49,7 @@ share_examples_for 'supporting ByteArray' do
|
|
53
49
|
end
|
54
50
|
|
55
51
|
it 'should return the correctly typed result' do
|
56
|
-
@values.first.should
|
52
|
+
@values.first.should.be.kind_of(::Extlib::ByteArray)
|
57
53
|
end
|
58
54
|
|
59
55
|
it 'should return the correct result' do
|
@@ -66,8 +62,8 @@ share_examples_for 'supporting ByteArray' do
|
|
66
62
|
|
67
63
|
describe 'writing a ByteArray' do
|
68
64
|
|
69
|
-
before
|
70
|
-
@reader = @connection.create_command("SELECT
|
65
|
+
before do
|
66
|
+
@reader = @connection.create_command("SELECT ad_description FROM widgets WHERE cad_drawing = ?").execute_reader(::Extlib::ByteArray.new("CAD \001 \000 DRAWING"))
|
71
67
|
@reader.next!
|
72
68
|
@values = @reader.values
|
73
69
|
end
|
@@ -78,7 +74,7 @@ share_examples_for 'supporting ByteArray' do
|
|
78
74
|
|
79
75
|
it 'should return the correct entry' do
|
80
76
|
#Some of the drivers starts autoincrementation from 0 not 1
|
81
|
-
@values.first.should
|
77
|
+
@values.first.should == 'Buy this product now!'
|
82
78
|
end
|
83
79
|
|
84
80
|
end
|
@@ -1,16 +1,12 @@
|
|
1
|
-
|
1
|
+
shared 'supporting Class' do
|
2
2
|
|
3
|
-
|
3
|
+
setup_test_environment
|
4
4
|
|
5
|
-
before
|
6
|
-
setup_test_environment
|
7
|
-
end
|
8
|
-
|
9
|
-
before :each do
|
5
|
+
before do
|
10
6
|
@connection = DataObjects::Connection.new(CONFIG.uri)
|
11
7
|
end
|
12
8
|
|
13
|
-
after
|
9
|
+
after do
|
14
10
|
@connection.close
|
15
11
|
end
|
16
12
|
|
@@ -18,7 +14,7 @@ share_examples_for 'supporting Class' do
|
|
18
14
|
|
19
15
|
describe 'with manual typecasting' do
|
20
16
|
|
21
|
-
before
|
17
|
+
before do
|
22
18
|
@command = @connection.create_command("SELECT whitepaper_text FROM widgets WHERE ad_description = ?")
|
23
19
|
@command.set_types(Class)
|
24
20
|
@reader = @command.execute_reader('Buy this product now!')
|
@@ -31,7 +27,7 @@ share_examples_for 'supporting Class' do
|
|
31
27
|
end
|
32
28
|
|
33
29
|
it 'should return the correctly typed result' do
|
34
|
-
@values.first.should
|
30
|
+
@values.first.should.be.kind_of(Class)
|
35
31
|
end
|
36
32
|
|
37
33
|
it 'should return the correct result' do
|
@@ -44,7 +40,7 @@ share_examples_for 'supporting Class' do
|
|
44
40
|
|
45
41
|
describe 'writing a Class' do
|
46
42
|
|
47
|
-
before
|
43
|
+
before do
|
48
44
|
@reader = @connection.create_command("SELECT whitepaper_text FROM widgets WHERE whitepaper_text = ?").execute_reader(String)
|
49
45
|
@reader.next!
|
50
46
|
@values = @reader.values
|
@@ -1,16 +1,12 @@
|
|
1
|
-
|
1
|
+
shared 'supporting Date' do
|
2
2
|
|
3
|
-
|
3
|
+
setup_test_environment
|
4
4
|
|
5
|
-
before
|
6
|
-
setup_test_environment
|
7
|
-
end
|
8
|
-
|
9
|
-
before :each do
|
5
|
+
before do
|
10
6
|
@connection = DataObjects::Connection.new(CONFIG.uri)
|
11
7
|
end
|
12
8
|
|
13
|
-
after
|
9
|
+
after do
|
14
10
|
@connection.close
|
15
11
|
end
|
16
12
|
|
@@ -18,7 +14,7 @@ share_examples_for 'supporting Date' do
|
|
18
14
|
|
19
15
|
describe 'with manual typecasting' do
|
20
16
|
|
21
|
-
before
|
17
|
+
before do
|
22
18
|
@command = @connection.create_command("SELECT release_datetime FROM widgets WHERE ad_description = ?")
|
23
19
|
@command.set_types(Date)
|
24
20
|
@reader = @command.execute_reader('Buy this product now!')
|
@@ -31,7 +27,7 @@ share_examples_for 'supporting Date' do
|
|
31
27
|
end
|
32
28
|
|
33
29
|
it 'should return the correctly typed result' do
|
34
|
-
@values.first.should
|
30
|
+
@values.first.should.be.kind_of(Date)
|
35
31
|
end
|
36
32
|
|
37
33
|
it 'should return the correct result' do
|
@@ -42,7 +38,7 @@ share_examples_for 'supporting Date' do
|
|
42
38
|
|
43
39
|
describe 'with manual typecasting a nil value' do
|
44
40
|
|
45
|
-
before
|
41
|
+
before do
|
46
42
|
@command = @connection.create_command("SELECT release_date FROM widgets WHERE id = ?")
|
47
43
|
@command.set_types(Date)
|
48
44
|
@reader = @command.execute_reader(7)
|
@@ -55,11 +51,11 @@ share_examples_for 'supporting Date' do
|
|
55
51
|
end
|
56
52
|
|
57
53
|
it 'should return a nil class' do
|
58
|
-
@values.first.should
|
54
|
+
@values.first.should.be.kind_of(NilClass)
|
59
55
|
end
|
60
56
|
|
61
57
|
it 'should return nil' do
|
62
|
-
@values.first.should
|
58
|
+
@values.first.should.be.nil
|
63
59
|
end
|
64
60
|
|
65
61
|
end
|
@@ -68,7 +64,7 @@ share_examples_for 'supporting Date' do
|
|
68
64
|
|
69
65
|
describe 'writing an Date' do
|
70
66
|
|
71
|
-
before
|
67
|
+
before do
|
72
68
|
@reader = @connection.create_command("SELECT id FROM widgets WHERE release_date = ? ORDER BY id").execute_reader(Date.civil(2008, 2, 14))
|
73
69
|
@reader.next!
|
74
70
|
@values = @reader.values
|
@@ -80,26 +76,22 @@ share_examples_for 'supporting Date' do
|
|
80
76
|
|
81
77
|
it 'should return the correct entry' do
|
82
78
|
#Some of the drivers starts autoincrementation from 0 not 1
|
83
|
-
@values.first.should
|
79
|
+
@values.first.should.satisfy { |val| val == 1 or val == 0 }
|
84
80
|
end
|
85
81
|
|
86
82
|
end
|
87
83
|
|
88
84
|
end
|
89
85
|
|
90
|
-
|
86
|
+
shared 'supporting Date autocasting' do
|
91
87
|
|
92
|
-
|
93
|
-
|
94
|
-
before :all do
|
95
|
-
setup_test_environment
|
96
|
-
end
|
88
|
+
setup_test_environment
|
97
89
|
|
98
|
-
before
|
90
|
+
before do
|
99
91
|
@connection = DataObjects::Connection.new(CONFIG.uri)
|
100
92
|
end
|
101
93
|
|
102
|
-
after
|
94
|
+
after do
|
103
95
|
@connection.close
|
104
96
|
end
|
105
97
|
|
@@ -107,7 +99,7 @@ share_examples_for 'supporting Date autocasting' do
|
|
107
99
|
|
108
100
|
describe 'with automatic typecasting' do
|
109
101
|
|
110
|
-
before
|
102
|
+
before do
|
111
103
|
@reader = @connection.create_command("SELECT release_date FROM widgets WHERE ad_description = ?").execute_reader('Buy this product now!')
|
112
104
|
@reader.next!
|
113
105
|
@values = @reader.values
|
@@ -118,7 +110,7 @@ share_examples_for 'supporting Date autocasting' do
|
|
118
110
|
end
|
119
111
|
|
120
112
|
it 'should return the correctly typed result' do
|
121
|
-
@values.first.should
|
113
|
+
@values.first.should.be.kind_of(Date)
|
122
114
|
end
|
123
115
|
|
124
116
|
it 'should return the correct result' do
|