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,140 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
require 'test_helper'
|
|
4
|
-
|
|
5
|
-
class Thinreports::Core::Shape::Manager::TestTarget < Minitest::Test
|
|
6
|
-
include Thinreports::TestHelper
|
|
7
|
-
|
|
8
|
-
# Alias
|
|
9
|
-
Shape = Thinreports::Core::Shape
|
|
10
|
-
|
|
11
|
-
class TestManager
|
|
12
|
-
include Shape::Manager::Target
|
|
13
|
-
|
|
14
|
-
attr_reader :layout, :report
|
|
15
|
-
|
|
16
|
-
def initialize(report, layout)
|
|
17
|
-
@report = report
|
|
18
|
-
@layout = layout
|
|
19
|
-
|
|
20
|
-
initialize_manager(layout.format) do |f|
|
|
21
|
-
Shape::Interface(self, f)
|
|
22
|
-
end
|
|
23
|
-
end
|
|
24
|
-
end
|
|
25
|
-
|
|
26
|
-
def create_shape_format(type, id)
|
|
27
|
-
Shape::Format(type).new('id' => id, 'type' => type)
|
|
28
|
-
end
|
|
29
|
-
|
|
30
|
-
def create_manager
|
|
31
|
-
report = Thinreports::Report.new layout: layout_file.path
|
|
32
|
-
layout = report.layout
|
|
33
|
-
|
|
34
|
-
TestManager.new(report, layout)
|
|
35
|
-
end
|
|
36
|
-
|
|
37
|
-
def test_shorthand_for_finding_item
|
|
38
|
-
manager = create_manager
|
|
39
|
-
|
|
40
|
-
text_block1 = manager[:text_block]
|
|
41
|
-
text_block1.value = 'block1'
|
|
42
|
-
|
|
43
|
-
assert_instance_of Shape::TextBlock::Interface, manager[:text_block]
|
|
44
|
-
assert_instance_of Shape::ImageBlock::Interface, manager[:image_block]
|
|
45
|
-
assert_instance_of Shape::Basic::Interface, manager[:rect_with_id]
|
|
46
|
-
|
|
47
|
-
assert_raises Thinreports::Errors::UnknownItemId do
|
|
48
|
-
manager[:unknown_id]
|
|
49
|
-
end
|
|
50
|
-
|
|
51
|
-
assert_raises Thinreports::Errors::UnknownItemId do
|
|
52
|
-
manager[:default]
|
|
53
|
-
end
|
|
54
|
-
end
|
|
55
|
-
|
|
56
|
-
def test_shorthand_for_setting_value_to_block
|
|
57
|
-
manager = create_manager
|
|
58
|
-
|
|
59
|
-
manager[:text_block] = 'value of text block1'
|
|
60
|
-
assert_equal 'value of text block1', manager.item(:text_block).value
|
|
61
|
-
|
|
62
|
-
manager[:image_block] = '/path/to/image.png'
|
|
63
|
-
assert_equal '/path/to/image.png', manager.item(:image_block).src
|
|
64
|
-
|
|
65
|
-
assert_raises(NoMethodError) { manager[:rect_with_id] = 'value' }
|
|
66
|
-
assert_raises(Thinreports::Errors::UnknownItemId) { manager[:default] = 'value' }
|
|
67
|
-
end
|
|
68
|
-
|
|
69
|
-
def test_manager_should_return_instance_of_ManagerInternal
|
|
70
|
-
assert_instance_of Shape::Manager::Internal, create_manager.manager
|
|
71
|
-
end
|
|
72
|
-
|
|
73
|
-
def test_item_should_properly_return_shape_with_the_specified_Symbol_id
|
|
74
|
-
assert_equal create_manager.item(:text_block).id, 'text_block'
|
|
75
|
-
end
|
|
76
|
-
|
|
77
|
-
def test_item_should_properly_return_shape_with_the_specified_String_id
|
|
78
|
-
assert_equal create_manager.item('text_block').id, 'text_block'
|
|
79
|
-
end
|
|
80
|
-
|
|
81
|
-
def test_item_should_raise_when_the_shape_with_the_specified_id_is_not_found
|
|
82
|
-
assert_raises Thinreports::Errors::UnknownItemId do
|
|
83
|
-
create_manager.item(:unknown)
|
|
84
|
-
end
|
|
85
|
-
end
|
|
86
|
-
|
|
87
|
-
def test_item_should_set_an_shape_as_argument_when_a_block_is_given
|
|
88
|
-
id = nil
|
|
89
|
-
create_manager.item(:text_block) {|s| id = s.id }
|
|
90
|
-
assert_equal id, 'text_block'
|
|
91
|
-
end
|
|
92
|
-
|
|
93
|
-
def test_item_should_raise_when_type_of_shape_with_the_specified_id_is_list
|
|
94
|
-
assert_raises Thinreports::Errors::UnknownItemId do
|
|
95
|
-
create_manager.item(:default)
|
|
96
|
-
end
|
|
97
|
-
end
|
|
98
|
-
|
|
99
|
-
def test_list_should_properly_return_list_with_the_specified_Symbol_id
|
|
100
|
-
assert_equal create_manager.list(:default).id, 'default'
|
|
101
|
-
end
|
|
102
|
-
|
|
103
|
-
def test_list_should_properly_return_list_with_the_specified_String_id
|
|
104
|
-
assert_equal create_manager.list('default').id, 'default'
|
|
105
|
-
end
|
|
106
|
-
|
|
107
|
-
def test_list_should_raise_when_type_of_shape_with_the_specified_id_is_not_list
|
|
108
|
-
assert_raises Thinreports::Errors::UnknownItemId do
|
|
109
|
-
create_manager.list(:text_block)
|
|
110
|
-
end
|
|
111
|
-
end
|
|
112
|
-
|
|
113
|
-
def test_list_should_use_default_as_id_when_id_is_omitted
|
|
114
|
-
assert_equal create_manager.list.id, 'default'
|
|
115
|
-
end
|
|
116
|
-
|
|
117
|
-
def test_values_should_properly_set_values_to_shapes_with_specified_id
|
|
118
|
-
manager = create_manager
|
|
119
|
-
manager.values(text_block: 1000)
|
|
120
|
-
|
|
121
|
-
assert_equal manager.item(:text_block).value, 1000
|
|
122
|
-
end
|
|
123
|
-
|
|
124
|
-
def test_item_exists_asker_should_return_true_when_shape_with_specified_Symbol_id_is_found
|
|
125
|
-
assert_equal create_manager.item_exists?(:text_block), true
|
|
126
|
-
end
|
|
127
|
-
|
|
128
|
-
def test_item_exists_asker_should_return_true_when_shape_with_specified_String_id_is_found
|
|
129
|
-
assert_equal create_manager.item_exists?('text_block'), true
|
|
130
|
-
end
|
|
131
|
-
|
|
132
|
-
def test_item_exists_asker_should_return_false_when_shape_with_specified_id_not_found
|
|
133
|
-
assert_equal create_manager.item_exists?('unknown'), false
|
|
134
|
-
end
|
|
135
|
-
|
|
136
|
-
def test_exists_asker_should_operate_like_as_item_exists_asker
|
|
137
|
-
manager = create_manager
|
|
138
|
-
assert_equal manager.exists?(:unknown), manager.item_exists?(:unknown)
|
|
139
|
-
end
|
|
140
|
-
end
|
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
require 'test_helper'
|
|
4
|
-
|
|
5
|
-
class Thinreports::Core::Shape::PageNumber::TestFormat < Minitest::Test
|
|
6
|
-
include Thinreports::TestHelper
|
|
7
|
-
|
|
8
|
-
PAGE_NUMBER_FORMAT = {
|
|
9
|
-
'id' => '',
|
|
10
|
-
'type' => 'page-number',
|
|
11
|
-
'display' => true,
|
|
12
|
-
'x' => 100.0,
|
|
13
|
-
'y' => 200.0,
|
|
14
|
-
'width' => 300.0,
|
|
15
|
-
'height' => 400.0,
|
|
16
|
-
'format' => '{page} / {total}',
|
|
17
|
-
'target' => '',
|
|
18
|
-
'style' => {
|
|
19
|
-
'overflow' => 'truncate',
|
|
20
|
-
'letter-spacing' => 'normal',
|
|
21
|
-
'color' => '#000000',
|
|
22
|
-
'font-size' => 18,
|
|
23
|
-
'font-family' => ['Helvetica'],
|
|
24
|
-
'line-height' => 60,
|
|
25
|
-
'line-height-ratio' => 1.5,
|
|
26
|
-
'text-align' => 'left'
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
PageNumber = Thinreports::Core::Shape::PageNumber
|
|
31
|
-
|
|
32
|
-
def test_attribute_readers
|
|
33
|
-
format = PageNumber::Format.new(PAGE_NUMBER_FORMAT)
|
|
34
|
-
|
|
35
|
-
assert_equal 'truncate', format.overflow
|
|
36
|
-
assert_equal '', format.target
|
|
37
|
-
assert_equal '{page} / {total}', format.default_format
|
|
38
|
-
end
|
|
39
|
-
|
|
40
|
-
def test_id
|
|
41
|
-
format = PageNumber::Format.new(PAGE_NUMBER_FORMAT)
|
|
42
|
-
assert_match(/^__pageno\d+$/, format.id)
|
|
43
|
-
|
|
44
|
-
format = PageNumber::Format.new(PAGE_NUMBER_FORMAT.merge('id' => 'foo'))
|
|
45
|
-
assert_equal 'foo', format.id
|
|
46
|
-
end
|
|
47
|
-
|
|
48
|
-
def test_for_report?
|
|
49
|
-
format_for_report = PageNumber::Format.new(PAGE_NUMBER_FORMAT)
|
|
50
|
-
assert_equal true, format_for_report.for_report?
|
|
51
|
-
|
|
52
|
-
format_for_list = PageNumber::Format.new(PAGE_NUMBER_FORMAT.merge('target' => 'target_list_id'))
|
|
53
|
-
assert_equal false, format_for_list.for_report?
|
|
54
|
-
end
|
|
55
|
-
end
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
require 'test_helper'
|
|
4
|
-
|
|
5
|
-
class Thinreports::Core::Shape::PageNumber::TestInterface < Minitest::Test
|
|
6
|
-
include Thinreports::TestHelper
|
|
7
|
-
|
|
8
|
-
PageNumber = Thinreports::Core::Shape::PageNumber
|
|
9
|
-
|
|
10
|
-
def create_pageno(format = {})
|
|
11
|
-
report = Thinreports::Report.new layout: layout_file.path
|
|
12
|
-
parent = report.start_new_page
|
|
13
|
-
|
|
14
|
-
PageNumber::Interface.new parent, PageNumber::Format.new(format)
|
|
15
|
-
end
|
|
16
|
-
|
|
17
|
-
def test_format
|
|
18
|
-
pageno = create_pageno 'format' => '{page}'
|
|
19
|
-
|
|
20
|
-
assert_equal pageno.format, '{page}'
|
|
21
|
-
pageno.format('{page} / {total}')
|
|
22
|
-
assert_equal pageno.format, '{page} / {total}'
|
|
23
|
-
end
|
|
24
|
-
|
|
25
|
-
def test_reset_format
|
|
26
|
-
pageno = create_pageno 'format' => '{page}'
|
|
27
|
-
|
|
28
|
-
pageno.format('-- {page} --')
|
|
29
|
-
pageno.reset_format
|
|
30
|
-
|
|
31
|
-
assert_equal pageno.format, '{page}'
|
|
32
|
-
end
|
|
33
|
-
end
|
|
@@ -1,81 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
require 'test_helper'
|
|
4
|
-
|
|
5
|
-
class Thinreports::Core::Shape::PageNumber::TestInternal < Minitest::Test
|
|
6
|
-
include Thinreports::TestHelper
|
|
7
|
-
|
|
8
|
-
PageNumber = Thinreports::Core::Shape::PageNumber
|
|
9
|
-
|
|
10
|
-
def setup
|
|
11
|
-
@report = Thinreports::Report.new layout: layout_file.path
|
|
12
|
-
@report.start_new_page
|
|
13
|
-
end
|
|
14
|
-
|
|
15
|
-
def init_pageno(format = {})
|
|
16
|
-
PageNumber::Internal.new(@report.page, PageNumber::Format.new(format))
|
|
17
|
-
end
|
|
18
|
-
|
|
19
|
-
def test_read_format
|
|
20
|
-
pageno = init_pageno('format' => 'Page {page}')
|
|
21
|
-
|
|
22
|
-
assert_equal pageno.read_format, 'Page {page}'
|
|
23
|
-
end
|
|
24
|
-
|
|
25
|
-
def test_write_format
|
|
26
|
-
pageno = init_pageno('format' => 'Page {page}')
|
|
27
|
-
pageno.write_format('{page}')
|
|
28
|
-
|
|
29
|
-
assert_equal pageno.read_format, '{page}'
|
|
30
|
-
end
|
|
31
|
-
|
|
32
|
-
def test_reset_format
|
|
33
|
-
pageno = init_pageno('format' => '{page}')
|
|
34
|
-
pageno.write_format('Page {page}')
|
|
35
|
-
pageno.reset_format
|
|
36
|
-
|
|
37
|
-
assert_equal pageno.read_format, '{page}'
|
|
38
|
-
end
|
|
39
|
-
|
|
40
|
-
def test_build_format
|
|
41
|
-
pageno = init_pageno('format' => '{page} / {total}')
|
|
42
|
-
assert_equal pageno.build_format(1, 100), '1 / 100'
|
|
43
|
-
|
|
44
|
-
pageno.write_format('{page}')
|
|
45
|
-
assert_equal pageno.build_format(1, 100), '1'
|
|
46
|
-
|
|
47
|
-
@report.start_page_number_from 5
|
|
48
|
-
pageno = init_pageno('format' => '{page} / {total}')
|
|
49
|
-
assert_equal pageno.build_format(1, 100), '5 / 104'
|
|
50
|
-
|
|
51
|
-
# if counted target is a List shape
|
|
52
|
-
pageno = init_pageno('format' => '{page} / {total}',
|
|
53
|
-
'target' => 'list-id')
|
|
54
|
-
assert_equal pageno.build_format(1, 100), '1 / 100'
|
|
55
|
-
end
|
|
56
|
-
|
|
57
|
-
def test_type_of
|
|
58
|
-
pageno = init_pageno
|
|
59
|
-
assert pageno.type_of?('page-number')
|
|
60
|
-
end
|
|
61
|
-
|
|
62
|
-
def test_style
|
|
63
|
-
pageno = init_pageno
|
|
64
|
-
style = pageno.style
|
|
65
|
-
|
|
66
|
-
assert_instance_of PageNumber::Style, style
|
|
67
|
-
assert_same pageno.style, style
|
|
68
|
-
end
|
|
69
|
-
|
|
70
|
-
def test_for_report
|
|
71
|
-
pageno = init_pageno('target' => '')
|
|
72
|
-
assert_equal pageno.for_report?, true
|
|
73
|
-
|
|
74
|
-
pageno = init_pageno('target' => 'list-id')
|
|
75
|
-
assert_equal pageno.for_report?, false
|
|
76
|
-
end
|
|
77
|
-
|
|
78
|
-
def test_Style_class
|
|
79
|
-
refute_includes PageNumber::Style.accessible_styles, :valign
|
|
80
|
-
end
|
|
81
|
-
end
|
|
@@ -1,191 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
require 'test_helper'
|
|
4
|
-
|
|
5
|
-
class Thinreports::Core::Shape::Style::TestBase < Minitest::Test
|
|
6
|
-
include Thinreports::TestHelper
|
|
7
|
-
|
|
8
|
-
# Alias
|
|
9
|
-
Style = Thinreports::Core::Shape::Style::Base
|
|
10
|
-
|
|
11
|
-
def create_basic_format(base_style = {})
|
|
12
|
-
Thinreports::Core::Shape::Basic::Format.new('style' => base_style)
|
|
13
|
-
end
|
|
14
|
-
|
|
15
|
-
def create_style(base_style = {})
|
|
16
|
-
Style.new(create_basic_format(base_style))
|
|
17
|
-
end
|
|
18
|
-
|
|
19
|
-
def create_new_style(base_style = {}, &block)
|
|
20
|
-
klass = ::Class.new(Style, &block)
|
|
21
|
-
klass.new(create_basic_format(base_style))
|
|
22
|
-
end
|
|
23
|
-
|
|
24
|
-
def test_self_style_reader_should_properly_define_a_reading_method
|
|
25
|
-
style = create_new_style {
|
|
26
|
-
style_reader :hoge, 'foo'
|
|
27
|
-
}
|
|
28
|
-
assert_respond_to style, :hoge
|
|
29
|
-
end
|
|
30
|
-
|
|
31
|
-
def test_self_style_writer_should_properly_define_a_writing_method
|
|
32
|
-
style = create_new_style {
|
|
33
|
-
style_writer :hoge, 'foo'
|
|
34
|
-
}
|
|
35
|
-
assert_respond_to style, :hoge=
|
|
36
|
-
end
|
|
37
|
-
|
|
38
|
-
def test_self_style_accessor_should_properly_defines_reading_and_writing_methods
|
|
39
|
-
style = create_new_style {
|
|
40
|
-
style_accessor :hoge, 'foo'
|
|
41
|
-
}
|
|
42
|
-
assert_respond_to style, :hoge
|
|
43
|
-
assert_respond_to style, :hoge=
|
|
44
|
-
end
|
|
45
|
-
|
|
46
|
-
def test_self_style_accessible_should_add_specified_styles_to_the_accessible_styles_variable
|
|
47
|
-
style = create_new_style {
|
|
48
|
-
style_accessible :hoge
|
|
49
|
-
style_accessible :foo, :bar
|
|
50
|
-
}
|
|
51
|
-
assert_equal style.class.accessible_styles, [:hoge, :foo, :bar]
|
|
52
|
-
end
|
|
53
|
-
|
|
54
|
-
def test_self_accessible_styles_variable_should_not_be_shared_each_SubClasses
|
|
55
|
-
style1 = create_new_style {
|
|
56
|
-
style_accessible :hoge, :foo
|
|
57
|
-
}
|
|
58
|
-
assert_equal style1.class.accessible_styles, [:hoge, :foo]
|
|
59
|
-
end
|
|
60
|
-
|
|
61
|
-
def test_self_accessible_styles_variable_should_be_inherited_to_SubClass
|
|
62
|
-
super_klass = ::Class.new(Style) {
|
|
63
|
-
style_accessible :hoge, :foo
|
|
64
|
-
}
|
|
65
|
-
sub_klass = ::Class.new(super_klass)
|
|
66
|
-
|
|
67
|
-
assert_equal sub_klass.accessible_styles, super_klass.accessible_styles
|
|
68
|
-
end
|
|
69
|
-
|
|
70
|
-
def test_self_accessible_styles_variables_of_SubClass_should_not_interfere_mutually
|
|
71
|
-
super_klass = ::Class.new(Style) {
|
|
72
|
-
style_accessible :foo, :bar
|
|
73
|
-
}
|
|
74
|
-
sub_klass1 = ::Class.new(super_klass)
|
|
75
|
-
sub_klass2 = ::Class.new(super_klass)
|
|
76
|
-
|
|
77
|
-
refute_same sub_klass1.accessible_styles, sub_klass2.accessible_styles
|
|
78
|
-
end
|
|
79
|
-
|
|
80
|
-
def test_read_internal_style_should_return_style_of_styles_when_style_is_found_in_styles
|
|
81
|
-
style = create_style('hoge' => 'base_style')
|
|
82
|
-
style.write_internal_style('hoge', 'new_style')
|
|
83
|
-
|
|
84
|
-
assert_equal style.read_internal_style('hoge'), 'new_style'
|
|
85
|
-
end
|
|
86
|
-
|
|
87
|
-
def test_read_internal_style_should_return_style_of_base_when_style_is_not_found_in_styles
|
|
88
|
-
style = create_style('hoge' => 'base_style')
|
|
89
|
-
assert_equal style.read_internal_style('hoge'), 'base_style'
|
|
90
|
-
end
|
|
91
|
-
|
|
92
|
-
def test_write_internal_style_should_properly_set_style_to_the_styles
|
|
93
|
-
style = create_style({})
|
|
94
|
-
style.write_internal_style('hoge', 'hoge_style')
|
|
95
|
-
|
|
96
|
-
assert_equal style.styles['hoge'], 'hoge_style'
|
|
97
|
-
end
|
|
98
|
-
|
|
99
|
-
def test_has_style_asker_should_return_true_when_specified_style_method_is_accessible
|
|
100
|
-
style = create_new_style {
|
|
101
|
-
style_accessible :hoge, :foo
|
|
102
|
-
}
|
|
103
|
-
assert_equal style.has_style?(:foo), true
|
|
104
|
-
end
|
|
105
|
-
|
|
106
|
-
def test_has_style_asker_should_return_false_when_specified_style_method_is_not_accessible
|
|
107
|
-
style = create_new_style {
|
|
108
|
-
style_accessible :foo
|
|
109
|
-
}
|
|
110
|
-
assert_equal style.has_style?(:hoge), false
|
|
111
|
-
end
|
|
112
|
-
|
|
113
|
-
def test_verify_style_value_should_raise_when_value_is_not_included_in_list
|
|
114
|
-
assert_raises ArgumentError do
|
|
115
|
-
create_style.send(:verify_style_value, :invalid, [:hoge, :foo, :bar])
|
|
116
|
-
end
|
|
117
|
-
end
|
|
118
|
-
|
|
119
|
-
def test_verify_style_value_should_not_raise_when_value_is_found_in_list
|
|
120
|
-
create_style.send(:verify_style_value, :valid, [:hoge, :valid, :foo])
|
|
121
|
-
rescue ArgumentError
|
|
122
|
-
flunk
|
|
123
|
-
end
|
|
124
|
-
|
|
125
|
-
def test_reader_method_caller_should_properly_delegate_to_real_method
|
|
126
|
-
style = create_new_style('hoge_style' => 'hoge_style_value') {
|
|
127
|
-
style_accessible :hoge
|
|
128
|
-
style_reader :hoge, 'hoge_style'
|
|
129
|
-
}
|
|
130
|
-
assert_equal style[:hoge], 'hoge_style_value'
|
|
131
|
-
end
|
|
132
|
-
|
|
133
|
-
def test_writer_method_caller_should_properly_delegate_to_real_method
|
|
134
|
-
style = create_new_style {
|
|
135
|
-
style_accessible :hoge
|
|
136
|
-
style_accessor :hoge, 'hoge_style'
|
|
137
|
-
}
|
|
138
|
-
style[:hoge] = 'hoge_style_value'
|
|
139
|
-
assert_equal style.hoge, 'hoge_style_value'
|
|
140
|
-
end
|
|
141
|
-
|
|
142
|
-
def test_reader_method_caller_should_raise_when_style_is_not_accessible
|
|
143
|
-
assert_raises Thinreports::Errors::UnknownShapeStyleName do
|
|
144
|
-
create_new_style[:unknown]
|
|
145
|
-
end
|
|
146
|
-
end
|
|
147
|
-
|
|
148
|
-
def test_writer_method_caller_should_raise_when_style_is_not_accessible
|
|
149
|
-
assert_raises Thinreports::Errors::UnknownShapeStyleName do
|
|
150
|
-
create_new_style[:unknown] = 'value'
|
|
151
|
-
end
|
|
152
|
-
end
|
|
153
|
-
|
|
154
|
-
def test_copy_should_return_the_instance_of_the_same_class_as_itself
|
|
155
|
-
style = create_style
|
|
156
|
-
assert_instance_of Style, style.copy
|
|
157
|
-
end
|
|
158
|
-
|
|
159
|
-
def test_styles_of_copied_style_should_not_same_the_styles_of_original
|
|
160
|
-
style = create_style
|
|
161
|
-
refute_same style.styles, style.copy.styles
|
|
162
|
-
end
|
|
163
|
-
|
|
164
|
-
def test_styles_of_copied_style_should_equal_the_style_of_original
|
|
165
|
-
style = create_style
|
|
166
|
-
style.write_internal_style('foo', 'foo_value')
|
|
167
|
-
assert_equal style.styles['foo'], style.copy.styles['foo']
|
|
168
|
-
end
|
|
169
|
-
|
|
170
|
-
def test_identifier_should_return_empty_string_when_the_style_is_not_set
|
|
171
|
-
style = create_style
|
|
172
|
-
assert_equal style.identifier, ''
|
|
173
|
-
end
|
|
174
|
-
|
|
175
|
-
def test_identifier_should_return_the_same_as_hash_value_of_styles_when_style_is_set_something
|
|
176
|
-
style = create_style
|
|
177
|
-
style.write_internal_style('foo', 'foo_value')
|
|
178
|
-
|
|
179
|
-
assert_equal style.identifier, style.styles.hash.to_s
|
|
180
|
-
end
|
|
181
|
-
|
|
182
|
-
def test_finalized_styles
|
|
183
|
-
base_styles = { 'foo' => 'default foo', 'bar' => 'default bar' }
|
|
184
|
-
|
|
185
|
-
style = create_style(base_styles)
|
|
186
|
-
style.write_internal_style('foo', 'new foo')
|
|
187
|
-
|
|
188
|
-
assert_equal({ 'foo' => 'new foo', 'bar' => 'default bar' }, style.finalized_styles)
|
|
189
|
-
assert_same style.finalized_styles, style.finalized_styles
|
|
190
|
-
end
|
|
191
|
-
end
|