active_entity 0.2.0 → 0.2.1
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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +3 -0
- data/README.md +9 -0
- data/Rakefile +5 -1
- data/active_entity.gemspec +4 -4
- data/lib/active_entity/coercion.rb +2 -0
- data/lib/active_entity/default_definitions.rb +2 -0
- data/lib/active_entity/identity.rb +5 -1
- data/lib/active_entity/typecasting.rb +2 -0
- data/lib/active_entity/version.rb +1 -1
- data/lib/active_entity.rb +0 -2
- data/spec/active_entity/identity_spec.rb +16 -2
- data/test/active_mdoel_lint_test.rb +26 -0
- metadata +19 -17
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: bd1c5302faff6d06968065b3820c637038699312
|
4
|
+
data.tar.gz: 9336f00f6d3caae67a630abae2e0ab55a43278f4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a4b2f78cd9da664dc20eb33d442ddac11161fa52b7734bf0f125215d6a75d150edc502fcd4cd74da587f6c5e2f7e8931b7687914d5fddc3c2956f6e573a7638d
|
7
|
+
data.tar.gz: 56426464b9187f3d43cc2164e27e58f818a45e6ee598149b5c46626065c981cf5c084ef8342ba3c35d427261c744535c042e946d73bd8494d04bab8687289ddb
|
data/CHANGELOG.md
CHANGED
data/README.md
CHANGED
@@ -1,6 +1,8 @@
|
|
1
1
|
# ActiveEntity
|
2
2
|
|
3
3
|
An extension for Active Model to encourage implementing entity.
|
4
|
+
It's like [Virtus gem](https://github.com/solnic/virtus) but more simple and
|
5
|
+
on Active Model way.
|
4
6
|
|
5
7
|
[](https://travis-ci.org/taiki45/active_entity) [](https://coveralls.io/r/taiki45/active_entity) [](https://codeclimate.com/github/taiki45/active_entity) [](http://badge.fury.io/rb/active_entity)
|
6
8
|
|
@@ -84,6 +86,13 @@ expect(waffle.steps).to eq('12') #=> rollbacks casted value on error
|
|
84
86
|
expect(waffle.likes).to eq('abc')
|
85
87
|
```
|
86
88
|
|
89
|
+
## TODOs
|
90
|
+
- `to_param` helper.
|
91
|
+
- Default value support.
|
92
|
+
- Custom coercion with object.
|
93
|
+
- Value object.
|
94
|
+
- Docs for typecasting custom procedures.
|
95
|
+
|
87
96
|
## Contributing
|
88
97
|
|
89
98
|
1. Fork it ( https://github.com/taiki45/active_entity/fork )
|
data/Rakefile
CHANGED
@@ -4,5 +4,9 @@ require 'rspec/core/rake_task'
|
|
4
4
|
RSpec::Core::RakeTask.new(:spec) do |task|
|
5
5
|
task.rspec_opts = ['-c', '-fd']
|
6
6
|
end
|
7
|
-
task :default => :spec
|
8
7
|
|
8
|
+
task :test do
|
9
|
+
require File.expand_path('../test/active_mdoel_lint_test.rb', __FILE__)
|
10
|
+
end
|
11
|
+
|
12
|
+
task default: %i(spec test)
|
data/active_entity.gemspec
CHANGED
@@ -21,10 +21,10 @@ Gem::Specification.new do |spec|
|
|
21
21
|
spec.add_dependency "activemodel", ">= 4.0"
|
22
22
|
spec.add_dependency "activesupport", ">= 4.0"
|
23
23
|
spec.add_development_dependency "bundler", "~> 1.7"
|
24
|
-
spec.add_development_dependency "coveralls"
|
25
|
-
spec.add_development_dependency "pry"
|
26
|
-
spec.add_development_dependency "pry-doc"
|
24
|
+
spec.add_development_dependency "coveralls", "~> 0.7"
|
25
|
+
spec.add_development_dependency "pry", "~> 0.10"
|
26
|
+
spec.add_development_dependency "pry-doc", "~> 0.6"
|
27
27
|
spec.add_development_dependency "rake", "~> 10.0"
|
28
28
|
spec.add_development_dependency "rspec", "~> 3.1"
|
29
|
-
spec.add_development_dependency "simplecov"
|
29
|
+
spec.add_development_dependency "simplecov", "~> 0.9"
|
30
30
|
end
|
@@ -20,7 +20,11 @@ module ActiveEntity
|
|
20
20
|
|
21
21
|
# For ActiveModel::Conversion
|
22
22
|
def to_key
|
23
|
-
|
23
|
+
if respond_to?(:persisted?) && persisted?
|
24
|
+
identity_attributes.empty? ? nil : identity_attributes.map {|name| public_send(name) }
|
25
|
+
else
|
26
|
+
nil
|
27
|
+
end
|
24
28
|
end
|
25
29
|
end
|
26
30
|
end
|
data/lib/active_entity.rb
CHANGED
@@ -45,8 +45,22 @@ RSpec.describe ActiveEntity::Identity do
|
|
45
45
|
describe '#to_key' do
|
46
46
|
let(:person) { test_class.new('Alice', 1) }
|
47
47
|
|
48
|
-
|
49
|
-
|
48
|
+
context 'when persisted?' do
|
49
|
+
before do
|
50
|
+
def person.persisted?
|
51
|
+
true
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
it 'returns values of key' do
|
56
|
+
expect(person.to_key).to eq(['Alice', 1])
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
context 'when not persisted?' do
|
61
|
+
it 'returns nil' do
|
62
|
+
expect(person.to_key).to be_nil
|
63
|
+
end
|
50
64
|
end
|
51
65
|
end
|
52
66
|
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
lib = File.expand_path('../lib', __FILE__)
|
2
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
3
|
+
require 'active_entity'
|
4
|
+
|
5
|
+
require 'minitest'
|
6
|
+
require 'minitest/autorun'
|
7
|
+
|
8
|
+
class TestForActiveModelLint < Minitest::Test
|
9
|
+
include ActiveModel::Lint::Tests
|
10
|
+
|
11
|
+
class Person
|
12
|
+
include ActiveModel::Model
|
13
|
+
include ActiveEntity::Accessor
|
14
|
+
include ActiveEntity::Coercion
|
15
|
+
include ActiveEntity::Identity
|
16
|
+
|
17
|
+
attribute :name, type: String
|
18
|
+
attribute :email, type: String
|
19
|
+
|
20
|
+
identity_attribute :email
|
21
|
+
end
|
22
|
+
|
23
|
+
def setup
|
24
|
+
@model = Person.new(name: 'Alice', email: 'alice@example.com')
|
25
|
+
end
|
26
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: active_entity
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Taiki Ono
|
@@ -56,44 +56,44 @@ dependencies:
|
|
56
56
|
name: coveralls
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
|
-
- - "
|
59
|
+
- - "~>"
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version: '0'
|
61
|
+
version: '0.7'
|
62
62
|
type: :development
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
|
-
- - "
|
66
|
+
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version: '0'
|
68
|
+
version: '0.7'
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: pry
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
|
-
- - "
|
73
|
+
- - "~>"
|
74
74
|
- !ruby/object:Gem::Version
|
75
|
-
version: '0'
|
75
|
+
version: '0.10'
|
76
76
|
type: :development
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
|
-
- - "
|
80
|
+
- - "~>"
|
81
81
|
- !ruby/object:Gem::Version
|
82
|
-
version: '0'
|
82
|
+
version: '0.10'
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
84
|
name: pry-doc
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
86
86
|
requirements:
|
87
|
-
- - "
|
87
|
+
- - "~>"
|
88
88
|
- !ruby/object:Gem::Version
|
89
|
-
version: '0'
|
89
|
+
version: '0.6'
|
90
90
|
type: :development
|
91
91
|
prerelease: false
|
92
92
|
version_requirements: !ruby/object:Gem::Requirement
|
93
93
|
requirements:
|
94
|
-
- - "
|
94
|
+
- - "~>"
|
95
95
|
- !ruby/object:Gem::Version
|
96
|
-
version: '0'
|
96
|
+
version: '0.6'
|
97
97
|
- !ruby/object:Gem::Dependency
|
98
98
|
name: rake
|
99
99
|
requirement: !ruby/object:Gem::Requirement
|
@@ -126,16 +126,16 @@ dependencies:
|
|
126
126
|
name: simplecov
|
127
127
|
requirement: !ruby/object:Gem::Requirement
|
128
128
|
requirements:
|
129
|
-
- - "
|
129
|
+
- - "~>"
|
130
130
|
- !ruby/object:Gem::Version
|
131
|
-
version: '0'
|
131
|
+
version: '0.9'
|
132
132
|
type: :development
|
133
133
|
prerelease: false
|
134
134
|
version_requirements: !ruby/object:Gem::Requirement
|
135
135
|
requirements:
|
136
|
-
- - "
|
136
|
+
- - "~>"
|
137
137
|
- !ruby/object:Gem::Version
|
138
|
-
version: '0'
|
138
|
+
version: '0.9'
|
139
139
|
description: An extension for Active Model to encourage implementing entity.
|
140
140
|
email:
|
141
141
|
- taiks.4559@gmail.com
|
@@ -172,6 +172,7 @@ files:
|
|
172
172
|
- spec/active_entity/typecasting_spec.rb
|
173
173
|
- spec/readme_spec.rb
|
174
174
|
- spec/spec_helper.rb
|
175
|
+
- test/active_mdoel_lint_test.rb
|
175
176
|
homepage: https://github.com/taiki45/active_entity
|
176
177
|
licenses:
|
177
178
|
- MIT
|
@@ -206,4 +207,5 @@ test_files:
|
|
206
207
|
- spec/active_entity/typecasting_spec.rb
|
207
208
|
- spec/readme_spec.rb
|
208
209
|
- spec/spec_helper.rb
|
210
|
+
- test/active_mdoel_lint_test.rb
|
209
211
|
has_rdoc:
|