amorail 0.3.6 → 0.4.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: f27da7e06db5208d11aa72f7aeb45ca3cd2f76fb
4
- data.tar.gz: 2c9dbb361d4a0120d8cc6c5a20fa725335a914ac
3
+ metadata.gz: 42a2851b1c9adb5f49a331d622c3fd276c63761b
4
+ data.tar.gz: 8012dce427d24125bfeb3a10059033c577bcbd5b
5
5
  SHA512:
6
- metadata.gz: efbf4431236ba510abad75638273ce0d554d671e30121b74111265ccbf6130228db17ba995f57b364af39cdaf6c7aa6aa84c9186258c82faa38ef2828daa738e
7
- data.tar.gz: 2207defd4622199689da2ae48143d4b292e9ad0fcc829beb20d5216ba6f4a21cbc419e8a11d23e1b5782b8eef6643fcab02ff1d4003f1ba189a53b7d3eeeb14d
6
+ metadata.gz: a102ba6296a1e3ed6ab4f2c4160415429f351398e83240d0d2453a72c6302eefaf83c42624b43f037e00fb7dbc40f669f37ea27bd32d6311fe5d250a5b0dc248
7
+ data.tar.gz: b7214099abe616f5902717c4f823cabab5e818e84752cf649330cf70191c8b0b6488495f1b4e26fd7afcc27c5712d2431ef728356daefd5fd53a6d03b6b3af2b
@@ -6,6 +6,8 @@ require 'active_support'
6
6
  module Amorail
7
7
  # Amorail http client
8
8
  class Client
9
+ SUCCESS_STATUS_CODES = [200, 204].freeze
10
+
9
11
  attr_reader :usermail, :api_key, :api_endpoint
10
12
 
11
13
  def initialize(api_endpoint: Amorail.config.api_endpoint,
@@ -41,10 +43,10 @@ module Amorail
41
43
  end
42
44
 
43
45
  def safe_request(method, url, params = {})
44
- send(method, url, params)
46
+ public_send(method, url, params)
45
47
  rescue ::Amorail::AmoUnauthorizedError
46
48
  authorize
47
- send(method, url, params)
49
+ public_send(method, url, params)
48
50
  end
49
51
 
50
52
  def get(url, params = {})
@@ -72,7 +74,7 @@ module Amorail
72
74
  end
73
75
 
74
76
  def handle_response(response) # rubocop:disable all
75
- return response if response.status == 200 || response.status == 204
77
+ return response if SUCCESS_STATUS_CODES.include?(response.status)
76
78
 
77
79
  case response.status
78
80
  when 301
@@ -3,7 +3,7 @@ module Amorail
3
3
  class Lead < Amorail::Entity
4
4
  amo_names "leads"
5
5
 
6
- amo_field :name, :price, :status_id, :tags
6
+ amo_field :name, :price, :status_id, :pipeline_id, :tags
7
7
 
8
8
  validates :name, :status_id, presence: true
9
9
 
@@ -62,7 +62,7 @@ module Amorail
62
62
  end
63
63
 
64
64
  require 'amorail/entity/params'
65
- require 'amorail/entity/persistance'
65
+ require 'amorail/entity/persistence'
66
66
  require 'amorail/entity/finders'
67
67
 
68
68
  def reload_model(info)
@@ -108,17 +108,18 @@ module Amorail
108
108
  )
109
109
  end
110
110
 
111
+ # We can have response with 200 or 204 here.
112
+ # 204 response has no body, so we don't want to parse it.
111
113
  def handle_response(response, method)
112
- return false unless response.status == 200
113
- extract_method = "extract_data_#{method}"
114
- return self unless respond_to?(extract_method, true)
115
-
116
- reload_model(
117
- send(extract_method,
118
- response.body['response'][self.class.amo_response_name]
119
- )
114
+ return false if response.status == 204
115
+
116
+ data = send(
117
+ "extract_data_#{method}",
118
+ response.body['response'][self.class.amo_response_name]
120
119
  )
121
- self
120
+ reload_model(data)
121
+ rescue InvalidRecord
122
+ return false
122
123
  end
123
124
  end
124
125
  end
@@ -38,11 +38,13 @@ module Amorail # :nodoc: all
38
38
 
39
39
  private
40
40
 
41
+ # We can have response with 200 or 204 here.
42
+ # 204 response has no body, so we don't want to parse it.
41
43
  def load_many(response)
42
- return [] unless response.status == 200
44
+ return [] if response.status == 204
43
45
 
44
- (response.body['response'][amo_response_name] || [])
45
- .map { |info| new.reload_model(info) }
46
+ response.body['response'].fetch(amo_response_name, [])
47
+ .map { |info| new.reload_model(info) }
46
48
  end
47
49
  end
48
50
 
@@ -40,5 +40,24 @@ module Amorail # :nodoc: all
40
40
  def extract_data_add(response)
41
41
  response.fetch('add').first
42
42
  end
43
+
44
+ # Update response can have status 200 and contain errors.
45
+ # In case of errors "update" key in a response is a Hash with "errors" key.
46
+ # If there are no errors "update" key is an Array with entities attributes.
47
+ def extract_data_update(response)
48
+ case data = response.fetch('update')
49
+ when Array
50
+ data.first
51
+ when Hash
52
+ merge_errors(data)
53
+ raise(InvalidRecord)
54
+ end
55
+ end
56
+
57
+ def merge_errors(data)
58
+ data.fetch("errors").each do |_, message|
59
+ errors.add(:base, message)
60
+ end
61
+ end
43
62
  end
44
63
  end
@@ -1,4 +1,4 @@
1
1
  # Amorail version
2
2
  module Amorail
3
- VERSION = "0.3.6".freeze
3
+ VERSION = "0.4.0".freeze
4
4
  end
@@ -141,9 +141,9 @@
141
141
  }
142
142
  },
143
143
  {
144
- "id": "116302",
145
- "name": "teachbase_id",
146
- "multiple": "N",
144
+ "id": "116302",
145
+ "name": "teachbase_id",
146
+ "multiple": "N",
147
147
  "type_id": "8"
148
148
  }
149
149
  ],
@@ -162,7 +162,7 @@
162
162
  "multiple": "N",
163
163
  "type_id": "3"
164
164
  }
165
- ],
165
+ ],
166
166
  "companies": [
167
167
  {
168
168
  "id": "1460589",
@@ -341,4 +341,4 @@
341
341
  },
342
342
  "server_time": 1422442143
343
343
  }
344
- }
344
+ }
@@ -192,4 +192,4 @@
192
192
  },
193
193
  "server_time": 1422442143
194
194
  }
195
- }
195
+ }
@@ -10,4 +10,4 @@
10
10
  },
11
11
  "server_time": 1423139130
12
12
  }
13
- }
13
+ }
@@ -7,8 +7,7 @@
7
7
  "account_id": "8195968",
8
8
  "last_modified": 1423139130,
9
9
  "company_name": "Foo Inc.",
10
- "custom_fields":
11
- [
10
+ "custom_fields": [
12
11
  {
13
12
  "id": "1460591",
14
13
  "name": "Email",
@@ -39,8 +38,7 @@
39
38
  "account_id": "8195968",
40
39
  "last_modified": 1423139150,
41
40
  "company_name": "Foo Inc.",
42
- "custom_fields":
43
- [
41
+ "custom_fields": [
44
42
  {
45
43
  "id": "1460591",
46
44
  "name": "Email",
@@ -56,4 +54,4 @@
56
54
  }
57
55
  ]
58
56
  }
59
- }
57
+ }
@@ -7,12 +7,11 @@
7
7
  "account_id": "8195968",
8
8
  "last_modified": 1423139130,
9
9
  "company_name": "Foo Inc.",
10
- "linked_leads_id": [
11
- "1872746",
12
- "1885024"
10
+ "linked_leads_id": [
11
+ "1872746",
12
+ "1885024"
13
13
  ],
14
- "custom_fields":
15
- [
14
+ "custom_fields": [
16
15
  {
17
16
  "id": "1460591",
18
17
  "name": "Email",
@@ -39,4 +38,4 @@
39
38
  }
40
39
  ]
41
40
  }
42
- }
41
+ }
@@ -0,0 +1,16 @@
1
+ {
2
+ "response": {
3
+ "links": [
4
+ {
5
+ "contact_id": "101",
6
+ "lead_id": "1",
7
+ "last_modified": 1374741830
8
+ },
9
+ {
10
+ "contact_id": "101",
11
+ "lead_id": "2",
12
+ "last_modified": 1374839942
13
+ }
14
+ ]
15
+ }
16
+ }
@@ -7,8 +7,7 @@
7
7
  "account_id": "8195968",
8
8
  "last_modified": 1423139130,
9
9
  "company_name": "Foo Inc.",
10
- "custom_fields":
11
- [
10
+ "custom_fields": [
12
11
  {
13
12
  "id": "1460591",
14
13
  "name": "Email",
@@ -45,4 +44,4 @@
45
44
  }
46
45
  ]
47
46
  }
48
- }
47
+ }
@@ -0,0 +1,13 @@
1
+ {
2
+ "response": {
3
+ "contacts": {
4
+ "update": [
5
+ {
6
+ "id": 12509853,
7
+ "last_modified": 1501256276
8
+ }
9
+ ]
10
+ },
11
+ "server_time": 1501452197
12
+ }
13
+ }
@@ -0,0 +1,13 @@
1
+ {
2
+ "response": {
3
+ "leads": {
4
+ "add": [
5
+ {
6
+ "id": 3980037,
7
+ "request_id": 0
8
+ }
9
+ ]
10
+ },
11
+ "server_time": 1502394640
12
+ }
13
+ }
@@ -0,0 +1,73 @@
1
+ {
2
+ "response": {
3
+ "leads": [
4
+ {
5
+ "id": "1",
6
+ "name": "Research new technologies",
7
+ "last_modified": 1374656336,
8
+ "status_id": "7046196",
9
+ "pipeline_id": 683506,
10
+ "price": "500000",
11
+ "responsible_user_id": "103586",
12
+ "tags": [
13
+ {
14
+ "id": "960472",
15
+ "name": "USA"
16
+ },
17
+ {
18
+ "id": "960854",
19
+ "name": "Lead"
20
+ }
21
+ ],
22
+ "date_create": 1386014400,
23
+ "account_id": "7046192",
24
+ "created_user_id": "4502311",
25
+ "custom_fields": [
26
+ {
27
+ "id": "484604",
28
+ "name": "field",
29
+ "values": [
30
+ {
31
+ "value": "text"
32
+ }
33
+ ]
34
+ }
35
+ ]
36
+ },
37
+ {
38
+ "id": "2",
39
+ "name": "Sell it!",
40
+ "last_modified": 1374656336,
41
+ "status_id": "7046196",
42
+ "pipeline_id": 683506,
43
+ "price": "100000",
44
+ "responsible_user_id": "103586",
45
+ "tags": [
46
+ {
47
+ "id": "960472",
48
+ "name": "USA"
49
+ },
50
+ {
51
+ "id": "960854",
52
+ "name": "Lead"
53
+ }
54
+ ],
55
+ "date_create": 1386014400,
56
+ "account_id": "7046192",
57
+ "created_user_id": "4502311",
58
+ "custom_fields": [
59
+ {
60
+ "id": "484604",
61
+ "name": "field",
62
+ "values": [
63
+ {
64
+ "value": "text"
65
+ }
66
+ ]
67
+ }
68
+ ]
69
+ }
70
+ ],
71
+ "server_time": 1374839787
72
+ }
73
+ }
@@ -0,0 +1,16 @@
1
+ {
2
+ "response": {
3
+ "links": [
4
+ {
5
+ "contact_id": "101",
6
+ "lead_id": "2",
7
+ "last_modified": 1374839942
8
+ },
9
+ {
10
+ "contact_id": "102",
11
+ "lead_id": "2",
12
+ "last_modified": 1374839942
13
+ }
14
+ ]
15
+ }
16
+ }
@@ -0,0 +1,13 @@
1
+ {
2
+ "response": {
3
+ "leads": {
4
+ "update": [
5
+ {
6
+ "id": 3103031,
7
+ "last_modified": 1502393989
8
+ }
9
+ ]
10
+ },
11
+ "server_time": 1502393993
12
+ }
13
+ }
@@ -0,0 +1,12 @@
1
+ {
2
+ "response": {
3
+ "leads": {
4
+ "update": {
5
+ "errors": {
6
+ "3103031": "Last modified date is older than in database"
7
+ }
8
+ }
9
+ },
10
+ "server_time": 1502391257
11
+ }
12
+ }
@@ -9,7 +9,7 @@ module AmoWebMock
9
9
  account_info_stub(Amorail.config.api_endpoint)
10
10
  end
11
11
 
12
- def mock_custom_api(endpoint, usermail, api_key, properties = 'account2_response.json')
12
+ def mock_custom_api(endpoint, usermail, api_key, properties = 'response_2.json')
13
13
  authorize_stub(
14
14
  endpoint,
15
15
  usermail,
@@ -33,10 +33,10 @@ module AmoWebMock
33
33
  })
34
34
  end
35
35
 
36
- def account_info_stub(endpoint, properties = 'account_response.json')
36
+ def account_info_stub(endpoint, properties = 'response_1.json')
37
37
  stub_request(:get, endpoint + '/private/api/v2/json/accounts/current')
38
38
  .to_return(
39
- body: File.read("./spec/fixtures/#{properties}"),
39
+ body: File.read("./spec/fixtures/accounts/#{properties}"),
40
40
  headers: { 'Content-Type' => 'application/json' },
41
41
  status: 200
42
42
  )
@@ -61,7 +61,7 @@ module AmoWebMock
61
61
  def contact_create_stub(endpoint)
62
62
  stub_request(:post, endpoint + '/private/api/v2/json/contacts/set')
63
63
  .to_return(
64
- body: File.read('./spec/fixtures/contact_create.json'),
64
+ body: File.read('./spec/fixtures/contacts/create.json'),
65
65
  headers: { 'Content-Type' => 'application/json' },
66
66
  status: 200
67
67
  )
@@ -70,7 +70,7 @@ module AmoWebMock
70
70
  def contact_update_stub(endpoint)
71
71
  stub_request(:post, endpoint + '/private/api/v2/json/contacts/set')
72
72
  .to_return(
73
- body: File.read('./spec/fixtures/contact_update.json'),
73
+ body: File.read('./spec/fixtures/contacts/update.json'),
74
74
  headers: {
75
75
  'Content-Type' => 'application/json'
76
76
  },
@@ -84,7 +84,7 @@ module AmoWebMock
84
84
  :get,
85
85
  "#{endpoint}/private/api/v2/json/contacts/list?id=#{id}")
86
86
  .to_return(
87
- body: File.read('./spec/fixtures/contact_find.json'),
87
+ body: File.read('./spec/fixtures/contacts/find_one.json'),
88
88
  headers: { 'Content-Type' => 'application/json' },
89
89
  status: 200
90
90
  )
@@ -102,7 +102,7 @@ module AmoWebMock
102
102
  :get,
103
103
  "#{endpoint}/private/api/v2/json/contacts/list?id=#{id}")
104
104
  .to_return(
105
- body: File.read('./spec/fixtures/my_contact_find.json'),
105
+ body: File.read('./spec/fixtures/contacts/my_contact_find.json'),
106
106
  headers: { 'Content-Type' => 'application/json' },
107
107
  status: 200
108
108
  )
@@ -120,7 +120,7 @@ module AmoWebMock
120
120
  :get,
121
121
  "#{endpoint}/private/api/v2/json/contacts/list?query=#{query}")
122
122
  .to_return(
123
- body: File.read('./spec/fixtures/contact_find_query.json'),
123
+ body: File.read('./spec/fixtures/contacts/find_many.json'),
124
124
  headers: { 'Content-Type' => 'application/json' },
125
125
  status: 200
126
126
  )
@@ -138,7 +138,7 @@ module AmoWebMock
138
138
  :get,
139
139
  "#{endpoint}/private/api/v2/json/contacts/list?#{ids.to_query('id')}")
140
140
  .to_return(
141
- body: File.read('./spec/fixtures/contact_find_query.json'),
141
+ body: File.read('./spec/fixtures/contacts/find_many.json'),
142
142
  headers: { 'Content-Type' => 'application/json' },
143
143
  status: 200
144
144
  )
@@ -158,7 +158,7 @@ module AmoWebMock
158
158
  ).with(
159
159
  query: params
160
160
  ).to_return(
161
- body: File.read('./spec/fixtures/contact_find_query.json'),
161
+ body: File.read('./spec/fixtures/contacts/find_many.json'),
162
162
  headers: { 'Content-Type' => 'application/json' },
163
163
  status: 200
164
164
  )
@@ -173,7 +173,7 @@ module AmoWebMock
173
173
  def company_create_stub(endpoint)
174
174
  stub_request(:post, endpoint + '/private/api/v2/json/company/set')
175
175
  .to_return(
176
- body: File.read('./spec/fixtures/contact_create.json'),
176
+ body: File.read('./spec/fixtures/contacts/create.json'),
177
177
  headers: { 'Content-Type' => 'application/json' },
178
178
  status: 200
179
179
  )
@@ -185,7 +185,7 @@ module AmoWebMock
185
185
  :get,
186
186
  "#{endpoint}/private/api/v2/json/leads/list?#{ids.to_query('id')}")
187
187
  .to_return(
188
- body: File.read('./spec/fixtures/leads.json'),
188
+ body: File.read('./spec/fixtures/leads/find_many.json'),
189
189
  headers: { 'Content-Type' => 'application/json' },
190
190
  status: 200
191
191
  )
@@ -197,10 +197,37 @@ module AmoWebMock
197
197
  end
198
198
  end
199
199
 
200
+ def lead_create_stub(endpoint)
201
+ stub_request(:post, endpoint + '/private/api/v2/json/leads/set')
202
+ .to_return(
203
+ body: File.read('./spec/fixtures/leads/create.json'),
204
+ headers: { 'Content-Type' => 'application/json' },
205
+ status: 200
206
+ )
207
+ end
208
+
209
+ def lead_update_stub(endpoint, success = true)
210
+ fixture_file =
211
+ if success
212
+ './spec/fixtures/leads/update.json'
213
+ else
214
+ './spec/fixtures/leads/update_errors.json'
215
+ end
216
+
217
+ stub_request(:post, endpoint + '/private/api/v2/json/leads/set')
218
+ .to_return(
219
+ body: File.read(fixture_file),
220
+ headers: {
221
+ 'Content-Type' => 'application/json'
222
+ },
223
+ status: 200
224
+ )
225
+ end
226
+
200
227
  def contacts_links_stub(endpoint, ids)
201
228
  stub_request(:get, endpoint + "/private/api/v2/json/contacts/links?#{ids.to_query('contacts_link')}")
202
229
  .to_return(
203
- body: File.read('./spec/fixtures/contacts_links.json'),
230
+ body: File.read('./spec/fixtures/contacts/links.json'),
204
231
  headers: { 'Content-Type' => 'application/json' },
205
232
  status: 200
206
233
  )
@@ -210,7 +237,7 @@ module AmoWebMock
210
237
  if success
211
238
  stub_request(:get, endpoint + "/private/api/v2/json/contacts/links?#{ids.to_query('deals_link')}")
212
239
  .to_return(
213
- body: File.read('./spec/fixtures/leads_links.json'),
240
+ body: File.read('./spec/fixtures/leads/links.json'),
214
241
  headers: { 'Content-Type' => 'application/json' },
215
242
  status: 200
216
243
  )
@@ -18,6 +18,7 @@ describe Amorail::Lead do
18
18
  :name,
19
19
  :price,
20
20
  :status_id,
21
+ :pipeline_id,
21
22
  :tags
22
23
  )
23
24
  end
@@ -29,6 +30,7 @@ describe Amorail::Lead do
29
30
  name: 'Test',
30
31
  price: 100,
31
32
  status_id: 2,
33
+ pipeline_id: 17,
32
34
  tags: 'test lead'
33
35
  )
34
36
  end
@@ -39,6 +41,7 @@ describe Amorail::Lead do
39
41
  specify { is_expected.to include(name: 'Test') }
40
42
  specify { is_expected.to include(price: 100) }
41
43
  specify { is_expected.to include(status_id: 2) }
44
+ specify { is_expected.to include(pipeline_id: 17) }
42
45
  specify { is_expected.to include(tags: 'test lead') }
43
46
  end
44
47
 
@@ -70,4 +73,29 @@ describe Amorail::Lead do
70
73
  end
71
74
  end
72
75
  end
76
+
77
+ describe "#update" do
78
+ subject { lead.update }
79
+
80
+ let(:lead) { described_class.new(name: 'RSpec lead', status_id: 142) }
81
+
82
+ before do
83
+ lead_create_stub(Amorail.config.api_endpoint)
84
+ lead.save!
85
+ end
86
+
87
+ context 'with errors in response' do
88
+ before do
89
+ lead_update_stub(Amorail.config.api_endpoint, false)
90
+ lead.name = 'Updated name'
91
+ end
92
+
93
+ it { is_expected.to be_falsey }
94
+
95
+ specify do
96
+ subject
97
+ expect(lead.errors[:base]).to include('Last modified date is older than in database')
98
+ end
99
+ end
100
+ end
73
101
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: amorail
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.6
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - alekseenkoss
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2017-07-24 00:00:00.000000000 Z
12
+ date: 2017-08-14 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler
@@ -215,7 +215,7 @@ files:
215
215
  - lib/amorail/entity.rb
216
216
  - lib/amorail/entity/finders.rb
217
217
  - lib/amorail/entity/params.rb
218
- - lib/amorail/entity/persistance.rb
218
+ - lib/amorail/entity/persistence.rb
219
219
  - lib/amorail/exceptions.rb
220
220
  - lib/amorail/property.rb
221
221
  - lib/amorail/railtie.rb
@@ -226,17 +226,20 @@ files:
226
226
  - spec/contact_link_spec.rb
227
227
  - spec/contact_spec.rb
228
228
  - spec/entity_spec.rb
229
- - spec/fixtures/account2_response.json
230
- - spec/fixtures/account_response.json
229
+ - spec/fixtures/accounts/response_1.json
230
+ - spec/fixtures/accounts/response_2.json
231
231
  - spec/fixtures/amorail_test.yml
232
- - spec/fixtures/contact_create.json
233
- - spec/fixtures/contact_find.json
234
- - spec/fixtures/contact_find_query.json
235
- - spec/fixtures/contact_update.json
236
- - spec/fixtures/contacts_links.json
237
- - spec/fixtures/leads.json
238
- - spec/fixtures/leads_links.json
239
- - spec/fixtures/my_contact_find.json
232
+ - spec/fixtures/contacts/create.json
233
+ - spec/fixtures/contacts/find_many.json
234
+ - spec/fixtures/contacts/find_one.json
235
+ - spec/fixtures/contacts/links.json
236
+ - spec/fixtures/contacts/my_contact_find.json
237
+ - spec/fixtures/contacts/update.json
238
+ - spec/fixtures/leads/create.json
239
+ - spec/fixtures/leads/find_many.json
240
+ - spec/fixtures/leads/links.json
241
+ - spec/fixtures/leads/update.json
242
+ - spec/fixtures/leads/update_errors.json
240
243
  - spec/helpers/webmock_helpers.rb
241
244
  - spec/lead_spec.rb
242
245
  - spec/my_contact_spec.rb
@@ -269,7 +272,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
269
272
  version: '0'
270
273
  requirements: []
271
274
  rubyforge_project:
272
- rubygems_version: 2.6.11
275
+ rubygems_version: 2.6.12
273
276
  signing_key:
274
277
  specification_version: 4
275
278
  summary: Ruby API client for AmoCRM
@@ -279,17 +282,20 @@ test_files:
279
282
  - spec/contact_link_spec.rb
280
283
  - spec/contact_spec.rb
281
284
  - spec/entity_spec.rb
282
- - spec/fixtures/account2_response.json
283
- - spec/fixtures/account_response.json
285
+ - spec/fixtures/accounts/response_1.json
286
+ - spec/fixtures/accounts/response_2.json
284
287
  - spec/fixtures/amorail_test.yml
285
- - spec/fixtures/contact_create.json
286
- - spec/fixtures/contact_find.json
287
- - spec/fixtures/contact_find_query.json
288
- - spec/fixtures/contact_update.json
289
- - spec/fixtures/contacts_links.json
290
- - spec/fixtures/leads.json
291
- - spec/fixtures/leads_links.json
292
- - spec/fixtures/my_contact_find.json
288
+ - spec/fixtures/contacts/create.json
289
+ - spec/fixtures/contacts/find_many.json
290
+ - spec/fixtures/contacts/find_one.json
291
+ - spec/fixtures/contacts/links.json
292
+ - spec/fixtures/contacts/my_contact_find.json
293
+ - spec/fixtures/contacts/update.json
294
+ - spec/fixtures/leads/create.json
295
+ - spec/fixtures/leads/find_many.json
296
+ - spec/fixtures/leads/links.json
297
+ - spec/fixtures/leads/update.json
298
+ - spec/fixtures/leads/update_errors.json
293
299
  - spec/helpers/webmock_helpers.rb
294
300
  - spec/lead_spec.rb
295
301
  - spec/my_contact_spec.rb
@@ -1,5 +0,0 @@
1
- {
2
- "response": {
3
- "contacts": null
4
- }
5
- }
@@ -1,15 +0,0 @@
1
- {
2
- "response": {
3
- "links": [
4
- {
5
- "contact_id": "101",
6
- "lead_id": "1",
7
- "last_modified": 1374741830
8
- },
9
- {
10
- "contact_id": "101",
11
- "lead_id": "2",
12
- "last_modified": 1374839942
13
- }]
14
- }
15
- }
@@ -1,69 +0,0 @@
1
- {
2
- "response": {
3
- "leads": [
4
- {
5
- "id": "1",
6
- "name": "Research new technologies",
7
- "last_modified": 1374656336,
8
- "status_id": "7046196",
9
- "price": "500000",
10
- "responsible_user_id": "103586",
11
- "tags":[
12
- {
13
- "id": "960472",
14
- "name": "USA"},
15
- {
16
- "id": "960854",
17
- "name": "Lead"
18
- }
19
- ],
20
- "date_create": 1386014400,
21
- "account_id": "7046192",
22
- "created_user_id": "4502311",
23
- "custom_fields": [
24
- {
25
- "id": "484604",
26
- "name": "field",
27
- "values": [
28
- {
29
- "value": "text"
30
- }
31
- ]
32
- }
33
- ]
34
- },
35
- {
36
- "id": "2",
37
- "name": "Sell it!",
38
- "last_modified": 1374656336,
39
- "status_id": "7046196",
40
- "price": "100000",
41
- "responsible_user_id": "103586",
42
- "tags":[
43
- {
44
- "id": "960472",
45
- "name": "USA"},
46
- {
47
- "id": "960854",
48
- "name": "Lead"
49
- }
50
- ],
51
- "date_create": 1386014400,
52
- "account_id": "7046192",
53
- "created_user_id": "4502311",
54
- "custom_fields": [
55
- {
56
- "id": "484604",
57
- "name": "field",
58
- "values": [
59
- {
60
- "value": "text"
61
- }
62
- ]
63
- }
64
- ]
65
- }
66
- ],
67
- "server_time": 1374839787
68
- }
69
- }
@@ -1,15 +0,0 @@
1
- {
2
- "response": {
3
- "links": [
4
- {
5
- "contact_id": "101",
6
- "lead_id": "2",
7
- "last_modified": 1374839942
8
- },
9
- {
10
- "contact_id": "102",
11
- "lead_id": "2",
12
- "last_modified": 1374839942
13
- }]
14
- }
15
- }