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.
Files changed (150) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/test.yml +39 -0
  3. data/CHANGELOG.md +20 -0
  4. data/Dockerfile +12 -0
  5. data/Gemfile +5 -0
  6. data/README.md +37 -13
  7. data/Rakefile +1 -0
  8. data/lib/thinreports/core/shape/image_block.rb +1 -1
  9. data/lib/thinreports/core/shape/list.rb +1 -1
  10. data/lib/thinreports/core/shape/page_number.rb +1 -1
  11. data/lib/thinreports/core/shape/text.rb +1 -1
  12. data/lib/thinreports/core/shape/text_block.rb +1 -1
  13. data/lib/thinreports/core/shape/text_block/formatter/number.rb +6 -1
  14. data/lib/thinreports/core/shape/text_block/internal.rb +0 -2
  15. data/lib/thinreports/generator/pdf/prawn_ext/width_of.rb +6 -0
  16. data/lib/thinreports/layout/base.rb +1 -1
  17. data/lib/thinreports/layout/version.rb +1 -1
  18. data/lib/thinreports/report/internal.rb +2 -0
  19. data/lib/thinreports/version.rb +1 -1
  20. data/thinreports.gemspec +5 -9
  21. metadata +6 -204
  22. data/.travis.yml +0 -32
  23. data/test/data/font.ttf +0 -0
  24. data/test/data/image_normal.jpg +0 -0
  25. data/test/data/image_normal.png +0 -0
  26. data/test/data/image_normal_jpg_noext +0 -0
  27. data/test/data/image_normal_png_noext +0 -0
  28. data/test/data/image_pallete_based.png +0 -0
  29. data/test/data/legacy_layout/all-items.tlf +0 -1
  30. data/test/features/dynamic_style/expect.pdf +0 -3714
  31. data/test/features/dynamic_style/image.png +0 -0
  32. data/test/features/dynamic_style/templates/styles.tlf +0 -1835
  33. data/test/features/dynamic_style/templates/styles_in_list.tlf +0 -344
  34. data/test/features/dynamic_style/test_dynamic_style.rb +0 -152
  35. data/test/features/eudc/eudc.ttf +0 -0
  36. data/test/features/eudc/expect.pdf +0 -0
  37. data/test/features/eudc/template.tlf +0 -180
  38. data/test/features/eudc/test_eudc.rb +0 -27
  39. data/test/features/feature_test.rb +0 -58
  40. data/test/features/graphics/expect.pdf +0 -475
  41. data/test/features/graphics/template.tlf +0 -309
  42. data/test/features/graphics/test_graphics.rb +0 -12
  43. data/test/features/hidden_item/expect.pdf +0 -0
  44. data/test/features/hidden_item/template.tlf +0 -449
  45. data/test/features/hidden_item/test_hidden_item.rb +0 -12
  46. data/test/features/image_block/expect.pdf +0 -0
  47. data/test/features/image_block/img200x100.png +0 -0
  48. data/test/features/image_block/img50x50.png +0 -0
  49. data/test/features/image_block/template.tlf +0 -661
  50. data/test/features/image_block/test_image_block.rb +0 -35
  51. data/test/features/list_events/expect.pdf +0 -659
  52. data/test/features/list_events/template.tlf +0 -361
  53. data/test/features/list_events/test_list_events.rb +0 -36
  54. data/test/features/list_manually/expect.pdf +0 -599
  55. data/test/features/list_manually/template.tlf +0 -132
  56. data/test/features/list_manually/test_list_manually.rb +0 -25
  57. data/test/features/page_number/expect.pdf +0 -400
  58. data/test/features/page_number/template.tlf +0 -215
  59. data/test/features/page_number/test_page_number.rb +0 -24
  60. data/test/features/page_number_with_list/expect.pdf +0 -721
  61. data/test/features/page_number_with_list/template.tlf +0 -254
  62. data/test/features/page_number_with_list/test_page_number_with_list.rb +0 -21
  63. data/test/features/palleted_png/expect.pdf +0 -0
  64. data/test/features/palleted_png/palleted_png.png +0 -0
  65. data/test/features/palleted_png/template.tlf +0 -47
  66. data/test/features/palleted_png/test_palleted_png.rb +0 -14
  67. data/test/features/report_callbacks/expect.pdf +0 -169
  68. data/test/features/report_callbacks/template.tlf +0 -147
  69. data/test/features/report_callbacks/test_report_callbacks.rb +0 -18
  70. data/test/features/text_align/expect.pdf +0 -0
  71. data/test/features/text_align/template.tlf +0 -241
  72. data/test/features/text_align/test_text_align.rb +0 -12
  73. data/test/features/text_block_overflow/expect.pdf +0 -0
  74. data/test/features/text_block_overflow/template.tlf +0 -538
  75. data/test/features/text_block_overflow/test_text_block_overflow.rb +0 -25
  76. data/test/features/text_block_singleline/expect.pdf +0 -0
  77. data/test/features/text_block_singleline/template.tlf +0 -170
  78. data/test/features/text_block_singleline/test_text_block_singleline.rb +0 -15
  79. data/test/features/text_block_style/expect.pdf +0 -1391
  80. data/test/features/text_block_style/templates/basic_styles.tlf +0 -889
  81. data/test/features/text_block_style/templates/font_size.tlf +0 -383
  82. data/test/features/text_block_style/test_text_block_style.rb +0 -47
  83. data/test/features/text_character_spacing/expect.pdf +0 -0
  84. data/test/features/text_character_spacing/template.tlf +0 -293
  85. data/test/features/text_character_spacing/test_text_character_spacing.rb +0 -12
  86. data/test/features/text_word_wrap/expect.pdf +0 -0
  87. data/test/features/text_word_wrap/template.tlf +0 -297
  88. data/test/features/text_word_wrap/test_text_word_wrap.rb +0 -30
  89. data/test/schema_helper.rb +0 -122
  90. data/test/test_helper.rb +0 -39
  91. data/test/units/core/format/test_base.rb +0 -152
  92. data/test/units/core/shape/base/test_internal.rb +0 -87
  93. data/test/units/core/shape/basic/test_block_format.rb +0 -23
  94. data/test/units/core/shape/basic/test_block_interface.rb +0 -29
  95. data/test/units/core/shape/basic/test_block_internal.rb +0 -55
  96. data/test/units/core/shape/basic/test_format.rb +0 -37
  97. data/test/units/core/shape/basic/test_interface.rb +0 -108
  98. data/test/units/core/shape/basic/test_internal.rb +0 -55
  99. data/test/units/core/shape/image_block/test_interface.rb +0 -24
  100. data/test/units/core/shape/image_block/test_internal.rb +0 -31
  101. data/test/units/core/shape/list/test_format.rb +0 -111
  102. data/test/units/core/shape/list/test_manager.rb +0 -67
  103. data/test/units/core/shape/list/test_page.rb +0 -156
  104. data/test/units/core/shape/list/test_page_state.rb +0 -31
  105. data/test/units/core/shape/list/test_section_format.rb +0 -36
  106. data/test/units/core/shape/list/test_section_interface.rb +0 -75
  107. data/test/units/core/shape/list/test_section_internal.rb +0 -50
  108. data/test/units/core/shape/manager/test_format.rb +0 -38
  109. data/test/units/core/shape/manager/test_internal.rb +0 -132
  110. data/test/units/core/shape/manager/test_target.rb +0 -140
  111. data/test/units/core/shape/page_number/test_format.rb +0 -55
  112. data/test/units/core/shape/page_number/test_interface.rb +0 -33
  113. data/test/units/core/shape/page_number/test_internal.rb +0 -81
  114. data/test/units/core/shape/styles/test_base.rb +0 -191
  115. data/test/units/core/shape/styles/test_basic.rb +0 -24
  116. data/test/units/core/shape/styles/test_graphic.rb +0 -50
  117. data/test/units/core/shape/styles/test_text.rb +0 -97
  118. data/test/units/core/shape/text/test_format.rb +0 -44
  119. data/test/units/core/shape/text/test_internal.rb +0 -20
  120. data/test/units/core/shape/text_block/formatter/test_basic.rb +0 -24
  121. data/test/units/core/shape/text_block/formatter/test_datetime.rb +0 -49
  122. data/test/units/core/shape/text_block/formatter/test_number.rb +0 -76
  123. data/test/units/core/shape/text_block/formatter/test_padding.rb +0 -77
  124. data/test/units/core/shape/text_block/test_format.rb +0 -169
  125. data/test/units/core/shape/text_block/test_formatter.rb +0 -28
  126. data/test/units/core/shape/text_block/test_interface.rb +0 -63
  127. data/test/units/core/shape/text_block/test_internal.rb +0 -128
  128. data/test/units/core/test_shape.rb +0 -52
  129. data/test/units/core/test_utils.rb +0 -68
  130. data/test/units/generator/pdf/document/graphics/test_attributes.rb +0 -135
  131. data/test/units/generator/pdf/document/graphics/test_basic.rb +0 -46
  132. data/test/units/generator/pdf/document/graphics/test_image.rb +0 -46
  133. data/test/units/generator/pdf/document/graphics/test_text.rb +0 -171
  134. data/test/units/generator/pdf/document/test_font.rb +0 -110
  135. data/test/units/generator/pdf/document/test_graphics.rb +0 -42
  136. data/test/units/generator/pdf/document/test_page.rb +0 -122
  137. data/test/units/generator/pdf/document/test_parse_color.rb +0 -30
  138. data/test/units/generator/pdf/prawn_ext/test_calc_image_dimensions.rb +0 -41
  139. data/test/units/generator/pdf/prawn_ext/test_width_of.rb +0 -22
  140. data/test/units/generator/pdf/test_document.rb +0 -22
  141. data/test/units/generator/test_pdf.rb +0 -26
  142. data/test/units/layout/test_base.rb +0 -41
  143. data/test/units/layout/test_format.rb +0 -100
  144. data/test/units/layout/test_legacy_schema.rb +0 -576
  145. data/test/units/layout/test_version.rb +0 -26
  146. data/test/units/report/test_base.rb +0 -248
  147. data/test/units/report/test_internal.rb +0 -206
  148. data/test/units/test_config.rb +0 -36
  149. data/test/units/test_layout.rb +0 -12
  150. data/test/units/test_report.rb +0 -18
@@ -1,39 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'minitest/autorun'
4
- require 'minitest/spec'
5
- require 'minitest/unit'
6
- require 'mocha/minitest'
7
- require 'pdf/inspector'
8
-
9
- require 'digest/sha1'
10
- require 'pathname'
11
- require 'thinreports'
12
-
13
- require 'schema_helper'
14
-
15
- module Thinreports::TestHelper
16
- ROOT = Pathname.new(File.expand_path('..', __FILE__))
17
-
18
- include Thinreports::SchemaHelper
19
-
20
- def assert_deprecated(&block)
21
- _out, err = capture_io { block.call }
22
- assert err.to_s.include?('[DEPRECATION]')
23
- end
24
-
25
- def data_file(*paths)
26
- ROOT.join('data', *paths).to_s
27
- end
28
-
29
- def read_data_file(*paths)
30
- File.read(data_file(*paths))
31
- end
32
-
33
- def analyze_pdf_images(pdf_data)
34
- analyzer = PDF::Inspector::XObject.analyze(pdf_data)
35
- analyzer.page_xobjects
36
- .reduce(:merge).values
37
- .select { |o| o.hash[:Subtype] == :Image }
38
- end
39
- end
@@ -1,152 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'test_helper'
4
-
5
- class Thinreports::Core::Format::BaseTest < Minitest::Test
6
- TEST_FORMAT_CONFIG = {
7
- 'c1' => 'c1',
8
- 'c2' => {
9
- 'c2_1' => 'c2_1'
10
- },
11
- 'c3' => {
12
- 'c3_1' => {
13
- 'c3_1_1' => 'c3_1_1',
14
- 'c3_1_2' => 'c3_1_2'
15
- }
16
- },
17
- 'c4' => 'c4',
18
- 'c5' => 'c5',
19
- 'c6' => 9999,
20
- 'c7' => true,
21
- 'c8' => false,
22
- 'c9' => {
23
- 'c9_1' => true,
24
- 'c9_2' => false
25
- },
26
- 'c10' => 'c10',
27
- 'c11' => {
28
- 'c11_1' => 'c11_1'
29
- },
30
- 'c20' => 'c20',
31
- 'c21' => 'c21'
32
- }
33
-
34
- class TestFormat < Thinreports::Core::Format::Base
35
- # For testing
36
- attr_reader :config
37
-
38
- # Basic methods
39
- config_reader :c1
40
- config_reader c2_1: %w( c2 c2_1 ),
41
- c3_1_1: %w( c3 c3_1 c3_1_1 )
42
- config_reader :c4, :c5
43
- config_reader 'c6'
44
-
45
- # Alias methods
46
- config_reader c1_alias: %w( c1 ),
47
- c2_1_alias: %w( c2 c2_1 )
48
-
49
- # Invalid methods
50
- config_reader c3_invalid: %w( c3 c3_1 not_exist_key )
51
-
52
- # Customized methods
53
- config_reader c2_1_customized: %w( c2 c2_1 ) do |val|
54
- "Customized #{val}"
55
- end
56
-
57
- # Checker methods
58
- config_checker true, :c7, :c8
59
- config_checker true, c9_1: %w( c9 c9_1 ),
60
- c9_2: %w( c9 c9_2 )
61
-
62
- # Writer methods
63
- config_writer :c10
64
- config_writer c10_alias: %w( c10 )
65
- config_writer c11_1: %w( c11 c11_1 )
66
- # Writer for not exist config on default
67
- config_writer c11_2: %w( c11 c11_2 )
68
-
69
- # Accessor methods
70
- config_accessor :c20
71
- config_accessor :c21 do |val|
72
- "Customized #{val}"
73
- end
74
- end
75
-
76
- def setup
77
- @format = TestFormat.new(TEST_FORMAT_CONFIG)
78
- end
79
-
80
- def test_definition_of_all_config_methods
81
- methods = [:c1, :c2_1, :c3_1_1, :c4, :c5, :c6,
82
- :c1_alias, :c2_1_alias,
83
- :c3_invalid,
84
- :c2_1_customized,
85
- :c7?, :c8?, :c9_1?, :c9_2?,
86
- :c10=, :c10_alias=, :c11_1=, :c11_2=,
87
- :c20, :c20=, :c21, :c21=]
88
- assert methods.all? {|m| TestFormat.method_defined?(m) }
89
- end
90
-
91
- def test_readers
92
- # Basic
93
- assert_equal @format.c1, 'c1'
94
- assert_equal @format.c2_1, 'c2_1'
95
- assert_equal @format.c3_1_1, 'c3_1_1'
96
- assert_equal @format.c4, 'c4'
97
- assert_equal @format.c5, 'c5'
98
- assert_equal @format.c6, 9999
99
- # Alias
100
- assert_equal @format.c1_alias, @format.c1
101
- assert_equal @format.c2_1_alias, @format.c2_1
102
- # Invalid location
103
- assert_nil @format.c3_invalid
104
- # Customized
105
- assert_equal @format.c2_1_customized, 'Customized c2_1'
106
- end
107
-
108
- def test_checkers
109
- assert_equal @format.c7?, true
110
- assert_equal @format.c8?, false
111
- assert_equal @format.c9_1?, true
112
- assert_equal @format.c9_2?, false
113
- end
114
-
115
- def test_reader_cannot_write_value
116
- assert_raises NoMethodError do
117
- @format.c1 = 'write'
118
- end
119
- # Alias method
120
- assert_raises NoMethodError do
121
- @format.c1_alias = 'write'
122
- end
123
- end
124
-
125
- def test_writers
126
- config = @format.config
127
-
128
- @format.c10 = 'c1_changed'
129
- assert_equal config['c10'], 'c1_changed'
130
-
131
- @format.c10_alias = 'c10_changed_by_alias'
132
- assert_equal config['c10'], 'c10_changed_by_alias'
133
-
134
- @format.c11_1 = 'c11_1_changed'
135
- assert_equal config['c11']['c11_1'], 'c11_1_changed'
136
-
137
- @format.c11_2 = 'c11_2_created'
138
- assert_equal config['c11']['c11_2'], 'c11_2_created'
139
- end
140
-
141
- def test_accessors
142
- @format.c20 = 'c20_changed'
143
- assert_equal @format.c20, 'c20_changed'
144
-
145
- @format.c21 = 'c21_changed'
146
- assert_equal @format.c21, 'Customized c21_changed'
147
- end
148
-
149
- def test_attributes
150
- assert_same @format.config, @format.attributes
151
- end
152
- end
@@ -1,87 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'test_helper'
4
-
5
- class Thinreports::Core::Shape::Base::TestInternal < Minitest::Test
6
- include Thinreports::TestHelper
7
-
8
- def setup
9
- @report = Thinreports::Report.new layout: layout_file.path
10
- @report.start_new_page
11
- end
12
-
13
- def create_internal(format_config = {}, &block)
14
- format =
15
- unless format_config.empty?
16
- format_klass = Class.new(Thinreports::Core::Shape::Basic::Format) {
17
- config_reader(*format_config.keys.map {|k| k.to_sym })
18
- }
19
- format_klass.new(format_config)
20
- else
21
- Thinreports::Core::Shape::Basic::Format.new({})
22
- end
23
-
24
- klass = Class.new(Thinreports::Core::Shape::Base::Internal, &block)
25
- klass.new(@report.page, format)
26
- end
27
-
28
- def test_self_format_delegators_should_defines_method_delegated_from_format
29
- internal = create_internal('m1' => 'm1_value') {
30
- format_delegators :m1
31
- }
32
- assert_respond_to internal, :m1
33
- end
34
-
35
- def test_method_delegated_from_format_should_return_same_value_as_an_format
36
- internal = create_internal('m1' => 'm1 value') {
37
- format_delegators :m1
38
- }
39
- assert_same internal.m1, internal.format.m1
40
- end
41
-
42
- def test_copied_internal_should_have_the_new_value_specified_as_a_parent_property
43
- new_page = @report.start_new_page
44
- internal = create_internal {
45
- def style
46
- @style ||= Thinreports::Core::Shape::Style::Base.new(format)
47
- end
48
- }
49
-
50
- assert_same internal.copy(new_page).parent, new_page
51
- end
52
-
53
- def test_copied_internal_should_have_style_copied_from_original
54
- internal = create_internal {
55
- def style
56
- @style ||= Thinreports::Core::Shape::Style::Base.new(format)
57
- end
58
- }
59
- internal.style.write_internal_style(:foo, 'bar')
60
- new_internal = internal.copy(@report.start_new_page)
61
-
62
- assert_equal new_internal.style.read_internal_style(:foo), 'bar'
63
- end
64
-
65
- def test_copied_internal_should_have_states_property_copied_from_original
66
- internal = create_internal {
67
- def style
68
- @style ||= Thinreports::Core::Shape::Style::Base.new(format)
69
- end
70
- }
71
- internal.states[:foo] = 'bar'
72
- new_internal = internal.copy(@report.start_new_page)
73
-
74
- assert_equal new_internal.states[:foo], 'bar'
75
- end
76
-
77
- def test_copy_should_execute_block_with_new_internal_as_argument
78
- internal = create_internal {
79
- def style
80
- @style ||= Thinreports::Core::Shape::Style::Base.new(format)
81
- end
82
- }
83
- internal.copy(@report.start_new_page) do |new_internal|
84
- assert_equal new_internal.is_a?(Thinreports::Core::Shape::Base::Internal), true
85
- end
86
- end
87
- end
@@ -1,23 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'test_helper'
4
-
5
- class Thinreports::Core::Shape::Basic::TestBlockFormat < Minitest::Test
6
- include Thinreports::TestHelper
7
-
8
- BLOCK_FORMAT = {
9
- 'value' => 'default value',
10
- 'x' => 100.0,
11
- 'y' => 200.0,
12
- 'width' => 300.0,
13
- 'height' => 400.0
14
- }
15
-
16
- Basic = Thinreports::Core::Shape::Basic
17
-
18
- def test_attribute_readers
19
- format = Basic::BlockFormat.new(BLOCK_FORMAT)
20
-
21
- assert_equal 'default value', format.value
22
- end
23
- end
@@ -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