preferencias 0.0.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.
@@ -0,0 +1,58 @@
1
+ require 'spec_helper'
2
+
3
+ describe Preferencias::ScopedStore do
4
+ let(:scoped_store){ described_class.new(prefix, suffix) }
5
+ subject{ scoped_store }
6
+ let(:prefix){ nil }
7
+ let(:suffix){ nil }
8
+
9
+ describe '#store' do
10
+ subject{ scoped_store.store }
11
+ it{ should be Preferencias::Store.instance }
12
+ end
13
+
14
+ context 'stubbed store' do
15
+ let(:store){ double(:store) }
16
+ before do
17
+ allow(scoped_store).to receive(:store).and_return(store)
18
+ end
19
+
20
+ context "with a prefix" do
21
+ let(:prefix){ 'my_class' }
22
+
23
+ it "can fetch" do
24
+ expect(store).to receive(:fetch).with('my_class/attr')
25
+ scoped_store.fetch('attr'){ 'default' }
26
+ end
27
+
28
+ it "can assign" do
29
+ expect(store).to receive(:[]=).with('my_class/attr', 'val')
30
+ scoped_store['attr'] = 'val'
31
+ end
32
+
33
+ it "can delete" do
34
+ expect(store).to receive(:delete).with('my_class/attr')
35
+ scoped_store.delete('attr')
36
+ end
37
+
38
+ context "and suffix" do
39
+ let(:suffix){ 123 }
40
+
41
+ it "can fetch" do
42
+ expect(store).to receive(:fetch).with('my_class/attr/123')
43
+ scoped_store.fetch('attr'){ 'default' }
44
+ end
45
+
46
+ it "can assign" do
47
+ expect(store).to receive(:[]=).with('my_class/attr/123', 'val')
48
+ scoped_store['attr'] = 'val'
49
+ end
50
+
51
+ it "can delete" do
52
+ expect(store).to receive(:delete).with('my_class/attr/123')
53
+ scoped_store.delete('attr')
54
+ end
55
+ end
56
+ end
57
+ end
58
+ end
@@ -0,0 +1,46 @@
1
+ require 'spec_helper'
2
+
3
+ describe Preferencias::Store do
4
+ before :each do
5
+ @store = Preferencias::StoreInstance.new
6
+ end
7
+
8
+ it "sets and gets a key" do
9
+ @store.set :test, 1
10
+ expect( @store.exist?(:test) ).to be_truthy
11
+ expect( @store.get(:test) ).to eq(1)
12
+ end
13
+
14
+ it "can set and get false values when cache return nil" do
15
+ @store.set :test, false
16
+ expect( @store.get(:test) ).to be_falsey
17
+ end
18
+
19
+ it "will return db value when cache is emtpy and cache the db value" do
20
+ preference = Preferencias::Preference.where(:key => 'test').first_or_initialize
21
+ preference.value = '123'
22
+ preference.save
23
+
24
+ Rails.cache.clear
25
+ expect( @store.get(:test) ).to eq('123')
26
+ expect( Rails.cache.read(:test) ).to eq('123')
27
+ end
28
+
29
+ it "should return and cache fallback value when supplied" do
30
+ Rails.cache.clear
31
+ expect( @store.get(:test){ false } ).to be_falsey
32
+ expect( Rails.cache.read(:test) ).to be_falsey
33
+ end
34
+
35
+ it "should return but not cache fallback value when persistence is disabled" do
36
+ Rails.cache.clear
37
+ allow(@store).to receive_messages(:should_persist? => false)
38
+ expect( @store.get(:test){ true } ).to be_truthy
39
+ expect( Rails.cache.exist?(:test) ).to be_falsey
40
+ end
41
+
42
+ it "should return nil when key can't be found and fallback value is not supplied" do
43
+ expect( @store.get(:random_key){ nil } ).to be_nil
44
+ end
45
+
46
+ end
@@ -0,0 +1,24 @@
1
+ require 'rspec'
2
+ require 'preferencias'
3
+ require 'rails/test_unit/railtie'
4
+ require 'pry'
5
+
6
+ RSpec.configure do |config|
7
+ config.color = true
8
+ config.formatter = 'documentation'
9
+ config.before(:each) { Preferencias::Preference.delete_all }
10
+ end
11
+
12
+ module Config
13
+ class Application < ::Rails::Application
14
+ end
15
+ end
16
+
17
+ Config::Application.initialize!
18
+
19
+ ActiveRecord::Base.establish_connection(
20
+ :adapter => 'sqlite3',
21
+ :database => ':memory:'
22
+ )
23
+
24
+ load File.dirname(__FILE__) + '/support/schema.rb'
@@ -0,0 +1,11 @@
1
+ ActiveRecord::Schema.define(:version => 20140918144154442523) do
2
+
3
+ create_table "preferences", force: true do |t|
4
+ t.text "value"
5
+ t.string "key"
6
+ t.datetime "created_at"
7
+ t.datetime "updated_at"
8
+ end
9
+
10
+ add_index "preferences", ["key"], name: "preferences_on_key", unique: true, using: :btree
11
+ end
@@ -0,0 +1,13 @@
1
+ Spree License
2
+ =============
3
+
4
+ Copyright © 2007-2014, Spree Commerce Inc. and other contributors.
5
+ All rights reserved.
6
+
7
+ Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
8
+
9
+ * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
10
+ * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
11
+ * Neither the name of Spree Commerce Inc. nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
12
+
13
+ _This software is provided by the copyright holders and contributors "as is" and any express or implied warranties, including, but not limited to, the implied warranties of merchantability and fitness for a particular purpose are disclaimed. In no event shall the copyright owner of contributors be liable for any direct, indirect, incidental, special, exemplary, or consequential damages (including, but not limited to, procurement of substitute goods or services; loss of use, data, or profits; or business interruption) however caused and on any theory of liability, whether in contract, strict liability, or tort (including negligence or otherwise) arising in any way out of the use of this software, even if advised of the possibility of such damage._
metadata ADDED
@@ -0,0 +1,198 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: preferencias
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - David Silva
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-09-19 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: railties
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ! '>='
18
+ - !ruby/object:Gem::Version
19
+ version: '3.2'
20
+ - - <
21
+ - !ruby/object:Gem::Version
22
+ version: '4.2'
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: '3.2'
30
+ - - <
31
+ - !ruby/object:Gem::Version
32
+ version: '4.2'
33
+ - !ruby/object:Gem::Dependency
34
+ name: activesupport
35
+ requirement: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - ! '>='
38
+ - !ruby/object:Gem::Version
39
+ version: '3.2'
40
+ - - <
41
+ - !ruby/object:Gem::Version
42
+ version: '4.2'
43
+ type: :runtime
44
+ prerelease: false
45
+ version_requirements: !ruby/object:Gem::Requirement
46
+ requirements:
47
+ - - ! '>='
48
+ - !ruby/object:Gem::Version
49
+ version: '3.2'
50
+ - - <
51
+ - !ruby/object:Gem::Version
52
+ version: '4.2'
53
+ - !ruby/object:Gem::Dependency
54
+ name: activerecord
55
+ requirement: !ruby/object:Gem::Requirement
56
+ requirements:
57
+ - - ! '>='
58
+ - !ruby/object:Gem::Version
59
+ version: '3.2'
60
+ - - <
61
+ - !ruby/object:Gem::Version
62
+ version: '4.2'
63
+ type: :runtime
64
+ prerelease: false
65
+ version_requirements: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - ! '>='
68
+ - !ruby/object:Gem::Version
69
+ version: '3.2'
70
+ - - <
71
+ - !ruby/object:Gem::Version
72
+ version: '4.2'
73
+ - !ruby/object:Gem::Dependency
74
+ name: bundler
75
+ requirement: !ruby/object:Gem::Requirement
76
+ requirements:
77
+ - - ~>
78
+ - !ruby/object:Gem::Version
79
+ version: '1.6'
80
+ type: :development
81
+ prerelease: false
82
+ version_requirements: !ruby/object:Gem::Requirement
83
+ requirements:
84
+ - - ~>
85
+ - !ruby/object:Gem::Version
86
+ version: '1.6'
87
+ - !ruby/object:Gem::Dependency
88
+ name: rake
89
+ requirement: !ruby/object:Gem::Requirement
90
+ requirements:
91
+ - - ~>
92
+ - !ruby/object:Gem::Version
93
+ version: '0'
94
+ type: :development
95
+ prerelease: false
96
+ version_requirements: !ruby/object:Gem::Requirement
97
+ requirements:
98
+ - - ~>
99
+ - !ruby/object:Gem::Version
100
+ version: '0'
101
+ - !ruby/object:Gem::Dependency
102
+ name: rspec
103
+ requirement: !ruby/object:Gem::Requirement
104
+ requirements:
105
+ - - '='
106
+ - !ruby/object:Gem::Version
107
+ version: 3.1.3
108
+ type: :development
109
+ prerelease: false
110
+ version_requirements: !ruby/object:Gem::Requirement
111
+ requirements:
112
+ - - '='
113
+ - !ruby/object:Gem::Version
114
+ version: 3.1.3
115
+ - !ruby/object:Gem::Dependency
116
+ name: sqlite3
117
+ requirement: !ruby/object:Gem::Requirement
118
+ requirements:
119
+ - - ~>
120
+ - !ruby/object:Gem::Version
121
+ version: '0'
122
+ type: :development
123
+ prerelease: false
124
+ version_requirements: !ruby/object:Gem::Requirement
125
+ requirements:
126
+ - - ~>
127
+ - !ruby/object:Gem::Version
128
+ version: '0'
129
+ description: It's an extraction of the Spree Ecommerce Preferences. All the credits
130
+ goes to the Spree authors.
131
+ email:
132
+ - davidslv@gmail.com
133
+ executables: []
134
+ extensions: []
135
+ extra_rdoc_files: []
136
+ files:
137
+ - .gitignore
138
+ - .rspec
139
+ - .travis.yml
140
+ - Gemfile
141
+ - LICENSE.txt
142
+ - README.md
143
+ - Rakefile
144
+ - lib/generators/preferences/migration_generator.rb
145
+ - lib/generators/preferences/templates/create_preferences.rb
146
+ - lib/preferences/preferences/preferable_class_methods.rb
147
+ - lib/preferencias.rb
148
+ - lib/preferencias/base.rb
149
+ - lib/preferencias/engine.rb
150
+ - lib/preferencias/preference.rb
151
+ - lib/preferencias/preferences/configuration.rb
152
+ - lib/preferencias/preferences/preferable.rb
153
+ - lib/preferencias/preferences/preferable_class_methods.rb
154
+ - lib/preferencias/preferences/scoped_store.rb
155
+ - lib/preferencias/preferences/store.rb
156
+ - lib/preferencias/version.rb
157
+ - log/development.log
158
+ - preferences.gemspec
159
+ - spec/preference_spec.rb
160
+ - spec/preferencias/configuration_spec.rb
161
+ - spec/preferencias/preferable_spec.rb
162
+ - spec/preferencias/scoped_store_spec.rb
163
+ - spec/preferencias/store_spec.rb
164
+ - spec/spec_helper.rb
165
+ - spec/support/schema.rb
166
+ - spree_license.md
167
+ homepage: https://github.com/Davidslv/preferences
168
+ licenses:
169
+ - MIT
170
+ metadata: {}
171
+ post_install_message:
172
+ rdoc_options: []
173
+ require_paths:
174
+ - lib
175
+ required_ruby_version: !ruby/object:Gem::Requirement
176
+ requirements:
177
+ - - ! '>='
178
+ - !ruby/object:Gem::Version
179
+ version: '0'
180
+ required_rubygems_version: !ruby/object:Gem::Requirement
181
+ requirements:
182
+ - - ! '>='
183
+ - !ruby/object:Gem::Version
184
+ version: '0'
185
+ requirements: []
186
+ rubyforge_project:
187
+ rubygems_version: 2.4.1
188
+ signing_key:
189
+ specification_version: 4
190
+ summary: Extracted Preferences Model from Spree Ecommerce.
191
+ test_files:
192
+ - spec/preference_spec.rb
193
+ - spec/preferencias/configuration_spec.rb
194
+ - spec/preferencias/preferable_spec.rb
195
+ - spec/preferencias/scoped_store_spec.rb
196
+ - spec/preferencias/store_spec.rb
197
+ - spec/spec_helper.rb
198
+ - spec/support/schema.rb