xmlss 0.2.0 → 0.2.1
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.
- data/Gemfile +2 -0
- data/Gemfile.lock +10 -16
- data/Rakefile +3 -3
- data/lib/xmlss/version.rb +1 -1
- data/test/cell_test.rb +68 -65
- data/test/column_test.rb +33 -32
- data/test/data_test.rb +70 -63
- data/test/helper.rb +15 -16
- data/test/irb.rb +10 -0
- data/test/item_set_test.rb +18 -17
- data/test/row_test.rb +52 -49
- data/test/style/alignment_test.rb +54 -61
- data/test/style/base_test.rb +90 -80
- data/test/style/border_test.rb +52 -58
- data/test/style/font_test.rb +47 -54
- data/test/style/interior_test.rb +32 -41
- data/test/style/number_format_test.rb +26 -37
- data/test/style/protection_test.rb +24 -28
- data/test/table_test.rb +48 -45
- data/test/workbook_test.rb +51 -46
- data/test/worksheet_test.rb +51 -50
- data/test/xml_test.rb +61 -60
- data/test/xmlss_test.rb +23 -21
- data/xmlss.gemspec +2 -2
- metadata +23 -27
- data/test/env.rb +0 -10
@@ -1,45 +1,41 @@
|
|
1
|
-
require "
|
1
|
+
require "assert"
|
2
2
|
require 'xmlss/style/protection'
|
3
3
|
|
4
|
-
|
4
|
+
module Xmlss::Style
|
5
5
|
|
6
|
-
|
7
|
-
|
6
|
+
class ProtectionTest < Assert::Context
|
7
|
+
desc "Xmlss::Style::Protection"
|
8
|
+
before { @sp = Xmlss::Style::Protection.new }
|
9
|
+
subject { @sp }
|
8
10
|
|
9
|
-
|
10
|
-
|
11
|
+
should have_instance_methods :protected?
|
12
|
+
should have_accessor :protect
|
11
13
|
|
12
14
|
should "set it's defaults" do
|
13
15
|
assert_equal false, subject.protected?
|
14
16
|
end
|
15
17
|
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
18
|
+
should "set attrs at init time" do
|
19
|
+
sp = Xmlss::Style::Protection.new({
|
20
|
+
:protect => true
|
21
|
+
})
|
22
|
+
assert sp.protected?
|
23
|
+
end
|
22
24
|
|
23
|
-
|
24
|
-
|
25
|
-
|
25
|
+
should "set attrs after init time" do
|
26
|
+
subject.protect = true
|
27
|
+
assert subject.protected?
|
26
28
|
end
|
27
29
|
|
28
|
-
|
29
|
-
before do
|
30
|
-
subject.protect = true
|
31
|
-
end
|
30
|
+
end
|
32
31
|
|
33
|
-
|
34
|
-
|
35
|
-
end
|
36
|
-
end
|
32
|
+
class ProtectionXmlTest < ProtectionTest
|
33
|
+
desc "for generating XML"
|
37
34
|
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
should_build_no_attributes_by_default(Xmlss::Style::Alignment)
|
42
|
-
end
|
35
|
+
should have_reader :xml
|
36
|
+
should_build_node
|
37
|
+
should_build_no_attributes_by_default(Xmlss::Style::Alignment)
|
43
38
|
|
44
39
|
end
|
40
|
+
|
45
41
|
end
|
data/test/table_test.rb
CHANGED
@@ -1,53 +1,56 @@
|
|
1
|
-
require "
|
1
|
+
require "assert"
|
2
2
|
require 'xmlss/table'
|
3
3
|
|
4
4
|
module Xmlss
|
5
|
-
class TableTest <
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
should_have_accessor :columns, :rows
|
11
|
-
|
12
|
-
should "set it's defaults" do
|
13
|
-
assert_equal [], subject.columns
|
14
|
-
assert_equal [], subject.rows
|
15
|
-
end
|
16
|
-
|
17
|
-
should "allow defining a rows/columns at init" do
|
18
|
-
tbl = Table.new({
|
19
|
-
:columns => [Column.new],
|
20
|
-
:rows => [Row.new]
|
21
|
-
})
|
22
|
-
|
23
|
-
assert_equal 1, tbl.columns.size
|
24
|
-
assert_kind_of Column, tbl.columns.first
|
25
|
-
assert_equal 1, tbl.rows.size
|
26
|
-
assert_kind_of Row, tbl.rows.first
|
27
|
-
end
|
28
|
-
|
29
|
-
context "for generating XML" do
|
30
|
-
should_have_reader :xml
|
31
|
-
should_build_node
|
32
|
-
end
|
33
|
-
|
34
|
-
context "when using rows/columns" do
|
35
|
-
before do
|
36
|
-
subject.columns << Column.new
|
37
|
-
r = Row.new
|
38
|
-
r.cells << Cell.new
|
39
|
-
subject.rows << r
|
40
|
-
end
|
41
|
-
|
42
|
-
should "should build a table object" do
|
43
|
-
assert_equal 1, subject.columns.size
|
44
|
-
assert_kind_of Column, subject.columns.first
|
45
|
-
assert_equal 1, subject.rows.size
|
46
|
-
assert_kind_of Row, subject.rows.first
|
47
|
-
end
|
48
|
-
end
|
5
|
+
class TableTest < Assert::Context
|
6
|
+
desc "Xmlss::Table"
|
7
|
+
before { @tbl = Table.new }
|
8
|
+
subject { @tbl }
|
49
9
|
|
10
|
+
should have_accessor :columns, :rows
|
11
|
+
|
12
|
+
should "set it's defaults" do
|
13
|
+
assert_equal [], subject.columns
|
14
|
+
assert_equal [], subject.rows
|
15
|
+
end
|
16
|
+
|
17
|
+
should "allow defining a rows/columns at init" do
|
18
|
+
tbl = Table.new({
|
19
|
+
:columns => [Column.new],
|
20
|
+
:rows => [Row.new]
|
21
|
+
})
|
22
|
+
|
23
|
+
assert_equal 1, tbl.columns.size
|
24
|
+
assert_kind_of Column, tbl.columns.first
|
25
|
+
assert_equal 1, tbl.rows.size
|
26
|
+
assert_kind_of Row, tbl.rows.first
|
27
|
+
end
|
28
|
+
|
29
|
+
end
|
30
|
+
|
31
|
+
class TableXmlTest < TableTest
|
32
|
+
desc "for generating XML"
|
33
|
+
should have_reader :xml
|
34
|
+
should_build_node
|
35
|
+
|
36
|
+
end
|
37
|
+
|
38
|
+
class TableRowsColsTest < TableTest
|
39
|
+
desc "when using rows/columns"
|
40
|
+
before do
|
41
|
+
subject.columns << Column.new
|
42
|
+
r = Row.new
|
43
|
+
r.cells << Cell.new
|
44
|
+
subject.rows << r
|
45
|
+
end
|
46
|
+
|
47
|
+
should "should build a table object" do
|
48
|
+
assert_equal 1, subject.columns.size
|
49
|
+
assert_kind_of Column, subject.columns.first
|
50
|
+
assert_equal 1, subject.rows.size
|
51
|
+
assert_kind_of Row, subject.rows.first
|
50
52
|
end
|
51
53
|
|
52
54
|
end
|
55
|
+
|
53
56
|
end
|
data/test/workbook_test.rb
CHANGED
@@ -1,62 +1,67 @@
|
|
1
|
-
require "
|
1
|
+
require "assert"
|
2
2
|
require 'xmlss/workbook'
|
3
3
|
|
4
4
|
module Xmlss
|
5
|
-
class WorkbookTest <
|
5
|
+
class WorkbookTest < Assert::Context
|
6
|
+
desc "Xmlss::Workbook"
|
7
|
+
before { @wkbk = Workbook.new }
|
8
|
+
subject { @wkbk }
|
6
9
|
|
7
|
-
|
8
|
-
|
10
|
+
should have_accessor :styles, :worksheets
|
11
|
+
should have_instance_method :to_xml
|
9
12
|
|
10
|
-
|
11
|
-
|
13
|
+
should "set it's defaults" do
|
14
|
+
assert_equal [], subject.styles
|
15
|
+
assert_equal [], subject.worksheets
|
16
|
+
end
|
12
17
|
|
13
|
-
|
14
|
-
assert_equal [], subject.styles
|
15
|
-
assert_equal [], subject.worksheets
|
16
|
-
end
|
18
|
+
end
|
17
19
|
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
# writing attrs at run time
|
27
|
-
subject.styles = [
|
28
|
-
Xmlss::Style::Base.new('title') do
|
29
|
-
alignment({:horizontal => :left})
|
30
|
-
font({:size => 14, :bold => true})
|
31
|
-
end,
|
32
|
-
|
33
|
-
Xmlss::Style::Base.new('header') do
|
34
|
-
alignment({:horizontal => :left})
|
35
|
-
font({:bold => true})
|
36
|
-
[:top, :right, :bottom, :left].each do |p|
|
37
|
-
border({:position => :p})
|
38
|
-
end
|
39
|
-
end
|
40
|
-
]
|
41
|
-
end
|
20
|
+
class WorkbookAttrsTest < Assert::Context
|
21
|
+
desc "when initializing with attrs"
|
22
|
+
subject { @wkbk }
|
23
|
+
before do
|
24
|
+
# specifying attrs at init time
|
25
|
+
@wkbk = Workbook.new({
|
26
|
+
:worksheets => [Worksheet.new('sheet1')]
|
27
|
+
})
|
42
28
|
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
29
|
+
# writing attrs at run time
|
30
|
+
@wkbk.styles = [
|
31
|
+
Xmlss::Style::Base.new('title') do
|
32
|
+
alignment({:horizontal => :left})
|
33
|
+
font({:size => 14, :bold => true})
|
34
|
+
end,
|
49
35
|
|
50
|
-
|
51
|
-
|
36
|
+
Xmlss::Style::Base.new('header') do
|
37
|
+
alignment({:horizontal => :left})
|
38
|
+
font({:bold => true})
|
39
|
+
[:top, :right, :bottom, :left].each do |p|
|
40
|
+
border({:position => :p})
|
41
|
+
end
|
52
42
|
end
|
53
|
-
|
43
|
+
]
|
44
|
+
end
|
54
45
|
|
55
|
-
|
56
|
-
|
57
|
-
|
46
|
+
should "build the attrs appropriately" do
|
47
|
+
[:worksheets, :styles].each do |thing|
|
48
|
+
assert_kind_of ItemSet, subject.send(thing)
|
58
49
|
end
|
50
|
+
assert_kind_of Worksheet, subject.worksheets.first
|
51
|
+
assert_equal 1, subject.worksheets.size
|
52
|
+
|
53
|
+
assert_kind_of Style::Base, subject.styles.first
|
54
|
+
assert_equal 2, subject.styles.size
|
59
55
|
end
|
60
56
|
|
61
57
|
end
|
58
|
+
|
59
|
+
class WorkbookXmlTest < WorkbookTest
|
60
|
+
desc "for generating XML"
|
61
|
+
|
62
|
+
should have_reader :xml
|
63
|
+
should_build_node
|
64
|
+
|
65
|
+
end
|
66
|
+
|
62
67
|
end
|
data/test/worksheet_test.rb
CHANGED
@@ -1,68 +1,69 @@
|
|
1
|
-
require "
|
1
|
+
require "assert"
|
2
2
|
require 'xmlss/worksheet'
|
3
3
|
|
4
4
|
module Xmlss
|
5
|
-
class WorksheetTest <
|
5
|
+
class WorksheetTest < Assert::Context
|
6
|
+
desc "Xmlss::Worksheet"
|
7
|
+
before { @wksht = Worksheet.new('sheet') }
|
8
|
+
subject { @wksht }
|
6
9
|
|
7
|
-
|
8
|
-
subject { Worksheet.new('sheet') }
|
10
|
+
should have_accessor :name, :table
|
9
11
|
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
assert_equal [], subject.table.rows
|
17
|
-
end
|
12
|
+
should "set it's defaults" do
|
13
|
+
assert_equal 'sheet', subject.name
|
14
|
+
assert_kind_of Table, subject.table
|
15
|
+
assert_equal [], subject.table.columns
|
16
|
+
assert_equal [], subject.table.rows
|
17
|
+
end
|
18
18
|
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
19
|
+
should "filter name chars" do
|
20
|
+
# worksheet name cannot contain: /, \, :, ;, * or start with '['
|
21
|
+
assert_equal "test test", Worksheet.new("test/ test").name
|
22
|
+
assert_equal "test test", Worksheet.new("tes\\t test").name
|
23
|
+
assert_equal "test test", Worksheet.new("te:st test:").name
|
24
|
+
ws = Worksheet.new("te;st ;test")
|
25
|
+
assert_equal "test test", ws.name
|
26
|
+
ws.name = "t*est test"
|
27
|
+
assert_equal "test test", ws.name
|
28
|
+
ws.name = "[te]st test"
|
29
|
+
assert_equal "te]st test", ws.name
|
30
|
+
ws.name = "t[e]st test"
|
31
|
+
assert_equal "t[e]st test", ws.name
|
32
|
+
end
|
33
33
|
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
})
|
34
|
+
should "allow defining a table at init" do
|
35
|
+
wksht = Worksheet.new('table', {
|
36
|
+
:table => Table.new({
|
37
|
+
:columns => [Column.new]
|
39
38
|
})
|
39
|
+
})
|
40
40
|
|
41
|
-
|
42
|
-
|
43
|
-
|
41
|
+
assert_equal 1, wksht.table.columns.size
|
42
|
+
assert_kind_of Column, wksht.table.columns.first
|
43
|
+
end
|
44
44
|
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
end
|
49
|
-
assert_raises ArgumentError do
|
50
|
-
Worksheet.new("")
|
51
|
-
end
|
45
|
+
should "bark when no name is given" do
|
46
|
+
assert_raises ArgumentError do
|
47
|
+
Worksheet.new(nil)
|
52
48
|
end
|
53
|
-
|
54
|
-
|
55
|
-
assert_raises ArgumentError do
|
56
|
-
subject.table = "not a table"
|
57
|
-
end
|
49
|
+
assert_raises ArgumentError do
|
50
|
+
Worksheet.new("")
|
58
51
|
end
|
52
|
+
end
|
59
53
|
|
60
|
-
|
61
|
-
|
62
|
-
|
54
|
+
should "bark when setting a table to something other" do
|
55
|
+
assert_raises ArgumentError do
|
56
|
+
subject.table = "not a table"
|
63
57
|
end
|
64
|
-
|
65
58
|
end
|
66
59
|
|
67
60
|
end
|
61
|
+
|
62
|
+
class WorksheetXmlTest < WorksheetTest
|
63
|
+
desc "for generating XML"
|
64
|
+
|
65
|
+
should have_reader :xml
|
66
|
+
should_build_node
|
67
|
+
end
|
68
|
+
|
68
69
|
end
|
data/test/xml_test.rb
CHANGED
@@ -1,80 +1,81 @@
|
|
1
|
-
require "
|
1
|
+
require "assert"
|
2
2
|
require 'test/thing'
|
3
3
|
|
4
4
|
module Xmlss
|
5
|
-
class XmlTest <
|
5
|
+
class XmlTest < Assert::Context
|
6
|
+
desc "Xmlss::Xml"
|
7
|
+
before { @thing = Thing.new }
|
8
|
+
subject { @thing }
|
6
9
|
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
assert_equal "ss", Xmlss::SHEET_NS
|
13
|
-
assert_equal "urn:schemas-microsoft-com:office:spreadsheet", Xmlss::NS_URI
|
14
|
-
end
|
10
|
+
should "should provide proper namespace constants" do
|
11
|
+
assert_equal "xmlns", Xmlss::XML_NS
|
12
|
+
assert_equal "ss", Xmlss::SHEET_NS
|
13
|
+
assert_equal "urn:schemas-microsoft-com:office:spreadsheet", Xmlss::NS_URI
|
14
|
+
end
|
15
15
|
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
end
|
16
|
+
should "bark if you use xml generation without configuring" do
|
17
|
+
assert_raises ArgumentError do
|
18
|
+
::Nokogiri::XML::Builder.new do |builder|
|
19
|
+
subject.build_node(builder)
|
21
20
|
end
|
22
21
|
end
|
22
|
+
end
|
23
23
|
|
24
|
-
|
25
|
-
before do
|
26
|
-
subject.xml = {
|
27
|
-
:node => :thing,
|
28
|
-
:attributes => [:one, :two, :three],
|
29
|
-
:children => [:child_nodes]
|
30
|
-
}
|
31
|
-
subject.one = true
|
32
|
-
subject.two = "two"
|
33
|
-
subject.three = ""
|
34
|
-
end
|
24
|
+
end
|
35
25
|
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
26
|
+
class XmlConfigTest < XmlTest
|
27
|
+
desc "with config"
|
28
|
+
before do
|
29
|
+
subject.xml = {
|
30
|
+
:node => :thing,
|
31
|
+
:attributes => [:one, :two, :three],
|
32
|
+
:children => [:child_nodes]
|
33
|
+
}
|
34
|
+
subject.one = true
|
35
|
+
subject.two = "two"
|
36
|
+
subject.three = ""
|
37
|
+
end
|
43
38
|
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
subject.build_node(builder)
|
49
|
-
end.to_xml({:save_with => subject.xml_save_with})
|
50
|
-
)
|
39
|
+
should "build it's node" do
|
40
|
+
assert_nothing_raised do
|
41
|
+
::Nokogiri::XML::Builder.new do |builder|
|
42
|
+
subject.build_node(builder)
|
51
43
|
end
|
44
|
+
end
|
45
|
+
end
|
52
46
|
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
47
|
+
should "build with no whitespace formatting by default" do
|
48
|
+
assert_equal(
|
49
|
+
"<?xml version=\"1.0\"?>\n<Thing ss:One=\"1\" ss:Two=\"two\"><Nodes/></Thing>\n",
|
50
|
+
::Nokogiri::XML::Builder.new do |builder|
|
51
|
+
subject.build_node(builder)
|
52
|
+
end.to_xml({:save_with => subject.xml_save_with})
|
53
|
+
)
|
54
|
+
end
|
61
55
|
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
56
|
+
should "build with whitespace formatting if specified" do
|
57
|
+
assert_equal(
|
58
|
+
"<?xml version=\"1.0\"?>\n<Thing ss:One=\"1\" ss:Two=\"two\">\n <Nodes/>\n</Thing>\n",
|
59
|
+
::Nokogiri::XML::Builder.new do |builder|
|
60
|
+
subject.build_node(builder)
|
61
|
+
end.to_xml({:save_with => subject.xml_save_with(:format)})
|
62
|
+
)
|
63
|
+
end
|
67
64
|
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
assert attrs.has_key?("#{Xmlss::SHEET_NS}:Two")
|
72
|
-
assert_equal 'two', attrs["#{Xmlss::SHEET_NS}:Two"]
|
73
|
-
assert !attrs.has_key?("#{Xmlss::SHEET_NS}:Three")
|
74
|
-
end
|
65
|
+
should "generate build attributes based on it's own attributes" do
|
66
|
+
assert_nothing_raised do
|
67
|
+
subject.send :build_attributes
|
75
68
|
end
|
69
|
+
attrs = subject.send :build_attributes
|
76
70
|
|
71
|
+
assert_kind_of ::Hash, attrs
|
72
|
+
assert attrs.has_key?("#{Xmlss::SHEET_NS}:One")
|
73
|
+
assert_equal 1, attrs["#{Xmlss::SHEET_NS}:One"]
|
74
|
+
assert attrs.has_key?("#{Xmlss::SHEET_NS}:Two")
|
75
|
+
assert_equal 'two', attrs["#{Xmlss::SHEET_NS}:Two"]
|
76
|
+
assert !attrs.has_key?("#{Xmlss::SHEET_NS}:Three")
|
77
77
|
end
|
78
78
|
|
79
79
|
end
|
80
|
+
|
80
81
|
end
|