amorail 0.3.6 → 0.4.0

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
  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
- }