property_sets 0.5.4 → 0.5.5

Sign up to get free protection for your applications and to get access to all the features.
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