tunable 0.0.4 → 0.0.6

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: f225cd943a46e53efac5f09ab990d51e4fd27e593f682ebeca3b63801ebbf218
4
- data.tar.gz: 7f7ada6810840be255a3092d8373edb56009dc39bc3ca272b1bcec7fabdb8731
3
+ metadata.gz: c4c0d267a72ab0649509f7250beedfcb46b7959fe5e5c8e28e90d2bb8f864bb1
4
+ data.tar.gz: e5fe14c7102a807d1c2b010bfeba10de11e8428ce9fb1b2e72b224dd50754a84
5
5
  SHA512:
6
- metadata.gz: 9a8cbc09565c8b2d0aa675fde53896bc684875bbedab4c49d3c8c4f442c97b7f5249db92492fdc0d91990cede6ab78c61dcaf920f29957adc33443ebae62416e
7
- data.tar.gz: e74e60a6d936dac6c23f5aab964011801eab15f01a230c381550a5d9df1bce6a1bd7f4d7bb24717a25022026b79abc581a4d432ec10a76bcb8fb452b515e125d
6
+ metadata.gz: ef8cd2b1b4cd45432b3934e37999599f716988bd9e84baf39e6843d352863230eb4b65f0e6e4fb17aa694c15cd7172ad6ba3f2e37a547a40ec59a0c62f1e8672
7
+ data.tar.gz: 2a48932f5bb4ec88ed6fa5589cc2b41b61d8a2e199fffdb1c26baee32d7c9b854ddaca8b9e4484bc13208c0e4eaa55bed93fff1a5054ff3a34782bc3c850f654
data/lib/tunable/model.rb CHANGED
@@ -57,6 +57,17 @@ module Tunable
57
57
  default = opts
58
58
  end
59
59
 
60
+ getter = "#{name}_#{field}"
61
+
62
+ define_method getter do
63
+ get_setting(name, field)
64
+ end
65
+
66
+ define_method "#{getter}=" do |value|
67
+ # self.settings = { name => { field => val } }
68
+ set_setting(name, field, value)
69
+ end
70
+
60
71
  set_default_setting(name, field, default) unless default.nil?
61
72
  end
62
73
  end
@@ -153,6 +164,15 @@ module Tunable
153
164
  self.class.default_settings(context)[key.to_sym]
154
165
  end
155
166
 
167
+ def set_setting(context, key, val)
168
+ obj = { context => { key => val } }
169
+ self.settings = obj
170
+ end
171
+
172
+ def remove_setting(context, key)
173
+ set_setting(context, key, nil)
174
+ end
175
+
156
176
  def get_main_setting(key)
157
177
  get_setting(:main, key)
158
178
  end
@@ -26,7 +26,7 @@ module Tunable
26
26
 
27
27
  hash.each do |context, fields|
28
28
  fields.each do |key, val|
29
- if val.blank? && object.settings_context(context.to_sym)[key.to_sym].present?
29
+ if val.blank? && !object.settings_context(context.to_sym)[key.to_sym].nil?
30
30
 
31
31
  # setting was present and now deleted
32
32
  object.queue_setting_for_deletion(context, key)
@@ -1,5 +1,3 @@
1
1
  module Tunable
2
-
3
- VERSION = '0.0.4'
4
-
2
+ VERSION = '0.0.6'
5
3
  end
@@ -0,0 +1,26 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
2
+
3
+ describe 'basic setters' do
4
+
5
+ before :all do
6
+ TunableModel.has_settings \
7
+ :website => {
8
+ super_mode: { default: false }
9
+ }
10
+
11
+ @model = TunableModel.create(name: "Yay, I'm settable!")
12
+ end
13
+
14
+
15
+ it 'has getters setters scoped by context' do
16
+ expect(@model.respond_to?(:website_super_mode)).to eq(true)
17
+ expect(@model.respond_to?(:website_super_mode=)).to eq(true)
18
+
19
+ expect(@model.website_super_mode).to eq(false)
20
+ expect(@model.website_super_mode = true).to eq(true)
21
+ expect(@model.website_super_mode).to eq(false)
22
+ @model.save
23
+ expect(@model.website_super_mode).to eq(true)
24
+ end
25
+
26
+ end
@@ -1,5 +1,48 @@
1
1
  require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
2
2
 
3
+ describe 'basic setters' do
4
+
5
+ before :all do
6
+ load_main_settings!
7
+ @model = TunableModel.create(name: "Yay, I'm settable!")
8
+ end
9
+
10
+ describe '#set_setting' do
11
+
12
+ it 'stores new setting, without saving' do
13
+ @model.set_setting(:foo, :bar, 123)
14
+ expect(@model.get_setting(:foo, :bar)).to eq(nil)
15
+ expect(@model.settings_hash[:foo]).to eq(nil)
16
+ @model.save
17
+ @model.reload
18
+ expect(@model.get_setting(:foo, :bar)).to eq(123)
19
+ expect(@model.settings_hash[:foo]).to eq({ bar: 123 })
20
+ end
21
+
22
+ end
23
+
24
+ describe '#remove_setting' do
25
+
26
+ it 'stores new setting' do
27
+ @model.set_setting(:foo, :bar, 123)
28
+ @model.set_setting(:foo, :test, false)
29
+ @model.save
30
+ @model.reload
31
+ @model.remove_setting(:foo, :bar)
32
+ expect(@model.get_setting(:foo, :bar)).to eq(123)
33
+ @model.save
34
+ @model.reload
35
+ expect(@model.settings_hash[:foo]).to eq({ test: false })
36
+ @model.remove_setting(:foo, :test)
37
+ @model.save
38
+ @model.reload
39
+ expect(@model.settings_hash[:foo]).to eq(nil)
40
+ end
41
+
42
+ end
43
+
44
+ end
45
+
3
46
  describe 'main_setting setters' do
4
47
 
5
48
  before :all do
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tunable
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.0.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tomás Pollak
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-03-01 00:00:00.000000000 Z
11
+ date: 2022-11-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord
@@ -104,6 +104,7 @@ files:
104
104
  - spec/schema.rb
105
105
  - spec/spec_helper.rb
106
106
  - spec/tunable/defaults_spec.rb
107
+ - spec/tunable/getters_spec.rb
107
108
  - spec/tunable/normalization_spec.rb
108
109
  - spec/tunable/querying_spec.rb
109
110
  - spec/tunable/setters_spec.rb