robust_excel_ole 0.6.1 → 0.6.2

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.
@@ -257,7 +257,21 @@ describe Book do
257
257
  it "should set visible and displayalerts if displayalerts => :if_visible" do
258
258
  book1 = Book.open(@simple_file)
259
259
  book1.excel.Visible.should be_false
260
- book1.excel.displayalerts = :if_visible
260
+ book1.excel.displayalerts.should == :if_visible
261
+ book1.Windows(book1.Name).Visible.should be_true
262
+ book1.visible.should be_false
263
+ book2 = Book.open(@different_file)
264
+ book2.excel.Visible.should be_false
265
+ book2.Windows(book2.Name).Visible.should be_true
266
+ book2.visible.should be_false
267
+ book2.excel.visible.should be_false
268
+ book2.excel.displayalerts.should == :if_visible
269
+ book2.excel.DisplayAlerts.should be_false
270
+ end
271
+
272
+ it "should set visible and displayalerts if displayalerts => :if_visible" do
273
+ book1 = Book.open(@simple_file)
274
+ book1.excel.Visible.should be_false
261
275
  book1.excel.displayalerts.should == :if_visible
262
276
  book1.Windows(book1.Name).Visible.should be_true
263
277
  book1.visible.should be_false
@@ -266,7 +280,7 @@ describe Book do
266
280
  book2.Windows(book2.Name).Visible.should be_true
267
281
  book2.visible.should be_true
268
282
  book2.excel.visible.should be_true
269
- book2.excel.displayalerts.should be_true
283
+ book2.excel.displayalerts.should == :if_visible
270
284
  book2.excel.DisplayAlerts.should be_true
271
285
  end
272
286
  end
@@ -428,7 +442,7 @@ describe Book do
428
442
  end
429
443
  end
430
444
 
431
- describe "alive?, filename, ==, visible, activate, saved, check_compatibility" do
445
+ describe "alive?, filename, ==, visible, focus, saved, check_compatibility" do
432
446
 
433
447
  context "with alive?" do
434
448
 
@@ -671,13 +685,13 @@ describe Book do
671
685
 
672
686
  end
673
687
 
674
- context "with activate" do
688
+ context "with focus" do
675
689
 
676
690
  before do
677
691
  @key_sender = IO.popen 'ruby "' + File.join(File.dirname(__FILE__), '../helpers/key_sender.rb') + '" "Microsoft Office Excel" ' , "w"
678
692
  @book = Book.open(@simple_file, :visible => true)
679
693
  @book.excel.displayalerts = false
680
- @book2 = Book.open(@another_simple_file, :force_excel => :new, :visible => true)
694
+ @book2 = Book.open(@another_simple_file, :visible => true)
681
695
  @book2.excel.displayalerts = false
682
696
  end
683
697
 
@@ -687,7 +701,7 @@ describe Book do
687
701
  @key_sender.close
688
702
  end
689
703
 
690
- it "should activate a book" do
704
+ it "should bring a book to focus" do
691
705
  sheet = @book.sheet(2)
692
706
  sheet.Activate
693
707
  sheet[2,3].Activate
@@ -695,12 +709,12 @@ describe Book do
695
709
  sheet2.Activate
696
710
  sheet2[3,2].Activate
697
711
  Excel.current.should == @book.excel
698
- @book2.activate
712
+ @book2.focus
699
713
  @key_sender.puts "{a}{enter}"
700
714
  sleep 1
701
715
  sheet2[3,2].Value.should == "a"
702
716
  #Excel.current.should == @book2.excel
703
- @book.activate
717
+ @book.focus
704
718
  @key_sender.puts "{a}{enter}"
705
719
  sleep 1
706
720
  sheet[2,3].Value.should == "a"
@@ -1039,7 +1039,7 @@ describe Book do
1039
1039
  File.delete @simple_save_file rescue nil
1040
1040
  expect {
1041
1041
  Book.open(@simple_save_file, :if_absent => :raise)
1042
- }.to raise_error(FileNotFound, "file \"#{@simple_save_file}\" not found")
1042
+ }.to raise_error(FileNotFound, "file #{General::absolute_path(@simple_save_file).gsub("/","\\").inspect} not found")
1043
1043
  end
1044
1044
 
1045
1045
  it "should create a workbook" do
@@ -1054,7 +1054,7 @@ describe Book do
1054
1054
  File.delete @simple_save_file rescue nil
1055
1055
  expect {
1056
1056
  Book.open(@simple_save_file)
1057
- }.to raise_error(FileNotFound, "file \"#{@simple_save_file}\" not found")
1057
+ }.to raise_error(FileNotFound, "file #{General::absolute_path(@simple_save_file).gsub("/","\\").inspect} not found")
1058
1058
  end
1059
1059
 
1060
1060
  end
@@ -1237,7 +1237,7 @@ describe Book do
1237
1237
  expected_path = Regexp.new(File.expand_path(path).gsub(/\//, "."))
1238
1238
  expect {
1239
1239
  Book.open(path)
1240
- }.to raise_error(FileNotFound, "file \"#{path}\" not found")
1240
+ }.to raise_error(FileNotFound, "file #{General::absolute_path(path).gsub("/","\\").inspect} not found")
1241
1241
  end
1242
1242
  end
1243
1243
  end
@@ -144,7 +144,7 @@ describe Book do
144
144
 
145
145
  after do
146
146
  @book.close(:if_unsaved => :forget)
147
- @book2.close
147
+ @book2.close(:if_unsaved => :forget)
148
148
  end
149
149
 
150
150
  it "should raise an error with :obstructed => :raise" do
@@ -172,11 +172,13 @@ describe Book do
172
172
  end
173
173
 
174
174
  it "should copy the first sheet before the third sheet and give 'before' the highest priority" do
175
- @book.add_sheet(@sheet, :after => @sheet, :before => @book.sheet(3)).name.should eq @book.sheet(3).name
175
+ @book.add_sheet(@sheet, :after => @sheet, :before => @book.sheet(3))
176
+ @book.Worksheets.Count.should == 4
176
177
  end
177
178
 
178
179
  it "should copy the first sheet before the third sheet and give 'before' the highest priority" do
179
- @book.add_sheet(@sheet, :before => @book.sheet(3), :after => @sheet).name.should eq @book.sheet(3).name
180
+ @book.add_sheet(@sheet, :before => @book.sheet(3), :after => @sheet)
181
+ @book.Worksheets.Count.should == 4
180
182
  end
181
183
 
182
184
  it "should raise error with giving a name that already exists" do
@@ -270,11 +272,13 @@ describe Book do
270
272
  end
271
273
 
272
274
  it "should copy the first sheet before the third sheet and give 'before' the highest priority" do
273
- @book.copy_sheet(@sheet, :after => @sheet, :before => @book.sheet(3)).name.should eq @book.sheet(3).name
275
+ @book.copy_sheet(@sheet, :after => @sheet, :before => @book.sheet(3))
276
+ @book.Worksheets.Count.should == 4
274
277
  end
275
278
 
276
279
  it "should copy the first sheet before the third sheet and give 'before' the highest priority" do
277
- @book.copy_sheet(@sheet, :before => @book.sheet(3), :after => @sheet).name.should eq @book.sheet(3).name
280
+ @book.copy_sheet(@sheet, :before => @book.sheet(3), :after => @sheet)
281
+ @book.Worksheets.Count.should == 4
278
282
  end
279
283
 
280
284
  it "should raise error with giving a name that already exists" do
@@ -370,11 +374,13 @@ describe Book do
370
374
  end
371
375
 
372
376
  it "should copy the first sheet before the third sheet and give 'before' the highest priority" do
373
- @book.add_or_copy_sheet(@sheet, :after => @sheet, :before => @book.sheet(3)).name.should eq @book.sheet(3).name
377
+ @book.add_or_copy_sheet(@sheet, :after => @sheet, :before => @book.sheet(3))
378
+ @book.Worksheets.Count.should == 4
374
379
  end
375
380
 
376
381
  it "should copy the first sheet before the third sheet and give 'before' the highest priority" do
377
- @book.add_or_copy_sheet(@sheet, :before => @book.sheet(3), :after => @sheet).name.should eq @book.sheet(3).name
382
+ @book.add_or_copy_sheet(@sheet, :before => @book.sheet(3), :after => @sheet)
383
+ @book.Worksheets.Count.should == 4
378
384
  end
379
385
 
380
386
  it "should raise error with giving a name that already exists" do
@@ -32,7 +32,7 @@ describe Book do
32
32
 
33
33
  after do
34
34
  Excel.kill_all
35
- rm_tmp(@dir)
35
+ #rm_tmp(@dir)
36
36
  end
37
37
 
38
38
 
@@ -238,29 +238,23 @@ describe Book do
238
238
  end
239
239
 
240
240
  it "should set checkcompatibilty to true" do
241
+ @book.CheckCompatibility.should be_false
241
242
  Book.unobtrusively(@simple_file, :check_compatibility => true) do |book|
242
243
  book.should be_a Book
243
244
  book.CheckCompatibility.should be_true
244
245
  end
245
- @book.CheckCompatibility.should be_true
246
+ @book.CheckCompatibility.should be_false
246
247
  end
247
248
 
248
249
  it "should set the checkcompatibilty to false" do
250
+ @book.CheckCompatibility.should be_false
249
251
  Book.unobtrusively(@simple_file, :check_compatibility => false) do |book|
250
252
  book.should be_a Book
251
253
  book.CheckCompatibility.should be_false
252
254
  end
253
- @book.CheckCompatibility.should be_true
254
- end
255
-
256
- it "should set the checkcompatibilty to false" do
257
- @book.CheckCompatibility = false
258
- Book.unobtrusively(@simple_file, :check_compatibility => true) do |book|
259
- book.should be_a Book
260
- book.CheckCompatibility.should be_true
261
- end
262
255
  @book.CheckCompatibility.should be_false
263
256
  end
257
+
264
258
  end
265
259
 
266
260
  context "with a closed book" do
Binary file
Binary file
Binary file
data/spec/excel_spec.rb CHANGED
@@ -12,6 +12,7 @@ module RobustExcelOle
12
12
 
13
13
  before(:all) do
14
14
  Excel.kill_all
15
+ sleep 0.2
15
16
  end
16
17
 
17
18
  before do
@@ -161,6 +162,7 @@ module RobustExcelOle
161
162
  it "should create a new Excel if there is no Excel to connect with" do
162
163
  excel1 = Excel.create
163
164
  excel1.close
165
+ sleep 0.2
164
166
  excel2 = Excel.current
165
167
  excel1.should_not be_alive
166
168
  excel2.should be_alive
@@ -171,6 +173,7 @@ module RobustExcelOle
171
173
  excel1 = Excel.create
172
174
  excel2 = Excel.current
173
175
  excel1.close
176
+ sleep 0.2
174
177
  excel1.should_not be_alive
175
178
  excel2.should_not be_alive
176
179
  sleep 0.2
@@ -181,6 +184,7 @@ module RobustExcelOle
181
184
  excel1 = Excel.create
182
185
  excel2 = Excel.create
183
186
  excel2.close
187
+ sleep 0.2
184
188
  excel3 = Excel.current
185
189
  excel3.should === excel1
186
190
  end
@@ -198,12 +202,14 @@ module RobustExcelOle
198
202
 
199
203
  context "excels_number" do
200
204
 
201
- it "should return right number of excel instances" do
202
- Excel.excels_number.should == 0
205
+ it "should return right number of excel instances" do
206
+ Excel.kill_all
207
+ sleep 0.2
208
+ n1 = Excel.excels_number
203
209
  e1 = Excel.create
204
- Excel.excels_number.should == 1
210
+ Excel.excels_number.should == n1 + 1
205
211
  e2 = Excel.create
206
- Excel.excels_number.should == 2
212
+ Excel.excels_number.should == n1 + 2
207
213
  end
208
214
  end
209
215
 
@@ -302,8 +308,9 @@ module RobustExcelOle
302
308
  end
303
309
 
304
310
  it "should recreate several Excel instances" do
305
- @excel1.close
311
+ @excel1.close(:if_unsaved => :forget)
306
312
  @excel3.close
313
+ sleep 0.2
307
314
  @excel1.should_not be_alive
308
315
  @excel3.should_not be_alive
309
316
  @excel1.recreate(:reopen_workbooks => true, :displayalerts => true)
@@ -321,9 +328,11 @@ module RobustExcelOle
321
328
  @book3.reopen
322
329
  @book3.should be_alive
323
330
  @book3.excel.should == @excel3
324
- @excel1.close
331
+ @excel1.close(:if_unsaved => :forget)
332
+ sleep 0.2
325
333
  @excel1.should_not be_alive
326
334
  @excel3.close
335
+ sleep 0.2
327
336
  @excel3.should_not be_alive
328
337
  end
329
338
  end
@@ -363,6 +372,7 @@ module RobustExcelOle
363
372
  it "should close one Excel instance" do
364
373
  excel1 = Excel.create
365
374
  Excel.close_all
375
+ sleep 0.2
366
376
  excel1.should_not be_alive
367
377
  Excel.excels_number.should == 0
368
378
  end
@@ -371,99 +381,162 @@ module RobustExcelOle
371
381
  excel1 = Excel.create
372
382
  excel2 = Excel.create
373
383
  Excel.close_all
384
+ sleep 0.2
374
385
  excel1.should_not be_alive
375
386
  excel2.should_not be_alive
376
387
  Excel.excels_number.should == 0
377
388
  end
378
389
  end
379
390
 
380
- context "with unsaved_workbooks" do
381
-
382
- before do
383
- book1 = Book.open(@simple_file1, :force_excel => :new)
384
- book2 = Book.open(@different_file, :force_excel => :new)
385
- @excel1 = book1.excel
386
- sheet1 = book1.sheet(1)
387
- @old_cell_value1 = sheet1[1,1].value
388
- sheet1[1,1] = sheet1[1,1].value == "foo" ? "bar" : "foo"
389
- @excel2 = book2.excel
390
- sheet2 = book2.sheet(1)
391
- @old_cell_value2 = sheet2[1,1].value
392
- sheet2[1,1] = sheet2[1,1].value == "foo" ? "bar" : "foo"
393
- end
391
+ context "with unsaved workbooks" do
394
392
 
395
- it "should close the first Excel without unsaved workbooks and then raise an error" do
396
- expect{
397
- Excel.close_all(:if_unsaved => :raise)
398
- }.to raise_error(UnsavedWorkbooks, "Excel contains unsaved workbooks")
399
- @excel1.should be_alive
400
- @excel2.should be_alive
401
- end
393
+ context "with three Excel instances" do
402
394
 
403
- it "should close the first Excel without unsaved workbooks and then raise an error per default" do
404
- expect{
405
- Excel.close_all
406
- }.to raise_error(UnsavedWorkbooks, "Excel contains unsaved workbooks")
407
- @excel1.should be_alive
408
- @excel2.should be_alive
409
- end
395
+ before do
396
+ @book1 = Book.open(@simple_file1, :force_excel => :new)
397
+ @book2 = Book.open(@another_simple_file, :force_excel => :new)
398
+ @book3 = Book.open(@different_file, :force_excel => :new)
399
+ end
410
400
 
411
- it "should close the Excel instances with saving the unsaved workbooks" do
412
- Excel.close_all(:if_unsaved => :save)
413
- @excel1.should_not be_alive
414
- @excel2.should_not be_alive
415
- new_book1 = Book.open(@simple_file1)
416
- new_sheet1 = new_book1.sheet(1)
417
- new_sheet1[1,1].value.should_not == @old_cell_value1
418
- new_book1.close
419
- new_book2 = Book.open(@different_file1)
420
- new_sheet2 = new_book2.sheet(1)
421
- new_sheet2[1,1].value.should_not == @old_cell_value2
422
- new_book2.close
423
- end
401
+ it "should close the 2nd and 3rd Excel instances that have saved workbooks" do
402
+ old_cell_value1 = @book1.sheet(1)[1,1].value
403
+ @book1.sheet(1)[1,1] = old_cell_value1 == "foo" ? "bar" : "foo"
404
+ expect{
405
+ Excel.close_all(:if_unsaved => :raise)
406
+ }.to raise_error(UnsavedWorkbooks, "Excel contains unsaved workbooks")
407
+ sleep 0.2
408
+ @book1.excel.should be_alive
409
+ @book2.excel.should_not be_alive
410
+ @book3.excel.should_not be_alive
411
+ @book1.should be_alive
412
+ @book2.should_not be_alive
413
+ @book3.should_not be_alive
414
+ end
424
415
 
425
- it "should close the Excel instances without saving the unsaved workbooks" do
426
- Excel.close_all(:if_unsaved => :forget)
427
- @excel1.should_not be_alive
428
- @excel2.should_not be_alive
429
- new_book1 = Book.open(@simple_file1)
430
- new_sheet1 = new_book1.sheet(1)
431
- new_sheet1[1,1].value.should == @old_cell_value1
432
- new_book1.close
433
- new_book2 = Book.open(@different_file1)
434
- new_sheet2 = new_book2.sheet(1)
435
- new_sheet2[1,1].value.should == @old_cell_value2
436
- new_book2.close
437
- end
416
+ it "should close the 1st and 3rd Excel instances that have saved workbooks" do
417
+ old_cell_value2 = @book2.sheet(1)[1,1].value
418
+ @book2.sheet(1)[1,1] = old_cell_value2 == "foo" ? "bar" : "foo"
419
+ expect{
420
+ Excel.close_all(:if_unsaved => :raise)
421
+ }.to raise_error(UnsavedWorkbooks, "Excel contains unsaved workbooks")
422
+ sleep 0.2
423
+ @book2.excel.should be_alive
424
+ @book1.excel.should_not be_alive
425
+ @book3.excel.should_not be_alive
426
+ @book2.should be_alive
427
+ @book1.should_not be_alive
428
+ @book3.should_not be_alive
429
+ end
430
+
431
+ it "should close the 2nd and 3rd Excel instances that have saved workbooks" do
432
+ old_cell_value3 = @book3.sheet(1)[1,1].value
433
+ @book3.sheet(1)[1,1] = old_cell_value3 == "foo" ? "bar" : "foo"
434
+ expect{
435
+ Excel.close_all(:if_unsaved => :raise)
436
+ }.to raise_error(UnsavedWorkbooks, "Excel contains unsaved workbooks")
437
+ sleep 0.2
438
+ @book3.excel.should be_alive
439
+ @book1.excel.should_not be_alive
440
+ @book2.excel.should_not be_alive
441
+ @book3.should be_alive
442
+ @book1.should_not be_alive
443
+ @book2.should_not be_alive
444
+ end
438
445
 
439
- it "should raise an error for invalid option" do
440
- expect {
441
- Excel.close_all(:if_unsaved => :invalid_option)
442
- }.to raise_error(OptionInvalid, ":if_unsaved: invalid option: :invalid_option")
443
446
  end
444
447
 
445
- end
448
+ context "with two Excel instances" do
449
+
450
+ before do
451
+ book1 = Book.open(@simple_file1, :force_excel => :new)
452
+ book2 = Book.open(@different_file, :force_excel => :new)
453
+ @excel1 = book1.excel
454
+ sheet1 = book1.sheet(1)
455
+ @old_cell_value1 = sheet1[1,1].value
456
+ sheet1[1,1] = sheet1[1,1].value == "foo" ? "bar" : "foo"
457
+ @excel2 = book2.excel
458
+ sheet2 = book2.sheet(1)
459
+ @old_cell_value2 = sheet2[1,1].value
460
+ sheet2[1,1] = sheet2[1,1].value == "foo" ? "bar" : "foo"
461
+ end
462
+
463
+ it "should close the first Excel without unsaved workbooks and then raise an error" do
464
+ expect{
465
+ Excel.close_all(:if_unsaved => :raise)
466
+ }.to raise_error(UnsavedWorkbooks, "Excel contains unsaved workbooks")
467
+ sleep 0.2
468
+ @excel1.should be_alive
469
+ @excel2.should be_alive
470
+ end
446
471
 
447
- context "with unsaved workbooks simple" do
472
+ it "should close the first Excel without unsaved workbooks and then raise an error per default" do
473
+ expect{
474
+ Excel.close_all
475
+ }.to raise_error(UnsavedWorkbooks, "Excel contains unsaved workbooks")
476
+ sleep 0.2
477
+ @excel1.should be_alive
478
+ @excel2.should be_alive
479
+ end
448
480
 
449
- it "should save the unsaved workbook" do
450
- book1 = Book.open(@simple_file, :visible => true)
451
- book1.sheet(1)[1,1] = "bar"
452
- book1.Saved.should be_false
453
- Excel.close_all(:if_unsaved => :save)
454
- end
481
+ it "should close the Excel instances with saving the unsaved workbooks" do
482
+ Excel.close_all(:if_unsaved => :save)
483
+ sleep 0.2
484
+ @excel1.should_not be_alive
485
+ @excel2.should_not be_alive
486
+ new_book1 = Book.open(@simple_file1)
487
+ new_sheet1 = new_book1.sheet(1)
488
+ new_sheet1[1,1].value.should_not == @old_cell_value1
489
+ new_book1.close
490
+ new_book2 = Book.open(@different_file1)
491
+ new_sheet2 = new_book2.sheet(1)
492
+ new_sheet2[1,1].value.should_not == @old_cell_value2
493
+ new_book2.close
494
+ end
495
+
496
+ it "should close the Excel instances without saving the unsaved workbooks" do
497
+ Excel.close_all(:if_unsaved => :forget)
498
+ sleep 0.2
499
+ @excel1.should_not be_alive
500
+ @excel2.should_not be_alive
501
+ new_book1 = Book.open(@simple_file1)
502
+ new_sheet1 = new_book1.sheet(1)
503
+ new_sheet1[1,1].value.should == @old_cell_value1
504
+ new_book1.close
505
+ new_book2 = Book.open(@different_file1)
506
+ new_sheet2 = new_book2.sheet(1)
507
+ new_sheet2[1,1].value.should == @old_cell_value2
508
+ new_book2.close
509
+ end
510
+
511
+ it "should raise an error for invalid option" do
512
+ expect {
513
+ Excel.close_all(:if_unsaved => :invalid_option)
514
+ }.to raise_error(OptionInvalid, ":if_unsaved: invalid option: :invalid_option")
515
+ end
455
516
 
456
- it "should forget the unsaved workbook" do
457
- book1 = Book.open(@simple_file, :visible => true)
458
- excel1 = book1.excel
459
- excel1.displayalerts = false
460
- sheet1 = book1.sheet(1)
461
- old_cell_value1 = sheet1[1,1].value
462
- sheet1[1,1] = sheet1[1,1].value == "foo" ? "bar" : "foo"
463
- book1.Saved.should be_false
464
- Excel.close_all(:if_unsaved => :forget)
465
517
  end
466
- end
518
+
519
+ context "with one Excel instance" do
520
+
521
+ it "should save the unsaved workbook" do
522
+ book1 = Book.open(@simple_file, :visible => true)
523
+ book1.sheet(1)[1,1] = "bar"
524
+ book1.Saved.should be_false
525
+ Excel.close_all(:if_unsaved => :save)
526
+ end
527
+
528
+ it "should forget the unsaved workbook" do
529
+ book1 = Book.open(@simple_file, :visible => true)
530
+ excel1 = book1.excel
531
+ excel1.displayalerts = false
532
+ sheet1 = book1.sheet(1)
533
+ old_cell_value1 = sheet1[1,1].value
534
+ sheet1[1,1] = sheet1[1,1].value == "foo" ? "bar" : "foo"
535
+ book1.Saved.should be_false
536
+ Excel.close_all(:if_unsaved => :forget)
537
+ end
538
+ end
539
+ end
467
540
  end
468
541
 
469
542
  =begin
@@ -530,6 +603,7 @@ module RobustExcelOle
530
603
  @excel.should be_alive
531
604
  @book.should be_alive
532
605
  @excel.close
606
+ sleep 0.2
533
607
  @excel.should_not be_alive
534
608
  @book.should_not be_alive
535
609
  end
@@ -538,6 +612,7 @@ module RobustExcelOle
538
612
  @excel.should be_alive
539
613
  @book.should be_alive
540
614
  @excel.close(:hard => true)
615
+ sleep 0.2
541
616
  @excel.should_not be_alive
542
617
  @book.should_not be_alive
543
618
  end
@@ -546,6 +621,7 @@ module RobustExcelOle
546
621
  @excel.should be_alive
547
622
  excel2 = Excel.create
548
623
  @excel.close
624
+ sleep 0.2
549
625
  @excel.should_not be_alive
550
626
  excel2.should be_alive
551
627
  end
@@ -554,6 +630,7 @@ module RobustExcelOle
554
630
  @excel.should be_alive
555
631
  excel2 = Excel.create
556
632
  @excel.close(:hard => true)
633
+ sleep 0.2
557
634
  @excel.should_not be_alive
558
635
  excel2.should be_alive
559
636
  end
@@ -589,6 +666,7 @@ module RobustExcelOle
589
666
  @excel.should be_alive
590
667
  @excel.displayalerts = true
591
668
  @excel.close(:if_unsaved => :forget)
669
+ sleep 0.2
592
670
  @excel.should_not be_alive
593
671
  new_book = Book.open(@simple_file)
594
672
  new_sheet = new_book.sheet(1)
@@ -597,7 +675,7 @@ module RobustExcelOle
597
675
  new_book2 = Book.open(@another_simple_file)
598
676
  new_sheet2 = new_book2.sheet(1)
599
677
  new_sheet2[1,1].value.should == @old_cell_value2
600
- new_book2.close
678
+ new_book2.close(:if_unsaved => :forget)
601
679
  end
602
680
 
603
681
  it "should close the Excel without saving the workbook" do
@@ -605,6 +683,7 @@ module RobustExcelOle
605
683
  @excel.should be_alive
606
684
  @excel.displayalerts = false
607
685
  @excel.close(:if_unsaved => :forget)
686
+ sleep 0.2
608
687
  @excel.should_not be_alive
609
688
  new_book = Book.open(@simple_file)
610
689
  new_sheet = new_book.sheet(1)
@@ -613,12 +692,13 @@ module RobustExcelOle
613
692
  new_book2 = Book.open(@another_simple_file)
614
693
  new_sheet2 = new_book2.sheet(1)
615
694
  new_sheet2[1,1].value.should == @old_cell_value2
616
- new_book2.close
695
+ new_book2.close(:if_unsaved => :forget)
617
696
  end
618
697
 
619
698
  it "should close the Excel with saving the workbook" do
620
699
  @excel.should be_alive
621
700
  @excel.close(:if_unsaved => :save)
701
+ sleep 0.2
622
702
  @excel.should_not be_alive
623
703
  new_book = Book.open(@simple_file)
624
704
  new_sheet = new_book.sheet(1)
@@ -633,6 +713,7 @@ module RobustExcelOle
633
713
  it "should close the Excel with saving the workbook" do
634
714
  @excel.should be_alive
635
715
  @excel.close(:if_unsaved => :keep_open)
716
+ sleep 0.2
636
717
  @excel.should be_alive
637
718
  @excel.close(:if_unsaved => :forget)
638
719
  end
@@ -655,6 +736,7 @@ module RobustExcelOle
655
736
  @book.should be_alive
656
737
  @book.saved.should be_false
657
738
  @excel.close(:if_unsaved => :forget, :hard => true)
739
+ sleep 0.2
658
740
  @excel.should_not be_alive
659
741
  @book.should_not be_alive
660
742
  new_book = Book.open(@simple_file)
@@ -662,6 +744,7 @@ module RobustExcelOle
662
744
  new_sheet[1,1].value.should == @old_cell_value
663
745
  new_book.close
664
746
  new_book.excel.close(:hard => true)
747
+ sleep 0.2
665
748
  procs = WIN32OLE.connect("winmgmts:\\\\.")
666
749
  processes = procs.InstancesOf("win32_process")
667
750
  result = []
@@ -777,6 +860,16 @@ module RobustExcelOle
777
860
 
778
861
  end
779
862
 
863
+ describe "focus" do
864
+
865
+ it "should focus" do
866
+ excel = Excel.create
867
+ excel.focus
868
+ excel.Visible.should be_true
869
+ end
870
+
871
+ end
872
+
780
873
  context "workbooks_visible" do
781
874
 
782
875
  it "should not raise an error for an empty Excel instance" do
@@ -826,21 +919,62 @@ module RobustExcelOle
826
919
 
827
920
  end
828
921
 
829
- context "with Visible and DisplayAlerts, foremost_window" do
922
+ context "with Visible and DisplayAlerts, focus" do
830
923
 
831
- it "should set Excel in foremost window" do
924
+ it "should bring Excel in focus" do
832
925
  excel1 = Excel.create
833
926
  excel2 = Excel.create
834
- excel1.foremost_window
927
+ excel1.focus
835
928
  excel1.Visible.should be_true
836
929
  excel1.visible.should be_true
837
930
  end
838
931
 
932
+ it "should set default values" do
933
+ excel1 = Excel.new
934
+ excel1.Visible.should be_false
935
+ excel1.DisplayAlerts.should be_false
936
+ excel1.visible.should be_false
937
+ excel1.displayalerts.should == :if_visible
938
+ end
939
+
940
+ it "should set visible true" do
941
+ excel1 = Excel.new(:visible => true)
942
+ excel1.Visible.should be_true
943
+ excel1.DisplayAlerts.should be_true
944
+ excel1.visible.should be_true
945
+ excel1.displayalerts.should == :if_visible
946
+ end
947
+
948
+ it "should set visible false" do
949
+ excel1 = Excel.new(:visible => false)
950
+ excel1.Visible.should be_false
951
+ excel1.DisplayAlerts.should be_false
952
+ excel1.visible.should be_false
953
+ excel1.displayalerts.should == :if_visible
954
+ end
955
+
956
+ it "should set displayalerts true" do
957
+ excel1 = Excel.new(:displayalerts => true)
958
+ excel1.Visible.should be_false
959
+ excel1.DisplayAlerts.should be_true
960
+ excel1.visible.should be_false
961
+ excel1.displayalerts.should be_true
962
+ end
963
+
964
+ it "should set displayalerts false" do
965
+ excel1 = Excel.new(:displayalerts => false)
966
+ excel1.Visible.should be_false
967
+ excel1.DisplayAlerts.should be_false
968
+ excel1.visible.should be_false
969
+ excel1.displayalerts.should be_false
970
+ end
839
971
 
840
972
  it "should use values of the current Excel when reusing" do
841
973
  excel1 = Excel.create
842
974
  excel1.Visible.should be_false
843
975
  excel1.DisplayAlerts.should be_false
976
+ excel1.visible.should be_false
977
+ excel1.displayalerts.should == :if_visible
844
978
  excel1.Visible = true
845
979
  excel1.DisplayAlerts = true
846
980
  excel1.Visible.should be_true
@@ -850,13 +984,22 @@ module RobustExcelOle
850
984
  excel2.DisplayAlerts.should be_true
851
985
  end
852
986
 
853
- it "should set Excel visible and invisible with current" do
987
+ it "should take visible and displayalerts from Visible and DisplayAlerts of the connected Excel" do
988
+ excel1 = Excel.create
989
+ excel2 = Excel.current
990
+ excel2.Visible.should be_false
991
+ excel2.visible.should be_false
992
+ excel2.DisplayAlerts.should be_false
993
+ excel2.displayalerts.should == false
994
+ end
995
+
996
+ it "should take Visible and DisplayAlerts from the connected Excel" do
854
997
  excel1 = Excel.create
855
998
  excel2 = Excel.current(:visible => true)
856
999
  excel2.Visible.should be_true
857
1000
  excel2.visible.should be_true
858
- excel2.DisplayAlerts.should be_true
859
- excel2.displayalerts.should == :if_visible
1001
+ excel2.DisplayAlerts.should be_false
1002
+ excel2.displayalerts.should be_false
860
1003
  end
861
1004
 
862
1005
  it "should set Excel visible and invisible with current" do
@@ -873,8 +1016,8 @@ module RobustExcelOle
873
1016
  excel2 = Excel.current(:visible => true)
874
1017
  excel2.Visible.should be_true
875
1018
  excel2.visible.should be_true
876
- excel2.displayalerts.should == :if_visible
877
- excel2.DisplayAlerts.should be_true
1019
+ excel2.displayalerts.should be_false
1020
+ excel2.DisplayAlerts.should be_false
878
1021
  end
879
1022
 
880
1023
  it "should set Excel visible and invisible" do
@@ -883,9 +1026,6 @@ module RobustExcelOle
883
1026
  excel.visible.should be_true
884
1027
  excel.DisplayAlerts.should be_true
885
1028
  excel.displayalerts.should == :if_visible
886
- excel6 = Excel.current
887
- excel6.should === excel
888
- excel6.Visible.should be_true
889
1029
  excel.visible = false
890
1030
  excel.Visible.should be_false
891
1031
  excel.visible.should be_false
@@ -911,19 +1051,19 @@ module RobustExcelOle
911
1051
  excel3.Visible.should be_false
912
1052
  excel3.visible.should be_false
913
1053
  excel3.DisplayAlerts.should be_false
914
- excel3.displayalerts.should == :if_visible
1054
+ excel3.displayalerts.should be_false
915
1055
  excel4 = Excel.current(:visible => true)
916
1056
  excel4.should === excel
917
1057
  excel4.Visible.should be_true
918
1058
  excel4.visible.should be_true
919
- excel4.DisplayAlerts.should be_true
920
- excel4.displayalerts.should == :if_visible
1059
+ excel4.DisplayAlerts.should be_false
1060
+ excel4.displayalerts.should be_false
921
1061
  excel5 = Excel.current(:visible => false)
922
1062
  excel5.should === excel
923
1063
  excel5.Visible.should be_false
924
1064
  excel5.visible.should be_false
925
1065
  excel5.DisplayAlerts.should be_false
926
- excel5.displayalerts.should == :if_visible
1066
+ excel5.displayalerts.should be_false
927
1067
  end
928
1068
 
929
1069
  it "should enable or disable Excel DispayAlerts" do
@@ -1328,11 +1468,16 @@ module RobustExcelOle
1328
1468
  workbooks.Count.should == 2
1329
1469
  end
1330
1470
 
1331
- it "should raise error when book cannot be saved" do
1471
+ it "should raise error if filename is with wrong path" do
1332
1472
  expect{
1333
1473
  workbook = @excel1.generate_workbook(@invalid_name_file)
1334
- # not always Unknown ???? ToDo #*#
1335
- }.to raise_error(UnexpectedError)
1474
+ }.to raise_error(FileNotFound, /could not save workbook with filename/)
1475
+ end
1476
+
1477
+ it "should raise error if filename is nil" do
1478
+ expect{
1479
+ workbook = @excel1.generate_workbook(@nil)
1480
+ }.to raise_error(FileNameNotGiven, "filename is nil")
1336
1481
  end
1337
1482
 
1338
1483
  end