ruber 0.0.8 → 0.0.9

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.
Files changed (81) hide show
  1. data/CHANGES +21 -0
  2. data/data/share/apps/ruber/ruberui.rc +3 -1
  3. data/lib/ruber/application/application.rb +22 -23
  4. data/lib/ruber/application/plugin.yaml +7 -2
  5. data/lib/ruber/{projects → application}/project_files_list.rb +0 -0
  6. data/lib/ruber/{projects → application}/project_files_widget.rb +0 -0
  7. data/lib/ruber/application/ui/project_files_rule_chooser_widget.rb +74 -0
  8. data/lib/ruber/{projects → application}/ui/project_files_rule_chooser_widget.ui +0 -0
  9. data/lib/ruber/application/ui/project_files_widget.rb +117 -0
  10. data/lib/ruber/{projects → application}/ui/project_files_widget.ui +0 -0
  11. data/lib/ruber/component_manager.rb +14 -9
  12. data/lib/ruber/editor/document.rb +35 -5
  13. data/lib/ruber/kde_sugar.rb +16 -0
  14. data/lib/ruber/main_window/choose_plugins_dlg.rb +7 -4
  15. data/lib/ruber/main_window/main_window.rb +131 -193
  16. data/lib/ruber/main_window/main_window_actions.rb +157 -58
  17. data/lib/ruber/main_window/main_window_internal.rb +145 -54
  18. data/lib/ruber/main_window/open_file_in_project_dlg.rb +4 -4
  19. data/lib/ruber/main_window/plugin.yaml +3 -6
  20. data/lib/ruber/main_window/ui/workspace_settings_widget.rb +2 -2
  21. data/lib/ruber/main_window/workspace.rb +62 -32
  22. data/lib/ruber/output_widget.rb +20 -16
  23. data/lib/ruber/pane.rb +11 -5
  24. data/lib/ruber/project.rb +27 -12
  25. data/lib/ruber/projects/ui/project_files_rule_chooser_widget.rb +2 -2
  26. data/lib/ruber/projects/ui/project_files_widget.rb +2 -2
  27. data/lib/ruber/utils.rb +37 -4
  28. data/lib/ruber/version.rb +1 -1
  29. data/lib/ruber/world/document_factory.rb +121 -0
  30. data/lib/ruber/world/document_list.rb +396 -0
  31. data/lib/ruber/world/environment.rb +470 -0
  32. data/lib/ruber/{main_window → world}/hint_solver.rb +1 -1
  33. data/lib/ruber/world/plugin.yaml +11 -0
  34. data/lib/ruber/world/project_factory.rb +131 -0
  35. data/lib/ruber/world/project_list.rb +265 -0
  36. data/lib/ruber/world/ui/workspace_settings_widget.rb +51 -0
  37. data/lib/ruber/{main_window → world}/ui/workspace_settings_widget.ui +0 -0
  38. data/lib/ruber/world/world.rb +307 -0
  39. data/plugins/auto_end/auto_end.rb +135 -9
  40. data/plugins/autosave/autosave.rb +4 -4
  41. data/plugins/find_in_files/find_in_files.rb +5 -5
  42. data/plugins/find_in_files/find_in_files_widgets.rb +1 -1
  43. data/plugins/project_browser/project_browser.rb +4 -4
  44. data/plugins/rake/rake.rb +4 -4
  45. data/plugins/rake/rake_extension.rb +1 -1
  46. data/plugins/rspec/rspec.rb +4 -4
  47. data/plugins/rspec/ruber_rspec_formatter.rb +2 -2
  48. data/plugins/ruby_development/ruby_development.rb +3 -3
  49. data/plugins/ruby_runner/ruby_runner.rb +2 -2
  50. data/plugins/state/plugin.yaml +6 -8
  51. data/plugins/state/state.rb +201 -391
  52. data/plugins/state/ui/config_widget.rb +5 -5
  53. data/plugins/state/ui/config_widget.ui +3 -3
  54. data/plugins/syntax_checker/syntax_checker.rb +4 -0
  55. data/spec/annotation_model_spec.rb +1 -1
  56. data/spec/auto_end_spec.rb +98 -47
  57. data/spec/component_manager_spec.rb +80 -21
  58. data/spec/document_factory_spec.rb +115 -0
  59. data/spec/document_list_spec.rb +560 -450
  60. data/spec/document_spec.rb +143 -55
  61. data/spec/editor_view_spec.rb +2 -2
  62. data/spec/environment_spec.rb +1900 -0
  63. data/spec/hint_solver_spec.rb +5 -5
  64. data/spec/kde_sugar_spec.rb +16 -0
  65. data/spec/output_widget_spec.rb +177 -51
  66. data/spec/pane_spec.rb +29 -5
  67. data/spec/plugin_spec.rb +1 -1
  68. data/spec/project_factory_spec.rb +104 -0
  69. data/spec/project_list_spec.rb +352 -447
  70. data/spec/project_spec.rb +34 -33
  71. data/spec/qt_sugar_spec.rb +2 -2
  72. data/spec/state_spec.rb +508 -811
  73. data/spec/utils_spec.rb +149 -98
  74. data/spec/workspace_spec.rb +120 -9
  75. data/spec/world_spec.rb +1219 -0
  76. metadata +23 -14
  77. data/lib/ruber/documents/document_list.rb +0 -412
  78. data/lib/ruber/documents/plugin.yaml +0 -4
  79. data/lib/ruber/main_window/view_manager.rb +0 -431
  80. data/lib/ruber/projects/plugin.yaml +0 -11
  81. data/lib/ruber/projects/project_list.rb +0 -314
@@ -25,12 +25,82 @@ describe Ruber::Document do
25
25
  include FlexMock::ArgumentTypes
26
26
 
27
27
  before do
28
+
28
29
  @app = KDE::Application.instance
29
30
  @w = Qt::Widget.new
30
31
  @comp = DocumentSpecComponentManager.new
31
32
  flexmock(Ruber).should_receive(:[]).with(:components).and_return(@comp)
32
- @doc = Ruber::Document.new @app
33
- end
33
+ @doc = Ruber::Document.new nil, @app
34
+ end
35
+
36
+ # describe '.new' do
37
+ #
38
+ # context 'when called with a file name as first argument' do
39
+ #
40
+ # it 'returns a new document for the given file if no documents for it exist' do
41
+ # old = Ruber::Document.new __FILE__
42
+ # file = File.join( File.dirname(__FILE__), 'common.rb')
43
+ # new = Ruber::Document.new file
44
+ # new.should_not == old
45
+ # new.path.should == file
46
+ # end
47
+ #
48
+ # it 'returns the existing document for the given file instead of creating a new one, if a document for that file already exists' do
49
+ # old = Ruber::Document.new __FILE__
50
+ # new = Ruber::Document.new __FILE__
51
+ # urls = Ruber::Document.instance_variable_get(:@docs).keys
52
+ # new.should == old
53
+ # end
54
+ #
55
+ # it 'takes into account documents created without a file which have later been saved' do
56
+ # old = Ruber::Document.new
57
+ # url = KDE::Url.new(__FILE__)
58
+ # flexmock(old).should_receive(:url).and_return url
59
+ # old.instance_eval{emit document_url_changed(url)}
60
+ # new = Ruber::Document.new __FILE__
61
+ # new.should == old
62
+ # end
63
+ #
64
+ # it 'takes into account documents which have been saved with another name' do
65
+ # old = Ruber::Document.new File.join( File.dirname(__FILE__), 'common.rb')
66
+ # url = KDE::Url.new(__FILE__)
67
+ # flexmock(old).should_receive(:url).and_return url
68
+ # old.instance_eval{emit document_url_changed(url)}
69
+ # new = Ruber::Document.new __FILE__
70
+ # new.should == old
71
+ # end
72
+ #
73
+ # it 'doesn\'t return a document which has been closed' do
74
+ # old = Ruber::Document.new __FILE__
75
+ # old_id = old.object_id
76
+ # old.close
77
+ # new = Ruber::Document.new __FILE__
78
+ # new.object_id.should_not == old_id
79
+ # end
80
+ #
81
+ # it 'doesn\'t use documents whose URL have changed for the old url' do
82
+ # old = Ruber::Document.new __FILE__
83
+ # new_file = File.join( File.dirname(__FILE__), 'common.rb')
84
+ # url = KDE::Url.new(new_file)
85
+ # flexmock(old).should_receive(:url).and_return url
86
+ # old.instance_eval{emit document_url_changed(url)}
87
+ # new = Ruber::Document.new __FILE__
88
+ # new.should_not == old
89
+ # end
90
+ #
91
+ # end
92
+ #
93
+ # context 'when called without a file name' do
94
+ #
95
+ # it 'always returns a new document' do
96
+ # old = [Ruber::Document.new(__FILE__), Ruber::Document.new]
97
+ # new = Ruber::Document.new
98
+ # old.each{|d| new.should_not == d}
99
+ # end
100
+ #
101
+ # end
102
+ #
103
+ # end
34
104
 
35
105
  describe ', when created' do
36
106
 
@@ -47,27 +117,27 @@ describe Ruber::Document do
47
117
  end
48
118
 
49
119
  it 'opens a given file if new is called with a string or KDE::Url second argument' do
50
- doc = Ruber::Document.new @app, __FILE__
120
+ doc = Ruber::Document.new __FILE__, @app
51
121
  doc.text.should == File.read(__FILE__)
52
122
  doc.url.path.should == __FILE__
53
- doc = Ruber::Document.new @app, KDE::Url.from_path(__FILE__)
123
+ doc = Ruber::Document.new KDE::Url.from_path(__FILE__), @app
54
124
  doc.text.should == File.read(__FILE__)
55
125
  doc.url.path.should == __FILE__
56
126
  end
57
127
 
58
128
  it 'creates a document project for itself, after opening the file (if given)' do
59
- doc = Ruber::Document.new @app
129
+ doc = Ruber::Document.new nil, @app
60
130
  prj = doc.instance_variable_get(:@project)
61
131
  prj.should be_a(Ruber::DocumentProject)
62
132
  prj.project_name.should be_empty
63
- doc = Ruber::Document.new @app, __FILE__
133
+ doc = Ruber::Document.new __FILE__, @app
64
134
  prj = doc.instance_variable_get(:@project)
65
135
  prj.should be_a(Ruber::DocumentProject)
66
136
  prj.project_name.should == KDE::Url.new(__FILE__).to_encoded.to_s
67
137
  end
68
138
 
69
139
  it 'isn\'t active' do
70
- doc = Ruber::Document.new @app, __FILE__
140
+ doc = Ruber::Document.new __FILE__, @app
71
141
  doc.should_not be_active
72
142
  end
73
143
 
@@ -78,12 +148,12 @@ describe Ruber::Document do
78
148
  context 'when called with :local' do
79
149
 
80
150
  it 'returns true if the document is associated with a local file' do
81
- doc = Ruber::Document.new nil, __FILE__
151
+ doc = Ruber::Document.new __FILE__
82
152
  doc.should have_file(:local)
83
153
  end
84
154
 
85
155
  it 'returns false if the document is associated with a remote file' do
86
- doc = Ruber::Document.new nil, KDE::Url.new('http://github.com/stcrocco/ruber/raw/master/ruber.gemspec')
156
+ doc = Ruber::Document.new KDE::Url.new('http://github.com/stcrocco/ruber/raw/master/ruber.gemspec')
87
157
  doc.should_not have_file(:local)
88
158
  end
89
159
 
@@ -97,12 +167,12 @@ describe Ruber::Document do
97
167
  context 'when called with :remote' do
98
168
 
99
169
  it 'returns false if the document is associated with a local file' do
100
- doc = Ruber::Document.new nil, __FILE__
170
+ doc = Ruber::Document.new __FILE__
101
171
  doc.should_not have_file(:remote)
102
172
  end
103
173
 
104
174
  it 'returns true if the document is associated with a remote file' do
105
- doc = Ruber::Document.new nil, KDE::Url.new('http://github.com/stcrocco/ruber/raw/master/ruber.gemspec')
175
+ doc = Ruber::Document.new KDE::Url.new('http://github.com/stcrocco/ruber/raw/master/ruber.gemspec')
106
176
  doc.should have_file(:remote)
107
177
  end
108
178
 
@@ -116,13 +186,13 @@ describe Ruber::Document do
116
186
  context 'when called with :any or no arguments' do
117
187
 
118
188
  it 'returns true if the document is associated with a local file' do
119
- doc = Ruber::Document.new nil, __FILE__
189
+ doc = Ruber::Document.new __FILE__
120
190
  doc.should have_file(:any)
121
191
  doc.should have_file
122
192
  end
123
193
 
124
194
  it 'returns true if the document is associated with a remote file' do
125
- doc = Ruber::Document.new nil, KDE::Url.new('http://github.com/stcrocco/ruber/raw/master/ruber.gemspec')
195
+ doc = Ruber::Document.new KDE::Url.new('http://github.com/stcrocco/ruber/raw/master/ruber.gemspec')
126
196
  doc.should have_file(:any)
127
197
  doc.should have_file
128
198
  end
@@ -140,7 +210,7 @@ describe Ruber::Document do
140
210
  describe '#own_project' do
141
211
 
142
212
  it 'returns the DocumentProject associated with the document' do
143
- doc = Ruber::Document.new @app, __FILE__
213
+ doc = Ruber::Document.new __FILE__, @app
144
214
  doc.own_project.project_name.should == KDE::Url.new(__FILE__).url
145
215
  end
146
216
 
@@ -151,9 +221,9 @@ describe Ruber::Document do
151
221
  before do
152
222
  @list = flexmock
153
223
  @prj = flexmock(:project_files => @list)
154
- @projects = flexmock{|m| m.should_receive(:current).and_return(@prj).by_default}
155
- flexmock(Ruber).should_receive(:[]).with(:projects).and_return(@projects)
156
- @doc = Ruber::Document.new @app, __FILE__
224
+ @world = flexmock{|m| m.should_receive(:active_project).and_return(@prj).by_default}
225
+ flexmock(Ruber).should_receive(:[]).with(:world).and_return(@world)
226
+ @doc = Ruber::Document.new __FILE__, @app
157
227
  end
158
228
 
159
229
  it 'returns the current project if one exists and the document belongs to it' do
@@ -167,12 +237,12 @@ describe Ruber::Document do
167
237
  end
168
238
 
169
239
  it 'returns the document project if the document isn\'t associated with a file' do
170
- @doc = Ruber::Document.new @app
240
+ @doc = Ruber::Document.new nil, @app
171
241
  @doc.project.should be_a(Ruber::DocumentProject)
172
242
  end
173
243
 
174
244
  it 'returns the document project if there isn\'t a project open' do
175
- @projects.should_receive(:current).and_return nil
245
+ @world.should_receive(:active_project).and_return nil
176
246
  @doc.project.should be_a(Ruber::DocumentProject)
177
247
  end
178
248
 
@@ -193,7 +263,7 @@ describe Ruber::Document do
193
263
  Tempfile.open('ruber_document_test') do |f|
194
264
  f.write 'test'
195
265
  f.flush
196
- doc = Ruber::Document.new nil, f.path
266
+ doc = Ruber::Document.new f.path
197
267
  flexmock(doc.send :internal).should_receive(:is_read_write).once.and_return false
198
268
  flexmock(doc).should_receive(:document_save_as).once
199
269
  doc.text += ' added'
@@ -205,7 +275,7 @@ describe Ruber::Document do
205
275
  Tempfile.open('ruber_document_test') do |f|
206
276
  f.write 'test'
207
277
  f.flush
208
- doc = Ruber::Document.new nil, f.path
278
+ doc = Ruber::Document.new f.path
209
279
  flexmock(doc.own_project).should_receive(:save).once
210
280
  doc.text += ' added'
211
281
  doc.save
@@ -216,7 +286,7 @@ describe Ruber::Document do
216
286
  Tempfile.open('ruber_document_test') do |f|
217
287
  f.write 'test'
218
288
  f.flush
219
- doc = Ruber::Document.new nil, f.path
289
+ doc = Ruber::Document.new f.path
220
290
  doc.text += ' added'
221
291
  doc.save.should be_true
222
292
  File.read( f.path ).should == 'test added'
@@ -251,14 +321,14 @@ describe Ruber::Document do
251
321
  @doc.mime_type.should == 'application/x-ruby'
252
322
  end
253
323
 
254
- it 'returns a list of the views associated with it' do
255
- @doc.views.should be_empty
256
- old_view = @doc.create_view nil
257
- @doc.views[0].should == old_view
258
- new_view = @doc.create_view nil
259
- @doc.views[1].should == new_view
260
- @doc.views.should == [old_view, new_view]
261
- end
324
+ # it 'returns a list of the views associated with it' do
325
+ # @doc.views.should be_empty
326
+ # old_view = @doc.create_view nil
327
+ # @doc.views[0].should == old_view
328
+ # new_view = @doc.create_view nil
329
+ # @doc.views[1].should == new_view
330
+ # @doc.views.should == [old_view, new_view]
331
+ # end
262
332
 
263
333
  it 'emits the "modified_changed(QObject*, bool)" signal when the modified status changes' do
264
334
  m = flexmock
@@ -300,9 +370,10 @@ describe Ruber::Document do
300
370
  @doc.should be_pristine
301
371
  @doc.text = "a"
302
372
  @doc.should_not be_pristine
303
- projects = flexmock(:current => nil)
373
+ # projects = flexmock(:current => nil)
304
374
  config = flexmock{|m| m.should_receive(:[]).with(:general, :default_script_directory).and_return ENV['HOME']}
305
- flexmock(Ruber).should_receive(:[]).with(:projects).and_return(projects)
375
+ world = flexmock(:active_project => nil)
376
+ flexmock(Ruber).should_receive(:[]).with(:world).and_return(world)
306
377
  flexmock(Ruber).should_receive(:[]).with(:config).and_return(config)
307
378
  flexmock(Ruber).should_receive(:[]).with(:main_window).and_return(Qt::Widget.new)
308
379
  Tempfile.open('ruber_document_test') do |f|
@@ -312,7 +383,7 @@ describe Ruber::Document do
312
383
  @doc.save
313
384
  @doc.should_not be_pristine
314
385
  end
315
- Ruber::Document.new(nil, __FILE__).should_not be_pristine
386
+ Ruber::Document.new(__FILE__).should_not be_pristine
316
387
  end
317
388
 
318
389
  ["text_changed(QObject*)", "about_to_close(QObject*)", 'about_to_close(QObject*)',
@@ -378,7 +449,7 @@ describe Ruber::Document do
378
449
  end
379
450
 
380
451
  it 'should return true when close_url succeeds' do
381
- doc = Ruber::Document.new nil, __FILE__
452
+ doc = Ruber::Document.new __FILE__
382
453
  doc.close_url(false).should be_true
383
454
  end
384
455
 
@@ -405,12 +476,12 @@ describe 'Ruber::Document#close' do
405
476
  @w = Qt::Widget.new
406
477
  @comp = DocumentSpecComponentManager.new
407
478
  flexmock(Ruber).should_receive(:[]).with(:components).and_return(@comp)
408
- @doc = Ruber::Document.new @app
479
+ @doc = Ruber::Document.new nil, @app
409
480
  flexmock(@doc.instance_variable_get(:@project)).should_receive(:save).by_default
410
481
  end
411
482
 
412
483
  it 'returns immediately if ask is true and query_close returns false' do
413
- doc = Ruber::Document.new nil, __FILE__
484
+ doc = Ruber::Document.new __FILE__
414
485
  exp = doc.object_id
415
486
  m = flexmock('test'){|mk| mk.should_receive(:document_closing).never}
416
487
  doc.connect(SIGNAL('closing(QObject*)')){|d| m.document_closing d.object_id}
@@ -419,7 +490,7 @@ describe 'Ruber::Document#close' do
419
490
  end
420
491
 
421
492
  it 'calls the save method of the project after emitting the "closing" signal' do
422
- @doc = Ruber::Document.new @app, __FILE__
493
+ @doc = Ruber::Document.new __FILE__, @app
423
494
  m = flexmock{|mk| mk.should_receive(:document_closing).once.globally.ordered}
424
495
  @doc.connect(SIGNAL('closing(QObject*)')){m.document_closing}
425
496
  flexmock(@doc.instance_variable_get(:@project)).should_receive(:save).once.globally.ordered
@@ -432,23 +503,23 @@ describe 'Ruber::Document#close' do
432
503
  end
433
504
 
434
505
  it 'should call the "close_url", if closing is confirmed' do
435
- doc = Ruber::Document.new nil, __FILE__
506
+ doc = Ruber::Document.new __FILE__
436
507
  flexmock(doc).should_receive(:close_url).once.with(false)
437
508
  doc.close
438
- doc = Ruber::Document.new nil, __FILE__
509
+ doc = Ruber::Document.new __FILE__
439
510
  flexmock(doc).should_receive(:close_url).once.with(false)
440
511
  doc.close false
441
512
  end
442
513
 
443
514
  it 'should emit the "closing(QObject*)" signal if closing is confirmed' do
444
- doc = Ruber::Document.new nil, __FILE__
515
+ doc = Ruber::Document.new __FILE__
445
516
  exp = doc.object_id
446
517
  m = flexmock('test'){|mk| mk.should_receive(:document_closing).once.with(exp)}
447
518
  flexmock(doc).should_receive(:close_url).and_return true
448
519
  doc.connect(SIGNAL('closing(QObject*)')){|d| m.document_closing d.object_id}
449
520
  flexmock(doc).should_receive(:query_close).and_return true
450
521
  doc.close
451
- doc = Ruber::Document.new nil, __FILE__
522
+ doc = Ruber::Document.new __FILE__
452
523
  exp1 = doc.object_id
453
524
  m.should_receive(:document_closing).with(exp1).once
454
525
  flexmock(doc).should_receive(:query_close)
@@ -457,7 +528,7 @@ describe 'Ruber::Document#close' do
457
528
  end
458
529
 
459
530
  it 'closes the views, if any, after emitting the closing signal, if closing is confirmed' do
460
- doc = Ruber::Document.new nil, __FILE__
531
+ doc = Ruber::Document.new __FILE__
461
532
  views = 3.times.map{doc.create_view}
462
533
  exp = doc.object_id
463
534
  m = flexmock('test'){|mk| mk.should_receive(:document_closing).once.with(exp).globally.ordered}
@@ -467,9 +538,9 @@ describe 'Ruber::Document#close' do
467
538
  flexmock(doc).should_receive(:query_close).and_return true
468
539
  doc.close false
469
540
  end
470
-
541
+
471
542
  it 'calls the #save method of the project if the document path is not empty' do
472
- doc = Ruber::Document.new nil, __FILE__
543
+ doc = Ruber::Document.new __FILE__
473
544
  exp = doc.object_id
474
545
  flexmock(doc).should_receive(:close_url).and_return true
475
546
  flexmock(doc.instance_variable_get(:@project)).should_receive(:save).once
@@ -494,7 +565,7 @@ end
494
565
 
495
566
 
496
567
  it 'should disconnect any slot/block connected to it after emitting the closing signal if closing is confirmed' do
497
- doc = Ruber::Document.new nil, __FILE__
568
+ doc = Ruber::Document.new __FILE__
498
569
  exp = doc.object_id
499
570
  flexmock(doc).should_receive(:close_url).and_return true
500
571
  def doc.disconnect *args;end
@@ -505,16 +576,16 @@ end
505
576
  end
506
577
 
507
578
  # it 'should dispose of itself after emitting the closing signal, if closing is confirmed' do
508
- # doc = Ruber::Document.new nil, __FILE__
579
+ # doc = Ruber::Document.new __FILE__
509
580
  # doc.close false
510
581
  # doc.should be_disposed
511
582
  # end
512
583
 
513
584
  it 'should return true, if closing is confirmed and successful and false otherwise' do
514
- doc = Ruber::Document.new nil, __FILE__
585
+ doc = Ruber::Document.new __FILE__
515
586
  flexmock(doc).should_receive(:close_url).once.and_return true
516
587
  doc.close( false).should be_true
517
- doc = Ruber::Document.new nil, __FILE__
588
+ doc = Ruber::Document.new __FILE__
518
589
  flexmock(doc).should_receive(:close_url).once.and_return false
519
590
  doc.close( false).should be_false
520
591
  flexmock(doc).should_receive(:query_close).once.and_return false
@@ -529,7 +600,7 @@ describe 'Ruber::Document#extension' do
529
600
  @app = KDE::Application.instance
530
601
  @comp = DocumentSpecComponentManager.new
531
602
  flexmock(Ruber).should_receive(:[]).with(:components).and_return @comp
532
- @doc = Ruber::Document.new @app
603
+ @doc = Ruber::Document.new nil, @app
533
604
  end
534
605
 
535
606
  it 'calls the extension method of its project' do
@@ -546,7 +617,7 @@ describe 'Ruber::Document#file_type_match?' do
546
617
  @app = KDE::Application.instance
547
618
  @comp = DocumentSpecComponentManager.new
548
619
  flexmock(Ruber).should_receive(:[]).with(:components).and_return( @comp).by_default
549
- @doc = Ruber::Document.new @app, __FILE__
620
+ @doc = Ruber::Document.new __FILE__, @app
550
621
  end
551
622
 
552
623
  it 'should return true if both arguments are empty' do
@@ -583,7 +654,7 @@ describe 'Ruber::Document#file_type_match?' do
583
654
  end
584
655
 
585
656
  it 'should always return false when doing pattern matching if the document is not associated with a file' do
586
- @doc = Ruber::Document.new @app
657
+ @doc = Ruber::Document.new nil, @app
587
658
  @doc.file_type_match?([], %w[*.txt *.rb]).should be_false
588
659
  end
589
660
 
@@ -615,8 +686,8 @@ describe 'Ruber::Document#document_save_as' do
615
686
  flexmock(Ruber).should_receive(:[]).with(:main_window).and_return(@w).by_default
616
687
  @comp = DocumentSpecComponentManager.new
617
688
  flexmock(Ruber).should_receive(:[]).with(:components).and_return(@comp).by_default
618
- @projects = flexmock{|m| m.should_receive(:current).and_return(nil).by_default}
619
- flexmock(Ruber).should_receive(:[]).with(:projects).and_return(@projects).by_default
689
+ @world = flexmock{|m| m.should_receive(:active_project).and_return(nil).by_default}
690
+ flexmock(Ruber).should_receive(:[]).with(:world).and_return(@world).by_default
620
691
  @config = flexmock('config')
621
692
  @config.should_receive(:[]).with(:general, :default_script_directory).and_return('/').by_default
622
693
  flexmock(Ruber).should_receive(:[]).with(:config).and_return(@config).by_default
@@ -645,7 +716,7 @@ describe 'Ruber::Document#document_save_as' do
645
716
 
646
717
  it 'uses the current project\'s project directory as default directory if there is a current project' do
647
718
  prj = flexmock(:project_directory => File.dirname(__FILE__))
648
- @projects.should_receive(:current).once.and_return prj
719
+ @world.should_receive(:active_project).once.and_return prj
649
720
  res = OpenStruct.new(:file_names => ['/test.rb'], :encoding => 'UTF-16')
650
721
  flexmock(KDE::EncodingFileDialog).should_receive(:get_save_file_name_and_encoding).once.with(String, File.dirname(__FILE__), String, Qt::Widget, String).and_return(res)
651
722
  @doc.send :document_save_as
@@ -728,7 +799,7 @@ describe Ruber::Document do
728
799
  describe '#save_settings' do
729
800
 
730
801
  it 'calls the #save method of the project if the document path is not empty' do
731
- doc = Ruber::Document.new nil, __FILE__
802
+ doc = Ruber::Document.new __FILE__
732
803
  exp = doc.object_id
733
804
  flexmock(doc.own_project).should_receive(:save).once
734
805
  doc.save_settings
@@ -885,4 +956,21 @@ describe Ruber::Document do
885
956
 
886
957
  end
887
958
 
959
+ describe '#views' do
960
+
961
+ before do
962
+ @doc = Ruber::Document.new
963
+ end
964
+
965
+ it 'returns a list of all the views associated with the document' do
966
+ views = 3.times.map{@doc.create_view}
967
+ @doc.views.should == views
968
+ end
969
+
970
+ it 'returns an empty list if there\'s no view associated with the document' do
971
+ @doc.views.should == []
972
+ end
973
+
974
+ end
975
+
888
976
  end
@@ -68,7 +68,7 @@ describe Ruber::EditorView do
68
68
  @comp = Qt::Object.new
69
69
  flexmock(@comp).should_receive(:each_component)
70
70
  flexmock(Ruber).should_receive(:[]).with(:components).and_return @comp
71
- @doc = Ruber::Document.new @app
71
+ @doc = Ruber::Document.new nil, @app
72
72
  @view = @doc.create_view @w
73
73
  end
74
74
 
@@ -200,7 +200,7 @@ describe 'Ruber::EditorView#execute_action' do
200
200
  @comp = Qt::Object.new
201
201
  flexmock(@comp).should_receive(:each_component)
202
202
  flexmock(Ruber).should_receive(:[]).with(:components).and_return @comp
203
- @doc = Ruber::Document.new @app
203
+ @doc = Ruber::Document.new nil, @app
204
204
  @view = @doc.create_view @w
205
205
  end
206
206