galetahub-enum_field 0.5.2 → 0.5.3
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
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 2be661f299492be0519d65da4c1058d38799ff3e
|
4
|
+
data.tar.gz: a06ff5abf876efbfb0d9318aac939566e7daad83
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 243473028ff13052255159cdb793122763ab4e568a7289fa6db1a825dace9edcf7345a6767f8b66f357ee780173e70f50617adcbef293211a35e354225724c45
|
7
|
+
data.tar.gz: e1f248f5232d6aa901081579fba8faddbe86a0a71853b984c76c4fe464f1cc73699ee0f400de0df4866dfde17c13fecd4ecf2b6f7bbd3b078e0dedcd50307f8c
|
data/lib/enum_field.rb
CHANGED
@@ -15,6 +15,7 @@
|
|
15
15
|
module EnumField
|
16
16
|
autoload :DefineEnum, 'enum_field/define_enum'
|
17
17
|
autoload :Builder, 'enum_field/builder'
|
18
|
+
autoload :AttributeValueResolver, 'enum_field/attribute_value_resolver'
|
18
19
|
autoload :EnumeratedAttribute, 'enum_field/enumerated_attribute'
|
19
20
|
autoload :Version, 'enum_field/version'
|
20
21
|
|
@@ -0,0 +1,31 @@
|
|
1
|
+
module EnumField
|
2
|
+
class AttributeValueResolver
|
3
|
+
attr_reader :value, :klass
|
4
|
+
|
5
|
+
def initialize(value, klass)
|
6
|
+
@value = value
|
7
|
+
@klass = klass
|
8
|
+
end
|
9
|
+
|
10
|
+
def resolve
|
11
|
+
if value_is_member?
|
12
|
+
value.id
|
13
|
+
elsif value_is_member_name?
|
14
|
+
klass.send(value).id
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
private
|
19
|
+
|
20
|
+
def value_is_member?
|
21
|
+
value && value.respond_to?(:id)
|
22
|
+
end
|
23
|
+
|
24
|
+
def value_is_member_name?
|
25
|
+
return false unless value.is_a?(Symbol)
|
26
|
+
return true if klass.respond_to?(value)
|
27
|
+
|
28
|
+
raise EnumField::ObjectNotFound, value
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
data/lib/enum_field/version.rb
CHANGED
@@ -0,0 +1,31 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe EnumField::AttributeValueResolver do
|
4
|
+
# Sample ruby class
|
5
|
+
class Role
|
6
|
+
include EnumField::DefineEnum
|
7
|
+
|
8
|
+
define_enum do
|
9
|
+
member :admin
|
10
|
+
member :manager
|
11
|
+
member :employee
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
it 'should find object by member name and return id' do
|
16
|
+
expect(described_class.new(:admin, Role).resolve).to eq 1
|
17
|
+
expect(described_class.new(:manager, Role).resolve).to eq 2
|
18
|
+
expect(described_class.new(:employee, Role).resolve).to eq 3
|
19
|
+
end
|
20
|
+
|
21
|
+
it 'should raise error on invalid member name' do
|
22
|
+
expect { described_class.new(:invalid_member_name, Role).resolve }
|
23
|
+
.to raise_error(EnumField::ObjectNotFound)
|
24
|
+
end
|
25
|
+
|
26
|
+
it 'should return member id' do
|
27
|
+
expect(described_class.new(Role.admin, Role).resolve).to eq 1
|
28
|
+
expect(described_class.new(Role.manager, Role).resolve).to eq 2
|
29
|
+
expect(described_class.new(Role.employee, Role).resolve).to eq 3
|
30
|
+
end
|
31
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: galetahub-enum_field
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.5.
|
4
|
+
version: 0.5.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Igor Galeta
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2019-04-12 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: activesupport
|
@@ -79,10 +79,12 @@ files:
|
|
79
79
|
- README.md
|
80
80
|
- Rakefile
|
81
81
|
- lib/enum_field.rb
|
82
|
+
- lib/enum_field/attribute_value_resolver.rb
|
82
83
|
- lib/enum_field/builder.rb
|
83
84
|
- lib/enum_field/define_enum.rb
|
84
85
|
- lib/enum_field/enumerated_attribute.rb
|
85
86
|
- lib/enum_field/version.rb
|
87
|
+
- spec/enum_field/attribute_value_resolver_spec.rb
|
86
88
|
- spec/enum_field/define_enum_spec.rb
|
87
89
|
- spec/enum_field/enumerated_attribute_spec.rb
|
88
90
|
- spec/enum_field_spec.rb
|
@@ -106,11 +108,12 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
106
108
|
version: '0'
|
107
109
|
requirements: []
|
108
110
|
rubyforge_project:
|
109
|
-
rubygems_version: 2.
|
111
|
+
rubygems_version: 2.5.2.3
|
110
112
|
signing_key:
|
111
113
|
specification_version: 4
|
112
114
|
summary: Enumerated attributes for any ruby class aka Active Record
|
113
115
|
test_files:
|
116
|
+
- spec/enum_field/attribute_value_resolver_spec.rb
|
114
117
|
- spec/enum_field/define_enum_spec.rb
|
115
118
|
- spec/enum_field/enumerated_attribute_spec.rb
|
116
119
|
- spec/enum_field_spec.rb
|