tunable 0.1.1 → 0.1.4

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: 5f3e0b03aefc94040217c4c2b0b4e58da393015ea4296dee04f2efc1e13de95c
4
- data.tar.gz: 4a5d9dd43998e77b677cb5c652366e6ad3fbaab97a0e458358c2f912b1ef9ebb
3
+ metadata.gz: 06555f6a3bee956eca97a530f55f2a461b08d910cf0f8c47ab72d01a92e7423a
4
+ data.tar.gz: 8232870c5a435f1bd76b63f722988669974cab0ebe053b9196ac2b6b821b9e0c
5
5
  SHA512:
6
- metadata.gz: e10ebb099faa035fe760a6b6c42acaabdb603513378bd4bd24c586cf1c3c872a3fa0597b2863760f715da6f8754b2671ed86a78fdf33f4f0ae6008366ddf060e
7
- data.tar.gz: '019c5b00133fcad806079acd55c5152c599e70bda44474fcb904769399e1d54d8e8ee9403970a7b026510890f071973975757c7d9e416aabadc0922075d880da'
6
+ metadata.gz: 8dd607c4e3526efa2d55159ef7321d39caae9ea92e43b22745f1227225a00783081cf81c6557bec5a1b2ca35352239300f0d274c2c6257d63949bac181b075d2
7
+ data.tar.gz: 60257e7911a71e33cd58c179340a7f1f54b438c4b8bc932d2be631b9562e6bed232ddff900d8c2de7c67824f882daba44a2158d8961461b93f3ac6a22685e958
data/Gemfile CHANGED
@@ -1,4 +1,4 @@
1
- source :rubygems
1
+ source 'https://rubygems.org'
2
2
 
3
3
  # specified in gemspec
4
4
  gemspec
@@ -13,7 +13,7 @@ module Tunable
13
13
 
14
14
  values_array = values.map do |arr|
15
15
  arr.map do |val, i|
16
- val == true ? '"true"' : val == false ? '"false"' : connection.quote(val)
16
+ val == true ? "'true'" : val == false ? "'false'" : connection.quote(val)
17
17
  end.join(',')
18
18
  end
19
19
 
@@ -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].nil?
29
+ if (val.nil? || val == '') && !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)
@@ -51,7 +51,7 @@ module Tunable
51
51
  end
52
52
 
53
53
  def value=(val)
54
- self[:value] = Tunable.normalize_value(val)
54
+ self[:value] = Tunable.normalize_value(val).to_s
55
55
  end
56
56
 
57
57
  end
@@ -1,3 +1,3 @@
1
1
  module Tunable
2
- VERSION = '0.1.1'
2
+ VERSION = '0.1.4'
3
3
  end
data/spec/spec_helper.rb CHANGED
@@ -10,6 +10,7 @@ ActiveRecord::Base.establish_connection(
10
10
  )
11
11
 
12
12
  ActiveRecord::Base.logger = Logger.new(File.join(File.dirname(__FILE__), "debug.log"))
13
+ # ActiveRecord::Base.logger = Logger.new(STDOUT)
13
14
 
14
15
  this_path = File.dirname(__FILE__)
15
16
  load File.join(this_path, '/schema.rb')
@@ -0,0 +1,73 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
2
+
3
+ describe Tunable::Setting do
4
+
5
+ before :all do
6
+ load_main_settings!
7
+ @model = TunableModel.create(name: "Yay, I'm settable!")
8
+ end
9
+
10
+ describe '#value=' do
11
+
12
+ it 'normalizes correctly' do
13
+ setting = @model.settings.new(context: 'test', key: 'foo', value: 'true')
14
+ expect(setting.value).to eq('true')
15
+ expect(setting[:value]).to eq('true')
16
+
17
+ setting.value = true
18
+ expect(setting.value).to eq('true')
19
+ expect(setting[:value]).to eq('true')
20
+
21
+ setting.value = 'false'
22
+ expect(setting.value).to eq('false')
23
+ expect(setting[:value]).to eq('false')
24
+
25
+ setting.value = false
26
+ expect(setting.value).to eq('false')
27
+ expect(setting[:value]).to eq('false')
28
+
29
+ setting.value = '1'
30
+ expect(setting.value).to eq('1')
31
+ expect(setting[:value]).to eq('1')
32
+
33
+ setting.value = 1
34
+ expect(setting.value).to eq('1')
35
+ expect(setting[:value]).to eq('1')
36
+
37
+ setting.value = '0'
38
+ expect(setting.value).to eq('0')
39
+ expect(setting[:value]).to eq('0')
40
+
41
+ setting.value = 0
42
+ expect(setting.value).to eq('0')
43
+ expect(setting[:value]).to eq('0')
44
+ end
45
+
46
+ end
47
+
48
+ describe '.import SQL quoting' do
49
+ it 'wraps boolean true/false in single quotes, not double quotes' do
50
+ columns = [:context, :key, :value, :settable_id, :settable_type]
51
+ values = [
52
+ ['test', 'bool_true', true, 1, 'TunableModel'],
53
+ ['test', 'bool_false', false, 1, 'TunableModel'],
54
+ ]
55
+
56
+ sqls = []
57
+ expect(ActiveRecord::Base.connection).to receive(:execute).twice do |sql|
58
+ sqls << sql
59
+ end
60
+
61
+ Tunable::Setting.import(columns, values, method: 'REPLACE')
62
+
63
+ sqls.each do |sql|
64
+ expect(sql).not_to include('"true"')
65
+ expect(sql).not_to include('"false"')
66
+ end
67
+
68
+ expect(sqls.any? { |s| s.include?("'true'") }).to be true
69
+ expect(sqls.any? { |s| s.include?("'false'") }).to be true
70
+ end
71
+ end
72
+
73
+ end
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.1.1
4
+ version: 0.1.4
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: 2025-08-22 00:00:00.000000000 Z
11
+ date: 2026-07-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord
@@ -108,6 +108,7 @@ files:
108
108
  - spec/tunable/normalization_spec.rb
109
109
  - spec/tunable/querying_spec.rb
110
110
  - spec/tunable/setters_spec.rb
111
+ - spec/tunable/setting_model_spec.rb
111
112
  - tunable.gemspec
112
113
  homepage: https://github.com/tomas/tunable
113
114
  licenses: []