ruport 0.10.0 → 0.11.0

Sign up to get free protection for your applications and to get access to all the features.
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
- ---