acfs 0.20.0.dev.b184 → 0.20.0

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: e7f62eaa2b5584729416f2b77d93cc21ee4903a8
4
- data.tar.gz: b2cda0de25131aa71694a4df70e0dda699c517cc
3
+ metadata.gz: a4e5e93e4dee6f02a8b6a830f83a710bd98a7134
4
+ data.tar.gz: 9833f7ea561dfe761689915f61daf25a33e25ca1
5
5
  SHA512:
6
- metadata.gz: 81ca070389fb2f288e34a56a792ee95c5918f10f99a4edc0179f760ac89cd48eb4ce9dccd60aa3cc528f559dc0b7c3ba9c2269af8c4a8b8a18ac6eb71a7354a0
7
- data.tar.gz: 22dec0fbe72fac7e0215674ea5d7ac6ddeab1c60ab4ca8e2e362a154152838e50473586014f991a1f4bdc28a0c1743fc6ffb11216b92e3e4eacc5319547c099c
6
+ metadata.gz: 20fae6a5edfd9e81f9f893846951d907226f6c77866cb20938c926dbad8f3b21842c051314cfb91268cdee3e98875e836456436a024be9505148562deabe79c1
7
+ data.tar.gz: 7eb8bf6e3bd84961a550201d77f2f6e2fe85779108045a4fe991b4537d50cdabedf916e35361b80027022f2e43d141e8e116201ebd859d23b780fc004e48cc76
@@ -1,22 +1,15 @@
1
1
  language: ruby
2
2
  bundler_args: --without development
3
3
  rvm:
4
- - 2.0.0
5
- - 1.9.3
6
- - jruby
7
- - rbx-19mode
4
+ - 2.0.0
5
+ - 1.9.3
6
+ - jruby
7
+ - rbx-19mode
8
+
8
9
  gemfile:
9
- - gemfiles/Gemfile.rails-4-0
10
- - gemfiles/Gemfile.rails-3-2
11
- - gemfiles/Gemfile.rails-3-1
10
+ - gemfiles/Gemfile.rails-3-1
11
+ - gemfiles/Gemfile.rails-3-2
12
+ - gemfiles/Gemfile.rails-4-0
13
+
12
14
  services:
13
- - rabbitmq
14
- deploy:
15
- provider: rubygems
16
- api_key:
17
- secure: gNudZK0JaRRweudmkpdkJjUMydItTSW5cXjpYdYCfahqd/cD0xPjxotr2TCHrJibfVauoT/PytbQWcP3jnOYytp6oS0up5Y+uKpGmbqVYx/rZvShWALszcBs71lUh/IZpDXNHc+yo/01HCn10/uQUFRtrjWgMwHtHxXb09xE4wQ=
18
- gem: acfs
19
- on:
20
- branch: master
21
- repo: jgraichen/acfs
22
- rvm: 2.0.0
15
+ - rabbitmq
@@ -1,11 +1,5 @@
1
1
  # Changelog
2
2
 
3
- ## 0.21.0.dev
4
-
5
- * Add update_attributes
6
- * Add validation check to `save` method
7
- * Inherit attributes to subclasses
8
-
9
3
  ## 0.20.0
10
4
 
11
5
  * Remove messaging
@@ -26,6 +26,4 @@ Gem::Specification.new do |spec|
26
26
  spec.add_runtime_dependency 'rack'
27
27
 
28
28
  spec.add_development_dependency 'bundler', '~> 1.3'
29
-
30
- spec.version = "#{spec.version}.b#{ENV['TRAVIS_BUILD_NUMBER']}" if ENV['TRAVIS_BUILD_NUMBER']
31
29
  end
@@ -4,30 +4,35 @@ require 'active_support/core_ext/class'
4
4
  require 'active_support/core_ext/string'
5
5
  require 'active_support/core_ext/module'
6
6
 
7
+ require 'acfs/version'
8
+ require 'acfs/errors'
9
+ require 'acfs/global'
10
+
7
11
  module Acfs
8
12
  extend ActiveSupport::Autoload
9
- require 'acfs/version'
10
- require 'acfs/errors'
11
- require 'acfs/global'
12
-
13
- require 'acfs/collection'
14
- require 'acfs/configuration'
15
- require 'acfs/model'
16
- require 'acfs/operation'
17
- require 'acfs/request'
18
- require 'acfs/resource'
19
- require 'acfs/response'
20
- require 'acfs/runner'
21
- require 'acfs/service'
22
-
23
13
  extend Global
24
14
 
15
+ autoload :Collection
16
+ autoload :Model
17
+ autoload :Request
18
+ autoload :Response
19
+ autoload :Service
25
20
  autoload :Stub
21
+ autoload :Operation
22
+ autoload :Runner
23
+ autoload :Configuration
24
+
25
+ module Messaging
26
+ extend ActiveSupport::Autoload
27
+
28
+ autoload :Client
29
+ autoload :Receiver
30
+ end
26
31
 
27
32
  module Middleware
28
33
  extend ActiveSupport::Autoload
29
- require 'acfs/middleware/base'
30
34
 
35
+ autoload :Base
31
36
  autoload :Print
32
37
  autoload :Logger
33
38
  autoload :JsonDecoder
@@ -37,8 +42,10 @@ module Acfs
37
42
  end
38
43
 
39
44
  module Adapter
40
- require 'acfs/adapter/base'
41
- require 'acfs/adapter/typhoeus'
45
+ extend ActiveSupport::Autoload
46
+
47
+ autoload :Base
48
+ autoload :Typhoeus
42
49
  end
43
50
  end
44
51
 
@@ -3,52 +3,46 @@ module Acfs
3
3
  # Acfs base error.
4
4
  #
5
5
  class Error < StandardError
6
- def initialize(opts = {}, message = nil)
7
- opts.merge! message: message if message
8
- super opts[:message]
9
- end
10
6
  end
11
7
 
12
8
  # Response error containing the responsible response object.
13
9
  #
14
10
  class ErroneousResponse < Error
15
- attr_reader :response
11
+ attr_accessor :response
16
12
 
17
- def initialize(opts = {})
18
- @response = opts[:response]
19
- message = 'Received erroneous response'
20
- if response
21
- message << ": #{response.code}"
22
- if response.data
23
- message << "\n with content:\n "
24
- message << response.data.map{|k,v| "#{k.inspect}: #{v.inspect}"}.join("\n ")
25
- end
26
- if response.headers.any?
27
- message << "\n with headers:\n "
28
- message << response.headers.map{|k,v| "#{k}: #{v}"}.join("\n ")
29
- end
30
- message << "\nbased on request: #{response.request.method.upcase} #{response.request.url} #{response.request.format}"
31
- if response.request.data
32
- message << "\n with content:\n "
33
- message << response.request.data.map{|k,v| "#{k.inspect}: #{v.inspect}"}.join("\n ")
34
- end
35
- if response.request.headers.any?
36
- message << "\n with headers:\n "
37
- message << response.request.headers.map{|k,v| "#{k}: #{v}"}.join("\n ")
38
- end
13
+ def initialize(data = {})
14
+ self.response = data[:response]
15
+ message = ''
16
+ message << "Received erroneous response: #{response.code}"
17
+ if response.data
18
+ message << "\n with content:\n "
19
+ message << response.data.map{|k,v| "#{k.inspect}: #{v.inspect}"}.join("\n ")
20
+ end
21
+ if response.headers.any?
22
+ message << "\n with headers:\n "
23
+ message << response.headers.map{|k,v| "#{k}: #{v}"}.join("\n ")
24
+ end
25
+ message << "\nbased on request: #{response.request.method.upcase} #{response.request.url} #{response.request.format}"
26
+ if response.request.data
27
+ message << "\n with content:\n "
28
+ message << response.request.data.map{|k,v| "#{k.inspect}: #{v.inspect}"}.join("\n ")
39
29
  end
40
- super opts, message
30
+ if response.request.headers.any?
31
+ message << "\n with headers:\n "
32
+ message << response.request.headers.map{|k,v| "#{k}: #{v}"}.join("\n ")
33
+ end
34
+ super message
41
35
  end
42
36
  end
43
37
 
44
38
  class AmbiguousStubError < Error
45
39
  attr_reader :stubs, :operation
46
40
 
47
- def initialize(opts = {})
48
- @stubs = opts.delete :stubs
49
- @operation = opts.delete :operation
41
+ def initialize(stubs, operation)
42
+ @stubs = stubs
43
+ @operation = operation
50
44
 
51
- super opts, 'Ambiguous stubs.'
45
+ super 'Ambiguous stubs.'
52
46
  end
53
47
 
54
48
  end
@@ -59,27 +53,10 @@ module Acfs
59
53
  end
60
54
 
61
55
  class InvalidResource < ErroneousResponse
62
- attr_reader :errors, :resource
63
-
64
- def initialize(opts = {})
65
- @errors = opts.delete :errors
66
- @resource = opts.delete :resource
67
- super
68
- end
69
- end
70
-
71
- # A ResourceNotLoaded error will be thrown when calling some
72
- # modifing methods on not loaded resources as it is usally
73
- # unwanted to call e.g. `update_attributes` on a not loaded
74
- # resource.
75
- # Correct solution is to first run `Acfs.run` to fetch the
76
- # resource and then update the resource.
77
- #
78
- class ResourceNotLoaded < Error
79
- attr_reader :resource
56
+ attr_accessor :errors
80
57
 
81
- def initialize(opts = {})
82
- @resource = opts.delete :resource
58
+ def initialize(data)
59
+ self.errors = data[:errors]
83
60
  super
84
61
  end
85
62
  end
@@ -1,43 +1,44 @@
1
1
  require 'active_model'
2
2
 
3
- # @api public
4
- #
5
- module Acfs::Model
6
- require 'acfs/model/attributes'
7
- require 'acfs/model/dirty'
8
- require 'acfs/model/loadable'
9
- require 'acfs/model/locatable'
10
- require 'acfs/model/operational'
11
- require 'acfs/model/persistence'
12
- require 'acfs/model/query_methods'
13
- require 'acfs/model/relations'
14
- require 'acfs/model/service'
15
- require 'acfs/model/validation'
3
+ require 'acfs/model/attributes'
4
+ require 'acfs/model/dirty'
5
+ require 'acfs/model/loadable'
6
+ require 'acfs/model/locatable'
7
+ require 'acfs/model/persistence'
8
+ require 'acfs/model/operational'
9
+ require 'acfs/model/query_methods'
10
+ require 'acfs/model/relations'
11
+ require 'acfs/model/service'
16
12
 
17
- extend ActiveSupport::Concern
13
+ module Acfs
18
14
 
19
- included do
20
- if ActiveModel::VERSION::MAJOR >= 4
21
- include ActiveModel::Model
22
- else
23
- extend ActiveModel::Naming
24
- extend ActiveModel::Translation
25
- include ActiveModel::Conversion
26
- include ActiveModel::Validations
15
+ # @api public
16
+ #
17
+ module Model
18
+ extend ActiveSupport::Concern
27
19
 
28
- require 'acfs/model/initialization'
29
- include Initialization
30
- end
20
+ included do
21
+ if ActiveModel::VERSION::MAJOR >= 4
22
+ include ActiveModel::Model
23
+ else
24
+ extend ActiveModel::Naming
25
+ extend ActiveModel::Translation
26
+ include ActiveModel::Conversion
27
+ include ActiveModel::Validations
28
+
29
+ require 'acfs/model/initialization'
30
+ include Model::Initialization
31
+ end
31
32
 
32
- include Attributes
33
- include Loadable
34
- include Persistence
35
- include Locatable
36
- include Operational
37
- include QueryMethods
38
- include Relations
39
- include Service
40
- include Dirty
41
- include Validation
33
+ include Model::Attributes
34
+ include Model::Loadable
35
+ include Model::Persistence
36
+ include Model::Locatable
37
+ include Model::Operational
38
+ include Model::QueryMethods
39
+ include Model::Relations
40
+ include Model::Service
41
+ include Model::Dirty
42
+ end
42
43
  end
43
44
  end
@@ -187,7 +187,7 @@ module Acfs::Model
187
187
  # @return [ Hash{ String => Object, Proc } ] Attributes with default values.
188
188
  #
189
189
  def attributes
190
- @attributes ||= {}.merge superclass.respond_to?(:attributes) ? superclass.attributes : {}
190
+ @attributes ||= {}
191
191
  end
192
192
 
193
193
  # @api public
@@ -205,7 +205,7 @@ module Acfs::Model
205
205
  # @return [ Hash{ Symbol => Class } ] Attributes and their types.
206
206
  #
207
207
  def attribute_types
208
- @attribute_types ||= {}.merge superclass.respond_to?(:attribute_types) ? superclass.attribute_types : {}
208
+ @attribute_types ||= {}
209
209
  end
210
210
 
211
211
  private
@@ -26,7 +26,7 @@ module Acfs
26
26
  # user2.save
27
27
  # user2.persisted? # => true
28
28
  #
29
- # @return [Boolean] True if resource has no changes and is not newly created, false otherwise.
29
+ # @return [TrueClass, FalseClass] True if resource has no changes and is not newly created, false otherwise.
30
30
  #
31
31
  def persisted?
32
32
  !new? && !changed?
@@ -36,7 +36,7 @@ module Acfs
36
36
  #
37
37
  # Return true if model is a new record and was not saved yet.
38
38
  #
39
- # @return [Boolean] True if resource is newly created, false otherwise.
39
+ # @return [TrueClass, FalseClass] True if resource is newly created, false otherwise.
40
40
  #
41
41
  def new?
42
42
  read_attribute(:id).nil?
@@ -52,7 +52,7 @@ module Acfs
52
52
  #
53
53
  # Saving a resource is a synchronous operation.
54
54
  #
55
- # @return [Boolean] True if save operation was successful, false otherwise.
55
+ # @return [TrueClass, FalseClass] True if save operation was successful, false otherwise.
56
56
  # @see #save! See #save! for available options.
57
57
  #
58
58
  def save(*args)
@@ -79,6 +79,8 @@ module Acfs
79
79
  # @see #save
80
80
  #
81
81
  def save!(opts = {})
82
+ #raise ::Acfs::InvalidResource errors: errors.to_a unless valid?
83
+
82
84
  opts[:data] = attributes unless opts[:data]
83
85
 
84
86
  operation (new? ? :create : :update), opts do |data|
@@ -86,60 +88,13 @@ module Acfs
86
88
  end
87
89
  end
88
90
 
89
- # @api public
90
- #
91
- # Update attributes with given data and save resource.
92
- #
93
- # Saving a resource is a synchronous operation.
94
- #
95
- # @param [Hash] attrs Hash with attributes to write.
96
- # @param [Hash] opts Options passed to `save`.
97
- #
98
- # @return [Boolean] True if save operation was successful, false otherwise.
99
- #
100
- # @see #save
101
- # @see #attributes=
102
- # @see #update_attributes!
103
- #
104
- def update_attributes(attrs, opts = {})
105
- check_loaded! opts
106
-
107
- self.attributes = attrs
108
- save opts
109
- end
110
-
111
- # @api public
112
- #
113
- # Update attributes with given data and save resource.
114
- #
115
- # Saving a resource is a synchronous operation.
116
- #
117
- # @param [Hash] attrs Hash with attributes to write.
118
- # @param [Hash] opts Options passed to `save!`.
119
- #
120
- # @raise [Acfs::InvalidResource]
121
- # If remote services respond with 422 response. Will fill errors with data from response
122
- # @raise [Acfs::ErroneousResponse]
123
- # If remote service respond with not successful response.
124
- #
125
- # @see #save!
126
- # @see #attributes=
127
- # @see #update_attributes
128
- #
129
- def update_attributes!(attrs, opts = {})
130
- check_loaded! opts
131
-
132
- self.attributes = attrs
133
- save! opts
134
- end
135
-
136
91
  # @api public
137
92
  #
138
93
  # Destroy resource by sending a DELETE request.
139
94
  #
140
95
  # Deleting a resource is a synchronous operation.
141
96
  #
142
- # @return [Boolean]
97
+ # @return [TrueClass, FalseClass]
143
98
  # @see #delete!
144
99
  #
145
100
  def delete(opts = {})
@@ -231,10 +186,6 @@ module Acfs
231
186
  self.attributes = data
232
187
  loaded!
233
188
  end
234
-
235
- def check_loaded!(opts = {})
236
- raise ResourceNotLoaded, resource: self unless loaded? or opts[:force]
237
- end
238
189
  end
239
190
  end
240
191
  end
@@ -98,7 +98,7 @@ module Acfs
98
98
 
99
99
  accepted_stubs = stubs.select { |stub| stub.accept? op }
100
100
 
101
- raise AmbiguousStubError.new stubs: accepted_stubs, operation: op if accepted_stubs.size > 1
101
+ raise AmbiguousStubError.new accepted_stubs, op if accepted_stubs.size > 1
102
102
 
103
103
  accepted_stubs.first
104
104
  end
@@ -3,7 +3,7 @@ module Acfs
3
3
  MAJOR = 0
4
4
  MINOR = 20
5
5
  PATCH = 0
6
- STAGE = :dev
6
+ STAGE = nil
7
7
 
8
8
  STRING = [MAJOR, MINOR, PATCH, STAGE].reject(&:nil?).join('.')
9
9
 
@@ -109,7 +109,7 @@ describe Acfs::Model::Attributes do
109
109
 
110
110
  it 'should cast values' do
111
111
  o = model.new
112
- o.age = '28'
112
+ o.age = "28"
113
113
 
114
114
  expect(o.age).to be == 28
115
115
  end
@@ -3,7 +3,7 @@ require 'spec_helper'
3
3
  describe Acfs::Model::Persistence do
4
4
  let(:model_class) { MyUser }
5
5
  before do
6
- @get_stub = stub_request(:get, 'http://users.example.org/users/1').to_return response({ id: 1, name: 'Anon', age: 12 })
6
+ @get_stub = stub_request(:get, 'http://users.example.org/users/1').to_return response({ id: 1, name: "Anon", age: 12 })
7
7
 
8
8
  @patch_stub = stub_request(:put, 'http://users.example.org/users/1')
9
9
  .with(body: '{"id":1,"name":"Idefix","age":12}')
@@ -71,20 +71,6 @@ describe Acfs::Model::Persistence do
71
71
  end
72
72
  end
73
73
 
74
- context 'unloaded model' do
75
- let!(:model) { model_class.find 1 }
76
-
77
- describe '#update_attributes' do
78
- subject { -> { model.update_attributes name: 'John' } }
79
- it { expect{ subject.call }.to raise_error Acfs::ResourceNotLoaded }
80
- end
81
-
82
- describe '#update_attributes!' do
83
- subject { -> { model.update_attributes! name: 'John' } }
84
- it { expect{ subject.call }.to raise_error Acfs::ResourceNotLoaded }
85
- end
86
- end
87
-
88
74
  context 'loaded model' do
89
75
  context 'without changes' do
90
76
  let(:model) { model_class.find 1 }
@@ -116,46 +102,6 @@ describe Acfs::Model::Persistence do
116
102
  expect(model).to be_frozen
117
103
  end
118
104
  end
119
-
120
- describe '#update_atributes!' do
121
- let(:model) { model_class.find 1 }
122
- before { model; Acfs.run }
123
-
124
- it 'should set attributes' do
125
- model.update_attributes name: 'Idefix'
126
- expect(model.attributes.symbolize_keys).to eq id: 1, name: 'Idefix', age: 12
127
- end
128
-
129
- it 'should save resource' do
130
- expect(model).to receive(:save).with({})
131
- model.update_attributes name: 'Idefix'
132
- end
133
-
134
- it 'should pass second hash to save' do
135
- expect(model).to receive(:save).with({ bla: 'blub' })
136
- model.update_attributes({ name: 'Idefix' }, { bla: 'blub' })
137
- end
138
- end
139
-
140
- describe '#update_atributes' do
141
- let(:model) { model_class.find 1 }
142
- before { model; Acfs.run }
143
-
144
- it 'should set attributes' do
145
- model.update_attributes! name: 'Idefix'
146
- expect(model.attributes.symbolize_keys).to eq id: 1, name: 'Idefix', age: 12
147
- end
148
-
149
- it 'should save resource' do
150
- expect(model).to receive(:save!).with({})
151
- model.update_attributes! name: 'Idefix'
152
- end
153
-
154
- it 'should pass second hash to save' do
155
- expect(model).to receive(:save!).with({ bla: 'blub' })
156
- model.update_attributes!({ name: 'Idefix' }, { bla: 'blub' })
157
- end
158
- end
159
105
  end
160
106
 
161
107
  describe '.create!' do
@@ -179,7 +125,7 @@ describe Acfs::Model::Persistence do
179
125
 
180
126
  it 'should raise an error' do
181
127
  expect { model_class.create! data }.to raise_error ::Acfs::InvalidResource do |error|
182
- expect(error.errors).to be == { name: %w(required) }.stringify_keys
128
+ expect(error.errors).to be == { name: ['required'] }.stringify_keys
183
129
  end
184
130
  end
185
131
  end
@@ -211,7 +157,7 @@ describe Acfs::Model::Persistence do
211
157
 
212
158
  it 'should contain error hash' do
213
159
  model = model_class.create data
214
- expect(model.errors.to_hash).to be == { name: %w(required) }.stringify_keys
160
+ expect(model.errors.to_hash).to be == { name: [ "required" ]}.stringify_keys
215
161
  end
216
162
  end
217
163
  end
@@ -21,7 +21,7 @@ RSpec.configure do |config|
21
21
  # order dependency and want to debug it, you can fix the order by providing
22
22
  # the seed, which is printed after each run.
23
23
  # --seed 1234
24
- config.order = 'random'
24
+ config.order = "random"
25
25
 
26
26
  config.expect_with :rspec do |c|
27
27
  # Only allow expect syntax
@@ -16,7 +16,8 @@ class CommentService < Acfs::Service
16
16
  use Acfs::Middleware::JsonDecoder
17
17
  end
18
18
 
19
- class MyUser < Acfs::Resource
19
+ class MyUser
20
+ include Acfs::Model
20
21
  service UserService, path: 'users'
21
22
 
22
23
  attribute :id, :integer
@@ -24,23 +25,16 @@ class MyUser < Acfs::Resource
24
25
  attribute :age, :integer
25
26
  end
26
27
 
27
- class MyUserInherited < MyUser
28
-
29
- end
30
-
31
- class MyUserWithValidations < MyUser
32
- validates_presence_of :name, :age
33
- validates_format_of :name, with: /\A\w+\s+\w+.?\z/
34
- end
35
-
36
- class Session < Acfs::Resource
28
+ class Session
29
+ include Acfs::Model
37
30
  service UserService
38
31
 
39
32
  attribute :id, :string
40
33
  attribute :user, :integer
41
34
  end
42
35
 
43
- class Comment < Acfs::Resource
36
+ class Comment
37
+ include Acfs::Model
44
38
  service CommentService
45
39
 
46
40
  attribute :id, :integer
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: acfs
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.20.0.dev.b184
4
+ version: 0.20.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jan Graichen
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-08-28 00:00:00.000000000 Z
11
+ date: 2013-08-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -160,7 +160,6 @@ files:
160
160
  - lib/acfs/model/query_methods.rb
161
161
  - lib/acfs/model/relations.rb
162
162
  - lib/acfs/model/service.rb
163
- - lib/acfs/model/validation.rb
164
163
  - lib/acfs/operation.rb
165
164
  - lib/acfs/request.rb
166
165
  - lib/acfs/request/callbacks.rb
@@ -188,7 +187,6 @@ files:
188
187
  - spec/acfs/model/locatable_spec.rb
189
188
  - spec/acfs/model/persistance_spec.rb
190
189
  - spec/acfs/model/query_methods_spec.rb
191
- - spec/acfs/model/validation_spec.rb
192
190
  - spec/acfs/request/callbacks_spec.rb
193
191
  - spec/acfs/request_spec.rb
194
192
  - spec/acfs/response/formats_spec.rb
@@ -216,9 +214,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
216
214
  version: '0'
217
215
  required_rubygems_version: !ruby/object:Gem::Requirement
218
216
  requirements:
219
- - - '>'
217
+ - - '>='
220
218
  - !ruby/object:Gem::Version
221
- version: 1.3.1
219
+ version: '0'
222
220
  requirements: []
223
221
  rubyforge_project:
224
222
  rubygems_version: 2.0.3
@@ -239,7 +237,6 @@ test_files:
239
237
  - spec/acfs/model/locatable_spec.rb
240
238
  - spec/acfs/model/persistance_spec.rb
241
239
  - spec/acfs/model/query_methods_spec.rb
242
- - spec/acfs/model/validation_spec.rb
243
240
  - spec/acfs/request/callbacks_spec.rb
244
241
  - spec/acfs/request_spec.rb
245
242
  - spec/acfs/response/formats_spec.rb
@@ -252,3 +249,4 @@ test_files:
252
249
  - spec/spec_helper.rb
253
250
  - spec/support/response.rb
254
251
  - spec/support/service.rb
252
+ has_rdoc:
@@ -1,13 +0,0 @@
1
- module Acfs::Model
2
-
3
- #
4
- #
5
- module Validation
6
-
7
- def save!(*_)
8
- raise ::Acfs::InvalidResource.new resource: self, errors: errors.to_a unless valid? :save
9
-
10
- super
11
- end
12
- end
13
- end
@@ -1,54 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Acfs::Model::Validation do
4
- let(:params) { {} }
5
- let(:model) { MyUserWithValidations.new params }
6
-
7
- describe '#valid?' do
8
- context 'with valid attributes' do
9
- let(:params) { {name: 'john smith', age: 24} }
10
- subject { model }
11
-
12
- it { should be_valid }
13
- end
14
-
15
- context 'with invalid attributes' do
16
- let(:params) { {name: 'invname'} }
17
- subject { model }
18
-
19
- it { should_not be_valid }
20
- end
21
- end
22
-
23
- describe '#errors' do
24
- context 'with valid attributes' do
25
- let(:params) { {name: 'john smith', age: 24} }
26
- before { model.valid? }
27
- subject { model.errors }
28
-
29
- it { should be_empty }
30
- end
31
-
32
- context 'with invalid attributes' do
33
- let(:params) { {name: 'john'} }
34
- before { model.valid? }
35
- subject { model.errors }
36
-
37
- it { should_not be_empty }
38
- it { should have(2).items }
39
-
40
- it 'should contain a list of error messages' do
41
- expect(subject.to_hash).to eq age: ["can't be blank"], name: ['is invalid']
42
- end
43
- end
44
- end
45
-
46
- describe '#save!' do
47
- context 'with invalid attributes' do
48
- let(:params) { {name: 'john'} }
49
- subject { -> { model.save! } }
50
-
51
- it { expect { subject.call }.to raise_error Acfs::InvalidResource }
52
- end
53
- end
54
- end