robust_excel_ole 0.3.5 → 0.3.6
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/Changelog +33 -0
- data/README.rdoc +97 -35
- data/README_detail.rdoc +121 -53
- data/examples/edit_sheets/example_naming.rb +1 -0
- data/lib/reo_console.rb +52 -0
- data/lib/robust_excel_ole.rb +41 -7
- data/lib/robust_excel_ole/book.rb +327 -193
- data/lib/robust_excel_ole/bookstore.rb +33 -17
- data/lib/robust_excel_ole/excel.rb +280 -188
- data/lib/robust_excel_ole/sheet.rb +29 -16
- data/lib/robust_excel_ole/version.rb +1 -1
- data/lib/spec_helper.rb +1 -1
- data/reo.bat +1 -1
- data/spec/book_specs/book_all_spec.rb +22 -0
- data/spec/{book_close_spec.rb → book_specs/book_close_spec.rb} +14 -14
- data/spec/{book_misc_spec.rb → book_specs/book_misc_spec.rb} +38 -29
- data/spec/{book_open_spec.rb → book_specs/book_open_spec.rb} +40 -16
- data/spec/{book_save_spec.rb → book_specs/book_save_spec.rb} +173 -12
- data/spec/{book_sheet_spec.rb → book_specs/book_sheet_spec.rb} +8 -4
- data/spec/{book_spec.rb → book_specs/book_spec.rb} +456 -187
- data/spec/{book_subclass_spec.rb → book_specs/book_subclass_spec.rb} +4 -4
- data/spec/{book_unobtr_spec.rb → book_specs/book_unobtr_spec.rb} +64 -4
- data/spec/bookstore_spec.rb +11 -4
- data/spec/cell_spec.rb +7 -5
- data/spec/data/another_workbook.xls +0 -0
- data/spec/data/different_workbook.xls +0 -0
- data/spec/data/more_data/workbook.xls +0 -0
- data/spec/data/workbook.xls +0 -0
- data/spec/excel_spec.rb +367 -87
- data/spec/range_spec.rb +6 -4
- data/spec/robust_excel_ole_spec.rb +113 -0
- data/spec/sheet_spec.rb +42 -6
- metadata +16 -12
@@ -2,7 +2,6 @@
|
|
2
2
|
module RobustExcelOle
|
3
3
|
class Sheet
|
4
4
|
attr_reader :worksheet
|
5
|
-
include Enumerable
|
6
5
|
|
7
6
|
def initialize(win32_worksheet)
|
8
7
|
@worksheet = win32_worksheet
|
@@ -26,9 +25,9 @@ module RobustExcelOle
|
|
26
25
|
@worksheet.Name = new_name
|
27
26
|
rescue WIN32OLERuntimeError => msg
|
28
27
|
if msg.message =~ /800A03EC/
|
29
|
-
raise ExcelErrorSheet, "sheet name already exists"
|
28
|
+
raise ExcelErrorSheet, "sheet name #{new_name.inspect} already exists"
|
30
29
|
else
|
31
|
-
|
30
|
+
t "#{msg.message}"
|
32
31
|
raise ExcelErrorSheetUnknown
|
33
32
|
end
|
34
33
|
end
|
@@ -109,17 +108,17 @@ module RobustExcelOle
|
|
109
108
|
# raise an error, otherwise
|
110
109
|
def nvalue(name, opts = {:default => nil})
|
111
110
|
begin
|
112
|
-
|
111
|
+
value = self.Evaluate(name)
|
112
|
+
value = value.Value if value.class == WIN32OLE
|
113
113
|
rescue WIN32OLERuntimeError
|
114
114
|
return opts[:default] if opts[:default]
|
115
|
-
raise SheetError, "name #{name}
|
115
|
+
raise SheetError, "cannot evaluate name #{name.inspect} in sheet"
|
116
116
|
end
|
117
|
-
|
118
|
-
value = item.RefersToRange.Value
|
119
|
-
rescue WIN32OLERuntimeError
|
117
|
+
if value == -2146826259
|
120
118
|
return opts[:default] if opts[:default]
|
121
|
-
raise SheetError, "
|
119
|
+
raise SheetError, "cannot evaluate name #{name.inspect} in sheet"
|
122
120
|
end
|
121
|
+
return opts[:default] if (value.nil? && opts[:default])
|
123
122
|
value
|
124
123
|
end
|
125
124
|
|
@@ -127,12 +126,12 @@ module RobustExcelOle
|
|
127
126
|
begin
|
128
127
|
item = self.Names.Item(name)
|
129
128
|
rescue WIN32OLERuntimeError
|
130
|
-
raise SheetError, "name #{name} not in sheet"
|
129
|
+
raise SheetError, "name #{name.inspect} not in sheet"
|
131
130
|
end
|
132
131
|
begin
|
133
132
|
item.RefersToRange.Value = value
|
134
133
|
rescue WIN32OLERuntimeError
|
135
|
-
raise SheetError, "RefersToRange of name #{name}"
|
134
|
+
raise SheetError, "RefersToRange of name #{name.inspect}"
|
136
135
|
end
|
137
136
|
end
|
138
137
|
|
@@ -147,16 +146,30 @@ module RobustExcelOle
|
|
147
146
|
self.Names.Add("Name" => name, "RefersToR1C1" => "=" + address)
|
148
147
|
end
|
149
148
|
rescue WIN32OLERuntimeError => msg
|
150
|
-
|
151
|
-
raise SheetError, "cannot add name #{name} to cell with row #{row} and column #{column}"
|
149
|
+
t "WIN32OLERuntimeError: #{msg.message}"
|
150
|
+
raise SheetError, "cannot add name #{name.inspect} to cell with row #{row.inspect} and column #{column.inspect}"
|
152
151
|
end
|
153
152
|
end
|
154
153
|
|
155
|
-
|
156
|
-
|
154
|
+
private
|
155
|
+
|
156
|
+
def method_missing(name, *args)
|
157
|
+
if name.to_s[0,1] =~ /[A-Z]/
|
158
|
+
begin
|
159
|
+
@worksheet.send(name, *args)
|
160
|
+
rescue WIN32OLERuntimeError => msg
|
161
|
+
if msg.message =~ /unknown property or method/
|
162
|
+
raise VBAMethodMissingError, "unknown VBA property or method #{name.inspect}"
|
163
|
+
else
|
164
|
+
raise msg
|
165
|
+
end
|
166
|
+
end
|
167
|
+
else
|
168
|
+
super
|
157
169
|
end
|
170
|
+
end
|
171
|
+
|
158
172
|
|
159
|
-
private
|
160
173
|
def last_row
|
161
174
|
special_last_row = @worksheet.UsedRange.SpecialCells(RobustExcelOle::XlLastCell).Row
|
162
175
|
used_last_row = @worksheet.UsedRange.Rows.Count
|
data/lib/spec_helper.rb
CHANGED
@@ -4,7 +4,7 @@ require 'tmpdir'
|
|
4
4
|
require "fileutils"
|
5
5
|
require File.join(File.dirname(__FILE__), '../lib/robust_excel_ole')
|
6
6
|
|
7
|
-
module RobustExcelOle::SpecHelpers
|
7
|
+
module RobustExcelOle::SpecHelpers # :nodoc: #
|
8
8
|
def create_tmpdir # :nodoc: #
|
9
9
|
tmpdir = Dir.mktmpdir
|
10
10
|
FileUtils.cp_r(File.join(File.dirname(__FILE__), 'data'), tmpdir)
|
data/reo.bat
CHANGED
@@ -0,0 +1,22 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
|
3
|
+
require File.join(File.dirname(__FILE__), './../spec_helper')
|
4
|
+
|
5
|
+
|
6
|
+
$VERBOSE = nil
|
7
|
+
|
8
|
+
include RobustExcelOle
|
9
|
+
|
10
|
+
unless Object.method_defined?(:require_relative)
|
11
|
+
def require_relative path
|
12
|
+
require File.expand_path(path, File.dirname(__FILE__))
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
require_relative "book_open_spec"
|
17
|
+
require_relative "book_close_spec"
|
18
|
+
require_relative "book_save_spec"
|
19
|
+
require_relative "book_misc_spec"
|
20
|
+
require_relative "book_sheet_spec"
|
21
|
+
require_relative "book_unobtr_spec"
|
22
|
+
require_relative "book_subclass_spec"
|
@@ -1,6 +1,6 @@
|
|
1
1
|
# -*- coding: utf-8 -*-
|
2
2
|
|
3
|
-
require File.join(File.dirname(__FILE__), '
|
3
|
+
require File.join(File.dirname(__FILE__), './../spec_helper')
|
4
4
|
|
5
5
|
|
6
6
|
$VERBOSE = nil
|
@@ -80,21 +80,21 @@ describe Book do
|
|
80
80
|
it "should raise error with option :raise" do
|
81
81
|
expect{
|
82
82
|
@book.close(:if_unsaved => :raise)
|
83
|
-
}.to raise_error(ExcelErrorClose,
|
83
|
+
}.to raise_error(ExcelErrorClose, /workbook is unsaved: "workbook.xls"/)
|
84
84
|
end
|
85
85
|
|
86
86
|
it "should raise error by default" do
|
87
87
|
expect{
|
88
88
|
@book.close(:if_unsaved => :raise)
|
89
|
-
}.to raise_error(ExcelErrorClose,
|
89
|
+
}.to raise_error(ExcelErrorClose, /workbook is unsaved: "workbook.xls"/)
|
90
90
|
end
|
91
91
|
|
92
92
|
it "should close the book and leave its file untouched with option :forget" do
|
93
93
|
ole_workbook = @book.workbook
|
94
94
|
excel = @book.excel
|
95
|
-
|
96
|
-
|
97
|
-
|
95
|
+
excel.Workbooks.Count.should == 1
|
96
|
+
@book.close(:if_unsaved => :forget)
|
97
|
+
excel.Workbooks.Count.should == 0
|
98
98
|
@book.workbook.should == nil
|
99
99
|
@book.should_not be_alive
|
100
100
|
expect{
|
@@ -110,16 +110,16 @@ describe Book do
|
|
110
110
|
it "should raise an error for invalid option" do
|
111
111
|
expect {
|
112
112
|
@book.close(:if_unsaved => :invalid_option)
|
113
|
-
}.to raise_error(ExcelErrorClose, ":if_unsaved: invalid option: invalid_option")
|
113
|
+
}.to raise_error(ExcelErrorClose, ":if_unsaved: invalid option: :invalid_option")
|
114
114
|
end
|
115
115
|
|
116
116
|
|
117
117
|
it "should save the book before close with option :save" do
|
118
118
|
ole_workbook = @book.workbook
|
119
119
|
excel = @book.excel
|
120
|
-
|
121
|
-
|
122
|
-
|
120
|
+
excel.Workbooks.Count.should == 1
|
121
|
+
@book.close(:if_unsaved => :save)
|
122
|
+
excel.Workbooks.Count.should == 0
|
123
123
|
@book.workbook.should == nil
|
124
124
|
@book.should_not be_alive
|
125
125
|
expect{
|
@@ -134,7 +134,7 @@ describe Book do
|
|
134
134
|
|
135
135
|
context "with :if_unsaved => :alert" do
|
136
136
|
before do
|
137
|
-
@key_sender = IO.popen 'ruby "' + File.join(File.dirname(__FILE__), '
|
137
|
+
@key_sender = IO.popen 'ruby "' + File.join(File.dirname(__FILE__), '../helpers/key_sender.rb') + '" "Microsoft Excel" ' , "w"
|
138
138
|
end
|
139
139
|
|
140
140
|
after do
|
@@ -157,9 +157,9 @@ describe Book do
|
|
157
157
|
@book.workbook.should_not == nil
|
158
158
|
@book.should be_alive
|
159
159
|
else
|
160
|
-
|
161
|
-
|
162
|
-
|
160
|
+
@book.excel.Workbooks.Count.should == 1
|
161
|
+
@book.close(:if_unsaved => :alert)
|
162
|
+
@book.excel.Workbooks.Count.should == 0
|
163
163
|
@book.workbook.should == nil
|
164
164
|
@book.should_not be_alive
|
165
165
|
expect{ole_workbook.Name}.to raise_error(WIN32OLERuntimeError)
|
@@ -1,6 +1,6 @@
|
|
1
1
|
# -*- coding: utf-8 -*-
|
2
2
|
|
3
|
-
require File.join(File.dirname(__FILE__), '
|
3
|
+
require File.join(File.dirname(__FILE__), './../spec_helper')
|
4
4
|
|
5
5
|
|
6
6
|
$VERBOSE = nil
|
@@ -63,7 +63,19 @@ describe Book do
|
|
63
63
|
it "should send Fullname to workbook" do
|
64
64
|
@book.Fullname.tr('\\','/').should == @simple_file
|
65
65
|
end
|
66
|
+
|
67
|
+
it "should raise an error for unknown methods or properties" do
|
68
|
+
expect{
|
69
|
+
@book.Foo
|
70
|
+
}.to raise_error(VBAMethodMissingError, /unknown VBA property or method :Foo/)
|
71
|
+
end
|
72
|
+
|
73
|
+
it "should report that workbook is not alive" do
|
74
|
+
@book.close
|
75
|
+
expect{ @book.Nonexisting_method }.to raise_error(ExcelError, "method missing: workbook not alive")
|
76
|
+
end
|
66
77
|
end
|
78
|
+
|
67
79
|
end
|
68
80
|
|
69
81
|
describe "hidden_excel" do
|
@@ -117,24 +129,19 @@ describe Book do
|
|
117
129
|
it "should raise an error if name not defined" do
|
118
130
|
expect {
|
119
131
|
@book1.nvalue("foo")
|
120
|
-
}.to raise_error(
|
132
|
+
}.to raise_error(ExcelError, /name "foo" not in "another_workbook.xls"/)
|
121
133
|
expect {
|
122
134
|
@book1["foo"]
|
123
|
-
}.to raise_error(
|
135
|
+
}.to raise_error(ExcelError, /name "foo" not in "another_workbook.xls"/)
|
124
136
|
end
|
125
137
|
|
126
|
-
it "should
|
127
|
-
|
128
|
-
|
129
|
-
}.to raise_error(ExcelErrorNValue, "RefersToRange error of name named_formula in another_workbook.xls")
|
130
|
-
expect {
|
131
|
-
@book1["named_formula"]
|
132
|
-
}.to raise_error(ExcelErrorNValue, "RefersToRange error of name named_formula in another_workbook.xls")
|
138
|
+
it "should evaluate a formula" do
|
139
|
+
@book1.nvalue("named_formula").should == 4
|
140
|
+
@book1["named_formula"].should == 4
|
133
141
|
end
|
134
142
|
|
135
143
|
it "should return default value if name not defined" do
|
136
144
|
@book1.nvalue("foo", :default => 2).should == 2
|
137
|
-
@book1.nvalue("named_formula", :default => 4).should == 4
|
138
145
|
end
|
139
146
|
end
|
140
147
|
|
@@ -157,19 +164,19 @@ describe Book do
|
|
157
164
|
it "should raise an error if name not defined" do
|
158
165
|
expect {
|
159
166
|
@book1.set_nvalue("foo","bar")
|
160
|
-
}.to raise_error(
|
167
|
+
}.to raise_error(ExcelError, /name "foo" not in "another_workbook.xls"/)
|
161
168
|
expect {
|
162
169
|
@book1["foo"] = "bar"
|
163
|
-
}.to raise_error(
|
170
|
+
}.to raise_error(ExcelError, /name "foo" not in "another_workbook.xls"/)
|
164
171
|
end
|
165
172
|
|
166
173
|
it "should raise an error if name was defined but contents is calcuated" do
|
167
174
|
expect {
|
168
175
|
@book1.set_nvalue("named_formula","bar")
|
169
|
-
}.to raise_error(
|
176
|
+
}.to raise_error(ExcelError, /RefersToRange error of name "named_formula" in "another_workbook.xls"/)
|
170
177
|
expect {
|
171
178
|
@book1["named_formula"] = "bar"
|
172
|
-
}.to raise_error(
|
179
|
+
}.to raise_error(ExcelError, /RefersToRange error of name "named_formula" in "another_workbook.xls"/)
|
173
180
|
end
|
174
181
|
|
175
182
|
it "should set value of a range" do
|
@@ -194,7 +201,7 @@ describe Book do
|
|
194
201
|
@book1.nvalue("five").should == [[1,2],[3,4]]
|
195
202
|
expect {
|
196
203
|
@book1.rename_range("four","five")
|
197
|
-
}.to raise_error(ExcelError,
|
204
|
+
}.to raise_error(ExcelError, /name "four" not in "another_workbook.xls"/)
|
198
205
|
end
|
199
206
|
end
|
200
207
|
end
|
@@ -265,12 +272,12 @@ describe Book do
|
|
265
272
|
end
|
266
273
|
|
267
274
|
it "should be false with same book names but different paths" do
|
268
|
-
@new_book = Book.new(@simple_file_other_path, :
|
275
|
+
@new_book = Book.new(@simple_file_other_path, :force_excel => :new)
|
269
276
|
@new_book.should_not == @book
|
270
277
|
end
|
271
278
|
|
272
279
|
it "should be false with same book names but different excel instances" do
|
273
|
-
@new_book = Book.new(@simple_file, :
|
280
|
+
@new_book = Book.new(@simple_file, :force_excel => :new)
|
274
281
|
@new_book.should_not == @book
|
275
282
|
end
|
276
283
|
|
@@ -302,7 +309,7 @@ describe Book do
|
|
302
309
|
end
|
303
310
|
end
|
304
311
|
|
305
|
-
context "with visible
|
312
|
+
context "with visible" do
|
306
313
|
|
307
314
|
before do
|
308
315
|
@book = Book.open(@simple_file)
|
@@ -312,25 +319,27 @@ describe Book do
|
|
312
319
|
@book.close
|
313
320
|
end
|
314
321
|
|
315
|
-
it "should make
|
316
|
-
@book.excel.visible = false
|
317
|
-
@book.excel.visible.should be_false
|
322
|
+
it "should make the workbook visible" do
|
318
323
|
@book.excel.visible = true
|
319
324
|
@book.excel.visible.should be_true
|
325
|
+
@book.visible.should be_true
|
326
|
+
@book.excel.Windows(@book.workbook.Name).Visible.should be_true
|
327
|
+
@book.visible = false
|
328
|
+
@book.excel.visible.should be_true
|
329
|
+
@book.visible.should be_false
|
330
|
+
@book.excel.Windows(@book.workbook.Name).Visible.should be_false
|
331
|
+
@book.visible = true
|
332
|
+
@book.excel.visible.should be_true
|
333
|
+
@book.visible.should be_true
|
334
|
+
@book.excel.Windows(@book.workbook.Name).Visible.should be_true
|
320
335
|
end
|
321
336
|
|
322
|
-
it "should enable DisplayAlerts in Excel" do
|
323
|
-
@book.excel.displayalerts = false
|
324
|
-
@book.excel.displayalerts.should be_false
|
325
|
-
@book.excel.displayalerts = true
|
326
|
-
@book.excel.displayalerts.should be_true
|
327
|
-
end
|
328
337
|
end
|
329
338
|
|
330
339
|
context "with activate" do
|
331
340
|
|
332
341
|
before do
|
333
|
-
@key_sender = IO.popen 'ruby "' + File.join(File.dirname(__FILE__), '
|
342
|
+
@key_sender = IO.popen 'ruby "' + File.join(File.dirname(__FILE__), '../helpers/key_sender.rb') + '" "Microsoft Office Excel" ' , "w"
|
334
343
|
@book = Book.open(@simple_file, :visible => true)
|
335
344
|
@book2 = Book.open(@another_simple_file, :force_excel => :new, :visible => true)
|
336
345
|
end
|
@@ -1,6 +1,6 @@
|
|
1
1
|
# -*- coding: utf-8 -*-
|
2
2
|
|
3
|
-
require File.join(File.dirname(__FILE__), '
|
3
|
+
require File.join(File.dirname(__FILE__), './../spec_helper')
|
4
4
|
|
5
5
|
|
6
6
|
$VERBOSE = nil
|
@@ -13,7 +13,8 @@ describe Book do
|
|
13
13
|
excel = Excel.new(:reuse => true)
|
14
14
|
open_books = excel == nil ? 0 : excel.Workbooks.Count
|
15
15
|
puts "*** open books *** : #{open_books}" if open_books > 0
|
16
|
-
Excel.close_all
|
16
|
+
#Excel.close_all
|
17
|
+
Excel.kill_all
|
17
18
|
end
|
18
19
|
|
19
20
|
before do
|
@@ -29,7 +30,8 @@ describe Book do
|
|
29
30
|
end
|
30
31
|
|
31
32
|
after do
|
32
|
-
Excel.
|
33
|
+
Excel.kill_all
|
34
|
+
#Excel.close_all
|
33
35
|
rm_tmp(@dir)
|
34
36
|
end
|
35
37
|
|
@@ -229,7 +231,7 @@ describe Book do
|
|
229
231
|
@book.close
|
230
232
|
expect{
|
231
233
|
Book.open(@simple_file, :force_excel => :book)
|
232
|
-
}.to raise_error(
|
234
|
+
}.to raise_error(ExcelError, "receiver instance is neither an Excel nor a Book")
|
233
235
|
end
|
234
236
|
|
235
237
|
it "should do force_excel even if both force_ and default_excel is given" do
|
@@ -396,7 +398,7 @@ describe Book do
|
|
396
398
|
it "should raise an error, if :if_unsaved is :raise" do
|
397
399
|
expect {
|
398
400
|
@new_book = Book.open(@simple_file, :if_unsaved => :raise)
|
399
|
-
}.to raise_error(ExcelErrorOpen,
|
401
|
+
}.to raise_error(ExcelErrorOpen, /workbook is already open but not saved: "workbook.xls"/)
|
400
402
|
end
|
401
403
|
|
402
404
|
it "should let the book open, if :if_unsaved is :accept" do
|
@@ -417,7 +419,7 @@ describe Book do
|
|
417
419
|
|
418
420
|
context "with :if_unsaved => :alert" do
|
419
421
|
before do
|
420
|
-
@key_sender = IO.popen 'ruby "' + File.join(File.dirname(__FILE__), '
|
422
|
+
@key_sender = IO.popen 'ruby "' + File.join(File.dirname(__FILE__), '../helpers/key_sender.rb') + '" "Microsoft Office Excel" ' , "w"
|
421
423
|
end
|
422
424
|
|
423
425
|
after do
|
@@ -459,13 +461,13 @@ describe Book do
|
|
459
461
|
it "should raise an error, if :if_unsaved is default" do
|
460
462
|
expect {
|
461
463
|
@new_book = Book.open(@simple_file, :if_unsaved => :raise)
|
462
|
-
}.to raise_error(ExcelErrorOpen,
|
464
|
+
}.to raise_error(ExcelErrorOpen, /workbook is already open but not saved: "workbook.xls"/)
|
463
465
|
end
|
464
466
|
|
465
467
|
it "should raise an error, if :if_unsaved is invalid option" do
|
466
468
|
expect {
|
467
469
|
@new_book = Book.open(@simple_file, :if_unsaved => :invalid_option)
|
468
|
-
}.to raise_error(ExcelErrorOpen, ":if_unsaved: invalid option: invalid_option")
|
470
|
+
}.to raise_error(ExcelErrorOpen, ":if_unsaved: invalid option: :invalid_option")
|
469
471
|
end
|
470
472
|
end
|
471
473
|
|
@@ -494,7 +496,7 @@ describe Book do
|
|
494
496
|
it "should raise an error, if :if_obstructed is :raise" do
|
495
497
|
expect {
|
496
498
|
@new_book = Book.open(@simple_file, :if_obstructed => :raise)
|
497
|
-
}.to raise_error(ExcelErrorOpen,
|
499
|
+
}.to raise_error(ExcelErrorOpen, /blocked by a book with the same name in a different path: "workbook.xls"/)
|
498
500
|
end
|
499
501
|
|
500
502
|
it "should close the other book and open the new book, if :if_obstructed is :forget" do
|
@@ -518,7 +520,7 @@ describe Book do
|
|
518
520
|
if :if_obstructed is :close_if_saved" do
|
519
521
|
expect{
|
520
522
|
@new_book = Book.open(@simple_file, :if_obstructed => :close_if_saved)
|
521
|
-
}.to raise_error(ExcelErrorOpen,
|
523
|
+
}.to raise_error(ExcelErrorOpen, /workbook with the same name in a different path is unsaved: "workbook.xls"/)
|
522
524
|
@book.save
|
523
525
|
@new_book = Book.open(@simple_file, :if_obstructed => :close_if_saved)
|
524
526
|
@book.should_not be_alive
|
@@ -539,14 +541,14 @@ describe Book do
|
|
539
541
|
|
540
542
|
it "should raise an error, if :if_obstructed is default" do
|
541
543
|
expect {
|
542
|
-
@new_book = Book.open(@simple_file)
|
543
|
-
}.to raise_error(ExcelErrorOpen,
|
544
|
+
@new_book = Book.open(@simple_file)
|
545
|
+
}.to raise_error(ExcelErrorOpen, /blocked by a book with the same name in a different path: "workbook.xls"/)
|
544
546
|
end
|
545
547
|
|
546
548
|
it "should raise an error, if :if_obstructed is invalid option" do
|
547
549
|
expect {
|
548
550
|
@new_book = Book.open(@simple_file, :if_obstructed => :invalid_option)
|
549
|
-
}.to raise_error(ExcelErrorOpen, ":if_obstructed: invalid option: invalid_option")
|
551
|
+
}.to raise_error(ExcelErrorOpen, ":if_obstructed: invalid option: :invalid_option")
|
550
552
|
end
|
551
553
|
end
|
552
554
|
end
|
@@ -590,7 +592,7 @@ describe Book do
|
|
590
592
|
File.delete @simple_save_file rescue nil
|
591
593
|
expect {
|
592
594
|
Book.open(@simple_save_file, :if_absent => :raise)
|
593
|
-
}.to raise_error(ExcelErrorOpen, "file #{@simple_save_file} not found")
|
595
|
+
}.to raise_error(ExcelErrorOpen, "file \"#{@simple_save_file}\" not found")
|
594
596
|
end
|
595
597
|
|
596
598
|
it "should create a workbook" do
|
@@ -605,7 +607,7 @@ describe Book do
|
|
605
607
|
File.delete @simple_save_file rescue nil
|
606
608
|
expect {
|
607
609
|
Book.open(@simple_save_file)
|
608
|
-
}.to raise_error(ExcelErrorOpen, "file #{@simple_save_file} not found")
|
610
|
+
}.to raise_error(ExcelErrorOpen, "file \"#{@simple_save_file}\" not found")
|
609
611
|
end
|
610
612
|
|
611
613
|
end
|
@@ -761,7 +763,7 @@ describe Book do
|
|
761
763
|
expected_path = Regexp.new(File.expand_path(path).gsub(/\//, "."))
|
762
764
|
expect {
|
763
765
|
Book.open(path)
|
764
|
-
}.to raise_error(ExcelErrorOpen, "file #{path} not found")
|
766
|
+
}.to raise_error(ExcelErrorOpen, "file \"#{path}\" not found")
|
765
767
|
end
|
766
768
|
end
|
767
769
|
end
|
@@ -790,4 +792,26 @@ describe Book do
|
|
790
792
|
end
|
791
793
|
end
|
792
794
|
end
|
795
|
+
|
796
|
+
describe "uplifting" do
|
797
|
+
|
798
|
+
context "with standard" do
|
799
|
+
|
800
|
+
before do
|
801
|
+
@book = Book.open(@simple_file)
|
802
|
+
end
|
803
|
+
|
804
|
+
after do
|
805
|
+
@book.close
|
806
|
+
end
|
807
|
+
|
808
|
+
it "should uplift a workbook to a book with an open book" do
|
809
|
+
workbook = @book.workbook
|
810
|
+
book1 = Book.new(workbook)
|
811
|
+
book1.should be_a Book
|
812
|
+
book1.should be_alive
|
813
|
+
book1.should == @book
|
814
|
+
end
|
815
|
+
end
|
816
|
+
end
|
793
817
|
end
|