xmlss 0.4.1 → 1.0.0.rc.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (41) hide show
  1. data/Gemfile.lock +3 -3
  2. data/README.rdoc +4 -4
  3. data/bench/profiler_runner.rb +1 -1
  4. data/examples/example_workbook.rb +1 -1
  5. data/examples/simple.rb +18 -1
  6. data/examples/simple.xml +22 -0
  7. data/lib/xmlss/element/cell.rb +52 -1
  8. data/lib/xmlss/element/column.rb +2 -0
  9. data/lib/xmlss/element/row.rb +2 -0
  10. data/lib/xmlss/element/worksheet.rb +14 -6
  11. data/lib/xmlss/element_stack.rb +69 -0
  12. data/lib/xmlss/style/alignment.rb +2 -0
  13. data/lib/xmlss/style/base.rb +2 -0
  14. data/lib/xmlss/style/border.rb +10 -0
  15. data/lib/xmlss/style/font.rb +2 -0
  16. data/lib/xmlss/style/interior.rb +2 -0
  17. data/lib/xmlss/style/number_format.rb +2 -0
  18. data/lib/xmlss/style/protection.rb +2 -0
  19. data/lib/xmlss/version.rb +1 -1
  20. data/lib/xmlss/workbook.rb +75 -58
  21. data/lib/xmlss/writer.rb +244 -0
  22. data/test/element/cell_test.rb +60 -1
  23. data/test/element/column_test.rb +5 -0
  24. data/test/element/row_test.rb +5 -0
  25. data/test/element/worksheet_test.rb +9 -4
  26. data/test/element_stack_test.rb +117 -0
  27. data/test/style/alignment_test.rb +5 -0
  28. data/test/style/base_test.rb +5 -0
  29. data/test/style/border_test.rb +26 -2
  30. data/test/style/font_test.rb +5 -0
  31. data/test/style/interior_test.rb +5 -0
  32. data/test/style/number_format_test.rb +5 -0
  33. data/test/style/protection_test.rb +6 -1
  34. data/test/workbook_test.rb +29 -13
  35. data/test/writer_test.rb +413 -0
  36. data/xmlss.gemspec +1 -1
  37. metadata +30 -25
  38. data/lib/xmlss/element/data.rb +0 -58
  39. data/lib/xmlss/undies_writer.rb +0 -175
  40. data/test/element/data_test.rb +0 -67
  41. data/test/undies_writer_test.rb +0 -372
@@ -5,20 +5,28 @@ module Xmlss::Worbook
5
5
 
6
6
  class BasicTests < Assert::Context
7
7
  desc "Xmlss::Workbook"
8
- before { @wkbk = Xmlss::Workbook.new }
8
+ before { @wkbk = Xmlss::Workbook.new(Xmlss::Writer.new) }
9
9
  subject { @wkbk }
10
10
 
11
+ should have_class_method :writer, :styles_stack, :worksheets_stack
11
12
  should have_instance_methods :to_s, :to_file
12
- should have_instance_methods :worksheet, :column, :row, :cell, :data
13
+
13
14
  should have_instance_methods :style, :alignment, :borders, :border
14
15
  should have_instance_methods :font, :interior, :number_format, :protection
15
16
 
17
+ should have_instance_methods :worksheet, :column, :row, :cell
18
+
19
+ should have_instance_methods :data, :type
20
+ should have_instance_methods :index, :style_id, :formula, :href
21
+ should have_instance_methods :merge_across, :merge_down, :height
22
+ should have_instance_methods :auto_fit_height, :hidden, :width
23
+ should have_instance_methods :auto_fit_width, :name
24
+
16
25
  should "return element objs when calling its element methods" do
17
26
  assert_kind_of Xmlss::Element::Worksheet, subject.worksheet('test')
18
27
  assert_kind_of Xmlss::Element::Column, subject.column
19
28
  assert_kind_of Xmlss::Element::Row, subject.row
20
29
  assert_kind_of Xmlss::Element::Cell, subject.cell
21
- assert_kind_of Xmlss::Element::Data, subject.data('test')
22
30
  end
23
31
 
24
32
  should "return style objs when calling its style methods" do
@@ -31,6 +39,13 @@ module Xmlss::Worbook
31
39
  assert_kind_of Xmlss::Style::Protection, subject.protection
32
40
  end
33
41
 
42
+ should "not complain if setting an attribute when there's no current element" do
43
+ # it should just do nothing and go on
44
+ assert_nothing_raised do
45
+ subject.index(1)
46
+ end
47
+ end
48
+
34
49
  should "return workbook markup string" do
35
50
  assert_match /<Workbook /, subject.to_s
36
51
  end
@@ -46,7 +61,7 @@ module Xmlss::Worbook
46
61
  end
47
62
 
48
63
  should "maintain the workbook's scope throughout content blocks" do
49
- wkbk = Xmlss::Workbook.new do
64
+ wkbk = Xmlss::Workbook.new(Xmlss::Writer.new) do
50
65
  style('test') {
51
66
  alignment
52
67
  borders {
@@ -57,7 +72,8 @@ module Xmlss::Worbook
57
72
  number_format
58
73
  protection
59
74
  }
60
- worksheet('test') {
75
+ worksheet {
76
+ name 'test'
61
77
  column
62
78
 
63
79
  row {
@@ -67,7 +83,7 @@ module Xmlss::Worbook
67
83
  end
68
84
 
69
85
  assert_equal(
70
- "<?xml version=\"1.0\" encoding=\"UTF-8\"?><Workbook xmlns=\"urn:schemas-microsoft-com:office:spreadsheet\" xmlns:ss=\"urn:schemas-microsoft-com:office:spreadsheet\"><Styles><Style ss:ID=\"test\"><Alignment /><Borders><Border ss:LineStyle=\"Continuous\" ss:Weight=\"1\" /></Borders><Font /><Interior /><NumberFormat /><Protection /></Style></Styles><Worksheet ss:Name=\"test\"><Table><Column /><Row><Cell><Data ss:Type=\"Number\">#{wkbk.object_id}</Data></Cell></Row></Table></Worksheet></Workbook>",
86
+ "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Workbook xmlns=\"urn:schemas-microsoft-com:office:spreadsheet\" xmlns:ss=\"urn:schemas-microsoft-com:office:spreadsheet\"><Styles><Style ss:ID=\"test\"><Alignment /><Borders><Border ss:LineStyle=\"Continuous\" ss:Weight=\"1\" /></Borders><Font /><Interior /><NumberFormat /><Protection /></Style></Styles><Worksheet ss:Name=\"test\"><Table><Column /><Row><Cell><Data ss:Type=\"Number\">#{wkbk.object_id}</Data></Cell></Row></Table></Worksheet></Workbook>",
71
87
  wkbk.to_s
72
88
  )
73
89
  end
@@ -78,31 +94,31 @@ module Xmlss::Worbook
78
94
 
79
95
  should "bork if non hash-like data is provided" do
80
96
  assert_raises NoMethodError do
81
- Xmlss::Workbook.new(:data => "some data")
97
+ Xmlss::Workbook.new(Xmlss::Writer.new, "some data")
82
98
  end
83
99
  assert_respond_to(
84
100
  :some,
85
- Xmlss::Workbook.new(:data => {:some => 'data'})
101
+ Xmlss::Workbook.new(Xmlss::Writer.new, :some => 'data')
86
102
  )
87
103
  end
88
104
 
89
105
  should "complain if trying to set data that conflict with public methods" do
90
106
  assert_raises ArgumentError do
91
- Xmlss::Workbook.new(:data => {:worksheet => "yay!"})
107
+ Xmlss::Workbook.new(Xmlss::Writer.new, :worksheet => "yay!")
92
108
  end
93
109
  end
94
110
 
95
111
  should "respond to each data key with its value" do
96
- wkbk = Xmlss::Workbook.new(:data => {:some => 'data'})
112
+ wkbk = Xmlss::Workbook.new(Xmlss::Writer.new, :some => 'data')
97
113
  assert_equal "data", wkbk.some
98
114
  end
99
115
 
100
116
  should "be able to access its data in the workbook definition" do
101
- wkbk = Xmlss::Workbook.new(:data => {:name => "awesome"}) do
102
- worksheet name
117
+ wkbk = Xmlss::Workbook.new(Xmlss::Writer.new, :worksheet_name => "awesome") do
118
+ worksheet worksheet_name
103
119
  end
104
120
  assert_equal(
105
- "<?xml version=\"1.0\" encoding=\"UTF-8\"?><Workbook xmlns=\"urn:schemas-microsoft-com:office:spreadsheet\" xmlns:ss=\"urn:schemas-microsoft-com:office:spreadsheet\"><Styles></Styles><Worksheet ss:Name=\"awesome\"><Table /></Worksheet></Workbook>",
121
+ "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Workbook xmlns=\"urn:schemas-microsoft-com:office:spreadsheet\" xmlns:ss=\"urn:schemas-microsoft-com:office:spreadsheet\"><Styles></Styles><Worksheet ss:Name=\"awesome\"><Table /></Worksheet></Workbook>",
106
122
  wkbk.to_s
107
123
  )
108
124
  end
@@ -0,0 +1,413 @@
1
+ require 'assert'
2
+
3
+ require 'xmlss/writer'
4
+ require 'xmlss/workbook'
5
+
6
+ module Xmlss
7
+
8
+
9
+
10
+ class BasicTests < Assert::Context
11
+ desc "UndiesWriter"
12
+ setup do
13
+ @w = Writer.new
14
+ end
15
+ subject { @w }
16
+
17
+ should have_class_methods :attributes, :classify, :coerce
18
+ should have_readers :styles_markup, :worksheets_markup
19
+ should have_instance_methods :write, :push, :pop, :flush, :workbook
20
+
21
+ should have_instance_methods :style, :alignment, :borders, :border
22
+ should have_instance_methods :font, :interior, :number_format, :protection
23
+
24
+ should have_instance_methods :worksheet, :column, :row, :cell
25
+
26
+ should "have empty markup by default" do
27
+ assert_empty subject.worksheets_markup
28
+ assert_empty subject.styles_markup
29
+ end
30
+
31
+ should "return itself when flushed" do
32
+ assert_equal subject, subject.flush
33
+ end
34
+
35
+ end
36
+
37
+
38
+
39
+ class HelpersTests < BasicTests
40
+
41
+ should "coerce certain values for xml output" do
42
+ assert_equal 1, Writer.coerce(true)
43
+ assert_nil Writer.coerce(false)
44
+ assert_nil Writer.coerce("")
45
+ assert_equal "hi", Writer.coerce("hi")
46
+ assert_equal 1, Writer.coerce(1)
47
+ end
48
+
49
+ should "classify underscored string" do
50
+ assert_equal "Hi", Writer.classify("Hi")
51
+ assert_equal "Hi", Writer.classify("hi")
52
+ assert_equal "Hithere", Writer.classify("HiThere")
53
+ assert_equal "Hithere", Writer.classify("hithere")
54
+ assert_equal "HiThere", Writer.classify("Hi_There")
55
+ assert_equal "HiThere", Writer.classify("Hi_there")
56
+ assert_equal "HiThere", Writer.classify("hi_there")
57
+ end
58
+
59
+ should "convert a list of attributes for xml output" do
60
+ class Thing
61
+ def keys; [:thing, :other, 'some', 'hi', :hi_there]; end
62
+
63
+ def thing; true; end
64
+ def other; false; end
65
+ def some; ""; end
66
+ def hi; :there; end
67
+ def hi_there; "you"; end
68
+ end
69
+ thing = Thing.new
70
+ exp = {
71
+ "ss:Hi" => "there",
72
+ "ss:HiThere" => "you",
73
+ "ss:Thing" => "1"
74
+ }
75
+
76
+ assert_equal exp, Writer.attributes(thing, thing.keys)
77
+ end
78
+
79
+ end
80
+
81
+
82
+
83
+ class StyleWritingTests < BasicTests
84
+
85
+ should "write alignment markup" do
86
+ subject.write(Xmlss::Style::Alignment.new({
87
+ :wrap_text => true,
88
+ :horizontal => :center,
89
+ :vertical => :bottom,
90
+ :rotate => 90
91
+ }))
92
+ subject.flush
93
+
94
+ assert_equal(
95
+ "<Alignment ss:Horizontal=\"Center\" ss:Rotate=\"90\" ss:Vertical=\"Bottom\" ss:WrapText=\"1\" />",
96
+ subject.styles_markup.to_s
97
+ )
98
+ end
99
+
100
+ should "write border markup" do
101
+ subject.write(Xmlss::Style::Border.new({
102
+ :color => '#FF0000',
103
+ :position => :top,
104
+ :weight => :thick,
105
+ :line_style => :dot
106
+ }))
107
+ subject.flush
108
+
109
+ assert_equal(
110
+ "<Border ss:Color=\"#FF0000\" ss:LineStyle=\"Dot\" ss:Position=\"Top\" ss:Weight=\"3\" />",
111
+ subject.styles_markup.to_s
112
+ )
113
+ end
114
+
115
+ should "write border collection markup" do
116
+ subject.write(Xmlss::Style::Borders.new)
117
+ subject.push(:styles)
118
+
119
+ subject.write(Xmlss::Style::Border.new({
120
+ :color => '#FF0000',
121
+ :position => :top
122
+ }))
123
+
124
+ subject.write(Xmlss::Style::Border.new({
125
+ :position => :left
126
+ }))
127
+
128
+ subject.flush
129
+
130
+ assert_equal(
131
+ "<Borders><Border ss:Color=\"#FF0000\" ss:LineStyle=\"Continuous\" ss:Position=\"Top\" ss:Weight=\"1\" /><Border ss:LineStyle=\"Continuous\" ss:Position=\"Left\" ss:Weight=\"1\" /></Borders>",
132
+ subject.styles_markup.to_s
133
+ )
134
+ end
135
+
136
+ should "write font markup" do
137
+ subject.write(Xmlss::Style::Font.new({
138
+ :bold => true,
139
+ :color => '#FF0000',
140
+ :italic => true,
141
+ :size => 10,
142
+ :strike_through => true,
143
+ :underline => :single,
144
+ :alignment => :superscript,
145
+ :name => 'Verdana'
146
+ }))
147
+ subject.flush
148
+
149
+ assert_equal(
150
+ "<Font ss:Bold=\"1\" ss:Color=\"#FF0000\" ss:FontName=\"Verdana\" ss:Italic=\"1\" ss:Size=\"10\" ss:StrikeThrough=\"1\" ss:Underline=\"Single\" ss:VerticalAlign=\"Superscript\" />",
151
+ subject.styles_markup.to_s
152
+ )
153
+ end
154
+
155
+ should "write interior markup" do
156
+ subject.write(Xmlss::Style::Interior.new({
157
+ :color => "#000000",
158
+ :pattern => :solid,
159
+ :pattern_color => "#FF0000"
160
+ }))
161
+ subject.flush
162
+
163
+ assert_equal(
164
+ "<Interior ss:Color=\"#000000\" ss:Pattern=\"Solid\" ss:PatternColor=\"#FF0000\" />",
165
+ subject.styles_markup.to_s
166
+ )
167
+ end
168
+
169
+ should "write number format markup" do
170
+ subject.write(Xmlss::Style::NumberFormat.new("General"))
171
+ subject.flush
172
+
173
+ assert_equal(
174
+ "<NumberFormat ss:Format=\"General\" />",
175
+ subject.styles_markup.to_s
176
+ )
177
+ end
178
+
179
+ should "write protection markup" do
180
+ subject.write(Xmlss::Style::Protection.new(true))
181
+ subject.flush
182
+
183
+ assert_equal(
184
+ "<Protection ss:Protect=\"1\" />",
185
+ subject.styles_markup.to_s
186
+ )
187
+ end
188
+
189
+ should "write full style markup" do
190
+ subject.write(Xmlss::Style::Base.new(:write_markup_test))
191
+ subject.push(:styles)
192
+
193
+ subject.write(Xmlss::Style::Alignment.new({
194
+ :horizontal => :left,
195
+ :vertical => :center,
196
+ :wrap_text => true
197
+ }))
198
+
199
+ subject.write(Xmlss::Style::Borders.new)
200
+ subject.push(:styles)
201
+
202
+ subject.write(Xmlss::Style::Border.new({:position => :left}))
203
+ subject.write(Xmlss::Style::Border.new({:position => :right}))
204
+
205
+ subject.pop(:styles)
206
+ subject.write(Xmlss::Style::Font.new({:bold => true}))
207
+ subject.write(Xmlss::Style::Interior.new({:color => "#000000"}))
208
+ subject.write(Xmlss::Style::NumberFormat.new("General"))
209
+ subject.write(Xmlss::Style::Protection.new(true))
210
+
211
+ subject.flush
212
+
213
+ assert_equal(
214
+ "<Style ss:ID=\"write_markup_test\"><Alignment ss:Horizontal=\"Left\" ss:Vertical=\"Center\" ss:WrapText=\"1\" /><Borders><Border ss:LineStyle=\"Continuous\" ss:Position=\"Left\" ss:Weight=\"1\" /><Border ss:LineStyle=\"Continuous\" ss:Position=\"Right\" ss:Weight=\"1\" /></Borders><Font ss:Bold=\"1\" /><Interior ss:Color=\"#000000\" /><NumberFormat ss:Format=\"General\" /><Protection ss:Protect=\"1\" /></Style>",
215
+ subject.styles_markup.to_s
216
+ )
217
+ end
218
+
219
+ end
220
+
221
+
222
+
223
+ class WorksheetWritingTests < BasicTests
224
+ desc "writing worksheet markup"
225
+
226
+ should "write cell data markup" do
227
+ subject.write(Xmlss::Element::Cell.new("some data"))
228
+ subject.flush
229
+
230
+ assert_equal(
231
+ "<Cell><Data ss:Type=\"String\">some data</Data></Cell>",
232
+ subject.worksheets_markup.to_s
233
+ )
234
+ end
235
+
236
+ should "write cell data markup w/ \\n line breaks" do
237
+ subject.write(Xmlss::Element::Cell.new("line\nbreak", :type => :string))
238
+ subject.flush
239
+
240
+ assert_equal "<Cell><Data ss:Type=\"String\">line#{Writer::LB}break</Data></Cell>", subject.worksheets_markup.to_s
241
+ end
242
+
243
+ should "write cell data markup w/ \\r line breaks" do
244
+ subject.write(Xmlss::Element::Cell.new("line\rbreak", :type => :string))
245
+ subject.flush
246
+
247
+ assert_equal "<Cell><Data ss:Type=\"String\">line#{Writer::LB}break</Data></Cell>", subject.worksheets_markup.to_s
248
+ end
249
+
250
+ should "write cell data markup w/ \\r\\n line breaks" do
251
+ subject.write(Xmlss::Element::Cell.new("line\r\nbreak", :type => :string))
252
+ subject.flush
253
+
254
+ assert_equal "<Cell><Data ss:Type=\"String\">line#{Writer::LB}break</Data></Cell>", subject.worksheets_markup.to_s
255
+ end
256
+
257
+ should "write cell data markup w/ \\n\\r line breaks" do
258
+ subject.write(Xmlss::Element::Cell.new("line\n\rbreak", :type => :string))
259
+ subject.flush
260
+
261
+ assert_equal "<Cell><Data ss:Type=\"String\">line#{Writer::LB}break</Data></Cell>", subject.worksheets_markup.to_s
262
+ end
263
+
264
+ should "write cell data markup w/ line breaks and leading space" do
265
+ subject.write(Xmlss::Element::Cell.new(%s{
266
+ Should
267
+ honor
268
+ this}, :type => :string))
269
+ subject.flush
270
+
271
+ assert_equal(
272
+ "<Cell><Data ss:Type=\"String\">#{Writer::LB}Should#{Writer::LB} honor#{Writer::LB} this</Data></Cell>",
273
+ subject.worksheets_markup.to_s
274
+ )
275
+ end
276
+
277
+ should "write cell data markup w/ escaped values" do
278
+ subject.write(Xmlss::Element::Cell.new("some\n&<>'\"/\ndata"))
279
+ subject.flush
280
+
281
+ assert_equal(
282
+ "<Cell><Data ss:Type=\"String\">some&#13;&#10;&amp;&lt;&gt;&#x27;&quot;&#x2F;&#13;&#10;data</Data></Cell>",
283
+ subject.worksheets_markup.to_s
284
+ )
285
+ end
286
+
287
+ should "write worksheet element markup" do
288
+ subject.write(Xmlss::Element::Worksheet.new('awesome'))
289
+ subject.push(:worksheets)
290
+
291
+ subject.write(Xmlss::Element::Column.new({
292
+ :width => 120,
293
+ :style_id => 'narrowcolumn'
294
+ }))
295
+
296
+ subject.write(Xmlss::Element::Row.new({
297
+ :hidden => true,
298
+ :height => 120,
299
+ :style_id => 'awesome'
300
+ }))
301
+ subject.push(:worksheets)
302
+
303
+ subject.write(Xmlss::Element::Cell.new({
304
+ :index => 2,
305
+ :data => "100",
306
+ :type => :number,
307
+ :href => "http://www.google.com"
308
+ }))
309
+
310
+ subject.flush
311
+
312
+ assert_equal(
313
+ "<Worksheet ss:Name=\"awesome\"><Table><Column ss:StyleID=\"narrowcolumn\" ss:Width=\"120\" /><Row ss:Height=\"120\" ss:Hidden=\"1\" ss:StyleID=\"awesome\"><Cell ss:HRef=\"http://www.google.com\" ss:Index=\"2\"><Data ss:Type=\"Number\">100</Data></Cell></Row></Table></Worksheet>",
314
+ subject.worksheets_markup.to_s
315
+ )
316
+ end
317
+
318
+ should "write multiple cells with data in a row" do
319
+ subject.write(Xmlss::Element::Row.new)
320
+ subject.push(:worksheets)
321
+
322
+ 2.times { subject.write(Xmlss::Element::Cell.new("100")) }
323
+ subject.pop(:worksheets)
324
+
325
+ subject.flush
326
+
327
+ assert_equal(
328
+ "<Row><Cell><Data ss:Type=\"String\">100</Data></Cell><Cell><Data ss:Type=\"String\">100</Data></Cell></Row>",
329
+ subject.worksheets_markup.to_s
330
+ )
331
+ end
332
+
333
+ should "write multiple rows with cells in a worksheet" do
334
+ subject.write(Xmlss::Element::Worksheet.new('two rows'))
335
+ subject.push(:worksheets)
336
+
337
+ subject.write(Xmlss::Element::Row.new)
338
+ subject.push(:worksheets)
339
+ subject.write(Xmlss::Element::Cell.new("row1"))
340
+ subject.pop(:worksheets)
341
+
342
+ subject.write(Xmlss::Element::Row.new)
343
+ subject.push(:worksheets)
344
+ subject.write(Xmlss::Element::Cell.new("row2"))
345
+ subject.pop(:worksheets)
346
+
347
+ subject.pop(:worksheets)
348
+ subject.flush
349
+
350
+ assert_equal(
351
+ "<Worksheet ss:Name=\"two rows\"><Table><Row><Cell><Data ss:Type=\"String\">row1</Data></Cell></Row><Row><Cell><Data ss:Type=\"String\">row2</Data></Cell></Row></Table></Worksheet>",
352
+ subject.worksheets_markup.to_s
353
+ )
354
+ end
355
+
356
+ end
357
+
358
+
359
+
360
+ class WorkbookWritingTests < BasicTests
361
+
362
+ def build_workbook(writer)
363
+ writer.write(Xmlss::Style::Base.new(:some_font))
364
+ writer.push(:styles)
365
+ writer.write(Xmlss::Style::Font.new({:bold => true}))
366
+ writer.pop(:styles)
367
+
368
+ writer.write(Xmlss::Style::Base.new(:some_numformat))
369
+ writer.push(:styles)
370
+ writer.write(Xmlss::Style::NumberFormat.new("General"))
371
+ writer.pop(:styles)
372
+
373
+ writer.write(Xmlss::Element::Worksheet.new('test1'))
374
+ writer.push(:worksheets)
375
+ writer.write(Xmlss::Element::Row.new({:hidden => true}))
376
+ writer.push(:worksheets)
377
+ writer.write(Xmlss::Element::Cell.new("some data", {:index => 2}))
378
+ writer.pop(:worksheets)
379
+ writer.pop(:worksheets)
380
+
381
+ writer.write(Xmlss::Element::Worksheet.new('test2'))
382
+ writer.push(:worksheets)
383
+ writer.write(Xmlss::Element::Row.new({:hidden => true}))
384
+ writer.push(:worksheets)
385
+ writer.write(Xmlss::Element::Cell.new("some data", {:index => 2}))
386
+ writer.pop(:worksheets)
387
+ writer.pop(:worksheets)
388
+
389
+ writer.flush
390
+ end
391
+
392
+ should "return workbook markup" do
393
+ build_workbook(subject)
394
+ assert_equal(
395
+ "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Workbook xmlns=\"urn:schemas-microsoft-com:office:spreadsheet\" xmlns:ss=\"urn:schemas-microsoft-com:office:spreadsheet\"><Styles><Style ss:ID=\"some_font\"><Font ss:Bold=\"1\" /></Style><Style ss:ID=\"some_numformat\"><NumberFormat ss:Format=\"General\" /></Style></Styles><Worksheet ss:Name=\"test1\"><Table><Row ss:Hidden=\"1\"><Cell ss:Index=\"2\"><Data ss:Type=\"String\">some data</Data></Cell></Row></Table></Worksheet><Worksheet ss:Name=\"test2\"><Table><Row ss:Hidden=\"1\"><Cell ss:Index=\"2\"><Data ss:Type=\"String\">some data</Data></Cell></Row></Table></Worksheet></Workbook>",
396
+ subject.workbook
397
+ )
398
+ end
399
+
400
+ should "return pretty workbook markup" do
401
+ writer = Writer.new(:pp => 2)
402
+ build_workbook(writer)
403
+ assert_equal(
404
+ "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Workbook xmlns=\"urn:schemas-microsoft-com:office:spreadsheet\" xmlns:ss=\"urn:schemas-microsoft-com:office:spreadsheet\">\n <Styles>\n <Style ss:ID=\"some_font\">\n <Font ss:Bold=\"1\" />\n </Style>\n <Style ss:ID=\"some_numformat\">\n <NumberFormat ss:Format=\"General\" />\n </Style>\n </Styles>\n <Worksheet ss:Name=\"test1\">\n <Table>\n <Row ss:Hidden=\"1\">\n <Cell ss:Index=\"2\">\n <Data ss:Type=\"String\">some data</Data>\n </Cell>\n </Row>\n </Table>\n </Worksheet>\n <Worksheet ss:Name=\"test2\">\n <Table>\n <Row ss:Hidden=\"1\">\n <Cell ss:Index=\"2\">\n <Data ss:Type=\"String\">some data</Data>\n </Cell>\n </Row>\n </Table>\n </Worksheet>\n</Workbook>",
405
+ writer.workbook
406
+ )
407
+ end
408
+
409
+
410
+
411
+ end
412
+
413
+ end
data/xmlss.gemspec CHANGED
@@ -19,6 +19,6 @@ Gem::Specification.new do |s|
19
19
 
20
20
  s.add_development_dependency("bundler", ["~> 1.0"])
21
21
  s.add_development_dependency("assert", ["~> 0.6"])
22
- s.add_dependency("undies", ["~> 2.2"])
22
+ s.add_dependency("undies", ["~> 2.2.1"])
23
23
  s.add_dependency("enumeration", ["~> 1.3"])
24
24
  end