ruport 0.10.0 → 0.11.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/LICENSE +55 -9
- data/Rakefile +3 -5
- data/examples/line_plotter.rb +3 -0
- data/examples/pdf_complex_report.rb +0 -1
- data/examples/pdf_report_with_common_base.rb +72 -0
- data/examples/pdf_styles.rb +16 -0
- data/examples/simple_pdf_lines.rb +0 -1
- data/lib/ruport.rb +5 -66
- data/lib/ruport/acts_as_reportable.rb +122 -51
- data/lib/ruport/data/grouping.rb +30 -13
- data/lib/ruport/data/record.rb +26 -25
- data/lib/ruport/data/table.rb +91 -34
- data/lib/ruport/formatter.rb +86 -11
- data/lib/ruport/formatter/csv.rb +29 -2
- data/lib/ruport/formatter/html.rb +23 -1
- data/lib/ruport/formatter/pdf.rb +123 -32
- data/lib/ruport/formatter/text.rb +62 -6
- data/lib/ruport/query.rb +75 -39
- data/lib/ruport/renderer.rb +250 -35
- data/lib/ruport/renderer/grouping.rb +2 -2
- data/test/html_formatter_test.rb +4 -1
- data/test/pdf_formatter_test.rb +30 -7
- data/test/query_test.rb +12 -0
- data/test/renderer_test.rb +33 -2
- data/test/table_test.rb +8 -2
- data/test/text_formatter_test.rb +11 -1
- metadata +53 -107
- data/bin/rope +0 -12
- data/examples/rope_examples/itunes/README +0 -12
- data/examples/rope_examples/itunes/Rakefile +0 -39
- data/examples/rope_examples/itunes/config/environment.rb +0 -4
- data/examples/rope_examples/itunes/data/mix.txt +0 -1
- data/examples/rope_examples/itunes/lib/helpers.rb +0 -0
- data/examples/rope_examples/itunes/lib/init.rb +0 -39
- data/examples/rope_examples/itunes/lib/reports.rb +0 -1
- data/examples/rope_examples/itunes/lib/reports/playlist.rb +0 -17
- data/examples/rope_examples/itunes/log/ruport.log +0 -1
- data/examples/rope_examples/itunes/test/test_playlist.rb +0 -8
- data/examples/rope_examples/itunes/util/build +0 -96
- data/examples/rope_examples/itunes/util/sql_exec +0 -5
- data/examples/rope_examples/sales_report/README +0 -4
- data/examples/rope_examples/sales_report/Rakefile +0 -39
- data/examples/rope_examples/sales_report/config/environment.rb +0 -4
- data/examples/rope_examples/sales_report/lib/helpers.rb +0 -0
- data/examples/rope_examples/sales_report/lib/init.rb +0 -39
- data/examples/rope_examples/sales_report/lib/reports.rb +0 -1
- data/examples/rope_examples/sales_report/lib/reports/sales.rb +0 -132
- data/examples/rope_examples/sales_report/log/ruport.log +0 -1
- data/examples/rope_examples/sales_report/output/books.pdf +0 -170
- data/examples/rope_examples/sales_report/output/books.txt +0 -11
- data/examples/rope_examples/sales_report/test/test_sales.rb +0 -8
- data/examples/rope_examples/sales_report/util/build +0 -96
- data/examples/rope_examples/sales_report/util/sql_exec +0 -5
- data/examples/sample.rb +0 -16
- data/lib/ruport/generator.rb +0 -294
- data/lib/ruport/report.rb +0 -262
- data/setup.rb +0 -1585
- data/test/report_test.rb +0 -218
- data/test/samples/foo.rtxt +0 -3
data/test/report_test.rb
DELETED
@@ -1,218 +0,0 @@
|
|
1
|
-
#tc_report.rb
|
2
|
-
#
|
3
|
-
# Created by Gregory Thomas Brown on 2005-08-09
|
4
|
-
# Copyright 2005 (Gregory Brown) All rights reserved.
|
5
|
-
|
6
|
-
require "test/unit"
|
7
|
-
require "ruport"
|
8
|
-
begin; require "rubygems"; rescue LoadError; nil; end
|
9
|
-
|
10
|
-
begin
|
11
|
-
require 'mocha'
|
12
|
-
require 'stubba'
|
13
|
-
require 'net/smtp'
|
14
|
-
rescue LoadError
|
15
|
-
$stderr.puts "Warning: Mocha not found -- skipping some Report tests"
|
16
|
-
end
|
17
|
-
|
18
|
-
class SampleReport < Ruport::Report
|
19
|
-
renders_with Ruport::Renderer::Table
|
20
|
-
|
21
|
-
def generate
|
22
|
-
Table(%w[not abc]) << %w[o r] << %w[one two] << %w[thr ee]
|
23
|
-
end
|
24
|
-
end
|
25
|
-
|
26
|
-
class TestReport < Test::Unit::TestCase
|
27
|
-
include Ruport
|
28
|
-
|
29
|
-
def setup
|
30
|
-
@report = Report.new
|
31
|
-
end
|
32
|
-
|
33
|
-
def test_renders_with_shortcuts
|
34
|
-
a = SampleReport.new(:csv)
|
35
|
-
assert_equal("not,abc\no,r\none,two\nthr,ee\n",a.run)
|
36
|
-
assert_equal("not,abc\no,r\none,two\nthr,ee\n",SampleReport.as(:csv))
|
37
|
-
assert_equal("not,abc\no,r\none,two\nthr,ee\n",SampleReport.to_csv)
|
38
|
-
assert_equal("not,abc\no,r\none,two\nthr,ee\n",a.to_csv)
|
39
|
-
a = SampleReport.new
|
40
|
-
assert_equal("not,abc\no,r\none,two\nthr,ee\n",a.to_csv)
|
41
|
-
|
42
|
-
#not sure if this is 'good behaviour'
|
43
|
-
assert_equal :csv, a.format
|
44
|
-
a.to_text
|
45
|
-
|
46
|
-
assert_equal :text, a.format
|
47
|
-
end
|
48
|
-
|
49
|
-
def test_erb
|
50
|
-
@report = Report.new
|
51
|
-
@report.results = "foo"
|
52
|
-
assert_equal "foo", @report.erb("<%= @results %>")
|
53
|
-
assert_equal "foo\n4\n---\n", @report.erb("test/samples/foo.rtxt")
|
54
|
-
end
|
55
|
-
|
56
|
-
class MyReport < Report; end
|
57
|
-
|
58
|
-
def test_klass_methods
|
59
|
-
rep_klass = MyReport.dup
|
60
|
-
rep_klass.send(:prepare) { self.file = "foo.csv" }
|
61
|
-
rep_klass.send(:generate) { "hello dolly" }
|
62
|
-
rep_klass.send(:cleanup) { @foo = "bar" }
|
63
|
-
report = rep_klass.new
|
64
|
-
report.run { |rep|
|
65
|
-
assert_equal("foo.csv",rep.file)
|
66
|
-
assert_equal("hello dolly",rep.results)
|
67
|
-
assert_equal(nil,rep.instance_eval("@foo"))
|
68
|
-
}
|
69
|
-
assert_equal("bar",report.instance_eval("@foo"))
|
70
|
-
end
|
71
|
-
|
72
|
-
def test_multi_reports
|
73
|
-
rep_klass = MyReport.dup
|
74
|
-
|
75
|
-
report1 = rep_klass.new
|
76
|
-
report2 = rep_klass.new
|
77
|
-
|
78
|
-
report1.file = "foo"
|
79
|
-
report2.file = "bar"
|
80
|
-
|
81
|
-
rep_klass.send(:generate) { file }
|
82
|
-
|
83
|
-
expected = %w[foo bar]
|
84
|
-
|
85
|
-
rep_klass.run :reports => [report1,report2] do |rep|
|
86
|
-
assert_equal expected.shift, rep.results
|
87
|
-
end
|
88
|
-
|
89
|
-
end
|
90
|
-
|
91
|
-
|
92
|
-
def test_timeout
|
93
|
-
rep_klass = MyReport.dup
|
94
|
-
rep_klass.send(:generate) { raise }
|
95
|
-
|
96
|
-
assert_raises(RuntimeError){
|
97
|
-
rep_klass.run(:tries => 3, :interval => 1)
|
98
|
-
}
|
99
|
-
|
100
|
-
rep_klass.send(:generate) { sleep 1.1 }
|
101
|
-
|
102
|
-
assert_raises(Timeout::Error) {
|
103
|
-
rep_klass.run( :tries => 2,
|
104
|
-
:timeout => 1,
|
105
|
-
:interval => 1,
|
106
|
-
:log_level => :log_only)
|
107
|
-
}
|
108
|
-
|
109
|
-
end
|
110
|
-
|
111
|
-
def test_return_value
|
112
|
-
rep_klass = MyReport.dup
|
113
|
-
rep_klass.send(:generate) { "hello dolly" }
|
114
|
-
|
115
|
-
# single report
|
116
|
-
assert_equal "hello dolly", rep_klass.run
|
117
|
-
|
118
|
-
# multiple reports
|
119
|
-
assert_equal ["hello dolly", "hello dolly"],
|
120
|
-
rep_klass.run(:reports => [rep_klass.new,rep_klass.new])
|
121
|
-
end
|
122
|
-
|
123
|
-
def test_write_to_file
|
124
|
-
return unless Object.const_defined? :Mocha
|
125
|
-
file = mock("file")
|
126
|
-
|
127
|
-
File.expects(:open).
|
128
|
-
with("foo.csv","w").yields(file).returns(file).at_least_once
|
129
|
-
|
130
|
-
file.expects(:<<).
|
131
|
-
with("results").returns(file).at_least_once
|
132
|
-
|
133
|
-
@report = Report.new
|
134
|
-
assert @report.write("foo.csv", "results")
|
135
|
-
end
|
136
|
-
|
137
|
-
def test_append_to_file
|
138
|
-
return unless Object.const_defined? :Mocha
|
139
|
-
file = mock("file")
|
140
|
-
|
141
|
-
File.expects(:open).
|
142
|
-
with("foo.csv","a").yields(file).returns(file).at_least_once
|
143
|
-
|
144
|
-
file.expects(:<<).
|
145
|
-
with("results").returns(file).at_least_once
|
146
|
-
|
147
|
-
@report = Report.new
|
148
|
-
assert @report.append("foo.csv", "results")
|
149
|
-
end
|
150
|
-
|
151
|
-
def test_load_csv
|
152
|
-
expected = [%w[a b c],['d', nil, 'e']].to_table(%w[col1 col2 col3])
|
153
|
-
|
154
|
-
@report = Report.new
|
155
|
-
table = @report.load_csv("test/samples/data.csv")
|
156
|
-
|
157
|
-
assert_equal expected, table
|
158
|
-
end
|
159
|
-
|
160
|
-
def test_load_csv_as_array
|
161
|
-
expected = [%w[a b c],['d', nil, 'e']]
|
162
|
-
|
163
|
-
@report = Report.new
|
164
|
-
array = @report.load_csv("test/samples/data.csv", :as => :array)
|
165
|
-
|
166
|
-
assert_equal expected, array
|
167
|
-
end
|
168
|
-
|
169
|
-
def test_renders_with
|
170
|
-
klass = MyReport.dup
|
171
|
-
klass.renders_with Ruport::Renderer::Table
|
172
|
-
klass.send(:generate) { [[1,2,3],[4,5,6]].to_table(%w[a b c]) }
|
173
|
-
a = klass.new(:csv)
|
174
|
-
assert_equal "a,b,c\n1,2,3\n4,5,6\n", a.run
|
175
|
-
|
176
|
-
klass.renders_with Ruport::Renderer::Table, :show_table_headers => false
|
177
|
-
a = klass.new(:csv)
|
178
|
-
assert_equal "1,2,3\n4,5,6\n", a.run
|
179
|
-
assert_equal "a,b,c\n1,2,3\n4,5,6\n", a.run(:show_table_headers => true)
|
180
|
-
|
181
|
-
|
182
|
-
end
|
183
|
-
|
184
|
-
def test_renders_as_table
|
185
|
-
klass = MyReport.dup
|
186
|
-
klass.renders_as_table
|
187
|
-
klass.send(:generate) { [[1,2,3],[4,5,6]].to_table(%w[a b c]) }
|
188
|
-
a = klass.new(:csv)
|
189
|
-
assert_equal "a,b,c\n1,2,3\n4,5,6\n", a.run
|
190
|
-
end
|
191
|
-
|
192
|
-
def test_renders_as_row
|
193
|
-
klass = MyReport.dup
|
194
|
-
klass.renders_as_row
|
195
|
-
klass.send(:generate) { [[1,2,3]].to_table(%w[a b c])[0] }
|
196
|
-
a = klass.new(:csv)
|
197
|
-
assert_equal "1,2,3\n", a.run
|
198
|
-
end
|
199
|
-
|
200
|
-
def test_renders_as_group
|
201
|
-
klass = MyReport.dup
|
202
|
-
klass.renders_as_group
|
203
|
-
klass.send(:generate) { [[1,2,3]].to_table(%w[a b c]).to_group("foo") }
|
204
|
-
a = klass.new(:csv)
|
205
|
-
assert_equal "foo\n\na,b,c\n1,2,3\n", a.run
|
206
|
-
end
|
207
|
-
|
208
|
-
def test_renders_as_grouping
|
209
|
-
klass = MyReport.dup
|
210
|
-
klass.renders_as_grouping
|
211
|
-
klass.send(:generate) {
|
212
|
-
Grouping([[1,2,3],[4,5,6]].to_table(%w[a b c]),:by => "a")
|
213
|
-
}
|
214
|
-
a = klass.new(:csv)
|
215
|
-
assert_equal "1\n\nb,c\n2,3\n\n4\n\nb,c\n5,6\n\n", a.run
|
216
|
-
end
|
217
|
-
|
218
|
-
end
|
data/test/samples/foo.rtxt
DELETED