thinreports 0.10.0 → 0.12.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 +5 -5
- data/.github/CONTRIBUTING.md +2 -2
- data/.github/workflows/test.yml +51 -0
- data/.gitignore +1 -0
- data/CHANGELOG.md +49 -0
- data/Dockerfile +12 -0
- data/Gemfile +2 -1
- data/README.md +46 -21
- data/Rakefile +13 -29
- data/gemfiles/prawn-2.2.gemfile +5 -0
- data/gemfiles/prawn-2.3.gemfile +5 -0
- data/gemfiles/prawn-2.4.gemfile +5 -0
- data/lib/thinreports.rb +5 -0
- data/lib/thinreports/core/shape.rb +4 -3
- data/lib/thinreports/core/shape/base/interface.rb +0 -1
- data/lib/thinreports/core/shape/basic/format.rb +5 -0
- data/lib/thinreports/core/shape/image_block.rb +1 -1
- data/lib/thinreports/core/shape/list.rb +1 -1
- data/lib/thinreports/core/shape/list/manager.rb +1 -4
- data/lib/thinreports/core/shape/list/page.rb +2 -5
- data/lib/thinreports/core/shape/manager/internal.rb +0 -1
- data/lib/thinreports/core/shape/page_number.rb +1 -1
- data/lib/thinreports/core/shape/page_number/internal.rb +0 -1
- data/lib/thinreports/core/shape/stack_view.rb +17 -0
- data/lib/thinreports/core/shape/stack_view/format.rb +27 -0
- data/lib/thinreports/core/shape/stack_view/interface.rb +17 -0
- data/lib/thinreports/core/shape/stack_view/internal.rb +22 -0
- data/lib/thinreports/core/shape/stack_view/row_format.rb +39 -0
- data/lib/thinreports/core/shape/style/basic.rb +4 -1
- data/lib/thinreports/core/shape/text.rb +1 -1
- data/lib/thinreports/core/shape/text_block.rb +1 -1
- data/lib/thinreports/core/shape/text_block/formatter/number.rb +21 -9
- data/lib/thinreports/core/shape/text_block/internal.rb +0 -2
- data/lib/thinreports/core/utils.rb +6 -3
- data/lib/thinreports/generate.rb +11 -0
- data/lib/thinreports/generator/pdf/document/draw_shape.rb +31 -11
- data/lib/thinreports/generator/pdf/document/draw_template_items.rb +1 -2
- data/lib/thinreports/generator/pdf/document/font.rb +16 -10
- data/lib/thinreports/generator/pdf/document/graphics/attributes.rb +0 -1
- data/lib/thinreports/generator/pdf/document/graphics/basic.rb +0 -1
- data/lib/thinreports/generator/pdf/document/graphics/image.rb +19 -1
- data/lib/thinreports/generator/pdf/document/graphics/text.rb +10 -8
- data/lib/thinreports/generator/pdf/document/page.rb +13 -4
- data/lib/thinreports/generator/pdf/drawer/list.rb +0 -1
- data/lib/thinreports/generator/pdf/prawn_ext/calc_image_dimensions.rb +1 -3
- data/lib/thinreports/generator/pdf/prawn_ext/width_of.rb +7 -7
- data/lib/thinreports/layout/base.rb +2 -4
- data/lib/thinreports/layout/format.rb +0 -1
- data/lib/thinreports/layout/legacy_schema.rb +2 -6
- data/lib/thinreports/layout/version.rb +1 -1
- data/lib/thinreports/report/internal.rb +4 -4
- data/lib/thinreports/report/page.rb +2 -7
- data/lib/thinreports/section_report/build.rb +32 -0
- data/lib/thinreports/section_report/builder/item_builder.rb +49 -0
- data/lib/thinreports/section_report/builder/report_builder.rb +82 -0
- data/lib/thinreports/section_report/builder/report_data.rb +13 -0
- data/lib/thinreports/section_report/builder/stack_view_builder.rb +55 -0
- data/lib/thinreports/section_report/builder/stack_view_data.rb +11 -0
- data/lib/thinreports/section_report/generate.rb +26 -0
- data/lib/thinreports/section_report/pdf/render.rb +23 -0
- data/lib/thinreports/section_report/pdf/renderer/draw_item.rb +68 -0
- data/lib/thinreports/section_report/pdf/renderer/group_renderer.rb +57 -0
- data/lib/thinreports/section_report/pdf/renderer/headers_renderer.rb +24 -0
- data/lib/thinreports/section_report/pdf/renderer/section_height.rb +100 -0
- data/lib/thinreports/section_report/pdf/renderer/section_renderer.rb +39 -0
- data/lib/thinreports/section_report/pdf/renderer/stack_view_renderer.rb +55 -0
- data/lib/thinreports/section_report/pdf/renderer/stack_view_row_renderer.rb +38 -0
- data/lib/thinreports/section_report/schema/loader.rb +28 -0
- data/lib/thinreports/section_report/schema/parser.rb +52 -0
- data/lib/thinreports/section_report/schema/report.rb +30 -0
- data/lib/thinreports/section_report/schema/section.rb +47 -0
- data/lib/thinreports/version.rb +1 -1
- data/thinreports.gemspec +11 -11
- metadata +48 -164
- data/.rubocop.yml +0 -41
- data/.travis.yml +0 -17
- data/examples/character_spacing/character_spacing.rb +0 -8
- data/examples/character_spacing/character_spacing.tlf +0 -293
- data/examples/dynamic_image/dynamic_image.rb +0 -31
- data/examples/dynamic_image/dynamic_image.tlf +0 -661
- data/examples/dynamic_image/img200x100.png +0 -0
- data/examples/dynamic_image/img50x50.png +0 -0
- data/examples/dynamic_style/dynamic_style.rb +0 -150
- data/examples/dynamic_style/dynamic_style.tlf +0 -1835
- data/examples/dynamic_style/dynamic_style_in_list.tlf +0 -344
- data/examples/dynamic_style/image.png +0 -0
- data/examples/eudc/eudc.rb +0 -20
- data/examples/eudc/eudc.tlf +0 -180
- data/examples/eudc/eudc.ttf +0 -0
- data/examples/helper.rb +0 -50
- data/examples/hidden_shapes/hidden_shapes.rb +0 -9
- data/examples/hidden_shapes/hidden_shapes.tlf +0 -449
- data/examples/list_events/list_events.rb +0 -32
- data/examples/list_events/list_events.tlf +0 -361
- data/examples/list_manual_generation/list_manual_generation.rb +0 -22
- data/examples/list_manual_generation/list_manual_generation.tlf +0 -132
- data/examples/list_page_number/list_page_number.rb +0 -17
- data/examples/list_page_number/list_page_number.tlf +0 -254
- data/examples/page_number/page_number.rb +0 -33
- data/examples/page_number/page_number.tlf +0 -215
- data/examples/palleted_png/palleted_png.png +0 -0
- data/examples/palleted_png/palleted_png.rb +0 -9
- data/examples/palleted_png/palleted_png.tlf +0 -47
- data/examples/password_setting/password_setting.rb +0 -10
- data/examples/password_setting/password_setting.tlf +0 -45
- data/examples/report_callbacks/report_callbacks.rb +0 -14
- data/examples/report_callbacks/report_callbacks.tlf +0 -147
- data/examples/single_line_tblock/single_line_tblock.rb +0 -13
- data/examples/single_line_tblock/single_line_tblock.tlf +0 -170
- data/examples/tblock_overflow/tblock_overflow.rb +0 -20
- data/examples/tblock_overflow/tblock_overflow.tlf +0 -538
- data/examples/tblock_styles/font_size.tlf +0 -383
- data/examples/tblock_styles/tblock_styles.rb +0 -43
- data/examples/tblock_styles/tblock_styles.tlf +0 -889
- data/examples/text_align/text_align.rb +0 -8
- data/examples/text_align/text_align.tlf +0 -241
- data/examples/typeB_page_size/B4_ISO.tlf +0 -45
- data/examples/typeB_page_size/B4_JIS.tlf +0 -45
- data/examples/typeB_page_size/typeB_page_size.rb +0 -17
- data/examples/word_wrap/word_wrap.rb +0 -26
- data/examples/word_wrap/word_wrap.tlf +0 -297
- data/test/data/font.ttf +0 -0
- data/test/data/image_normal.jpg +0 -0
- data/test/data/image_normal.png +0 -0
- data/test/data/image_normal_jpg_noext +0 -0
- data/test/data/image_normal_png_noext +0 -0
- data/test/data/image_pallete_based.png +0 -0
- data/test/data/legacy_layout/all-items.tlf +0 -1
- data/test/schema_helper.rb +0 -122
- data/test/test_helper.rb +0 -48
- data/test/tmp/.gitkeep +0 -0
- data/test/unit/core/format/test_base.rb +0 -152
- data/test/unit/core/shape/base/test_internal.rb +0 -87
- data/test/unit/core/shape/basic/test_block_format.rb +0 -23
- data/test/unit/core/shape/basic/test_block_interface.rb +0 -29
- data/test/unit/core/shape/basic/test_block_internal.rb +0 -55
- data/test/unit/core/shape/basic/test_format.rb +0 -37
- data/test/unit/core/shape/basic/test_interface.rb +0 -108
- data/test/unit/core/shape/basic/test_internal.rb +0 -55
- data/test/unit/core/shape/image_block/test_interface.rb +0 -24
- data/test/unit/core/shape/image_block/test_internal.rb +0 -31
- data/test/unit/core/shape/list/test_format.rb +0 -111
- data/test/unit/core/shape/list/test_manager.rb +0 -67
- data/test/unit/core/shape/list/test_page.rb +0 -82
- data/test/unit/core/shape/list/test_page_state.rb +0 -31
- data/test/unit/core/shape/list/test_section_format.rb +0 -36
- data/test/unit/core/shape/list/test_section_interface.rb +0 -75
- data/test/unit/core/shape/list/test_section_internal.rb +0 -50
- data/test/unit/core/shape/manager/test_format.rb +0 -38
- data/test/unit/core/shape/manager/test_internal.rb +0 -132
- data/test/unit/core/shape/manager/test_target.rb +0 -140
- data/test/unit/core/shape/page_number/test_format.rb +0 -55
- data/test/unit/core/shape/page_number/test_interface.rb +0 -33
- data/test/unit/core/shape/page_number/test_internal.rb +0 -81
- data/test/unit/core/shape/styles/test_base.rb +0 -191
- data/test/unit/core/shape/styles/test_basic.rb +0 -24
- data/test/unit/core/shape/styles/test_graphic.rb +0 -50
- data/test/unit/core/shape/styles/test_text.rb +0 -97
- data/test/unit/core/shape/text/test_format.rb +0 -44
- data/test/unit/core/shape/text/test_internal.rb +0 -20
- data/test/unit/core/shape/text_block/formatter/test_basic.rb +0 -24
- data/test/unit/core/shape/text_block/formatter/test_datetime.rb +0 -49
- data/test/unit/core/shape/text_block/formatter/test_number.rb +0 -76
- data/test/unit/core/shape/text_block/formatter/test_padding.rb +0 -77
- data/test/unit/core/shape/text_block/test_format.rb +0 -169
- data/test/unit/core/shape/text_block/test_formatter.rb +0 -28
- data/test/unit/core/shape/text_block/test_interface.rb +0 -63
- data/test/unit/core/shape/text_block/test_internal.rb +0 -128
- data/test/unit/core/test_shape.rb +0 -52
- data/test/unit/core/test_utils.rb +0 -68
- data/test/unit/generator/pdf/document/graphics/test_attributes.rb +0 -135
- data/test/unit/generator/pdf/document/graphics/test_basic.rb +0 -46
- data/test/unit/generator/pdf/document/graphics/test_image.rb +0 -46
- data/test/unit/generator/pdf/document/graphics/test_text.rb +0 -171
- data/test/unit/generator/pdf/document/test_font.rb +0 -84
- data/test/unit/generator/pdf/document/test_graphics.rb +0 -42
- data/test/unit/generator/pdf/document/test_page.rb +0 -122
- data/test/unit/generator/pdf/document/test_parse_color.rb +0 -30
- data/test/unit/generator/pdf/prawn_ext/test_calc_image_dimensions.rb +0 -41
- data/test/unit/generator/pdf/prawn_ext/test_width_of.rb +0 -22
- data/test/unit/generator/pdf/test_document.rb +0 -22
- data/test/unit/generator/test_pdf.rb +0 -26
- data/test/unit/layout/test_base.rb +0 -41
- data/test/unit/layout/test_format.rb +0 -100
- data/test/unit/layout/test_legacy_schema.rb +0 -574
- data/test/unit/layout/test_version.rb +0 -26
- data/test/unit/report/test_base.rb +0 -248
- data/test/unit/report/test_internal.rb +0 -206
- data/test/unit/test_config.rb +0 -36
- data/test/unit/test_layout.rb +0 -12
- data/test/unit/test_report.rb +0 -18
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
require 'test_helper'
|
|
4
|
-
|
|
5
|
-
class Thinreports::Core::Shape::Basic::TestBlockInterface < Minitest::Test
|
|
6
|
-
include Thinreports::TestHelper
|
|
7
|
-
|
|
8
|
-
Basic = Thinreports::Core::Shape::Basic
|
|
9
|
-
|
|
10
|
-
def setup
|
|
11
|
-
report = Thinreports::Report.new layout: layout_file.path
|
|
12
|
-
parent = report.start_new_page
|
|
13
|
-
|
|
14
|
-
format = Basic::BlockFormat.new({})
|
|
15
|
-
internal = Basic::BlockInternal.new parent, format
|
|
16
|
-
|
|
17
|
-
@interface = Basic::BlockInterface.new parent, format, internal
|
|
18
|
-
end
|
|
19
|
-
|
|
20
|
-
def test_value_should_work_as_reader_with_no_arguments
|
|
21
|
-
@interface.internal.write_value('new value')
|
|
22
|
-
assert_equal @interface.value, 'new value'
|
|
23
|
-
end
|
|
24
|
-
|
|
25
|
-
def test_value_should_work_as_writer_with_arguments
|
|
26
|
-
@interface.value('new value')
|
|
27
|
-
assert_equal @interface.internal.read_value, 'new value'
|
|
28
|
-
end
|
|
29
|
-
end
|
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
require 'test_helper'
|
|
4
|
-
|
|
5
|
-
class Thinreports::Core::Shape::Basic::TestBlockInternal < Minitest::Test
|
|
6
|
-
include Thinreports::TestHelper
|
|
7
|
-
|
|
8
|
-
Basic = Thinreports::Core::Shape::Basic
|
|
9
|
-
|
|
10
|
-
def test_read_value_should_return_value_from_format
|
|
11
|
-
internal = init_internal('value' => 'default value')
|
|
12
|
-
assert_equal internal.read_value, 'default value'
|
|
13
|
-
end
|
|
14
|
-
|
|
15
|
-
def test_read_value_should_return_value_from_state_with_value_key
|
|
16
|
-
internal = init_internal
|
|
17
|
-
internal.states[:value] = 'new value'
|
|
18
|
-
assert_equal internal.read_value, 'new value'
|
|
19
|
-
end
|
|
20
|
-
|
|
21
|
-
def test_real_value_should_return_the_same_value_as_a_read_value_method
|
|
22
|
-
internal = init_internal
|
|
23
|
-
internal.states[:value] = 'foo'
|
|
24
|
-
assert_same internal.real_value, internal.read_value
|
|
25
|
-
end
|
|
26
|
-
|
|
27
|
-
def test_write_value_should_save_value_to_states_store_as_value
|
|
28
|
-
internal = init_internal
|
|
29
|
-
internal.write_value('new value')
|
|
30
|
-
assert_equal internal.states[:value], 'new value'
|
|
31
|
-
end
|
|
32
|
-
|
|
33
|
-
def test_type_of_asker_should_return_true_when_given_the_block_value
|
|
34
|
-
assert_equal init_internal.type_of?(:block), true
|
|
35
|
-
end
|
|
36
|
-
|
|
37
|
-
def test_value_should_works_the_same_as_read_value_method
|
|
38
|
-
internal = init_internal
|
|
39
|
-
internal.write_value('new value')
|
|
40
|
-
assert_same internal.read_value, internal.value
|
|
41
|
-
end
|
|
42
|
-
|
|
43
|
-
def test_type_of_asker_should_return_false_otherwise
|
|
44
|
-
assert_equal %w( image-block text-block text list ).all? {|t| !init_internal.type_of?(t)}, true
|
|
45
|
-
end
|
|
46
|
-
|
|
47
|
-
private
|
|
48
|
-
|
|
49
|
-
def init_internal(format = {})
|
|
50
|
-
report = Thinreports::Report.new layout: layout_file.path
|
|
51
|
-
parent = report.start_new_page
|
|
52
|
-
|
|
53
|
-
Basic::BlockInternal.new(parent, Basic::BlockFormat.new(format))
|
|
54
|
-
end
|
|
55
|
-
end
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
require 'test_helper'
|
|
4
|
-
|
|
5
|
-
class Thinreports::Core::Shape::Basic::TestFormat < Minitest::Test
|
|
6
|
-
include Thinreports::TestHelper
|
|
7
|
-
|
|
8
|
-
RECT_FORMAT = {
|
|
9
|
-
"id" => "",
|
|
10
|
-
"type" => "rect",
|
|
11
|
-
"x" => 100.0,
|
|
12
|
-
"y" => 200.0,
|
|
13
|
-
"width" => 300.0,
|
|
14
|
-
"height" => 400.0,
|
|
15
|
-
"description" => "Description for rect",
|
|
16
|
-
"display" => true,
|
|
17
|
-
"rx" => 1.0,
|
|
18
|
-
"ry" => 1.0,
|
|
19
|
-
"style" => {
|
|
20
|
-
"border-width" => 1,
|
|
21
|
-
"border-color" => "#000000",
|
|
22
|
-
"border-style" => "dashed",
|
|
23
|
-
"fill-color" => "#ff0000"
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
Basic = Thinreports::Core::Shape::Basic
|
|
28
|
-
|
|
29
|
-
def test_attribute_readers
|
|
30
|
-
format = Basic::Format.new(RECT_FORMAT)
|
|
31
|
-
|
|
32
|
-
assert_equal '', format.id
|
|
33
|
-
assert_equal 'rect', format.type
|
|
34
|
-
assert_equal RECT_FORMAT['style'], format.style
|
|
35
|
-
assert_equal true, format.display?
|
|
36
|
-
end
|
|
37
|
-
end
|
|
@@ -1,108 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
require 'test_helper'
|
|
4
|
-
|
|
5
|
-
class Thinreports::Core::Shape::Basic::TestInterface < Minitest::Test
|
|
6
|
-
include Thinreports::TestHelper
|
|
7
|
-
|
|
8
|
-
# Alias
|
|
9
|
-
Basic = Thinreports::Core::Shape::Basic
|
|
10
|
-
|
|
11
|
-
def create_interface(format_config = {})
|
|
12
|
-
report = Thinreports::Report.new layout: layout_file.path
|
|
13
|
-
parent = report.start_new_page
|
|
14
|
-
|
|
15
|
-
Basic::Interface.new parent, Basic::Format.new(format_config)
|
|
16
|
-
end
|
|
17
|
-
|
|
18
|
-
def test_id_should_return_id_with_reference_to_internal
|
|
19
|
-
basic = create_interface('id' => 'foo')
|
|
20
|
-
assert_equal basic.id, basic.internal.id
|
|
21
|
-
end
|
|
22
|
-
|
|
23
|
-
def test_id_should_return_cloned_id
|
|
24
|
-
basic = create_interface('id' => 'basic-id')
|
|
25
|
-
refute_same basic.id, basic.internal.id
|
|
26
|
-
end
|
|
27
|
-
|
|
28
|
-
def test_type_should_operate_as_delegator_of_internal
|
|
29
|
-
basic = create_interface('type' => 'rect')
|
|
30
|
-
assert_same basic.type, basic.internal.type
|
|
31
|
-
end
|
|
32
|
-
|
|
33
|
-
def test_visible_asker_should_return_result_with_reference_to_style_of_internal
|
|
34
|
-
basic = create_interface('display' => false)
|
|
35
|
-
assert_equal basic.visible?, basic.internal.style.visible
|
|
36
|
-
end
|
|
37
|
-
|
|
38
|
-
def test_visible_should_properly_set_visibility_to_style_of_internal
|
|
39
|
-
basic = create_interface('display' => false)
|
|
40
|
-
basic.visible(true)
|
|
41
|
-
|
|
42
|
-
assert_equal basic.internal.style.visible, true
|
|
43
|
-
end
|
|
44
|
-
|
|
45
|
-
def test_style_should_operate_as_reader_when_one_argument_is_given
|
|
46
|
-
basic = create_interface('style' => { 'fill-color' => '#ff0000' })
|
|
47
|
-
|
|
48
|
-
assert_equal basic.style(:fill_color), '#ff0000'
|
|
49
|
-
end
|
|
50
|
-
|
|
51
|
-
def test_style_should_operate_as_writer_when_two_arguments_are_given
|
|
52
|
-
basic = create_interface
|
|
53
|
-
basic.style(:border_color, '#000000')
|
|
54
|
-
|
|
55
|
-
assert_equal basic.style(:border_color), '#000000'
|
|
56
|
-
end
|
|
57
|
-
|
|
58
|
-
def test_style_should_operate_as_writer_for_border_style_when_three_arguments_are_given
|
|
59
|
-
basic = create_interface
|
|
60
|
-
basic.style(:border, 1, '#ffffff')
|
|
61
|
-
|
|
62
|
-
assert_equal basic.style(:border), [1, '#ffffff']
|
|
63
|
-
end
|
|
64
|
-
|
|
65
|
-
def test_style_should_return_self_when_two_arguments_are_given
|
|
66
|
-
assert_instance_of Basic::Interface, create_interface.style(:border_width, 1)
|
|
67
|
-
end
|
|
68
|
-
|
|
69
|
-
def test_style_should_return_self_when_three_arguments_are_given
|
|
70
|
-
assert_instance_of Basic::Interface, create_interface.style(:border, 1, '#000000')
|
|
71
|
-
end
|
|
72
|
-
|
|
73
|
-
def test_styles_should_properly_set_the_specified_styles_as_Hash
|
|
74
|
-
basic = create_interface
|
|
75
|
-
basic.styles(fill_color: '#ff0000',
|
|
76
|
-
border_color: '#000000',
|
|
77
|
-
border_width: 5,
|
|
78
|
-
visible: false)
|
|
79
|
-
|
|
80
|
-
assert_equal [basic.style(:fill_color),
|
|
81
|
-
basic.style(:border_color),
|
|
82
|
-
basic.style(:border_width),
|
|
83
|
-
basic.style(:visible)],
|
|
84
|
-
['#ff0000', '#000000', 5, false]
|
|
85
|
-
end
|
|
86
|
-
|
|
87
|
-
def test_hide_should_properly_set_false_to_visibility
|
|
88
|
-
basic = create_interface
|
|
89
|
-
basic.hide
|
|
90
|
-
|
|
91
|
-
assert_equal basic.visible?, false
|
|
92
|
-
end
|
|
93
|
-
|
|
94
|
-
def test_hide_should_return_self
|
|
95
|
-
assert_instance_of Basic::Interface, create_interface.hide
|
|
96
|
-
end
|
|
97
|
-
|
|
98
|
-
def test_show_should_properly_set_true_to_visibility
|
|
99
|
-
basic = create_interface
|
|
100
|
-
basic.show
|
|
101
|
-
|
|
102
|
-
assert_equal basic.visible?, true
|
|
103
|
-
end
|
|
104
|
-
|
|
105
|
-
def test_show_should_return_self
|
|
106
|
-
assert_instance_of Basic::Interface, create_interface.show
|
|
107
|
-
end
|
|
108
|
-
end
|
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
require 'test_helper'
|
|
4
|
-
|
|
5
|
-
class Thinreports::Core::Shape::Basic::TestInternal < Minitest::Test
|
|
6
|
-
include Thinreports::TestHelper
|
|
7
|
-
|
|
8
|
-
# Alias
|
|
9
|
-
Basic = Thinreports::Core::Shape::Basic
|
|
10
|
-
|
|
11
|
-
def create_internal(format_config = {})
|
|
12
|
-
report = Thinreports::Report.new layout: layout_file.path
|
|
13
|
-
|
|
14
|
-
Basic::Internal.new report.page, Basic::Format.new(format_config)
|
|
15
|
-
end
|
|
16
|
-
|
|
17
|
-
def test_id_should_operate_as_delegator_of_format
|
|
18
|
-
basic = create_internal('id' => 'basic-id')
|
|
19
|
-
assert_same basic.id, basic.format.id
|
|
20
|
-
end
|
|
21
|
-
|
|
22
|
-
def test_type_should_operate_as_delegator_of_format
|
|
23
|
-
basic = create_internal('type' => 'ellipse')
|
|
24
|
-
assert_same basic.type, basic.format.type
|
|
25
|
-
end
|
|
26
|
-
|
|
27
|
-
def test_style_should_return_instance_of_StyleGraphic
|
|
28
|
-
assert_instance_of Thinreports::Core::Shape::Style::Graphic,
|
|
29
|
-
create_internal.style
|
|
30
|
-
end
|
|
31
|
-
|
|
32
|
-
def test_type_of_asker_should_already_return_true_when_the_specified_type_is_basic
|
|
33
|
-
assert_equal create_internal.type_of?(:basic), true
|
|
34
|
-
end
|
|
35
|
-
|
|
36
|
-
def test_type_of_asker_should_return_true_when_the_specified_type_equal_self_type_name
|
|
37
|
-
result = []
|
|
38
|
-
|
|
39
|
-
result << create_internal('type' => 'rect').type_of?('rect')
|
|
40
|
-
result << create_internal('type' => 'ellipse').type_of?('ellipse')
|
|
41
|
-
result << create_internal('type' => 'line').type_of?('line')
|
|
42
|
-
result << create_internal('type' => 'image').type_of?('image')
|
|
43
|
-
|
|
44
|
-
assert_equal result.all?, true
|
|
45
|
-
end
|
|
46
|
-
|
|
47
|
-
def test_identifier
|
|
48
|
-
basic = create_internal 'id' => 'basic-id'
|
|
49
|
-
|
|
50
|
-
assert_equal 'basic-id', basic.identifier
|
|
51
|
-
|
|
52
|
-
basic.style.stubs(identifier: 'style-identifier')
|
|
53
|
-
assert_equal basic.identifier, 'basic-idstyle-identifier'
|
|
54
|
-
end
|
|
55
|
-
end
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
require 'test_helper'
|
|
4
|
-
|
|
5
|
-
class Thinreports::Core::Shape::ImageBlock::TestInterface < Minitest::Test
|
|
6
|
-
include Thinreports::TestHelper
|
|
7
|
-
|
|
8
|
-
ImageBlock = Thinreports::Core::Shape::ImageBlock
|
|
9
|
-
|
|
10
|
-
def setup
|
|
11
|
-
@report = Thinreports::Report.new layout: layout_file.path
|
|
12
|
-
@page = @report.start_new_page
|
|
13
|
-
end
|
|
14
|
-
|
|
15
|
-
def test_src
|
|
16
|
-
@page.item(:image_block).src('/path/to/image.png')
|
|
17
|
-
assert_equal '/path/to/image.png', @page.item(:image_block).src
|
|
18
|
-
end
|
|
19
|
-
|
|
20
|
-
def test_src=
|
|
21
|
-
@page.item(:image_block).src = '/path/to/image.png'
|
|
22
|
-
assert_equal '/path/to/image.png', @page.item(:image_block).src
|
|
23
|
-
end
|
|
24
|
-
end
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
require 'test_helper'
|
|
4
|
-
|
|
5
|
-
class Thinreports::Core::Shape::ImageBlock::TestInternal < Minitest::Test
|
|
6
|
-
include Thinreports::TestHelper
|
|
7
|
-
|
|
8
|
-
ImageBlock = Thinreports::Core::Shape::ImageBlock
|
|
9
|
-
|
|
10
|
-
def test_src_should_return_the_same_value_as_value_method
|
|
11
|
-
internal = create_internal
|
|
12
|
-
internal.write_value('/path/to/image.png')
|
|
13
|
-
|
|
14
|
-
assert_same internal.src, internal.read_value
|
|
15
|
-
end
|
|
16
|
-
|
|
17
|
-
def test_type_of_asker_should_return_true_when_iblock_value_is_given
|
|
18
|
-
assert_equal create_internal.type_of?('image-block'), true
|
|
19
|
-
end
|
|
20
|
-
|
|
21
|
-
def test_type_of_asker_should_return_true_when_block_value_is_given
|
|
22
|
-
assert_equal create_internal.type_of?(:block), true
|
|
23
|
-
end
|
|
24
|
-
|
|
25
|
-
def create_internal
|
|
26
|
-
report = Thinreports::Report.new layout: layout_file.path
|
|
27
|
-
parent = report.start_new_page
|
|
28
|
-
|
|
29
|
-
ImageBlock::Internal.new parent, ImageBlock::Format.new({})
|
|
30
|
-
end
|
|
31
|
-
end
|
|
@@ -1,111 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
require 'test_helper'
|
|
4
|
-
|
|
5
|
-
class Thinreports::Core::Shape::List::TestFormat < Minitest::Test
|
|
6
|
-
include Thinreports::TestHelper
|
|
7
|
-
|
|
8
|
-
LIST_FORMAT = {
|
|
9
|
-
'type' => 'list',
|
|
10
|
-
'id' => 'list',
|
|
11
|
-
'display' => true,
|
|
12
|
-
'x' => 10.0,
|
|
13
|
-
'y' => 20.0,
|
|
14
|
-
'width' => 30.0,
|
|
15
|
-
'height' => 40.0,
|
|
16
|
-
'content-height' => 255,
|
|
17
|
-
'auto-page-break' => true,
|
|
18
|
-
'header' => {
|
|
19
|
-
'enabled' => true,
|
|
20
|
-
'height' => 10.0,
|
|
21
|
-
'translate' => { 'x' => 210.0, 'y' => 310.0 },
|
|
22
|
-
'items' => []
|
|
23
|
-
},
|
|
24
|
-
'detail' => {
|
|
25
|
-
'height' => 20.0,
|
|
26
|
-
'translate' => { 'x' => 220.0, 'y' => 320.0 },
|
|
27
|
-
'items' => []
|
|
28
|
-
},
|
|
29
|
-
'page-footer' => {
|
|
30
|
-
'enabled' => true,
|
|
31
|
-
'height' => 30.0,
|
|
32
|
-
'translate' => { 'x' => 230.0, 'y' => 330.0 },
|
|
33
|
-
'items' => []
|
|
34
|
-
},
|
|
35
|
-
'footer' => {
|
|
36
|
-
'enabled' => false,
|
|
37
|
-
'height' => 40.0,
|
|
38
|
-
'translate' => { 'x' => 240.0, 'y' => 340.0 },
|
|
39
|
-
'items' => []
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
List = Thinreports::Core::Shape::List
|
|
44
|
-
|
|
45
|
-
def test_has_section?
|
|
46
|
-
format = List::Format.new(LIST_FORMAT)
|
|
47
|
-
|
|
48
|
-
assert_equal true, format.has_section?(:detail)
|
|
49
|
-
assert_equal true, format.has_section?(:page_footer)
|
|
50
|
-
assert_equal false, format.has_section?(:footer)
|
|
51
|
-
end
|
|
52
|
-
|
|
53
|
-
def test_section_height
|
|
54
|
-
format = List::Format.new(LIST_FORMAT)
|
|
55
|
-
|
|
56
|
-
assert_equal 10.0, format.section_height(:header)
|
|
57
|
-
end
|
|
58
|
-
|
|
59
|
-
def test_attribute_readers
|
|
60
|
-
format = List::Format.new(LIST_FORMAT)
|
|
61
|
-
|
|
62
|
-
assert_equal 255, format.height
|
|
63
|
-
assert_equal true, format.auto_page_break?
|
|
64
|
-
assert_equal true, format.has_header?
|
|
65
|
-
assert_equal true, format.has_page_footer?
|
|
66
|
-
assert_equal false, format.has_footer?
|
|
67
|
-
assert_equal 20.0, format.detail_height
|
|
68
|
-
assert_equal 30.0, format.page_footer_height
|
|
69
|
-
assert_equal 40.0, format.footer_height
|
|
70
|
-
assert_equal 10.0, format.header_height
|
|
71
|
-
end
|
|
72
|
-
|
|
73
|
-
def test_section_base_position_top
|
|
74
|
-
page_footer_disabled = LIST_FORMAT
|
|
75
|
-
|
|
76
|
-
format = List::Format.new(page_footer_disabled)
|
|
77
|
-
assert_equal 310.0, format.section_base_position_top(:header)
|
|
78
|
-
assert_equal 320.0, format.section_base_position_top(:detail)
|
|
79
|
-
assert_equal 310.0, format.section_base_position_top(:page_footer)
|
|
80
|
-
assert_equal 0, format.section_base_position_top(:footer)
|
|
81
|
-
|
|
82
|
-
format_footer_enabled = format_section_enabled(true, 'footer', LIST_FORMAT)
|
|
83
|
-
|
|
84
|
-
format = List::Format.new(format_footer_enabled)
|
|
85
|
-
assert_equal 290.0, format.section_base_position_top(:footer)
|
|
86
|
-
|
|
87
|
-
format_footer_enabld_and_page_footer_disabled = format_section_enabled(false, 'page-footer', format_footer_enabled)
|
|
88
|
-
|
|
89
|
-
format = List::Format.new(format_footer_enabld_and_page_footer_disabled)
|
|
90
|
-
assert_equal 320.0, format.section_base_position_top(:footer)
|
|
91
|
-
end
|
|
92
|
-
|
|
93
|
-
def test_initialize_sections
|
|
94
|
-
format = List::Format.new(LIST_FORMAT)
|
|
95
|
-
|
|
96
|
-
assert_instance_of List::SectionFormat, format.sections[:header]
|
|
97
|
-
assert_instance_of List::SectionFormat, format.sections[:detail]
|
|
98
|
-
assert_instance_of List::SectionFormat, format.sections[:page_footer]
|
|
99
|
-
|
|
100
|
-
assert_nil format.sections[:footer]
|
|
101
|
-
end
|
|
102
|
-
|
|
103
|
-
private
|
|
104
|
-
|
|
105
|
-
def format_section_enabled(enable, section, list_format)
|
|
106
|
-
section_format = list_format[section].dup
|
|
107
|
-
section_format['enabled'] = enable
|
|
108
|
-
|
|
109
|
-
list_format.merge(section => section_format)
|
|
110
|
-
end
|
|
111
|
-
end
|