thinreports 0.10.3 → 0.11.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/workflows/test.yml +39 -0
- data/CHANGELOG.md +20 -0
- data/Dockerfile +12 -0
- data/Gemfile +5 -0
- data/README.md +37 -13
- data/Rakefile +1 -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/page_number.rb +1 -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 +6 -1
- data/lib/thinreports/core/shape/text_block/internal.rb +0 -2
- data/lib/thinreports/generator/pdf/prawn_ext/width_of.rb +6 -0
- data/lib/thinreports/layout/base.rb +1 -1
- data/lib/thinreports/layout/version.rb +1 -1
- data/lib/thinreports/report/internal.rb +2 -0
- data/lib/thinreports/version.rb +1 -1
- data/thinreports.gemspec +5 -9
- metadata +6 -204
- data/.travis.yml +0 -32
- 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/features/dynamic_style/expect.pdf +0 -3714
- data/test/features/dynamic_style/image.png +0 -0
- data/test/features/dynamic_style/templates/styles.tlf +0 -1835
- data/test/features/dynamic_style/templates/styles_in_list.tlf +0 -344
- data/test/features/dynamic_style/test_dynamic_style.rb +0 -152
- data/test/features/eudc/eudc.ttf +0 -0
- data/test/features/eudc/expect.pdf +0 -0
- data/test/features/eudc/template.tlf +0 -180
- data/test/features/eudc/test_eudc.rb +0 -27
- data/test/features/feature_test.rb +0 -58
- data/test/features/graphics/expect.pdf +0 -475
- data/test/features/graphics/template.tlf +0 -309
- data/test/features/graphics/test_graphics.rb +0 -12
- data/test/features/hidden_item/expect.pdf +0 -0
- data/test/features/hidden_item/template.tlf +0 -449
- data/test/features/hidden_item/test_hidden_item.rb +0 -12
- data/test/features/image_block/expect.pdf +0 -0
- data/test/features/image_block/img200x100.png +0 -0
- data/test/features/image_block/img50x50.png +0 -0
- data/test/features/image_block/template.tlf +0 -661
- data/test/features/image_block/test_image_block.rb +0 -35
- data/test/features/list_events/expect.pdf +0 -659
- data/test/features/list_events/template.tlf +0 -361
- data/test/features/list_events/test_list_events.rb +0 -36
- data/test/features/list_manually/expect.pdf +0 -599
- data/test/features/list_manually/template.tlf +0 -132
- data/test/features/list_manually/test_list_manually.rb +0 -25
- data/test/features/page_number/expect.pdf +0 -400
- data/test/features/page_number/template.tlf +0 -215
- data/test/features/page_number/test_page_number.rb +0 -24
- data/test/features/page_number_with_list/expect.pdf +0 -721
- data/test/features/page_number_with_list/template.tlf +0 -254
- data/test/features/page_number_with_list/test_page_number_with_list.rb +0 -21
- data/test/features/palleted_png/expect.pdf +0 -0
- data/test/features/palleted_png/palleted_png.png +0 -0
- data/test/features/palleted_png/template.tlf +0 -47
- data/test/features/palleted_png/test_palleted_png.rb +0 -14
- data/test/features/report_callbacks/expect.pdf +0 -169
- data/test/features/report_callbacks/template.tlf +0 -147
- data/test/features/report_callbacks/test_report_callbacks.rb +0 -18
- data/test/features/text_align/expect.pdf +0 -0
- data/test/features/text_align/template.tlf +0 -241
- data/test/features/text_align/test_text_align.rb +0 -12
- data/test/features/text_block_overflow/expect.pdf +0 -0
- data/test/features/text_block_overflow/template.tlf +0 -538
- data/test/features/text_block_overflow/test_text_block_overflow.rb +0 -25
- data/test/features/text_block_singleline/expect.pdf +0 -0
- data/test/features/text_block_singleline/template.tlf +0 -170
- data/test/features/text_block_singleline/test_text_block_singleline.rb +0 -15
- data/test/features/text_block_style/expect.pdf +0 -1391
- data/test/features/text_block_style/templates/basic_styles.tlf +0 -889
- data/test/features/text_block_style/templates/font_size.tlf +0 -383
- data/test/features/text_block_style/test_text_block_style.rb +0 -47
- data/test/features/text_character_spacing/expect.pdf +0 -0
- data/test/features/text_character_spacing/template.tlf +0 -293
- data/test/features/text_character_spacing/test_text_character_spacing.rb +0 -12
- data/test/features/text_word_wrap/expect.pdf +0 -0
- data/test/features/text_word_wrap/template.tlf +0 -297
- data/test/features/text_word_wrap/test_text_word_wrap.rb +0 -30
- data/test/schema_helper.rb +0 -122
- data/test/test_helper.rb +0 -39
- data/test/units/core/format/test_base.rb +0 -152
- data/test/units/core/shape/base/test_internal.rb +0 -87
- data/test/units/core/shape/basic/test_block_format.rb +0 -23
- data/test/units/core/shape/basic/test_block_interface.rb +0 -29
- data/test/units/core/shape/basic/test_block_internal.rb +0 -55
- data/test/units/core/shape/basic/test_format.rb +0 -37
- data/test/units/core/shape/basic/test_interface.rb +0 -108
- data/test/units/core/shape/basic/test_internal.rb +0 -55
- data/test/units/core/shape/image_block/test_interface.rb +0 -24
- data/test/units/core/shape/image_block/test_internal.rb +0 -31
- data/test/units/core/shape/list/test_format.rb +0 -111
- data/test/units/core/shape/list/test_manager.rb +0 -67
- data/test/units/core/shape/list/test_page.rb +0 -156
- data/test/units/core/shape/list/test_page_state.rb +0 -31
- data/test/units/core/shape/list/test_section_format.rb +0 -36
- data/test/units/core/shape/list/test_section_interface.rb +0 -75
- data/test/units/core/shape/list/test_section_internal.rb +0 -50
- data/test/units/core/shape/manager/test_format.rb +0 -38
- data/test/units/core/shape/manager/test_internal.rb +0 -132
- data/test/units/core/shape/manager/test_target.rb +0 -140
- data/test/units/core/shape/page_number/test_format.rb +0 -55
- data/test/units/core/shape/page_number/test_interface.rb +0 -33
- data/test/units/core/shape/page_number/test_internal.rb +0 -81
- data/test/units/core/shape/styles/test_base.rb +0 -191
- data/test/units/core/shape/styles/test_basic.rb +0 -24
- data/test/units/core/shape/styles/test_graphic.rb +0 -50
- data/test/units/core/shape/styles/test_text.rb +0 -97
- data/test/units/core/shape/text/test_format.rb +0 -44
- data/test/units/core/shape/text/test_internal.rb +0 -20
- data/test/units/core/shape/text_block/formatter/test_basic.rb +0 -24
- data/test/units/core/shape/text_block/formatter/test_datetime.rb +0 -49
- data/test/units/core/shape/text_block/formatter/test_number.rb +0 -76
- data/test/units/core/shape/text_block/formatter/test_padding.rb +0 -77
- data/test/units/core/shape/text_block/test_format.rb +0 -169
- data/test/units/core/shape/text_block/test_formatter.rb +0 -28
- data/test/units/core/shape/text_block/test_interface.rb +0 -63
- data/test/units/core/shape/text_block/test_internal.rb +0 -128
- data/test/units/core/test_shape.rb +0 -52
- data/test/units/core/test_utils.rb +0 -68
- data/test/units/generator/pdf/document/graphics/test_attributes.rb +0 -135
- data/test/units/generator/pdf/document/graphics/test_basic.rb +0 -46
- data/test/units/generator/pdf/document/graphics/test_image.rb +0 -46
- data/test/units/generator/pdf/document/graphics/test_text.rb +0 -171
- data/test/units/generator/pdf/document/test_font.rb +0 -110
- data/test/units/generator/pdf/document/test_graphics.rb +0 -42
- data/test/units/generator/pdf/document/test_page.rb +0 -122
- data/test/units/generator/pdf/document/test_parse_color.rb +0 -30
- data/test/units/generator/pdf/prawn_ext/test_calc_image_dimensions.rb +0 -41
- data/test/units/generator/pdf/prawn_ext/test_width_of.rb +0 -22
- data/test/units/generator/pdf/test_document.rb +0 -22
- data/test/units/generator/test_pdf.rb +0 -26
- data/test/units/layout/test_base.rb +0 -41
- data/test/units/layout/test_format.rb +0 -100
- data/test/units/layout/test_legacy_schema.rb +0 -576
- data/test/units/layout/test_version.rb +0 -26
- data/test/units/report/test_base.rb +0 -248
- data/test/units/report/test_internal.rb +0 -206
- data/test/units/test_config.rb +0 -36
- data/test/units/test_layout.rb +0 -12
- data/test/units/test_report.rb +0 -18
|
@@ -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
|
|
@@ -1,67 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
require 'test_helper'
|
|
4
|
-
|
|
5
|
-
class Thinreports::Core::Shape::List::TestManager < Minitest::Test
|
|
6
|
-
include Thinreports::TestHelper
|
|
7
|
-
|
|
8
|
-
# Alias
|
|
9
|
-
List = Thinreports::Core::Shape::List
|
|
10
|
-
|
|
11
|
-
def create_report(&block)
|
|
12
|
-
report = Thinreports::Report.new layout: layout_file.path
|
|
13
|
-
block.call(report) if block_given?
|
|
14
|
-
report
|
|
15
|
-
end
|
|
16
|
-
|
|
17
|
-
def list_manager
|
|
18
|
-
report = create_report {|r| r.start_new_page }
|
|
19
|
-
report.page.list.manager
|
|
20
|
-
end
|
|
21
|
-
|
|
22
|
-
def test_current_page_should_return_the_instance_of_ListPage
|
|
23
|
-
assert_instance_of List::Page, list_manager.current_page
|
|
24
|
-
end
|
|
25
|
-
|
|
26
|
-
def test_current_page_state_should_return_the_instance_of_ListPageState
|
|
27
|
-
assert_instance_of List::PageState, list_manager.current_page_state
|
|
28
|
-
end
|
|
29
|
-
|
|
30
|
-
def test_switch_current_should_replace_own_current_page_property_by_the_given_page
|
|
31
|
-
report = create_report {|r| r.start_new_page }
|
|
32
|
-
list = report.page.list
|
|
33
|
-
new_page = List::Page.new(report.page, list.internal.format)
|
|
34
|
-
|
|
35
|
-
list.manager.switch_current!(new_page)
|
|
36
|
-
|
|
37
|
-
assert_same list.manager.current_page, new_page
|
|
38
|
-
end
|
|
39
|
-
|
|
40
|
-
def test_switch_current_should_replace_own_current_page_state_property_by_internal_property_of_the_given_page
|
|
41
|
-
report = create_report {|r| r.start_new_page }
|
|
42
|
-
list = report.page.list
|
|
43
|
-
new_page = List::Page.new(report.page, list.internal.format)
|
|
44
|
-
|
|
45
|
-
list.manager.switch_current!(new_page)
|
|
46
|
-
|
|
47
|
-
assert_same list.manager.current_page_state, new_page.internal
|
|
48
|
-
end
|
|
49
|
-
|
|
50
|
-
def test_switch_current_should_return_the_self
|
|
51
|
-
report = create_report {|r| r.start_new_page }
|
|
52
|
-
list = report.page.list
|
|
53
|
-
new_page = List::Page.new(report.page, list.internal.format)
|
|
54
|
-
|
|
55
|
-
assert_same list.manager.switch_current!(new_page), list.manager
|
|
56
|
-
end
|
|
57
|
-
|
|
58
|
-
def test_page_count
|
|
59
|
-
report = create_report
|
|
60
|
-
assert_equal report.page_count, 0
|
|
61
|
-
|
|
62
|
-
report.list.page_break
|
|
63
|
-
report.list.page_break
|
|
64
|
-
|
|
65
|
-
assert_equal report.list.manager.page_count, 2
|
|
66
|
-
end
|
|
67
|
-
end
|
|
@@ -1,156 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
require 'test_helper'
|
|
4
|
-
|
|
5
|
-
class Thinreports::Core::Shape::List::TestPage < Minitest::Test
|
|
6
|
-
include Thinreports::TestHelper
|
|
7
|
-
|
|
8
|
-
# Alias
|
|
9
|
-
List = Thinreports::Core::Shape::List
|
|
10
|
-
|
|
11
|
-
LIST_SCHEMA = {
|
|
12
|
-
'type' => 'list',
|
|
13
|
-
'id' => 'list',
|
|
14
|
-
'display' => true,
|
|
15
|
-
'x' => 10.0,
|
|
16
|
-
'y' => 20.0,
|
|
17
|
-
'width' => 30.0,
|
|
18
|
-
'height' => 40.0,
|
|
19
|
-
'content-height' => 255,
|
|
20
|
-
'auto-page-break' => true,
|
|
21
|
-
'header' => {
|
|
22
|
-
'enabled' => true,
|
|
23
|
-
'height' => 10.0,
|
|
24
|
-
'translate' => { 'x' => 210.0, 'y' => 310.0 },
|
|
25
|
-
'items' => []
|
|
26
|
-
},
|
|
27
|
-
'detail' => {
|
|
28
|
-
'height' => 20.0,
|
|
29
|
-
'translate' => { 'x' => 220.0, 'y' => 320.0 },
|
|
30
|
-
'items' => []
|
|
31
|
-
},
|
|
32
|
-
'page-footer' => {
|
|
33
|
-
'enabled' => false,
|
|
34
|
-
'height' => 30.0,
|
|
35
|
-
'translate' => { 'x' => 230.0, 'y' => 330.0 },
|
|
36
|
-
'items' => []
|
|
37
|
-
},
|
|
38
|
-
'footer' => {
|
|
39
|
-
'enabled' => false,
|
|
40
|
-
'height' => 40.0,
|
|
41
|
-
'translate' => { 'x' => 240.0, 'y' => 340.0 },
|
|
42
|
-
'items' => []
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
def create_report(&block)
|
|
47
|
-
report = Thinreports::Report.new layout: layout_file.path
|
|
48
|
-
block.call(report) if block_given?
|
|
49
|
-
report
|
|
50
|
-
end
|
|
51
|
-
|
|
52
|
-
def test_on_page_finalize_callback
|
|
53
|
-
report = create_report
|
|
54
|
-
list = report.list
|
|
55
|
-
|
|
56
|
-
counter = 0
|
|
57
|
-
callback = -> { counter += 1 }
|
|
58
|
-
|
|
59
|
-
list.on_page_finalize(&callback)
|
|
60
|
-
|
|
61
|
-
5.times { list.add_row }
|
|
62
|
-
assert_equal 1, counter
|
|
63
|
-
|
|
64
|
-
report.finalize
|
|
65
|
-
assert_equal 2, counter
|
|
66
|
-
end
|
|
67
|
-
|
|
68
|
-
def test_on_page_footer_insert_callback
|
|
69
|
-
report = create_report
|
|
70
|
-
list = report.list
|
|
71
|
-
|
|
72
|
-
tester = 0
|
|
73
|
-
callback = -> footer {
|
|
74
|
-
assert_instance_of List::SectionInterface, footer
|
|
75
|
-
assert_equal footer.internal.section_name, :page_footer
|
|
76
|
-
|
|
77
|
-
tester += 1
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
list.on_page_footer_insert(&callback)
|
|
81
|
-
|
|
82
|
-
5.times { list.add_row }
|
|
83
|
-
assert_equal 1, tester
|
|
84
|
-
|
|
85
|
-
report.finalize
|
|
86
|
-
assert_equal 2, tester
|
|
87
|
-
end
|
|
88
|
-
|
|
89
|
-
def test_on_footer_insert_callback
|
|
90
|
-
report = create_report
|
|
91
|
-
list = report.list
|
|
92
|
-
|
|
93
|
-
tester = 0
|
|
94
|
-
callback = -> footer {
|
|
95
|
-
assert_instance_of List::SectionInterface, footer
|
|
96
|
-
assert_equal footer.internal.section_name, :footer
|
|
97
|
-
|
|
98
|
-
tester += 1
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
list.on_footer_insert(&callback)
|
|
102
|
-
|
|
103
|
-
5.times { list.add_row }
|
|
104
|
-
assert_equal 0, tester
|
|
105
|
-
|
|
106
|
-
report.finalize
|
|
107
|
-
assert_equal 1, tester
|
|
108
|
-
end
|
|
109
|
-
|
|
110
|
-
def test_copy_should_properly_work_when_list_has_not_header
|
|
111
|
-
report = Thinreports::Report.new layout: layout_file(schema: LIST_NO_HEADER_SCHEMA_JSON).path
|
|
112
|
-
|
|
113
|
-
10.times { report.list.add_row }
|
|
114
|
-
rescue => e
|
|
115
|
-
flunk exception_details(e, 'Not worked when list has not header')
|
|
116
|
-
end
|
|
117
|
-
|
|
118
|
-
def test_copy_when_auto_page_break_disabled
|
|
119
|
-
list_schema = LIST_SCHEMA.merge('auto-page-break' => false)
|
|
120
|
-
|
|
121
|
-
report = Thinreports::Report::Base.new
|
|
122
|
-
layout = Thinreports::Layout::Base.new(layout_file.path)
|
|
123
|
-
|
|
124
|
-
list_format = Thinreports::Core::Shape::List::Format.new(list_schema)
|
|
125
|
-
|
|
126
|
-
list_page = List::Page.new(report.page, list_format)
|
|
127
|
-
|
|
128
|
-
2.times { list_page.add_row }
|
|
129
|
-
|
|
130
|
-
copied_list_page = list_page.copy(Thinreports::Report::Page.new(report, layout))
|
|
131
|
-
|
|
132
|
-
assert list_page.manager.finalized?
|
|
133
|
-
assert copied_list_page.manager.finalized?
|
|
134
|
-
assert_equal 2, copied_list_page.internal.rows.count
|
|
135
|
-
end
|
|
136
|
-
|
|
137
|
-
def test_copy_when_auto_page_break_enabled
|
|
138
|
-
list_schema = LIST_SCHEMA.merge('auto-page-break' => true)
|
|
139
|
-
|
|
140
|
-
report = Thinreports::Report::Base.new
|
|
141
|
-
layout = Thinreports::Layout::Base.new(layout_file.path)
|
|
142
|
-
|
|
143
|
-
list_format = Thinreports::Core::Shape::List::Format.new(list_schema)
|
|
144
|
-
|
|
145
|
-
list_page = List::Page.new(report.page, list_format)
|
|
146
|
-
|
|
147
|
-
2.times { list_page.add_row }
|
|
148
|
-
list_page.manager.finalize_page
|
|
149
|
-
|
|
150
|
-
copied_list_page = list_page.copy(Thinreports::Report::Page.new(report, layout))
|
|
151
|
-
|
|
152
|
-
refute list_page.manager.finalized?
|
|
153
|
-
refute copied_list_page.manager.finalized?
|
|
154
|
-
assert_empty copied_list_page.internal.rows
|
|
155
|
-
end
|
|
156
|
-
end
|