ruport 0.6.1 → 0.7.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.
- data/AUTHORS +6 -0
- data/Rakefile +4 -4
- data/TODO +3 -2
- data/bin/rope +2 -103
- data/examples/pdf_complex_report.rb +53 -0
- data/lib/ruport/config.rb +7 -7
- data/lib/ruport/data/collection.rb +8 -7
- data/lib/ruport/data/groupable.rb +3 -2
- data/lib/ruport/data/record.rb +13 -16
- data/lib/ruport/data/table.rb +89 -18
- data/lib/ruport/format/csv.rb +29 -0
- data/lib/ruport/format/html.rb +40 -0
- data/lib/ruport/format/latex.rb +50 -0
- data/lib/ruport/format/pdf.rb +78 -0
- data/lib/ruport/format/plugin.rb +20 -65
- data/lib/ruport/format/svg.rb +39 -0
- data/lib/ruport/format/text.rb +77 -0
- data/lib/ruport/format/xml.rb +32 -0
- data/lib/ruport/format.rb +1 -159
- data/lib/ruport/generator.rb +158 -0
- data/lib/ruport/layout/component.rb +7 -0
- data/lib/ruport/layout.rb +1 -0
- data/lib/ruport/query.rb +3 -3
- data/lib/ruport/renderer/graph.rb +48 -0
- data/lib/ruport/renderer/table.rb +132 -0
- data/lib/ruport/renderer.rb +193 -0
- data/lib/ruport/report/graph.rb +2 -2
- data/lib/ruport/report.rb +94 -96
- data/lib/ruport/system_extensions.rb +3 -6
- data/lib/ruport.rb +6 -4
- data/test/samples/dates.csv +1409 -0
- data/test/samples/foo.rtxt +3 -0
- data/test/test_collection.rb +0 -14
- data/test/test_config.rb +6 -6
- data/test/test_graph_renderer.rb +97 -0
- data/test/test_groupable.rb +1 -0
- data/test/test_query.rb +325 -324
- data/test/test_record.rb +3 -2
- data/test/test_renderer.rb +74 -0
- data/test/test_report.rb +29 -26
- data/test/test_table.rb +54 -29
- data/test/test_table_renderer.rb +93 -0
- data/test/test_text_table.rb +61 -0
- data/test/unit.log +24 -0
- metadata +41 -63
- data/CHANGELOG +0 -587
- data/examples/basic_grouping.rb +0 -19
- data/examples/fieldless_table.rb +0 -13
- data/examples/latex_table.rb +0 -17
- data/examples/line_graph.rb +0 -22
- data/examples/line_graph_report.rb +0 -23
- data/examples/line_plotter.rb +0 -46
- data/examples/long.txt +0 -24
- data/examples/new_plugin.rb +0 -24
- data/examples/report.rb +0 -35
- data/examples/sample_invoice_report.rb +0 -32
- data/examples/simple_mail.rb +0 -15
- data/examples/simple_table_interface.rb +0 -20
- data/examples/sql_erb.rb +0 -20
- data/examples/template.rb +0 -15
- data/examples/text_processors.rb +0 -13
- data/lib/ruport/format/engine/document.rb +0 -28
- data/lib/ruport/format/engine/graph.rb +0 -18
- data/lib/ruport/format/engine/invoice.rb +0 -23
- data/lib/ruport/format/engine/table.rb +0 -54
- data/lib/ruport/format/engine.rb +0 -108
- data/lib/ruport/format/plugin/csv_plugin.rb +0 -26
- data/lib/ruport/format/plugin/html_plugin.rb +0 -32
- data/lib/ruport/format/plugin/latex_plugin.rb +0 -50
- data/lib/ruport/format/plugin/pdf_plugin.rb +0 -126
- data/lib/ruport/format/plugin/svg_plugin.rb +0 -61
- data/lib/ruport/format/plugin/text_plugin.rb +0 -77
- data/lib/ruport/meta_tools.rb +0 -66
- data/lib/ruport/report/invoice.rb +0 -29
- data/test/_test_groupable.rb +0 -0
- data/test/test_format.rb +0 -39
- data/test/test_format_engine.rb +0 -264
- data/test/test_graph.rb +0 -93
- data/test/test_invoice.rb +0 -32
- data/test/test_latex.rb +0 -20
- data/test/test_meta_tools.rb +0 -14
- data/test/test_plugin.rb +0 -277
- data/test/ts_all.rb +0 -21
data/test/test_query.rb
CHANGED
@@ -1,35 +1,35 @@
|
|
1
|
-
require "test/unit"
|
2
|
-
require "ruport"
|
3
|
-
|
4
|
-
begin
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
rescue LoadError
|
9
|
-
|
10
|
-
end
|
11
|
-
|
12
|
-
class TestQuery < Test::Unit::TestCase
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
1
|
+
require "test/unit"
|
2
|
+
require "ruport"
|
3
|
+
|
4
|
+
begin
|
5
|
+
require 'mocha'
|
6
|
+
require 'stubba'
|
7
|
+
require 'dbi'
|
8
|
+
rescue LoadError
|
9
|
+
$stderr.puts "Warning: Mocha not found -- skipping some Query tests"
|
10
|
+
end
|
11
|
+
|
12
|
+
class TestQuery < Test::Unit::TestCase
|
13
|
+
def setup
|
14
|
+
@sources = {
|
15
|
+
:default => {
|
16
|
+
:dsn => 'ruport:test', :user => 'greg', :password => 'apple' },
|
17
|
+
:alternative => {
|
18
|
+
:dsn => "ruport:test2", :user => "sandal", :password => "harmonix" },
|
19
|
+
}
|
20
|
+
Ruport::Config.source :default, @sources[:default]
|
21
|
+
Ruport::Config.source :alternative, @sources[:alternative]
|
22
|
+
|
23
|
+
@columns = %w(a b c)
|
24
|
+
@data = [ [[1,2,3],[4,5,6],[7,8,9]],
|
25
|
+
[[9,8,7],[6,5,4],[3,2,1]],
|
26
|
+
[[7,8,9],[4,5,6],[1,2,3]], ]
|
27
|
+
@datasets = @data.dup
|
28
|
+
|
29
|
+
@sql = [ "select * from foo", "create table foo ..." ]
|
30
|
+
@sql << @sql.values_at(0, 0).join(";\n")
|
31
|
+
@sql << @sql.values_at(1, 0).join(";\n")
|
32
|
+
@query = {
|
33
33
|
:plain => Ruport::Query.new(@sql[0]),
|
34
34
|
:sourced => Ruport::Query.new(@sql[0], :source => :alternative),
|
35
35
|
:paramed => Ruport::Query.new(@sql[0], :params => [ 42 ]),
|
@@ -41,297 +41,298 @@ class TestQuery < Test::Unit::TestCase
|
|
41
41
|
:resultless => Ruport::Query.new(@sql[1]),
|
42
42
|
:multi => Ruport::Query.new(@sql[2]),
|
43
43
|
:mixed => Ruport::Query.new(@sql[3]),
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
|
194
|
-
|
195
|
-
|
196
|
-
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
|
201
|
-
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
|
206
|
-
|
207
|
-
|
208
|
-
|
209
|
-
|
210
|
-
|
211
|
-
|
212
|
-
|
213
|
-
|
214
|
-
|
215
|
-
|
216
|
-
|
217
|
-
|
218
|
-
|
219
|
-
|
220
|
-
|
221
|
-
|
222
|
-
|
223
|
-
|
224
|
-
|
225
|
-
|
226
|
-
|
227
|
-
|
228
|
-
|
229
|
-
|
230
|
-
|
231
|
-
|
232
|
-
|
233
|
-
|
234
|
-
|
235
|
-
|
236
|
-
|
237
|
-
|
238
|
-
|
239
|
-
|
240
|
-
|
241
|
-
|
242
|
-
|
243
|
-
|
244
|
-
|
245
|
-
|
246
|
-
|
247
|
-
|
248
|
-
|
249
|
-
|
250
|
-
|
251
|
-
|
252
|
-
|
253
|
-
|
254
|
-
|
255
|
-
|
256
|
-
|
257
|
-
|
258
|
-
|
259
|
-
|
260
|
-
|
261
|
-
|
262
|
-
|
263
|
-
|
264
|
-
|
265
|
-
|
266
|
-
|
267
|
-
|
268
|
-
|
269
|
-
|
270
|
-
|
271
|
-
|
272
|
-
|
273
|
-
|
274
|
-
|
275
|
-
|
276
|
-
|
277
|
-
|
278
|
-
|
279
|
-
|
280
|
-
|
281
|
-
|
282
|
-
|
283
|
-
|
284
|
-
|
285
|
-
|
286
|
-
|
287
|
-
|
288
|
-
|
289
|
-
|
290
|
-
|
291
|
-
|
292
|
-
|
293
|
-
|
294
|
-
|
295
|
-
|
296
|
-
|
297
|
-
|
298
|
-
|
299
|
-
|
300
|
-
|
301
|
-
|
302
|
-
|
303
|
-
|
304
|
-
|
305
|
-
|
306
|
-
|
307
|
-
|
308
|
-
|
309
|
-
|
310
|
-
|
311
|
-
|
312
|
-
|
313
|
-
|
314
|
-
|
315
|
-
|
316
|
-
|
317
|
-
|
318
|
-
|
319
|
-
|
320
|
-
|
321
|
-
|
322
|
-
|
323
|
-
|
324
|
-
|
325
|
-
|
326
|
-
|
327
|
-
|
328
|
-
|
329
|
-
|
330
|
-
|
331
|
-
|
332
|
-
|
44
|
+
}
|
45
|
+
@query[:precached].cached_data = @data[0]
|
46
|
+
end
|
47
|
+
|
48
|
+
def test_execute
|
49
|
+
return unless Object.const_defined? :Mocha
|
50
|
+
query = @query[:uncached]
|
51
|
+
setup_mock_dbi(1)
|
52
|
+
|
53
|
+
assert_equal nil, query.execute
|
54
|
+
end
|
55
|
+
|
56
|
+
def test_execute_sourced
|
57
|
+
return unless Object.const_defined? :Mocha
|
58
|
+
query = @query[:sourced]
|
59
|
+
setup_mock_dbi(1, :source => :alternative)
|
60
|
+
|
61
|
+
assert_equal nil, query.execute
|
62
|
+
end
|
63
|
+
|
64
|
+
def test_execute_paramed
|
65
|
+
return unless Object.const_defined? :Mocha
|
66
|
+
query = @query[:paramed]
|
67
|
+
setup_mock_dbi(1, :params => [ 42 ])
|
68
|
+
|
69
|
+
assert_equal nil, query.execute
|
70
|
+
end
|
71
|
+
|
72
|
+
def test_result_cache_disabled
|
73
|
+
return unless Object.const_defined? :Mocha
|
74
|
+
query = @query[:uncached]
|
75
|
+
setup_mock_dbi(3)
|
76
|
+
|
77
|
+
assert_nothing_raised { query.result }
|
78
|
+
assert_equal @data[1], get_raw(query.result)
|
79
|
+
assert_equal @data[2], get_raw(query.result)
|
80
|
+
end
|
81
|
+
|
82
|
+
def test_result_cache_enabled
|
83
|
+
return unless Object.const_defined? :Mocha
|
84
|
+
query = @query[:cached]
|
85
|
+
setup_mock_dbi(1)
|
86
|
+
|
87
|
+
assert_nothing_raised { query.result }
|
88
|
+
assert_equal @data[0], get_raw(query.result)
|
89
|
+
assert_equal @data[0], get_raw(query.result)
|
90
|
+
end
|
91
|
+
|
92
|
+
def test_result_resultless
|
93
|
+
return unless Object.const_defined? :Mocha
|
94
|
+
query = @query[:resultless]
|
95
|
+
setup_mock_dbi(1, :resultless => true, :sql => @sql[1])
|
96
|
+
|
97
|
+
assert_equal nil, query.result
|
98
|
+
end
|
99
|
+
|
100
|
+
def test_result_multi
|
101
|
+
return unless Object.const_defined? :Mocha
|
102
|
+
query = @query[:multi]
|
103
|
+
setup_mock_dbi(2)
|
104
|
+
|
105
|
+
assert_equal @data[1], get_raw(query.result)
|
106
|
+
end
|
107
|
+
|
108
|
+
def test_result_raw_disabled
|
109
|
+
return unless Object.const_defined? :Mocha
|
110
|
+
query = @query[:unraw]
|
111
|
+
setup_mock_dbi(1)
|
112
|
+
|
113
|
+
assert_equal @data[0].to_table(@columns), query.result
|
114
|
+
end
|
115
|
+
|
116
|
+
def test_result_raw_enabled
|
117
|
+
return unless Object.const_defined? :Mocha
|
118
|
+
query = @query[:raw]
|
119
|
+
setup_mock_dbi(1)
|
120
|
+
|
121
|
+
assert_equal @data[0], query.result
|
122
|
+
end
|
123
|
+
|
124
|
+
def test_update_cache
|
125
|
+
return unless Object.const_defined? :Mocha
|
126
|
+
query = @query[:cached]
|
127
|
+
setup_mock_dbi(2)
|
128
|
+
|
129
|
+
assert_equal @data[0], get_raw(query.result)
|
130
|
+
query.update_cache
|
131
|
+
assert_equal @data[1], get_raw(query.cached_data)
|
132
|
+
assert_equal @data[1], get_raw(query.result)
|
133
|
+
end
|
134
|
+
|
135
|
+
def test_clear_cache
|
136
|
+
return unless Object.const_defined? :Mocha
|
137
|
+
query = @query[:cached]
|
138
|
+
setup_mock_dbi(2)
|
139
|
+
|
140
|
+
assert_equal @data[0], get_raw(query.result)
|
141
|
+
query.clear_cache
|
142
|
+
assert_equal nil, query.cached_data
|
143
|
+
assert_equal @data[1], get_raw(query.result)
|
144
|
+
end
|
145
|
+
|
146
|
+
def test_disable_caching
|
147
|
+
return unless Object.const_defined? :Mocha
|
148
|
+
query = @query[:cached]
|
149
|
+
setup_mock_dbi(3)
|
150
|
+
|
151
|
+
assert_equal @data[0], get_raw(query.result)
|
152
|
+
assert_equal @data[0], get_raw(query.result)
|
153
|
+
query.disable_caching
|
154
|
+
assert_equal @data[1], get_raw(query.result)
|
155
|
+
assert_equal @data[2], get_raw(query.result)
|
156
|
+
end
|
157
|
+
|
158
|
+
def test_enable_caching
|
159
|
+
return unless Object.const_defined? :Mocha
|
160
|
+
query = @query[:uncached]
|
161
|
+
setup_mock_dbi(3)
|
162
|
+
|
163
|
+
assert_equal @data[0], get_raw(query.result)
|
164
|
+
assert_equal @data[1], get_raw(query.result)
|
165
|
+
query.enable_caching
|
166
|
+
assert_equal @data[2], get_raw(query.result)
|
167
|
+
assert_equal @data[2], get_raw(query.result)
|
168
|
+
end
|
169
|
+
|
170
|
+
def test_load_file
|
171
|
+
return unless Object.const_defined? :Mocha
|
172
|
+
File.expects(:read).
|
173
|
+
with("query_test.sql").
|
174
|
+
returns("select * from foo\n")
|
175
|
+
|
176
|
+
query = Ruport::Query.new "query_test.sql"
|
177
|
+
assert_equal "select * from foo", query.sql
|
178
|
+
end
|
179
|
+
|
180
|
+
def test_load_file_erb
|
181
|
+
return unless Object.const_defined? :Mocha
|
182
|
+
@table = 'bar'
|
183
|
+
File.expects(:read).
|
184
|
+
with("query_test.sql").
|
185
|
+
returns("select * from <%= @table %>\n")
|
186
|
+
|
187
|
+
query = Ruport::Query.new "query_test.sql", :binding => binding
|
188
|
+
assert_equal "select * from bar", query.sql
|
189
|
+
end
|
190
|
+
|
191
|
+
def test_load_file_not_found
|
192
|
+
return unless Object.const_defined? :Mocha
|
193
|
+
File.expects(:read).
|
194
|
+
with("query_test.sql").
|
195
|
+
raises(Errno::ENOENT)
|
196
|
+
Ruport.expects(:log).
|
197
|
+
with("Could not open query_test.sql",
|
198
|
+
:status => :fatal, :exception => LoadError).
|
199
|
+
raises(LoadError)
|
200
|
+
|
201
|
+
assert_raises LoadError do
|
202
|
+
query = Ruport::Query.new "query_test.sql"
|
203
|
+
end
|
204
|
+
end
|
205
|
+
|
206
|
+
def test_each_cache_disabled
|
207
|
+
return unless Object.const_defined? :Mocha
|
208
|
+
query = @query[:uncached]
|
209
|
+
setup_mock_dbi(2)
|
210
|
+
|
211
|
+
result = []; query.each { |r| result << r.to_a }
|
212
|
+
assert_equal @data[0], result
|
213
|
+
|
214
|
+
result = []; query.each { |r| result << r.to_a }
|
215
|
+
assert_equal @data[1], result
|
216
|
+
end
|
217
|
+
|
218
|
+
def test_each_cache_enabled
|
219
|
+
return unless Object.const_defined? :Mocha
|
220
|
+
query = @query[:cached]
|
221
|
+
setup_mock_dbi(1)
|
222
|
+
|
223
|
+
result = []; query.each { |r| result << r.to_a }
|
224
|
+
assert_equal @data[0], result
|
225
|
+
|
226
|
+
result = []; query.each { |r| result << r.to_a }
|
227
|
+
assert_equal @data[0], result
|
228
|
+
end
|
229
|
+
|
230
|
+
def test_each_multi
|
231
|
+
return unless Object.const_defined? :Mocha
|
232
|
+
query = @query[:multi]
|
233
|
+
setup_mock_dbi(2)
|
234
|
+
|
235
|
+
result = []; query.each { |r| result << r.to_a }
|
236
|
+
assert_equal @data[1], result
|
237
|
+
end
|
238
|
+
|
239
|
+
def test_each_without_block
|
240
|
+
assert_raise (LocalJumpError) { @query[:precached].each }
|
241
|
+
end
|
242
|
+
|
243
|
+
def test_select_source
|
244
|
+
query = @query[:precached]
|
245
|
+
assert_equal @sources[:default], get_query_source(query)
|
246
|
+
|
247
|
+
query.select_source :alternative
|
248
|
+
assert_equal @sources[:alternative], get_query_source(query)
|
249
|
+
|
250
|
+
query.select_source :default
|
251
|
+
assert_equal @sources[:default], get_query_source(query)
|
252
|
+
end
|
253
|
+
|
254
|
+
def test_initialize_source_temporary
|
255
|
+
query = Ruport::Query.new "<unused>", @sources[:alternative]
|
256
|
+
assert_equal @sources[:alternative], get_query_source(query)
|
257
|
+
end
|
258
|
+
|
259
|
+
def test_initialize_source_temporary_multiple
|
260
|
+
query1 = Ruport::Query.new "<unused>", @sources[:default]
|
261
|
+
query2 = Ruport::Query.new "<unused>", @sources[:alternative]
|
262
|
+
|
263
|
+
assert_equal @sources[:default], get_query_source(query1)
|
264
|
+
assert_equal @sources[:alternative], get_query_source(query2)
|
265
|
+
end
|
266
|
+
|
267
|
+
def test_generator
|
268
|
+
query = @query[:precached]
|
269
|
+
gen = query.generator
|
270
|
+
assert_equal @data[0][0], gen.next
|
271
|
+
assert_equal @data[0][1], gen.next
|
272
|
+
assert_equal @data[0][2], gen.next
|
273
|
+
assert_raise(EOFError) { gen.next }
|
274
|
+
end
|
275
|
+
|
276
|
+
def test_to_table
|
277
|
+
return unless Object.const_defined? :Mocha
|
278
|
+
query = @query[:raw]
|
279
|
+
setup_mock_dbi(3, :returns => @data[0])
|
280
|
+
|
281
|
+
assert_equal @data[0], query.result
|
282
|
+
assert_equal @data[0].to_table(@columns), query.to_table
|
283
|
+
assert_equal @data[0], query.result
|
284
|
+
end
|
285
|
+
|
286
|
+
def test_to_csv
|
287
|
+
return unless Object.const_defined? :Mocha
|
288
|
+
query = @query[:plain]
|
289
|
+
setup_mock_dbi(1)
|
290
|
+
|
291
|
+
csv = @data[0].to_table(@columns).as(:csv)
|
292
|
+
assert_equal csv, query.to_csv
|
293
|
+
end
|
294
|
+
|
295
|
+
private
|
296
|
+
def setup_mock_dbi(count, options={})
|
297
|
+
sql = options[:sql] || @sql[0]
|
298
|
+
source = options[:source] || :default
|
299
|
+
returns = options[:returns] || Proc.new { @datasets.shift }
|
300
|
+
resultless = options[:resultless]
|
301
|
+
params = options[:params] || []
|
302
|
+
|
303
|
+
@dbh = mock("database_handle")
|
304
|
+
@sth = mock("statement_handle")
|
305
|
+
def @dbh.execute(*a, &b); execute__(*a, &b); ensure; sth__.finish if b; end
|
306
|
+
def @sth.each; data__.each { |x| yield(x) }; end
|
307
|
+
def @sth.fetch_all; data__; end
|
308
|
+
|
309
|
+
DBI.expects(:connect).
|
310
|
+
with(*@sources[source].values_at(:dsn, :user, :password)).
|
311
|
+
yields(@dbh).times(count)
|
312
|
+
@dbh.expects(:execute__).with(sql, *params).
|
313
|
+
yields(@sth).returns(@sth).times(count)
|
314
|
+
@dbh.stubs(:sth__).returns(@sth)
|
315
|
+
@sth.expects(:finish).with().times(count)
|
316
|
+
unless resultless
|
317
|
+
@sth.stubs(:fetchable?).returns(true)
|
318
|
+
@sth.stubs(:column_names).returns(@columns)
|
319
|
+
@sth.expects(:data__).returns(returns).times(count)
|
320
|
+
else
|
321
|
+
@sth.stubs(:fetchable?).returns(false)
|
322
|
+
@sth.stubs(:column_names).returns([])
|
323
|
+
@sth.stubs(:cancel)
|
324
|
+
@sth.expects(:data__).times(0)
|
325
|
+
end
|
326
|
+
end
|
327
|
+
|
328
|
+
def get_query_source(query)
|
329
|
+
[ :dsn, :user, :password ].inject({}) do |memo, var|
|
330
|
+
memo.update var => query.instance_variable_get("@#{var}")
|
331
|
+
end
|
332
|
+
end
|
333
|
+
|
334
|
+
def get_raw(table)
|
335
|
+
table.collect { |row| row.to_a }
|
336
|
+
end
|
333
337
|
|
334
|
-
def get_raw(table)
|
335
|
-
table.collect { |row| row.to_a }
|
336
|
-
end
|
337
338
|
end
|