rambling-trie 2.3.0 → 2.4.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (60) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +6 -0
  3. data/LICENSE +1 -1
  4. data/README.md +68 -29
  5. data/lib/rambling/trie/comparable.rb +2 -3
  6. data/lib/rambling/trie/compressible.rb +3 -5
  7. data/lib/rambling/trie/compressor.rb +2 -12
  8. data/lib/rambling/trie/configuration/properties.rb +8 -14
  9. data/lib/rambling/trie/configuration/provider_collection.rb +19 -27
  10. data/lib/rambling/trie/container.rb +28 -42
  11. data/lib/rambling/trie/enumerable.rb +4 -2
  12. data/lib/rambling/trie/nodes/compressed.rb +4 -5
  13. data/lib/rambling/trie/nodes/missing.rb +1 -2
  14. data/lib/rambling/trie/nodes/node.rb +21 -34
  15. data/lib/rambling/trie/nodes/raw.rb +2 -2
  16. data/lib/rambling/trie/readers/plain_text.rb +10 -6
  17. data/lib/rambling/trie/readers/reader.rb +19 -0
  18. data/lib/rambling/trie/readers.rb +1 -1
  19. data/lib/rambling/trie/serializers/file.rb +1 -1
  20. data/lib/rambling/trie/serializers/marshal.rb +12 -20
  21. data/lib/rambling/trie/serializers/serializer.rb +27 -0
  22. data/lib/rambling/trie/serializers/yaml.rb +10 -16
  23. data/lib/rambling/trie/serializers/zip.rb +9 -5
  24. data/lib/rambling/trie/serializers.rb +1 -1
  25. data/lib/rambling/trie/stringifyable.rb +1 -1
  26. data/lib/rambling/trie/version.rb +1 -1
  27. data/lib/rambling/trie.rb +19 -22
  28. data/rambling-trie.gemspec +9 -5
  29. data/spec/integration/rambling/trie_spec.rb +49 -20
  30. data/spec/lib/rambling/trie/comparable_spec.rb +29 -39
  31. data/spec/lib/rambling/trie/compressor_spec.rb +17 -14
  32. data/spec/lib/rambling/trie/configuration/properties_spec.rb +25 -7
  33. data/spec/lib/rambling/trie/configuration/provider_collection_spec.rb +44 -16
  34. data/spec/lib/rambling/trie/container_spec.rb +202 -327
  35. data/spec/lib/rambling/trie/enumerable_spec.rb +18 -10
  36. data/spec/lib/rambling/trie/inspectable_spec.rb +9 -3
  37. data/spec/lib/rambling/trie/nodes/compressed_spec.rb +6 -0
  38. data/spec/lib/rambling/trie/nodes/node_spec.rb +1 -1
  39. data/spec/lib/rambling/trie/nodes/raw_spec.rb +32 -27
  40. data/spec/lib/rambling/trie/readers/plain_text_spec.rb +11 -1
  41. data/spec/lib/rambling/trie/readers/reader_spec.rb +14 -0
  42. data/spec/lib/rambling/trie/serializers/file_spec.rb +2 -4
  43. data/spec/lib/rambling/trie/serializers/marshal_spec.rb +2 -4
  44. data/spec/lib/rambling/trie/serializers/serializer_spec.rb +21 -0
  45. data/spec/lib/rambling/trie/serializers/yaml_spec.rb +2 -4
  46. data/spec/lib/rambling/trie/serializers/zip_spec.rb +24 -16
  47. data/spec/lib/rambling/trie/stringifyable_spec.rb +17 -13
  48. data/spec/lib/rambling/trie_spec.rb +107 -45
  49. data/spec/spec_helper.rb +16 -9
  50. data/spec/support/shared_examples/a_compressible_trie.rb +9 -3
  51. data/spec/support/shared_examples/a_container_partial_word.rb +17 -0
  52. data/spec/support/shared_examples/a_container_scan.rb +14 -0
  53. data/spec/support/shared_examples/a_container_word.rb +43 -0
  54. data/spec/support/shared_examples/a_container_words_within.rb +44 -0
  55. data/spec/support/shared_examples/a_serializable_trie.rb +5 -9
  56. data/spec/support/shared_examples/a_serializer.rb +37 -14
  57. data/spec/support/shared_examples/a_trie_data_structure.rb +24 -10
  58. data/spec/support/shared_examples/a_trie_node.rb +22 -14
  59. data/spec/support/shared_examples/a_trie_node_implementation.rb +40 -43
  60. metadata +25 -9
@@ -6,32 +6,60 @@ require 'zip'
6
6
  describe Rambling::Trie do
7
7
  let(:assets_path) { File.join ::SPEC_ROOT, 'assets' }
8
8
 
9
+ describe '::VERSION' do
10
+ let(:root_path) { File.join ::SPEC_ROOT, '..' }
11
+ let(:readme_path) { File.join root_path, 'README.md' }
12
+ let(:readme) { File.read readme_path }
13
+ let(:changelog_path) { File.join root_path, 'CHANGELOG.md' }
14
+ let(:changelog) { File.read changelog_path }
15
+
16
+ let(:changelog_versions) do
17
+ matches = []
18
+ changelog.scan %r{^## (\d+\.\d+\.\d+)} do |match|
19
+ matches << match[0]
20
+ end
21
+ matches
22
+ end
23
+
24
+ it 'matches with the version in the README badge' do
25
+ match = %r{\?version=(?<version>.*)$}.match readme
26
+ expect(match['version']).to eq Rambling::Trie::VERSION
27
+ end
28
+
29
+ it 'is the version before the one at the top of the CHANGELOG' do
30
+ changelog_version = Gem::Version.new changelog_versions.first
31
+ lib_version = Gem::Version.new "#{Rambling::Trie::VERSION}.0"
32
+ expect(changelog_version).to eq lib_version.bump
33
+ end
34
+
35
+ it 'is included in the CHANGELOG diffs' do
36
+ changelog_versions.shift
37
+ expect(changelog_versions.first).to eq Rambling::Trie::VERSION
38
+ end
39
+ end
40
+
9
41
  context 'when providing words directly' do
10
42
  it_behaves_like 'a compressible trie' do
11
- let(:trie) { Rambling::Trie.create }
43
+ let(:trie) { described_class.create }
12
44
  let(:words) { %w(a couple of words for our full trie integration test) }
13
45
 
14
- before do
15
- trie.concat words
16
- end
46
+ before { trie.concat words }
17
47
  end
18
48
  end
19
49
 
20
50
  context 'when provided with words with unicode characters' do
21
51
  it_behaves_like 'a compressible trie' do
22
- let(:trie) { Rambling::Trie.create }
23
- let(:words) do
52
+ let(:trie) { described_class.create }
53
+ let :words do
24
54
  %w(poquísimas palabras para nuestra prueba de integración completa 🙃)
25
55
  end
26
56
 
27
- before do
28
- trie.concat words
29
- end
57
+ before { trie.concat words }
30
58
  end
31
59
  end
32
60
 
33
61
  context 'when provided with a filepath' do
34
- let(:trie) { Rambling::Trie.create filepath }
62
+ let(:trie) { described_class.create filepath }
35
63
  let(:words) { File.readlines(filepath).map(&:chomp) }
36
64
 
37
65
  context 'with english words' do
@@ -53,34 +81,35 @@ describe Rambling::Trie do
53
81
 
54
82
  context 'when serialized with Ruby marshal format (default)' do
55
83
  it_behaves_like 'a serializable trie' do
56
- let(:trie_to_serialize) { Rambling::Trie.create words_filepath }
57
- let(:format) { :marshal }
84
+ let(:trie_to_serialize) { described_class.create words_filepath }
85
+ let(:file_format) { :marshal }
58
86
  end
59
87
  end
60
88
 
61
89
  context 'when serialized with YAML' do
62
90
  it_behaves_like 'a serializable trie' do
63
- let(:trie_to_serialize) { Rambling::Trie.create words_filepath }
64
- let(:format) { :yml }
91
+ let(:trie_to_serialize) { described_class.create words_filepath }
92
+ let(:file_format) { :yml }
65
93
  end
66
94
  end
67
95
 
68
96
  context 'when serialized with zipped Ruby marshal format' do
97
+ let!(:original_on_exists_proc) { ::Zip.on_exists_proc }
98
+ let!(:original_continue_on_exists_proc) { ::Zip.continue_on_exists_proc }
99
+
69
100
  before do
70
- @original_on_exists_proc = ::Zip.on_exists_proc
71
- @original_continue_on_exists_proc = ::Zip.continue_on_exists_proc
72
101
  ::Zip.on_exists_proc = true
73
102
  ::Zip.continue_on_exists_proc = true
74
103
  end
75
104
 
76
105
  after do
77
- ::Zip.on_exists_proc = @original_on_exists_proc
78
- ::Zip.continue_on_exists_proc = @original_continue_on_exists_proc
106
+ ::Zip.on_exists_proc = original_on_exists_proc
107
+ ::Zip.continue_on_exists_proc = original_continue_on_exists_proc
79
108
  end
80
109
 
81
110
  it_behaves_like 'a serializable trie' do
82
- let(:trie_to_serialize) { Rambling::Trie.create words_filepath }
83
- let(:format) { 'marshal.zip' }
111
+ let(:trie_to_serialize) { described_class.create words_filepath }
112
+ let(:file_format) { 'marshal.zip' }
84
113
  end
85
114
  end
86
115
  end
@@ -4,93 +4,83 @@ require 'spec_helper'
4
4
 
5
5
  describe Rambling::Trie::Comparable do
6
6
  describe '#==' do
7
- let(:node_1) { Rambling::Trie::Nodes::Raw.new }
8
- let(:node_2) { Rambling::Trie::Nodes::Raw.new }
7
+ let(:node_one) { Rambling::Trie::Nodes::Raw.new }
8
+ let(:node_two) { Rambling::Trie::Nodes::Raw.new }
9
9
 
10
10
  context 'when the nodes do not have the same letter' do
11
11
  before do
12
- node_1.letter = :a
13
- node_2.letter = :b
12
+ node_one.letter = :a
13
+ node_two.letter = :b
14
14
  end
15
15
 
16
16
  it 'returns false' do
17
- expect(node_1).not_to eq node_2
17
+ expect(node_one).not_to eq node_two
18
18
  end
19
19
  end
20
20
 
21
- context 'when the nodes have the same letter and no children' do
21
+ context 'when nodes have same letter, not terminal and no children' do
22
22
  before do
23
- node_1.letter = :a
24
- node_2.letter = :a
23
+ node_one.letter = :a
24
+ node_two.letter = :a
25
25
  end
26
26
 
27
27
  it 'returns true' do
28
- expect(node_1).to eq node_2
28
+ expect(node_one).to eq node_two
29
29
  end
30
30
  end
31
31
 
32
32
  context 'when the nodes have the same letter and are terminal' do
33
33
  before do
34
- node_1.letter = :a
35
- node_1.terminal!
34
+ node_one.letter = :a
35
+ node_one.terminal!
36
36
 
37
- node_2.letter = :a
38
- node_2.terminal!
37
+ node_two.letter = :a
38
+ node_two.terminal!
39
39
  end
40
40
 
41
41
  it 'returns true' do
42
- expect(node_1).to eq node_2
43
- end
44
- end
45
-
46
- context 'when the nodes have the same letter and are not terminal' do
47
- before do
48
- node_1.letter = :a
49
- node_2.letter = :a
50
- end
51
-
52
- it 'returns true' do
53
- expect(node_1).to eq node_2
42
+ expect(node_one).to eq node_two
54
43
  end
55
44
  end
56
45
 
57
46
  context 'when the nodes have the same letter but are not both terminal' do
58
47
  before do
59
- node_1.letter = :a
60
- node_1.terminal!
48
+ node_one.letter = :a
49
+ node_one.terminal!
61
50
 
62
- node_2.letter = :a
51
+ node_two.letter = :a
63
52
  end
53
+
64
54
  it 'returns false' do
65
- expect(node_1).not_to eq node_2
55
+ expect(node_one).not_to eq node_two
66
56
  end
67
57
  end
68
58
 
69
59
  context 'when the nodes have the same letter and the same children' do
70
60
  before do
71
- node_1.letter = :t
72
- add_words node_1, %w(hese hree hings)
61
+ node_one.letter = :t
62
+ add_words node_one, %w(hese hree hings)
73
63
 
74
- node_2.letter = :t
75
- add_words node_2, %w(hese hree hings)
64
+ node_two.letter = :t
65
+ add_words node_two, %w(hese hree hings)
76
66
  end
77
67
 
78
68
  it 'returns true' do
79
- expect(node_1).to eq node_2
69
+ expect(node_one).to eq node_two
80
70
  end
81
71
  end
82
72
 
83
73
  context 'when the nodes have the same letter but different children' do
84
74
  before do
85
- node_1.letter = :t
86
- add_words node_1, %w(hese wo)
75
+ node_one.letter = :t
76
+ add_words node_one, %w(hese wo)
87
77
 
88
- node_2.letter = :t
89
- add_words node_2, %w(hese hree hings)
78
+ node_two.letter = :t
79
+ add_words node_two, %w(hese hree hings)
90
80
  end
91
81
 
92
82
  it 'returns false' do
93
- expect(node_1).not_to eq node_2
83
+ expect(node_one).not_to eq node_two
94
84
  end
95
85
  end
96
86
  end
@@ -3,7 +3,7 @@
3
3
  require 'spec_helper'
4
4
 
5
5
  describe Rambling::Trie::Compressor do
6
- let(:compressor) { Rambling::Trie::Compressor.new }
6
+ let(:compressor) { described_class.new }
7
7
 
8
8
  describe '#compress' do
9
9
  let(:node) { Rambling::Trie::Nodes::Raw.new }
@@ -16,9 +16,7 @@ describe Rambling::Trie::Compressor do
16
16
  end
17
17
 
18
18
  context 'with at least one word' do
19
- before do
20
- add_words node, %w(all the words)
21
- end
19
+ before { add_words node, %w(all the words) }
22
20
 
23
21
  it 'keeps the node letter nil' do
24
22
  compressed = compressor.compress node
@@ -28,25 +26,25 @@ describe Rambling::Trie::Compressor do
28
26
  end
29
27
 
30
28
  context 'with a single word' do
31
- before do
32
- add_word node, 'all'
33
- end
29
+ before { add_word node, 'all' }
34
30
 
31
+ # rubocop:disable RSpec/ExampleLength, RSpec/MultipleExpectations
35
32
  it 'compresses into a single node without children' do
36
33
  compressed = compressor.compress node
34
+ compressed_node_a = compressed[:a]
37
35
 
38
- expect(compressed[:a].letter).to eq :all
39
- expect(compressed[:a].children.size).to eq 0
40
- expect(compressed[:a]).to be_terminal
41
- expect(compressed[:a]).to be_compressed
36
+ expect(compressed_node_a.letter).to eq :all
37
+ expect(compressed_node_a.children.size).to eq 0
38
+ expect(compressed_node_a).to be_terminal
39
+ expect(compressed_node_a).to be_compressed
42
40
  end
41
+ # rubocop:enable RSpec/ExampleLength, RSpec/MultipleExpectations
43
42
  end
44
43
 
45
44
  context 'with two words' do
46
- before do
47
- add_words node, %w(all ask)
48
- end
45
+ before { add_words node, %w(all ask) }
49
46
 
47
+ # rubocop:disable RSpec/ExampleLength, RSpec/MultipleExpectations
50
48
  it 'compresses into corresponding three nodes' do
51
49
  compressed = compressor.compress node
52
50
 
@@ -65,8 +63,10 @@ describe Rambling::Trie::Compressor do
65
63
  expect(compressed[:a][:l]).to be_compressed
66
64
  expect(compressed[:a][:s]).to be_compressed
67
65
  end
66
+ # rubocop:enable RSpec/ExampleLength, RSpec/MultipleExpectations
68
67
  end
69
68
 
69
+ # rubocop:disable RSpec/ExampleLength, RSpec/MultipleExpectations
70
70
  it 'reassigns the parent nodes correctly' do
71
71
  add_words node, %w(repay rest repaint)
72
72
  compressed = compressor.compress node
@@ -91,7 +91,9 @@ describe Rambling::Trie::Compressor do
91
91
  expect(compressed[:r][:p][:i].parent).to eq compressed[:r][:p]
92
92
  expect(compressed[:r][:p][:i].children.size).to eq 0
93
93
  end
94
+ # rubocop:enable RSpec/ExampleLength, RSpec/MultipleExpectations
94
95
 
96
+ # rubocop:disable RSpec/ExampleLength, RSpec/MultipleExpectations
95
97
  it 'does not compress terminal nodes' do
96
98
  add_words node, %w(you your yours)
97
99
  compressed = compressor.compress node
@@ -104,5 +106,6 @@ describe Rambling::Trie::Compressor do
104
106
  expect(compressed[:y][:r][:s].letter).to eq :s
105
107
  expect(compressed[:y][:r][:s]).to be_compressed
106
108
  end
109
+ # rubocop:enable RSpec/ExampleLength, RSpec/MultipleExpectations
107
110
  end
108
111
  end
@@ -3,13 +3,17 @@
3
3
  require 'spec_helper'
4
4
 
5
5
  describe Rambling::Trie::Configuration::Properties do
6
- let(:properties) { Rambling::Trie::Configuration::Properties.new }
6
+ let(:properties) { described_class.new }
7
7
 
8
8
  describe '.new' do
9
- it 'configures the serializers' do
9
+ it 'configures the serializer formats' do
10
10
  serializers = properties.serializers
11
-
12
11
  expect(serializers.formats).to match_array %i(marshal yaml yml zip)
12
+ end
13
+
14
+ # rubocop:disable RSpec/ExampleLength
15
+ it 'configures the serializer providers' do
16
+ serializers = properties.serializers
13
17
  expect(serializers.providers.to_a).to match_array [
14
18
  [:marshal, Rambling::Trie::Serializers::Marshal],
15
19
  [:yaml, Rambling::Trie::Serializers::Yaml],
@@ -17,11 +21,15 @@ describe Rambling::Trie::Configuration::Properties do
17
21
  [:zip, Rambling::Trie::Serializers::Zip],
18
22
  ]
19
23
  end
24
+ # rubocop:enable RSpec/ExampleLength
20
25
 
21
- it 'configures the readers' do
26
+ it 'configures the reader formats' do
22
27
  readers = properties.readers
23
-
24
28
  expect(readers.formats).to match_array %i(txt)
29
+ end
30
+
31
+ it 'configures the reader providers' do
32
+ readers = properties.readers
25
33
  expect(readers.providers.to_a).to match_array [
26
34
  [:txt, Rambling::Trie::Readers::PlainText],
27
35
  ]
@@ -44,14 +52,24 @@ describe Rambling::Trie::Configuration::Properties do
44
52
  properties.readers.add :test, 'test'
45
53
  end
46
54
 
47
- it 'resets the serializers and readers to initial values' do
55
+ # rubocop:disable RSpec/MultipleExpectations
56
+ it 'resets the serializers to initial values' do
48
57
  expect(properties.serializers.formats).to include :test
49
- expect(properties.readers.formats).to include :test
50
58
 
51
59
  properties.reset
52
60
 
53
61
  expect(properties.serializers.formats).not_to include :test
62
+ end
63
+ # rubocop:enable RSpec/MultipleExpectations
64
+
65
+ # rubocop:disable RSpec/MultipleExpectations
66
+ it 'resets the readers to initial values' do
67
+ expect(properties.readers.formats).to include :test
68
+
69
+ properties.reset
70
+
54
71
  expect(properties.readers.formats).not_to include :test
55
72
  end
73
+ # rubocop:enable RSpec/MultipleExpectations
56
74
  end
57
75
  end
@@ -4,15 +4,19 @@ require 'spec_helper'
4
4
 
5
5
  describe Rambling::Trie::Configuration::ProviderCollection do
6
6
  let(:configured_default) { nil }
7
- let(:configured_providers) do
7
+ let :configured_providers do
8
8
  { one: first_provider, two: second_provider }
9
9
  end
10
10
 
11
- let(:first_provider) { double :first_provider }
12
- let(:second_provider) { double :second_provider }
11
+ let :first_provider do
12
+ instance_double 'Rambling::Trie::Serializers::Marshal', :first_provider
13
+ end
14
+ let :second_provider do
15
+ instance_double 'Rambling::Trie::Serializers::Marshal', :second_provider
16
+ end
13
17
 
14
- let(:provider_collection) do
15
- Rambling::Trie::Configuration::ProviderCollection.new(
18
+ let :provider_collection do
19
+ described_class.new(
16
20
  :provider,
17
21
  configured_providers,
18
22
  configured_default,
@@ -46,25 +50,31 @@ describe Rambling::Trie::Configuration::ProviderCollection do
46
50
  let(:providers) { provider_collection.providers }
47
51
 
48
52
  before do
49
- allow(providers) .to receive_messages(
53
+ allow(providers).to receive_messages(
50
54
  :[] => 'value',
51
55
  keys: %i(a b),
52
56
  )
53
57
  end
54
58
 
59
+ # rubocop:disable RSpec/MultipleExpectations
55
60
  it 'delegates `#[]` to providers' do
56
61
  expect(provider_collection[:key]).to eq 'value'
57
62
  expect(providers).to have_received(:[]).with :key
58
63
  end
64
+ # rubocop:enable RSpec/MultipleExpectations
59
65
 
66
+ # rubocop:disable RSpec/MultipleExpectations
60
67
  it 'aliases `#formats` to `providers#keys`' do
61
68
  expect(provider_collection.formats).to eq %i(a b)
62
69
  expect(providers).to have_received :keys
63
70
  end
71
+ # rubocop:enable RSpec/MultipleExpectations
64
72
  end
65
73
 
66
74
  describe '#add' do
67
- let(:provider) { double :provider }
75
+ let :provider do
76
+ instance_double 'Rambling::Trie::Serializers::Marshal', :provider
77
+ end
68
78
 
69
79
  before do
70
80
  provider_collection.add :three, provider
@@ -76,7 +86,9 @@ describe Rambling::Trie::Configuration::ProviderCollection do
76
86
  end
77
87
 
78
88
  describe '#default=' do
79
- let(:other_provider) { double :other_provider }
89
+ let :other_provider do
90
+ instance_double 'Rambling::Trie::Serializers::Marshal', :other_provider
91
+ end
80
92
 
81
93
  context 'when the given value is in the providers list' do
82
94
  it 'changes the default provider' do
@@ -106,43 +118,59 @@ describe Rambling::Trie::Configuration::ProviderCollection do
106
118
  expect(provider_collection.default).to be_nil
107
119
  end
108
120
 
121
+ # rubocop:disable RSpec/MultipleExpectations
109
122
  it 'raises an ArgumentError for any other provider' do
110
123
  expect do
111
124
  provider_collection.default = other_provider
112
125
  end.to raise_error ArgumentError
113
126
  expect(provider_collection.default).to be_nil
114
127
  end
128
+ # rubocop:enable RSpec/MultipleExpectations
115
129
  end
116
130
  end
117
131
 
118
132
  describe '#resolve' do
119
133
  context 'when the file extension is one of the providers' do
120
- it 'returns the corresponding provider' do
121
- expect(provider_collection.resolve 'hola.one').to eq first_provider
122
- expect(provider_collection.resolve 'hola.two').to eq second_provider
134
+ [
135
+ ['hola.one', :first_provider],
136
+ ['hola.two', :second_provider],
137
+ ].each do |test_params|
138
+ filepath, provider = test_params
139
+
140
+ it 'returns the corresponding provider' do
141
+ provider_instance = public_send provider
142
+ expect(provider_collection.resolve filepath).to eq provider_instance
143
+ end
123
144
  end
124
145
  end
125
146
 
126
147
  context 'when the file extension is not one of the providers' do
127
- it 'returns the default provider' do
128
- expect(provider_collection.resolve 'hola.unknown').to eq first_provider
129
- expect(provider_collection.resolve 'hola').to eq first_provider
148
+ %w(hola.unknown hola).each do |filepath|
149
+ it 'returns the default provider' do
150
+ expect(provider_collection.resolve filepath).to eq first_provider
151
+ end
130
152
  end
131
153
  end
132
154
  end
133
155
 
134
156
  describe '#reset' do
135
157
  let(:configured_default) { second_provider }
136
- let(:provider) { double :provider }
158
+ let :provider do
159
+ instance_double 'Rambling::Trie::Serializers::Marshal', :provider
160
+ end
137
161
 
138
162
  before do
139
163
  provider_collection.add :three, provider
140
164
  provider_collection.default = provider
141
165
  end
142
166
 
143
- it 'resets to back to the initially configured values' do
167
+ it 'resets to back to the initially configured values (:three => nil)' do
144
168
  provider_collection.reset
145
169
  expect(provider_collection[:three]).to be_nil
170
+ end
171
+
172
+ it 'resets to back to the initially configured default' do
173
+ provider_collection.reset
146
174
  expect(provider_collection.default).to eq second_provider
147
175
  end
148
176
  end