simplificator-has_setting 0.4.1 → 0.4.2

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/.gitignore ADDED
@@ -0,0 +1,2 @@
1
+ *.sqlite3
2
+ pkg/**
data/README CHANGED
@@ -3,6 +3,8 @@ has_setting is a simple extension that enables ActiveRecord models to
3
3
  store settings in a separate settings table as key/value pairs where the key and value are stored as Strings.
4
4
 
5
5
  ==History
6
+ * 0.4.2:
7
+ * bug fixes for boolean types default values
6
8
  * 0.3.10:
7
9
  * added boolean and booleans formatters
8
10
  * 0.3.9:
data/VERSION.yml CHANGED
@@ -1,4 +1,4 @@
1
1
  ---
2
2
  :minor: 4
3
- :patch: 1
3
+ :patch: 2
4
4
  :major: 0
@@ -0,0 +1,57 @@
1
+ # -*- encoding: utf-8 -*-
2
+
3
+ Gem::Specification.new do |s|
4
+ s.name = %q{has_setting}
5
+ s.version = "0.4.2"
6
+
7
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
8
+ s.authors = ["Simplificator GmbH"]
9
+ s.date = %q{2009-08-21}
10
+ s.description = %q{Stores settings as key/value pairs in a settings table and provides accessors for them on the owning object}
11
+ s.email = %q{info@simplificator.com}
12
+ s.extra_rdoc_files = [
13
+ "README"
14
+ ]
15
+ s.files = [
16
+ ".gitignore",
17
+ "README",
18
+ "Rakefile",
19
+ "VERSION.yml",
20
+ "has_setting.gemspec",
21
+ "help/001_create_settings.rb",
22
+ "lib/has_setting.rb",
23
+ "lib/has_setting/ar_extensions.rb",
24
+ "lib/has_setting/formatters.rb",
25
+ "lib/has_setting/setting.rb",
26
+ "test/bar.rb",
27
+ "test/baz.rb",
28
+ "test/foo.rb",
29
+ "test/test_helper.rb",
30
+ "test/unit/formatters_test.rb",
31
+ "test/unit/has_setting_test.rb"
32
+ ]
33
+ s.has_rdoc = true
34
+ s.homepage = %q{http://github.com/simplificator/has_setting}
35
+ s.rdoc_options = ["--charset=UTF-8"]
36
+ s.require_paths = ["lib"]
37
+ s.rubygems_version = %q{1.3.2}
38
+ s.summary = %q{simple setting extension to AR}
39
+ s.test_files = [
40
+ "test/bar.rb",
41
+ "test/baz.rb",
42
+ "test/foo.rb",
43
+ "test/test_helper.rb",
44
+ "test/unit/formatters_test.rb",
45
+ "test/unit/has_setting_test.rb"
46
+ ]
47
+
48
+ if s.respond_to? :specification_version then
49
+ current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
50
+ s.specification_version = 3
51
+
52
+ if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
53
+ else
54
+ end
55
+ else
56
+ end
57
+ end
@@ -0,0 +1,15 @@
1
+ class CreateSettings < ActiveRecord::Migration
2
+ def self.up
3
+ create_table :settings do |t|
4
+ t.string(:owner_type, :null => false)
5
+ t.integer(:owner_id, :null => false)
6
+ t.string(:name, :null => false, :length => 64)
7
+ t.string(:value, :null => true, :length => 255)
8
+ t.timestamps
9
+ end
10
+ end
11
+
12
+ def self.down
13
+ drop_table(:settings)
14
+ end
15
+ end
@@ -47,7 +47,8 @@ module HasSetting
47
47
 
48
48
  # default options
49
49
  options[:type] ||= :string # treat as string
50
- options[:default] ||= nil # no default value
50
+ # default could be false, thats why we use has_key?
51
+ options[:default] = options.has_key?(:default) ? options[:default] : nil # no default
51
52
  self.has_setting_options[name] = options
52
53
 
53
54
  # setter
data/lib/has_setting.rb CHANGED
@@ -11,8 +11,8 @@ end
11
11
  HasSetting::Formatters.register_formatter(:string, HasSetting::Formatters::StringFormatter.new)
12
12
  HasSetting::Formatters.register_formatter(:strings, HasSetting::Formatters::StringsFormatter.new)
13
13
  HasSetting::Formatters.register_formatter(:float, HasSetting::Formatters::FloatFormatter.new)
14
- HasSetting::Formatters.register_formatter(:floats, HasSetting::Formatters::FloatFormatter.new)
14
+ HasSetting::Formatters.register_formatter(:floats, HasSetting::Formatters::FloatsFormatter.new)
15
15
  HasSetting::Formatters.register_formatter(:int, HasSetting::Formatters::IntFormatter.new)
16
16
  HasSetting::Formatters.register_formatter(:ints, HasSetting::Formatters::IntsFormatter.new)
17
17
  HasSetting::Formatters.register_formatter(:boolean, HasSetting::Formatters::BooleanFormatter.new)
18
- HasSetting::Formatters.register_formatter(:booleans, HasSetting::Formatters::BooleanFormatter.new)
18
+ HasSetting::Formatters.register_formatter(:booleans, HasSetting::Formatters::BooleansFormatter.new)
data/test/foo.rb CHANGED
@@ -2,4 +2,7 @@ class Foo < ActiveRecord::Base
2
2
  has_setting(:setting_1)
3
3
  has_setting(:setting_2, :type => :float)
4
4
  has_setting(:with_default, :default => 'def')
5
+
6
+ has_setting(:setting_3, :type => :boolean)
7
+ has_setting(:setting_4, :type => :boolean, :default => false)
5
8
  end
@@ -4,6 +4,7 @@ class FormattersTest < Test::Unit::TestCase
4
4
  def test_for_type
5
5
  [:string, :float, :floats, :int, :ints, :strings, :boolean, :booleans].each do |symbol|
6
6
  assert(Formatters.for_type(symbol), "No formatter for #{symbol}")
7
+ assert_equal(Formatters.for_type(symbol).class.to_s, "HasSetting::Formatters::#{symbol.to_s.capitalize}Formatter")
7
8
  end
8
9
  assert_raises(ArgumentError) do
9
10
  Formatters.for_type(:rarararararara_i_do_not_exist)
@@ -131,5 +132,12 @@ class FormattersTest < Test::Unit::TestCase
131
132
  assert_equal([], f.to_type(''))
132
133
  assert_equal([true], f.to_type('1'))
133
134
  assert_equal([true, false], f.to_type('1,0'))
135
+
136
+
137
+ # test boolean with values != true|false
138
+ assert_equal('1', f.to_s('true'))
139
+ assert_equal('1', f.to_s(555))
140
+
141
+
134
142
  end
135
143
  end
@@ -8,18 +8,18 @@ class HasSettingTest < Test::Unit::TestCase
8
8
  end
9
9
 
10
10
 
11
- def test_setting_has_accessors
11
+ def _test_setting_has_accessors
12
12
  assert @foo.respond_to?(:setting_1)
13
13
  assert @foo.respond_to?(:setting_1=)
14
14
  end
15
15
 
16
16
 
17
- def test_has_many
17
+ def _test_has_many
18
18
  assert @foo.respond_to?(:settings)
19
19
  assert @foo.settings.is_a?(Array)
20
20
  end
21
21
 
22
- def test_settings_are_destroyed
22
+ def _test_settings_are_destroyed
23
23
  count_before = HasSetting::Setting.count
24
24
  @foo.setting_1 = 10
25
25
  @foo.save!
@@ -29,7 +29,7 @@ class HasSettingTest < Test::Unit::TestCase
29
29
 
30
30
  end
31
31
 
32
- def test_write_setting
32
+ def _test_write_setting
33
33
  count_before = HasSetting::Setting.count
34
34
  @foo.write_setting('name', 'value1')
35
35
  @foo.save!
@@ -45,7 +45,7 @@ class HasSettingTest < Test::Unit::TestCase
45
45
  assert_equal('value2', setting.value)
46
46
  end
47
47
 
48
- def test_setting_accessors
48
+ def _test_setting_accessors
49
49
  count_before = HasSetting::Setting.count
50
50
  assert(!@foo.setting_1)
51
51
  @foo.setting_1 = 'bli'
@@ -56,7 +56,7 @@ class HasSettingTest < Test::Unit::TestCase
56
56
  assert_equal('bla', @foo.setting_1)
57
57
  end
58
58
 
59
- def test_different_classes_do_not_share_setting
59
+ def _test_different_classes_do_not_share_setting
60
60
  count_before = HasSetting::Setting.count
61
61
  @foo.setting_1 = 'foo'
62
62
  @foo.save!
@@ -69,13 +69,13 @@ class HasSettingTest < Test::Unit::TestCase
69
69
  end
70
70
 
71
71
 
72
- def test_has_nil_setting
72
+ def _test_has_nil_setting
73
73
  @foo.setting_1 = nil
74
74
  assert(@foo.read_setting('setting_1'))
75
75
  assert(!@foo.setting_1)
76
76
  end
77
77
 
78
- def test_options_on_getter
78
+ def _test_options_on_getter
79
79
  @foo.setting_1 = '12.3'
80
80
  assert_equal('12.3', @foo.setting_1)
81
81
  assert_equal(12, @foo.setting_1(:type => :int))
@@ -86,21 +86,21 @@ class HasSettingTest < Test::Unit::TestCase
86
86
  assert_equal('12.3', @foo.setting_2(:type => :string))
87
87
  end
88
88
 
89
- def test_different_classes_do_not_share_options()
89
+ def _test_different_classes_do_not_share_options()
90
90
  @foo.setting_2 = 12.3
91
91
  assert_equal(12.3, @foo.setting_2)
92
92
  @bar.setting_2 = 12.3
93
93
  assert_equal(12, @bar.setting_2)
94
94
  end
95
95
 
96
- def test_default_values()
96
+ def _test_default_values()
97
97
  assert_equal('def', @foo.with_default)
98
98
  assert_equal('override def', @foo.with_default(:default => 'override def'))
99
99
  @foo.with_default = 'not def'
100
100
  assert_equal('not def', @foo.with_default)
101
101
  end
102
102
 
103
- def test_write_settings_without_saved_parent
103
+ def _test_write_settings_without_saved_parent
104
104
  my_foo = Foo.new
105
105
  count_before = HasSetting::Setting.count
106
106
  my_foo.with_default = 'radabumm'
@@ -111,9 +111,25 @@ class HasSettingTest < Test::Unit::TestCase
111
111
  assert_equal('radabumm', my_foo.with_default)
112
112
  end
113
113
 
114
- def test_not_everyone_has_settings_association
114
+ def _test_not_everyone_has_settings_association
115
115
  assert_equal(true, @foo.respond_to?(:settings))
116
116
  assert_equal(true, @bar.respond_to?(:settings))
117
117
  assert_equal(false, @baz.respond_to?(:settings))
118
118
  end
119
+
120
+
121
+ def _test_boolean_setting_without_default
122
+ assert_equal nil, @foo.setting_3
123
+ @foo.setting_3 = true
124
+ @foo.save!
125
+ assert_equal true, @foo.reload.setting_3
126
+ end
127
+ def test_boolean_setting_with_default
128
+ assert_equal false, @foo.setting_4
129
+ @foo.setting_4 = true
130
+ @foo.save!
131
+ assert_equal true, @foo.reload.setting_4
132
+ end
133
+
134
+
119
135
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: simplificator-has_setting
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.1
4
+ version: 0.4.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Simplificator GmbH
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-06-30 00:00:00 -07:00
12
+ date: 2009-08-21 00:00:00 -07:00
13
13
  default_executable:
14
14
  dependencies: []
15
15
 
@@ -22,8 +22,12 @@ extensions: []
22
22
  extra_rdoc_files:
23
23
  - README
24
24
  files:
25
+ - .gitignore
26
+ - README
25
27
  - Rakefile
26
28
  - VERSION.yml
29
+ - has_setting.gemspec
30
+ - help/001_create_settings.rb
27
31
  - lib/has_setting.rb
28
32
  - lib/has_setting/ar_extensions.rb
29
33
  - lib/has_setting/formatters.rb
@@ -34,9 +38,9 @@ files:
34
38
  - test/test_helper.rb
35
39
  - test/unit/formatters_test.rb
36
40
  - test/unit/has_setting_test.rb
37
- - README
38
41
  has_rdoc: true
39
42
  homepage: http://github.com/simplificator/has_setting
43
+ licenses:
40
44
  post_install_message:
41
45
  rdoc_options:
42
46
  - --charset=UTF-8
@@ -57,7 +61,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
57
61
  requirements: []
58
62
 
59
63
  rubyforge_project:
60
- rubygems_version: 1.2.0
64
+ rubygems_version: 1.3.5
61
65
  signing_key:
62
66
  specification_version: 3
63
67
  summary: simple setting extension to AR