symbolize 4.3.0 → 4.3.1

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/README.rdoc CHANGED
@@ -13,7 +13,7 @@ and can be set using :symbols or "strings".
13
13
 
14
14
  === Gemfile
15
15
 
16
- gem "symbolize"
16
+ gem 'symbolize'
17
17
 
18
18
 
19
19
  == About
@@ -27,6 +27,7 @@ On schema DBs, the attribute should be a string (varchar) column.
27
27
 
28
28
  == Usage
29
29
 
30
+
30
31
  ActiveRecord:
31
32
 
32
33
  class Contact < ActiveRecord::Base
@@ -36,20 +37,11 @@ ActiveRecord:
36
37
 
37
38
  Mongoid:
38
39
 
39
- require 'symbolize/mongoid'
40
-
41
40
  class Contact
42
41
  include Mongoid::Symbolize
43
42
 
44
43
  symbolize :kind, :in => [:im, :mobile, :email], :scopes => true
45
44
 
46
- or just
47
-
48
- class Contact
49
- include Symbolize::Mongoid
50
-
51
- symbolize :kind, :in => [:im, :mobile, :email], :scopes => true
52
-
53
45
 
54
46
  Other examples:
55
47
 
@@ -77,18 +69,20 @@ Other examples:
77
69
 
78
70
  === in/within
79
71
 
80
- The values allowed on the enum field, you can provide a hash like
72
+ You can provide a hash like for values allowed on the field, e.g.:
81
73
  {:value => "Human text"} or an array of keys to run i18n on.
82
74
  Booleans are also supported. See below.
83
75
 
84
- allow_(blank|nil): What you expect.
85
-
86
76
 
87
- === validate
77
+ === Validate
88
78
 
89
79
  Set to false to avoid the validation of the input.
90
80
  Useful for a dropdown with an "other" option textfield.
91
81
 
82
+ symbolize :color, :in => [:green, :red, :blue], :validate => false
83
+
84
+ There's is also allow_(blank|nil): As you expect.
85
+
92
86
 
93
87
  === method
94
88
 
@@ -139,7 +133,7 @@ You can skip i18n lookup with :i18n => false
139
133
  symbolize :style, :in => [:rock, :punk, :funk, :jazz], :i18n => false
140
134
 
141
135
 
142
- === scopes
136
+ === Scopes
143
137
 
144
138
  If you provide the scopes option, some fancy named scopes will be added:
145
139
  In our User example, gender has male/female options, so you can do:
@@ -163,7 +157,7 @@ For boolean colums you can use
163
157
  ( or with_[attribute] and without_[attribute] )
164
158
 
165
159
 
166
- === default
160
+ === Default
167
161
 
168
162
  As the name suggest, the symbol you choose as default will be set
169
163
  in new objects automatically. Mongoid only for now.
@@ -190,19 +184,6 @@ Somewhere on a view:
190
184
 
191
185
  = select_tag :kind, Coffee.get_genetic_values
192
186
 
193
-
194
- == View Helpers (DEPRECATED)
195
-
196
-
197
- <% form_for @user do |f| %>
198
- <%= f.radio_sym "gender" %>
199
- <!-- Alphabetic order -->
200
- <%= f.select_sym "so" %>
201
- <!-- Fixed order -->
202
- <%= f.select_sym "office" %>
203
- <%end>
204
-
205
-
206
187
  == Specs
207
188
 
208
189
  Run the adapter independently:
@@ -215,4 +196,3 @@ Run the adapter independently:
215
196
 
216
197
  This fork:
217
198
  http://github.com/nofxx/symbolize
218
-
data/lib/symbolize.rb CHANGED
@@ -1,7 +1,7 @@
1
+ # Todo: is this the best way for AR?
1
2
  module Symbolize
2
3
  autoload :ActiveRecord, 'symbolize/active_record'
3
- autoload :Mongoid, 'symbolize/mongoid'
4
4
  end
5
5
 
6
- require 'symbolize/railtie' if defined? Rails
7
-
6
+ require 'symbolize/mongoid' if defined? 'Mongoid'
7
+ require 'symbolize/railtie' if defined? 'Rails'
@@ -108,16 +108,13 @@ module Mongoid
108
108
  end
109
109
 
110
110
  if scopes
111
- values.each do |k, v|
112
- if k.respond_to?(:to_sym)
113
- scope k.to_sym, where({ attr_name => k.to_sym })
114
- end
115
- end
111
+ # scoped scopes
112
+ scope attr_name, ->(enum) { where(attr_name => enum) }
116
113
  end
117
114
 
118
115
  if validation
119
- v = "validates :#{attr_names.join(', :')}"
120
- v += ",:inclusion => { :in => #{values.keys.inspect} }"
116
+ v = "validates :#{attr_names.join(', :')}" +
117
+ ",:inclusion => { :in => #{values.keys.inspect} }"
121
118
  v += ",:allow_nil => true" if configuration[:allow_nil]
122
119
  v += ",:allow_blank => true" if configuration[:allow_blank]
123
120
  class_eval v
@@ -1,3 +1,3 @@
1
1
  module Symbolize
2
- VERSION = '4.3.0'
2
+ VERSION = '4.3.1'
3
3
  end
@@ -253,7 +253,7 @@ describe "Symbolize" do
253
253
 
254
254
  end
255
255
 
256
- describe "Methods" do
256
+ describe "Changes" do
257
257
 
258
258
  it "is dirty if you change the attribute value" do
259
259
  subject.language.should == :pt
@@ -269,7 +269,15 @@ describe "Symbolize" do
269
269
  subject.language_changed?.should be_false
270
270
 
271
271
  return_value = subject.language = :pt
272
- return_value.should == :pt
272
+ return_value.should == :pt
273
+ subject.language_changed?.should be_false
274
+ end
275
+
276
+ it "is not dirty if you set the attribute value to the same value (string)" do
277
+ subject.language.should == :pt
278
+ subject.language_changed?.should be_false
279
+
280
+ return_value = subject.language = 'pt'
273
281
  subject.language_changed?.should be_false
274
282
  end
275
283
 
@@ -98,6 +98,12 @@ describe "Symbolize" do
98
98
  person[:status].should eql(:active)
99
99
  end
100
100
 
101
+ it "should make strings symbols from initializer" do
102
+ other = Person.new(language: 'en', :so => :mac, :gui => :cocoa, :language => :pt, :sex => true, :status => 'active')
103
+ other[:status].should eq(:active)
104
+ other.status.should eq(:active)
105
+ end
106
+
101
107
  # it "should work nice with numbers" do
102
108
  # pending
103
109
  # person.status = 43
@@ -177,17 +183,6 @@ describe "Symbolize" do
177
183
  person.other_text.should eql("foo")
178
184
  end
179
185
 
180
- it "should validate status" do
181
- person.status = nil
182
- person.should_not be_valid
183
- person.should have(1).errors
184
- end
185
-
186
- it "should not validate so" do
187
- person.so = nil
188
- person.should be_valid
189
- end
190
-
191
186
  it "should work with weird chars" do
192
187
  person.status = :"weird'; chars"
193
188
  person.status.should eql(:"weird'; chars")
@@ -203,20 +198,42 @@ describe "Symbolize" do
203
198
  person.skills.first.kind.should eql(:magic)
204
199
  end
205
200
 
206
- # it "should play fine with null db columns" do
207
- # new_extra = person.extras.build
208
- # new_extra.should_not be_valid
209
- # end
210
-
211
- # it "should play fine with null db columns" do
212
- # new_extra = person.extras.build
213
- # new_extra.should_not be_valid
214
- # end
215
-
216
201
  it "should default planet to earth" do
217
202
  Person.new.planet.should eql(:earth)
218
203
  end
219
204
 
205
+ describe "validation" do
206
+
207
+ it "should validate from initializer" do
208
+ other = Person.new(language: 'en', :so => :mac, :gui => :cocoa, :language => :pt, :sex => true, :status => 'active')
209
+ other.should be_valid
210
+ other.errors.messages.should eq({})
211
+ end
212
+
213
+ it "should validate nil" do
214
+ person.status = nil
215
+ person.should_not be_valid
216
+ person.errors.messages.should have_key(:status)
217
+ end
218
+
219
+ it "should validate not included" do
220
+ person.language = 'xx'
221
+ person.should_not be_valid
222
+ person.errors.messages.should have_key(:language)
223
+ end
224
+
225
+ it "should not validate so" do
226
+ person.so = nil
227
+ person.should be_valid
228
+ end
229
+
230
+ it "should validate ok" do
231
+ person.language = 'pt'
232
+ person.should be_valid
233
+ person.errors.messages.should eq({})
234
+ end
235
+
236
+ end
220
237
 
221
238
  describe "i18n" do
222
239
 
@@ -342,6 +359,12 @@ describe "Symbolize" do
342
359
  Project.count.should eql(1)
343
360
  end
344
361
 
362
+ it "should set some scopes" do
363
+ Person.create(:name => 'Bob' , :other => :bar, :status => :active, :so => :mac, :gui => :gtk, :language => :en, :sex => false, :cool => false)
364
+ Person.status(:active).should be_a(Mongoid::Criteria)
365
+ Person.status(:active).count.should eq(1)
366
+ end
367
+
345
368
  end
346
369
 
347
370
  describe "Mongoid stuff" do
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: symbolize
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.3.0
4
+ version: 4.3.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-02-15 00:00:00.000000000 Z
12
+ date: 2013-02-19 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: i18n
@@ -48,17 +48,17 @@ dependencies:
48
48
  requirement: !ruby/object:Gem::Requirement
49
49
  none: false
50
50
  requirements:
51
- - - ~>
51
+ - - ! '>='
52
52
  - !ruby/object:Gem::Version
53
- version: 3.1.0
53
+ version: 3.1.1
54
54
  type: :development
55
55
  prerelease: false
56
56
  version_requirements: !ruby/object:Gem::Requirement
57
57
  none: false
58
58
  requirements:
59
- - - ~>
59
+ - - ! '>='
60
60
  - !ruby/object:Gem::Version
61
- version: 3.1.0
61
+ version: 3.1.1
62
62
  - !ruby/object:Gem::Dependency
63
63
  name: bson_ext
64
64
  requirement: !ruby/object:Gem::Requirement
@@ -158,7 +158,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
158
158
  version: '0'
159
159
  segments:
160
160
  - 0
161
- hash: -669350637973584292
161
+ hash: -387453274023359957
162
162
  required_rubygems_version: !ruby/object:Gem::Requirement
163
163
  none: false
164
164
  requirements: