thinreports 0.8.2 → 0.9.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.
- checksums.yaml +4 -4
- data/.github/CONTRIBUTING.md +2 -0
- data/.travis.yml +3 -3
- data/CHANGELOG.md +98 -1
- data/README.md +0 -9
- data/Rakefile +1 -2
- data/examples/character_spacing/character_spacing.tlf +293 -1
- data/examples/dynamic_image/dynamic_image.tlf +661 -1
- data/examples/dynamic_style/dynamic_style.rb +4 -4
- data/examples/dynamic_style/dynamic_style.tlf +1835 -1
- data/examples/dynamic_style/dynamic_style_in_list.tlf +344 -1
- data/examples/eudc/eudc.tlf +180 -1
- data/examples/hidden_shapes/hidden_shapes.tlf +449 -1
- data/examples/list_events/list_events.rb +1 -28
- data/examples/list_events/list_events.tlf +361 -0
- data/examples/list_manual_generation/list_manual_generation.tlf +132 -1
- data/examples/list_page_number/list_page_number.tlf +254 -1
- data/examples/page_number/page_number.tlf +215 -1
- data/examples/palleted_png/palleted_png.rb +2 -0
- data/examples/palleted_png/palleted_png.tlf +47 -1
- data/examples/password_setting/password_setting.tlf +45 -1
- data/examples/report_callbacks/report_callbacks.rb +1 -18
- data/examples/report_callbacks/report_callbacks.tlf +147 -1
- data/examples/single_line_tblock/single_line_tblock.tlf +170 -1
- data/examples/tblock_overflow/tblock_overflow.tlf +538 -1
- data/examples/tblock_styles/font_size.tlf +383 -1
- data/examples/tblock_styles/tblock_styles.tlf +889 -1
- data/examples/text_align/text_align.tlf +241 -1
- data/examples/typeB_page_size/B4_ISO.tlf +45 -1
- data/examples/typeB_page_size/B4_JIS.tlf +45 -1
- data/examples/word_wrap/word_wrap.tlf +297 -1
- data/lib/thinreports.rb +0 -1
- data/lib/thinreports/config.rb +3 -0
- data/lib/thinreports/core/errors.rb +0 -3
- data/lib/thinreports/core/format/base.rb +4 -4
- data/lib/thinreports/core/shape.rb +1 -9
- data/lib/thinreports/core/shape/basic.rb +3 -3
- data/lib/thinreports/core/shape/basic/block_format.rb +1 -1
- data/lib/thinreports/core/shape/basic/format.rb +2 -14
- data/lib/thinreports/core/shape/basic/internal.rb +2 -2
- data/lib/thinreports/core/shape/image_block.rb +3 -3
- data/lib/thinreports/core/shape/image_block/format.rb +0 -2
- data/lib/thinreports/core/shape/image_block/internal.rb +1 -1
- data/lib/thinreports/core/shape/list.rb +3 -7
- data/lib/thinreports/core/shape/list/format.rb +37 -24
- data/lib/thinreports/core/shape/list/manager.rb +1 -36
- data/lib/thinreports/core/shape/list/page.rb +0 -15
- data/lib/thinreports/core/shape/list/page_state.rb +1 -1
- data/lib/thinreports/core/shape/list/section_format.rb +14 -12
- data/lib/thinreports/core/shape/list/section_internal.rb +4 -7
- data/lib/thinreports/core/shape/manager/format.rb +0 -2
- data/lib/thinreports/core/shape/manager/internal.rb +1 -1
- data/lib/thinreports/core/shape/page_number.rb +1 -1
- data/lib/thinreports/core/shape/page_number/format.rb +9 -6
- data/lib/thinreports/core/shape/page_number/interface.rb +1 -1
- data/lib/thinreports/core/shape/page_number/internal.rb +2 -6
- data/lib/thinreports/core/shape/style/base.rb +11 -13
- data/lib/thinreports/core/shape/style/basic.rb +4 -4
- data/lib/thinreports/core/shape/style/graphic.rb +4 -10
- data/lib/thinreports/core/shape/style/text.rb +36 -69
- data/lib/thinreports/core/shape/text.rb +3 -3
- data/lib/thinreports/core/shape/text/format.rb +3 -13
- data/lib/thinreports/core/shape/text/internal.rb +2 -2
- data/lib/thinreports/core/shape/text_block.rb +3 -3
- data/lib/thinreports/core/shape/text_block/format.rb +9 -6
- data/lib/thinreports/core/shape/text_block/interface.rb +7 -7
- data/lib/thinreports/core/shape/text_block/internal.rb +1 -1
- data/lib/thinreports/generator/pdf.rb +0 -1
- data/lib/thinreports/generator/pdf/document.rb +2 -2
- data/lib/thinreports/generator/pdf/document/draw_shape.rb +25 -51
- data/lib/thinreports/generator/pdf/document/draw_template_items.rb +66 -0
- data/lib/thinreports/generator/pdf/document/font.rb +3 -8
- data/lib/thinreports/generator/pdf/document/graphics/attributes.rb +97 -77
- data/lib/thinreports/generator/pdf/document/graphics/basic.rb +18 -13
- data/lib/thinreports/generator/pdf/document/graphics/image.rb +17 -12
- data/lib/thinreports/generator/pdf/document/page.rb +1 -1
- data/lib/thinreports/generator/pdf/drawer/list.rb +5 -1
- data/lib/thinreports/generator/pdf/drawer/list_section.rb +1 -4
- data/lib/thinreports/generator/pdf/drawer/page.rb +9 -9
- data/lib/thinreports/layout.rb +3 -3
- data/lib/thinreports/layout/base.rb +0 -16
- data/lib/thinreports/layout/format.rb +38 -57
- data/lib/thinreports/layout/legacy_schema.rb +354 -0
- data/lib/thinreports/layout/version.rb +1 -1
- data/lib/thinreports/report.rb +0 -1
- data/lib/thinreports/report/base.rb +3 -17
- data/lib/thinreports/report/internal.rb +13 -55
- data/lib/thinreports/report/page.rb +1 -1
- data/lib/thinreports/version.rb +1 -1
- data/test/data/legacy_layout/all-items.tlf +1 -0
- data/test/schema_helper.rb +121 -0
- data/test/test_helper.rb +13 -50
- data/test/unit/core/format/test_base.rb +35 -31
- data/test/unit/core/shape/base/test_internal.rb +1 -1
- data/test/unit/core/shape/basic/test_block_format.rb +23 -0
- data/test/unit/core/shape/basic/{test_basic_interface.rb → test_block_interface.rb} +1 -1
- data/test/unit/core/shape/basic/{test_basic_internal.rb → test_block_internal.rb} +4 -7
- data/test/unit/core/shape/basic/test_format.rb +25 -47
- data/test/unit/core/shape/basic/test_interface.rb +5 -5
- data/test/unit/core/shape/basic/test_internal.rb +6 -11
- data/test/unit/core/shape/image_block/test_interface.rb +5 -5
- data/test/unit/core/shape/image_block/test_internal.rb +2 -2
- data/test/unit/core/shape/list/test_format.rb +86 -44
- data/test/unit/core/shape/list/test_manager.rb +10 -65
- data/test/unit/core/shape/list/test_page.rb +10 -61
- data/test/unit/core/shape/list/test_page_state.rb +1 -1
- data/test/unit/core/shape/list/test_section_format.rb +19 -28
- data/test/unit/core/shape/list/test_section_interface.rb +14 -6
- data/test/unit/core/shape/list/test_section_internal.rb +17 -23
- data/test/unit/core/shape/manager/test_format.rb +1 -1
- data/test/unit/core/shape/manager/test_internal.rb +59 -98
- data/test/unit/core/shape/manager/test_target.rb +21 -30
- data/test/unit/core/shape/page_number/test_format.rb +34 -52
- data/test/unit/core/shape/page_number/test_interface.rb +1 -1
- data/test/unit/core/shape/page_number/test_internal.rb +2 -2
- data/test/unit/core/shape/styles/test_base.rb +16 -41
- data/test/unit/core/shape/styles/test_basic.rb +7 -7
- data/test/unit/core/shape/styles/test_graphic.rb +27 -32
- data/test/unit/core/shape/styles/test_text.rb +68 -311
- data/test/unit/core/shape/text/test_format.rb +30 -59
- data/test/unit/core/shape/text/test_internal.rb +5 -5
- data/test/unit/core/shape/text_block/formatter/test_datetime.rb +13 -13
- data/test/unit/core/shape/text_block/test_format.rb +145 -146
- data/test/unit/core/shape/text_block/test_interface.rb +9 -9
- data/test/unit/core/shape/text_block/test_internal.rb +9 -9
- data/test/unit/core/test_shape.rb +19 -31
- data/test/unit/generator/pdf/document/graphics/test_attributes.rb +112 -122
- data/test/unit/generator/pdf/document/graphics/test_basic.rb +45 -0
- data/test/unit/generator/pdf/document/graphics/test_image.rb +5 -5
- data/test/unit/generator/pdf/document/test_font.rb +4 -10
- data/test/unit/generator/pdf/document/test_page.rb +13 -11
- data/test/unit/generator/pdf/document/test_parse_color.rb +5 -5
- data/test/unit/generator/test_base.rb +5 -5
- data/test/unit/generator/test_configuration.rb +4 -8
- data/test/unit/generator/test_pdf.rb +3 -2
- data/test/unit/layout/test_base.rb +16 -22
- data/test/unit/layout/test_format.rb +66 -86
- data/test/unit/layout/test_legacy_schema.rb +587 -0
- data/test/unit/layout/test_version.rb +20 -20
- data/test/unit/report/test_base.rb +32 -45
- data/test/unit/report/test_internal.rb +43 -99
- data/test/unit/test_config.rb +4 -2
- data/test/unit/test_layout.rb +1 -1
- metadata +20 -48
- data/examples/list_events/list_events_0_7_7.tlf +0 -1
- data/examples/list_events/list_events_0_8.tlf +0 -1
- data/lib/thinreports/core/events.rb +0 -69
- data/lib/thinreports/core/format/builder.rb +0 -62
- data/lib/thinreports/core/shape/list/configuration.rb +0 -54
- data/lib/thinreports/core/shape/list/events.rb +0 -47
- data/lib/thinreports/core/shape/list/store.rb +0 -33
- data/lib/thinreports/generator/pdf/configuration.rb +0 -33
- data/lib/thinreports/generator/pdf/document/parse_svg.rb +0 -104
- data/lib/thinreports/layout/configuration.rb +0 -29
- data/test/data/layout_block.tlf +0 -1
- data/test/data/layout_list.tlf +0 -1
- data/test/data/layout_list_noheader.tlf +0 -1
- data/test/data/layout_text1.tlf +0 -1
- data/test/data/layout_text2.tlf +0 -1
- data/test/unit/core/format/test_builder.rb +0 -109
- data/test/unit/core/shape/basic/test_basic_format.rb +0 -30
- data/test/unit/core/shape/image_block/test_format.rb +0 -58
- data/test/unit/core/shape/list/test_configuration.rb +0 -69
- data/test/unit/core/shape/list/test_events.rb +0 -36
- data/test/unit/core/shape/list/test_store.rb +0 -41
- data/test/unit/core/test_events.rb +0 -93
- data/test/unit/generator/pdf/document/test_draw_shape.rb +0 -44
- data/test/unit/generator/pdf/test_configuration.rb +0 -31
- data/test/unit/layout/test_configuration.rb +0 -21
- data/test/unit/report/test_events.rb +0 -22
|
@@ -9,27 +9,14 @@ class Thinreports::Core::Shape::List::TestPage < Minitest::Test
|
|
|
9
9
|
List = Thinreports::Core::Shape::List
|
|
10
10
|
|
|
11
11
|
def create_report(&block)
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
def create_report_for_checking_dispatched_event(event)
|
|
16
|
-
@target_event = event
|
|
17
|
-
@is_dispatched = false
|
|
18
|
-
|
|
19
|
-
create_report do |r|
|
|
20
|
-
r.layout.config.list(:list) do |list|
|
|
21
|
-
list.events.on(event) { @is_dispatched = true }
|
|
22
|
-
end
|
|
23
|
-
end
|
|
24
|
-
end
|
|
25
|
-
|
|
26
|
-
def assert_dispatched_event
|
|
27
|
-
assert @is_dispatched, "The :#{@target_event} event was not dispatched."
|
|
12
|
+
report = Thinreports::Report.new layout: layout_file.path
|
|
13
|
+
block.call(report) if block_given?
|
|
14
|
+
report
|
|
28
15
|
end
|
|
29
16
|
|
|
30
17
|
def test_on_page_finalize_callback
|
|
31
18
|
report = create_report
|
|
32
|
-
list = report.list
|
|
19
|
+
list = report.list
|
|
33
20
|
|
|
34
21
|
counter = 0
|
|
35
22
|
callback = -> { counter += 1 }
|
|
@@ -39,13 +26,13 @@ class Thinreports::Core::Shape::List::TestPage < Minitest::Test
|
|
|
39
26
|
5.times { list.add_row }
|
|
40
27
|
assert_equal 1, counter
|
|
41
28
|
|
|
42
|
-
report.
|
|
29
|
+
report.finalize
|
|
43
30
|
assert_equal 2, counter
|
|
44
31
|
end
|
|
45
32
|
|
|
46
33
|
def test_on_page_footer_insert_callback
|
|
47
34
|
report = create_report
|
|
48
|
-
list = report.list
|
|
35
|
+
list = report.list
|
|
49
36
|
|
|
50
37
|
tester = 0
|
|
51
38
|
callback = -> footer {
|
|
@@ -60,13 +47,13 @@ class Thinreports::Core::Shape::List::TestPage < Minitest::Test
|
|
|
60
47
|
5.times { list.add_row }
|
|
61
48
|
assert_equal 1, tester
|
|
62
49
|
|
|
63
|
-
report.
|
|
50
|
+
report.finalize
|
|
64
51
|
assert_equal 2, tester
|
|
65
52
|
end
|
|
66
53
|
|
|
67
54
|
def test_on_footer_insert_callback
|
|
68
55
|
report = create_report
|
|
69
|
-
list = report.list
|
|
56
|
+
list = report.list
|
|
70
57
|
|
|
71
58
|
tester = 0
|
|
72
59
|
callback = -> footer {
|
|
@@ -81,50 +68,12 @@ class Thinreports::Core::Shape::List::TestPage < Minitest::Test
|
|
|
81
68
|
5.times { list.add_row }
|
|
82
69
|
assert_equal 0, tester
|
|
83
70
|
|
|
84
|
-
report.generate
|
|
85
|
-
assert_equal 1, tester
|
|
86
|
-
end
|
|
87
|
-
|
|
88
|
-
def test_page_finalize_event_should_be_dispatched_when_page_break_is_called
|
|
89
|
-
report = create_report_for_checking_dispatched_event :page_finalize
|
|
90
|
-
report.start_new_page do
|
|
91
|
-
list(:list).page_break
|
|
92
|
-
end
|
|
93
|
-
|
|
94
|
-
assert_dispatched_event
|
|
95
|
-
end
|
|
96
|
-
|
|
97
|
-
def test_page_finalize_event_should_be_dispatched_when_list_was_overflowed
|
|
98
|
-
report = create_report_for_checking_dispatched_event :page_finalize
|
|
99
|
-
report.start_new_page do
|
|
100
|
-
6.times { list(:list).add_row }
|
|
101
|
-
end
|
|
102
|
-
|
|
103
|
-
assert_dispatched_event
|
|
104
|
-
end
|
|
105
|
-
|
|
106
|
-
def test_page_finalize_event_should_be_dispatched_when_a_new_page_is_created
|
|
107
|
-
report = create_report_for_checking_dispatched_event :page_finalize
|
|
108
|
-
report.start_new_page do
|
|
109
|
-
list(:list).add_row
|
|
110
|
-
end
|
|
111
|
-
report.start_new_page
|
|
112
|
-
|
|
113
|
-
assert_dispatched_event
|
|
114
|
-
end
|
|
115
|
-
|
|
116
|
-
def test_page_finalize_event_should_be_dispatched_when_report_is_finalized
|
|
117
|
-
report = create_report_for_checking_dispatched_event :page_finalize
|
|
118
|
-
report.start_new_page do
|
|
119
|
-
list(:list).add_row
|
|
120
|
-
end
|
|
121
71
|
report.finalize
|
|
122
|
-
|
|
123
|
-
assert_dispatched_event
|
|
72
|
+
assert_equal 1, tester
|
|
124
73
|
end
|
|
125
74
|
|
|
126
75
|
def test_copy_should_properly_work_when_list_has_not_header
|
|
127
|
-
report =
|
|
76
|
+
report = Thinreports::Report.new layout: layout_file(schema: LIST_NO_HEADER_SCHEMA_JSON).path
|
|
128
77
|
|
|
129
78
|
10.times { report.list.add_row }
|
|
130
79
|
rescue => e
|
|
@@ -5,41 +5,32 @@ require 'test_helper'
|
|
|
5
5
|
class Thinreports::Core::Shape::List::TestSectionFormat < Minitest::Test
|
|
6
6
|
include Thinreports::TestHelper
|
|
7
7
|
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
}
|
|
8
|
+
LIST_SECTION_FORMAT = {
|
|
9
|
+
'enabled' => true,
|
|
10
|
+
'height' => 47.7,
|
|
11
|
+
'translate' => { 'x' => 0, 'y' => -64.2 },
|
|
12
|
+
'items' => [
|
|
13
|
+
{ 'type' => 'rect', 'id' => '' },
|
|
14
|
+
{ 'type' => 'text-block', 'id' => 'text_block' }
|
|
15
|
+
]
|
|
17
16
|
}
|
|
18
17
|
|
|
19
18
|
Shape = Thinreports::Core::Shape
|
|
19
|
+
List = Thinreports::Core::Shape::List
|
|
20
20
|
|
|
21
|
-
def
|
|
22
|
-
|
|
21
|
+
def test_attribute_readers
|
|
22
|
+
format = List::SectionFormat.new(LIST_SECTION_FORMAT)
|
|
23
23
|
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
build_format
|
|
29
|
-
rescue => e
|
|
30
|
-
flunk exception_details(e, 'Building failed.')
|
|
31
|
-
end
|
|
24
|
+
assert_equal 47.7, format.height
|
|
25
|
+
assert_equal 0, format.relative_left
|
|
26
|
+
assert_equal(-64.2, format.relative_top)
|
|
27
|
+
assert_equal true, format.display?
|
|
32
28
|
end
|
|
33
29
|
|
|
34
|
-
def
|
|
35
|
-
format =
|
|
36
|
-
|
|
37
|
-
assert_equal format.height, 47.7
|
|
38
|
-
assert_equal format.relative_left, 0
|
|
39
|
-
assert_equal format.relative_top, -64.2
|
|
40
|
-
end
|
|
30
|
+
def test_initialize_items
|
|
31
|
+
format = List::SectionFormat.new(LIST_SECTION_FORMAT)
|
|
41
32
|
|
|
42
|
-
|
|
43
|
-
Shape::
|
|
33
|
+
assert_equal 1, format.shapes.count
|
|
34
|
+
assert_instance_of Shape::TextBlock::Format, format.shapes[:text_block]
|
|
44
35
|
end
|
|
45
36
|
end
|
|
@@ -5,19 +5,27 @@ require 'test_helper'
|
|
|
5
5
|
class Thinreports::Core::Shape::List::TestSectionInterface < Minitest::Test
|
|
6
6
|
include Thinreports::TestHelper
|
|
7
7
|
|
|
8
|
+
BASIC_SECTION_SCHEMA = {
|
|
9
|
+
'height' => 1.0,
|
|
10
|
+
'enabled' => true,
|
|
11
|
+
'items' => []
|
|
12
|
+
}
|
|
13
|
+
|
|
8
14
|
# Alias
|
|
9
15
|
List = Thinreports::Core::Shape::List
|
|
10
16
|
|
|
11
17
|
def setup
|
|
12
|
-
@report =
|
|
18
|
+
@report = Thinreports::Report.new layout: layout_file.path
|
|
13
19
|
end
|
|
14
20
|
|
|
15
|
-
def create_interface(
|
|
21
|
+
def create_interface(extra_section_schema = {})
|
|
16
22
|
parent = @report.start_new_page
|
|
17
23
|
|
|
18
|
-
List::SectionInterface.new
|
|
19
|
-
|
|
20
|
-
|
|
24
|
+
List::SectionInterface.new(
|
|
25
|
+
parent,
|
|
26
|
+
List::SectionFormat.new(BASIC_SECTION_SCHEMA.merge(extra_section_schema)),
|
|
27
|
+
:section
|
|
28
|
+
)
|
|
21
29
|
end
|
|
22
30
|
|
|
23
31
|
def test_internal_should_return_instance_of_SectionInternal
|
|
@@ -58,7 +66,7 @@ class Thinreports::Core::Shape::List::TestSectionInterface < Minitest::Test
|
|
|
58
66
|
new_parent = @report.start_new_page
|
|
59
67
|
|
|
60
68
|
%w( foo bar hoge ).each do |id|
|
|
61
|
-
list.manager.format.shapes[id.to_sym] = tblock::Format.new('type' => '
|
|
69
|
+
list.manager.format.shapes[id.to_sym] = tblock::Format.new('type' => 'text-block', 'id' => id)
|
|
62
70
|
list.item(id).value(10)
|
|
63
71
|
end
|
|
64
72
|
|
|
@@ -5,13 +5,22 @@ require 'test_helper'
|
|
|
5
5
|
class Thinreports::Core::Shape::List::TestSectionInternal < Minitest::Test
|
|
6
6
|
include Thinreports::TestHelper
|
|
7
7
|
|
|
8
|
+
BASIC_SECTION_SCHEMA = {
|
|
9
|
+
'height' => 1.0,
|
|
10
|
+
'enabled' => true,
|
|
11
|
+
'items' => []
|
|
12
|
+
}
|
|
13
|
+
|
|
8
14
|
# Alias
|
|
9
15
|
List = Thinreports::Core::Shape::List
|
|
10
16
|
|
|
11
|
-
def create_internal(
|
|
12
|
-
report =
|
|
17
|
+
def create_internal(extra_section_schema = {})
|
|
18
|
+
report = Thinreports::Report.new layout: layout_file.path
|
|
13
19
|
|
|
14
|
-
List::SectionInternal.new
|
|
20
|
+
List::SectionInternal.new(
|
|
21
|
+
report,
|
|
22
|
+
List::SectionFormat.new(BASIC_SECTION_SCHEMA.merge(extra_section_schema))
|
|
23
|
+
)
|
|
15
24
|
end
|
|
16
25
|
|
|
17
26
|
def test_height_should_operate_as_delegator_of_format
|
|
@@ -24,16 +33,6 @@ class Thinreports::Core::Shape::List::TestSectionInternal < Minitest::Test
|
|
|
24
33
|
assert_same list.relative_left, list.format.relative_left
|
|
25
34
|
end
|
|
26
35
|
|
|
27
|
-
def test_relative_top_should_operate_as_delegator_of_format
|
|
28
|
-
list = create_internal('translate' => {'y' => 10})
|
|
29
|
-
assert_same list.relative_top, list.format.relative_top
|
|
30
|
-
end
|
|
31
|
-
|
|
32
|
-
def test_svg_tag_should_operate_as_delegator_of_format
|
|
33
|
-
list = create_internal('svg' => {'tag' => 'g'})
|
|
34
|
-
assert_same list.svg_tag, list.format.svg_tag
|
|
35
|
-
end
|
|
36
|
-
|
|
37
36
|
def test_move_top_to_should_properly_set_value_to_states_as_relative_top
|
|
38
37
|
list = create_internal
|
|
39
38
|
list.move_top_to(200)
|
|
@@ -41,16 +40,11 @@ class Thinreports::Core::Shape::List::TestSectionInternal < Minitest::Test
|
|
|
41
40
|
assert_equal list.states[:relative_top], 200
|
|
42
41
|
end
|
|
43
42
|
|
|
44
|
-
def
|
|
45
|
-
list = create_internal('translate' => {'
|
|
46
|
-
|
|
47
|
-
assert_equal list.relative_position, [100, 200]
|
|
48
|
-
end
|
|
49
|
-
|
|
50
|
-
def test_Y_coordinate_which_relative_position_returns_should_be_calculated_position_with_relative_top_of_states
|
|
51
|
-
list = create_internal('translate' => {'x' => 100, 'y' => 100})
|
|
52
|
-
list.move_top_to(50)
|
|
43
|
+
def test_relative_top
|
|
44
|
+
list = create_internal('translate' => { 'y' => 100 })
|
|
45
|
+
assert_equal 0, list.relative_top
|
|
53
46
|
|
|
54
|
-
|
|
47
|
+
list.move_top_to 50
|
|
48
|
+
assert_equal 50, list.relative_top
|
|
55
49
|
end
|
|
56
50
|
end
|
|
@@ -27,7 +27,7 @@ class Thinreports::Core::Shape::Manager::TestFormat < Minitest::Test
|
|
|
27
27
|
def test_find_shape_should_return_format_of_shape_when_shape_is_found
|
|
28
28
|
format = TestFormat.new({}) do |f|
|
|
29
29
|
f.shapes[:foo] = Thinreports::Core::Shape::TextBlock::Format.new('id' => 'foo',
|
|
30
|
-
'type' => '
|
|
30
|
+
'type' => 'text-block')
|
|
31
31
|
end
|
|
32
32
|
assert_equal format.find_shape(:foo).id, 'foo'
|
|
33
33
|
end
|
|
@@ -4,168 +4,129 @@ require 'test_helper'
|
|
|
4
4
|
|
|
5
5
|
class Thinreports::Core::Shape::Manager::TestInternal < Minitest::Test
|
|
6
6
|
include Thinreports::TestHelper
|
|
7
|
-
|
|
7
|
+
|
|
8
8
|
# Alias
|
|
9
9
|
Shape = Thinreports::Core::Shape
|
|
10
|
-
|
|
10
|
+
|
|
11
11
|
def create_shape_format(type, id, other_config = {})
|
|
12
12
|
Shape::Format(type).new({'id' => id,
|
|
13
13
|
'type' => type,
|
|
14
|
-
'display' =>
|
|
14
|
+
'display' => true}.merge(other_config))
|
|
15
15
|
end
|
|
16
|
-
|
|
16
|
+
|
|
17
17
|
def create_internal(&block)
|
|
18
|
-
report =
|
|
18
|
+
report = Thinreports::Report.new layout: layout_file.path
|
|
19
19
|
format = report.layout.format
|
|
20
|
-
|
|
21
|
-
# Add to default dummy shapes.
|
|
22
|
-
format.shapes[:t1] = create_shape_format('s-tblock', 't1', 'value' => '')
|
|
23
|
-
format.shapes[:t2] = create_shape_format('s-tblock', 't2', 'value' => '')
|
|
24
|
-
format.shapes[:ls] = create_shape_format('s-list', 'ls')
|
|
25
|
-
|
|
20
|
+
|
|
26
21
|
block.call(format) if block_given?
|
|
27
|
-
|
|
22
|
+
|
|
28
23
|
report.start_new_page.manager
|
|
29
24
|
end
|
|
30
|
-
|
|
25
|
+
|
|
31
26
|
def test_find_format_should_return_format_with_the_specified_Symbol_id
|
|
32
|
-
assert_equal create_internal.find_format(:
|
|
27
|
+
assert_equal create_internal.find_format(:text_block).id, 'text_block'
|
|
33
28
|
end
|
|
34
|
-
|
|
29
|
+
|
|
35
30
|
def test_find_format_should_return_format_with_the_specified_String_id
|
|
36
|
-
assert_equal create_internal.find_format('
|
|
31
|
+
assert_equal create_internal.find_format('text_block').id, 'text_block'
|
|
37
32
|
end
|
|
38
|
-
|
|
33
|
+
|
|
39
34
|
def test_find_format_should_return_nil_when_format_with_specified_id_is_not_found
|
|
40
35
|
assert_nil create_internal.find_format(:unknown)
|
|
41
36
|
end
|
|
42
|
-
|
|
37
|
+
|
|
43
38
|
def test_find_item_should_return_shape_with_the_specified_id
|
|
44
|
-
assert_instance_of Shape::TextBlock::Interface, create_internal.find_item(:
|
|
39
|
+
assert_instance_of Shape::TextBlock::Interface, create_internal.find_item(:text_block)
|
|
45
40
|
end
|
|
46
|
-
|
|
41
|
+
|
|
47
42
|
def test_find_item_should_return_shape_in_shapes_registry_when_the_specified_shape_exists_in_registry
|
|
48
43
|
internal = create_internal
|
|
49
|
-
internal.find_item(:
|
|
50
|
-
|
|
51
|
-
assert_same internal.find_item(:
|
|
44
|
+
internal.find_item(:text_block)
|
|
45
|
+
|
|
46
|
+
assert_same internal.find_item(:text_block), internal.shapes[:text_block]
|
|
52
47
|
end
|
|
53
|
-
|
|
48
|
+
|
|
54
49
|
def test_find_item_should_return_shape_when_passing_in_the_specified_only_filter
|
|
55
50
|
internal = create_internal
|
|
56
|
-
assert_equal internal.find_item(:
|
|
51
|
+
assert_equal internal.find_item(:text_block, only: 'text-block').id, 'text_block'
|
|
57
52
|
end
|
|
58
|
-
|
|
53
|
+
|
|
59
54
|
def test_find_item_should_return_nil_when_not_passing_in_the_specified_only_filter
|
|
60
55
|
internal = create_internal
|
|
61
|
-
assert_nil internal.find_item(:
|
|
56
|
+
assert_nil internal.find_item(:text_block, only: 'list')
|
|
62
57
|
end
|
|
63
|
-
|
|
58
|
+
|
|
64
59
|
def test_find_item_should_return_shape_when_passing_in_the_specified_except_filter
|
|
65
60
|
internal = create_internal
|
|
66
|
-
assert_equal internal.find_item(:
|
|
61
|
+
assert_equal internal.find_item(:default, except: 'text-block').id, 'default'
|
|
67
62
|
end
|
|
68
|
-
|
|
63
|
+
|
|
69
64
|
def test_find_item_should_return_shape_when_not_passing_in_the_specified_except_filter
|
|
70
65
|
internal = create_internal
|
|
71
|
-
assert_nil internal.find_item(:
|
|
66
|
+
assert_nil internal.find_item(:default, except: 'list')
|
|
72
67
|
end
|
|
73
|
-
|
|
68
|
+
|
|
74
69
|
def test_final_shape_should_return_nil_when_shape_is_not_found
|
|
75
70
|
internal = create_internal
|
|
76
71
|
assert_nil internal.final_shape(:unknown)
|
|
77
72
|
end
|
|
78
|
-
|
|
73
|
+
|
|
79
74
|
def test_final_shape_should_return_nil_when_shape_is_stored_in_shapes_and_hidden
|
|
80
75
|
internal = create_internal
|
|
81
|
-
internal.find_item(:
|
|
82
|
-
|
|
83
|
-
assert_nil internal.final_shape(:
|
|
84
|
-
end
|
|
85
|
-
|
|
86
|
-
def test_final_shape_should_return_shape_when_shape_is_stored_in_shapes_and_not_Block
|
|
87
|
-
internal = create_internal do |f|
|
|
88
|
-
f.shapes[:rect] = create_shape_format('s-rect', 'rect')
|
|
89
|
-
end
|
|
90
|
-
internal.find_item(:rect)
|
|
91
|
-
|
|
92
|
-
assert_equal internal.final_shape(:rect).id, 'rect'
|
|
76
|
+
internal.find_item(:text_block).hide
|
|
77
|
+
|
|
78
|
+
assert_nil internal.final_shape(:text_block)
|
|
93
79
|
end
|
|
94
|
-
|
|
80
|
+
|
|
95
81
|
def test_final_shape_should_return_shape_when_shape_is_stored_in_shapes_and_TextBlock_with_value
|
|
96
82
|
internal = create_internal
|
|
97
|
-
internal.find_item(:
|
|
98
|
-
|
|
99
|
-
assert_equal internal.final_shape(:
|
|
83
|
+
internal.find_item(:text_block).value('value')
|
|
84
|
+
|
|
85
|
+
assert_equal internal.final_shape(:text_block).id, 'text_block'
|
|
100
86
|
end
|
|
101
|
-
|
|
87
|
+
|
|
102
88
|
def test_final_shape_should_return_nil_when_shape_is_stored_in_shapes_and_TextBlock_with_no_value
|
|
103
89
|
internal = create_internal
|
|
104
|
-
internal.find_item(:
|
|
105
|
-
|
|
106
|
-
assert_nil internal.final_shape(:
|
|
90
|
+
internal.find_item(:text_block)
|
|
91
|
+
|
|
92
|
+
assert_nil internal.final_shape(:text_block)
|
|
107
93
|
end
|
|
108
|
-
|
|
94
|
+
|
|
109
95
|
def test_final_shape_should_return_shape_when_shape_is_stored_in_shapes_and_ImageBlock_with_src
|
|
110
|
-
internal = create_internal
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
internal.
|
|
114
|
-
|
|
115
|
-
assert_equal internal.final_shape(:iblock).id, 'iblock'
|
|
96
|
+
internal = create_internal
|
|
97
|
+
internal.find_item(:image_block).src('/path/to/image.png')
|
|
98
|
+
|
|
99
|
+
assert_equal internal.final_shape(:image_block).id, 'image_block'
|
|
116
100
|
end
|
|
117
|
-
|
|
101
|
+
|
|
118
102
|
def test_final_shape_should_return_nil_when_shape_is_stored_in_shapes_and_ImageBlock_with_no_src
|
|
119
|
-
internal = create_internal
|
|
120
|
-
|
|
121
|
-
end
|
|
122
|
-
|
|
123
|
-
assert_nil internal.final_shape(:iblock)
|
|
103
|
+
internal = create_internal
|
|
104
|
+
assert_nil internal.final_shape(:image_block)
|
|
124
105
|
end
|
|
125
|
-
|
|
106
|
+
|
|
126
107
|
def test_final_shape_should_return_nil_when_shape_isnot_stored_in_shapes_and_hidden
|
|
127
|
-
|
|
128
|
-
f.shapes[:t3] = create_shape_format('s-tblock', 't3', 'display' => 'false')
|
|
129
|
-
end
|
|
130
|
-
|
|
131
|
-
assert_nil internal.final_shape(:t3)
|
|
108
|
+
assert_nil create_internal.final_shape(:text_block_hidden)
|
|
132
109
|
end
|
|
133
|
-
|
|
110
|
+
|
|
134
111
|
def test_final_shape_should_return_shape_when_shape_isnot_stored_in_shapes_and_not_Block
|
|
135
|
-
|
|
136
|
-
f.shapes[:rect] = create_shape_format('s-rect', 'rect')
|
|
137
|
-
end
|
|
138
|
-
|
|
139
|
-
assert_equal internal.final_shape(:rect).id, 'rect'
|
|
112
|
+
assert_equal create_internal.final_shape(:rect_with_id).id, 'rect_with_id'
|
|
140
113
|
end
|
|
141
|
-
|
|
114
|
+
|
|
142
115
|
def test_final_shape_should_return_nil_when_shape_isnot_stored_in_shapes_and_ImageBlock
|
|
143
116
|
internal = create_internal do |f|
|
|
144
|
-
f.shapes[:iblock] = create_shape_format('
|
|
117
|
+
f.shapes[:iblock] = create_shape_format('image-block', 'iblock')
|
|
145
118
|
end
|
|
146
|
-
|
|
119
|
+
|
|
147
120
|
assert_nil internal.final_shape(:iblock)
|
|
148
121
|
end
|
|
149
|
-
|
|
150
|
-
def test_final_shape_should_return_shape_when_shape_isnot_stored_in_shapes_and_TextBlock_with_value
|
|
151
|
-
internal = create_internal do |f|
|
|
152
|
-
f.shapes[:t3] = create_shape_format('s-tblock', 't3', 'value' => 'default value')
|
|
153
|
-
end
|
|
154
|
-
|
|
155
|
-
assert_equal internal.final_shape(:t3).id, 't3'
|
|
156
|
-
end
|
|
157
|
-
|
|
122
|
+
|
|
158
123
|
def test_final_shape_should_return_shape_when_shape_isnot_stored_in_shapes_and_TextBlock_with_reference
|
|
159
|
-
|
|
160
|
-
f.shapes[:t3] = create_shape_format('s-tblock', 't3', 'ref-id' => 't1')
|
|
161
|
-
end
|
|
162
|
-
|
|
163
|
-
assert_equal internal.final_shape(:t3).id, 't3'
|
|
124
|
+
assert_equal create_internal.final_shape(:text_block_referenced).id, 'text_block_referenced'
|
|
164
125
|
end
|
|
165
|
-
|
|
126
|
+
|
|
166
127
|
def test_final_shape_should_return_nil_when_shape_isnot_stored_in_shapes_and_TextBlock_with_no_value_no_reference
|
|
167
128
|
internal = create_internal
|
|
168
|
-
|
|
129
|
+
|
|
169
130
|
assert_nil internal.final_shape(:t1)
|
|
170
131
|
end
|
|
171
|
-
end
|
|
132
|
+
end
|