report_engine 1.2.4
Sign up to get free protection for your applications and to get access to all the features.
- data/.document +5 -0
- data/LICENSE +20 -0
- data/README.rdoc +17 -0
- data/Rakefile +53 -0
- data/VERSION +1 -0
- data/images/empty_heart.jpg +0 -0
- data/images/folder_open.png +0 -0
- data/images/full_heart.jpg +0 -0
- data/images/half_heart.jpg +0 -0
- data/lib/report_engine.rb +50 -0
- data/lib/report_engine/canvas_factory.rb +13 -0
- data/lib/report_engine/container.rb +4 -0
- data/lib/report_engine/footer.rb +13 -0
- data/lib/report_engine/google_chart.rb +59 -0
- data/lib/report_engine/horizontal_chart.rb +43 -0
- data/lib/report_engine/html/container.rb +9 -0
- data/lib/report_engine/html/google_chart.rb +9 -0
- data/lib/report_engine/html/list.rb +18 -0
- data/lib/report_engine/html/question_stats.rb +29 -0
- data/lib/report_engine/html/section.rb +16 -0
- data/lib/report_engine/html/sub_table.rb +14 -0
- data/lib/report_engine/html/table.rb +77 -0
- data/lib/report_engine/html/text.rb +15 -0
- data/lib/report_engine/html_canvas.rb +23 -0
- data/lib/report_engine/list.rb +22 -0
- data/lib/report_engine/page.rb +14 -0
- data/lib/report_engine/pdf/container.rb +9 -0
- data/lib/report_engine/pdf/google_chart.rb +9 -0
- data/lib/report_engine/pdf/list.rb +9 -0
- data/lib/report_engine/pdf/question_stats.rb +27 -0
- data/lib/report_engine/pdf/section.rb +17 -0
- data/lib/report_engine/pdf/sub_table.rb +6 -0
- data/lib/report_engine/pdf/table.rb +72 -0
- data/lib/report_engine/pdf/text.rb +11 -0
- data/lib/report_engine/pdf_canvas.rb +38 -0
- data/lib/report_engine/question_stats.rb +12 -0
- data/lib/report_engine/report.rb +19 -0
- data/lib/report_engine/sub_table.rb +10 -0
- data/lib/report_engine/table.rb +35 -0
- data/lib/report_engine/text.rb +13 -0
- data/report_engine.gemspec +90 -0
- data/test/category_test.rb +65 -0
- data/test/chart_test.rb +8 -0
- data/test/forebyg_test.rb +81 -0
- data/test/helper.rb +11 -0
- data/test/horizontal_chart_test.rb +5 -0
- data/test/pdftest.rb +15 -0
- data/test/repartition_test.rb +32 -0
- data/test/test_chart.rb +22 -0
- data/test/test_correlation_report.rb +65 -0
- data/test/test_feedback.rb +48 -0
- data/test/test_question_stats.rb +35 -0
- data/test/test_report.rb +82 -0
- data/test/test_report_engine.rb +8 -0
- data/test/test_table.rb +54 -0
- 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")
|
data/test/chart_test.rb
ADDED
@@ -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
|
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")
|
data/test/test_chart.rb
ADDED
@@ -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
|
data/test/test_report.rb
ADDED
@@ -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
|