workbook 0.8.1 → 0.9.0

Sign up to get free protection for your applications and to get access to all the features.
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