enum_plus 0.2.0 → 0.3.0
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 +7 -0
- data/Gemfile.lock +34 -0
- data/Rakefile +9 -0
- data/enum_plus.gemspec +5 -0
- data/lib/enum_plus/version.rb +1 -1
- data/lib/enum_plus.rb +3 -2
- data/test/test_enum_plus.rb +76 -0
- metadata +49 -3
data/Gemfile
CHANGED
data/Gemfile.lock
ADDED
@@ -0,0 +1,34 @@
|
|
1
|
+
PATH
|
2
|
+
remote: .
|
3
|
+
specs:
|
4
|
+
enum_plus (0.2.0)
|
5
|
+
|
6
|
+
GEM
|
7
|
+
remote: http://rubygems.org/
|
8
|
+
specs:
|
9
|
+
activesupport (3.2.7)
|
10
|
+
i18n (~> 0.6)
|
11
|
+
multi_json (~> 1.0)
|
12
|
+
ansi (1.4.3)
|
13
|
+
i18n (0.6.0)
|
14
|
+
minitest (3.3.0)
|
15
|
+
multi_json (1.3.6)
|
16
|
+
rake (0.9.2.2)
|
17
|
+
shoulda (3.1.1)
|
18
|
+
shoulda-context (~> 1.0)
|
19
|
+
shoulda-matchers (~> 1.2)
|
20
|
+
shoulda-context (1.0.0)
|
21
|
+
shoulda-matchers (1.2.0)
|
22
|
+
activesupport (>= 3.0.0)
|
23
|
+
turn (0.9.6)
|
24
|
+
ansi
|
25
|
+
|
26
|
+
PLATFORMS
|
27
|
+
ruby
|
28
|
+
|
29
|
+
DEPENDENCIES
|
30
|
+
enum_plus!
|
31
|
+
minitest
|
32
|
+
rake
|
33
|
+
shoulda (~> 3.1.1)
|
34
|
+
turn (~> 0.9.3)
|
data/Rakefile
CHANGED
data/enum_plus.gemspec
CHANGED
@@ -12,4 +12,9 @@ Gem::Specification.new do |s|
|
|
12
12
|
s.files = `git ls-files`.split("\n")
|
13
13
|
|
14
14
|
s.require_path = 'lib'
|
15
|
+
|
16
|
+
s.add_development_dependency 'rake'
|
17
|
+
s.add_development_dependency 'minitest'
|
18
|
+
s.add_development_dependency 'turn', '~> 0.9.3'
|
19
|
+
s.add_development_dependency 'shoulda', '~> 3.1.1'
|
15
20
|
end
|
data/lib/enum_plus/version.rb
CHANGED
data/lib/enum_plus.rb
CHANGED
@@ -16,6 +16,7 @@ class Object
|
|
16
16
|
def self.enum name, enumeration
|
17
17
|
name = name.to_s
|
18
18
|
class_eval "
|
19
|
+
attr_accessor :#{name}
|
19
20
|
def self.#{name}_values
|
20
21
|
#{enumeration}
|
21
22
|
end
|
@@ -45,9 +46,9 @@ class Object
|
|
45
46
|
end
|
46
47
|
end
|
47
48
|
def #{name}_caption
|
48
|
-
humanize_#{name}
|
49
|
+
self.#{name}.nil? ? self.#{name} : humanize_#{name}(self.#{name})
|
49
50
|
end"
|
50
51
|
|
51
|
-
validates_inclusion_of name.to_sym, { allow_nil: true, in: enumeration } if self.ancestors.include? 'ActiveRecord::Base'
|
52
|
+
# validates_inclusion_of name.to_sym, { allow_nil: true, in: enumeration } if self.ancestors.include? 'ActiveRecord::Base'
|
52
53
|
end
|
53
54
|
end
|
@@ -0,0 +1,76 @@
|
|
1
|
+
require 'test/unit'
|
2
|
+
begin; require 'turn/autorun'; rescue LoadError; end
|
3
|
+
require 'enum_plus'
|
4
|
+
require 'shoulda'
|
5
|
+
|
6
|
+
class EnumPlusTest < Test::Unit::TestCase
|
7
|
+
|
8
|
+
context 'when defining a new object' do
|
9
|
+
setup do
|
10
|
+
class EnumPlusTest
|
11
|
+
end
|
12
|
+
|
13
|
+
@enum_plus_test = EnumPlusTest.new
|
14
|
+
end
|
15
|
+
|
16
|
+
should 'define :enum' do
|
17
|
+
assert EnumPlusTest.singleton_methods.include? :enum
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
context 'with an object using :enum method (e.g. :gender)' do
|
22
|
+
setup do
|
23
|
+
class EnumPlusTest
|
24
|
+
enum :gender, %w(male female)
|
25
|
+
end
|
26
|
+
|
27
|
+
@enum_plus_test = EnumPlusTest.new
|
28
|
+
end
|
29
|
+
|
30
|
+
should 'define `gender_values` method' do
|
31
|
+
assert EnumPlusTest.singleton_methods.include? :gender_values
|
32
|
+
assert_equal %w(male female), EnumPlusTest.gender_values
|
33
|
+
end
|
34
|
+
|
35
|
+
context 'without I18n' do
|
36
|
+
should 'define `gender_caption` method' do
|
37
|
+
assert EnumPlusTest.singleton_methods.include? :gender_captions
|
38
|
+
assert_equal %w(male female), EnumPlusTest.gender_captions
|
39
|
+
end
|
40
|
+
|
41
|
+
should 'define `.humanize_gender` method' do
|
42
|
+
assert @enum_plus_test.methods.include? :humanize_gender
|
43
|
+
|
44
|
+
%w(male female).each do |value|
|
45
|
+
assert_equal value, @enum_plus_test.humanize_gender(value.to_sym)
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
context 'without setting :gender' do
|
50
|
+
should 'define `.gender_caption` method' do
|
51
|
+
assert @enum_plus_test.methods.include? :gender_caption
|
52
|
+
assert_equal nil, @enum_plus_test.gender_caption
|
53
|
+
end
|
54
|
+
%w(male female).each do |value|
|
55
|
+
should "define `.#{value}?` method" do
|
56
|
+
assert @enum_plus_test.methods.include? "#{value}?".to_sym
|
57
|
+
%w(male female).each do |value2|
|
58
|
+
assert_equal false, @enum_plus_test.send("#{value}?".to_sym)
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
context 'with setting :gender' do
|
65
|
+
%w(male female).each do |value|
|
66
|
+
setup { @enum_plus_test.gender = value }
|
67
|
+
|
68
|
+
should "define `.#{value}?` method" do
|
69
|
+
assert @enum_plus_test.methods.include? "#{value}?".to_sym
|
70
|
+
end
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
76
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: enum_plus
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,8 +9,52 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-08-
|
13
|
-
dependencies:
|
12
|
+
date: 2012-08-20 00:00:00.000000000Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: rake
|
16
|
+
requirement: &2153023260 !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '0'
|
22
|
+
type: :development
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: *2153023260
|
25
|
+
- !ruby/object:Gem::Dependency
|
26
|
+
name: minitest
|
27
|
+
requirement: &2153022800 !ruby/object:Gem::Requirement
|
28
|
+
none: false
|
29
|
+
requirements:
|
30
|
+
- - ! '>='
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: '0'
|
33
|
+
type: :development
|
34
|
+
prerelease: false
|
35
|
+
version_requirements: *2153022800
|
36
|
+
- !ruby/object:Gem::Dependency
|
37
|
+
name: turn
|
38
|
+
requirement: &2153022280 !ruby/object:Gem::Requirement
|
39
|
+
none: false
|
40
|
+
requirements:
|
41
|
+
- - ~>
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
version: 0.9.3
|
44
|
+
type: :development
|
45
|
+
prerelease: false
|
46
|
+
version_requirements: *2153022280
|
47
|
+
- !ruby/object:Gem::Dependency
|
48
|
+
name: shoulda
|
49
|
+
requirement: &2152998700 !ruby/object:Gem::Requirement
|
50
|
+
none: false
|
51
|
+
requirements:
|
52
|
+
- - ~>
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: 3.1.1
|
55
|
+
type: :development
|
56
|
+
prerelease: false
|
57
|
+
version_requirements: *2152998700
|
14
58
|
description: Add enumeration to your ruby classes
|
15
59
|
email:
|
16
60
|
- laurentromain@gmail.com
|
@@ -20,12 +64,14 @@ extra_rdoc_files: []
|
|
20
64
|
files:
|
21
65
|
- .gitignore
|
22
66
|
- Gemfile
|
67
|
+
- Gemfile.lock
|
23
68
|
- README.md
|
24
69
|
- Rakefile
|
25
70
|
- enum_plus.gemspec
|
26
71
|
- init.rb
|
27
72
|
- lib/enum_plus.rb
|
28
73
|
- lib/enum_plus/version.rb
|
74
|
+
- test/test_enum_plus.rb
|
29
75
|
homepage: https://github.com/caedes/enum_plus
|
30
76
|
licenses: []
|
31
77
|
post_install_message:
|