workbook 0.8.1 → 0.9.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 (74) hide show
  1. checksums.yaml +4 -4
  2. data/.codeclimate.yml +21 -0
  3. data/.gitignore +4 -1
  4. data/.ruby-version +1 -1
  5. data/.travis.yml +4 -4
  6. data/CHANGELOG.md +8 -0
  7. data/Gemfile +2 -2
  8. data/README.md +9 -7
  9. data/Rakefile +6 -6
  10. data/json_test.json +1 -0
  11. data/lib/workbook/book.rb +73 -62
  12. data/lib/workbook/cell.rb +58 -13
  13. data/lib/workbook/column.rb +31 -28
  14. data/lib/workbook/format.rb +23 -24
  15. data/lib/workbook/generatetypes.rb +4 -4
  16. data/lib/workbook/modules/cache.rb +6 -7
  17. data/lib/workbook/modules/cell.rb +77 -100
  18. data/lib/workbook/modules/diff_sort.rb +92 -83
  19. data/lib/workbook/modules/raw_objects_storage.rb +6 -8
  20. data/lib/workbook/modules/type_parser.rb +30 -22
  21. data/lib/workbook/nil_value.rb +4 -9
  22. data/lib/workbook/readers/csv_reader.rb +7 -10
  23. data/lib/workbook/readers/ods_reader.rb +51 -50
  24. data/lib/workbook/readers/txt_reader.rb +6 -8
  25. data/lib/workbook/readers/xls_reader.rb +21 -33
  26. data/lib/workbook/readers/xls_shared.rb +106 -117
  27. data/lib/workbook/readers/xlsx_reader.rb +45 -46
  28. data/lib/workbook/row.rb +99 -84
  29. data/lib/workbook/sheet.rb +47 -38
  30. data/lib/workbook/table.rb +96 -72
  31. data/lib/workbook/template.rb +12 -15
  32. data/lib/workbook/types/false.rb +0 -1
  33. data/lib/workbook/types/nil.rb +0 -1
  34. data/lib/workbook/types/nil_class.rb +1 -1
  35. data/lib/workbook/types/numeric.rb +1 -1
  36. data/lib/workbook/types/string.rb +1 -1
  37. data/lib/workbook/types/time.rb +1 -1
  38. data/lib/workbook/types/true.rb +0 -1
  39. data/lib/workbook/types/true_class.rb +1 -1
  40. data/lib/workbook/version.rb +2 -3
  41. data/lib/workbook/writers/csv_table_writer.rb +10 -13
  42. data/lib/workbook/writers/html_writer.rb +34 -38
  43. data/lib/workbook/writers/json_table_writer.rb +8 -11
  44. data/lib/workbook/writers/xls_writer.rb +30 -36
  45. data/lib/workbook/writers/xlsx_writer.rb +45 -29
  46. data/lib/workbook.rb +16 -15
  47. data/test/artifacts/currency_test.ods +0 -0
  48. data/test/helper.rb +6 -5
  49. data/test/test_book.rb +41 -38
  50. data/test/test_column.rb +26 -24
  51. data/test/test_format.rb +51 -55
  52. data/test/test_functional.rb +7 -8
  53. data/test/test_modules_cache.rb +18 -17
  54. data/test/test_modules_cell.rb +55 -46
  55. data/test/test_modules_table_diff_sort.rb +55 -64
  56. data/test/test_modules_type_parser.rb +61 -31
  57. data/test/test_readers_csv_reader.rb +48 -42
  58. data/test/test_readers_ods_reader.rb +36 -31
  59. data/test/test_readers_txt_reader.rb +21 -23
  60. data/test/test_readers_xls_reader.rb +20 -23
  61. data/test/test_readers_xls_shared.rb +2 -3
  62. data/test/test_readers_xlsx_reader.rb +44 -37
  63. data/test/test_row.rb +105 -109
  64. data/test/test_sheet.rb +35 -41
  65. data/test/test_table.rb +82 -60
  66. data/test/test_template.rb +16 -15
  67. data/test/test_types_date.rb +4 -6
  68. data/test/test_writers_csv_writer.rb +24 -0
  69. data/test/test_writers_html_writer.rb +42 -41
  70. data/test/test_writers_json_writer.rb +16 -9
  71. data/test/test_writers_xls_writer.rb +50 -35
  72. data/test/test_writers_xlsx_writer.rb +62 -34
  73. data/workbook.gemspec +25 -27
  74. metadata +96 -42
data/test/test_table.rb CHANGED
@@ -1,39 +1,41 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # -*- encoding : utf-8 -*-
4
- require File.join(File.dirname(__FILE__), 'helper')
3
+ require File.join(File.dirname(__FILE__), "helper")
5
4
 
6
- class TestTable< Minitest::Test
5
+ class TestTable < Minitest::Test
7
6
  def test_initialize
8
7
  t = Workbook::Table.new
9
- assert_equal(t,[])
8
+ assert_equal([], t.rows)
10
9
  c = Workbook::Cell.new("celllll")
11
10
  t = Workbook::Table.new [[c]]
12
11
 
13
- assert_equal([[c]],t)
12
+ assert_equal([[c]], t.rows.map(&:cells))
14
13
  end
14
+
15
15
  def test_header
16
16
  t = Workbook::Table.new
17
17
  assert_nil(t.header)
18
18
  t = Workbook::Table.new [[1]]
19
- assert_equal(t.header,[1])
20
- assert_equal(t.header.class,Workbook::Row)
19
+ assert_equal(t.header, [1])
20
+ assert_equal(t.header.class, Workbook::Row)
21
21
  end
22
22
 
23
23
  def test_new_row
24
24
  t = Workbook::Table.new
25
25
  assert_equal(t.count, 0)
26
26
 
27
- r = t.new_row [1,2,3,4]
28
- assert_equal(r, [1,2,3,4])
27
+ r = t.new_row [1, 2, 3, 4]
28
+ assert_equal(r, [1, 2, 3, 4])
29
29
  assert_equal(r.class, Workbook::Row)
30
- assert_equal(1,t.count)
30
+ assert_equal(1, t.count)
31
31
 
32
32
  r = t.new_row
33
33
  assert_equal(r.empty?, true)
34
34
  assert_equal(r.class, Workbook::Row)
35
35
 
36
36
  assert_equal(2, t.count)
37
+
38
+ assert_equal(r, t.rows.last)
37
39
  assert_equal(r, t.last)
38
40
 
39
41
  r << 2
@@ -43,19 +45,19 @@ class TestTable< Minitest::Test
43
45
 
44
46
  def test_append_row
45
47
  t = Workbook::Table.new
46
- row = t.new_row(["a","b"])
48
+ row = t.new_row(["a", "b"])
47
49
  assert_equal(row, t.header)
48
- row = Workbook::Row.new([1,2])
50
+ row = Workbook::Row.new([1, 2])
49
51
  assert_nil(row.table)
50
52
  t.push(row)
51
53
  assert_equal(t, row.table)
52
- row = Workbook::Row.new([3,4])
54
+ row = Workbook::Row.new([3, 4])
53
55
  assert_nil(row.table)
54
56
  t << row
55
57
  assert_equal(t, row.table)
56
58
  t = Workbook::Table.new
57
- t << [1,2,3,4]
58
- assert_equal(Workbook::Row,t.first.class)
59
+ t << [1, 2, 3, 4]
60
+ assert_equal(Workbook::Row, t.first.class)
59
61
  end
60
62
 
61
63
  def test_sheet
@@ -72,56 +74,65 @@ class TestTable< Minitest::Test
72
74
  end
73
75
 
74
76
  def test_delete_all
75
- w = Workbook::Book.new [["a","b"],[1,2],[3,4]]
77
+ w = Workbook::Book.new [["a", "b"], [1, 2], [3, 4]]
76
78
  t = w.sheet.table
77
79
  t.delete_all
78
- assert_equal(Workbook::Table,t.class)
79
- assert_equal(0,t.count)
80
+ assert_equal(Workbook::Table, t.class)
81
+ assert_equal(0, t.count)
80
82
  end
81
83
 
82
84
  def test_clone
83
- w = Workbook::Book.new [["a","b"],[1,2],[3,4]]
85
+ w = Workbook::Book.new [["a", "b"], [1, 2], [3, 4]]
84
86
  t = w.sheet.table
85
- assert_equal(3,t[2][:a])
87
+ assert_equal(3, t[2][:a])
86
88
  t2 = t.clone
87
89
  t2[2][:a] = 5
88
- assert_equal(3,t[2][:a])
89
- assert_equal(5,t2[2][:a])
90
+ assert_equal(3, t[2][:a])
91
+ assert_equal(5, t2[2][:a])
90
92
  end
91
93
 
92
94
  def test_clone_custom_header
93
- w = Workbook::Book.new [[nil, nil],["a","b"],[1,2],[3,4]]
95
+ w = Workbook::Book.new [[nil, nil], ["a", "b"], [1, 2], [3, 4]]
94
96
  t = w.sheet.table
95
- t.header=t[1]
96
- assert_equal(3,t[3][:a])
97
+ t.header = t[1]
98
+ assert_equal(3, t[3][:a])
97
99
  t2 = t.clone
100
+ assert_equal(1, t2.header_row_index)
101
+
98
102
  t2[3][:a] = 5
99
- assert_equal(3,t[3][:a])
100
- assert_equal(5,t2[3][:a])
103
+ assert_equal(3, t[3][:a])
104
+ assert_equal(5, t2[3][:a])
101
105
  end
102
106
 
103
107
  def test_spreadsheet_style_cell_addressing
104
- w = Workbook::Book.new [[nil, nil],["a","b"],[1,2],[3,4]]
108
+ w = Workbook::Book.new [[nil, nil], ["a", "b"], [1, 2], [3, 4]]
105
109
  t = w.sheet.table
106
110
  assert_nil(t["A1"].value)
107
111
  assert_nil(t["B1"].value)
108
- assert_equal("a",t["A2"].value)
109
- assert_equal("b",t["B2"].value)
110
- assert_equal(1,t["A3"].value)
111
- assert_equal(2,t["B3"].value)
112
- assert_equal(3,t["A4"].value)
113
- assert_equal(4,t["B4"].value)
112
+ assert_equal("a", t["A2"].value)
113
+ assert_equal("b", t["B2"].value)
114
+ assert_equal(1, t["A3"].value)
115
+ assert_equal(2, t["B3"].value)
116
+ assert_equal(3, t["A4"].value)
117
+ assert_equal(4, t["B4"].value)
118
+ assert_equal(["b", 2, 4], t["B"].map(&:value))
119
+ end
120
+
121
+ def test_column_retrieval_trough_symbol
122
+ t = Workbook::Book.new([["a", "Andere Kolom"], [1, 2], [3, 4]]).sheet.table
123
+ assert_equal([1, 3], t[:a].map(&:value))
124
+ assert_equal([2, 4], t[:andere_kolom].map(&:value))
114
125
  end
115
126
 
116
127
  def test_multirowselect_through_collections
117
- w = Workbook::Book.new [["a","b"],[1,2],[3,4]]
128
+ w = Workbook::Book.new [["a", "b"], [1, 2], [3, 4]]
118
129
  t = w.sheet.table
119
- assert_equal(Workbook::Table,t[0..2].class)
120
- assert_equal(2,t[0..2][1][1])
130
+ assert_equal(Workbook::Table, t[0..2].class)
131
+ assert_equal(2, t[0..2][1][1])
121
132
  end
122
133
 
123
134
  def test_table
124
- w = Workbook::Book.new [[nil,nil],["a","b"],[1,2],[3,4]]
135
+ w = Workbook::Book.new [[nil, nil], ["a", "b"], [1, 2], [3, 4]]
125
136
  t = w.sheet.table
126
137
  w2 = Workbook::Book.new
127
138
  w2.sheet.table = t[2..3]
@@ -129,7 +140,7 @@ class TestTable< Minitest::Test
129
140
  end
130
141
 
131
142
  def test_array_style_assignment
132
- w = Workbook::Book.new [["a","b"],[1,2],[3,4]]
143
+ w = Workbook::Book.new [["a", "b"], [1, 2], [3, 4]]
133
144
  t = w.sheet.table
134
145
  r = t[1].clone
135
146
  assert_nil(r.table)
@@ -138,7 +149,7 @@ class TestTable< Minitest::Test
138
149
  end
139
150
 
140
151
  def test_delete_at
141
- w = Workbook::Book.new [["a","b"],[1,2],[3,4]]
152
+ w = Workbook::Book.new [["a", "b"], [1, 2], [3, 4]]
142
153
  t = w.sheet.table
143
154
  t.delete_at 2
144
155
  assert_equal(1, t.last.first.value)
@@ -146,50 +157,61 @@ class TestTable< Minitest::Test
146
157
 
147
158
  def test_trim!
148
159
  t = Workbook::Table.new
149
- t << [1,2,3]
150
- t << [1,2,nil,nil]
160
+ t << [1, 2, 3]
161
+ t << [1, 2, nil, nil]
151
162
  t.trim!
152
- assert_equal("1,2,3\n1,2,\n",t.to_csv)
163
+ assert_equal("1,2,3\n1,2,\n", t.to_csv)
153
164
  t = Workbook::Table.new
154
- t << [1,2,3]
165
+ t << [1, 2, 3]
155
166
  t << [nil]
156
- t << [1,2,nil,nil]
157
- t << [nil,nil,nil,nil]
158
- t << [nil,nil,nil,nil]
167
+ t << [1, 2, nil, nil]
168
+ t << [nil, nil, nil, nil]
169
+ t << [nil, nil, nil, nil]
159
170
  t.trim!
160
- assert_equal("1,2,3\n,,\n1,2,\n",t.to_csv)
171
+ assert_equal("1,2,3\n,,\n1,2,\n", t.to_csv)
161
172
  end
173
+
162
174
  def test_performance
163
175
  table = Workbook::Table.new
164
- headers = 100.times.collect{|a| "header#{a}"}
165
- first_row = 100.times.collect{|a| Time.now}
176
+ headers = 100.times.collect { |a| "header#{a}" }
177
+ first_row = 100.times.collect { |a| Time.now }
166
178
  table << headers.shuffle
167
179
  table << first_row
168
180
  1000.times do |times|
169
181
  row = table[1].clone
170
182
  table << row
171
183
  headers.each do |a|
172
- row[a.to_sym]=Time.now
184
+ row[a.to_sym] = Time.now
173
185
  end
174
186
  end
175
- last_line = table.count-1
187
+ last_line = table.count - 1
176
188
  delta_start = table[12][0].value - table[2][0].value
177
- delta_end = table[last_line][0].value - table[last_line-10][0].value
178
- average_run_time = (delta_start+delta_end / 20)
189
+ delta_end = table[last_line][0].value - table[last_line - 10][0].value
190
+ average_run_time = (delta_start + delta_end / 20)
179
191
  if (delta_end - delta_start) > average_run_time
180
192
  puts "Performance issue"
181
193
  end
182
194
  end
195
+
183
196
  def test_columns
184
197
  table = Workbook::Table.new([[]])
185
- assert_equal(table.columns,[])
186
- table = Workbook::Table.new([[:a,:b],[1,2]])
187
- assert_equal(table.columns.count,2)
198
+ assert_equal(table.columns, [])
199
+ table = Workbook::Table.new([[:a, :b], [1, 2]])
200
+ assert_equal(table.columns.count, 2)
188
201
  end
202
+
189
203
  def test_dimensions
190
204
  table = Workbook::Table.new([[]])
191
- assert_equal([0,1],table.dimensions)
192
- table = Workbook::Table.new([[:a,:b],[1,2,3,4]])
193
- assert_equal([4,2],table.dimensions)
205
+ assert_equal([0, 1], table.dimensions)
206
+ table = Workbook::Table.new([[:a, :b], [1, 2, 3, 4]])
207
+ assert_equal([4, 2], table.dimensions)
208
+ end
209
+
210
+ def test_push
211
+ table = Workbook::Table.new([["a", 2, 3]])
212
+ table.push(["b", 2, 3])
213
+ assert_equal("b", table[1][0].value)
214
+ table.push(["c", 2, 3], ["d", 2, 3])
215
+ assert_equal("d", table[3][0].value)
194
216
  end
195
217
  end
@@ -1,41 +1,42 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # -*- encoding : utf-8 -*-
4
- require File.join(File.dirname(__FILE__), 'helper')
3
+ require File.join(File.dirname(__FILE__), "helper")
5
4
 
6
5
  class TestTemplate < Minitest::Test
7
-
8
6
  def test_initalize
9
7
  t = Workbook::Template.new
10
- assert_equal(true,(t.methods.include?(:add_raw) or t.methods.include?("add_raw")))
11
- assert_equal(true,(t.methods.include?(:has_raw_for?) or t.methods.include?("has_raw_for?")))
12
- assert_equal(true,(t.methods.include?(:raws) or t.methods.include?("raws")))
8
+ assert_equal(true, (t.methods.include?(:add_raw) || t.methods.include?("add_raw")))
9
+ assert_equal(true, (t.methods.include?(:has_raw_for?) || t.methods.include?("has_raw_for?")))
10
+ assert_equal(true, (t.methods.include?(:raws) || t.methods.include?("raws")))
13
11
  end
14
12
 
15
13
  def test_add_raw_and_has_raw_for
16
14
  t = Workbook::Template.new
17
15
  t.add_raw "asdfsadf"
18
- assert_equal(false,t.has_raw_for?(Integer))
19
- assert_equal(true,t.has_raw_for?(String))
16
+ assert_equal(false, t.has_raw_for?(Integer))
17
+ assert_equal(true, t.has_raw_for?(String))
20
18
  end
19
+
21
20
  def test_raws
22
21
  t = Workbook::Template.new
23
22
  t.add_raw "asdfsadf"
24
- assert_equal({String=>"asdfsadf"}, t.raws)
23
+ assert_equal({String => "asdfsadf"}, t.raws)
25
24
  end
25
+
26
26
  def test_set_default_formats!
27
27
  t = Workbook::Template.new
28
28
  t.set_default_formats!
29
- assert_equal({font_weight: "bold"},t.formats[:header][:default])
29
+ assert_equal({font_weight: "bold"}, t.formats[:header][:default])
30
30
  end
31
+
31
32
  def test_add_formats
32
33
  t = Workbook::Template.new
33
- t.add_format Workbook::Format.new({font:"Arial"})
34
- t.add_format Workbook::Format.new({font:"Times"})
35
- assert_equal(2,t.formats.keys.count)
36
- named_format = Workbook::Format.new({font:"Times"})
34
+ t.add_format Workbook::Format.new({font: "Arial"})
35
+ t.add_format Workbook::Format.new({font: "Times"})
36
+ assert_equal(2, t.formats.keys.count)
37
+ named_format = Workbook::Format.new({font: "Times"})
37
38
  named_format.name = 1
38
39
  t.add_format named_format
39
- assert_equal(2,t.formats.keys.count)
40
+ assert_equal(2, t.formats.keys.count)
40
41
  end
41
42
  end
@@ -1,16 +1,14 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # -*- encoding : utf-8 -*-
4
- require File.join(File.dirname(__FILE__), 'helper')
3
+ require File.join(File.dirname(__FILE__), "helper")
5
4
 
6
5
  class TestTypesDate < Minitest::Test
7
6
  def test_init
8
- w = Workbook::Types::Date.new(2001,2,2)
7
+ w = Workbook::Types::Date.new(2001, 2, 2)
9
8
  assert_equal(Workbook::Types::Date, w.class)
10
- assert_equal(Date.new(2001,2,2),w)
11
- assert_equal(Date.new(2001,2,2),w.value)
9
+ assert_equal(Date.new(2001, 2, 2), w)
10
+ assert_equal(Date.new(2001, 2, 2), w.value)
12
11
  assert_equal(true, w.is_a?(Date))
13
12
  assert_equal(true, w.is_a?(Workbook::Modules::Cell))
14
-
15
13
  end
16
14
  end
@@ -0,0 +1,24 @@
1
+ # frozen_string_literal: true
2
+
3
+ require File.join(File.dirname(__FILE__), "helper")
4
+ module Readers
5
+ class TestCsvWriter < Minitest::Test
6
+ def test_to_csv
7
+ w = Workbook::Book.new
8
+ w.import File.join(File.dirname(__FILE__), "artifacts/simple_csv.csv")
9
+ # reads
10
+ # a,b,c,d
11
+ # 1,2,3,4
12
+ # 5,3,2,1
13
+ # "asdf",123,12,2001-02-02
14
+ #
15
+ assert_equal("untitled document.csv", w.sheet.table.write_to_csv)
16
+ csv_result = File.read("untitled document.csv").split("\n")
17
+ csv_original = File.read(File.join(File.dirname(__FILE__), "artifacts/simple_csv.csv")).split("\n")
18
+ assert_equal(csv_original[0], csv_result[0])
19
+ assert_equal(csv_original[1], csv_result[1])
20
+ assert_equal(csv_original[2], csv_result[2])
21
+ assert_equal(csv_original[3], csv_result[3])
22
+ end
23
+ end
24
+ end
@@ -1,75 +1,76 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # -*- encoding : utf-8 -*-
4
- require File.join(File.dirname(__FILE__), 'helper')
3
+ require File.join(File.dirname(__FILE__), "helper")
5
4
 
6
5
  module Writers
7
6
  class TestHtmlWriter < Minitest::Test
8
7
  def test_to_html
9
- #jruby and ruby's output differ a bit... both produce valid results though
8
+ # jruby and ruby's output differ a bit... both produce valid results though
10
9
  # match = Workbook::Book.new.to_html.match(/<table \/>/) ? true : false #jruby
11
10
  # puts Workbook::Book.new.to_html
12
11
  # match = (Workbook::Book.new.to_html.match(/<table><thead><\/thead><tbody><\/tbody><\/table>/) ? true : false) if match == false #ruby
13
12
  # assert_equal(true, match)
14
- html = Workbook::Book.new([['a','b'],[1,2],[3,4]]).to_html
15
- match = html.match(/<table><\/table>/) ? true : false
16
- assert_equal(false, match)
17
- match = html.match(/<td>1<\/td>/) ? true : false
18
- assert_equal(true, match)
19
- match = html.match(/<th class=\"a\" data-key=\"a\">a<\/th>/) ? true : false
20
- assert_equal(true, match)
13
+ html = Workbook::Book.new([["a", "b"], [1, 2], [3, 4]]).to_html
14
+
15
+ assert_match(/<td>1<\/td>/, html)
16
+ assert_match(/<th class="a" data-key="a">a<\/th>/, html)
21
17
  end
18
+
22
19
  def test_to_html_format_names
23
- b = Workbook::Book.new([['a','b'],[1,2],[3,4]])
20
+ b = Workbook::Book.new([["a", "b"], [1, 2], [3, 4]])
24
21
  c = b[0][0][0][0]
25
- c.format.name="testname"
22
+ c.format.name = "testname"
26
23
  c = b[0][0][1][0]
27
- c.format.name="testname"
24
+ c.format.name = "testname"
25
+
28
26
  html = b.to_html
29
- match = html.match(/<th class=\"testname a\" data-key=\"a\">a<\/th>/) ? true : false
30
- assert_equal(true, match)
31
- match = html.match(/<td class=\"testname\">1<\/td>/) ? true : false
32
- assert_equal(true, match)
27
+
28
+ assert_match(/<th class="testname a" data-key="a">a<\/th>/, html)
29
+ assert_match(/<td class="testname">1<\/td>/, html)
33
30
  end
31
+
34
32
  def test_build_cell_options
35
- b = Workbook::Book.new([['a','b'],[1,2],[3,4]])
36
- result = b.sheet.table.build_cell_options(b.sheet.table.first.first,{data: {a:"a"}})
37
- assert("a",result["data-a"])
33
+ b = Workbook::Book.new([["a", "b"], [1, 2], [3, 4]])
34
+ result = b.sheet.table.build_cell_options(b.sheet.table.first.first, {data: {a: "a"}})
35
+
36
+ assert_equal("a", result[:"data-a"])
38
37
  end
38
+
39
39
  def test_to_html_css
40
- b = Workbook::Book.new([['a','b'],[1,2],[3,4]])
40
+ b = Workbook::Book.new([["a", "b"], [1, 2], [3, 4]])
41
41
  c = b[0][0][0][0]
42
- c.format[:background]="#f00"
42
+ c.format[:background] = "#f00"
43
43
  c = b[0][0][1][0]
44
- c.format[:background]="#ff0"
44
+ c.format[:background] = "#ff0"
45
+
45
46
  html = b.to_html
46
- match = html.match(/<th class=\"a\" data-key=\"a\">a<\/th>/) ? true : false
47
- assert_equal(true, match)
48
- match = html.match(/<td>1<\/td>/) ? true : false
49
- assert_equal(true, match)
50
- html = b.to_html({:style_with_inline_css=>true})
51
- match = html.match(/<th class=\"a\" data-key=\"a\" style=\"background: #f00\">a<\/th>/) ? true : false
52
- assert_equal(true, match)
53
- match = html.match(/<td style="background: #ff0">1<\/td>/) ? true : false
54
- assert_equal(true, match)
47
+ assert_match(/<th class="a" data-key="a">a<\/th>/, html)
48
+ assert_match(/<td>1<\/td>/, html)
49
+
50
+ html = b.to_html({style_with_inline_css: true})
51
+ assert_match(/<th class="a" data-key="a" style="background: #f00">a<\/th>/, html)
52
+ assert_match(/<td style="background: #ff0">1<\/td>/, html)
55
53
  end
54
+
56
55
  def test_sheet_and_table_names
57
- b = Workbook::Book.new([['a','b'],[1,2],[3,4]])
56
+ b = Workbook::Book.new([["a", "b"], [1, 2], [3, 4]])
58
57
  b.sheet.name = "Sheet name"
59
58
  b.sheet.table.name = "Table name"
59
+
60
60
  html = b.to_html
61
- assert_equal(true, (html.match(/<h1>Sheet name<\/h1>/) ? true : false) )
62
- assert_equal(true, (html.match(/<h2>Table name<\/h2>/) ? true : false) )
61
+
62
+ assert_match(/<h1>Sheet name<\/h1>/, html)
63
+ assert_match(/<h2>Table name<\/h2>/, html)
63
64
  end
65
+
64
66
  def test_col_and_rowspans
65
67
  w = Workbook::Book.new
66
- w.import File.join(File.dirname(__FILE__), 'artifacts/sheet_with_combined_cells.ods')
68
+ w.import File.join(File.dirname(__FILE__), "artifacts/sheet_with_combined_cells.ods")
67
69
  html = w.to_html
68
- assert_equal(true, (html.match(/rowspan="2">15 nov 11 15 nov 11/) ? true : false) )
69
- if RUBY_VERSION >= "1.9"
70
- assert_equal(true, (html.match(/colspan="2" rowspan="2">13 mrt 12 15 mrt 12 13 mrt 12 15 mrt 12/) ? true : false) )
71
- assert_equal(true, (html.match(/colspan="2">14 90589/) ? true : false) )
72
- end
70
+ assert_match(/rowspan="2">15 nov 11 15 nov 11/, html)
71
+
72
+ assert_match(/colspan="2" rowspan="2">13 mrt 12 15 mrt 12 13 mrt 12 15 mrt 12/, html)
73
+ assert_match(/colspan="2">14 90589/, html)
73
74
  end
74
75
  end
75
76
  end
@@ -1,21 +1,28 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # -*- encoding : utf-8 -*-
4
- require File.join(File.dirname(__FILE__), 'helper')
3
+ require File.join(File.dirname(__FILE__), "helper")
5
4
 
6
5
  module Writers
7
6
  class TestJsonWriter < Minitest::Test
8
7
  def test_to_array_of_hashes_with_values
9
- assert_equal([],Workbook::Table.new.to_array_of_hashes_with_values)
10
- assert_equal([],Workbook::Table.new([["a","b"]]).to_array_of_hashes_with_values)
11
- assert_equal([{:a=>1,:b=>2},{:a=>Date.new(2012,1,1),:b=>nil}],
12
- Workbook::Table.new([["a","b"],[1,2],[Date.new(2012,1,1),nil]]).to_array_of_hashes_with_values)
8
+ assert_equal([], Workbook::Table.new.to_array_of_hashes_with_values)
9
+ assert_equal([], Workbook::Table.new([["a", "b"]]).to_array_of_hashes_with_values)
10
+ assert_equal([{a: 1, b: 2}, {a: Date.new(2012, 1, 1), b: nil}],
11
+ Workbook::Table.new([["a", "b"], [1, 2], [Date.new(2012, 1, 1), nil]]).to_array_of_hashes_with_values)
13
12
  end
13
+
14
14
  def test_to_json
15
- assert_equal("[]",Workbook::Table.new.to_json)
16
- assert_equal("[]",Workbook::Table.new([["a","b"]]).to_json)
15
+ assert_equal("[]", Workbook::Table.new.to_json)
16
+ assert_equal("[]", Workbook::Table.new([["a", "b"]]).to_json)
17
17
  assert_equal("[{\"a\":1,\"b\":2},{\"a\":\"2012-01-01\",\"b\":null}]",
18
- Workbook::Table.new([["a","b"],[1,2],[Date.new(2012,1,1),nil]]).to_json)
18
+ Workbook::Table.new([["a", "b"], [1, 2], [Date.new(2012, 1, 1), nil]]).to_json)
19
+ end
20
+
21
+ def test_write_to_json
22
+ filename = Workbook::Table.new([["a", "b"], [1, 2], [Date.new(2012, 1, 1), nil]]).write_to_json("json_test.json")
23
+ json_written = File.read(filename)
24
+ assert_equal("[{\"a\":1,\"b\":2},{\"a\":\"2012-01-01\",\"b\":null}]",json_written)
25
+
19
26
  end
20
27
  end
21
28
  end