active_remote 3.3.1 → 3.3.2

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 5ea2e2dce8e74426f1b128de526fc94673e8fcb21e23fd61052519f13bf2eb98
4
- data.tar.gz: b317461ce80a81012b55475147b6c746d2aa9708dedf8173631d21fda6c5950b
3
+ metadata.gz: c58546bd68ea6b44a52688282a95a40b1734cd71d67c651ec29329527abf3e84
4
+ data.tar.gz: 5cb91fb55081d8b59ec24f946c87fdcc64c12d31b822b93261937631a00c99ca
5
5
  SHA512:
6
- metadata.gz: 6db4dd2c80db0fbfbb768e90464cc900b77a9e490a647b922122adc254ded925ccfc1376e796460f988c690ce19c85f51149ae7015dd92a91d174d1e19933f70
7
- data.tar.gz: 3ab7fb289b55326ebe7897189d205f03d6d3863c5d557d8768d4c84a6ee0c77ae8ca335bb0354be827d3920d83b7b88828a5c8cddb393b4f3948e28256e8d766
6
+ metadata.gz: 1fcf39ec901d0ae3d4b39e5c9715705b80a368db2a6f2048e1eca668647d5d7f8d456c99708b279d2ee5430ef62fd5d1cf6c087d919030fecd838b374e00410d
7
+ data.tar.gz: 001fd0f7e5576f878537930191126b4621c9b61c1353775d27ea625fcfa3913213d48283d94f5c9043d7a9c0bac07646ff0f8e453e0a563f3a9afd32991ea1d9
@@ -43,6 +43,16 @@ module ActiveRemote
43
43
  # Raised by ActiveRemove::Base.save! and ActiveRemote::Base.create! methods
44
44
  # when remote record cannot be saved because it is invalid.
45
45
  class RemoteRecordNotSaved < ActiveRemoteError
46
+ attr_reader :record
47
+
48
+ def initialize(message_or_record = nil)
49
+ message = message_or_record
50
+ if message_or_record.is_a?(::ActiveRemote::Base)
51
+ @record = message_or_record
52
+ message = @record.errors.full_messages.join(", ")
53
+ end
54
+ super(message)
55
+ end
46
56
  end
47
57
 
48
58
  class UnknownAttributeError < ActiveRemoteError
@@ -184,7 +184,7 @@ module ActiveRemote
184
184
  # Also runs any before/after save callbacks that are defined.
185
185
  #
186
186
  def save!(*args)
187
- save(*args) || raise(RemoteRecordNotSaved)
187
+ save(*args) || fail(RemoteRecordNotSaved, self)
188
188
  end
189
189
 
190
190
  # Returns true if the record doesn't have errors; otherwise, returns false.
@@ -1,3 +1,3 @@
1
1
  module ActiveRemote
2
- VERSION = "3.3.1"
2
+ VERSION = "3.3.2"
3
3
  end
@@ -0,0 +1,31 @@
1
+ require "spec_helper"
2
+
3
+ describe ::ActiveRemote::RemoteRecordNotSaved do
4
+ let(:record) { ::Tag.new }
5
+
6
+ before do
7
+ record.errors[:base] << "Some error one!"
8
+ record.errors[:base] << "Some error two!"
9
+ end
10
+
11
+ context "when an active remote record is used" do
12
+ it "uses embedded errors in message" do
13
+ expect { fail(::ActiveRemote::RemoteRecordNotSaved, record) }
14
+ .to raise_error(ActiveRemote::RemoteRecordNotSaved, "Some error one!, Some error two!")
15
+ end
16
+ end
17
+
18
+ context "when a string is used" do
19
+ it "uses the string in the error message" do
20
+ expect { fail(::ActiveRemote::RemoteRecordNotSaved, "something bad happened") }
21
+ .to raise_error(ActiveRemote::RemoteRecordNotSaved, "something bad happened")
22
+ end
23
+ end
24
+
25
+ context "when no message is used" do
26
+ it "raises the error" do
27
+ expect { raise(::ActiveRemote::RemoteRecordNotSaved) }
28
+ .to raise_error(ActiveRemote::RemoteRecordNotSaved)
29
+ end
30
+ end
31
+ end
@@ -259,9 +259,16 @@ describe ::ActiveRemote::Persistence do
259
259
  end
260
260
 
261
261
  context "when the record is not saved" do
262
+ let(:errors) {
263
+ [Generic::Error.new(:field => "name", :message => "Error one!"),
264
+ Generic::Error.new(:field => "name", :message => "Error two!")]
265
+ }
266
+ let(:response) { Generic::Remote::Tag.new(:errors => errors) }
267
+ before { allow(rpc).to receive(:execute).and_return(response) }
268
+
262
269
  it "raises an exception" do
263
- allow(subject).to receive(:save).and_return(false)
264
- expect { subject.save! }.to raise_error(ActiveRemote::RemoteRecordNotSaved)
270
+ expect { subject.save! }
271
+ .to raise_error(ActiveRemote::RemoteRecordNotSaved, "Name Error one!, Name Error two!")
265
272
  end
266
273
  end
267
274
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: active_remote
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.3.1
4
+ version: 3.3.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Adam Hutchison
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-01-08 00:00:00.000000000 Z
11
+ date: 2019-04-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activemodel
@@ -232,6 +232,7 @@ files:
232
232
  - spec/lib/active_remote/base_spec.rb
233
233
  - spec/lib/active_remote/dirty_spec.rb
234
234
  - spec/lib/active_remote/dsl_spec.rb
235
+ - spec/lib/active_remote/errors_spec.rb
235
236
  - spec/lib/active_remote/integration_spec.rb
236
237
  - spec/lib/active_remote/persistence_spec.rb
237
238
  - spec/lib/active_remote/primary_key_spec.rb
@@ -287,7 +288,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
287
288
  version: '0'
288
289
  requirements: []
289
290
  rubyforge_project:
290
- rubygems_version: 2.7.8
291
+ rubygems_version: 2.7.6
291
292
  signing_key:
292
293
  specification_version: 4
293
294
  summary: Active Record for your platform
@@ -297,6 +298,7 @@ test_files:
297
298
  - spec/lib/active_remote/base_spec.rb
298
299
  - spec/lib/active_remote/dirty_spec.rb
299
300
  - spec/lib/active_remote/dsl_spec.rb
301
+ - spec/lib/active_remote/errors_spec.rb
300
302
  - spec/lib/active_remote/integration_spec.rb
301
303
  - spec/lib/active_remote/persistence_spec.rb
302
304
  - spec/lib/active_remote/primary_key_spec.rb