osheet 0.7.0 → 0.8.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.
- data/.gitignore +5 -3
- data/Gemfile +2 -0
- data/Gemfile.lock +13 -37
- data/Rakefile +3 -3
- data/lib/osheet/format/numeric.rb +0 -2
- data/lib/osheet/instance.rb +1 -3
- data/lib/osheet/version.rb +2 -2
- data/osheet.gemspec +3 -9
- data/test/cell_test.rb +96 -104
- data/test/column_test.rb +90 -97
- data/test/format/accounting_test.rb +115 -128
- data/test/format/currency_test.rb +115 -128
- data/test/format/custom_test.rb +13 -13
- data/test/format/datetime_test.rb +13 -13
- data/test/format/fraction_test.rb +63 -63
- data/test/format/general_test.rb +11 -11
- data/test/format/number_test.rb +67 -69
- data/test/format/percentage_test.rb +89 -91
- data/test/format/scientific_test.rb +89 -91
- data/test/format/special_test.rb +35 -35
- data/test/format/text_test.rb +9 -9
- data/test/format_test.rb +24 -24
- data/test/helper.rb +42 -47
- data/test/irb.rb +9 -0
- data/test/mixin_test.rb +55 -59
- data/test/osheet_test.rb +7 -10
- data/test/partial_set_test.rb +41 -61
- data/test/partial_test.rb +44 -46
- data/test/row_test.rb +92 -99
- data/test/style_set_test.rb +34 -37
- data/test/style_test.rb +72 -97
- data/test/template_set_test.rb +52 -73
- data/test/template_test.rb +31 -49
- data/test/workbook_test.rb +186 -199
- data/test/worksheet_test.rb +99 -103
- data/test/xmlss_writer/base_test.rb +72 -73
- data/test/xmlss_writer/elements_test.rb +141 -140
- data/test/xmlss_writer/styles_test.rb +197 -208
- metadata +27 -247
- data/.bundle/config +0 -2
- data/test/app_helper.rb +0 -66
- data/test/env.rb +0 -10
- data/test/rails/three/.gitignore +0 -4
- data/test/rails/three/Gemfile +0 -5
- data/test/rails/three/Gemfile.lock +0 -88
- data/test/rails/three/app/controllers/application_controller.rb +0 -3
- data/test/rails/three/app/controllers/things_controller.rb +0 -10
- data/test/rails/three/app/helpers/application_helper.rb +0 -2
- data/test/rails/three/app/views/layouts/application.html.erb +0 -14
- data/test/rails/three/app/views/things/index.xls.osheet +0 -13
- data/test/rails/three/config/application.rb +0 -42
- data/test/rails/three/config/boot.rb +0 -13
- data/test/rails/three/config/database.yml +0 -22
- data/test/rails/three/config/environment.rb +0 -5
- data/test/rails/three/config/environments/development.rb +0 -26
- data/test/rails/three/config/environments/production.rb +0 -49
- data/test/rails/three/config/environments/test.rb +0 -35
- data/test/rails/three/config/initializers/app.rb +0 -0
- data/test/rails/three/config/initializers/backtrace_silencers.rb +0 -7
- data/test/rails/three/config/initializers/inflections.rb +0 -10
- data/test/rails/three/config/initializers/mime_types.rb +0 -5
- data/test/rails/three/config/initializers/secret_token.rb +0 -7
- data/test/rails/three/config/initializers/session_store.rb +0 -8
- data/test/rails/three/config/locales/en.yml +0 -5
- data/test/rails/three/config/routes.rb +0 -3
- data/test/rails/three/config.ru +0 -4
- data/test/rails/three/db/seeds.rb +0 -7
- data/test/rails/three/doc/README_FOR_APP +0 -2
- data/test/rails/three/lib/tasks/.gitkeep +0 -0
- data/test/rails/three/script/rails +0 -6
- data/test/rails/two/.bundle/config +0 -2
- data/test/rails/two/Booting +0 -0
- data/test/rails/two/Gemfile +0 -5
- data/test/rails/two/Gemfile.lock +0 -45
- data/test/rails/two/Rails +0 -0
- data/test/rails/two/app/controllers/application_controller.rb +0 -20
- data/test/rails/two/app/controllers/things_controller.rb +0 -10
- data/test/rails/two/app/helpers/application_helper.rb +0 -3
- data/test/rails/two/app/views/things/index.xls.osheet +0 -15
- data/test/rails/two/config/boot.rb +0 -128
- data/test/rails/two/config/database.yml +0 -22
- data/test/rails/two/config/environment.rb +0 -41
- data/test/rails/two/config/environments/development.rb +0 -17
- data/test/rails/two/config/environments/production.rb +0 -28
- data/test/rails/two/config/environments/test.rb +0 -28
- data/test/rails/two/config/initializers/app.rb +0 -2
- data/test/rails/two/config/initializers/backtrace_silencers.rb +0 -7
- data/test/rails/two/config/initializers/cookie_verification_secret.rb +0 -7
- data/test/rails/two/config/initializers/inflections.rb +0 -10
- data/test/rails/two/config/initializers/mime_types.rb +0 -5
- data/test/rails/two/config/initializers/new_rails_defaults.rb +0 -21
- data/test/rails/two/config/initializers/session_store.rb +0 -15
- data/test/rails/two/config/locales/en.yml +0 -5
- data/test/rails/two/config/routes.rb +0 -3
- data/test/rails/two/db/development.sqlite3 +0 -0
- data/test/rails/two/db/seeds.rb +0 -7
- data/test/rails/two/script/about +0 -4
- data/test/rails/two/script/console +0 -3
- data/test/rails/two/script/dbconsole +0 -3
- data/test/rails/two/script/destroy +0 -3
- data/test/rails/two/script/generate +0 -3
- data/test/rails/two/script/performance/benchmarker +0 -3
- data/test/rails/two/script/performance/profiler +0 -3
- data/test/rails/two/script/plugin +0 -3
- data/test/rails/two/script/runner +0 -3
- data/test/rails/two/script/server +0 -3
- data/test/rails/two/tmp/pids/server.pid +0 -1
- data/test/rails_test.rb +0 -38
- data/test/sinatra/app.rb +0 -16
- data/test/sinatra/views/index.osheet +0 -13
- data/test/sinatra_test.rb +0 -19
data/test/worksheet_test.rb
CHANGED
|
@@ -1,140 +1,136 @@
|
|
|
1
|
-
require "
|
|
1
|
+
require "assert"
|
|
2
2
|
require 'osheet/worksheet'
|
|
3
3
|
|
|
4
4
|
module Osheet
|
|
5
5
|
|
|
6
|
-
class WorksheetTest <
|
|
7
|
-
|
|
8
|
-
|
|
6
|
+
class WorksheetTest < Assert::Context
|
|
7
|
+
desc "Osheet::Worksheet"
|
|
8
|
+
before { @wksht = Worksheet.new }
|
|
9
|
+
subject { @wksht }
|
|
9
10
|
|
|
10
|
-
|
|
11
|
+
should_be_a_workbook_element(Worksheet)
|
|
11
12
|
|
|
12
|
-
|
|
13
|
-
should_have_instance_method :meta
|
|
13
|
+
should have_instance_methods :name, :attributes, :meta
|
|
14
14
|
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
15
|
+
should "set it's defaults" do
|
|
16
|
+
assert_equal nil, subject.send(:get_ivar, "name")
|
|
17
|
+
assert_equal [], subject.columns
|
|
18
|
+
assert_equal [], subject.rows
|
|
19
19
|
|
|
20
|
-
|
|
21
|
-
|
|
20
|
+
assert_equal nil, subject.meta
|
|
21
|
+
end
|
|
22
22
|
|
|
23
|
-
|
|
24
|
-
|
|
23
|
+
should_hm(Worksheet, :columns, Column)
|
|
24
|
+
should_hm(Worksheet, :rows, Row)
|
|
25
25
|
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
end
|
|
31
|
-
assert_equal "Poo!", subject.attributes[:name]
|
|
26
|
+
should "know it's attribute(s)" do
|
|
27
|
+
subject.send(:name, "Poo!")
|
|
28
|
+
[:name].each do |a|
|
|
29
|
+
assert subject.attributes.has_key?(a)
|
|
32
30
|
end
|
|
33
|
-
|
|
31
|
+
assert_equal "Poo!", subject.attributes[:name]
|
|
34
32
|
end
|
|
33
|
+
|
|
35
34
|
end
|
|
36
35
|
|
|
37
|
-
class WorksheetNameMetaTest <
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
36
|
+
class WorksheetNameMetaTest < WorksheetTest
|
|
37
|
+
desc "A named worksheet with meta"
|
|
38
|
+
before do
|
|
39
|
+
@wksht = Worksheet.new {
|
|
40
|
+
name "Poo!"
|
|
41
|
+
meta({})
|
|
42
|
+
}
|
|
43
|
+
end
|
|
45
44
|
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
45
|
+
should "know it's name and meta" do
|
|
46
|
+
assert_equal "Poo!", subject.send(:get_ivar, "name")
|
|
47
|
+
assert_equal({}, subject.meta)
|
|
48
|
+
end
|
|
50
49
|
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
50
|
+
should "set it's name" do
|
|
51
|
+
subject.name(false)
|
|
52
|
+
assert_equal 'false', subject.name
|
|
53
|
+
subject.name('la')
|
|
54
|
+
assert_equal 'la', subject.name
|
|
55
|
+
subject.name(nil)
|
|
56
|
+
assert_equal 'la', subject.name
|
|
57
|
+
end
|
|
59
58
|
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
end
|
|
59
|
+
should "complain if name is longer than 31 chars" do
|
|
60
|
+
assert_raises ArgumentError do
|
|
61
|
+
subject.name('a'*32)
|
|
62
|
+
end
|
|
63
|
+
assert_nothing_raised do
|
|
64
|
+
subject.name('a'*31)
|
|
67
65
|
end
|
|
68
|
-
|
|
69
66
|
end
|
|
70
|
-
end
|
|
71
67
|
|
|
72
|
-
|
|
73
|
-
context "A worksheet that has columns and rows" do
|
|
74
|
-
subject do
|
|
75
|
-
Worksheet.new {
|
|
76
|
-
column
|
|
77
|
-
row { cell {
|
|
78
|
-
format :number
|
|
79
|
-
data 1
|
|
80
|
-
} }
|
|
81
|
-
}
|
|
82
|
-
end
|
|
68
|
+
end
|
|
83
69
|
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
70
|
+
class WorksheetColumnRowTest < WorksheetTest
|
|
71
|
+
desc "A worksheet that has columns and rows"
|
|
72
|
+
before do
|
|
73
|
+
@wksht = Worksheet.new {
|
|
74
|
+
column
|
|
75
|
+
row { cell {
|
|
76
|
+
format :number
|
|
77
|
+
data 1
|
|
78
|
+
} }
|
|
79
|
+
}
|
|
80
|
+
end
|
|
90
81
|
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
end
|
|
82
|
+
should "set it's columns" do
|
|
83
|
+
columns = subject.columns
|
|
84
|
+
assert_equal 1, columns.size
|
|
85
|
+
assert_kind_of Column, columns.first
|
|
86
|
+
assert_equal subject.columns, columns.first.columns
|
|
87
|
+
end
|
|
98
88
|
|
|
89
|
+
should "set it's rows" do
|
|
90
|
+
rows = subject.rows
|
|
91
|
+
assert_equal 1, rows.size
|
|
92
|
+
assert_kind_of Row, rows.first
|
|
93
|
+
assert_equal subject.columns, rows.first.columns
|
|
94
|
+
assert_equal subject.columns, rows.first.cells.first.columns
|
|
99
95
|
end
|
|
96
|
+
|
|
100
97
|
end
|
|
101
98
|
|
|
102
|
-
class
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
worksheet {
|
|
112
|
-
add :worksheet_stuff
|
|
113
|
-
}
|
|
99
|
+
class WorksheetWorkbookPartialTest < WorksheetTest
|
|
100
|
+
desc "A workbook that defines worksheet partials"
|
|
101
|
+
before do
|
|
102
|
+
@wksht = Workbook.new {
|
|
103
|
+
partial(:worksheet_stuff) {
|
|
104
|
+
row {}
|
|
105
|
+
row {}
|
|
114
106
|
}
|
|
115
|
-
end
|
|
116
107
|
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
108
|
+
worksheet {
|
|
109
|
+
add :worksheet_stuff
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
end
|
|
120
113
|
|
|
114
|
+
should "add it's partials to it's markup" do
|
|
115
|
+
assert_equal 2, subject.worksheets.first.rows.size
|
|
121
116
|
end
|
|
117
|
+
|
|
122
118
|
end
|
|
123
119
|
|
|
124
|
-
class WorksheetBindingTest <
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
assert !@worksheet.send(:instance_variable_get, "@test").nil?
|
|
131
|
-
assert_equal @test, @worksheet.send(:instance_variable_get, "@test")
|
|
132
|
-
assert_equal @test.object_id, @worksheet.send(:instance_variable_get, "@test").object_id
|
|
133
|
-
assert_equal @test, @worksheet.attributes[:name]
|
|
134
|
-
assert_equal @test.object_id, @worksheet.attributes[:name].object_id
|
|
135
|
-
end
|
|
120
|
+
class WorksheetBindingTest < WorksheetTest
|
|
121
|
+
desc "a worksheet defined w/ a block"
|
|
122
|
+
|
|
123
|
+
should "access instance vars from that block's binding" do
|
|
124
|
+
@test = 'test'
|
|
125
|
+
@worksheet = Worksheet.new { name @test }
|
|
136
126
|
|
|
127
|
+
assert !@worksheet.send(:instance_variable_get, "@test").nil?
|
|
128
|
+
assert_equal @test, @worksheet.send(:instance_variable_get, "@test")
|
|
129
|
+
assert_equal @test.object_id, @worksheet.send(:instance_variable_get, "@test").object_id
|
|
130
|
+
assert_equal @test, @worksheet.attributes[:name]
|
|
131
|
+
assert_equal @test.object_id, @worksheet.attributes[:name].object_id
|
|
137
132
|
end
|
|
133
|
+
|
|
138
134
|
end
|
|
139
135
|
|
|
140
136
|
end
|
|
@@ -1,102 +1,101 @@
|
|
|
1
|
-
require "
|
|
1
|
+
require "assert"
|
|
2
2
|
require 'osheet/xmlss_writer'
|
|
3
3
|
|
|
4
4
|
module Osheet
|
|
5
5
|
|
|
6
|
-
class XmlssWriter::BaseTest <
|
|
7
|
-
|
|
8
|
-
|
|
6
|
+
class XmlssWriter::BaseTest < Assert::Context
|
|
7
|
+
desc "XmlssWriter::Base"
|
|
8
|
+
before { @writer = XmlssWriter::Base.new }
|
|
9
|
+
subject { @writer }
|
|
9
10
|
|
|
10
|
-
|
|
11
|
-
|
|
11
|
+
should have_readers :workbook, :styles
|
|
12
|
+
should have_writer :workbook
|
|
12
13
|
|
|
13
|
-
end
|
|
14
14
|
end
|
|
15
15
|
|
|
16
|
-
class XmlssWriter::
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
end
|
|
16
|
+
class XmlssWriter::WorkbookTest < XmlssWriter::BaseTest
|
|
17
|
+
desc "workbook"
|
|
18
|
+
before do
|
|
19
|
+
@workbook = Workbook.new {
|
|
20
|
+
title "xmlss"
|
|
21
|
+
worksheet { name "testsheet1" }
|
|
22
|
+
}
|
|
23
|
+
end
|
|
25
24
|
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
end
|
|
25
|
+
should "only allow writing an Osheet::Workbook" do
|
|
26
|
+
assert_nothing_raised do
|
|
27
|
+
subject.workbook = @workbook
|
|
28
|
+
end
|
|
29
|
+
assert_raises ArgumentError do
|
|
30
|
+
subject.workbook = "poo"
|
|
33
31
|
end
|
|
32
|
+
end
|
|
34
33
|
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
end
|
|
34
|
+
should "not allow writing a workbook that has multiple worksheets with the same name" do
|
|
35
|
+
assert_raises ArgumentError do
|
|
36
|
+
subject.workbook = Workbook.new {
|
|
37
|
+
title "invalid"
|
|
38
|
+
worksheet { name "testsheet1" }
|
|
39
|
+
worksheet { name "testsheet1" }
|
|
40
|
+
}
|
|
43
41
|
end
|
|
42
|
+
end
|
|
44
43
|
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
end
|
|
49
|
-
assert_kind_of ::Xmlss::Workbook, subject.workbook
|
|
50
|
-
assert_equal @workbook.worksheets.size, subject.workbook.worksheets.size
|
|
44
|
+
should "create an Xmlss workbook" do
|
|
45
|
+
assert_nothing_raised do
|
|
46
|
+
subject.workbook = @workbook
|
|
51
47
|
end
|
|
48
|
+
assert_kind_of ::Xmlss::Workbook, subject.workbook
|
|
49
|
+
assert_equal @workbook.worksheets.size, subject.workbook.worksheets.size
|
|
52
50
|
end
|
|
51
|
+
|
|
53
52
|
end
|
|
54
53
|
|
|
55
|
-
class XmlssWriter::
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
}
|
|
54
|
+
class XmlssWriter::ToDataTest < Assert::Context
|
|
55
|
+
desc "XmlssWriter::Base"
|
|
56
|
+
before do
|
|
57
|
+
@writer = XmlssWriter::Base.new({
|
|
58
|
+
:workbook => Workbook.new {
|
|
59
|
+
title "written"
|
|
60
|
+
worksheet {
|
|
61
|
+
name "Poo!"
|
|
62
|
+
column
|
|
63
|
+
row {
|
|
64
|
+
cell {
|
|
65
|
+
data 1
|
|
66
|
+
format :number
|
|
69
67
|
}
|
|
70
68
|
}
|
|
71
69
|
}
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
70
|
+
}
|
|
71
|
+
})
|
|
72
|
+
end
|
|
73
|
+
after do
|
|
74
|
+
# remove any test files this creates
|
|
75
|
+
end
|
|
76
|
+
subject { @writer }
|
|
77
77
|
|
|
78
|
-
|
|
78
|
+
should have_instance_methods :to_data, :to_file
|
|
79
79
|
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
end
|
|
85
|
-
assert_kind_of ::String, xml_data
|
|
86
|
-
assert_match /^<\?xml/, xml_data
|
|
80
|
+
should "return string xml data" do
|
|
81
|
+
xml_data = nil
|
|
82
|
+
assert_nothing_raised do
|
|
83
|
+
xml_data = subject.to_data
|
|
87
84
|
end
|
|
85
|
+
assert_kind_of ::String, xml_data
|
|
86
|
+
assert_match /^<\?xml/, xml_data
|
|
87
|
+
end
|
|
88
88
|
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
end
|
|
94
|
-
assert_kind_of ::String, path
|
|
95
|
-
assert_equal './tmp/base_test.xls', path
|
|
96
|
-
assert File.exists?(path)
|
|
89
|
+
should "write xml data to a file path" do
|
|
90
|
+
path = nil
|
|
91
|
+
assert_nothing_raised do
|
|
92
|
+
path = subject.to_file("./tmp/base_test.xls")
|
|
97
93
|
end
|
|
98
|
-
|
|
94
|
+
assert_kind_of ::String, path
|
|
95
|
+
assert_equal './tmp/base_test.xls', path
|
|
96
|
+
assert File.exists?(path)
|
|
99
97
|
end
|
|
98
|
+
|
|
100
99
|
end
|
|
101
100
|
|
|
102
101
|
end
|