symbolize 4.4.1 → 4.5.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: d0a8758087c5d28ec527fb0bb75b4489dd4bc441
4
- data.tar.gz: 6665a43e07dfac542a0b6a7176de3cdb07b7e360
3
+ metadata.gz: 5fa03980e8f95cd5a9f9517d246364128972c3fd
4
+ data.tar.gz: 934d6ff3ef97dd046ed3d3d7f5241ee0bebf3bff
5
5
  SHA512:
6
- metadata.gz: 9a691b14f575e2208cb782cdf60d595bbced41ca6f6cfb943c3773f57299316897416d8c7f3fc4f92ba4f60b46ef07eb973cc66166044c7394199a966c367321
7
- data.tar.gz: 6f66e3d9c00bf7c8a76e02c7eff06fc0db7042e8393d0be09d7d71fcced04b56889d53801accc5d570eca29ff0637b545e902c22f586b414e5012c1bf5386fad
6
+ metadata.gz: a1b4cc6c15e0bfb030401926817481f578f4e37d9292066996b3bc42346f6023dfe32ca3a6fb0ebfa7ec9ed8b3d8c41d7e44bf0f9d189b027cb14f3d12e923ec
7
+ data.tar.gz: ad06350b50ecd3bcd63abbda8baa36ab34a2fecea34a10c8af86ce50e8421fe135ceda22fb693ac096beca821adf7fffb8b257e4cd678e57281fda95694dd708
data/README.md CHANGED
@@ -143,6 +143,9 @@ If you don`t provide a hash with values, it will try i18n:
143
143
  female: Girl
144
144
  male: Boy
145
145
 
146
+ In some cases, if automatic lookup failes, you may want to try to translate it manully
147
+
148
+ user.get_gender_text # here gender is symbolized field
146
149
 
147
150
  You can skip i18n lookup with :i18n => false
148
151
 
@@ -154,7 +157,7 @@ Scopes
154
157
 
155
158
  With the ':scopes => true' option, you may filter/read/write easily:
156
159
 
157
- User.sex(:female).each ... # => User.where({ :gender => :female })
160
+ User.gender(:female).each ... # => User.where({ :gender => :female })
158
161
 
159
162
 
160
163
  Now, if you provide the ':scopes => :shallow' option, fancy named scopes
data/Rakefile CHANGED
@@ -1,34 +1,7 @@
1
- require 'bundler'
2
- Bundler.setup
1
+ require 'bundler/gem_tasks'
3
2
 
4
- require "rspec"
5
- require "rspec/core/rake_task"
3
+ require 'rspec/core/rake_task'
6
4
 
7
- $LOAD_PATH.unshift File.expand_path("../lib", __FILE__)
8
- require "symbolize/version"
9
-
10
- desc "Builds the gem"
11
- task :gem => :build
12
- task :build do
13
- system "gem build symbolize.gemspec"
14
- Dir.mkdir("pkg") unless Dir.exists?("pkg")
15
- system "mv symbolize-#{Symbolize::VERSION}.gem pkg/"
16
- end
17
-
18
- task :install => :build do
19
- system "sudo gem install pkg/symbolize-#{Symbolize::VERSION}.gem"
20
- end
21
-
22
- desc "Release the gem - Gemcutter"
23
- task :release => :build do
24
- system "git tag -a v#{Symbolize::VERSION} -m 'Tagging #{Symbolize::VERSION}'"
25
- system "git push --tags"
26
- system "gem push pkg/symbolize-#{Symbolize::VERSION}.gem"
27
- end
28
-
29
-
30
- RSpec::Core::RakeTask.new(:spec) do |spec|
31
- spec.pattern = "spec/**/*_spec.rb"
32
- end
5
+ RSpec::Core::RakeTask.new
33
6
 
34
7
  task :default => [:spec]
@@ -6,6 +6,12 @@ end
6
6
  module Symbolize::ActiveRecord
7
7
  extend ActiveSupport::Concern
8
8
 
9
+ included do
10
+ # Returns an array of all the attributes that have been specified for symbolization
11
+ class_attribute :symbolized_attributes, :instance_reader => false
12
+ self.symbolized_attributes = []
13
+ end
14
+
9
15
  # Symbolize ActiveRecord attributes. Add
10
16
  # symbolize :attr_name
11
17
  # to your model class, to make an attribute return symbols instead of
@@ -149,16 +155,38 @@ module Symbolize::ActiveRecord
149
155
  class_eval("def #{attr_name}_text; #{attr_name}.to_s; end")
150
156
  end
151
157
  end
158
+
159
+ # merge new symbolized attribute and create a new array to ensure that each class in inheritance hierarchy
160
+ # has its own array of symbolized attributes
161
+ self.symbolized_attributes += attr_names.map(&:to_s)
162
+ end
163
+
164
+ # Hook used by Rails to do extra stuff to attributes when they are initialized.
165
+ def initialize_attributes *args
166
+ super.tap do |attributes|
167
+ # Make sure any default values read from the database are symbolized
168
+ symbolized_attributes.each do |attr_name|
169
+ attributes[attr_name] = symbolize_attribute(attributes[attr_name])
170
+ end
171
+ end
172
+ end
173
+
174
+ # String becomes symbol, booleans string and nil nil.
175
+ def symbolize_attribute value
176
+ case value
177
+ when String
178
+ value.presence.try(:to_sym)
179
+ when Symbol, TrueClass, FalseClass, Numeric
180
+ value
181
+ else
182
+ nil
183
+ end
152
184
  end
153
185
  end
154
186
 
155
187
  # String becomes symbol, booleans string and nil nil.
156
- def symbolize_attribute attr
157
- case attr
158
- when String then attr.empty? ? nil : attr.to_sym
159
- when Symbol, TrueClass, FalseClass, Numeric then attr
160
- else nil
161
- end
188
+ def symbolize_attribute value
189
+ self.class.symbolize_attribute value
162
190
  end
163
191
 
164
192
  # Return an attribute's value as a symbol or nil
@@ -62,7 +62,7 @@ module Mongoid
62
62
  validation = configuration.delete(:validate) != false
63
63
  field_type = configuration.delete :type
64
64
  default_opt = configuration.delete :default
65
- enum = [true, false] if field_type == Boolean
65
+ enum = [true, false] if [Boolean, ::Boolean].include?(field_type)
66
66
 
67
67
  unless enum.nil?
68
68
 
@@ -72,7 +72,7 @@ module Mongoid
72
72
  #
73
73
  # Builds Mongoid 'field :name, type: type, :default'
74
74
  #
75
- const = "#{attr_name}_values"
75
+ const = "#{attr_name}_values"
76
76
  mongo_opts = ", :type => #{field_type || 'Symbol'}"
77
77
  mongo_opts += ", :default => :#{default_opt}" if default_opt
78
78
  class_eval("field :#{attr_name} #{mongo_opts}")
@@ -110,9 +110,8 @@ module Mongoid
110
110
  if scopes
111
111
  if scopes == :shallow
112
112
  values.each do |k, v|
113
- if k.respond_to?(:to_sym)
114
- scope k.to_sym, -> { where(attr_name => k) }
115
- end
113
+ next unless k.respond_to?(:to_sym)
114
+ scope k.to_sym, -> { where(attr_name => k) }
116
115
  end
117
116
  else # scoped scopes
118
117
  scope attr_name, ->(enum) { where(attr_name => enum) }
@@ -122,8 +121,8 @@ module Mongoid
122
121
  if validation
123
122
  v = "validates :#{attr_names.join(', :')}" +
124
123
  ",:inclusion => { :in => #{values.keys.inspect} }"
125
- v += ",:allow_nil => true" if configuration[:allow_nil]
126
- v += ",:allow_blank => true" if configuration[:allow_blank]
124
+ v += ',:allow_nil => true' if configuration[:allow_nil]
125
+ v += ',:allow_blank => true' if configuration[:allow_blank]
127
126
  class_eval v
128
127
  end
129
128
 
@@ -1,3 +1,3 @@
1
1
  module Symbolize
2
- VERSION = '4.4.1'
2
+ VERSION = '4.5.0'
3
3
  end
@@ -38,31 +38,35 @@ class Permission < ActiveRecord::Base
38
38
  symbolize :lvl, :in => (1..9).to_a, :i18n => false#, :default => 1
39
39
  end
40
40
 
41
- # Make with_scope public-usable for testing
42
- #if ActiveRecord::VERSION::MAJOR < 3
43
- class << ActiveRecord::Base
44
- public :with_scope
41
+ class PermissionSubclass < Permission
42
+ symbolize :sub_lvl
45
43
  end
46
- #end
47
-
48
44
 
49
45
  describe "Symbolize" do
50
46
 
51
47
  it "should respond to symbolize" do
52
- ActiveRecord::Base.should respond_to :symbolize
48
+ expect(ActiveRecord::Base).to respond_to :symbolize
53
49
  end
54
50
 
55
51
  it "should have a valid blueprint" do
56
52
  # Test records
57
53
  u = User.create(:name => 'Bob' , :other => :bar,:status => :inactive, :so => :mac, :gui => :gtk, :language => :en, :sex => false, :cool => false)
58
- u.errors.messages.should be_blank
54
+ expect(u.errors.messages).to be_blank
59
55
  end
60
56
 
61
57
  it "should work nice with default values from active model" do
62
58
  u = User.create(:name => 'Niu' , :other => :bar, :so => :mac, :gui => :gtk, :language => :en, :sex => false, :cool => false)
63
- u.errors.messages.should be_blank
64
- u.status.should eql(:active)
65
- u.should be_active
59
+ expect(u.errors.messages).to be_blank
60
+ expect(u.status).to eql(:active)
61
+ expect(u).to be_active
62
+ end
63
+
64
+ describe ".symbolized_attributes" do
65
+ it "returns the symbolized attribute for the class" do
66
+ expect(UserExtra.symbolized_attributes).to eq ['key']
67
+ expect(Permission.symbolized_attributes).to match_array ['kind', 'lvl']
68
+ expect(PermissionSubclass.symbolized_attributes).to match_array ['kind', 'lvl', 'sub_lvl']
69
+ end
66
70
  end
67
71
 
68
72
  describe "User Instantiated" do
@@ -74,160 +78,200 @@ describe "Symbolize" do
74
78
 
75
79
  describe "test_symbolize_string" do
76
80
  let(:status) { 'inactive' }
77
- its(:status) { should == :inactive }
81
+
82
+ describe '#status' do
83
+ subject { super().status }
84
+ it { is_expected.to eq(:inactive) }
85
+ end
78
86
  # @user.status_before_type_cast.should eql(:inactive)
79
87
  # @user.read_attribute(:status).should eql('inactive')
80
88
  end
81
89
 
82
90
  describe "test_symbolize_symbol" do
83
- its(:status) { should == :active }
84
- its(:status_before_type_cast) { should == :active }
91
+ describe '#status' do
92
+ subject { super().status }
93
+ it { is_expected.to eq(:active) }
94
+ end
95
+
96
+ describe '#status_before_type_cast' do
97
+ subject { super().status_before_type_cast }
98
+ it { is_expected.to eq(:active) }
99
+ end
85
100
  # @user.read_attribute(:status).should eql('active')
86
101
  end
87
102
 
88
103
  describe "should work nice with numbers" do
89
104
  let(:status) { 43 }
90
- its(:status) { should be_present }
105
+
106
+ describe '#status' do
107
+ subject { super().status }
108
+ it { is_expected.to be_present }
109
+ end
91
110
  # @user.status_before_type_cast.should be_nil
92
111
  # @user.read_attribute(:status).should be_nil
93
112
  end
94
113
 
95
114
  describe "should acts nice with nil" do
96
115
  let(:status) { nil }
97
- its(:status) { should be_nil }
98
- its(:status_before_type_cast) { should be_nil }
99
- it { subject.read_attribute(:status).should be_nil }
116
+
117
+ describe '#status' do
118
+ subject { super().status }
119
+ it { is_expected.to be_nil }
120
+ end
121
+
122
+ describe '#status_before_type_cast' do
123
+ subject { super().status_before_type_cast }
124
+ it { is_expected.to be_nil }
125
+ end
126
+ it { expect(subject.read_attribute(:status)).to be_nil }
100
127
  end
101
128
 
102
129
  describe "should acts nice with blank" do
103
130
  let(:status) { "" }
104
- its(:status) { should be_nil }
105
- its(:status_before_type_cast) { should be_nil }
106
- it { subject.read_attribute(:status).should be_nil }
107
- end
108
131
 
109
- describe "test_symbols_quoted_id" do
110
- pending { subject.status.quoted_id.should eql("'active'") }
132
+ describe '#status' do
133
+ subject { super().status }
134
+ it { is_expected.to be_nil }
135
+ end
136
+
137
+ describe '#status_before_type_cast' do
138
+ subject { super().status_before_type_cast }
139
+ it { is_expected.to be_nil }
140
+ end
141
+ it { expect(subject.read_attribute(:status)).to be_nil }
111
142
  end
112
143
 
113
144
  it "should not validates other" do
114
145
  subject.other = nil
115
- subject.should be_valid
146
+ expect(subject).to be_valid
116
147
  subject.other = ""
117
- subject.should be_valid
148
+ expect(subject).to be_valid
118
149
  end
119
150
 
120
151
  it "should get the correct values" do
121
- User.get_status_values.should eql([["Active", :active],["Inactive", :inactive]])
122
- User::STATUS_VALUES.should eql({:inactive=>"Inactive", :active=>"Active"})
152
+ expect(User.get_status_values).to eql([["Active", :active],["Inactive", :inactive]])
153
+ expect(User::STATUS_VALUES).to eql({:inactive=>"Inactive", :active=>"Active"})
123
154
  end
124
155
 
125
156
  it "should get the values for RailsAdmin" do
126
- User.status_enum.should eql([["Active", :active],["Inactive", :inactive]])
157
+ expect(User.status_enum).to eql([["Active", :active],["Inactive", :inactive]])
127
158
  end
128
159
 
129
160
  describe "test_symbolize_humanize" do
130
- its(:status_text) { should eql("Active") }
161
+ describe '#status_text' do
162
+ subject { super().status_text }
163
+ it { is_expected.to eql("Active") }
164
+ end
131
165
  end
132
166
 
133
167
  it "should get the correct values" do
134
- User.get_gui_values.should =~ [["cocoa", :cocoa], ["qt", :qt], ["gtk", :gtk]]
135
- User::GUI_VALUES.should eql({:cocoa=>"cocoa", :qt=>"qt", :gtk=>"gtk"})
168
+ expect(User.get_gui_values).to match_array([["cocoa", :cocoa], ["qt", :qt], ["gtk", :gtk]])
169
+ expect(User::GUI_VALUES).to eql({:cocoa=>"cocoa", :qt=>"qt", :gtk=>"gtk"})
136
170
  end
137
171
 
138
172
  describe "test_symbolize_humanize" do
139
- its(:gui_text) { should eql("qt") }
173
+ describe '#gui_text' do
174
+ subject { super().gui_text }
175
+ it { is_expected.to eql("qt") }
176
+ end
140
177
  end
141
178
 
142
179
  it "should get the correct values" do
143
- User.get_so_values.should =~ [["Linux", :linux], ["Mac OS X", :mac], ["Videogame", :win]]
144
- User::SO_VALUES.should eql({:linux => "Linux", :mac => "Mac OS X", :win => "Videogame"})
180
+ expect(User.get_so_values).to match_array([["Linux", :linux], ["Mac OS X", :mac], ["Videogame", :win]])
181
+ expect(User::SO_VALUES).to eql({:linux => "Linux", :mac => "Mac OS X", :win => "Videogame"})
145
182
  end
146
183
 
147
184
  describe "test_symbolize_humanize" do
148
- its(:so_text) { should eql("Linux") }
185
+ describe '#so_text' do
186
+ subject { super().so_text }
187
+ it { is_expected.to eql("Linux") }
188
+ end
149
189
  end
150
190
 
151
191
  describe "test_symbolize_humanize" do
152
192
  let(:so) { :mac }
153
- its(:so_text) { should eql("Mac OS X") }
193
+
194
+ describe '#so_text' do
195
+ subject { super().so_text }
196
+ it { is_expected.to eql("Mac OS X") }
197
+ end
154
198
  end
155
199
 
156
200
  it "should stringify" do
157
- subject.other_text.should eql("fo")
201
+ expect(subject.other_text).to eql("fo")
158
202
  subject.other = :foo
159
- subject.other_text.should eql("foo")
203
+ expect(subject.other_text).to eql("foo")
160
204
  end
161
205
 
162
206
  describe "should validate status" do
163
207
  let(:status) { nil }
164
- it { should_not be_valid }
165
- it { should have(1).errors }
208
+ it { is_expected.not_to be_valid }
209
+ it 'has 1 error' do
210
+ expect(subject.errors.size).to eq(1)
211
+ end
166
212
  end
167
213
 
168
214
  it "should not validate so" do
169
215
  subject.so = nil
170
- subject.should be_valid
216
+ expect(subject).to be_valid
171
217
  end
172
218
 
173
219
  it "test_symbols_with_weird_chars_quoted_id" do
174
220
  subject.status = :"weird'; chars"
175
- subject.status_before_type_cast.should eql(:"weird'; chars")
176
- # assert_equal "weird'; chars", @user.read_attribute(:status)
177
- # assert_equal "'weird''; chars'", @user.status.quoted_id
221
+ expect(subject.status_before_type_cast).to eql(:"weird'; chars")
178
222
  end
179
223
 
180
224
  it "should work fine through relations" do
181
225
  subject.extras.create(:key => :one)
182
- UserExtra.first.key.should eql(:one)
226
+ expect(UserExtra.first.key).to eql(:one)
183
227
  end
184
228
 
185
229
  it "should play fine with null db columns" do
186
230
  new_extra = subject.extras.build
187
- new_extra.should_not be_valid
231
+ expect(new_extra).not_to be_valid
188
232
  end
189
233
 
190
234
  it "should play fine with null db columns" do
191
235
  new_extra = subject.extras.build
192
- new_extra.should_not be_valid
236
+ expect(new_extra).not_to be_valid
193
237
  end
194
238
 
195
239
  describe "i18n" do
196
240
 
197
241
  it "should test i18n ones" do
198
- subject.language_text.should eql("Português")
242
+ expect(subject.language_text).to eql("Português")
199
243
  end
200
244
 
201
245
  it "should get the correct values" do
202
- User.get_language_values.should =~ [["Português", :pt], ["Inglês", :en]]
246
+ expect(User.get_language_values).to match_array([["Português", :pt], ["Inglês", :en]])
203
247
  end
204
248
 
205
249
  it "should get the correct values" do
206
- User::LANGUAGE_VALUES.should eql({:pt=>"pt", :en=>"en"})
250
+ expect(User::LANGUAGE_VALUES).to eql({:pt=>"pt", :en=>"en"})
207
251
  end
208
252
 
209
253
  it "should test boolean" do
210
- subject.sex_text.should eql("Feminino")
254
+ expect(subject.sex_text).to eql("Feminino")
211
255
  subject.sex = false
212
- subject.sex_text.should eql('Masculino')
256
+ expect(subject.sex_text).to eql('Masculino')
213
257
  end
214
258
 
215
259
  it "should get the correct values" do
216
- User.get_sex_values.should eql([["Feminino", true],["Masculino", false]])
260
+ expect(User.get_sex_values).to eql([["Feminino", true],["Masculino", false]])
217
261
  end
218
262
 
219
263
  it "should get the correct values" do
220
- User::SEX_VALUES.should eql({true=>"true", false=>"false"})
264
+ expect(User::SEX_VALUES).to eql({true=>"true", false=>"false"})
221
265
  end
222
266
 
223
267
  it "should translate a multiword class" do
224
268
  @skill = UserSkill.create(:kind => :magic)
225
- @skill.kind_text.should eql("Mágica")
269
+ expect(@skill.kind_text).to eql("Mágica")
226
270
  end
227
271
 
228
272
  it "should return nil if there's no value" do
229
273
  @skill = UserSkill.create(:kind => nil)
230
- @skill.kind_text.should be_nil
274
+ expect(@skill.kind_text).to be_nil
231
275
  end
232
276
 
233
277
  end
@@ -235,20 +279,20 @@ describe "Symbolize" do
235
279
  describe "Methods" do
236
280
 
237
281
  it "should play nice with other stuff" do
238
- subject.karma.should be_nil
239
- User::KARMA_VALUES.should eql({:bad => "bad", :ugly => "ugly", :good => "good"})
282
+ expect(subject.karma).to be_nil
283
+ expect(User::KARMA_VALUES).to eql({:bad => "bad", :ugly => "ugly", :good => "good"})
240
284
  end
241
285
 
242
286
  it "should provide a boolean method" do
243
- subject.should_not be_good
287
+ expect(subject).not_to be_good
244
288
  subject.karma = :ugly
245
- subject.should be_ugly
289
+ expect(subject).to be_ugly
246
290
  end
247
291
 
248
292
  it "should work" do
249
293
  subject.karma = "good"
250
- subject.should be_good
251
- subject.should_not be_bad
294
+ expect(subject).to be_good
295
+ expect(subject).not_to be_bad
252
296
  end
253
297
 
254
298
  end
@@ -256,31 +300,48 @@ describe "Symbolize" do
256
300
  describe "Changes" do
257
301
 
258
302
  it "is dirty if you change the attribute value" do
259
- subject.language.should == :pt
260
- subject.language_changed?.should be_false
303
+ expect(subject.language).to eq(:pt)
304
+ expect(subject.language_changed?).to be false
261
305
 
262
306
  return_value = subject.language = :en
263
- return_value.should == :en
264
- subject.language_changed?.should be_true
307
+ expect(return_value).to eq(:en)
308
+ expect(subject.language_changed?).to be true
265
309
  end
266
310
 
267
311
  it "is not dirty if you set the attribute value to the same value" do
268
- subject.language.should == :pt
269
- subject.language_changed?.should be_false
312
+ expect(subject.language).to eq(:pt)
313
+ expect(subject.language_changed?).to be false
270
314
 
271
315
  return_value = subject.language = :pt
272
- return_value.should == :pt
273
- subject.language_changed?.should be_false
316
+ expect(return_value).to eq(:pt)
317
+ expect(subject.language_changed?).to be false
274
318
  end
275
319
 
276
320
  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
321
+ expect(subject.language).to eq(:pt)
322
+ expect(subject.language_changed?).to be false
279
323
 
280
324
  return_value = subject.language = 'pt'
281
- subject.language_changed?.should be_false
325
+ expect(subject.language_changed?).to be false
282
326
  end
283
327
 
328
+ it "is not dirty if you set the default attribute value to the same value" do
329
+ user = User.create!(:language => :pt, :sex => true, :cool => true)
330
+ expect(user.status).to eq(:active)
331
+ expect(user).not_to be_changed
332
+
333
+ user.status = :active
334
+ expect(user).not_to be_changed
335
+ end
336
+
337
+ it "is not dirty if you set the default attribute value to the same value (string)" do
338
+ user = User.create!(:language => :pt, :sex => true, :cool => true)
339
+ expect(user.status).to eq(:active)
340
+ expect(user).not_to be_changed
341
+
342
+ user.status = 'active'
343
+ expect(user).not_to be_changed
344
+ end
284
345
  end
285
346
 
286
347
  end
@@ -288,23 +349,23 @@ describe "Symbolize" do
288
349
  describe "more tests on Permission" do
289
350
 
290
351
  it "should use default value on object build" do
291
- Permission.new.kind.should eql(:perm)
352
+ expect(Permission.new.kind).to eql(:perm)
292
353
  end
293
354
 
294
355
  it "should not interfer on create" do
295
356
  Permission.create!(:name => "p7", :kind =>:temp, :lvl => 7)
296
- Permission.find_by_name("p7").kind.should eql(:temp)
357
+ expect(Permission.find_by_name("p7").kind).to eql(:temp)
297
358
  end
298
359
 
299
360
  it "should work on create" do
300
361
  pm = Permission.new(:name => "p7", :lvl => 7)
301
- pm.should be_valid
302
- pm.save.should be_true
362
+ expect(pm).to be_valid
363
+ expect(pm.save).to be true
303
364
  end
304
365
 
305
366
  it "should work on create" do
306
367
  Permission.create!(:name => "p8", :lvl => 9)
307
- Permission.find_by_name("p8").kind.should eql(:perm)
368
+ expect(Permission.find_by_name("p8").kind).to eql(:perm)
308
369
  end
309
370
 
310
371
  it "should work on edit" do
@@ -312,14 +373,14 @@ describe "Symbolize" do
312
373
  pm = Permission.find_by_name("p8")
313
374
  pm.kind = :temp
314
375
  pm.save
315
- Permission.find_by_name("p8").kind.should eql(:temp)
376
+ expect(Permission.find_by_name("p8").kind).to eql(:temp)
316
377
  end
317
378
 
318
379
  it "should work with default values" do
319
380
  pm = Permission.new(:name => "p9")
320
381
  pm.lvl = 9
321
382
  pm.save
322
- Permission.find_by_name("p9").lvl.to_i.should eql(9)
383
+ expect(Permission.find_by_name("p9").lvl.to_i).to eql(9)
323
384
  end
324
385
 
325
386
  end
@@ -332,22 +393,21 @@ describe "Symbolize" do
332
393
  end
333
394
 
334
395
  it "test_symbolized_finder" do
335
- User.where({ :status => :inactive }).all.map(&:name).should eql(['Mary'])
336
- User.find_all_by_status(:inactive).map(&:name).should eql(['Mary'])
396
+ expect(User.where({ :status => :inactive }).all.map(&:name)).to eql(['Mary'])
337
397
  end
338
398
 
339
- it "test_symbolized_with_scope" do
340
- User.with_scope(:find => { :conditions => { :status => :inactive }}) do
341
- User.all.map(&:name).should eql(['Mary'])
399
+ it "test_symbolized_scoping" do
400
+ User.where({ :status => :inactive }).scoping do
401
+ expect(User.all.map(&:name)).to eql(['Mary'])
342
402
  end
343
403
  end
344
404
 
345
405
  it "should have main named scope" do
346
- User.inactive.should == [@mary]
406
+ expect(User.inactive).to eq([@mary])
347
407
  end
348
408
 
349
409
  it "should have other to test better" do
350
- User.so(:linux).should == [@anna]
410
+ expect(User.so(:linux)).to eq([@anna])
351
411
  end
352
412
 
353
413
  # it "should have 'with' helper" do
@@ -376,46 +436,47 @@ describe "Symbolize" do
376
436
 
377
437
  it "should be considered during validation" do
378
438
  @user.valid?
379
- @user.errors.full_messages.should == []
439
+ expect(@user.errors.full_messages).to eq([])
380
440
  end
381
441
 
382
442
  it "should be taken from the DB schema definition" do
383
- @user.country.should == :pt
384
- @user.country_text.should == "Pt"
443
+ expect(@user.country).to eq(:pt)
444
+ expect(@user.country_text).to eq("Pt")
385
445
  end
386
446
 
387
447
  it "should be applied to new, just saved, and reloaded objects, and also play fine with :methods option" do
388
- @user.role.should == :reader
389
- @user.role_text.should == "reader"
390
- @user.should be_reader
448
+ expect(@user.role).to eq(:reader)
449
+ expect(@user.role_text).to eq("reader")
450
+ expect(@user).to be_reader
391
451
  @user.save!
392
- @user.role.should == :reader
393
- @user.should be_reader
452
+ expect(@user.role).to eq(:reader)
453
+ expect(@user).to be_reader
394
454
  @user.reload
395
- @user.role.should == :reader
396
- @user.should be_reader
455
+ expect(@user.role).to eq(:reader)
456
+ expect(@user).to be_reader
397
457
  end
398
458
 
399
459
  it "should be overridable" do
400
460
  @user.role = :writer
401
- @user.role.should == :writer
402
- @user.should be_writer
461
+ expect(@user.role).to eq(:writer)
462
+ expect(@user).to be_writer
403
463
  @user.save!
404
- @user.role.should == :writer
405
- @user.should be_writer
464
+ expect(@user.role).to eq(:writer)
465
+ expect(@user).to be_writer
406
466
  @user.reload
407
- @user.role.should == :writer
408
- @user.should be_writer
467
+ expect(@user.role).to eq(:writer)
468
+ expect(@user).to be_writer
409
469
  end
410
470
 
411
471
  # This feature is for the next major version (b/o the compatibility problem)
412
- pending "should detect name collision caused by ':methods => true' option" do
413
- lambda {
472
+ it "should detect name collision caused by ':methods => true' option" do
473
+ pending 'next major version'
474
+ expect {
414
475
  User.class_eval do
415
476
  # 'reader?' method is already defined, so the line below should raise an error
416
477
  symbolize :some_attr, :in => [:reader, :guest], :methods => true
417
478
  end
418
- }.should raise_error(ArgumentError)
479
+ }.to raise_error(ArgumentError)
419
480
  end
420
481
 
421
482
  end