adapter 0.5 → 0.5.1
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.
- data/lib/adapter/spec/an_adapter.rb +120 -0
- data/{spec/support → lib/adapter/spec}/json_adapter.rb +1 -1
- data/lib/adapter/spec/marshal_adapter.rb +10 -0
- data/lib/adapter/spec/types.rb +5 -0
- data/lib/adapter/version.rb +1 -1
- data/spec/helper.rb +5 -5
- data/spec/support/module_helpers.rb +0 -8
- metadata +11 -5
- data/spec/support/an_adapter.rb +0 -162
- data/spec/support/marshal_adapter.rb +0 -12
@@ -0,0 +1,120 @@
|
|
1
|
+
shared_examples_for "an adapter" do
|
2
|
+
it "can read the client" do
|
3
|
+
adapter.client.should == client
|
4
|
+
end
|
5
|
+
|
6
|
+
Adapter::Spec::Types.each do |type, (key, key2)|
|
7
|
+
it "reads from keys that are #{type}s like a Hash" do
|
8
|
+
adapter[key].should == nil
|
9
|
+
end
|
10
|
+
|
11
|
+
it "writes String values to keys that are #{type}s like a Hash" do
|
12
|
+
adapter[key] = "value"
|
13
|
+
adapter[key].should == "value"
|
14
|
+
end
|
15
|
+
|
16
|
+
it "guarantees that a different String value is retrieved from the #{type} key" do
|
17
|
+
value = "value"
|
18
|
+
adapter[key] = value
|
19
|
+
adapter[key].should_not be_equal(value)
|
20
|
+
end
|
21
|
+
|
22
|
+
it "guarantees that a different Object value is retrieved from the #{type} key" do
|
23
|
+
value = {:foo => :bar}
|
24
|
+
adapter[key] = value
|
25
|
+
adapter[key].should_not be_equal(:foo => :bar)
|
26
|
+
end
|
27
|
+
|
28
|
+
it "returns false from key? if a #{type} key is not available" do
|
29
|
+
adapter.key?(key).should be_false
|
30
|
+
end
|
31
|
+
|
32
|
+
it "returns true from key? if a #{type} key is available" do
|
33
|
+
adapter[key] = "value"
|
34
|
+
adapter.key?(key).should be_true
|
35
|
+
end
|
36
|
+
|
37
|
+
it "removes and return an element with a #{type} key from the backing store via delete if it exists" do
|
38
|
+
adapter[key] = "value"
|
39
|
+
adapter.delete(key).should == "value"
|
40
|
+
adapter.key?(key).should be_false
|
41
|
+
end
|
42
|
+
|
43
|
+
it "returns nil from delete if an element for a #{type} key does not exist" do
|
44
|
+
adapter.delete(key).should be_nil
|
45
|
+
end
|
46
|
+
|
47
|
+
it "removes all #{type} keys from the store with clear" do
|
48
|
+
adapter[key] = "value"
|
49
|
+
adapter[key2] = "value2"
|
50
|
+
adapter.clear
|
51
|
+
adapter.key?(key).should_not be_true
|
52
|
+
adapter.key?(key2).should_not be_true
|
53
|
+
end
|
54
|
+
|
55
|
+
it "fetches a #{type} key with a default value with fetch, if the key is not available" do
|
56
|
+
adapter.fetch(key, "value").should == "value"
|
57
|
+
end
|
58
|
+
|
59
|
+
it "fetches a #{type} key with a block with fetch, if the key is not available" do
|
60
|
+
adapter.fetch(key) { |k| "value" }.should == "value"
|
61
|
+
end
|
62
|
+
|
63
|
+
it "does not run the block if the #{type} key is available" do
|
64
|
+
adapter[key] = "value"
|
65
|
+
unaltered = "unaltered"
|
66
|
+
adapter.fetch(key) { unaltered = "altered" }
|
67
|
+
unaltered.should == "unaltered"
|
68
|
+
end
|
69
|
+
|
70
|
+
it "fetches a #{type} key with a default value with fetch, if the key is available" do
|
71
|
+
adapter[key] = "value2"
|
72
|
+
adapter.fetch(key, "value").should == "value2"
|
73
|
+
end
|
74
|
+
|
75
|
+
it "writes #{key} values with #write" do
|
76
|
+
adapter.write(key, "value")
|
77
|
+
adapter[key].should == "value"
|
78
|
+
end
|
79
|
+
end
|
80
|
+
|
81
|
+
it "refuses to #[] from keys that cannot be marshalled" do
|
82
|
+
lambda do
|
83
|
+
adapter[Struct.new(:foo).new(:bar)]
|
84
|
+
end.should raise_error(TypeError)
|
85
|
+
end
|
86
|
+
|
87
|
+
it "refuses to fetch from keys that cannot be marshalled" do
|
88
|
+
lambda do
|
89
|
+
adapter.fetch(Struct.new(:foo).new(:bar), true)
|
90
|
+
end.should raise_error(TypeError)
|
91
|
+
end
|
92
|
+
|
93
|
+
it "refuses to #[]= to keys that cannot be marshalled" do
|
94
|
+
lambda do
|
95
|
+
adapter[Struct.new(:foo).new(:bar)] = "value"
|
96
|
+
end.should raise_error(TypeError)
|
97
|
+
end
|
98
|
+
|
99
|
+
it "refuses to store to keys that cannot be marshalled" do
|
100
|
+
lambda do
|
101
|
+
adapter.write Struct.new(:foo).new(:bar), "value"
|
102
|
+
end.should raise_error(TypeError)
|
103
|
+
end
|
104
|
+
|
105
|
+
it "refuses to check for key? if the key cannot be marshalled" do
|
106
|
+
lambda do
|
107
|
+
adapter.key? Struct.new(:foo).new(:bar)
|
108
|
+
end.should raise_error(TypeError)
|
109
|
+
end
|
110
|
+
|
111
|
+
it "refuses to delete a key if the key cannot be marshalled" do
|
112
|
+
lambda do
|
113
|
+
adapter.delete Struct.new(:foo).new(:bar)
|
114
|
+
end.should raise_error(TypeError)
|
115
|
+
end
|
116
|
+
|
117
|
+
it "specifies that it is writable via frozen?" do
|
118
|
+
adapter.should_not be_frozen
|
119
|
+
end
|
120
|
+
end
|
@@ -1,7 +1,7 @@
|
|
1
1
|
shared_examples_for "a json adapter" do
|
2
2
|
it_should_behave_like 'an adapter'
|
3
3
|
|
4
|
-
|
4
|
+
Adapter::Spec::Types.each do |type, (key, key2)|
|
5
5
|
it "writes Object values to keys that are #{type}s like a Hash" do
|
6
6
|
adapter[key] = {:foo => :bar}
|
7
7
|
adapter[key].should == {'foo' => 'bar'}
|
@@ -0,0 +1,10 @@
|
|
1
|
+
shared_examples_for "a marshaled adapter" do
|
2
|
+
it_should_behave_like 'an adapter'
|
3
|
+
|
4
|
+
Adapter::Spec::Types.each do |type, (key, key2)|
|
5
|
+
it "writes Object values to keys that are #{type}s like a Hash" do
|
6
|
+
adapter[key] = {:foo => :bar}
|
7
|
+
adapter[key].should == {:foo => :bar}
|
8
|
+
end
|
9
|
+
end
|
10
|
+
end
|
data/lib/adapter/version.rb
CHANGED
data/spec/helper.rb
CHANGED
@@ -13,9 +13,11 @@ lib_path = root_path.join('lib')
|
|
13
13
|
log_path = root_path.join('log')
|
14
14
|
log_path.mkpath
|
15
15
|
|
16
|
-
require '
|
17
|
-
require '
|
18
|
-
require '
|
16
|
+
require 'adapter/spec/an_adapter'
|
17
|
+
require 'adapter/spec/marshal_adapter'
|
18
|
+
require 'adapter/spec/json_adapter'
|
19
|
+
require 'adapter/spec/types'
|
20
|
+
|
19
21
|
require 'support/module_helpers'
|
20
22
|
|
21
23
|
logger = Logger.new(log_path.join('test.log'))
|
@@ -24,5 +26,3 @@ LogBuddy.init(:logger => logger)
|
|
24
26
|
Rspec.configure do |c|
|
25
27
|
c.include(ModuleHelpers)
|
26
28
|
end
|
27
|
-
|
28
|
-
AdapterTestTypes = {"String" => ["key", "key2"]}
|
metadata
CHANGED
@@ -1,15 +1,18 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: adapter
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 9
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 5
|
9
|
-
|
9
|
+
- 1
|
10
|
+
version: 0.5.1
|
10
11
|
platform: ruby
|
11
12
|
authors:
|
12
13
|
- John Nunemaker
|
14
|
+
- Geoffrey Dagley
|
15
|
+
- Brandon Keepers
|
13
16
|
autorequire:
|
14
17
|
bindir: bin
|
15
18
|
cert_chain: []
|
@@ -21,6 +24,8 @@ dependencies: []
|
|
21
24
|
description:
|
22
25
|
email:
|
23
26
|
- nunemaker@gmail.com
|
27
|
+
- gdagley@gmail.com
|
28
|
+
- brandon@opensoul.org
|
24
29
|
executables: []
|
25
30
|
|
26
31
|
extensions: []
|
@@ -32,6 +37,10 @@ files:
|
|
32
37
|
- lib/adapter/defaults.rb
|
33
38
|
- lib/adapter/exceptions.rb
|
34
39
|
- lib/adapter/memory.rb
|
40
|
+
- lib/adapter/spec/an_adapter.rb
|
41
|
+
- lib/adapter/spec/json_adapter.rb
|
42
|
+
- lib/adapter/spec/marshal_adapter.rb
|
43
|
+
- lib/adapter/spec/types.rb
|
35
44
|
- lib/adapter/version.rb
|
36
45
|
- lib/adapter.rb
|
37
46
|
- spec/adapter/defaults_spec.rb
|
@@ -39,9 +48,6 @@ files:
|
|
39
48
|
- spec/adapter_spec.rb
|
40
49
|
- spec/helper.rb
|
41
50
|
- spec/spec.opts
|
42
|
-
- spec/support/an_adapter.rb
|
43
|
-
- spec/support/json_adapter.rb
|
44
|
-
- spec/support/marshal_adapter.rb
|
45
51
|
- spec/support/module_helpers.rb
|
46
52
|
- LICENSE
|
47
53
|
- Rakefile
|
data/spec/support/an_adapter.rb
DELETED
@@ -1,162 +0,0 @@
|
|
1
|
-
shared_examples_for "an adapter" do
|
2
|
-
it "can read the client" do
|
3
|
-
adapter.client.should == client
|
4
|
-
end
|
5
|
-
|
6
|
-
AdapterTestTypes.each do |type, (key, key2)|
|
7
|
-
it "reads from keys that are #{type}s like a Hash" do
|
8
|
-
handle_failed_connections do
|
9
|
-
adapter[key].should == nil
|
10
|
-
end
|
11
|
-
end
|
12
|
-
|
13
|
-
it "writes String values to keys that are #{type}s like a Hash" do
|
14
|
-
handle_failed_connections do
|
15
|
-
adapter[key] = "value"
|
16
|
-
adapter[key].should == "value"
|
17
|
-
end
|
18
|
-
end
|
19
|
-
|
20
|
-
it "guarantees that a different String value is retrieved from the #{type} key" do
|
21
|
-
handle_failed_connections do
|
22
|
-
value = "value"
|
23
|
-
adapter[key] = value
|
24
|
-
adapter[key].should_not be_equal(value)
|
25
|
-
end
|
26
|
-
end
|
27
|
-
|
28
|
-
it "guarantees that a different Object value is retrieved from the #{type} key" do
|
29
|
-
handle_failed_connections do
|
30
|
-
value = {:foo => :bar}
|
31
|
-
adapter[key] = value
|
32
|
-
adapter[key].should_not be_equal(:foo => :bar)
|
33
|
-
end
|
34
|
-
end
|
35
|
-
|
36
|
-
it "returns false from key? if a #{type} key is not available" do
|
37
|
-
handle_failed_connections do
|
38
|
-
adapter.key?(key).should be_false
|
39
|
-
end
|
40
|
-
end
|
41
|
-
|
42
|
-
it "returns true from key? if a #{type} key is available" do
|
43
|
-
handle_failed_connections do
|
44
|
-
adapter[key] = "value"
|
45
|
-
adapter.key?(key).should be_true
|
46
|
-
end
|
47
|
-
end
|
48
|
-
|
49
|
-
it "removes and return an element with a #{type} key from the backing store via delete if it exists" do
|
50
|
-
handle_failed_connections do
|
51
|
-
adapter[key] = "value"
|
52
|
-
adapter.delete(key).should == "value"
|
53
|
-
adapter.key?(key).should be_false
|
54
|
-
end
|
55
|
-
end
|
56
|
-
|
57
|
-
it "returns nil from delete if an element for a #{type} key does not exist" do
|
58
|
-
handle_failed_connections do
|
59
|
-
adapter.delete(key).should be_nil
|
60
|
-
end
|
61
|
-
end
|
62
|
-
|
63
|
-
it "removes all #{type} keys from the store with clear" do
|
64
|
-
handle_failed_connections do
|
65
|
-
adapter[key] = "value"
|
66
|
-
adapter[key2] = "value2"
|
67
|
-
adapter.clear
|
68
|
-
adapter.key?(key).should_not be_true
|
69
|
-
adapter.key?(key2).should_not be_true
|
70
|
-
end
|
71
|
-
end
|
72
|
-
|
73
|
-
it "fetches a #{type} key with a default value with fetch, if the key is not available" do
|
74
|
-
handle_failed_connections do
|
75
|
-
adapter.fetch(key, "value").should == "value"
|
76
|
-
end
|
77
|
-
end
|
78
|
-
|
79
|
-
it "fetches a #{type} key with a block with fetch, if the key is not available" do
|
80
|
-
handle_failed_connections do
|
81
|
-
adapter.fetch(key) { |k| "value" }.should == "value"
|
82
|
-
end
|
83
|
-
end
|
84
|
-
|
85
|
-
it "does not run the block if the #{type} key is available" do
|
86
|
-
handle_failed_connections do
|
87
|
-
adapter[key] = "value"
|
88
|
-
unaltered = "unaltered"
|
89
|
-
adapter.fetch(key) { unaltered = "altered" }
|
90
|
-
unaltered.should == "unaltered"
|
91
|
-
end
|
92
|
-
end
|
93
|
-
|
94
|
-
it "fetches a #{type} key with a default value with fetch, if the key is available" do
|
95
|
-
handle_failed_connections do
|
96
|
-
adapter[key] = "value2"
|
97
|
-
adapter.fetch(key, "value").should == "value2"
|
98
|
-
end
|
99
|
-
end
|
100
|
-
|
101
|
-
it "writes #{key} values with #write" do
|
102
|
-
handle_failed_connections do
|
103
|
-
adapter.write(key, "value")
|
104
|
-
adapter[key].should == "value"
|
105
|
-
end
|
106
|
-
end
|
107
|
-
end
|
108
|
-
|
109
|
-
it "refuses to #[] from keys that cannot be marshalled" do
|
110
|
-
handle_failed_connections do
|
111
|
-
lambda do
|
112
|
-
adapter[Struct.new(:foo).new(:bar)]
|
113
|
-
end.should raise_error(TypeError)
|
114
|
-
end
|
115
|
-
end
|
116
|
-
|
117
|
-
it "refuses to fetch from keys that cannot be marshalled" do
|
118
|
-
handle_failed_connections do
|
119
|
-
lambda do
|
120
|
-
adapter.fetch(Struct.new(:foo).new(:bar), true)
|
121
|
-
end.should raise_error(TypeError)
|
122
|
-
end
|
123
|
-
end
|
124
|
-
|
125
|
-
it "refuses to #[]= to keys that cannot be marshalled" do
|
126
|
-
handle_failed_connections do
|
127
|
-
lambda do
|
128
|
-
adapter[Struct.new(:foo).new(:bar)] = "value"
|
129
|
-
end.should raise_error(TypeError)
|
130
|
-
end
|
131
|
-
end
|
132
|
-
|
133
|
-
it "refuses to store to keys that cannot be marshalled" do
|
134
|
-
handle_failed_connections do
|
135
|
-
lambda do
|
136
|
-
adapter.write Struct.new(:foo).new(:bar), "value"
|
137
|
-
end.should raise_error(TypeError)
|
138
|
-
end
|
139
|
-
end
|
140
|
-
|
141
|
-
it "refuses to check for key? if the key cannot be marshalled" do
|
142
|
-
handle_failed_connections do
|
143
|
-
lambda do
|
144
|
-
adapter.key? Struct.new(:foo).new(:bar)
|
145
|
-
end.should raise_error(TypeError)
|
146
|
-
end
|
147
|
-
end
|
148
|
-
|
149
|
-
it "refuses to delete a key if the key cannot be marshalled" do
|
150
|
-
handle_failed_connections do
|
151
|
-
lambda do
|
152
|
-
adapter.delete Struct.new(:foo).new(:bar)
|
153
|
-
end.should raise_error(TypeError)
|
154
|
-
end
|
155
|
-
end
|
156
|
-
|
157
|
-
it "specifies that it is writable via frozen?" do
|
158
|
-
handle_failed_connections do
|
159
|
-
adapter.should_not be_frozen
|
160
|
-
end
|
161
|
-
end
|
162
|
-
end
|
@@ -1,12 +0,0 @@
|
|
1
|
-
shared_examples_for "a marshaled adapter" do
|
2
|
-
it_should_behave_like 'an adapter'
|
3
|
-
|
4
|
-
AdapterTestTypes.each do |type, (key, key2)|
|
5
|
-
it "writes Object values to keys that are #{type}s like a Hash" do
|
6
|
-
handle_failed_connections do
|
7
|
-
adapter[key] = {:foo => :bar}
|
8
|
-
adapter[key].should == {:foo => :bar}
|
9
|
-
end
|
10
|
-
end
|
11
|
-
end
|
12
|
-
end
|