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 CHANGED
@@ -1,3 +1,10 @@
1
1
  source 'http://rubygems.org'
2
2
 
3
3
  gemspec
4
+
5
+ group :test do
6
+ gem 'rake'
7
+ gem 'minitest'
8
+ gem 'turn', '~> 0.9.3'
9
+ gem 'shoulda', '~> 3.1.1'
10
+ end
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
@@ -6,3 +6,12 @@ rescue LoadError
6
6
  end
7
7
 
8
8
  Bundler::GemHelper.install_tasks
9
+
10
+ require 'rake/testtask'
11
+
12
+ Rake::TestTask.new do |t|
13
+ t.libs << 'test'
14
+ end
15
+
16
+ desc 'Run tests'
17
+ task default: :test
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
@@ -1,3 +1,3 @@
1
1
  module EnumPlus
2
- VERSION = '0.2.0'
2
+ VERSION = '0.3.0'
3
3
  end
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} self.#{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.2.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-16 00:00:00.000000000Z
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: