robust_excel_ole 1.13 → 1.14

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.
@@ -669,7 +669,7 @@ describe Workbook do
669
669
  end
670
670
  end
671
671
 
672
- describe "uplifting" do
672
+ describe "promoting" do
673
673
 
674
674
  context "with standard" do
675
675
 
@@ -681,7 +681,7 @@ describe Workbook do
681
681
  @book.close
682
682
  end
683
683
 
684
- it "should uplift a workbook to a book with an open book" do
684
+ it "should promote a win32ole workbook object to a workbook object with an open workbook" do
685
685
  workbook = @book.ole_workbook
686
686
  book1 = Workbook.new(workbook)
687
687
  book1.should be_a Workbook
@@ -428,9 +428,32 @@ describe Workbook do
428
428
  @book.close
429
429
  end
430
430
 
431
- it "should yield identical Workbook objects for identical Excel books after uplifting" do
431
+ it "should yield identical Workbook objects referring to identical WIN32OLE objects" do
432
+ book2 = Workbook.new(@book.ole_workbook)
433
+ book2.equal?(@book).should be true
434
+ end
435
+
436
+ it "should yield identical Workbook objects referring to identical WIN32OLE objects with open" do
437
+ book2 = Workbook.open(@book.ole_workbook)
438
+ book2.equal?(@book).should be true
439
+ end
440
+
441
+ it "should yield identical Workbook objects created with help of their filenames" do
442
+ book2 = Workbook.open(@simple_file1)
443
+ book2.equal?(@book).should be true
444
+ end
445
+
446
+ it "should yield identical Workbook objects created with help of their WIN32OLE objects" do
447
+ book2 = Workbook.new(@book.ole_workbook)
448
+ book3 = Workbook.open(@book.ole_workbook)
449
+ book3.equal?(book2).should be true
450
+ end
451
+
452
+
453
+ it "should yield identical Workbook objects for identical Excel books after prmoting" do
432
454
  book2 = Workbook.new(@ole_book)
433
455
  book2.should === @book
456
+ book2.equal?(@book).should be true
434
457
  book2.close
435
458
  end
436
459
 
@@ -440,6 +463,7 @@ describe Workbook do
440
463
  ole_book2 = WIN32OLE.connect(abs_filename2)
441
464
  book2 = Workbook.new(ole_book2)
442
465
  book2.should_not === @book
466
+ book2.equal?(@book).should be false
443
467
  book2.close
444
468
  book3.close
445
469
  end
@@ -486,31 +510,34 @@ describe Workbook do
486
510
  book2.excel.should_not == book.excel
487
511
  end
488
512
 
489
- it "should uplift an open known workbook" do
513
+ it "should promote an open known workbook" do
490
514
  book = Workbook.open(@simple_file)
491
515
  ole_workbook = book.ole_workbook
492
516
  new_book = Workbook.new(ole_workbook)
493
517
  new_book.should == book
518
+ new_book.equal?(book).should be true
494
519
  new_book.Fullname.should == book.Fullname
495
520
  new_book.excel.should == book.excel
496
521
  end
497
522
 
498
- it "should uplift an open known workbook and let it be visible" do
523
+ it "should promote an open known workbook and let it be visible" do
499
524
  book = Workbook.open(@simple_file, :visible => true)
500
525
  ole_workbook = book.ole_workbook
501
526
  new_book = Workbook.new(ole_workbook)
502
527
  new_book.should == book
528
+ new_book.equal?(book).should be true
503
529
  new_book.Fullname.should == book.Fullname
504
530
  new_book.excel.should == book.excel
505
531
  new_book.excel.Visible.should == true
506
532
  new_book.Windows(new_book.ole_workbook.Name).Visible.should == true
507
533
  end
508
534
 
509
- it "should uplift an open known workbook and let it be visible and readonly" do
535
+ it "should promote an open known workbook and let it be visible and readonly" do
510
536
  book = Workbook.open(@simple_file, :visible => true, :read_only => true)
511
537
  ole_workbook = book.ole_workbook
512
538
  new_book = Workbook.new(ole_workbook)
513
539
  new_book.should == book
540
+ new_book.equal?(book).should be true
514
541
  new_book.Fullname.should == book.Fullname
515
542
  new_book.excel.should == book.excel
516
543
  new_book.excel.Visible.should == true
@@ -518,18 +545,19 @@ describe Workbook do
518
545
  new_book.ReadOnly.should == true
519
546
  end
520
547
 
521
- it "should uplift an open known workbook and make it visible" do
548
+ it "should promote an open known workbook and make it visible" do
522
549
  book = Workbook.open(@simple_file)
523
550
  ole_workbook = book.ole_workbook
524
551
  new_book = Workbook.new(ole_workbook, :visible => true)
525
552
  new_book.should == book
553
+ new_book.equal?(book).should be true
526
554
  new_book.Fullname.should == book.Fullname
527
555
  new_book.excel.should == book.excel
528
556
  new_book.excel.Visible.should == true
529
557
  new_book.Windows(new_book.ole_workbook.Name).Visible.should == true
530
558
  end
531
559
 
532
- it "should uplift an open unknown workbook" do
560
+ it "should promote an open unknown workbook" do
533
561
  ole_excel = WIN32OLE.new('Excel.Application')
534
562
  ws = ole_excel.Workbooks
535
563
  abs_filename = General.absolute_path(@simple_file1)
@@ -539,7 +567,7 @@ describe Workbook do
539
567
  new_book.excel.Hwnd.should == ole_excel.Hwnd
540
568
  end
541
569
 
542
- it "should uplift an open unknown workbook and make it visible" do
570
+ it "should promote an open unknown workbook and make it visible" do
543
571
  ole_excel = WIN32OLE.new('Excel.Application')
544
572
  ws = ole_excel.Workbooks
545
573
  abs_filename = General.absolute_path(@simple_file1)
@@ -551,7 +579,7 @@ describe Workbook do
551
579
  new_book.Windows(new_book.ole_workbook.Name).Visible.should == true
552
580
  end
553
581
 
554
- it "should uplift an open unknown workbook and make it visible and readonly" do
582
+ it "should promote an open unknown workbook and make it visible and readonly" do
555
583
  ole_excel = WIN32OLE.new('Excel.Application')
556
584
  ws = ole_excel.Workbooks
557
585
  abs_filename = General.absolute_path(@simple_file1)
@@ -80,6 +80,335 @@ describe Workbook do
80
80
 
81
81
  end
82
82
 
83
+ describe "unknown workbooks" do
84
+
85
+ context "with one invisible saved writable workbook" do
86
+
87
+ before do
88
+ @ole_e1 = WIN32OLE.new('Excel.Application')
89
+ ws = @ole_e1.Workbooks
90
+ @abs_filename = General.absolute_path(@simple_file1)
91
+ @ole_wb = ws.Open(abs_filename)
92
+ @old_value = @ole_wb.Worksheets.Item(1).Cells.Item(1,1).Value
93
+ end
94
+
95
+ it "should connect" do
96
+ Workbooks.unobtrusively(@simple_file1) do |book|
97
+ book.excel.Workbook.Count.should == 1
98
+ Excel.excels_number.should == 1
99
+ book.FullName.should == General.absolute_path(@simple_file1)
100
+ book.saved.should be true
101
+ book.visible.should be false
102
+ book.writable.should be true
103
+ end
104
+ ole_wb = WIN32OLE.connect(@abs_filename)
105
+ ole_wb.Saved.should be true
106
+ @ole_e1.Visible.should be false
107
+ ole_wb.ReadOnly.should be false
108
+ end
109
+
110
+ it "should set visible => true and remain invisiblity" do
111
+ Workbooks.unobtrusively(@simple_file1, :visible => true) do |book|
112
+ book.saved.should be true
113
+ book.visible.should be true
114
+ book.writable.should be true
115
+ end
116
+ ole_wb = WIN32OLE.connect(@abs_filename)
117
+ ole_wb.Saved.should be true
118
+ @ole_e1.Visible.should be false
119
+ ole_wb.ReadOnly.should be false
120
+ end
121
+
122
+ it "should set read_only => true and remain writability" do
123
+ Workbooks.unobtrusively(@simple_file1, :read_only => true) do |book|
124
+ book.saved.should be true
125
+ book.visible.should be false
126
+ book.writable.should be false
127
+ end
128
+ ole_wb = WIN32OLE.connect(@abs_filename)
129
+ ole_wb.Saved.should be true
130
+ @ole_e1.Visible.should be false
131
+ ole_wb.ReadOnly.should be false
132
+ end
133
+
134
+ it "should set visible => true, read_only => true" do
135
+ Workbooks.unobtrusively(@simple_file1, :visible => true, :read_only => true) do |book|
136
+ book.saved.should be true
137
+ book.visible.should be true
138
+ book.writable.should be false
139
+ end
140
+ ole_wb = WIN32OLE.connect(@abs_filename)
141
+ ole_wb.Saved.should be true
142
+ @ole_e1.Visible.should be false
143
+ ole_wb.ReadOnly.should be false
144
+ end
145
+
146
+ it "should modify and remain saved-status" do
147
+ Workbooks.unobtrusively(@simple_file1) do |book|
148
+ book.saved.should be true
149
+ book.visible.should be false
150
+ book.writable.should be true
151
+ book.sheet(1)[1,1] = book.sheet(1)[1,1].Value == "foo" ? "bar" : "foo"
152
+ @new_value = book.sheet(1)[1,1].value
153
+ book.Saved.should be false
154
+ end
155
+ ole_wb = WIN32OLE.connect(@abs_filename)
156
+ ole_wb.Saved.should be true
157
+ @ole_e1.Visible.should be false
158
+ ole_wb.ReadOnly.should be false
159
+ ole_wb.Close
160
+ book2 = Workbook.open(@simple_file1)
161
+ book2.sheet(1)[1,1].value.should_not == @old_value
162
+ book2.sheet(1)[1,1].value.should == @new_value
163
+ end
164
+
165
+ it "should modify and remain saved-status and not save the new value when writable => false" do
166
+ Workbooks.unobtrusively(@simple_file1, :writable => false) do |book|
167
+ book.saved.should be true
168
+ book.visible.should be false
169
+ book.writable.should be true
170
+ book.sheet(1)[1,1] = book.sheet(1)[1,1].Value == "foo" ? "bar" : "foo"
171
+ @new_value = book.sheet(1)[1,1].value
172
+ book.Saved.should be false
173
+ end
174
+ ole_wb = WIN32OLE.connect(@abs_filename)
175
+ ole_wb.Saved.should be true
176
+ @ole_e1.Visible.should be false
177
+ ole_wb.ReadOnly.should be false
178
+ ole_wb.Close
179
+ book2 = Workbook.open(@simple_file1)
180
+ book2.sheet(1)[1,1].value.should == @old_value
181
+ book2.sheet(1)[1,1].value.should_not == @new_value
182
+ end
183
+
184
+ end
185
+
186
+ context "with one visible saved writable workbook" do
187
+
188
+ before do
189
+ @ole_e1 = WIN32OLE.new('Excel.Application')
190
+ ws = @ole_e1.Workbooks
191
+ @abs_filename = General.absolute_path(@simple_file1)
192
+ @ole_wb = ws.Open(abs_filename)
193
+ @ole_e1.Visible = true
194
+ @ole_wb.Windows(@ole_wb.Name).Visible = true
195
+ end
196
+
197
+ it "should remain visibility" do
198
+ Workbooks.unobtrusively(@simple_file1) do |book|
199
+ book.saved.should be true
200
+ book.visible.should be true
201
+ book.writable.should be true
202
+ end
203
+ ole_wb = WIN32OLE.connect(@abs_filename)
204
+ ole_wb.Saved.should be true
205
+ @ole_e1.Visible.should be true
206
+ ole_wb.ReadOnly.should be false
207
+ end
208
+
209
+ it "should set visible => false and remain visibility" do
210
+ Workbooks.unobtrusively(@simple_file1, :visible => false) do |book|
211
+ book.saved.should be true
212
+ book.visible.should be false
213
+ book.writable.should be true
214
+ end
215
+ ole_wb = WIN32OLE.connect(@abs_filename)
216
+ ole_wb.Saved.should be true
217
+ @ole_e1.Visible.should be true
218
+ ole_wb.ReadOnly.should be false
219
+ end
220
+
221
+ end
222
+
223
+ context "with one unsaved writable workbook" do
224
+
225
+ before do
226
+ @ole_e1 = WIN32OLE.new('Excel.Application')
227
+ ws = @ole_e1.Workbooks
228
+ @abs_filename = General.absolute_path(@simple_file1)
229
+ @ole_wb = ws.Open(abs_filename)
230
+ @ole_e1.Visible = true
231
+ @ole_wb.Windows(@ole_wb.Name).Visible = true
232
+ @old_value = @ole_wb.Worksheets.Item(1).Cells.Item(1,1).Value
233
+ @ole_wb.Worksheets.Item(name).Cells.Item(1,1).Value = @old_value == "foo" ? "bar" : "foo"
234
+ @new_value = @ole_wb.Worksheets.Item(1).Cells.Item(1,1).Value
235
+ @ole_wb.Saved.should be false
236
+ end
237
+
238
+ it "should connect and remain unsaved" do
239
+ Workbooks.unobtrusively(@simple_file1) do |book|
240
+ book.saved.should be false
241
+ book.visible.should be true
242
+ book.writable.should be true
243
+ end
244
+ ole_wb = WIN32OLE.connect(@abs_filename)
245
+ ole_wb.Saved.should be false
246
+ @ole_e1.Visible.should be true
247
+ ole_wb.ReadOnly.should be false
248
+ end
249
+
250
+ it "should remain writable" do
251
+ Workbooks.unobtrusively(@simple_file1, :read_only => true) do |book|
252
+ book.saved.should be false
253
+ book.visible.should be true
254
+ book.writable.should be false
255
+ end
256
+ ole_wb = WIN32OLE.connect(@abs_filename)
257
+ ole_wb.Saved.should be false
258
+ @ole_e1.Visible.should be true
259
+ ole_wb.ReadOnly.should be false
260
+ end
261
+
262
+ it "should remain unsaved when modifying" do
263
+ Workbooks.unobtrusively(@simple_file1) do |book|
264
+ book.sheet(1)[1,1] = book.sheet(1)[1,1].Value == "foo" ? "bar" : "foo"
265
+ @new_value = book.sheet(1)[1,1].Value
266
+ book.saved.should be false
267
+ book.visible.should be true
268
+ book.writable.should be true
269
+ end
270
+ ole_wb = WIN32OLE.connect(@abs_filename)
271
+ ole_wb.Saved.should be false
272
+ @ole_e1.Visible.should be true
273
+ ole_wb.ReadOnly.should be false
274
+ ole_wb.Close
275
+ book2 = Workbook.open(@simple_file1)
276
+ book2.sheet(1)[1,1].value.should_not == @old_value
277
+ book2.sheet(1)[1,1].value.should == @new_value
278
+ end
279
+
280
+ it "should not write with :writable => false" do
281
+ Workbooks.unobtrusively(@simple_file1, :writable => false) do |book|
282
+ book.sheet(1)[1,1] = book.sheet(1)[1,1].Value == "foo" ? "bar" : "foo"
283
+ @new_value = book.sheet(1)[1,1].Value
284
+ book.saved.should be false
285
+ book.visible.should be true
286
+ book.writable.should be true
287
+ end
288
+ ole_wb = WIN32OLE.connect(@abs_filename)
289
+ ole_wb.Saved.should be false
290
+ @ole_e1.Visible.should be true
291
+ ole_wb.ReadOnly.should be false
292
+ ole_wb.Close
293
+ book2 = Workbook.open(@simple_file1)
294
+ book2.sheet(1)[1,1].value.should == @old_value
295
+ book2.sheet(1)[1,1].value.should_not == @new_value
296
+ end
297
+
298
+ end
299
+
300
+ context "with one read-only workbook" do
301
+
302
+ before do
303
+ @ole_e1 = WIN32OLE.new('Excel.Application')
304
+ ws = @ole_e1.Workbooks
305
+ @abs_filename = General.absolute_path(@simple_file1)
306
+ @ole_wb = ws.Open(abs_filename, RobustExcelOle::XlUpdateLinksNever, true)
307
+ @ole_e1.Visible = true
308
+ @ole_wb.Windows(@ole_wb.Name).Visible = true
309
+ @ole_wb.ReadOnly.should be true
310
+ end
311
+
312
+ it "should connect and remain read-only" do
313
+ Workbooks.unobtrusively(@simple_file1) do |book|
314
+ book.saved.should be true
315
+ book.visible.should be true
316
+ book.writable.should be false
317
+ end
318
+ ole_wb = WIN32OLE.connect(@abs_filename)
319
+ ole_wb.Saved.should be true
320
+ @ole_e1.Visible.should be true
321
+ ole_wb.ReadOnly.should be true
322
+ end
323
+
324
+ it "should remain read-only" do
325
+ Workbooks.unobtrusively(@simple_file1, :read_only => false) do |book|
326
+ book.saved.should be false
327
+ book.visible.should be true
328
+ book.writable.should be true
329
+ end
330
+ ole_wb = WIN32OLE.connect(@abs_filename)
331
+ ole_wb.Saved.should be true
332
+ @ole_e1.Visible.should be true
333
+ ole_wb.ReadOnly.should be true
334
+ end
335
+
336
+ it "should remain read-only when modifying" do
337
+ Workbooks.unobtrusively(@simple_file1) do |book|
338
+ book.sheet(1)[1,1] = book.sheet(1)[1,1].Value == "foo" ? "bar" : "foo"
339
+ @new_value = book.sheet(1)[1,1].Value
340
+ book.saved.should be false
341
+ book.visible.should be true
342
+ book.writable.should be true
343
+ end
344
+ ole_wb = WIN32OLE.connect(@abs_filename)
345
+ ole_wb.Saved.should be true
346
+ @ole_e1.Visible.should be true
347
+ ole_wb.ReadOnly.should be true
348
+ ole_wb.Close
349
+ book2 = Workbook.open(@simple_file1)
350
+ book2.sheet(1)[1,1].value.should_not == @old_value
351
+ book2.sheet(1)[1,1].value.should == @new_value
352
+ end
353
+
354
+ it "should remain read-only when modifying" do
355
+ Workbooks.unobtrusively(@simple_file1, :read_only => false, :writable => true) do |book|
356
+ book.sheet(1)[1,1] = book.sheet(1)[1,1].Value == "foo" ? "bar" : "foo"
357
+ @new_value = book.sheet(1)[1,1].Value
358
+ book.saved.should be false
359
+ book.visible.should be true
360
+ book.writable.should be true
361
+ end
362
+ ole_wb = WIN32OLE.connect(@abs_filename)
363
+ ole_wb.Saved.should be true
364
+ @ole_e1.Visible.should be true
365
+ ole_wb.ReadOnly.should be true
366
+ ole_wb.Close
367
+ book2 = Workbook.open(@simple_file1)
368
+ book2.sheet(1)[1,1].value.should_not == @old_value
369
+ book2.sheet(1)[1,1].value.should == @new_value
370
+ end
371
+
372
+ it "should remain read-only when modifying and not save changes, when :writable => false" do
373
+ Workbooks.unobtrusively(@simple_file1, :writable => false) do |book|
374
+ book.sheet(1)[1,1] = book.sheet(1)[1,1].Value == "foo" ? "bar" : "foo"
375
+ @new_value = book.sheet(1)[1,1].Value
376
+ book.saved.should be false
377
+ book.visible.should be true
378
+ book.writable.should be true
379
+ end
380
+ ole_wb = WIN32OLE.connect(@abs_filename)
381
+ ole_wb.Saved.should be true
382
+ @ole_e1.Visible.should be true
383
+ ole_wb.ReadOnly.should be true
384
+ ole_wb.Close
385
+ book2 = Workbook.open(@simple_file1)
386
+ book2.sheet(1)[1,1].value.should == @old_value
387
+ book2.sheet(1)[1,1].value.should_not == @new_value
388
+ end
389
+
390
+ it "should remain read-only when modifying and not save changes, when :writable => false" do
391
+ Workbooks.unobtrusively(@simple_file1, :read_only => false, :writable => false) do |book|
392
+ book.sheet(1)[1,1] = book.sheet(1)[1,1].Value == "foo" ? "bar" : "foo"
393
+ @new_value = book.sheet(1)[1,1].Value
394
+ book.saved.should be false
395
+ book.visible.should be true
396
+ book.writable.should be true
397
+ end
398
+ ole_wb = WIN32OLE.connect(@abs_filename)
399
+ ole_wb.Saved.should be true
400
+ @ole_e1.Visible.should be true
401
+ ole_wb.ReadOnly.should be true
402
+ ole_wb.Close
403
+ book2 = Workbook.open(@simple_file1)
404
+ book2.sheet(1)[1,1].value.should == @old_value
405
+ book2.sheet(1)[1,1].value.should_not == @new_value
406
+ end
407
+
408
+ end
409
+
410
+ end
411
+
83
412
  describe "excels number" do
84
413
 
85
414
  it "should open one excel instance and workbook should be closed" do
@@ -188,7 +517,7 @@ describe Workbook do
188
517
 
189
518
  it "should open not writable" do
190
519
  Workbook.unobtrusively(@simple_file, :writable => false) do |book|
191
- book.ReadOnly.should be true
520
+ #
192
521
  @old_value = book.sheet(1)[1,1].Value
193
522
  book.sheet(1)[1,1] = book.sheet(1)[1,1].Value == "foo" ? "bar" : "foo"
194
523
  book.Saved.should be false
@@ -330,6 +659,7 @@ describe Workbook do
330
659
  book.sheet(1)[1,1] = book.sheet(1)[1,1].Value == "foo" ? "bar" : "foo"
331
660
  book.sheet(1)[1,1].Value.should_not == @old_value
332
661
  end
662
+ @book.ReadOnly.should be true
333
663
  @book.close
334
664
  Workbook.unobtrusively(@simple_file1, :writable => false) do |book|
335
665
  book.sheet(1)[1,1].Value.should == @old_value
@@ -347,6 +677,7 @@ describe Workbook do
347
677
  book.excel.should == @book.excel
348
678
  book.sheet(1)[1,1] = book.sheet(1)[1,1].Value == "foo" ? "bar" : "foo"
349
679
  end
680
+ @book.ReadOnly.should be true
350
681
  @book.close
351
682
  book2 = Workbook.open(@simple_file1)
352
683
  book2.sheet(1)[1,1].Value.should == @old_value
@@ -367,7 +698,7 @@ describe Workbook do
367
698
 
368
699
  it "should open as read-write" do
369
700
  Workbook.unobtrusively(@simple_file1, :read_only => false, :writable => false) do |book|
370
- book.Readonly.should be true
701
+ book.Readonly.should be false
371
702
  book.should == @book
372
703
  book.filename.should == @book.filename
373
704
  book.excel.should == @book.excel
@@ -404,6 +735,7 @@ describe Workbook do
404
735
  book2.sheet(1)[1,1].Value.should_not == @old_value
405
736
  end
406
737
 
738
+ =begin
407
739
  it "should force to read-write" do
408
740
  e1 = Excel.create
409
741
  Workbook.unobtrusively(@simple_file1, :writable => true, :rw_change_excel => e1) do |book|
@@ -441,6 +773,7 @@ describe Workbook do
441
773
  book2 = Workbook.open(@simple_file1)
442
774
  book2.sheet(1)[1,1].Value.should_not == @old_value
443
775
  end
776
+ =end
444
777
 
445
778
  it "should force to read-write" do
446
779
  Workbook.unobtrusively(@simple_file1, :writable => true, :read_only => false) do |book|
@@ -563,16 +896,22 @@ describe Workbook do
563
896
  @book.sheet(1)[1,1].Value.should_not == @old_value
564
897
  end
565
898
 
566
- it "should force to read-only (not implemented)" do
567
- expect{
568
- Workbook.unobtrusively(@simple_file1, :read_only => true)
569
- }.to raise_error(NotImplementedREOError)
899
+ it "should force to read-only" do
900
+ Workbook.unobtrusively(@simple_file1, :read_only => true) do |book|
901
+ book.ReadOnly.should be true
902
+ end
903
+ @book.Saved.should be false
904
+ @book.ReadOnly.should be false
905
+ @book.sheet(1)[1,1].Value.should == @old_value
570
906
  end
571
907
 
572
- it "should force to read-only (not implemented)" do
573
- expect{
574
- Workbook.unobtrusively(@simple_file1, :read_only => true, :writable => false)
575
- }.to raise_error(NotImplementedREOError)
908
+ it "should force to read-only with writable false" do
909
+ Workbook.unobtrusively(@simple_file1, :read_only => true, :writable => false) do |book|
910
+ book.ReadOnly.should be true
911
+ end
912
+ @book.Saved.should be false
913
+ @book.ReadOnly.should be false
914
+ @book.sheet(1)[1,1].Value.should == @old_value
576
915
  end
577
916
 
578
917
  it "should open not writable" do
@@ -617,7 +956,7 @@ describe Workbook do
617
956
 
618
957
  it "should open as read-only" do
619
958
  Workbook.unobtrusively(@simple_file1, :read_only => false) do |book|
620
- book.Readonly.should be true
959
+ book.Readonly.should be false
621
960
  book.should == @book
622
961
  book.filename.should == @book.filename
623
962
  book.excel.should == @book.excel
@@ -633,7 +972,7 @@ describe Workbook do
633
972
 
634
973
  it "should open as read-only" do
635
974
  Workbook.unobtrusively(@simple_file1, :read_only => false, :writable => false) do |book|
636
- book.Readonly.should be true
975
+ book.Readonly.should be false
637
976
  book.should == @book
638
977
  book.filename.should == @book.filename
639
978
  book.excel.should == @book.excel
@@ -760,7 +1099,6 @@ describe Workbook do
760
1099
  end
761
1100
 
762
1101
  it "should write in the outer and not in the inner block" do
763
- expect{
764
1102
  Workbook.unobtrusively(@simple_file1) do |book|
765
1103
  @old_value = book.sheet(1)[1,1].Value
766
1104
  book.ReadOnly.should be false
@@ -770,7 +1108,7 @@ describe Workbook do
770
1108
  Workbook.unobtrusively(@simple_file1, :read_only => true) do |book2|
771
1109
  book2.should == book
772
1110
  book2.ReadOnly.should be true
773
- #book2.Saved.should be false
1111
+ book2.Saved.should be false
774
1112
  book2.sheet(1)[1,1].Value.should_not == @old_value
775
1113
  book2.sheet(1)[1,1] = book2.sheet(1)[1,1].Value == "foo" ? "bar" : "foo"
776
1114
  book2.sheet(1)[1,1].Value.should == @old_value
@@ -781,7 +1119,6 @@ describe Workbook do
781
1119
  end
782
1120
  book = Workbook.open(@simple_file1)
783
1121
  book.sheet(1)[1,1].Value.should_not == @old_value
784
- }.to raise_error(NotImplementedREOError)
785
1122
  end
786
1123
 
787
1124
  it "should write in the outer and not in the inner block" do
@@ -890,7 +1227,7 @@ describe Workbook do
890
1227
  book1 = Workbook.open(@simple_file1, :read_only => true)
891
1228
  old_value = book1.sheet(1)[1,1].Value
892
1229
  Workbook.unobtrusively(@simple_file1, :writable => true) do |book|
893
- book.ReadOnly.should be false
1230
+ book.ReadOnly.should be true
894
1231
  sheet = book.sheet(1)
895
1232
  sheet[1,1] = sheet[1,1].Value == "foo" ? "bar" : "foo"
896
1233
  book.excel.should == book1.excel
@@ -1419,6 +1756,7 @@ describe Workbook do
1419
1756
  book3.close
1420
1757
  end
1421
1758
 
1759
+ =begin
1422
1760
  it "should open unobtrusively the book in a new Excel to open the book writable" do
1423
1761
  excel1 = Excel.new(:reuse => false)
1424
1762
  excel2 = Excel.new(:reuse => false)
@@ -1475,6 +1813,7 @@ describe Workbook do
1475
1813
  new_sheet[1,1].Value.should_not == cell_value
1476
1814
  book3.close
1477
1815
  end
1816
+ =end
1478
1817
 
1479
1818
  it "should open unobtrusively the book in the Excel where it was opened most recently" do
1480
1819
  book2 = Workbook.open(@simple_file1, :force_excel => :new, :read_only => true)
@@ -1672,6 +2011,30 @@ describe Workbook do
1672
2011
  end
1673
2012
  end
1674
2013
 
2014
+ describe "promoting" do
2015
+
2016
+ context "with standard" do
2017
+
2018
+ before do
2019
+ @book = Workbook.open(@simple_file1)
2020
+ @ole_workbook = @book.ole_workbook
2021
+ end
2022
+
2023
+ after do
2024
+ @book.close
2025
+ end
2026
+
2027
+ it "should promote" do
2028
+ Workbook.unobtrusively(@ole_workbook) do |book|
2029
+ book.should === @book
2030
+ book.equal?(@book).should be true
2031
+ end
2032
+ end
2033
+
2034
+ end
2035
+
2036
+ end
2037
+
1675
2038
  describe "for_reading, for_modifying" do
1676
2039
 
1677
2040
  context "open unobtrusively for reading and modifying" do