caxlsx 3.2.0 → 3.3.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 (300) hide show
  1. checksums.yaml +4 -4
  2. data/.yardopts +9 -9
  3. data/.yardopts_guide +18 -18
  4. data/CHANGELOG.md +385 -354
  5. data/LICENSE +21 -21
  6. data/README.md +165 -168
  7. data/Rakefile +29 -29
  8. data/examples/generate.rb +15 -15
  9. data/lib/axlsx/content_type/abstract_content_type.rb +32 -32
  10. data/lib/axlsx/content_type/content_type.rb +26 -26
  11. data/lib/axlsx/content_type/default.rb +25 -25
  12. data/lib/axlsx/content_type/override.rb +25 -25
  13. data/lib/axlsx/doc_props/app.rb +235 -235
  14. data/lib/axlsx/doc_props/core.rb +39 -39
  15. data/lib/axlsx/drawing/area_chart.rb +99 -99
  16. data/lib/axlsx/drawing/area_series.rb +110 -110
  17. data/lib/axlsx/drawing/ax_data_source.rb +26 -26
  18. data/lib/axlsx/drawing/axes.rb +61 -61
  19. data/lib/axlsx/drawing/axis.rb +190 -190
  20. data/lib/axlsx/drawing/bar_3D_chart.rb +148 -148
  21. data/lib/axlsx/drawing/bar_chart.rb +138 -138
  22. data/lib/axlsx/drawing/bar_series.rb +97 -97
  23. data/lib/axlsx/drawing/bubble_chart.rb +59 -59
  24. data/lib/axlsx/drawing/bubble_series.rb +63 -63
  25. data/lib/axlsx/drawing/cat_axis.rb +85 -85
  26. data/lib/axlsx/drawing/chart.rb +299 -276
  27. data/lib/axlsx/drawing/d_lbls.rb +91 -90
  28. data/lib/axlsx/drawing/drawing.rb +167 -167
  29. data/lib/axlsx/drawing/graphic_frame.rb +54 -54
  30. data/lib/axlsx/drawing/hyperlink.rb +100 -100
  31. data/lib/axlsx/drawing/line_3D_chart.rb +68 -68
  32. data/lib/axlsx/drawing/line_chart.rb +99 -99
  33. data/lib/axlsx/drawing/line_series.rb +110 -110
  34. data/lib/axlsx/drawing/marker.rb +84 -84
  35. data/lib/axlsx/drawing/num_data.rb +52 -52
  36. data/lib/axlsx/drawing/num_data_source.rb +62 -62
  37. data/lib/axlsx/drawing/num_val.rb +34 -34
  38. data/lib/axlsx/drawing/one_cell_anchor.rb +99 -99
  39. data/lib/axlsx/drawing/pic.rb +211 -211
  40. data/lib/axlsx/drawing/picture_locking.rb +42 -42
  41. data/lib/axlsx/drawing/pie_3D_chart.rb +47 -47
  42. data/lib/axlsx/drawing/pie_series.rb +74 -74
  43. data/lib/axlsx/drawing/scaling.rb +60 -60
  44. data/lib/axlsx/drawing/scatter_chart.rb +74 -74
  45. data/lib/axlsx/drawing/scatter_series.rb +129 -129
  46. data/lib/axlsx/drawing/ser_axis.rb +45 -45
  47. data/lib/axlsx/drawing/series.rb +69 -69
  48. data/lib/axlsx/drawing/series_title.rb +25 -25
  49. data/lib/axlsx/drawing/str_data.rb +42 -42
  50. data/lib/axlsx/drawing/str_val.rb +34 -34
  51. data/lib/axlsx/drawing/title.rb +107 -97
  52. data/lib/axlsx/drawing/two_cell_anchor.rb +97 -97
  53. data/lib/axlsx/drawing/val_axis.rb +37 -37
  54. data/lib/axlsx/drawing/view_3D.rb +115 -115
  55. data/lib/axlsx/drawing/vml_drawing.rb +42 -42
  56. data/lib/axlsx/drawing/vml_shape.rb +66 -66
  57. data/lib/axlsx/package.rb +398 -388
  58. data/lib/axlsx/rels/relationship.rb +130 -130
  59. data/lib/axlsx/rels/relationships.rb +32 -32
  60. data/lib/axlsx/stylesheet/border.rb +73 -73
  61. data/lib/axlsx/stylesheet/border_pr.rb +71 -71
  62. data/lib/axlsx/stylesheet/cell_alignment.rb +132 -132
  63. data/lib/axlsx/stylesheet/cell_protection.rb +41 -41
  64. data/lib/axlsx/stylesheet/cell_style.rb +72 -72
  65. data/lib/axlsx/stylesheet/color.rb +76 -76
  66. data/lib/axlsx/stylesheet/dxf.rb +79 -79
  67. data/lib/axlsx/stylesheet/fill.rb +35 -35
  68. data/lib/axlsx/stylesheet/font.rb +156 -156
  69. data/lib/axlsx/stylesheet/gradient_fill.rb +103 -103
  70. data/lib/axlsx/stylesheet/gradient_stop.rb +37 -37
  71. data/lib/axlsx/stylesheet/num_fmt.rb +86 -86
  72. data/lib/axlsx/stylesheet/pattern_fill.rb +73 -73
  73. data/lib/axlsx/stylesheet/styles.rb +535 -494
  74. data/lib/axlsx/stylesheet/table_style.rb +54 -54
  75. data/lib/axlsx/stylesheet/table_style_element.rb +77 -77
  76. data/lib/axlsx/stylesheet/table_styles.rb +46 -46
  77. data/lib/axlsx/stylesheet/xf.rb +147 -147
  78. data/lib/axlsx/util/accessors.rb +64 -64
  79. data/lib/axlsx/util/constants.rb +416 -410
  80. data/lib/axlsx/util/mime_type_utils.rb +11 -11
  81. data/lib/axlsx/util/options_parser.rb +16 -16
  82. data/lib/axlsx/util/serialized_attributes.rb +89 -89
  83. data/lib/axlsx/util/simple_typed_list.rb +179 -179
  84. data/lib/axlsx/util/storage.rb +146 -146
  85. data/lib/axlsx/util/validators.rb +312 -312
  86. data/lib/axlsx/util/zip_command.rb +73 -73
  87. data/lib/axlsx/version.rb +5 -5
  88. data/lib/axlsx/workbook/defined_name.rb +128 -128
  89. data/lib/axlsx/workbook/defined_names.rb +21 -21
  90. data/lib/axlsx/workbook/shared_strings_table.rb +77 -77
  91. data/lib/axlsx/workbook/workbook.rb +425 -395
  92. data/lib/axlsx/workbook/workbook_view.rb +80 -80
  93. data/lib/axlsx/workbook/workbook_views.rb +22 -22
  94. data/lib/axlsx/workbook/worksheet/auto_filter/auto_filter.rb +77 -77
  95. data/lib/axlsx/workbook/worksheet/auto_filter/filter_column.rb +94 -94
  96. data/lib/axlsx/workbook/worksheet/auto_filter/filters.rb +244 -244
  97. data/lib/axlsx/workbook/worksheet/border_creator.rb +76 -0
  98. data/lib/axlsx/workbook/worksheet/break.rb +35 -35
  99. data/lib/axlsx/workbook/worksheet/cell.rb +532 -506
  100. data/lib/axlsx/workbook/worksheet/cell_serializer.rb +164 -164
  101. data/lib/axlsx/workbook/worksheet/cfvo.rb +60 -60
  102. data/lib/axlsx/workbook/worksheet/cfvos.rb +18 -18
  103. data/lib/axlsx/workbook/worksheet/col.rb +145 -145
  104. data/lib/axlsx/workbook/worksheet/col_breaks.rb +35 -35
  105. data/lib/axlsx/workbook/worksheet/color_scale.rb +110 -110
  106. data/lib/axlsx/workbook/worksheet/cols.rb +23 -23
  107. data/lib/axlsx/workbook/worksheet/comment.rb +91 -91
  108. data/lib/axlsx/workbook/worksheet/comments.rb +82 -82
  109. data/lib/axlsx/workbook/worksheet/conditional_formatting.rb +82 -82
  110. data/lib/axlsx/workbook/worksheet/conditional_formatting_rule.rb +220 -220
  111. data/lib/axlsx/workbook/worksheet/conditional_formattings.rb +25 -25
  112. data/lib/axlsx/workbook/worksheet/data_bar.rb +129 -129
  113. data/lib/axlsx/workbook/worksheet/data_validation.rb +267 -246
  114. data/lib/axlsx/workbook/worksheet/data_validations.rb +28 -28
  115. data/lib/axlsx/workbook/worksheet/date_time_converter.rb +30 -30
  116. data/lib/axlsx/workbook/worksheet/dimension.rb +64 -64
  117. data/lib/axlsx/workbook/worksheet/header_footer.rb +52 -52
  118. data/lib/axlsx/workbook/worksheet/icon_set.rb +81 -81
  119. data/lib/axlsx/workbook/worksheet/merged_cells.rb +37 -37
  120. data/lib/axlsx/workbook/worksheet/outline_pr.rb +33 -33
  121. data/lib/axlsx/workbook/worksheet/page_margins.rb +97 -97
  122. data/lib/axlsx/workbook/worksheet/page_set_up_pr.rb +44 -44
  123. data/lib/axlsx/workbook/worksheet/page_setup.rb +240 -240
  124. data/lib/axlsx/workbook/worksheet/pane.rb +139 -139
  125. data/lib/axlsx/workbook/worksheet/pivot_table.rb +335 -296
  126. data/lib/axlsx/workbook/worksheet/pivot_table_cache_definition.rb +66 -66
  127. data/lib/axlsx/workbook/worksheet/pivot_tables.rb +24 -24
  128. data/lib/axlsx/workbook/worksheet/print_options.rb +39 -39
  129. data/lib/axlsx/workbook/worksheet/protected_range.rb +47 -47
  130. data/lib/axlsx/workbook/worksheet/protected_ranges.rb +37 -37
  131. data/lib/axlsx/workbook/worksheet/rich_text.rb +55 -55
  132. data/lib/axlsx/workbook/worksheet/rich_text_run.rb +250 -250
  133. data/lib/axlsx/workbook/worksheet/row.rb +164 -164
  134. data/lib/axlsx/workbook/worksheet/row_breaks.rb +33 -33
  135. data/lib/axlsx/workbook/worksheet/selection.rb +101 -101
  136. data/lib/axlsx/workbook/worksheet/sheet_calc_pr.rb +29 -29
  137. data/lib/axlsx/workbook/worksheet/sheet_data.rb +27 -27
  138. data/lib/axlsx/workbook/worksheet/sheet_pr.rb +87 -87
  139. data/lib/axlsx/workbook/worksheet/sheet_protection.rb +118 -118
  140. data/lib/axlsx/workbook/worksheet/sheet_view.rb +213 -213
  141. data/lib/axlsx/workbook/worksheet/table.rb +102 -102
  142. data/lib/axlsx/workbook/worksheet/table_style_info.rb +49 -49
  143. data/lib/axlsx/workbook/worksheet/tables.rb +34 -34
  144. data/lib/axlsx/workbook/worksheet/worksheet.rb +829 -786
  145. data/lib/axlsx/workbook/worksheet/worksheet_comments.rb +58 -58
  146. data/lib/axlsx/workbook/worksheet/worksheet_drawing.rb +58 -58
  147. data/lib/axlsx/workbook/worksheet/worksheet_hyperlink.rb +74 -74
  148. data/lib/axlsx/workbook/worksheet/worksheet_hyperlinks.rb +38 -38
  149. data/lib/axlsx.rb +204 -185
  150. data/lib/caxlsx.rb +2 -2
  151. data/lib/schema/dc.xsd +118 -118
  152. data/lib/schema/dcmitype.xsd +51 -51
  153. data/lib/schema/dcterms.xsd +331 -331
  154. data/lib/schema/dml-chartDrawing.xsd +146 -146
  155. data/lib/schema/dml-compatibility.xsd +14 -14
  156. data/lib/schema/dml-lockedCanvas.xsd +11 -11
  157. data/lib/schema/dml-main.xsd +3048 -3048
  158. data/lib/schema/dml-picture.xsd +23 -23
  159. data/lib/schema/dml-spreadsheetDrawing.xsd +185 -185
  160. data/lib/schema/dml-wordprocessingDrawing.xsd +185 -185
  161. data/lib/schema/shared-additionalCharacteristics.xsd +28 -28
  162. data/lib/schema/shared-bibliography.xsd +144 -144
  163. data/lib/schema/shared-commonSimpleTypes.xsd +166 -166
  164. data/lib/schema/shared-customXmlDataProperties.xsd +25 -25
  165. data/lib/schema/shared-customXmlSchemaProperties.xsd +18 -18
  166. data/lib/schema/shared-documentPropertiesCustom.xsd +59 -59
  167. data/lib/schema/shared-documentPropertiesExtended.xsd +56 -56
  168. data/lib/schema/shared-documentPropertiesVariantTypes.xsd +195 -195
  169. data/lib/schema/shared-relationshipReference.xsd +25 -25
  170. data/lib/schema/vml-main.xsd +569 -569
  171. data/lib/schema/vml-officeDrawing.xsd +509 -509
  172. data/lib/schema/vml-presentationDrawing.xsd +12 -12
  173. data/lib/schema/vml-spreadsheetDrawing.xsd +108 -108
  174. data/lib/schema/vml-wordprocessingDrawing.xsd +96 -96
  175. data/lib/schema/xml.xsd +116 -116
  176. metadata +5 -252
  177. data/test/benchmark.rb +0 -72
  178. data/test/content_type/tc_content_type.rb +0 -76
  179. data/test/content_type/tc_default.rb +0 -16
  180. data/test/content_type/tc_override.rb +0 -14
  181. data/test/doc_props/tc_app.rb +0 -43
  182. data/test/doc_props/tc_core.rb +0 -42
  183. data/test/drawing/tc_area_chart.rb +0 -39
  184. data/test/drawing/tc_area_series.rb +0 -71
  185. data/test/drawing/tc_axes.rb +0 -8
  186. data/test/drawing/tc_axis.rb +0 -112
  187. data/test/drawing/tc_bar_3D_chart.rb +0 -86
  188. data/test/drawing/tc_bar_chart.rb +0 -86
  189. data/test/drawing/tc_bar_series.rb +0 -46
  190. data/test/drawing/tc_bubble_chart.rb +0 -44
  191. data/test/drawing/tc_bubble_series.rb +0 -21
  192. data/test/drawing/tc_cat_axis.rb +0 -31
  193. data/test/drawing/tc_cat_axis_data.rb +0 -27
  194. data/test/drawing/tc_chart.rb +0 -123
  195. data/test/drawing/tc_d_lbls.rb +0 -57
  196. data/test/drawing/tc_data_source.rb +0 -23
  197. data/test/drawing/tc_drawing.rb +0 -80
  198. data/test/drawing/tc_graphic_frame.rb +0 -27
  199. data/test/drawing/tc_hyperlink.rb +0 -64
  200. data/test/drawing/tc_line_3d_chart.rb +0 -47
  201. data/test/drawing/tc_line_chart.rb +0 -39
  202. data/test/drawing/tc_line_series.rb +0 -71
  203. data/test/drawing/tc_marker.rb +0 -44
  204. data/test/drawing/tc_named_axis_data.rb +0 -27
  205. data/test/drawing/tc_num_data.rb +0 -31
  206. data/test/drawing/tc_num_val.rb +0 -29
  207. data/test/drawing/tc_one_cell_anchor.rb +0 -66
  208. data/test/drawing/tc_pic.rb +0 -103
  209. data/test/drawing/tc_picture_locking.rb +0 -72
  210. data/test/drawing/tc_pie_3D_chart.rb +0 -28
  211. data/test/drawing/tc_pie_series.rb +0 -33
  212. data/test/drawing/tc_scaling.rb +0 -36
  213. data/test/drawing/tc_scatter_chart.rb +0 -48
  214. data/test/drawing/tc_scatter_series.rb +0 -74
  215. data/test/drawing/tc_ser_axis.rb +0 -31
  216. data/test/drawing/tc_series.rb +0 -23
  217. data/test/drawing/tc_series_title.rb +0 -54
  218. data/test/drawing/tc_str_data.rb +0 -18
  219. data/test/drawing/tc_str_val.rb +0 -30
  220. data/test/drawing/tc_title.rb +0 -70
  221. data/test/drawing/tc_two_cell_anchor.rb +0 -36
  222. data/test/drawing/tc_val_axis.rb +0 -24
  223. data/test/drawing/tc_view_3D.rb +0 -54
  224. data/test/drawing/tc_vml_drawing.rb +0 -25
  225. data/test/drawing/tc_vml_shape.rb +0 -106
  226. data/test/fixtures/image1.gif +0 -0
  227. data/test/fixtures/image1.jpeg +0 -0
  228. data/test/fixtures/image1.jpg +0 -0
  229. data/test/fixtures/image1.png +0 -0
  230. data/test/fixtures/image1_fake.jpg +0 -0
  231. data/test/profile.rb +0 -24
  232. data/test/rels/tc_relationship.rb +0 -52
  233. data/test/rels/tc_relationships.rb +0 -37
  234. data/test/stylesheet/tc_border.rb +0 -37
  235. data/test/stylesheet/tc_border_pr.rb +0 -32
  236. data/test/stylesheet/tc_cell_alignment.rb +0 -81
  237. data/test/stylesheet/tc_cell_protection.rb +0 -29
  238. data/test/stylesheet/tc_cell_style.rb +0 -57
  239. data/test/stylesheet/tc_color.rb +0 -43
  240. data/test/stylesheet/tc_dxf.rb +0 -81
  241. data/test/stylesheet/tc_fill.rb +0 -18
  242. data/test/stylesheet/tc_font.rb +0 -133
  243. data/test/stylesheet/tc_gradient_fill.rb +0 -72
  244. data/test/stylesheet/tc_gradient_stop.rb +0 -31
  245. data/test/stylesheet/tc_num_fmt.rb +0 -30
  246. data/test/stylesheet/tc_pattern_fill.rb +0 -43
  247. data/test/stylesheet/tc_styles.rb +0 -309
  248. data/test/stylesheet/tc_table_style.rb +0 -44
  249. data/test/stylesheet/tc_table_style_element.rb +0 -45
  250. data/test/stylesheet/tc_table_styles.rb +0 -29
  251. data/test/stylesheet/tc_xf.rb +0 -120
  252. data/test/tc_axlsx.rb +0 -109
  253. data/test/tc_helper.rb +0 -10
  254. data/test/tc_package.rb +0 -317
  255. data/test/util/tc_mime_type_utils.rb +0 -13
  256. data/test/util/tc_serialized_attributes.rb +0 -19
  257. data/test/util/tc_simple_typed_list.rb +0 -77
  258. data/test/util/tc_validators.rb +0 -210
  259. data/test/workbook/tc_defined_name.rb +0 -49
  260. data/test/workbook/tc_shared_strings_table.rb +0 -59
  261. data/test/workbook/tc_workbook.rb +0 -165
  262. data/test/workbook/tc_workbook_view.rb +0 -50
  263. data/test/workbook/worksheet/auto_filter/tc_auto_filter.rb +0 -38
  264. data/test/workbook/worksheet/auto_filter/tc_filter_column.rb +0 -76
  265. data/test/workbook/worksheet/auto_filter/tc_filters.rb +0 -50
  266. data/test/workbook/worksheet/tc_break.rb +0 -49
  267. data/test/workbook/worksheet/tc_cell.rb +0 -465
  268. data/test/workbook/worksheet/tc_cfvo.rb +0 -31
  269. data/test/workbook/worksheet/tc_col.rb +0 -93
  270. data/test/workbook/worksheet/tc_color_scale.rb +0 -58
  271. data/test/workbook/worksheet/tc_comment.rb +0 -72
  272. data/test/workbook/worksheet/tc_comments.rb +0 -57
  273. data/test/workbook/worksheet/tc_conditional_formatting.rb +0 -224
  274. data/test/workbook/worksheet/tc_data_bar.rb +0 -46
  275. data/test/workbook/worksheet/tc_data_validation.rb +0 -265
  276. data/test/workbook/worksheet/tc_date_time_converter.rb +0 -124
  277. data/test/workbook/worksheet/tc_header_footer.rb +0 -151
  278. data/test/workbook/worksheet/tc_icon_set.rb +0 -45
  279. data/test/workbook/worksheet/tc_outline_pr.rb +0 -19
  280. data/test/workbook/worksheet/tc_page_margins.rb +0 -97
  281. data/test/workbook/worksheet/tc_page_set_up_pr.rb +0 -15
  282. data/test/workbook/worksheet/tc_page_setup.rb +0 -143
  283. data/test/workbook/worksheet/tc_pane.rb +0 -54
  284. data/test/workbook/worksheet/tc_pivot_table.rb +0 -180
  285. data/test/workbook/worksheet/tc_pivot_table_cache_definition.rb +0 -62
  286. data/test/workbook/worksheet/tc_print_options.rb +0 -72
  287. data/test/workbook/worksheet/tc_protected_range.rb +0 -17
  288. data/test/workbook/worksheet/tc_rich_text.rb +0 -44
  289. data/test/workbook/worksheet/tc_rich_text_run.rb +0 -173
  290. data/test/workbook/worksheet/tc_row.rb +0 -160
  291. data/test/workbook/worksheet/tc_selection.rb +0 -55
  292. data/test/workbook/worksheet/tc_sheet_calc_pr.rb +0 -18
  293. data/test/workbook/worksheet/tc_sheet_format_pr.rb +0 -88
  294. data/test/workbook/worksheet/tc_sheet_pr.rb +0 -49
  295. data/test/workbook/worksheet/tc_sheet_protection.rb +0 -117
  296. data/test/workbook/worksheet/tc_sheet_view.rb +0 -214
  297. data/test/workbook/worksheet/tc_table.rb +0 -77
  298. data/test/workbook/worksheet/tc_table_style_info.rb +0 -53
  299. data/test/workbook/worksheet/tc_worksheet.rb +0 -632
  300. data/test/workbook/worksheet/tc_worksheet_hyperlink.rb +0 -55
@@ -1,632 +0,0 @@
1
- require 'tc_helper.rb'
2
-
3
- class TestWorksheet < Test::Unit::TestCase
4
- def setup
5
- @p = Axlsx::Package.new
6
- @wb = @p.workbook
7
- @ws = @wb.add_worksheet
8
- end
9
-
10
-
11
- def test_pn
12
- assert_equal(@ws.pn, "worksheets/sheet1.xml")
13
- ws = @ws.workbook.add_worksheet
14
- assert_equal(ws.pn, "worksheets/sheet2.xml")
15
- end
16
-
17
- def test_name_is_html_encoded
18
- @ws.name = '<foo> & <bar>'
19
- assert_equal(@ws.name, '&lt;foo&gt; &amp; &lt;bar&gt;')
20
- end
21
-
22
- def test_name_exception_on_invalid_character
23
- assert_raises(ArgumentError) { @ws.name = 'foo:bar' }
24
- assert_raises(ArgumentError) { @ws.name = 'foo[bar' }
25
- assert_raises(ArgumentError) { @ws.name = 'foo]bar' }
26
- assert_raises(ArgumentError) { @ws.name = 'foo*bar' }
27
- assert_raises(ArgumentError) { @ws.name = 'foo/bar' }
28
- assert_raises(ArgumentError) { @ws.name = 'foo\bar' }
29
- assert_raises(ArgumentError) { @ws.name = 'foo?bar' }
30
- end
31
-
32
- def test_name_unique
33
- assert_raise(ArgumentError, "worksheet name must be unique") { n = @ws.name; @ws.workbook.add_worksheet(:name=> n) }
34
- end
35
-
36
- def test_name_unique_only_checks_other_worksheet_names
37
- assert_nothing_raised { @ws.name = @ws.name }
38
- assert_nothing_raised { Axlsx::Package.new.workbook.add_worksheet :name => 'Sheet1' }
39
- end
40
-
41
- def test_exception_if_name_too_long
42
- assert_nothing_raised { @ws.name = 'x' * 31 }
43
- assert_raises(ArgumentError) { @ws.name = 'x' * 32 }
44
- end
45
-
46
- def test_exception_if_name_too_long_because_of_multibyte_characters
47
- four_characters_for_excel = "\u{1F1EB 1F1F7}" # french flag emoji
48
- assert_raises(ArgumentError, "name too long!") do
49
- @ws.name = four_characters_for_excel + "x" * 28
50
- end
51
- assert_nothing_raised { @ws.name = "#{four_characters_for_excel}123456789012345678901234567" }
52
- assert_nothing_raised { @ws.name = "123456789012345678901234567890…" }
53
- assert_nothing_raised { @ws.name = "123456789012345678901234567890✔" }
54
- end
55
-
56
- def test_page_margins
57
- assert(@ws.page_margins.is_a? Axlsx::PageMargins)
58
- end
59
-
60
- def test_page_margins_yeild
61
- @ws.page_margins do |pm|
62
- assert(pm.is_a? Axlsx::PageMargins)
63
- assert(@ws.page_margins == pm)
64
- end
65
- end
66
-
67
- def test_page_setup
68
- assert(@ws.page_setup.is_a? Axlsx::PageSetup)
69
- end
70
-
71
- def test_page_setup_yield
72
- @ws.page_setup do |ps|
73
- assert(ps.is_a? Axlsx::PageSetup)
74
- assert(@ws.page_setup == ps)
75
- end
76
- end
77
-
78
- def test_print_options
79
- assert(@ws.print_options.is_a? Axlsx::PrintOptions)
80
- end
81
-
82
- def test_print_options_yield
83
- @ws.print_options do |po|
84
- assert(po.is_a? Axlsx::PrintOptions)
85
- assert(@ws.print_options == po)
86
- end
87
- end
88
-
89
- def test_header_footer
90
- assert(@ws.header_footer.is_a? Axlsx::HeaderFooter)
91
- end
92
-
93
- def test_header_footer_yield
94
- @ws.header_footer do |hf|
95
- assert(hf.is_a? Axlsx::HeaderFooter)
96
- assert(@ws.header_footer == hf)
97
- end
98
- end
99
-
100
- def test_state
101
- assert_equal(:visible, @ws.state)
102
- end
103
-
104
- def test_state_validation
105
- assert_raise(ArgumentError) { @ws.state = :dead }
106
- assert_nothing_raised { @ws.state = :very_hidden }
107
- end
108
-
109
- def test_no_autowidth
110
- @ws.workbook.use_autowidth = false
111
- @ws.add_row [1,2,3,4]
112
- assert_equal(@ws.column_info[0].width, nil)
113
- end
114
-
115
- def test_initialization_options
116
- page_margins = {:left => 2, :right => 2, :bottom => 2, :top => 2, :header => 2, :footer => 2}
117
- page_setup = {:fit_to_height => 1, :fit_to_width => 1, :orientation => :landscape, :paper_width => "210mm", :paper_height => "297mm", :scale => 80}
118
- print_options = {:grid_lines => true, :headings => true, :horizontal_centered => true, :vertical_centered => true}
119
- header_footer = {:different_first => false, :different_odd_even => false, :odd_header => 'Header'}
120
- optioned = @ws.workbook.add_worksheet(:name => 'bob', :page_margins => page_margins, :page_setup => page_setup, :print_options => print_options, :header_footer => header_footer)
121
- page_margins.keys.each do |key|
122
- assert_equal(page_margins[key], optioned.page_margins.send(key))
123
- end
124
- page_setup.keys.each do |key|
125
- assert_equal(page_setup[key], optioned.page_setup.send(key))
126
- end
127
- print_options.keys.each do |key|
128
- assert_equal(print_options[key], optioned.print_options.send(key))
129
- end
130
- header_footer.keys.each do |key|
131
- assert_equal(header_footer[key], optioned.header_footer.send(key))
132
- end
133
- assert_equal(optioned.name, 'bob')
134
-
135
- end
136
-
137
-
138
- # def test_use_gridlines
139
- # assert_raise(ArgumentError) { @ws.show_gridlines = -1.1 }
140
- # assert_nothing_raised { @ws.show_gridlines = false }
141
- # assert_equal(@ws.show_gridlines, false)
142
- # end
143
-
144
- # def test_selected
145
- # assert_raise(ArgumentError) { @ws.selected = -1.1 }
146
- # assert_nothing_raised { @ws.selected = true }
147
- # assert_equal(@ws.selected, true)
148
- # end
149
-
150
- def test_rels_pn
151
- assert_equal(@ws.rels_pn, "worksheets/_rels/sheet1.xml.rels")
152
- ws = @ws.workbook.add_worksheet
153
- assert_equal(ws.rels_pn, "worksheets/_rels/sheet2.xml.rels")
154
- end
155
-
156
- def test_rId
157
- assert_equal @ws.workbook.relationships.for(@ws).Id, @ws.rId
158
- end
159
-
160
- def test_index
161
- assert_equal(@ws.index, @ws.workbook.worksheets.index(@ws))
162
- end
163
-
164
- def test_dimension
165
- @ws.add_row [1, 2, 3]
166
- @ws.add_row [4, 5, 6]
167
- assert_equal @ws.dimension.sqref, "A1:C2"
168
- end
169
-
170
- def test_dimension_with_empty_row
171
- @ws.add_row
172
- assert_equal "A1:AA200", @ws.dimension.sqref
173
- end
174
-
175
- def test_referencing
176
- @ws.add_row [1, 2, 3]
177
- @ws.add_row [4, 5, 6]
178
- range = @ws["A1:C2"]
179
- first_row = @ws[0]
180
- last_row = @ws[1]
181
- assert_equal(@ws.rows[0],first_row)
182
- assert_equal(@ws.rows[1],last_row)
183
- assert_equal(range.size, 6)
184
- assert_equal(range.first, @ws.rows.first.cells.first)
185
- assert_equal(range.last, @ws.rows.last.cells.last)
186
- end
187
-
188
- def test_add_row
189
- assert(@ws.rows.empty?, "sheet has no rows by default")
190
- r = @ws.add_row([1,2,3])
191
- assert_equal(@ws.rows.size, 1, "add_row adds a row")
192
- assert_equal(@ws.rows.first, r, "the row returned is the row added")
193
- end
194
-
195
- def test_add_chart
196
- assert(@ws.workbook.charts.empty?, "the sheet's workbook should not have any charts by default")
197
- @ws.add_chart Axlsx::Pie3DChart
198
- assert_equal(@ws.workbook.charts.size, 1, "add_chart adds a chart to the workbook")
199
- end
200
-
201
- def test_add_page_break_with_string_cell_ref
202
- assert(@ws.row_breaks.empty?)
203
- assert(@ws.col_breaks.empty?)
204
- @ws.add_page_break("B1")
205
- assert_equal(1, @ws.row_breaks.size)
206
- assert_equal(1, @ws.col_breaks.size)
207
- end
208
-
209
- def test_add_page_break_with_cell
210
- @ws.add_row [1, 2, 3, 4]
211
- @ws.add_row [1, 2, 3, 4]
212
-
213
-
214
- assert(@ws.row_breaks.empty?)
215
- assert(@ws.col_breaks.empty?)
216
- @ws.add_page_break(@ws.rows.last.cells[1])
217
- assert_equal(1, @ws.row_breaks.size)
218
- assert_equal(1, @ws.col_breaks.size)
219
- end
220
-
221
-
222
- def test_drawing
223
- assert @ws.drawing == nil
224
- @ws.add_chart(Axlsx::Pie3DChart)
225
- assert @ws.drawing.is_a?(Axlsx::Drawing)
226
- end
227
-
228
- def test_add_pivot_table
229
- assert(@ws.workbook.pivot_tables.empty?, "the sheet's workbook should not have any pivot tables by default")
230
- @ws.add_pivot_table 'G5:G6', 'A1:D:10'
231
- assert_equal(@ws.workbook.pivot_tables.size, 1, "add_pivot_tables adds a pivot_table to the workbook")
232
- end
233
-
234
- def test_col_style
235
- @ws.add_row [1,2,3,4]
236
- @ws.add_row [1,2,3,4]
237
- @ws.add_row [1,2,3,4]
238
- @ws.add_row [1,2,3,4]
239
- @ws.col_style( (1..2), 1, :row_offset=>1)
240
- @ws.rows[(1..-1)].each do | r |
241
- assert_equal(r.cells[1].style, 1)
242
- assert_equal(r.cells[2].style, 1)
243
- end
244
- assert_equal(@ws.rows.first.cells[1].style, 0)
245
- assert_equal(@ws.rows.first.cells[0].style, 0)
246
- end
247
-
248
- def test_col_style_with_empty_column
249
- @ws.add_row [1,2,3,4]
250
- @ws.add_row [1]
251
- @ws.add_row [1,2,3,4]
252
- assert_nothing_raised {@ws.col_style(1, 1)}
253
- end
254
-
255
- def test_cols
256
- @ws.add_row [1,2,3,4]
257
- @ws.add_row [1,2,3,4]
258
- @ws.add_row [1,2,3]
259
- @ws.add_row [1,2,3,4]
260
- c = @ws.cols[1]
261
- assert_equal(c.size, 4)
262
- assert_equal(c[0].value, 2)
263
- end
264
-
265
- def test_cols_with_block
266
- @ws.add_row [1,2,3]
267
- @ws.add_row [1]
268
- cols = @ws.cols {|row, column| :foo }
269
- assert_equal(:foo, cols[1][1])
270
- end
271
-
272
- def test_row_style
273
- @ws.add_row [1,2,3,4]
274
- @ws.add_row [1,2,3,4]
275
- @ws.add_row [1,2,3,4]
276
- @ws.add_row [1,2,3,4]
277
- @ws.row_style 1, 1, :col_offset=>1
278
- @ws.rows[1].cells[(1..-1)].each do | c |
279
- assert_equal(c.style, 1)
280
- end
281
- assert_equal(@ws.rows[1].cells[0].style, 0)
282
- assert_equal(@ws.rows[2].cells[1].style, 0)
283
- @ws.row_style( 1..2, 1, :col_offset => 2)
284
- @ws.rows[(1..2)].each do |r|
285
- r.cells[(2..-1)].each do |c|
286
- assert_equal(c.style, 1)
287
- end
288
- end
289
- end
290
-
291
- # def test_to_xml_string_fit_to_page
292
- # @ws.page_setup.fit_to_width = 1
293
- # doc = Nokogiri::XML(@ws.to_xml_string)
294
- # assert_equal(doc.xpath('//xmlns:worksheet/xmlns:sheetPr/xmlns:pageSetUpPr[@fitToPage=1]').size, 1)
295
- # end
296
-
297
- def test_to_xml_string_dimensions
298
- @ws.add_row [1,2,3]
299
- doc = Nokogiri::XML(@ws.to_xml_string)
300
- assert_equal(doc.xpath('//xmlns:worksheet/xmlns:dimension[@ref="A1:C1"]').size, 1)
301
- end
302
-
303
- # def test_fit_to_page_assignation_does_nothing
304
- # @ws.fit_to_page = true
305
- # assert_equal(@ws.fit_to_page?, false)
306
- # end
307
-
308
- # def test_to_xml_string_selected
309
- # @ws.selected = true
310
- # doc = Nokogiri::XML(@ws.to_xml_string)
311
- # assert_equal(doc.xpath('//xmlns:worksheet/xmlns:sheetViews/xmlns:sheetView[@tabSelected=1]').size, 1)
312
- # end
313
-
314
- # def test_to_xml_string_show_gridlines
315
- # @ws.show_gridlines = false
316
- # doc = Nokogiri::XML(@ws.to_xml_string)
317
- # assert_equal(doc.xpath('//xmlns:worksheet/xmlns:sheetViews/xmlns:sheetView[@showGridLines=0]').size, 1)
318
- # end
319
-
320
- def test_to_xml_string_auto_fit_data
321
- @ws.add_row [1, "two"]
322
- doc = Nokogiri::XML(@ws.to_xml_string)
323
- assert_equal(doc.xpath('//xmlns:worksheet/xmlns:cols/xmlns:col').size, 2)
324
- end
325
-
326
- def test_to_xml_string_sheet_data
327
- @ws.add_row [1, "two"]
328
- doc = Nokogiri::XML(@ws.to_xml_string)
329
- assert_equal(doc.xpath('//xmlns:worksheet/xmlns:sheetData/xmlns:row').size, 1)
330
- end
331
-
332
- def test_to_xml_string_auto_filter
333
- @ws.add_row [1, "two"]
334
- @ws.auto_filter.range = "A1:B1"
335
- doc = Nokogiri::XML(@ws.to_xml_string)
336
- assert_equal(doc.xpath('//xmlns:worksheet/xmlns:autoFilter[@ref="A1:B1"]').size, 1)
337
- end
338
-
339
- def test_to_xml_string_merge_cells
340
- @ws.add_row [1, "two"]
341
- @ws.merge_cells "A1:D1"
342
- @ws.merge_cells "E1:F1"
343
- doc = Nokogiri::XML(@ws.to_xml_string)
344
- assert_equal(doc.xpath('//xmlns:worksheet/xmlns:mergeCells/xmlns:mergeCell[@ref="A1:D1"]').size, 1)
345
- assert_equal(doc.xpath('//xmlns:worksheet/xmlns:mergeCells/xmlns:mergeCell[@ref="E1:F1"]').size, 1)
346
- end
347
-
348
- def test_to_xml_string_merge_cells_row
349
- row = @ws.add_row [1, "two"]
350
- @ws.merge_cells row
351
- doc = Nokogiri::XML(@ws.to_xml_string)
352
- assert_equal(doc.xpath('//xmlns:worksheet/xmlns:mergeCells/xmlns:mergeCell[@ref="A1:B1"]').size, 1)
353
- end
354
-
355
- def test_to_xml_string_row_breaks
356
- @ws.add_page_break("A1")
357
- doc = Nokogiri::XML(@ws.to_xml_string)
358
- assert_equal(doc.xpath('//xmlns:worksheet/xmlns:rowBreaks/xmlns:brk[@id="0"]').size, 1)
359
- end
360
-
361
- def test_to_xml_string_sheet_protection
362
- @ws.sheet_protection.password = 'fish'
363
- doc = Nokogiri::XML(@ws.to_xml_string)
364
- assert(doc.xpath('//xmlns:sheetProtection'))
365
- end
366
-
367
- def test_to_xml_string_page_margins
368
- @ws.page_margins do |pm|
369
- pm.left = 9
370
- pm.right = 7
371
- end
372
- doc = Nokogiri::XML(@ws.to_xml_string)
373
- assert_equal(doc.xpath('//xmlns:worksheet/xmlns:pageMargins[@left="9"][@right="7"]').size, 1)
374
- end
375
-
376
- def test_to_xml_string_page_setup
377
- @ws.page_setup do |ps|
378
- ps.paper_width = "210mm"
379
- ps.scale = 80
380
- end
381
- doc = Nokogiri::XML(@ws.to_xml_string)
382
- assert_equal(doc.xpath('//xmlns:worksheet/xmlns:pageSetup[@paperWidth="210mm"][@scale="80"]').size, 1)
383
- end
384
-
385
- def test_to_xml_string_print_options
386
- @ws.print_options do |po|
387
- po.grid_lines = true
388
- po.horizontal_centered = true
389
- end
390
- doc = Nokogiri::XML(@ws.to_xml_string)
391
- assert_equal(doc.xpath('//xmlns:worksheet/xmlns:printOptions[@gridLines=1][@horizontalCentered=1]').size, 1)
392
- end
393
-
394
- def test_to_xml_string_header_footer
395
- @ws.header_footer do |hf|
396
- hf.different_first = false
397
- hf.different_odd_even = false
398
- hf.odd_header = 'Test Header'
399
- end
400
- doc = Nokogiri::XML(@ws.to_xml_string)
401
- assert_equal(doc.xpath('//xmlns:worksheet/xmlns:headerFooter[@differentFirst=0][@differentOddEven=0]').size, 1)
402
- end
403
-
404
- def test_to_xml_string_drawing
405
- @ws.add_chart Axlsx::Pie3DChart
406
- doc = Nokogiri::XML(@ws.to_xml_string)
407
- assert_equal @ws.send(:worksheet_drawing).relationship.Id, doc.xpath('//xmlns:worksheet/xmlns:drawing').first["r:id"]
408
- end
409
-
410
- def test_to_xml_string_tables
411
- @ws.add_row ["one", "two"]
412
- @ws.add_row [1, 2]
413
- table = @ws.add_table "A1:B2"
414
- doc = Nokogiri::XML(@ws.to_xml_string)
415
- assert_equal(doc.xpath('//xmlns:worksheet/xmlns:tableParts[@count="1"]').size, 1)
416
- assert_equal table.rId, doc.xpath('//xmlns:worksheet/xmlns:tableParts/xmlns:tablePart').first["r:id"]
417
- end
418
-
419
- def test_to_xml_string
420
- schema = Nokogiri::XML::Schema(File.open(Axlsx::SML_XSD))
421
- doc = Nokogiri::XML(@ws.to_xml_string)
422
- assert(schema.validate(doc).map{ |e| puts e.message; e }.empty?, "error free validation")
423
- end
424
-
425
- def test_styles
426
- assert(@ws.styles.is_a?(Axlsx::Styles), 'worksheet provides access to styles')
427
- end
428
-
429
- def test_to_xml_string_with_illegal_chars
430
- old = Axlsx::trust_input
431
- Axlsx::trust_input = false
432
- nasties = "\v\u2028\u0001\u0002\u0003\u0004\u0005\u0006\u0007\u0008\u001f"
433
- @ws.add_row [nasties]
434
- assert_equal(0, @ws.rows.last.cells.last.value.index("\v"))
435
- assert_equal(nil, @ws.to_xml_string.index("\v"))
436
- Axlsx::trust_input = old
437
- end
438
-
439
- def test_to_xml_string_with_newlines
440
- cell_with_newline = "foo\n\r\nbar"
441
- @ws.add_row [cell_with_newline]
442
- assert_equal("foo\n\r\nbar", @ws.rows.last.cells.last.value)
443
- assert_not_nil(@ws.to_xml_string.index("foo\n\r\nbar"))
444
- end
445
- # Make sure the XML for all optional elements (like pageMargins, autoFilter, ...)
446
- # is generated in correct order.
447
- def test_valid_with_optional_elements
448
- @ws.page_margins.set :left => 9
449
- @ws.page_setup.set :fit_to_width => 1
450
- @ws.print_options.set :headings => true
451
- @ws.auto_filter.range = "A1:C3"
452
- @ws.merge_cells "A4:A5"
453
- @ws.add_chart Axlsx::Pie3DChart
454
- @ws.add_table "E1:F3"
455
- @ws.add_pivot_table 'G5:G6', 'A1:D10'
456
- schema = Nokogiri::XML::Schema(File.open(Axlsx::SML_XSD))
457
- doc = Nokogiri::XML(@ws.to_xml_string)
458
- assert(schema.validate(doc).map { |e| puts e.message; e }.empty?, schema.validate(doc).map { |e| e.message }.join('\n'))
459
- end
460
-
461
- def test_relationships
462
- @ws.add_row [1,2,3]
463
- assert(@ws.relationships.empty?, "No Drawing relationship until you add a chart")
464
- @ws.add_chart Axlsx::Pie3DChart
465
- assert_equal(@ws.relationships.size, 1, "adding a chart creates the relationship")
466
- @ws.add_chart Axlsx::Pie3DChart
467
- assert_equal(@ws.relationships.size, 1, "multiple charts still only result in one relationship")
468
- @ws.add_comment :text => 'builder', :author => 'bob', :ref => @ws.rows.last.cells.last
469
- assert_equal(@ws.relationships.size, 3, "adding a comment adds 2 relationships")
470
- @ws.add_comment :text => 'not that is a comment!', :author => 'travis', :ref => "A1"
471
- assert_equal(@ws.relationships.size, 3, "adding multiple comments in the same worksheet should not add any additional comment relationships")
472
- @ws.add_pivot_table 'G5:G6', 'A1:D10'
473
- assert_equal(@ws.relationships.size, 4, "adding a pivot table adds 1 relationship")
474
- end
475
-
476
- def test_set_fixed_width_column
477
- @ws.add_row ["mule", "donkey", "horse"], :widths => [20, :ignore, nil]
478
- assert(@ws.column_info.size == 3, "a data item for each column")
479
- assert_equal(20, @ws.column_info[0].width, "adding a row with fixed width updates :fixed attribute")
480
- assert_equal(@ws.column_info[1].width, nil, ":ignore does not set any data")
481
- end
482
-
483
- def test_fixed_height
484
- @ws.add_row [1, 2, 3], :height => 40
485
- assert_equal(40, @ws.rows[-1].height)
486
- end
487
-
488
- def test_set_column_width
489
- @ws.add_row ["chasing windmills", "penut"]
490
- @ws.column_widths nil, 0.5
491
- assert_equal(@ws.column_info[1].width, 0.5, 'eat my width')
492
- assert_raise(ArgumentError, 'only accept unsigned ints') { @ws.column_widths 2, 7, -1 }
493
- assert_raise(ArgumentError, 'only accept Integer or Float') { @ws.column_widths 2, 7, "-1" }
494
- end
495
-
496
- def test_ranges
497
- @ws.add_row(["foo", "bar"])
498
- @ws.add_row(["a", "b", "c", "d", "e"])
499
-
500
- valid_range = "A1:B2"
501
- @ws[valid_range]
502
-
503
- valid_range = "A1:E2" ### Missing middle cells (C1 - E1), still allowed
504
- @ws[valid_range]
505
-
506
- assert_raise ArgumentError, "Invalid cell definition" do
507
- invalid_range_format = "A1:B2:C3"
508
- @ws[invalid_range_format]
509
- end
510
-
511
- assert_raise ArgumentError, "Missing cell `Z1` for the specified range." do
512
- invalid_row_range = "A1:Z1"
513
- @ws[invalid_row_range]
514
- end
515
-
516
- assert_raise ArgumentError, "Missing cell `D1` for the specified range." do
517
- invalid_cell_range = "D1:E2" ### Missing start cell, not allowed
518
- @ws[invalid_cell_range]
519
- end
520
-
521
- assert_raise ArgumentError, "Missing cell `A99` for the specified range." do
522
- invalid_cell_range = "A1:A99" ### Missing end cell, not allowed
523
- @ws[invalid_cell_range]
524
- end
525
- end
526
-
527
- def test_protect_range
528
- assert(@ws.send(:protected_ranges).is_a?(Axlsx::SimpleTypedList))
529
- assert_equal(0, @ws.send(:protected_ranges).size)
530
- @ws.protect_range('A1:A3')
531
- assert_equal('A1:A3', @ws.send(:protected_ranges).last.sqref)
532
- end
533
-
534
- def test_protect_range_with_cells
535
- @ws.add_row [1, 2, 3]
536
- assert_nothing_raised {@ws.protect_range(@ws.rows.first.cells) }
537
- assert_equal('A1:C1', @ws.send(:protected_ranges).last.sqref)
538
- end
539
-
540
- def test_merge_cells
541
- @ws.add_row [1,2,3]
542
- @ws.add_row [4,5,6]
543
- @ws.add_row [7,8,9]
544
- @ws.merge_cells "A1:A2"
545
- @ws.merge_cells "B2:C3"
546
- @ws.merge_cells @ws.rows.last.cells[(0..1)]
547
- assert_equal(@ws.send(:merged_cells).size, 3)
548
- assert_equal(@ws.send(:merged_cells).last, "A3:B3")
549
- end
550
-
551
- def test_merge_cells_sorts_correctly_by_row_when_given_array
552
- 10.times do |i|
553
- @ws.add_row [i]
554
- end
555
- @ws.merge_cells [@ws.rows[8].cells.first, @ws.rows[9].cells.first]
556
- assert_equal "A9:A10", @ws.send(:merged_cells).first
557
- end
558
-
559
- def test_auto_filter
560
- assert(@ws.auto_filter.range.nil?)
561
- assert(@wb.defined_names.none?{|defined_name| defined_name.name=='_xlnm._FilterDatabase'})
562
- assert_raise(ArgumentError) { @ws.auto_filter = 123 }
563
- @ws.auto_filter.range = "A1:D9"
564
- assert_equal(@ws.auto_filter.range, "A1:D9")
565
- @ws.to_xml_string
566
- assert(@wb.defined_names.any?{|defined_name| defined_name.name=='_xlnm._FilterDatabase'})
567
- end
568
-
569
- def test_auto_filter_assign
570
- other_ws = @wb.add_worksheet
571
-
572
- assert(@ws.auto_filter.range.nil?)
573
- assert(other_ws.auto_filter.range.nil?)
574
- assert(@wb.defined_names.none?{|defined_name| defined_name.name=='_xlnm._FilterDatabase'})
575
- assert_raise(ArgumentError) { @ws.auto_filter = 123 }
576
-
577
- @ws.auto_filter = "A1:D9"
578
- assert_equal(@ws.auto_filter.range, "A1:D9")
579
-
580
- other_ws.auto_filter = "A1:D2"
581
- assert_equal(other_ws.auto_filter.range, "A1:D2")
582
-
583
- @ws.to_xml_string
584
- other_ws.to_xml_string
585
-
586
- filter_database = @wb.defined_names.select{|defined_name| defined_name.name=='_xlnm._FilterDatabase'}
587
- assert_equal(2, filter_database.size)
588
- assert_equal(@ws.index, filter_database[0].local_sheet_id)
589
- assert_equal(other_ws.index, filter_database[1].local_sheet_id)
590
- end
591
-
592
-
593
- def test_sheet_pr_for_auto_filter
594
- @ws.auto_filter.range = 'A1:D9'
595
- @ws.auto_filter.add_column 0, :filters, :filter_items => [1]
596
- doc = Nokogiri::XML(@ws.to_xml_string)
597
- assert(doc.xpath('//sheetPr[@filterMode=1]'))
598
- end
599
-
600
- def test_outline_level_rows
601
- 3.times { @ws.add_row [1,2,3] }
602
- @ws.outline_level_rows 0, 2
603
- assert_equal(1, @ws.rows[0].outline_level)
604
- assert_equal(true, @ws.rows[2].hidden)
605
- assert_equal(true, @ws.sheet_view.show_outline_symbols)
606
- end
607
-
608
- def test_outline_level_columns
609
- 3.times { @ws.add_row [1,2,3] }
610
- @ws.outline_level_columns 0, 2
611
- assert_equal(1, @ws.column_info[0].outline_level)
612
- assert_equal(true, @ws.column_info[2].hidden)
613
- assert_equal(true, @ws.sheet_view.show_outline_symbols)
614
- end
615
-
616
- def test_worksheet_does_not_get_added_to_workbook_on_initialize_failure
617
- assert_equal(1, @wb.worksheets.size)
618
- assert_raise(ArgumentError) { @wb.add_worksheet(:name => 'Sheet1') }
619
- assert_equal(1, @wb.worksheets.size)
620
- end
621
-
622
- def test_worksheet_only_includes_outline_pr_when_set
623
- doc = Nokogiri::XML(@ws.to_xml_string)
624
- assert_equal(doc.xpath('//xmlns:worksheet/xmlns:sheetPr/xmlns:outlinePr').size, 0)
625
-
626
- @ws.sheet_pr.outline_pr.summary_below = false
627
- @ws.sheet_pr.outline_pr.summary_right = true
628
- doc = Nokogiri::XML(@ws.to_xml_string)
629
- assert_equal(doc.xpath('//xmlns:worksheet/xmlns:sheetPr/xmlns:outlinePr').size, 1)
630
- assert_equal(doc.xpath('//xmlns:worksheet/xmlns:sheetPr/xmlns:outlinePr[@summaryBelow=0][@summaryRight=1]').size, 1)
631
- end
632
- end
@@ -1,55 +0,0 @@
1
- require 'tc_helper.rb'
2
-
3
- class TestWorksheetHyperlink < Test::Unit::TestCase
4
- def setup
5
- p = Axlsx::Package.new
6
- wb = p.workbook
7
- @ws = wb.add_worksheet
8
- @options = { :location => 'https://github.com/randym/axlsx?foo=1&bar=2', :tooltip => 'axlsx', :ref => 'A1', :display => 'AXSLX', :target => :internal }
9
- @a = @ws.add_hyperlink @options
10
- end
11
-
12
- def test_initailize
13
- assert_raise(ArgumentError) { Axlsx::WorksheetHyperlink.new }
14
- end
15
-
16
- def test_location
17
- assert_equal(@options[:location], @a.location)
18
- end
19
-
20
- def test_tooltip
21
- assert_equal(@options[:tooltip], @a.tooltip)
22
- end
23
-
24
- def test_target
25
- assert_equal(@options[:target], @a.instance_values['target'])
26
- end
27
-
28
- def test_display
29
- assert_equal(@options[:display], @a.display)
30
- end
31
- def test_ref
32
- assert_equal(@options[:ref], @a.ref)
33
- end
34
-
35
- def test_to_xml_string_with_non_external
36
- doc = Nokogiri::XML(@ws.to_xml_string)
37
- assert_equal(doc.xpath("//xmlns:hyperlink[@ref='#{@a.ref}']").size, 1)
38
- assert_equal(doc.xpath("//xmlns:hyperlink[@tooltip='#{@a.tooltip}']").size, 1)
39
- assert_equal(doc.xpath("//xmlns:hyperlink[@location='#{@a.location}']").size, 1)
40
- assert_equal(doc.xpath("//xmlns:hyperlink[@display='#{@a.display}']").size, 1)
41
- assert_equal(doc.xpath("//xmlns:hyperlink[@r:id]").size, 0)
42
- end
43
-
44
- def test_to_xml_stirng_with_external
45
- @a.target = :external
46
- doc = Nokogiri::XML(@ws.to_xml_string)
47
- assert_equal(doc.xpath("//xmlns:hyperlink[@ref='#{@a.ref}']").size, 1)
48
- assert_equal(doc.xpath("//xmlns:hyperlink[@tooltip='#{@a.tooltip}']").size, 1)
49
- assert_equal(doc.xpath("//xmlns:hyperlink[@display='#{@a.display}']").size, 1)
50
- assert_equal(doc.xpath("//xmlns:hyperlink[@location='#{@a.location}']").size, 0)
51
- assert_equal(doc.xpath("//xmlns:hyperlink[@r:id='#{@a.relationship.Id}']").size, 1)
52
- end
53
- end
54
-
55
-