osheet 0.10.0 → 1.0.0.rc.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 +0 -1
- data/Gemfile.lock +9 -6
- data/Rakefile +35 -19
- data/bench/bench_runner.rb +91 -0
- data/bench/profiler_runner.rb +1 -0
- data/examples/basic.rb +1 -1
- data/examples/basic.xls +2 -1
- data/examples/basic_with_templates.rb +2 -2
- data/examples/basic_with_templates.xls +3 -3
- data/examples/formats.rb +2 -2
- data/examples/formats.xls +46 -46
- data/examples/formula.rb +2 -2
- data/examples/styles.rb +2 -2
- data/examples/styles.xls +5 -5
- data/examples/trivial.rb +2 -2
- data/lib/osheet/cell.rb +48 -46
- data/lib/osheet/column.rb +23 -29
- data/lib/osheet/format.rb +3 -3
- data/lib/osheet/meta_element.rb +2 -1
- data/lib/osheet/mixin.rb +21 -9
- data/lib/osheet/partial.rb +5 -9
- data/lib/osheet/row.rb +28 -32
- data/lib/osheet/style.rb +11 -25
- data/lib/osheet/styled_element.rb +9 -1
- data/lib/osheet/template.rb +3 -8
- data/lib/osheet/version.rb +1 -1
- data/lib/osheet/workbook.rb +135 -43
- data/lib/osheet/workbook_api.rb +208 -0
- data/lib/osheet/workbook_element.rb +225 -8
- data/lib/osheet/worksheet.rb +22 -28
- data/lib/osheet/xmlss_writer/style_cache.rb +64 -0
- data/lib/osheet/xmlss_writer/style_settings.rb +148 -0
- data/lib/osheet/xmlss_writer.rb +143 -1
- data/lib/osheet.rb +3 -29
- data/osheet.gemspec +4 -1
- data/test/cell_test.rb +33 -98
- data/test/column_test.rb +20 -88
- data/test/{mixins.rb → fixtures/mixins.rb} +6 -4
- data/test/fixtures/test_writer.rb +68 -0
- data/test/format_test.rb +2 -2
- data/test/helper.rb +34 -68
- data/test/mixin_test.rb +37 -43
- data/test/partial_test.rb +3 -26
- data/test/row_test.rb +32 -85
- data/test/style_test.rb +9 -26
- data/test/template_test.rb +5 -6
- data/test/workbook_element_test.rb +231 -0
- data/test/workbook_test.rb +225 -116
- data/test/worksheet_test.rb +51 -98
- data/test/xmlss_writer/api_test.rb +139 -0
- data/test/xmlss_writer/style_cache_test.rb +65 -0
- data/test/xmlss_writer/style_settings_test.rb +263 -0
- data/test/xmlss_writer/styles_test.rb +121 -153
- data/test/xmlss_writer_test.rb +91 -0
- metadata +75 -50
- data/lib/osheet/associations.rb +0 -58
- data/lib/osheet/instance.rb +0 -30
- data/lib/osheet/markup_element.rb +0 -22
- data/lib/osheet/partial_set.rb +0 -57
- data/lib/osheet/railtie.rb +0 -9
- data/lib/osheet/style_set.rb +0 -39
- data/lib/osheet/template_set.rb +0 -51
- data/lib/osheet/view_handler/rails.rb +0 -44
- data/lib/osheet/view_handler/tilt.rb +0 -42
- data/lib/osheet/view_handler.rb +0 -2
- data/lib/osheet/worksheet_element.rb +0 -17
- data/lib/osheet/xmlss_writer/base.rb +0 -49
- data/lib/osheet/xmlss_writer/elements.rb +0 -56
- data/lib/osheet/xmlss_writer/styles.rb +0 -216
- data/test/osheet_test.rb +0 -13
- data/test/partial_set_test.rb +0 -64
- data/test/style_set_test.rb +0 -47
- data/test/template_set_test.rb +0 -74
- data/test/xmlss_writer/base_test.rb +0 -103
- data/test/xmlss_writer/elements_test.rb +0 -172
@@ -0,0 +1,231 @@
|
|
1
|
+
require "assert"
|
2
|
+
|
3
|
+
require 'osheet/workbook_element'
|
4
|
+
|
5
|
+
module Osheet
|
6
|
+
|
7
|
+
|
8
|
+
class WorkbookElementTests < Assert::Context
|
9
|
+
desc "a WorkbookElement object"
|
10
|
+
before do
|
11
|
+
@wd = WorkbookElement.new
|
12
|
+
end
|
13
|
+
subject { @wd }
|
14
|
+
|
15
|
+
should have_reader :title
|
16
|
+
should have_readers :templates, :partials, :styles, :worksheets
|
17
|
+
should have_instance_methods :template, :partial, :style, :worksheet
|
18
|
+
|
19
|
+
should "set it's defaults" do
|
20
|
+
assert_nil subject.title
|
21
|
+
assert_equal WorkbookElement::TemplateSet.new, subject.templates
|
22
|
+
assert_equal WorkbookElement::PartialSet.new, subject.partials
|
23
|
+
assert_equal WorkbookElement::StyleSet.new, subject.styles
|
24
|
+
assert_equal WorkbookElement::WorksheetSet.new, subject.worksheets
|
25
|
+
end
|
26
|
+
|
27
|
+
end
|
28
|
+
|
29
|
+
|
30
|
+
|
31
|
+
class PartialSetTests < Assert::Context
|
32
|
+
desc "a PartialSet"
|
33
|
+
before { @ps = WorkbookElement::PartialSet.new }
|
34
|
+
subject { @ps }
|
35
|
+
|
36
|
+
should "be a Hash" do
|
37
|
+
assert_kind_of ::Hash, subject
|
38
|
+
end
|
39
|
+
|
40
|
+
should have_instance_method :<<
|
41
|
+
should have_reader :get
|
42
|
+
|
43
|
+
should "verify set objs are partials" do
|
44
|
+
assert_raises ArgumentError do
|
45
|
+
subject.send(:verify, {})
|
46
|
+
end
|
47
|
+
assert_nothing_raised do
|
48
|
+
subject.send(:verify, Partial.new(:poo) {})
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
should "key using name values" do
|
53
|
+
assert_equal 'poo', subject.send(:key, :poo)
|
54
|
+
end
|
55
|
+
|
56
|
+
should "key on partial objs" do
|
57
|
+
assert_equal 'poo', subject.send(:partial_key, Partial.new(:poo) {})
|
58
|
+
end
|
59
|
+
|
60
|
+
should "init the key in the set when verifying" do
|
61
|
+
key = subject.send(:verify, Partial.new(:thing) {})
|
62
|
+
assert_equal 'thing', key
|
63
|
+
assert_equal({'thing' => nil}, subject)
|
64
|
+
end
|
65
|
+
|
66
|
+
should "push partials onto the set" do
|
67
|
+
assert_nothing_raised do
|
68
|
+
subject << Partial.new(:poo) {}
|
69
|
+
subject << Partial.new(:not_poo) {}
|
70
|
+
subject << Partial.new(:awesome) {}
|
71
|
+
subject << Partial.new(:poo) {}
|
72
|
+
end
|
73
|
+
|
74
|
+
assert_equal 3, subject.keys.size
|
75
|
+
assert subject["poo"]
|
76
|
+
assert_kind_of Partial, subject["poo"]
|
77
|
+
end
|
78
|
+
|
79
|
+
should "lookup a partial by name" do
|
80
|
+
p = Partial.new(:poo) {}
|
81
|
+
subject << p
|
82
|
+
assert_equal p, subject.get(:poo)
|
83
|
+
assert_equal p, subject.get('poo')
|
84
|
+
assert_equal nil, subject.get(:ugh)
|
85
|
+
end
|
86
|
+
|
87
|
+
end
|
88
|
+
|
89
|
+
|
90
|
+
|
91
|
+
class TemplateSetTests < Assert::Context
|
92
|
+
desc "a TemplateSet"
|
93
|
+
before { @set = WorkbookElement::TemplateSet.new }
|
94
|
+
subject { @set }
|
95
|
+
|
96
|
+
should "be a PartialSet" do
|
97
|
+
assert_kind_of WorkbookElement::PartialSet, subject
|
98
|
+
end
|
99
|
+
|
100
|
+
should "verify set objs are templates" do
|
101
|
+
assert_raises ArgumentError do
|
102
|
+
subject.send(:verify, {})
|
103
|
+
end
|
104
|
+
assert_nothing_raised do
|
105
|
+
subject.send(:verify, Template.new(:row, :poo) {})
|
106
|
+
end
|
107
|
+
end
|
108
|
+
|
109
|
+
should "key templates using an array of their element and name" do
|
110
|
+
assert_equal ['row','poo'], subject.send(:key, :row, :poo)
|
111
|
+
end
|
112
|
+
|
113
|
+
should "key on templates objs" do
|
114
|
+
assert_equal ['row', 'poo'], subject.send(:template_key, Template.new(:row, :poo) {})
|
115
|
+
end
|
116
|
+
|
117
|
+
should "init the key in the set when verifying" do
|
118
|
+
key = subject.send(:verify, Template.new(:row, :poo) {})
|
119
|
+
assert_equal ['row', 'poo'], key
|
120
|
+
assert_equal({
|
121
|
+
key.first => { key.last => nil }
|
122
|
+
}, subject)
|
123
|
+
end
|
124
|
+
|
125
|
+
should "push templates onto the set" do
|
126
|
+
assert_nothing_raised do
|
127
|
+
subject << Template.new(:row, :poo) {}
|
128
|
+
subject << Template.new(:row, :not_poo) {}
|
129
|
+
subject << Template.new(:column, :awesome) {}
|
130
|
+
subject << Template.new(:column, :not_awesome) {}
|
131
|
+
end
|
132
|
+
|
133
|
+
assert_equal 2, subject.keys.size
|
134
|
+
assert subject["row"]
|
135
|
+
assert_equal 2, subject["row"].keys.size
|
136
|
+
assert subject["row"]["poo"]
|
137
|
+
assert_kind_of Template, subject["row"]["poo"]
|
138
|
+
assert subject["row"]["not_poo"]
|
139
|
+
assert_kind_of Template, subject["row"]["not_poo"]
|
140
|
+
assert subject["column"]
|
141
|
+
assert_equal 2, subject["column"].keys.size
|
142
|
+
assert subject["column"]["awesome"]
|
143
|
+
assert_kind_of Template, subject["column"]["awesome"]
|
144
|
+
assert subject["column"]["not_awesome"]
|
145
|
+
assert_kind_of Template, subject["column"]["not_awesome"]
|
146
|
+
end
|
147
|
+
|
148
|
+
should "lookup a template by element, name" do
|
149
|
+
t = Template.new(:row, :poo) {}
|
150
|
+
subject << t
|
151
|
+
assert_equal t, subject.get(:row, :poo)
|
152
|
+
assert_equal t, subject.get('row', 'poo')
|
153
|
+
|
154
|
+
assert_equal nil, subject.get(:row, :ugh)
|
155
|
+
assert_equal nil, subject.get(:col, :ugh)
|
156
|
+
end
|
157
|
+
|
158
|
+
end
|
159
|
+
|
160
|
+
|
161
|
+
|
162
|
+
class StyleSetTests < Assert::Context
|
163
|
+
desc "a StyleSet"
|
164
|
+
before { @set = WorkbookElement::StyleSet.new }
|
165
|
+
subject { @set }
|
166
|
+
|
167
|
+
should "be an Array" do
|
168
|
+
assert_kind_of ::Array, subject
|
169
|
+
end
|
170
|
+
|
171
|
+
should have_reader :for
|
172
|
+
|
173
|
+
should "verify Style objs" do
|
174
|
+
assert_raises ArgumentError do
|
175
|
+
subject.send(:verify, {})
|
176
|
+
end
|
177
|
+
assert_nothing_raised do
|
178
|
+
subject.send(:verify, Style.new('.awesome') {})
|
179
|
+
end
|
180
|
+
end
|
181
|
+
|
182
|
+
should "be able to lookup styles by class" do
|
183
|
+
subject << (a = Style.new('.awesome') {})
|
184
|
+
subject << (at = Style.new('.awesome.thing') {})
|
185
|
+
subject << (b = Style.new('.boring') {})
|
186
|
+
subject << (bt = Style.new('.boring.thing') {})
|
187
|
+
subject << (a_b = Style.new('.awesome', '.boring') {})
|
188
|
+
subject << (t = Style.new('.thing') {})
|
189
|
+
subject << (s = Style.new('.stupid') {})
|
190
|
+
|
191
|
+
{ 'awesome' => [a, a_b],
|
192
|
+
'boring' => [b, a_b],
|
193
|
+
'thing' => [t],
|
194
|
+
'awesome thing' => [a, at, a_b, t],
|
195
|
+
'thing awesome' => [a, at, a_b, t],
|
196
|
+
'other' => []
|
197
|
+
}.each do |style_class, styles_set|
|
198
|
+
assert_equal styles_set, subject.for(style_class)
|
199
|
+
end
|
200
|
+
end
|
201
|
+
|
202
|
+
should "return itself if calling for w/ no args" do
|
203
|
+
assert_equal subject, subject.for
|
204
|
+
end
|
205
|
+
|
206
|
+
end
|
207
|
+
|
208
|
+
|
209
|
+
|
210
|
+
class WorksheetSetTests < Assert::Context
|
211
|
+
desc "a WorksheetSet"
|
212
|
+
before { @set = WorkbookElement::WorksheetSet.new }
|
213
|
+
subject { @set }
|
214
|
+
|
215
|
+
should "be an Array" do
|
216
|
+
assert_kind_of ::Array, subject
|
217
|
+
end
|
218
|
+
|
219
|
+
should "verify Worksheet objs" do
|
220
|
+
assert_raises ArgumentError do
|
221
|
+
subject.send(:verify, {})
|
222
|
+
end
|
223
|
+
assert_nothing_raised do
|
224
|
+
subject.send(:verify, Worksheet.new {})
|
225
|
+
end
|
226
|
+
end
|
227
|
+
|
228
|
+
end
|
229
|
+
|
230
|
+
|
231
|
+
end
|
data/test/workbook_test.rb
CHANGED
@@ -1,105 +1,143 @@
|
|
1
1
|
require "assert"
|
2
|
+
require 'test/fixtures/mixins'
|
3
|
+
require 'test/fixtures/test_writer'
|
4
|
+
|
2
5
|
require 'osheet/workbook'
|
3
|
-
require 'test/mixins'
|
4
6
|
|
5
7
|
module Osheet
|
6
8
|
|
7
|
-
class
|
8
|
-
desc "
|
9
|
-
before
|
9
|
+
class WorkbookTests < Assert::Context
|
10
|
+
desc "a Workbook"
|
11
|
+
before do
|
12
|
+
@wkbk = Workbook.new
|
13
|
+
@test_writer = TestWriter.new
|
14
|
+
end
|
10
15
|
subject { @wkbk }
|
11
16
|
|
12
|
-
should
|
13
|
-
should have_instance_methods :
|
14
|
-
should have_instance_methods :
|
17
|
+
should have_instance_methods :writer, :element_stack
|
18
|
+
should have_instance_methods :use, :add
|
19
|
+
should have_instance_methods :to_s, :to_data, :to_file
|
20
|
+
|
21
|
+
should have_instance_methods :workbook_element, :workbook
|
22
|
+
should have_instance_methods :templates, :template
|
23
|
+
should have_instance_methods :partials, :partial
|
24
|
+
should have_instance_methods :styles, :style
|
25
|
+
should have_instance_methods :worksheets, :worksheet
|
26
|
+
should have_instance_methods :columns, :column
|
27
|
+
should have_instance_methods :rows, :row
|
28
|
+
should have_instance_methods :cells, :cell
|
15
29
|
|
16
|
-
|
30
|
+
should have_instance_methods :use, :add, :template, :partial
|
31
|
+
|
32
|
+
should have_instance_methods :align, :font, :bg, :border
|
33
|
+
should have_instance_methods :border_left, :border_top
|
34
|
+
should have_instance_methods :border_right, :border_bottom
|
35
|
+
|
36
|
+
should have_instance_methods :style_class, :format
|
37
|
+
should have_instance_methods :title, :meta, :name
|
38
|
+
should have_instance_methods :width, :height
|
39
|
+
should have_instance_methods :autofit, :autofit?, :hidden, :hidden?
|
40
|
+
should have_instance_methods :data, :href, :formula
|
41
|
+
should have_instance_methods :index, :rowspan, :colspan
|
17
42
|
|
18
43
|
should "set it's defaults" do
|
19
|
-
assert_equal nil, subject.
|
20
|
-
|
21
|
-
assert_equal
|
22
|
-
assert_equal
|
23
|
-
|
44
|
+
assert_equal nil, subject.workbook.title
|
45
|
+
|
46
|
+
assert_equal WorkbookElement.new, subject.workbook_element
|
47
|
+
assert_equal subject.workbook_element, subject.workbook
|
48
|
+
|
49
|
+
assert_kind_of Workbook::ElementStack, subject.element_stack
|
50
|
+
assert_equal 1, subject.element_stack.size
|
51
|
+
assert_equal subject.workbook_element, subject.element_stack.current
|
24
52
|
end
|
25
53
|
|
26
|
-
should "
|
27
|
-
|
28
|
-
|
29
|
-
assert subject.attributes.has_key?(a)
|
30
|
-
end
|
31
|
-
assert_equal "The Poo", subject.attributes[:title]
|
54
|
+
should "set its title, casting it to a string" do
|
55
|
+
wb = Workbook.new { title :fun }
|
56
|
+
assert_equal "fun", wb.workbook.title
|
32
57
|
end
|
33
58
|
|
34
59
|
end
|
35
60
|
|
36
|
-
class
|
37
|
-
desc "
|
38
|
-
before { @
|
61
|
+
class ElementStackTests < Assert::Context
|
62
|
+
desc "an ElementStack"
|
63
|
+
before { @s = Workbook::ElementStack.new }
|
64
|
+
subject { @s }
|
39
65
|
|
40
|
-
should "
|
41
|
-
|
66
|
+
should "be an Array" do
|
67
|
+
assert_kind_of ::Array, subject
|
42
68
|
end
|
43
69
|
|
44
|
-
should
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
70
|
+
should have_instance_method :push, :pop, :current, :size, :using
|
71
|
+
|
72
|
+
should "push objects onto the stack" do
|
73
|
+
assert_nothing_raised do
|
74
|
+
subject.push("something")
|
75
|
+
subject.push("something else")
|
76
|
+
end
|
77
|
+
|
78
|
+
assert_equal 2, subject.size
|
51
79
|
end
|
52
80
|
|
53
|
-
|
81
|
+
should "push objects onto the stack for the duration of a block" do
|
82
|
+
subject.push("something")
|
54
83
|
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
name "Poo!"
|
61
|
-
column
|
62
|
-
row {
|
63
|
-
cell {
|
64
|
-
format :number
|
65
|
-
data 1
|
66
|
-
}
|
67
|
-
}
|
68
|
-
}
|
69
|
-
}
|
84
|
+
assert_equal "something", subject.current
|
85
|
+
subject.using("using") do
|
86
|
+
assert_equal "using", subject.current
|
87
|
+
end
|
88
|
+
assert_equal "something", subject.current
|
70
89
|
end
|
71
90
|
|
72
|
-
should "
|
73
|
-
|
74
|
-
|
91
|
+
should "fetch the last item in the array with the current method" do
|
92
|
+
subject.push("something")
|
93
|
+
subject.push("something else")
|
94
|
+
|
95
|
+
assert_equal "something else", subject.current
|
75
96
|
end
|
76
97
|
|
77
|
-
should "
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
98
|
+
should "remove the last item in the array with the pop method" do
|
99
|
+
subject.push("something")
|
100
|
+
subject.push("something else")
|
101
|
+
|
102
|
+
assert_equal 2, subject.size
|
103
|
+
|
104
|
+
item = subject.pop
|
105
|
+
assert_equal "something else", item
|
106
|
+
assert_equal 1, subject.size
|
107
|
+
end
|
108
|
+
|
109
|
+
should "return nil if trying to pop on an empty stack" do
|
110
|
+
assert_equal 0, subject.size
|
111
|
+
|
84
112
|
assert_nothing_raised do
|
85
|
-
|
86
|
-
worksheet { name "awesome" }
|
87
|
-
worksheet { name "awesome1" }
|
88
|
-
}
|
113
|
+
subject.pop
|
89
114
|
end
|
115
|
+
|
116
|
+
assert_nil subject.pop
|
90
117
|
end
|
91
118
|
|
92
119
|
end
|
93
120
|
|
94
|
-
class
|
95
|
-
desc "
|
121
|
+
class WorkbookStyleTests < WorkbookTests
|
122
|
+
desc "that defines styles"
|
96
123
|
before do
|
97
|
-
@wkbk = Workbook.new {
|
124
|
+
@wkbk = Workbook.new(@test_writer) {
|
98
125
|
style('.test')
|
99
126
|
style('.test.awesome')
|
127
|
+
|
128
|
+
worksheet("styles") {
|
129
|
+
column { style_class "test awesome" }
|
130
|
+
}
|
100
131
|
}
|
101
132
|
end
|
102
133
|
|
134
|
+
should "return the style obj created" do
|
135
|
+
style = subject.style(".a.test.style")
|
136
|
+
|
137
|
+
assert_kind_of Style, style
|
138
|
+
assert_equal '.a.test.style', style.selectors.first
|
139
|
+
end
|
140
|
+
|
103
141
|
should "add them to it's styles" do
|
104
142
|
assert_equal 2, subject.styles.size
|
105
143
|
assert_equal 1, subject.styles.first.selectors.size
|
@@ -108,12 +146,104 @@ module Osheet
|
|
108
146
|
assert_equal '.test.awesome', subject.styles.last.selectors.first
|
109
147
|
end
|
110
148
|
|
149
|
+
should "write the style class on the element" do
|
150
|
+
assert_equal "test awesome", subject.worksheets.last.columns.last.style_class
|
151
|
+
end
|
152
|
+
|
111
153
|
end
|
112
154
|
|
113
|
-
class
|
114
|
-
desc "
|
155
|
+
class WorkbookWorksheetTests < WorkbookTests
|
156
|
+
desc "with worksheets"
|
115
157
|
before do
|
116
|
-
@wkbk = Workbook.new {
|
158
|
+
@wkbk = Workbook.new(@test_writer) {
|
159
|
+
worksheet {
|
160
|
+
name "one"
|
161
|
+
}
|
162
|
+
worksheet {
|
163
|
+
name "two"
|
164
|
+
meta :some_meta
|
165
|
+
}
|
166
|
+
}
|
167
|
+
end
|
168
|
+
|
169
|
+
should "return the worksheet obj created" do
|
170
|
+
assert_kind_of Worksheet, subject.worksheet("test")
|
171
|
+
end
|
172
|
+
|
173
|
+
should "add them to it's worksheets reader" do
|
174
|
+
assert_equal 2, subject.worksheets.size
|
175
|
+
assert_equal "one", subject.worksheets.first.name
|
176
|
+
assert_equal "two", subject.worksheets.last.name
|
177
|
+
assert_equal :some_meta, subject.worksheets.last.meta
|
178
|
+
end
|
179
|
+
|
180
|
+
should "return the last worksheet added if called with no args" do
|
181
|
+
assert_equal subject.worksheets.last, subject.worksheet
|
182
|
+
end
|
183
|
+
|
184
|
+
should "call the writer with the created worksheet obj" do
|
185
|
+
assert_equal subject.worksheets.last, subject.writer.worksheets.last
|
186
|
+
end
|
187
|
+
|
188
|
+
end
|
189
|
+
|
190
|
+
class WorkbookRowCellMetaTests < WorkbookTests
|
191
|
+
desc "with columns, meta, rows, and cells"
|
192
|
+
before do
|
193
|
+
@wkbk = Workbook.new(@test_writer) {
|
194
|
+
worksheet {
|
195
|
+
column(100) { meta(:label => 'One') }
|
196
|
+
column { meta(:label => 'Two') }
|
197
|
+
|
198
|
+
row {
|
199
|
+
columns.each do |column|
|
200
|
+
cell(column.meta[:label])
|
201
|
+
end
|
202
|
+
}
|
203
|
+
row(120) {
|
204
|
+
cell {
|
205
|
+
data 12234
|
206
|
+
format :currency
|
207
|
+
}
|
208
|
+
cell(Time.now) {
|
209
|
+
format :datetime, 'mm/dd/yyyy'
|
210
|
+
}
|
211
|
+
|
212
|
+
}
|
213
|
+
}
|
214
|
+
}
|
215
|
+
end
|
216
|
+
|
217
|
+
should "add the columns to it's columns reader" do
|
218
|
+
assert_equal 2, subject.columns.size
|
219
|
+
assert_equal 100, subject.columns.first.width
|
220
|
+
assert_equal nil, subject.columns.last.width
|
221
|
+
|
222
|
+
assert_equal subject.columns.last, subject.writer.columns.last
|
223
|
+
end
|
224
|
+
|
225
|
+
should "just keep the last row in its rows reader" do
|
226
|
+
assert_equal 1, subject.rows.size
|
227
|
+
assert_equal 120, subject.rows.first.height
|
228
|
+
|
229
|
+
assert_equal 2, subject.writer.rows.size
|
230
|
+
assert_equal subject.rows.first, subject.writer.rows.last
|
231
|
+
end
|
232
|
+
|
233
|
+
should "access the cells of its last row" do
|
234
|
+
assert_equal 2, subject.cells.size
|
235
|
+
assert_equal 12234, subject.cells.first.data
|
236
|
+
|
237
|
+
assert_equal 4, subject.writer.cells.size
|
238
|
+
assert_equal subject.cells.last, subject.writer.rows.last.cells.last
|
239
|
+
end
|
240
|
+
|
241
|
+
end
|
242
|
+
|
243
|
+
class WorkbookPartialTests < WorkbookTests
|
244
|
+
desc "that defines partials"
|
245
|
+
before do
|
246
|
+
@wkbk = Workbook.new(@test_writer) {
|
117
247
|
partial(:named_styles) { |name|
|
118
248
|
style(".#{name}")
|
119
249
|
style(".#{name}.awesome")
|
@@ -123,10 +253,10 @@ module Osheet
|
|
123
253
|
end
|
124
254
|
|
125
255
|
should "add them to it's partials" do
|
126
|
-
assert_equal 2, subject.partials.keys.size
|
127
|
-
assert subject.partials.has_key?('named_styles')
|
128
|
-
assert subject.partials.has_key?('stuff')
|
129
|
-
assert_kind_of Partial, subject.partials.get('stuff')
|
256
|
+
assert_equal 2, subject.workbook.partials.keys.size
|
257
|
+
assert subject.workbook.partials.has_key?('named_styles')
|
258
|
+
assert subject.workbook.partials.has_key?('stuff')
|
259
|
+
assert_kind_of Partial, subject.workbook.partials.get('stuff')
|
130
260
|
end
|
131
261
|
|
132
262
|
should "add it's partials to it's markup" do
|
@@ -138,10 +268,10 @@ module Osheet
|
|
138
268
|
|
139
269
|
end
|
140
270
|
|
141
|
-
class
|
142
|
-
desc "
|
271
|
+
class WorkbookTemplateTests < WorkbookTests
|
272
|
+
desc "that defines templates"
|
143
273
|
before do
|
144
|
-
@wkbk = Workbook.new {
|
274
|
+
@wkbk = Workbook.new(@test_writer) {
|
145
275
|
template(:column, :yo) { |color|
|
146
276
|
width 200
|
147
277
|
meta(:color => color)
|
@@ -158,7 +288,7 @@ module Osheet
|
|
158
288
|
|
159
289
|
should "add them to it's templates" do
|
160
290
|
assert subject.templates
|
161
|
-
assert_kind_of TemplateSet, subject.templates
|
291
|
+
assert_kind_of WorkbookElement::TemplateSet, subject.templates
|
162
292
|
assert_equal 3, subject.templates.keys.size
|
163
293
|
assert_kind_of Template, subject.templates.get('column', 'yo')
|
164
294
|
assert_kind_of Template, subject.templates.get('row', 'yo_yo')
|
@@ -169,32 +299,18 @@ module Osheet
|
|
169
299
|
subject.worksheet(:go)
|
170
300
|
assert_equal 1, subject.worksheets.size
|
171
301
|
assert_equal 'blue', subject.worksheets.first.columns.first.meta[:color]
|
172
|
-
assert_equal 500, subject.worksheets.first.rows.first.
|
302
|
+
assert_equal 500, subject.worksheets.first.rows.first.height
|
173
303
|
end
|
174
304
|
|
175
305
|
end
|
176
306
|
|
177
|
-
class
|
178
|
-
desc "
|
179
|
-
should "access instance vars from that block's binding" do
|
180
|
-
@test = 'test'
|
181
|
-
@workbook = Workbook.new { title @test }
|
182
|
-
|
183
|
-
assert !@workbook.send(:instance_variable_get, "@test").nil?
|
184
|
-
assert_equal @test, @workbook.send(:instance_variable_get, "@test")
|
185
|
-
assert_equal @test.object_id, @workbook.send(:instance_variable_get, "@test").object_id
|
186
|
-
assert_equal @test, @workbook.attributes[:title]
|
187
|
-
assert_equal @test.object_id, @workbook.attributes[:title].object_id
|
188
|
-
end
|
189
|
-
|
190
|
-
end
|
191
|
-
|
192
|
-
class WorkbookMixins < WorkbookTest
|
193
|
-
desc "a workbook w/ mixins"
|
307
|
+
class WorkbookMixinTests < WorkbookTests
|
308
|
+
desc "with mixins"
|
194
309
|
before do
|
195
|
-
@wkbk = Workbook.new {
|
310
|
+
@wkbk = Workbook.new(@test_writer) {
|
196
311
|
use StyledMixin
|
197
312
|
use TemplatedMixin
|
313
|
+
use PartialedMixin
|
198
314
|
}
|
199
315
|
end
|
200
316
|
|
@@ -204,39 +320,32 @@ module Osheet
|
|
204
320
|
assert_equal '.test', subject.styles.first.selectors.first
|
205
321
|
assert_equal 1, subject.styles.last.selectors.size
|
206
322
|
assert_equal '.test.awesome', subject.styles.last.selectors.first
|
323
|
+
assert_equal [:left], subject.styles.last.align
|
207
324
|
end
|
208
325
|
|
209
326
|
should "add the mixin templates to it's templates" do
|
210
|
-
assert subject.templates
|
211
|
-
assert_kind_of TemplateSet, subject.templates
|
212
|
-
assert_equal 3, subject.templates.keys.size
|
213
|
-
assert_kind_of Template, subject.templates.get('column', 'yo')
|
214
|
-
assert_kind_of Template, subject.templates.get('row', 'yo_yo')
|
215
|
-
assert_kind_of Template, subject.templates.get('worksheet', 'go')
|
216
|
-
|
217
327
|
subject.worksheet(:go)
|
328
|
+
|
218
329
|
assert_equal 1, subject.worksheets.size
|
219
330
|
assert_equal 'blue', subject.worksheets.first.columns.first.meta[:color]
|
220
|
-
assert_equal 500, subject.worksheets.first.rows.first.
|
331
|
+
assert_equal 500, subject.worksheets.first.rows.first.height
|
221
332
|
end
|
222
333
|
|
223
|
-
|
224
|
-
|
225
|
-
|
226
|
-
|
227
|
-
before do
|
228
|
-
@wkbk = Workbook.new {
|
229
|
-
style('.test')
|
230
|
-
style('.test.awesome')
|
334
|
+
should "add the mixin partials to it's partials" do
|
335
|
+
subject.worksheet {
|
336
|
+
subject.add(:three_empty_rows)
|
337
|
+
subject.add(:two_cells_in_a_row, "one", "two")
|
231
338
|
}
|
232
|
-
end
|
233
339
|
|
234
|
-
|
340
|
+
assert_equal 4, subject.writer.rows.size
|
341
|
+
|
342
|
+
assert_empty subject.writer.rows[0].cells
|
343
|
+
assert_empty subject.writer.rows[1].cells
|
344
|
+
assert_empty subject.writer.rows[2].cells
|
235
345
|
|
236
|
-
|
237
|
-
|
238
|
-
|
239
|
-
assert_kind_of XmlssWriter::Base, writer
|
346
|
+
assert_equal 2, subject.writer.rows.last.cells.size
|
347
|
+
assert_equal "one", subject.writer.rows.last.cells.first.data
|
348
|
+
assert_equal "two", subject.writer.rows.last.cells.last.data
|
240
349
|
end
|
241
350
|
|
242
351
|
end
|