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.
Files changed (59) hide show
  1. data/LICENSE +55 -9
  2. data/Rakefile +3 -5
  3. data/examples/line_plotter.rb +3 -0
  4. data/examples/pdf_complex_report.rb +0 -1
  5. data/examples/pdf_report_with_common_base.rb +72 -0
  6. data/examples/pdf_styles.rb +16 -0
  7. data/examples/simple_pdf_lines.rb +0 -1
  8. data/lib/ruport.rb +5 -66
  9. data/lib/ruport/acts_as_reportable.rb +122 -51
  10. data/lib/ruport/data/grouping.rb +30 -13
  11. data/lib/ruport/data/record.rb +26 -25
  12. data/lib/ruport/data/table.rb +91 -34
  13. data/lib/ruport/formatter.rb +86 -11
  14. data/lib/ruport/formatter/csv.rb +29 -2
  15. data/lib/ruport/formatter/html.rb +23 -1
  16. data/lib/ruport/formatter/pdf.rb +123 -32
  17. data/lib/ruport/formatter/text.rb +62 -6
  18. data/lib/ruport/query.rb +75 -39
  19. data/lib/ruport/renderer.rb +250 -35
  20. data/lib/ruport/renderer/grouping.rb +2 -2
  21. data/test/html_formatter_test.rb +4 -1
  22. data/test/pdf_formatter_test.rb +30 -7
  23. data/test/query_test.rb +12 -0
  24. data/test/renderer_test.rb +33 -2
  25. data/test/table_test.rb +8 -2
  26. data/test/text_formatter_test.rb +11 -1
  27. metadata +53 -107
  28. data/bin/rope +0 -12
  29. data/examples/rope_examples/itunes/README +0 -12
  30. data/examples/rope_examples/itunes/Rakefile +0 -39
  31. data/examples/rope_examples/itunes/config/environment.rb +0 -4
  32. data/examples/rope_examples/itunes/data/mix.txt +0 -1
  33. data/examples/rope_examples/itunes/lib/helpers.rb +0 -0
  34. data/examples/rope_examples/itunes/lib/init.rb +0 -39
  35. data/examples/rope_examples/itunes/lib/reports.rb +0 -1
  36. data/examples/rope_examples/itunes/lib/reports/playlist.rb +0 -17
  37. data/examples/rope_examples/itunes/log/ruport.log +0 -1
  38. data/examples/rope_examples/itunes/test/test_playlist.rb +0 -8
  39. data/examples/rope_examples/itunes/util/build +0 -96
  40. data/examples/rope_examples/itunes/util/sql_exec +0 -5
  41. data/examples/rope_examples/sales_report/README +0 -4
  42. data/examples/rope_examples/sales_report/Rakefile +0 -39
  43. data/examples/rope_examples/sales_report/config/environment.rb +0 -4
  44. data/examples/rope_examples/sales_report/lib/helpers.rb +0 -0
  45. data/examples/rope_examples/sales_report/lib/init.rb +0 -39
  46. data/examples/rope_examples/sales_report/lib/reports.rb +0 -1
  47. data/examples/rope_examples/sales_report/lib/reports/sales.rb +0 -132
  48. data/examples/rope_examples/sales_report/log/ruport.log +0 -1
  49. data/examples/rope_examples/sales_report/output/books.pdf +0 -170
  50. data/examples/rope_examples/sales_report/output/books.txt +0 -11
  51. data/examples/rope_examples/sales_report/test/test_sales.rb +0 -8
  52. data/examples/rope_examples/sales_report/util/build +0 -96
  53. data/examples/rope_examples/sales_report/util/sql_exec +0 -5
  54. data/examples/sample.rb +0 -16
  55. data/lib/ruport/generator.rb +0 -294
  56. data/lib/ruport/report.rb +0 -262
  57. data/setup.rb +0 -1585
  58. data/test/report_test.rb +0 -218
  59. 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
@@ -1,3 +0,0 @@
1
- <%= @results %>
2
- <%= 2 + 2 %>
3
- ---