report_engine 1.2.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (56) hide show
  1. data/.document +5 -0
  2. data/LICENSE +20 -0
  3. data/README.rdoc +17 -0
  4. data/Rakefile +53 -0
  5. data/VERSION +1 -0
  6. data/images/empty_heart.jpg +0 -0
  7. data/images/folder_open.png +0 -0
  8. data/images/full_heart.jpg +0 -0
  9. data/images/half_heart.jpg +0 -0
  10. data/lib/report_engine.rb +50 -0
  11. data/lib/report_engine/canvas_factory.rb +13 -0
  12. data/lib/report_engine/container.rb +4 -0
  13. data/lib/report_engine/footer.rb +13 -0
  14. data/lib/report_engine/google_chart.rb +59 -0
  15. data/lib/report_engine/horizontal_chart.rb +43 -0
  16. data/lib/report_engine/html/container.rb +9 -0
  17. data/lib/report_engine/html/google_chart.rb +9 -0
  18. data/lib/report_engine/html/list.rb +18 -0
  19. data/lib/report_engine/html/question_stats.rb +29 -0
  20. data/lib/report_engine/html/section.rb +16 -0
  21. data/lib/report_engine/html/sub_table.rb +14 -0
  22. data/lib/report_engine/html/table.rb +77 -0
  23. data/lib/report_engine/html/text.rb +15 -0
  24. data/lib/report_engine/html_canvas.rb +23 -0
  25. data/lib/report_engine/list.rb +22 -0
  26. data/lib/report_engine/page.rb +14 -0
  27. data/lib/report_engine/pdf/container.rb +9 -0
  28. data/lib/report_engine/pdf/google_chart.rb +9 -0
  29. data/lib/report_engine/pdf/list.rb +9 -0
  30. data/lib/report_engine/pdf/question_stats.rb +27 -0
  31. data/lib/report_engine/pdf/section.rb +17 -0
  32. data/lib/report_engine/pdf/sub_table.rb +6 -0
  33. data/lib/report_engine/pdf/table.rb +72 -0
  34. data/lib/report_engine/pdf/text.rb +11 -0
  35. data/lib/report_engine/pdf_canvas.rb +38 -0
  36. data/lib/report_engine/question_stats.rb +12 -0
  37. data/lib/report_engine/report.rb +19 -0
  38. data/lib/report_engine/sub_table.rb +10 -0
  39. data/lib/report_engine/table.rb +35 -0
  40. data/lib/report_engine/text.rb +13 -0
  41. data/report_engine.gemspec +90 -0
  42. data/test/category_test.rb +65 -0
  43. data/test/chart_test.rb +8 -0
  44. data/test/forebyg_test.rb +81 -0
  45. data/test/helper.rb +11 -0
  46. data/test/horizontal_chart_test.rb +5 -0
  47. data/test/pdftest.rb +15 -0
  48. data/test/repartition_test.rb +32 -0
  49. data/test/test_chart.rb +22 -0
  50. data/test/test_correlation_report.rb +65 -0
  51. data/test/test_feedback.rb +48 -0
  52. data/test/test_question_stats.rb +35 -0
  53. data/test/test_report.rb +82 -0
  54. data/test/test_report_engine.rb +8 -0
  55. data/test/test_table.rb +54 -0
  56. metadata +110 -0
@@ -0,0 +1,65 @@
1
+ table_1 = ReportEngine::Table.new(
2
+ :x_headers => ['0-20', '20-40', '40-60', '60-80', '80-100'],
3
+ :y_headers => ['Antal', '%', 'cumul%'],
4
+ :data =>
5
+ [
6
+ [ 0, 2, 0, 0, 3 ],
7
+ [ 0, 40, 0, 0, 60 ],
8
+ [ 0, 40, 40, 40, 100 ]
9
+ ]
10
+ )
11
+
12
+ table_2 = ReportEngine::Table.new(
13
+ :x_headers => ['0-20', '20-40', '40-60', '60-80', '80-100'],
14
+ :y_headers => ['Antal', '%', 'cumul%'],
15
+ :data =>
16
+ [
17
+ [ 1, 0, 1, 2, 2 ],
18
+ [ 16, 0, 16, 33, 33 ],
19
+ [ 16, 16, 33, 66, 100 ]
20
+ ]
21
+ )
22
+
23
+ table_3 = ReportEngine::Table.new(
24
+ :x_headers => ['0-20', '20-40', '40-60', '60-80', '80-100'],
25
+ :y_headers => ['Antal', '%', 'cumul%'],
26
+ :data =>
27
+ [
28
+ [ 0, 2, 0, 0, 3 ],
29
+ [ 0, 40, 0, 0, 60 ],
30
+ [ 0, 40, 40, 40, 100 ]
31
+ ]
32
+ )
33
+
34
+
35
+
36
+ chart_1 = ReportEngine::GoogleChart.new(
37
+ :x_label => "Procentil",
38
+ :y_label => "%",
39
+ :scale_labels => ['0-20', '20-40', '40-60', '60-80', '80-100'],
40
+ :data => [ 0, 5, 3, 1, 4 ]
41
+ )
42
+
43
+ chart_2 = ReportEngine::GoogleChart.new(
44
+ :x_label => "Procentil",
45
+ :y_label => "%",
46
+ :scale_labels => ['0-20', '20-40', '40-60', '60-80', '80-100'],
47
+ :data => [ 2, 4, 1, 4, 4 ]
48
+ )
49
+
50
+ chart_3 = ReportEngine::GoogleChart.new(
51
+ :x_label => "Procentil",
52
+ :y_label => "%",
53
+ :scale_labels => ['0-20', '20-40', '40-60', '60-80', '80-100'],
54
+ :data => [ 3, 1, 1, 2, 2 ]
55
+ )
56
+
57
+ data_set_1 = ReportEngine::ForebygReport::TopicDatasetLine.new(:title => "General", :average => 66.8, :total => 5, :chart => chart_1, :table => table_1)
58
+ data_set_2 = ReportEngine::ForebygReport::TopicDatasetLine.new(:title => "Specific", :average => 66.8, :total => 5, :chart => chart_2, :table => table_2)
59
+
60
+ data_set_3 = ReportEngine::ForebygReport::TopicDatasetLine.new(:title => "General", :average => 66.8, :total => 5, :chart => chart_3, :table => table_3)
61
+ data_set_4 = ReportEngine::ForebygReport::TopicDatasetLine.new(:title => "Specific", :average => 66.8, :total => 5, :chart => chart_1, :table => table_1)
62
+
63
+ topic_1 = ReportEngine::ForebygReport::TopicLine.new(:title => "Rygevaner - motivation", :dataset_lines => [data_set_1, data_set_2])
64
+ topic_2 = ReportEngine::ForebygReport::TopicLine.new(:title => "Rygevaner", :dataset_lines => [data_set_3, data_set_4])
65
+ ReportEngine::ForebygReport::CategoryPage.new(:title => "Rygning", :topics => [topic_1, topic_2]).render_to_pdf_file("testing.pdf")
@@ -0,0 +1,8 @@
1
+ chart = ReportEngine::GoogleChart.new(
2
+ :x_label => "Procentil",
3
+ :y_label => "%",
4
+ :scale_labels => ['0-20', '20-40', '40-60', '60-80', '80-100'],
5
+ :data => [ 0, 5, 3, 1, 4 ]
6
+ )
7
+
8
+ puts chart.generate_url
@@ -0,0 +1,81 @@
1
+ table_1 = ReportEngine::Table.new(
2
+ :x_headers => ['0-20', '20-40', '40-60', '60-80', '80-100'],
3
+ :y_headers => ['Antal', '%', 'cumul%'],
4
+ :data =>
5
+ [
6
+ [ 0, 2, 0, 0, 3 ],
7
+ [ 0, 40, 0, 0, 60 ],
8
+ [ 0, 40, 40, 40, 100 ]
9
+ ]
10
+ )
11
+
12
+ table_2 = ReportEngine::Table.new(
13
+ :x_headers => ['0-20', '20-40', '40-60', '60-80', '80-100'],
14
+ :y_headers => ['Antal', '%', 'cumul%'],
15
+ :data =>
16
+ [
17
+ [ 1, 0, 1, 2, 2 ],
18
+ [ 16, 0, 16, 33, 33 ],
19
+ [ 16, 16, 33, 66, 100 ]
20
+ ]
21
+ )
22
+
23
+ table_3 = ReportEngine::Table.new(
24
+ :x_headers => ['0-20', '20-40', '40-60', '60-80', '80-100'],
25
+ :y_headers => ['Antal', '%', 'cumul%'],
26
+ :data =>
27
+ [
28
+ [ 0, 2, 0, 0, 3 ],
29
+ [ 0, 40, 0, 0, 60 ],
30
+ [ 0, 40, 40, 40, 100 ]
31
+ ]
32
+ )
33
+
34
+
35
+
36
+ chart_1 = ReportEngine::GoogleChart.new(
37
+ :x_label => "Procentil",
38
+ :y_label => "%",
39
+ :scale_labels => ['0-20', '20-40', '40-60', '60-80', '80-100'],
40
+ :data => [ 0, 5, 3, 1, 4 ]
41
+ )
42
+
43
+ chart_2 = ReportEngine::GoogleChart.new(
44
+ :x_label => "Procentil",
45
+ :y_label => "%",
46
+ :scale_labels => ['0-20', '20-40', '40-60', '60-80', '80-100'],
47
+ :data => [ 2, 4, 1, 4, 4 ]
48
+ )
49
+
50
+ chart_3 = ReportEngine::GoogleChart.new(
51
+ :x_label => "Procentil",
52
+ :y_label => "%",
53
+ :scale_labels => ['0-20', '20-40', '40-60', '60-80', '80-100'],
54
+ :data => [ 3, 1, 1, 2, 2 ]
55
+ )
56
+
57
+ data_set_1 = ReportEngine::ForebygReport::TopicDatasetLine.new(:title => "General", :average => 66.8, :total => 5, :chart => chart_1, :table => table_1)
58
+ data_set_2 = ReportEngine::ForebygReport::TopicDatasetLine.new(:title => "Specific", :average => 66.8, :total => 5, :chart => chart_2, :table => table_2)
59
+
60
+ data_set_3 = ReportEngine::ForebygReport::TopicDatasetLine.new(:title => "General", :average => 66.8, :total => 5, :chart => chart_3, :table => table_3)
61
+ data_set_4 = ReportEngine::ForebygReport::TopicDatasetLine.new(:title => "Specific", :average => 66.8, :total => 5, :chart => chart_1, :table => table_1)
62
+
63
+ topic_1 = ReportEngine::ForebygReport::TopicLine.new(:title => "Rygevaner - motivation", :dataset_lines => [data_set_1, data_set_2])
64
+ topic_2 = ReportEngine::ForebygReport::TopicLine.new(:title => "Rygevaner", :dataset_lines => [data_set_3, data_set_4])
65
+ page_2 = ReportEngine::ForebygReport::CategoryPage.new(:title => "Rygning", :topics => [topic_1, topic_2])
66
+
67
+
68
+
69
+ c_data_set_1 = ReportEngine::ForebygReport::CategoryDatasetLine.new(:title => "General", :total => 5, :average => 66.8, :score => 3)
70
+ c_data_set_2 = ReportEngine::ForebygReport::CategoryDatasetLine.new(:title => "Specific", :total => 5, :average => 66.8, :score => 3)
71
+
72
+ category = ReportEngine::ForebygReport::CategoryLine.new(:title => "Rygning", :data_sets => [c_data_set_1, c_data_set_2], :image => '/Users/Bastien/WebApplications/Novalis/teneo/public/images/forebyg/category1.jpg')
73
+
74
+ page_1 = ReportEngine::ForebygReport::SummaryPage.new(:categories => [category])
75
+
76
+ ReportEngine::ForebygReport::Report.new(:pages => [page_1, page_2]).render_to_pdf_file("testing.pdf")
77
+
78
+
79
+
80
+
81
+
data/test/helper.rb ADDED
@@ -0,0 +1,11 @@
1
+ require 'rubygems'
2
+ require 'test/unit'
3
+ require 'shoulda'
4
+ require 'pdf/inspector'
5
+
6
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
7
+ $LOAD_PATH.unshift(File.dirname(__FILE__))
8
+ require 'report_engine'
9
+
10
+ class Test::Unit::TestCase
11
+ end
@@ -0,0 +1,5 @@
1
+ puts ReportEngine::HorizontalChart.new({
2
+ :labels => ["Nykredit", "PRIV_PRIV-NORD", "PRIV_PRIV-NORD_AALBORG-PRIVAT"],
3
+ :values => [39.5, 44.9, 43.5],
4
+ :reference => 52
5
+ }).generate_url
data/test/pdftest.rb ADDED
@@ -0,0 +1,15 @@
1
+ table = ReportEngine::Table.new(
2
+ :x_label => "X label",
3
+ :y_label => "Y label",
4
+ :x_headers => ['1-2', '2-3', '3-4', '4-5'],
5
+ :y_headers => ['1-2', '2-3', '3-4', '4-5'],
6
+ :data =>
7
+ [
8
+ [ 0, 5, 3, 1 ],
9
+ [ 0, 2, 6, 0 ],
10
+ [ 1, 5, 2, 3 ],
11
+ [ 4, 2, 4, 6 ]
12
+ ]
13
+ )
14
+
15
+ ReportEngine::CrosstabReport.new(:title => "Testing", :table => table).render_to_pdf_file("testing.pdf")
@@ -0,0 +1,32 @@
1
+ chart_1 = ReportEngine::RepartitionReport::RepartitionStats.new(
2
+ :label => "Solrød",
3
+ :total_responders => 185,
4
+ :counts => [12, 22, 37, 66, 49],
5
+ :average => 65.9,
6
+ :deviation => 32.3,
7
+ :percentages => [6.5, 11.8, 19.9, 35.5, 26.3],
8
+ :labels => ["Passer slet ikke", "Passer ikke", "Passer hverken/eller", "Passer", "Passer fuldstændigt"]
9
+ )
10
+
11
+ chart_2 = ReportEngine::RepartitionReport::RepartitionStats.new(
12
+ :total_responders => 200,
13
+ :counts => [25, 36, 61, 46, 17],
14
+ :average => 49.2,
15
+ :deviation => 12,
16
+ :percentages => [13.5, 19.5, 33, 24.9, 9.2],
17
+ :labels => ["Passer slet ikke", "Passer ikke", "Passer hverken/eller", "Passer", "Passer fuldstændigt"]
18
+ )
19
+
20
+ question_line_1 = ReportEngine::RepartitionReport::QuestionStats.new(
21
+ :text => "Jeg ved både hvad og hvor meget jeg dagligt skal spise for at holde min vægt",
22
+ :charts => [chart_1, chart_2]
23
+ )
24
+
25
+ question_line_2 = ReportEngine::RepartitionReport::QuestionStats.new(
26
+ :text => "Jeg ryger flere gange dagligt",
27
+ :charts => [chart_1, chart_2]
28
+ )
29
+
30
+ section_1 = ReportEngine::RepartitionReport::Section.new(:title => "Rygning", :questions_stats => [question_line_1, question_line_2])
31
+
32
+ ReportEngine::RepartitionReport::Report.new(:title => "Testing", :pages => [section_1]).render_to_pdf_file("testing.pdf")
@@ -0,0 +1,22 @@
1
+ require 'helper'
2
+
3
+ class TestChart < Test::Unit::TestCase
4
+ should "generate grouped chart" do
5
+ gc = ReportEngine::Html::GoogleChart.new(nil,
6
+ :data => [[1, 2, 3],[2, 3, 1]],
7
+ :scale_labels => ["a", "b", "c"],
8
+ :x_label=>"letter",
9
+ :y_label => "number")
10
+ assert gc.render.include?("cht=bvg")
11
+ end
12
+
13
+ should "generate single chart" do
14
+ gc = ReportEngine::Html::GoogleChart.new(nil,
15
+ :data => [[1, 2, 3],[2, 3, 1]],
16
+ :scale_labels => ["a", "b", "c"],
17
+ :x_label=>"letter",
18
+ :y_label => "number",
19
+ :grouped => false)
20
+ assert gc.render.include?("cht=bvs")
21
+ end
22
+ end
@@ -0,0 +1,65 @@
1
+ require File.dirname(__FILE__) + '/helper'
2
+ # ruby -I../pdf-inspector/lib test/test_repartition_report.rb
3
+
4
+ class TestCorrelationReport < Test::Unit::TestCase
5
+ def setup
6
+ sub_tab_1 = {
7
+ :type => :sub_table,
8
+ :x_headers => ['Data Set 1', '', '', '', '', ''],
9
+ :data => [
10
+ ['count', 12, 22, 37, 66, 49],
11
+ ['%', 6.5, 11.8, 19.9, 35.5, 26.3]
12
+ ]
13
+ }
14
+
15
+ sub_tab_2 = {
16
+ :type => :sub_table,
17
+ :x_headers => ['Data Set 2', '', '', '', '', ''],
18
+ :data => [
19
+ ['count', 25, 36, 61, 46, 17],
20
+ ['%', 13.5, 19.5, 33, 24.9, 9.2]
21
+ ]
22
+ }
23
+
24
+ table = {
25
+ :type => :table,
26
+ :x_headers => ["", "Passer slet ikke", "Passer ikke", "Passer hverken/eller", "Passer", "Passer fuldstændigt"],
27
+ :data => [sub_tab_1, sub_tab_2]
28
+ }
29
+
30
+ section = {
31
+ :type => :section,
32
+ :title => "2. Feelings",
33
+ :elements => [table]
34
+ }
35
+
36
+ list = {
37
+ :type => :list,
38
+ :elements => [section]
39
+ }
40
+
41
+ title = {
42
+ :type => :text,
43
+ :text => 'Title',
44
+ :size => 20,
45
+ :padding => 10
46
+ }
47
+
48
+ @container = {
49
+ :type => :container,
50
+ :elements => [title, list]
51
+ }
52
+ @report = ReportEngine::Report.new(@container)
53
+ end
54
+ should "generate a html div" do
55
+ html = @report.render :html
56
+ File.open('test.html', 'w') do |f| f << html end
57
+ assert_equal "0be4603380ded46c9a6e19ac9abbbbee", Digest::MD5.hexdigest(html)
58
+ end
59
+ should "generate a pdf" do
60
+ pdf = @report.render :pdf
61
+ File.open('test.pdf', 'w') do |f| f << pdf end
62
+ output = PDF::Inspector::Text.analyze(pdf)
63
+ assert_equal '8fedd870c8918ab2574a0358bbc85f7d', Digest::MD5.hexdigest(output.strings.join(""))
64
+ end
65
+ end
@@ -0,0 +1,48 @@
1
+ require File.dirname(__FILE__) + '/helper'
2
+
3
+ class TestFeedback < Test::Unit::TestCase
4
+ should "generate a pdf with the feedbacks" do
5
+ sub_table_1 = {
6
+ :type => :sub_table,
7
+ :x_headers => ['Positiv tilbagemelding', '', '', ''],
8
+ :data => [
9
+ [ 'Good', "Antal: 1 0.5%", "Antal: 1 0.5%", '0' ],
10
+ [ 'Motionsvaner', "Antal: 58 30.5%", "Antal: 29 35.5%", '29' ]
11
+ ]
12
+ }
13
+
14
+ sub_table_2 = {
15
+ :type => :sub_table,
16
+ :x_headers => ['Neutral tilbagemelding', '', '', ''],
17
+ :data => [
18
+ [ 'Kostvaner', "Antal: 153 80%", "Antal: 153 80%", '0' ]
19
+ ]
20
+ }
21
+
22
+ table = {
23
+ :type => :table,
24
+ :x_headers => ['Tilbagemeldinger', 'Fra 01/05-2010 til 31/05-2010', 'Fra 01/05-2010 til 31/05-2010', 'Difference'],
25
+ :data =>
26
+ [
27
+ sub_table_1, sub_table_2
28
+ ],
29
+ :row_colors => ["ffffff", "c0c0c0", "ffffff", "ffffff", "c0c0c0", "ffffff"]
30
+ }
31
+
32
+ title = {
33
+ :type => :text,
34
+ :text => 'Testing',
35
+ :size => 20,
36
+ :padding => 10
37
+ }
38
+
39
+ container = {
40
+ :type => :container,
41
+ :elements => [title, table]
42
+ }
43
+
44
+ pdf = ReportEngine::Report.new(container).render :pdf
45
+ output = PDF::Inspector::Text.analyze(pdf)
46
+ assert_equal 'f77474c9f0183cb5d5e449ac61b33b35', Digest::MD5.hexdigest(output.strings.join(""))
47
+ end
48
+ end
@@ -0,0 +1,35 @@
1
+ require 'helper'
2
+
3
+ class TestQuestionStats < Test::Unit::TestCase
4
+ should "generate a html div with question stats info" do
5
+
6
+ chart_1 = {
7
+ :type => :google_chart,
8
+ :data => [[12, 22, 37, 66, 49], [25, 36, 61, 46, 17]],
9
+ :y_label => "count",
10
+ :x_label => "values",
11
+ :scale_labels => ["Passer slet ikke", "Passer ikke", "Passer hverken/eller", "Passer", "Passer fuldstændigt"],
12
+ :show_marker => true
13
+ }
14
+
15
+ chart_2 = {
16
+ :type => :google_chart,
17
+ :data => [[12, 22, 37, 66, 49], [25, 36, 61, 46, 17]],
18
+ :y_label => "count",
19
+ :x_label => "values",
20
+ :scale_labels => ["Passer slet ikke", "Passer ikke", "Passer hverken/eller", "Passer", "Passer fuldstændigt"],
21
+ :show_marker => true
22
+ }
23
+
24
+ qs = {
25
+ :type => :question_stats,
26
+ :text => "How are you feeling today?",
27
+ :index => "2.3",
28
+ :id => 48,
29
+ :charts => [chart_1, chart_2]
30
+ }
31
+
32
+
33
+ # puts qs.render_html
34
+ end
35
+ end
@@ -0,0 +1,82 @@
1
+ require File.dirname(__FILE__) + '/helper'
2
+ # ruby -I../pdf-inspector/lib test/test_repartition_report.rb
3
+
4
+ class TestReport < Test::Unit::TestCase
5
+ def setup
6
+ google_chart = {
7
+ :type => :google_chart,
8
+ :data => [[12, 22, 37, 66, 49], [25, 36, 61, 46, 17]],
9
+ :y_label => "count",
10
+ :x_label => "values",
11
+ :scale_labels => ["Passer slet ikke", "Passer ikke", "Passer hverken/eller", "Passer", "Passer fuldstændigt"],
12
+ :show_marker => true
13
+ }
14
+
15
+ sub_tab_1 = {
16
+ :type => :sub_table,
17
+ :x_headers => ['Data Set 1', '', '', '', '', ''],
18
+ :data => [
19
+ ['count', 12, 22, 37, 66, 49],
20
+ ['%', 6.5, 11.8, 19.9, 35.5, 26.3]
21
+ ]
22
+ }
23
+
24
+ sub_tab_2 = {
25
+ :type => :sub_table,
26
+ :x_headers => ['Data Set 2', '', '', '', '', ''],
27
+ :data => [
28
+ ['count', 25, 36, 61, 46, 17],
29
+ ['%', 13.5, 19.5, 33, 24.9, 9.2]
30
+ ]
31
+ }
32
+
33
+ table = {
34
+ :type => :table,
35
+ :x_axis => "X axis: ",
36
+ :y_axis => "Y axis: ",
37
+ :x_headers => ["", "Passer slet ikke", "Passer ikke", "Passer hverken/eller", "Passer", "Passer fuldstændigt"],
38
+ :data => [sub_tab_1, sub_tab_2]
39
+ }
40
+
41
+ question_1 = {
42
+ :type => :question_stats,
43
+ :text => "How are you feeling today?",
44
+ :index => "2.3",
45
+ :id => 48,
46
+ :chart => google_chart,
47
+ :details => table #[chart_1, chart_2]
48
+ }
49
+
50
+ question_2 = {
51
+ :type => :question_stats,
52
+ :text => "Are you concerned about your weight?",
53
+ :index => "2.4",
54
+ :id => 48,
55
+ :chart => google_chart,
56
+ :details => table #[chart_1, chart_2]
57
+ }
58
+
59
+ section = {
60
+ :type => :section,
61
+ :title => "2. Feelings",
62
+ :elements => [question_1, question_2]
63
+ }
64
+
65
+ @list = {
66
+ :type => :list,
67
+ :elements => [section]
68
+ }
69
+ @report = ReportEngine::Report.new(@list)
70
+ end
71
+ should "generate a html div" do
72
+ html = @report.render :html
73
+ File.open('test.html', 'w') do |f| f << html end
74
+ assert_equal "70966f55b60f6123a4d506f45830fdaa", Digest::MD5.hexdigest(html)
75
+ end
76
+ should "generate a pdf" do
77
+ pdf = @report.render :pdf
78
+ File.open('test.pdf', 'w') do |f| f << pdf end
79
+ output = PDF::Inspector::Text.analyze(pdf)
80
+ assert_equal 'ed21d00bebda91542a30a395daa1c60c', Digest::MD5.hexdigest(output.strings.join(""))
81
+ end
82
+ end