excursion 0.0.5 → 0.0.6

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,106 @@
1
+ require 'spec_helper'
2
+ require 'excursion/datastores/active_record'
3
+
4
+ describe 'Excursion::Datastores::ActiveRecord' do
5
+
6
+ def fill_pool
7
+ Excursion::RoutePool.all.each { |m| m.destroy }
8
+ Excursion::Specs::Mocks::SIMPLE_VALUES.each do |key,val|
9
+ Excursion::RoutePool.create key: key, value: val
10
+ end
11
+ end
12
+
13
+ subject do
14
+ fill_pool
15
+ Excursion::Datastores::ActiveRecord.new
16
+ end
17
+
18
+ describe '#read' do
19
+ describe 'key' do
20
+ it 'should be required' do
21
+ expect { subject.read }.to raise_exception
22
+ expect { subject.read('test_key') }.to_not raise_exception
23
+ end
24
+
25
+ it 'should accept a symbol or string' do
26
+ expect { subject.read('test_key') }.to_not raise_exception
27
+ expect { subject.read(:test_key) }.to_not raise_exception
28
+ end
29
+
30
+ it 'should convert symbols to strings' do
31
+ expect(subject.read(:key1)).to eql(subject.read('key1'))
32
+ end
33
+ end
34
+
35
+ context 'when the requested key does not exist' do
36
+ it 'should return nil' do
37
+ subject.read('non_existent_key').should be_nil
38
+ end
39
+ end
40
+
41
+ context 'when the requested key exists' do
42
+ it 'should return the value of the requested key' do
43
+ Excursion::Specs::Mocks::SIMPLE_VALUES.each do |key,val|
44
+ expect(subject.read(key)).to eql(val)
45
+ end
46
+ end
47
+ end
48
+ end
49
+
50
+ describe '#write' do
51
+ describe 'key' do
52
+ it 'should be required' do
53
+ expect { subject.write }.to raise_exception
54
+ end
55
+
56
+ it 'should accept a symbol or string' do
57
+ expect { subject.write('str_key', 'strval') }.to_not raise_exception
58
+ expect { subject.write(:sym_key, 'symval') }.to_not raise_exception
59
+ end
60
+
61
+ it 'should convert symbols to strings' do
62
+ subject.write(:sym_key, 'symval')
63
+ subject.read('sym_key').should == 'symval'
64
+ end
65
+ end
66
+
67
+ describe 'value' do
68
+ it 'should be required' do
69
+ expect { subject.write('test_key') }.to raise_exception(ArgumentError)
70
+ end
71
+ end
72
+
73
+ it 'should add the key to the datastore and set the value' do
74
+ subject.write('test_key', 'testval')
75
+ subject.read('test_key').should == 'testval'
76
+ end
77
+
78
+ it 'should return the value of the added key' do
79
+ subject.write('test_key', 'testval').should == 'testval'
80
+ end
81
+ end
82
+
83
+ context '#delete' do
84
+ describe 'key' do
85
+ it 'should be required' do
86
+ expect { subject.delete }.to raise_exception(ArgumentError)
87
+ end
88
+ end
89
+
90
+ it 'should remove the key from the datastore' do
91
+ subject.read('key1').should_not eql(nil)
92
+ subject.delete('key1')
93
+ subject.read('key1').should be(nil)
94
+ end
95
+
96
+ it 'should return the value of the deleted key if it exists' do
97
+ keyval = subject.read('key1')
98
+ subject.delete('key1').should eql(keyval)
99
+ end
100
+
101
+ it 'should return nil if the deleted key does not exist' do
102
+ subject.delete('non_existent_key').should eql(nil)
103
+ end
104
+ end
105
+
106
+ end
@@ -0,0 +1,158 @@
1
+ require 'spec_helper'
2
+ require 'excursion/datastores/active_record_with_memcache'
3
+
4
+ describe 'Excursion::Datastores::ActiveRecordWithMemcache' do
5
+
6
+ def dalli_client
7
+ @dalli_client ||= Dalli::Client.new dummy_pool, {namespace: 'excursion'}
8
+ end
9
+
10
+ def dummy_pool
11
+ Excursion::Specs::DUMMY_MEMCACHE_SERVER
12
+ end
13
+
14
+ def fill_pool
15
+ Excursion::RoutePool.all.each { |m| m.destroy }
16
+ dalli_client.flush_all
17
+ Excursion::Specs::Mocks::SIMPLE_VALUES.each do |key,val|
18
+ dalli_client.set(key, val)
19
+ Excursion::RoutePool.create key: key, value: val
20
+ end
21
+ end
22
+
23
+ subject do
24
+ fill_pool
25
+ Excursion::Datastores::ActiveRecordWithMemcache.new dummy_pool
26
+ end
27
+
28
+ describe '#read' do
29
+ describe 'key' do
30
+ it 'should be required' do
31
+ expect { subject.read }.to raise_exception
32
+ expect { subject.read('test_key') }.to_not raise_exception
33
+ end
34
+
35
+ it 'should accept a symbol or string' do
36
+ expect { subject.read('test_key') }.to_not raise_exception
37
+ expect { subject.read(:test_key) }.to_not raise_exception
38
+ end
39
+
40
+ it 'should convert symbols to strings' do
41
+ expect(subject.read(:key1)).to eql(subject.read('key1'))
42
+ end
43
+ end
44
+
45
+ context 'when the requested key does not exist' do
46
+ it 'should return nil' do
47
+ subject.read('non_existent_key').should be_nil
48
+ end
49
+ end
50
+
51
+ context 'when the requested key exists' do
52
+ context 'in the cache' do
53
+ it 'should return the value of the requested key' do
54
+ Excursion::Specs::Mocks::SIMPLE_VALUES.each do |key,val|
55
+ expect(dalli_client.get(key)).to eql(val)
56
+ expect(subject.read(key)).to eql(val)
57
+ end
58
+ end
59
+ end
60
+
61
+ context 'in the database' do
62
+ it 'should return the value of the requested key' do
63
+ Excursion::Specs::Mocks::SIMPLE_VALUES.each do |key,val|
64
+ dalli_client.delete(key)
65
+ expect(dalli_client.get(key)).to be_nil
66
+ expect(subject.read(key)).to eql(val)
67
+ end
68
+ end
69
+ end
70
+ end
71
+ end
72
+
73
+ describe '#write' do
74
+ describe 'key' do
75
+ it 'should be required' do
76
+ expect { subject.write }.to raise_exception
77
+ end
78
+
79
+ it 'should accept a symbol or string' do
80
+ expect { subject.write('str_key', 'strval') }.to_not raise_exception
81
+ expect { subject.write(:sym_key, 'symval') }.to_not raise_exception
82
+ end
83
+
84
+ it 'should convert symbols to strings' do
85
+ subject.write(:sym_key, 'symval')
86
+ subject.read('sym_key').should == 'symval'
87
+ end
88
+ end
89
+
90
+ describe 'value' do
91
+ it 'should be required' do
92
+ expect { subject.write('test_key') }.to raise_exception(ArgumentError)
93
+ end
94
+ end
95
+
96
+ it 'should add the key to the datastore and set the value' do
97
+ subject.write('test_key', 'testval')
98
+ subject.read('test_key').should == 'testval'
99
+ end
100
+
101
+ it 'should add the key to the active record table and set the value' do
102
+ subject.write('test_key', 'testval')
103
+ Excursion::RoutePool.find_by(key: 'test_key').value.should eql('testval') if Excursion.rails4?
104
+ Excursion::RoutePool.find_by_key('test_key').value.should eql('testval') if Excursion.rails3?
105
+ end
106
+
107
+ it 'should add the key to the cache and set the value' do
108
+ subject.write('test_key', 'testval')
109
+ dalli_client.get('test_key').should eql('testval')
110
+ end
111
+
112
+ it 'should return the value of the added key' do
113
+ subject.write('test_key', 'testval').should == 'testval'
114
+ end
115
+ end
116
+
117
+ context '#delete' do
118
+ before(:each) do
119
+ fill_pool
120
+ end
121
+
122
+ describe 'key' do
123
+ it 'should be required' do
124
+ expect { subject.delete }.to raise_exception(ArgumentError)
125
+ end
126
+ end
127
+
128
+ it 'should remove the key from the datastore' do
129
+ subject.read('key1').should_not eql(nil)
130
+ subject.delete('key1')
131
+ subject.read('key1').should be(nil)
132
+ end
133
+
134
+ it 'should remove the key from the active record table' do
135
+ Excursion::RoutePool.find_by(key: 'key1').should_not be_nil if Excursion.rails4?
136
+ Excursion::RoutePool.find_by_key('key1').should_not be_nil if Excursion.rails3?
137
+ subject.delete('key1')
138
+ Excursion::RoutePool.find_by(key: 'key1').should be_nil if Excursion.rails4?
139
+ Excursion::RoutePool.find_by_key('key1').should be_nil if Excursion.rails3?
140
+ end
141
+
142
+ it 'should remove the key from the cache if it exists' do
143
+ dalli_client.get('key1').should_not be_nil
144
+ subject.delete('key1')
145
+ dalli_client.get('key1').should be_nil
146
+ end
147
+
148
+ it 'should return the value of the deleted key if it exists' do
149
+ keyval = subject.read('key1')
150
+ subject.delete('key1').should eql(keyval)
151
+ end
152
+
153
+ it 'should return nil if the deleted key does not exist' do
154
+ subject.delete('non_existent_key').should eql(nil)
155
+ end
156
+ end
157
+
158
+ end
@@ -8,6 +8,7 @@ describe 'Excursion::Datastores::File' do
8
8
  end
9
9
 
10
10
  def fill_pool
11
+ FileUtils.mkpath(::File.dirname(Excursion::Specs::DUMMY_POOL_FILE))
11
12
  File.open(dummy_pool, 'w') do |f|
12
13
  f.write(Excursion::Specs::Mocks::SIMPLE_VALUES.to_yaml)
13
14
  end
@@ -9,6 +9,7 @@ describe 'Excursion::Datastores::Memcache' do
9
9
 
10
10
  def fill_pool
11
11
  dc = Dalli::Client.new dummy_pool, {namespace: 'excursion'}
12
+ dc.flush_all
12
13
  Excursion::Specs::Mocks::SIMPLE_VALUES.each do |key,val|
13
14
  dc.set(key,val)
14
15
  end
@@ -0,0 +1,4 @@
1
+ require 'spec_helper'
2
+
3
+ describe 'Excursion::RoutePool' do
4
+ end
data/spec/spec_helper.rb CHANGED
@@ -1,7 +1,9 @@
1
1
  require File.expand_path("../dummy/config/environment", __FILE__)
2
2
  require 'rspec/core'
3
- #require 'rspec/rails'
4
- #require 'rspec/autorun'
3
+
4
+ ActiveRecord::Base.establish_connection :adapter => "sqlite3",
5
+ :database => ":memory:"
6
+ ActiveRecord::Migrator.migrate(File.join(File.dirname(__FILE__), "dummy/db/migrate"))
5
7
 
6
8
  Dir[File.join(File.dirname(__FILE__), "support/**/*.rb")].each { |f| require f }
7
9
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: excursion
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5
4
+ version: 0.0.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mark Rebec
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-06-17 00:00:00.000000000 Z
11
+ date: 2013-06-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - '>='
18
18
  - !ruby/object:Gem::Version
19
- version: 4.0.0.rc2
19
+ version: '0'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - '>='
25
25
  - !ruby/object:Gem::Version
26
- version: 4.0.0.rc2
26
+ version: '0'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rspec-rails
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -78,6 +78,7 @@ files:
78
78
  - lib/excursion/pool.rb
79
79
  - lib/excursion/exceptions/datastores.rb
80
80
  - lib/excursion/exceptions/pool.rb
81
+ - lib/excursion/exceptions/active_record.rb
81
82
  - lib/excursion/exceptions/memcache.rb
82
83
  - lib/excursion/pool/application.rb
83
84
  - lib/excursion/railtie.rb
@@ -86,10 +87,15 @@ files:
86
87
  - lib/excursion/helpers/application_helper.rb
87
88
  - lib/excursion/exceptions.rb
88
89
  - lib/excursion/datastores/datastore.rb
90
+ - lib/excursion/datastores/active_record_with_memcache.rb
89
91
  - lib/excursion/datastores/file.rb
92
+ - lib/excursion/datastores/active_record.rb
90
93
  - lib/excursion/datastores/memcache.rb
91
94
  - lib/excursion/helpers.rb
95
+ - lib/excursion/route_pool.rb
92
96
  - lib/excursion/version.rb
97
+ - lib/generators/excursion/active_record_generator.rb
98
+ - lib/generators/excursion/templates/migration.rb
93
99
  - lib/excursion.rb
94
100
  - spec/excursion_spec.rb
95
101
  - spec/dummy/public/500.html
@@ -115,7 +121,10 @@ files:
115
121
  - spec/dummy/config/environment.rb
116
122
  - spec/dummy/config/boot.rb
117
123
  - spec/dummy/db/seeds.rb
124
+ - spec/dummy/db/migrate/20130618222840_create_excursion_route_pool.rb
118
125
  - spec/dummy/db/development.sqlite3
126
+ - spec/dummy/db/test.sqlite3
127
+ - spec/dummy/db/schema.rb
119
128
  - spec/dummy/config.ru
120
129
  - spec/dummy/README.rdoc
121
130
  - spec/dummy/log/development.log
@@ -130,10 +139,13 @@ files:
130
139
  - spec/dummy/Rakefile
131
140
  - spec/support/mocks.rb
132
141
  - spec/excursion/helpers_spec.rb
142
+ - spec/excursion/route_pool_spec.rb
133
143
  - spec/excursion/pool/application_spec.rb
134
144
  - spec/excursion/pool_spec.rb
135
145
  - spec/excursion/helpers/url_helper_spec.rb
136
146
  - spec/excursion/helpers/application_helper_spec.rb
147
+ - spec/excursion/datastores/active_record_with_memcache_spec.rb
148
+ - spec/excursion/datastores/active_record_spec.rb
137
149
  - spec/excursion/datastores/memcache_spec.rb
138
150
  - spec/excursion/datastores/file_spec.rb
139
151
  - spec/spec_helper.rb
@@ -185,7 +197,10 @@ test_files:
185
197
  - spec/dummy/config/environment.rb
186
198
  - spec/dummy/config/boot.rb
187
199
  - spec/dummy/db/seeds.rb
200
+ - spec/dummy/db/migrate/20130618222840_create_excursion_route_pool.rb
188
201
  - spec/dummy/db/development.sqlite3
202
+ - spec/dummy/db/test.sqlite3
203
+ - spec/dummy/db/schema.rb
189
204
  - spec/dummy/config.ru
190
205
  - spec/dummy/README.rdoc
191
206
  - spec/dummy/log/development.log
@@ -200,10 +215,13 @@ test_files:
200
215
  - spec/dummy/Rakefile
201
216
  - spec/support/mocks.rb
202
217
  - spec/excursion/helpers_spec.rb
218
+ - spec/excursion/route_pool_spec.rb
203
219
  - spec/excursion/pool/application_spec.rb
204
220
  - spec/excursion/pool_spec.rb
205
221
  - spec/excursion/helpers/url_helper_spec.rb
206
222
  - spec/excursion/helpers/application_helper_spec.rb
223
+ - spec/excursion/datastores/active_record_with_memcache_spec.rb
224
+ - spec/excursion/datastores/active_record_spec.rb
207
225
  - spec/excursion/datastores/memcache_spec.rb
208
226
  - spec/excursion/datastores/file_spec.rb
209
227
  - spec/spec_helper.rb