solve360 0.0.7 → 0.0.8

Sign up to get free protection for your applications and to get access to all the features.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.7
1
+ 0.0.8
@@ -6,4 +6,9 @@ require "active_support/core_ext/hash"
6
6
 
7
7
  ["item", "config", "contact", "company"].each do |lib|
8
8
  require File.join(File.dirname(__FILE__), "solve360", lib)
9
+ end
10
+
11
+ module Solve360
12
+ class SaveFailure < Exception
13
+ end
9
14
  end
@@ -49,14 +49,23 @@ module Solve360
49
49
 
50
50
  if new_record?
51
51
  response = self.class.request(:post, "/#{self.class.resource_name}", to_request)
52
- self.id = response["response"]["item"]["id"]
52
+
53
+ if !response["response"]["errors"]
54
+ self.id = response["response"]["item"]["id"]
55
+ end
53
56
  else
54
57
  response = self.class.request(:put, "/#{self.class.resource_name}/#{id}", to_request)
55
58
  end
56
59
 
57
- related_items.concat(related_items_to_add)
58
-
59
- response
60
+ if response["response"]["errors"]
61
+ message = response["response"]["errors"].map {|k,v| "#{k}: #{v}" }.join("\n")
62
+ raise Solve360::SaveFailure, message
63
+ else
64
+ related_items.concat(related_items_to_add)
65
+
66
+ response
67
+ end
68
+
60
69
  end
61
70
 
62
71
  def new_record?
@@ -211,4 +211,17 @@ describe "Finding all records" do
211
211
  first.fields["First Name"].should == "Aaron"
212
212
  first.fields["Last Name"].should == "Baileys"
213
213
  end
214
+ end
215
+
216
+ describe "Handling errors" do
217
+ before do
218
+ stub_http_response_with("contacts/save-failed.json")
219
+ @contact = Solve360::Contact.new(:fields => {"First Name" => "Steve"})
220
+ end
221
+
222
+ it "should be invalid" do
223
+ lambda {
224
+ @contact.save
225
+ }.should raise_error(Solve360::SaveFailure)
226
+ end
214
227
  end
metadata CHANGED
@@ -1,7 +1,12 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: solve360
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.7
4
+ prerelease: false
5
+ segments:
6
+ - 0
7
+ - 0
8
+ - 8
9
+ version: 0.0.8
5
10
  platform: ruby
6
11
  authors:
7
12
  - Stephen Bartholomew
@@ -9,39 +14,49 @@ autorequire:
9
14
  bindir: bin
10
15
  cert_chain: []
11
16
 
12
- date: 2010-02-04 00:00:00 +00:00
17
+ date: 2010-05-17 00:00:00 +01:00
13
18
  default_executable:
14
19
  dependencies:
15
20
  - !ruby/object:Gem::Dependency
16
21
  name: configify
17
- type: :runtime
18
- version_requirement:
19
- version_requirements: !ruby/object:Gem::Requirement
22
+ prerelease: false
23
+ requirement: &id001 !ruby/object:Gem::Requirement
20
24
  requirements:
21
25
  - - ">="
22
26
  - !ruby/object:Gem::Version
27
+ segments:
28
+ - 0
29
+ - 0
30
+ - 1
23
31
  version: 0.0.1
24
- version:
32
+ type: :runtime
33
+ version_requirements: *id001
25
34
  - !ruby/object:Gem::Dependency
26
35
  name: activesupport
27
- type: :runtime
28
- version_requirement:
29
- version_requirements: !ruby/object:Gem::Requirement
36
+ prerelease: false
37
+ requirement: &id002 !ruby/object:Gem::Requirement
30
38
  requirements:
31
39
  - - ">="
32
40
  - !ruby/object:Gem::Version
41
+ segments:
42
+ - 0
33
43
  version: "0"
34
- version:
44
+ type: :runtime
45
+ version_requirements: *id002
35
46
  - !ruby/object:Gem::Dependency
36
47
  name: httparty
37
- type: :runtime
38
- version_requirement:
39
- version_requirements: !ruby/object:Gem::Requirement
48
+ prerelease: false
49
+ requirement: &id003 !ruby/object:Gem::Requirement
40
50
  requirements:
41
51
  - - ">="
42
52
  - !ruby/object:Gem::Version
53
+ segments:
54
+ - 0
55
+ - 4
56
+ - 5
43
57
  version: 0.4.5
44
- version:
58
+ type: :runtime
59
+ version_requirements: *id003
45
60
  description: ""
46
61
  email: Stephen Bartholomew
47
62
  executables: []
@@ -67,8 +82,8 @@ files:
67
82
  - spec/fixtures/contacts/find-company-success.json
68
83
  - spec/fixtures/contacts/find-success.json
69
84
  - spec/fixtures/contacts/index.json
85
+ - spec/fixtures/contacts/save-failed.json
70
86
  - spec/fixtures/contacts/show-success.json
71
- - spec/fixtures/contacts/update-failed.json
72
87
  - spec/fixtures/contacts/update-success.json
73
88
  - spec/solve360/item_spec.rb
74
89
  - spec/spec.opts
@@ -86,18 +101,20 @@ required_ruby_version: !ruby/object:Gem::Requirement
86
101
  requirements:
87
102
  - - ">="
88
103
  - !ruby/object:Gem::Version
104
+ segments:
105
+ - 0
89
106
  version: "0"
90
- version:
91
107
  required_rubygems_version: !ruby/object:Gem::Requirement
92
108
  requirements:
93
109
  - - ">="
94
110
  - !ruby/object:Gem::Version
111
+ segments:
112
+ - 0
95
113
  version: "0"
96
- version:
97
114
  requirements: []
98
115
 
99
116
  rubyforge_project:
100
- rubygems_version: 1.3.5
117
+ rubygems_version: 1.3.6
101
118
  signing_key:
102
119
  specification_version: 3
103
120
  summary: Libary for working with the Solve360 CRM API