property_sets 0.5.4 → 0.5.5

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/Gemfile CHANGED
@@ -2,9 +2,9 @@ source "http://rubygems.org"
2
2
  # Add dependencies required to use your gem here.
3
3
  # Example:
4
4
 
5
- gem "activesupport", "~> 2.3.10"
6
- gem "activerecord", "~> 2.3.10"
7
- gem "actionpack", "~> 2.3.10"
5
+ gem "activesupport", "~> 2.3.14"
6
+ gem "activerecord", "~> 2.3.14"
7
+ gem "actionpack", "~> 2.3.14"
8
8
 
9
9
  # Add dependencies to develop your gem here.
10
10
  # Include everything needed to run rake, tests, features, etc.
data/Gemfile.lock CHANGED
@@ -1,12 +1,12 @@
1
1
  GEM
2
2
  remote: http://rubygems.org/
3
3
  specs:
4
- actionpack (2.3.10)
5
- activesupport (= 2.3.10)
4
+ actionpack (2.3.14)
5
+ activesupport (= 2.3.14)
6
6
  rack (~> 1.1.0)
7
- activerecord (2.3.10)
8
- activesupport (= 2.3.10)
9
- activesupport (2.3.10)
7
+ activerecord (2.3.14)
8
+ activesupport (= 2.3.14)
9
+ activesupport (2.3.14)
10
10
  columnize (0.3.2)
11
11
  git (1.2.5)
12
12
  jeweler (1.5.2)
@@ -29,9 +29,9 @@ PLATFORMS
29
29
  ruby
30
30
 
31
31
  DEPENDENCIES
32
- actionpack (~> 2.3.10)
33
- activerecord (~> 2.3.10)
34
- activesupport (~> 2.3.10)
32
+ actionpack (~> 2.3.14)
33
+ activerecord (~> 2.3.14)
34
+ activesupport (~> 2.3.14)
35
35
  bundler (~> 1.0.0)
36
36
  jeweler (~> 1.5.1)
37
37
  mocha
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.5.4
1
+ 0.5.5
@@ -40,6 +40,8 @@ module PropertySets
40
40
  value.to_f
41
41
  when :integer
42
42
  value.to_i
43
+ when :boolean
44
+ ![ "false", "0", "", "off", "n" ].member?(value.to_s.downcase)
43
45
  end
44
46
  end
45
47
 
@@ -79,36 +81,44 @@ module PropertySets
79
81
  define_method "#{key}_record" do
80
82
  lookup(key)
81
83
  end
84
+ end
82
85
 
83
- define_method "protected?" do |arg|
84
- lookup(arg).protected?
85
- end
86
+ def protected?(arg)
87
+ lookup(arg).protected?
88
+ end
86
89
 
87
- define_method "enable" do |arg|
88
- send("#{arg}=", "1")
89
- end
90
+ def enable(arg)
91
+ send("#{arg}=", "1")
92
+ end
90
93
 
91
- define_method "disable" do |arg|
92
- send("#{arg}=", "0")
93
- end
94
+ def disable(arg)
95
+ send("#{arg}=", "0")
96
+ end
94
97
 
95
- # The finder method which returns the property if present, otherwise a new instance with defaults
96
- define_method "lookup" do |arg|
97
- instance = detect { |property| property.name.to_sym == arg.to_sym }
98
- instance ||= build(:name => arg.to_s, :value => property_class.default(arg))
98
+ def build_default(arg)
99
+ build(:name => arg.to_s, :value => default(arg))
100
+ end
99
101
 
100
- instance.send("#{owner_class_sym}=", @owner) if @owner.new_record?
102
+ def lookup_without_default(arg)
103
+ detect { |property| property.name.to_sym == arg.to_sym }
104
+ end
101
105
 
102
- instance
103
- end
106
+ # The finder method which returns the property if present, otherwise a new instance with defaults
107
+ def lookup(arg)
108
+ instance = lookup_without_default(arg)
109
+ instance ||= build_default(arg)
104
110
 
105
- # This finder method returns the property if present,
106
- # otherwise a new instance with the default value.
107
- # It does not have the side effect of adding a new setting object.
108
- define_method 'lookup_or_default' do |arg|
109
- instance = detect { |property| property.name.to_sym == arg.to_sym }
110
- instance ||= property_class.new(:value => property_class.default(arg))
111
- end
111
+ instance.send("#{owner_class_sym}=", @owner) if @owner.new_record?
112
+
113
+ instance
114
+ end
115
+
116
+ # This finder method returns the property if present,
117
+ # otherwise a new instance with the default value.
118
+ # It does not have the side effect of adding a new setting object.
119
+ def lookup_or_default(arg)
120
+ instance = detect { |property| property.name.to_sym == arg.to_sym }
121
+ instance ||= new(:value => default(arg))
112
122
  end
113
123
  end
114
124
  end
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{property_sets}
8
- s.version = "0.5.4"
8
+ s.version = "0.5.5"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Morten Primdahl"]
12
- s.date = %q{2011-09-22}
12
+ s.date = %q{2011-11-29}
13
13
  s.description = %q{This gem is an ActiveRecord extension which provides a convenient interface for managing per row properties}
14
14
  s.email = %q{morten@zendesk.com}
15
15
  s.extra_rdoc_files = [
@@ -41,7 +41,7 @@ Gem::Specification.new do |s|
41
41
  ]
42
42
  s.homepage = %q{http://github.com/morten/property_sets}
43
43
  s.require_paths = ["lib"]
44
- s.rubygems_version = %q{1.6.2}
44
+ s.rubygems_version = %q{1.5.3}
45
45
  s.summary = %q{Property sets for ActiveRecord}
46
46
  s.test_files = [
47
47
  "test/helper.rb",
@@ -54,18 +54,18 @@ Gem::Specification.new do |s|
54
54
  s.specification_version = 3
55
55
 
56
56
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
57
- s.add_runtime_dependency(%q<activesupport>, ["~> 2.3.10"])
58
- s.add_runtime_dependency(%q<activerecord>, ["~> 2.3.10"])
59
- s.add_runtime_dependency(%q<actionpack>, ["~> 2.3.10"])
57
+ s.add_runtime_dependency(%q<activesupport>, ["~> 2.3.14"])
58
+ s.add_runtime_dependency(%q<activerecord>, ["~> 2.3.14"])
59
+ s.add_runtime_dependency(%q<actionpack>, ["~> 2.3.14"])
60
60
  s.add_development_dependency(%q<shoulda>, [">= 0"])
61
61
  s.add_development_dependency(%q<bundler>, ["~> 1.0.0"])
62
62
  s.add_development_dependency(%q<jeweler>, ["~> 1.5.1"])
63
63
  s.add_development_dependency(%q<ruby-debug>, [">= 0"])
64
64
  s.add_development_dependency(%q<thoughtbot-shoulda>, [">= 0"])
65
65
  else
66
- s.add_dependency(%q<activesupport>, ["~> 2.3.10"])
67
- s.add_dependency(%q<activerecord>, ["~> 2.3.10"])
68
- s.add_dependency(%q<actionpack>, ["~> 2.3.10"])
66
+ s.add_dependency(%q<activesupport>, ["~> 2.3.14"])
67
+ s.add_dependency(%q<activerecord>, ["~> 2.3.14"])
68
+ s.add_dependency(%q<actionpack>, ["~> 2.3.14"])
69
69
  s.add_dependency(%q<shoulda>, [">= 0"])
70
70
  s.add_dependency(%q<bundler>, ["~> 1.0.0"])
71
71
  s.add_dependency(%q<jeweler>, ["~> 1.5.1"])
@@ -73,9 +73,9 @@ Gem::Specification.new do |s|
73
73
  s.add_dependency(%q<thoughtbot-shoulda>, [">= 0"])
74
74
  end
75
75
  else
76
- s.add_dependency(%q<activesupport>, ["~> 2.3.10"])
77
- s.add_dependency(%q<activerecord>, ["~> 2.3.10"])
78
- s.add_dependency(%q<actionpack>, ["~> 2.3.10"])
76
+ s.add_dependency(%q<activesupport>, ["~> 2.3.14"])
77
+ s.add_dependency(%q<activerecord>, ["~> 2.3.14"])
78
+ s.add_dependency(%q<actionpack>, ["~> 2.3.14"])
79
79
  s.add_dependency(%q<shoulda>, [">= 0"])
80
80
  s.add_dependency(%q<bundler>, ["~> 1.0.0"])
81
81
  s.add_dependency(%q<jeweler>, ["~> 1.5.1"])
@@ -208,6 +208,34 @@ class TestPropertySets < ActiveSupport::TestCase
208
208
  end
209
209
  end
210
210
 
211
+ context "lookup" do
212
+ context "with data" do
213
+ setup { @account.texts.foo = "1" }
214
+
215
+ should "return the data" do
216
+ assert_equal "1", @account.texts.lookup(:foo).value
217
+ end
218
+ end
219
+
220
+ context "without data" do
221
+ should "create a new record, returning the default" do
222
+ assert_equal nil, @account.texts.lookup(:foo).value
223
+ assert @account.texts.detect { |p| p.name == "foo" }
224
+ end
225
+ end
226
+ end
227
+
228
+ context "lookup_without_default" do
229
+ should "return the row if it exists" do
230
+ @account.texts.foo = "1"
231
+ assert_equal "1", @account.texts.lookup_without_default(:foo).value
232
+ end
233
+
234
+ should "return nil otherwise" do
235
+ assert_equal nil, @account.texts.lookup_without_default(:foo)
236
+ end
237
+ end
238
+
211
239
  context "typed columns" do
212
240
  context "string data" do
213
241
  should "be writable and readable" do
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: property_sets
3
3
  version: !ruby/object:Gem::Version
4
- hash: 3
4
+ hash: 1
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 5
9
- - 4
10
- version: 0.5.4
9
+ - 5
10
+ version: 0.5.5
11
11
  platform: ruby
12
12
  authors:
13
13
  - Morten Primdahl
@@ -15,60 +15,59 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-09-22 00:00:00 -07:00
18
+ date: 2011-11-29 00:00:00 -08:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
22
22
  name: activesupport
23
- prerelease: false
24
23
  version_requirements: &id001 !ruby/object:Gem::Requirement
25
24
  none: false
26
25
  requirements:
27
26
  - - ~>
28
27
  - !ruby/object:Gem::Version
29
- hash: 23
28
+ hash: 31
30
29
  segments:
31
30
  - 2
32
31
  - 3
33
- - 10
34
- version: 2.3.10
32
+ - 14
33
+ version: 2.3.14
34
+ prerelease: false
35
35
  type: :runtime
36
36
  requirement: *id001
37
37
  - !ruby/object:Gem::Dependency
38
38
  name: activerecord
39
- prerelease: false
40
39
  version_requirements: &id002 !ruby/object:Gem::Requirement
41
40
  none: false
42
41
  requirements:
43
42
  - - ~>
44
43
  - !ruby/object:Gem::Version
45
- hash: 23
44
+ hash: 31
46
45
  segments:
47
46
  - 2
48
47
  - 3
49
- - 10
50
- version: 2.3.10
48
+ - 14
49
+ version: 2.3.14
50
+ prerelease: false
51
51
  type: :runtime
52
52
  requirement: *id002
53
53
  - !ruby/object:Gem::Dependency
54
54
  name: actionpack
55
- prerelease: false
56
55
  version_requirements: &id003 !ruby/object:Gem::Requirement
57
56
  none: false
58
57
  requirements:
59
58
  - - ~>
60
59
  - !ruby/object:Gem::Version
61
- hash: 23
60
+ hash: 31
62
61
  segments:
63
62
  - 2
64
63
  - 3
65
- - 10
66
- version: 2.3.10
64
+ - 14
65
+ version: 2.3.14
66
+ prerelease: false
67
67
  type: :runtime
68
68
  requirement: *id003
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: shoulda
71
- prerelease: false
72
71
  version_requirements: &id004 !ruby/object:Gem::Requirement
73
72
  none: false
74
73
  requirements:
@@ -78,11 +77,11 @@ dependencies:
78
77
  segments:
79
78
  - 0
80
79
  version: "0"
80
+ prerelease: false
81
81
  type: :development
82
82
  requirement: *id004
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: bundler
85
- prerelease: false
86
85
  version_requirements: &id005 !ruby/object:Gem::Requirement
87
86
  none: false
88
87
  requirements:
@@ -94,11 +93,11 @@ dependencies:
94
93
  - 0
95
94
  - 0
96
95
  version: 1.0.0
96
+ prerelease: false
97
97
  type: :development
98
98
  requirement: *id005
99
99
  - !ruby/object:Gem::Dependency
100
100
  name: jeweler
101
- prerelease: false
102
101
  version_requirements: &id006 !ruby/object:Gem::Requirement
103
102
  none: false
104
103
  requirements:
@@ -110,11 +109,11 @@ dependencies:
110
109
  - 5
111
110
  - 1
112
111
  version: 1.5.1
112
+ prerelease: false
113
113
  type: :development
114
114
  requirement: *id006
115
115
  - !ruby/object:Gem::Dependency
116
116
  name: ruby-debug
117
- prerelease: false
118
117
  version_requirements: &id007 !ruby/object:Gem::Requirement
119
118
  none: false
120
119
  requirements:
@@ -124,11 +123,11 @@ dependencies:
124
123
  segments:
125
124
  - 0
126
125
  version: "0"
126
+ prerelease: false
127
127
  type: :development
128
128
  requirement: *id007
129
129
  - !ruby/object:Gem::Dependency
130
130
  name: thoughtbot-shoulda
131
- prerelease: false
132
131
  version_requirements: &id008 !ruby/object:Gem::Requirement
133
132
  none: false
134
133
  requirements:
@@ -138,6 +137,7 @@ dependencies:
138
137
  segments:
139
138
  - 0
140
139
  version: "0"
140
+ prerelease: false
141
141
  type: :development
142
142
  requirement: *id008
143
143
  description: This gem is an ActiveRecord extension which provides a convenient interface for managing per row properties
@@ -201,7 +201,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
201
201
  requirements: []
202
202
 
203
203
  rubyforge_project:
204
- rubygems_version: 1.6.2
204
+ rubygems_version: 1.5.3
205
205
  signing_key:
206
206
  specification_version: 3
207
207
  summary: Property sets for ActiveRecord