active_entity 0.2.0 → 0.2.1

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
2
  SHA1:
3
- metadata.gz: 7f64f30d78308e4f5887107685f1c7801485138f
4
- data.tar.gz: 477079a529608f27cc99ed5be0e6da67edfddd65
3
+ metadata.gz: bd1c5302faff6d06968065b3820c637038699312
4
+ data.tar.gz: 9336f00f6d3caae67a630abae2e0ab55a43278f4
5
5
  SHA512:
6
- metadata.gz: cd7a1b494c16cd2c2fcc0717f1eebe40310abfed70e340e2ecccd650ee3fadcd1ec8fc1d65d04c7f45feecce50f0d7d3c1ac94a6fcbd1ba11f3e8cc07b938f16
7
- data.tar.gz: 8f6cadc7b710a9de8a3c4d839fdd123b754ef85c77dccb32765eb58b4cf24899f8177c4d5571fd8911721d3b1eaa2e4e765cc7642c085ed1d32b7cf3d461b581
6
+ metadata.gz: a4b2f78cd9da664dc20eb33d442ddac11161fa52b7734bf0f125215d6a75d150edc502fcd4cd74da587f6c5e2f7e8931b7687914d5fddc3c2956f6e573a7638d
7
+ data.tar.gz: 56426464b9187f3d43cc2164e27e58f818a45e6ee598149b5c46626065c981cf5c084ef8342ba3c35d427261c744535c042e946d73bd8494d04bab8687289ddb
data/CHANGELOG.md CHANGED
@@ -1,2 +1,5 @@
1
+ ## 0.2.1
2
+ * Make 100% compatible with Active Model API.
3
+
1
4
  ## 0.2.0
2
5
  * Introduce explicit type conversion and implicit coercion extension.
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
  [![Build Status](https://travis-ci.org/taiki45/active_entity.svg?branch=master)](https://travis-ci.org/taiki45/active_entity) [![Coverage Status](https://coveralls.io/repos/taiki45/active_entity/badge.svg)](https://coveralls.io/r/taiki45/active_entity) [![Code Climate](https://codeclimate.com/github/taiki45/active_entity/badges/gpa.svg)](https://codeclimate.com/github/taiki45/active_entity) [![Gem Version](https://badge.fury.io/rb/active_entity.svg)](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)
@@ -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
@@ -1,4 +1,6 @@
1
1
  module ActiveEntity
2
+ # Offers implicit type conversion on initializing.
3
+ # This depends `ActiveEntity::Accessor#defined_attributes`.
2
4
  module Coercion
3
5
  include Typecasting
4
6
 
@@ -1,3 +1,5 @@
1
+ # Define default type conversion procedures.
2
+
1
3
  ActiveEntity::ConversionDefinitions.set(:Boolean) do |value|
2
4
  case value
3
5
  when 'true'
@@ -20,7 +20,11 @@ module ActiveEntity
20
20
 
21
21
  # For ActiveModel::Conversion
22
22
  def to_key
23
- identity_attributes.empty? ? nil : identity_attributes.map {|name| public_send(name) }
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
@@ -1,4 +1,6 @@
1
1
  module ActiveEntity
2
+ # Offers explicit type conversion.
3
+ # This depends `ActiveEntity::Accessor#defined_attributes`.
2
4
  module Typecasting
3
5
  # Try to cast attribute values. When fails to cast, raises the error and
4
6
  # rollbacks all values.
@@ -1,3 +1,3 @@
1
1
  module ActiveEntity
2
- VERSION = '0.2.0'
2
+ VERSION = '0.2.1'
3
3
  end
data/lib/active_entity.rb CHANGED
@@ -10,7 +10,5 @@ require 'active_entity/typecasting'
10
10
  require 'active_entity/coercion'
11
11
  require 'active_entity/identity'
12
12
 
13
- # TODO: to_param
14
-
15
13
  require 'active_entity/conversion_definitions'
16
14
  require 'active_entity/default_definitions'
@@ -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
- it 'returns values of key' do
49
- expect(person.to_key).to eq(['Alice', 1])
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.0
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: