treequel 1.1.1 → 1.2.0pre320

Sign up to get free protection for your applications and to get access to all the features.
Files changed (44) hide show
  1. data.tar.gz.sig +0 -0
  2. data/ChangeLog +49 -1
  3. data/README.md +65 -0
  4. data/Rakefile +24 -19
  5. data/bin/treequel +20 -3
  6. data/lib/treequel.rb +3 -3
  7. data/lib/treequel/branch.rb +21 -7
  8. data/lib/treequel/branchset.rb +10 -0
  9. data/lib/treequel/model.rb +12 -2
  10. data/lib/treequel/schema.rb +1 -1
  11. data/rake/documentation.rb +9 -2
  12. data/rake/hg.rb +16 -3
  13. data/rake/manual.rb +1 -1
  14. data/rake/packaging.rb +1 -1
  15. data/rake/publishing.rb +158 -95
  16. data/rake/testing.rb +52 -88
  17. data/spec/lib/constants.rb +1 -0
  18. data/spec/lib/control_behavior.rb +7 -5
  19. data/spec/lib/helpers.rb +40 -17
  20. data/spec/lib/matchers.rb +2 -0
  21. data/spec/treequel/branch_spec.rb +44 -21
  22. data/spec/treequel/branchcollection_spec.rb +4 -3
  23. data/spec/treequel/branchset_spec.rb +42 -31
  24. data/spec/treequel/control_spec.rb +2 -1
  25. data/spec/treequel/controls/contentsync_spec.rb +2 -1
  26. data/spec/treequel/controls/pagedresults_spec.rb +4 -7
  27. data/spec/treequel/controls/sortedresults_spec.rb +4 -7
  28. data/spec/treequel/directory_spec.rb +11 -12
  29. data/spec/treequel/filter_spec.rb +7 -14
  30. data/spec/treequel/mixins_spec.rb +4 -9
  31. data/spec/treequel/model/objectclass_spec.rb +2 -1
  32. data/spec/treequel/model_spec.rb +16 -35
  33. data/spec/treequel/monkeypatches_spec.rb +12 -1
  34. data/spec/treequel/schema/attributetype_spec.rb +2 -1
  35. data/spec/treequel/schema/ldapsyntax_spec.rb +2 -1
  36. data/spec/treequel/schema/matchingrule_spec.rb +2 -1
  37. data/spec/treequel/schema/matchingruleuse_spec.rb +2 -1
  38. data/spec/treequel/schema/objectclass_spec.rb +2 -1
  39. data/spec/treequel/schema/table_spec.rb +2 -1
  40. data/spec/treequel/schema_spec.rb +2 -1
  41. data/spec/treequel_spec.rb +10 -2
  42. metadata +16 -17
  43. metadata.gz.sig +0 -0
  44. data/README +0 -66
@@ -15,6 +15,7 @@ module Treequel::TestConstants # :nodoc:all
15
15
  TEST_HOST = 'ldap.example.com'
16
16
  TEST_PORT = LDAP::LDAP_PORT
17
17
  TEST_BASE_DN = 'dc=acme,dc=com'
18
+ TEST_LDAPURI = "ldap://#{TEST_HOST}:#{TEST_PORT}/#{TEST_BASE_DN}"
18
19
 
19
20
  TEST_BIND_DN = "cn=admin,#{TEST_BASE_DN}"
20
21
  TEST_BIND_PASS = 'passomaquoddy'
@@ -10,7 +10,8 @@ BEGIN {
10
10
  $LOAD_PATH.unshift( libdir ) unless $LOAD_PATH.include?( libdir )
11
11
  }
12
12
 
13
- require 'spec'
13
+ require 'rspec'
14
+
14
15
  require 'spec/lib/constants'
15
16
  require 'spec/lib/helpers'
16
17
 
@@ -23,13 +24,14 @@ include Treequel::Constants
23
24
  #####################################################################
24
25
  ### C O N T E X T S
25
26
  #####################################################################
26
- describe "A Treequel::Control", :shared => true do
27
+ shared_examples_for "A Treequel::Control" do
27
28
  include Treequel::SpecHelpers
28
29
 
29
- before( :each ) do
30
- raise "Spec doesn't set @control before the Control shared behavior" unless @control
30
+ let( :control ) do
31
+ described_class
31
32
  end
32
33
 
34
+
33
35
  it "implements one of either #get_client_controls or #get_server_controls" do
34
36
  methods = [
35
37
  'get_client_controls', # 1.8.x
@@ -37,7 +39,7 @@ describe "A Treequel::Control", :shared => true do
37
39
  :get_client_controls, # 1.9.x
38
40
  :get_server_controls
39
41
  ]
40
- (@control.instance_methods( false ) | methods).should_not be_empty()
42
+ (control.instance_methods( false ) | methods).should_not be_empty()
41
43
  end
42
44
 
43
45
  end
@@ -10,29 +10,22 @@ BEGIN {
10
10
  $LOAD_PATH.unshift( libdir.to_s ) unless $LOAD_PATH.include?( libdir.to_s )
11
11
  }
12
12
 
13
- begin
14
- require 'yaml'
15
- require 'treequel'
16
-
17
- require 'spec/lib/constants'
18
- rescue LoadError
19
- unless Object.const_defined?( :Gem )
20
- require 'rubygems'
21
- retry
22
- end
23
- raise
24
- end
13
+ require 'rspec'
14
+
15
+ require 'yaml'
16
+ require 'treequel'
17
+
18
+ require 'spec/lib/constants'
19
+ require 'spec/lib/matchers'
25
20
 
26
21
 
27
22
  ### RSpec helper functions.
28
23
  module Treequel::SpecHelpers
29
24
  include Treequel::TestConstants
30
25
 
31
- ### Make an easily-comparable version vector out of +ver+ and return it.
32
- def vvec( ver )
33
- return ver.split('.').collect {|char| char.to_i }.pack('N*')
34
- end
35
-
26
+ SCHEMA_DUMPFILE = Pathname( __FILE__ ).dirname.parent + 'data' + 'schema.yml'
27
+ SCHEMAHASH = LDAP::Schema.new( YAML.load_file(SCHEMA_DUMPFILE) )
28
+ SCHEMA = Treequel::Schema.new( SCHEMAHASH )
36
29
 
37
30
  class ArrayLogger
38
31
  ### Create a new ArrayLogger that will append content to +array+.
@@ -65,6 +58,12 @@ module Treequel::SpecHelpers
65
58
  module_function
66
59
  ###############
67
60
 
61
+ ### Make an easily-comparable version vector out of +ver+ and return it.
62
+ def vvec( ver )
63
+ return ver.split('.').collect {|char| char.to_i }.pack('N*')
64
+ end
65
+
66
+
68
67
  ### Reset the logging subsystem to its default state.
69
68
  def reset_logging
70
69
  Treequel.reset_logger
@@ -93,8 +92,32 @@ module Treequel::SpecHelpers
93
92
  end
94
93
  end
95
94
 
95
+
96
+ ### Make a Treequel::Directory that will use the given +conn+ object as its
97
+ ### LDAP connection. Also pre-loads the schema object and fixtures some other
98
+ ### external data.
99
+ def get_fixtured_directory( conn )
100
+ LDAP::SSLConn.stub( :new ).and_return( @conn )
101
+ conn.stub( :root_dse ).and_return( nil )
102
+ directory = Treequel.directory( TEST_LDAPURI )
103
+ directory.stub( :schema ).and_return( SCHEMA )
104
+
105
+ return directory
106
+ end
107
+
96
108
  end
97
109
 
98
110
 
111
+ ### Mock with Rspec
112
+ Rspec.configure do |c|
113
+ c.mock_with :rspec
114
+ c.include( Treequel::TestConstants )
115
+ c.include( Treequel::SpecHelpers )
116
+ c.include( Treequel::Matchers )
117
+
118
+ c.filter_run_excluding( :ruby_1_8_only => true ) if
119
+ Treequel::SpecHelpers.vvec( RUBY_VERSION ) >= Treequel::SpecHelpers.vvec('1.9.1')
120
+ end
121
+
99
122
  # vim: set nosta noet ts=4 sw=4:
100
123
 
@@ -10,6 +10,8 @@ BEGIN {
10
10
  $LOAD_PATH.unshift( libdir.to_s ) unless $LOAD_PATH.include?( libdir.to_s )
11
11
  }
12
12
 
13
+ require 'rspec'
14
+
13
15
  require 'yaml'
14
16
  require 'treequel'
15
17
 
@@ -10,7 +10,8 @@ BEGIN {
10
10
  $LOAD_PATH.unshift( libdir ) unless $LOAD_PATH.include?( libdir )
11
11
  }
12
12
 
13
- require 'spec'
13
+ require 'rspec'
14
+
14
15
  require 'spec/lib/constants'
15
16
  require 'spec/lib/helpers'
16
17
  require 'spec/lib/matchers'
@@ -70,6 +71,28 @@ describe Treequel::Branch do
70
71
  branch.entry.should == entry
71
72
  end
72
73
 
74
+ it "can be constructed from an entry with Symbol keys" do
75
+ entry = {
76
+ :dn => [TEST_PERSON_DN],
77
+ TEST_PERSON_DN_ATTR => TEST_PERSON_DN_VALUE,
78
+ }
79
+ branch = Treequel::Branch.new_from_entry( entry, @directory )
80
+
81
+ branch.rdn_attributes.should == { TEST_PERSON_DN_ATTR => [TEST_PERSON_DN_VALUE] }
82
+ branch.entry.should == {
83
+ 'dn' => [TEST_PERSON_DN],
84
+ TEST_PERSON_DN_ATTR => TEST_PERSON_DN_VALUE,
85
+ }
86
+ end
87
+
88
+ it "can be instantiated with a Hash with Symbol keys" do
89
+ branch = Treequel::Branch.new( @directory, TEST_PERSON_DN,
90
+ TEST_PERSON_DN_ATTR.to_sym => TEST_PERSON_DN_VALUE )
91
+ branch.entry.should == {
92
+ TEST_PERSON_DN_ATTR => TEST_PERSON_DN_VALUE,
93
+ }
94
+ end
95
+
73
96
  it "raises an exception if constructed with something other than a Hash entry" do
74
97
  expect {
75
98
  Treequel::Branch.new( @directory, TEST_PEOPLE_DN, 18 )
@@ -91,10 +114,10 @@ describe Treequel::Branch do
91
114
 
92
115
  @schema = mock( "treequel schema" )
93
116
  @entry = mock( "entry object" )
94
- @directory.stub!( :schema ).and_return( @schema )
95
- @directory.stub!( :get_entry ).and_return( @entry )
96
- @directory.stub!( :base_dn ).and_return( TEST_BASE_DN )
97
- @schema.stub!( :attribute_types ).
117
+ @directory.stub( :schema ).and_return( @schema )
118
+ @directory.stub( :get_entry ).and_return( @entry )
119
+ @directory.stub( :base_dn ).and_return( TEST_BASE_DN )
120
+ @schema.stub( :attribute_types ).
98
121
  and_return({ :cn => :a_value, :ou => :a_value })
99
122
 
100
123
  @syntax = stub( "attribute ldapSyntax object", :oid => OIDS::STRING_SYNTAX )
@@ -375,8 +398,8 @@ describe Treequel::Branch do
375
398
  end
376
399
 
377
400
  it "can return the set of all its MUST attributeTypes based on which objectClasses it has" do
378
- oc1 = mock( "first objectclass" )
379
- oc2 = mock( "second objectclass" )
401
+ oc1 = mock( "first objectclass", :name => 'first_oc' )
402
+ oc2 = mock( "second objectclass", :name => 'second_oc' )
380
403
 
381
404
  @branch.should_receive( :object_classes ).and_return([ oc1, oc2 ])
382
405
  oc1.should_receive( :must ).at_least( :once ).and_return([ :cn, :uid ])
@@ -735,8 +758,8 @@ describe Treequel::Branch do
735
758
  @entry.should_receive( :[] ).with( 'glumpy' ).at_least( :once ).
736
759
  and_return([ 'glumpa1', 'glumpa2' ])
737
760
 
738
- @attribute_type.stub!( :syntax ).and_return( @syntax )
739
- @directory.stub!( :convert_to_object ).and_return {|_,str| str }
761
+ @attribute_type.stub( :syntax ).and_return( @syntax )
762
+ @directory.stub( :convert_to_object ).and_return {|_,str| str }
740
763
 
741
764
  @branch[ :glumpy ].should == [ 'glumpa1', 'glumpa2' ]
742
765
  end
@@ -747,8 +770,8 @@ describe Treequel::Branch do
747
770
  @entry.should_receive( :[] ).with( 'glumpy' ).at_least( :once ).
748
771
  and_return([ 'glumpa1' ])
749
772
 
750
- @attribute_type.stub!( :syntax ).and_return( @syntax )
751
- @directory.stub!( :convert_to_object ).and_return {|_,str| str }
773
+ @attribute_type.stub( :syntax ).and_return( @syntax )
774
+ @directory.stub( :convert_to_object ).and_return {|_,str| str }
752
775
 
753
776
  @branch[ :glumpy ].should == 'glumpa1'
754
777
  end
@@ -766,10 +789,10 @@ describe Treequel::Branch do
766
789
  end
767
790
 
768
791
  it "caches the value fetched from its entry" do
769
- @schema.stub!( :attribute_types ).and_return({ :glump => @attribute_type })
770
- @attribute_type.stub!( :single? ).and_return( true )
771
- @attribute_type.stub!( :syntax ).and_return( @syntax )
772
- @directory.stub!( :convert_to_object ).and_return {|_,str| str }
792
+ @schema.stub( :attribute_types ).and_return({ :glump => @attribute_type })
793
+ @attribute_type.stub( :single? ).and_return( true )
794
+ @attribute_type.stub( :syntax ).and_return( @syntax )
795
+ @directory.stub( :convert_to_object ).and_return {|_,str| str }
773
796
  @entry.should_receive( :[] ).with( 'glump' ).once.and_return( [:a_value] )
774
797
  2.times { @branch[ :glump ] }
775
798
  end
@@ -779,7 +802,7 @@ describe Treequel::Branch do
779
802
  @attribute_type.should_receive( :single? ).and_return( true )
780
803
  @entry.should_receive( :[] ).with( 'bvector' ).at_least( :once ).
781
804
  and_return([ '010011010101B' ])
782
- @syntax.stub!( :oid ).and_return( OIDS::BIT_STRING_SYNTAX )
805
+ @syntax.stub( :oid ).and_return( OIDS::BIT_STRING_SYNTAX )
783
806
  @directory.should_receive( :convert_to_object ).
784
807
  with( OIDS::BIT_STRING_SYNTAX, '010011010101B' ).
785
808
  and_return( 1237 )
@@ -805,14 +828,14 @@ describe Treequel::Branch do
805
828
  end
806
829
 
807
830
  it "clears the cache after a successful write" do
808
- @schema.stub!( :attribute_types ).and_return({ :glorpy => @attribute_type })
809
- @attribute_type.stub!( :single? ).and_return( true )
810
- @attribute_type.stub!( :syntax ).and_return( @syntax )
811
- @directory.stub!( :convert_to_object ).and_return {|_,val| val }
831
+ @schema.stub( :attribute_types ).and_return({ :glorpy => @attribute_type })
832
+ @attribute_type.stub( :single? ).and_return( true )
833
+ @attribute_type.stub( :syntax ).and_return( @syntax )
834
+ @directory.stub( :convert_to_object ).and_return {|_,val| val }
812
835
  @entry.should_receive( :[] ).with( 'glorpy' ).and_return( [:firstval], [:secondval] )
813
836
 
814
837
  @directory.should_receive( :modify ).with( @branch, {'glorpy' => ['chunks']} )
815
- @directory.stub!( :convert_to_attribute ).and_return {|_,val| val }
838
+ @directory.stub( :convert_to_attribute ).and_return {|_,val| val }
816
839
  @entry.should_receive( :[]= ).with( 'glorpy', ['chunks'] )
817
840
 
818
841
  @branch[ :glorpy ].should == :firstval
@@ -10,7 +10,8 @@ BEGIN {
10
10
  $LOAD_PATH.unshift( libdir ) unless $LOAD_PATH.include?( libdir )
11
11
  }
12
12
 
13
- require 'spec'
13
+ require 'rspec'
14
+
14
15
  require 'spec/lib/constants'
15
16
  require 'spec/lib/helpers'
16
17
 
@@ -148,7 +149,7 @@ describe Treequel::BranchCollection do
148
149
  @branchset1.should_receive( :each ).and_yield( :bs1_stuff )
149
150
  @branchset2.should_receive( :each ).and_yield( :bs2_stuff )
150
151
  added_branch = stub( "added branch", :directory => @directory )
151
- added_branch.stub!( :to_ary ).and_return( [added_branch] )
152
+ added_branch.stub( :to_ary ).and_return( [added_branch] )
152
153
 
153
154
  results = @collection + added_branch
154
155
 
@@ -236,7 +237,7 @@ describe Treequel::BranchCollection do
236
237
 
237
238
  it "raises a reasonable exception if one of its delegates returns a non-branchset" do
238
239
  filter = Treequel::Filter.new
239
- @branchset1.stub!( :filter ).and_return( filter )
240
+ @branchset1.stub( :filter ).and_return( filter )
240
241
 
241
242
  expect {
242
243
  @collection.filter
@@ -10,7 +10,8 @@ BEGIN {
10
10
  $LOAD_PATH.unshift( libdir ) unless $LOAD_PATH.include?( libdir )
11
11
  }
12
12
 
13
- require 'spec'
13
+ require 'rspec'
14
+
14
15
  require 'spec/lib/constants'
15
16
  require 'spec/lib/helpers'
16
17
 
@@ -18,20 +19,12 @@ require 'treequel/branchset'
18
19
  require 'treequel/branchcollection'
19
20
  require 'treequel/control'
20
21
 
21
- include Treequel::TestConstants
22
- include Treequel::Constants
23
22
 
24
23
  #####################################################################
25
24
  ### C O N T E X T S
26
25
  #####################################################################
27
26
 
28
27
  describe Treequel::Branchset do
29
- include Treequel::SpecHelpers
30
-
31
- # Make the specs read more clearly
32
- class << self
33
- alias_method :they, :it
34
- end
35
28
 
36
29
  DEFAULT_PARAMS = {
37
30
  :limit => 0,
@@ -50,19 +43,19 @@ describe Treequel::Branchset do
50
43
  end
51
44
 
52
45
  before( :each ) do
53
- @directory = mock( "treequel directory ", :registered_controls => [] )
54
- @branch = mock( "treequel branch", :dn => 'thedn' )
55
- @branch.stub!( :directory ).and_return( @directory )
46
+ @conn = double( "LDAP connection", :set_option => true, :bound? => false )
47
+ @directory = get_fixtured_directory( @conn )
48
+ @branch = @directory.base
56
49
  @params = DEFAULT_PARAMS.dup
57
50
  end
58
51
 
59
52
 
60
- describe "instances" do
53
+ context "an instance" do
61
54
  before( :each ) do
62
55
  @branchset = Treequel::Branchset.new( @branch )
63
56
  end
64
57
 
65
- they "are Enumerable" do
58
+ it "is Enumerable" do
66
59
  resultbranch = mock( "Result Branch" )
67
60
 
68
61
  @branch.should_receive( :search ).
@@ -76,7 +69,7 @@ describe Treequel::Branchset do
76
69
  #
77
70
  # #empty?
78
71
  #
79
- they "know that they are empty if they don't match at least one entry" do
72
+ it "is empty if it doesn't match at least one entry" do
80
73
  params = @params.merge( :limit => 1 )
81
74
  @branch.should_receive( :search ).
82
75
  with( Treequel::Branchset::DEFAULT_SCOPE, @branchset.filter, params ).
@@ -85,7 +78,7 @@ describe Treequel::Branchset do
85
78
  @branchset.should be_empty()
86
79
  end
87
80
 
88
- they "know that they are empty if they match at least one entry" do
81
+ it "isn't empty if it matches at least one entry" do
89
82
  params = @params.merge( :limit => 1 )
90
83
  @branch.should_receive( :search ).
91
84
  with( Treequel::Branchset::DEFAULT_SCOPE, @branchset.filter, params ).
@@ -97,7 +90,7 @@ describe Treequel::Branchset do
97
90
  #
98
91
  # #map
99
92
  #
100
- they "can be mapped into an Array of attribute values" do
93
+ it "can be mapped into an Array of attribute values" do
101
94
  resultbranch = mock( "Result Branch" )
102
95
  resultbranch2 = mock( "Result Branch 2" )
103
96
 
@@ -114,7 +107,7 @@ describe Treequel::Branchset do
114
107
  #
115
108
  # #to_hash
116
109
  #
117
- they "can be mapped into a Hash of entries keyed by one of their attributes" do
110
+ it "can be mapped into a Hash of entries keyed by one of its attributes" do
118
111
  resultbranch = mock( "Result Branch" )
119
112
  resultbranch2 = mock( "Result Branch 2" )
120
113
 
@@ -136,7 +129,7 @@ describe Treequel::Branchset do
136
129
  end
137
130
 
138
131
 
139
- they "can be mapped into a Hash of tuples using two attributes" do
132
+ it "can be mapped into a Hash of tuples using two attributes" do
140
133
  resultbranch = mock( "Result Branch" )
141
134
  resultbranch2 = mock( "Result Branch 2" )
142
135
 
@@ -162,9 +155,9 @@ describe Treequel::Branchset do
162
155
  #
163
156
  # #+
164
157
  #
165
- they "can be combined into a BranchCollection by adding them together" do
158
+ it "can be combined with another instance into a BranchCollection by adding them together" do
166
159
  other_branch = mock( "second treequel branch", :dn => 'theotherdn' )
167
- other_branch.stub!( :directory ).and_return( @directory )
160
+ other_branch.stub( :directory ).and_return( @directory )
168
161
  other_branchset = Treequel::Branchset.new( other_branch )
169
162
 
170
163
  result = @branchset + other_branchset
@@ -173,9 +166,9 @@ describe Treequel::Branchset do
173
166
  result.branchsets.should include( @branchset, other_branchset )
174
167
  end
175
168
 
176
- they "return the results of the search with the additional Branch if one is added to it" do
169
+ it "returns the results of the search with the additional Branch if one is added to it" do
177
170
  other_branch = mock( "additional treequel branch", :dn => 'theotherdn' )
178
- other_branch.stub!( :to_ary ).and_return( [other_branch] )
171
+ other_branch.stub( :to_ary ).and_return( [other_branch] )
179
172
  resultbranch = mock( "Result Branch" )
180
173
  resultbranch2 = mock( "Result Branch 2" )
181
174
 
@@ -191,7 +184,7 @@ describe Treequel::Branchset do
191
184
  #
192
185
  # #-
193
186
  #
194
- they "return the results of the search without the specified object if an object is " +
187
+ it "returns the results of the search without the specified object if an object is " +
195
188
  "subtracted from it" do
196
189
  resultbranch = stub( "Result Branch", :dn => TEST_PERSON_DN )
197
190
  resultbranch2 = stub( "Result Branch 2", :dn => TEST_PERSON2_DN )
@@ -209,7 +202,7 @@ describe Treequel::Branchset do
209
202
 
210
203
  end
211
204
 
212
- describe "instance with no filter, options, or scope set" do
205
+ context "instance with no filter, options, or scope set" do
213
206
 
214
207
  before( :each ) do
215
208
  @branchset = Treequel::Branchset.new( @branch )
@@ -431,17 +424,35 @@ describe Treequel::Branchset do
431
424
  #
432
425
  # #as
433
426
  #
434
- it "can create a new branchset cloned from itself that will return instances of a different branch class" do
427
+ it "can create a new branchset cloned from itself that will return instances of a " +
428
+ "different branch class" do
435
429
  subclass = Class.new( Treequel::Branch )
436
- @branch.stub!( :directory ).and_return( :the_directory )
437
- @branch.stub!( :dn ).and_return( TEST_HOSTS_DN )
430
+ @branch.stub( :directory ).and_return( :the_directory )
431
+ @branch.stub( :dn ).and_return( TEST_HOSTS_DN )
438
432
  newset = @branchset.as( subclass )
439
433
  newset.branch.should be_an_instance_of( subclass )
440
434
  end
441
435
 
436
+
437
+ #
438
+ # from
439
+ #
440
+ it "can create a new branchset cloned from itself with a different base DN (String)" do
441
+ newset = @branchset.from( TEST_SUBHOSTS_DN )
442
+ newset.base_dn.should == TEST_SUBHOSTS_DN
443
+ end
444
+
445
+ it "can create a new branchset cloned from itself with a different base DN " +
446
+ "(Treequel::Branch)" do
447
+ branch = Treequel::Branch.new( @directory, TEST_SUBHOSTS_DN )
448
+ newset = @branchset.from( branch )
449
+ newset.base_dn.should == TEST_SUBHOSTS_DN
450
+ end
451
+
442
452
  end
443
453
 
444
- describe "instance with no filter, and scope set to 'onelevel'" do
454
+
455
+ context "instance with no filter, and scope set to 'onelevel'" do
445
456
 
446
457
  before( :each ) do
447
458
  @branchset = Treequel::Branchset.new( @branch, :scope => :onelevel )
@@ -462,7 +473,7 @@ describe Treequel::Branchset do
462
473
 
463
474
  end
464
475
 
465
- describe "created for a directory with registered controls" do
476
+ context "created for a directory with registered controls" do
466
477
 
467
478
  before( :all ) do
468
479
  @control = Module.new {
@@ -476,7 +487,7 @@ describe Treequel::Branchset do
476
487
  end
477
488
 
478
489
  before( :each ) do
479
- @directory.stub!( :registered_controls ).and_return([ @control ])
490
+ @directory.stub( :registered_controls ).and_return([ @control ])
480
491
  end
481
492
 
482
493
  after( :each ) do