enum_plus 0.2.0 → 0.3.0

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