landslider 0.2.1 → 0.2.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.
- data/VERSION.yml +1 -1
- data/lib/landslider.rb +75 -8
- data/test/landslider_test.rb +59 -26
- metadata +2 -2
data/VERSION.yml
CHANGED
data/lib/landslider.rb
CHANGED
@@ -43,7 +43,7 @@ class Landslider < Handsoap::Service
|
|
43
43
|
def get_api_version(session_id)
|
44
44
|
self.session_id = session_id
|
45
45
|
|
46
|
-
response = invoke("
|
46
|
+
response = invoke("getApiVersion", :soap_action => :none)
|
47
47
|
|
48
48
|
node = response.document.xpath('//ns:getApiVersionResponse', ns)
|
49
49
|
parse_api_version_result(node)
|
@@ -113,8 +113,8 @@ class Landslider < Handsoap::Service
|
|
113
113
|
ans.add 'totalResultsRequested', 10
|
114
114
|
}
|
115
115
|
end
|
116
|
-
|
117
|
-
|
116
|
+
node = response.document.xpath('//ns:getContactNotesResponse', ns)
|
117
|
+
parse_get_contact_notes_result(node)
|
118
118
|
end
|
119
119
|
|
120
120
|
def get_opportunity_notes(session_id, opportunity_id)
|
@@ -128,8 +128,8 @@ class Landslider < Handsoap::Service
|
|
128
128
|
ans.add 'totalResultsRequested', 10
|
129
129
|
}
|
130
130
|
end
|
131
|
-
|
132
|
-
|
131
|
+
node = response.document.xpath('//ns:getOpportunityNotesResponse', ns)
|
132
|
+
parse_get_opportunity_notes_result(node)
|
133
133
|
end
|
134
134
|
|
135
135
|
def get_lead_notes(session_id, lead_id)
|
@@ -143,8 +143,8 @@ class Landslider < Handsoap::Service
|
|
143
143
|
ans.add 'totalResultsRequested', 10
|
144
144
|
}
|
145
145
|
end
|
146
|
-
|
147
|
-
|
146
|
+
node = response.document.xpath('//ns:getLeadNotesResponse', ns)
|
147
|
+
parse_get_lead_notes_result(node)
|
148
148
|
end
|
149
149
|
|
150
150
|
private
|
@@ -177,6 +177,7 @@ class Landslider < Handsoap::Service
|
|
177
177
|
def parse_get_accounts_result(node)
|
178
178
|
{
|
179
179
|
:accounts => node.xpath('//Accounts/accountList', ns).map { |child| parse_account(child) },
|
180
|
+
|
180
181
|
:error => xml_to_bool(node, '//Accounts/error/text()'),
|
181
182
|
:error_code => xml_to_int(node, '//Accounts/errorCode/text()'),
|
182
183
|
:result_msg => xml_to_str(node, '//Accounts/resultMsg/text()'),
|
@@ -187,17 +188,21 @@ class Landslider < Handsoap::Service
|
|
187
188
|
|
188
189
|
def parse_get_account_notes_result(node)
|
189
190
|
{
|
191
|
+
:notes => parse_notes(node),
|
192
|
+
|
190
193
|
:error => xml_to_bool(node, './*/error/text()'),
|
191
194
|
:error_code => xml_to_int(node, './*/errorCode/text()'),
|
192
195
|
:result_msg => xml_to_str(node, './*/resultMsg/text()'),
|
193
196
|
:status_code => xml_to_int(node, './*/statusCode/text()'),
|
194
|
-
:results_returned => xml_to_int(node, './*/resultsReturned/text()')
|
197
|
+
:results_returned => xml_to_int(node, './*/resultsReturned/text()'),
|
198
|
+
:total_results_available => xml_to_int(node, './*/totalResultsAvailable/text()')
|
195
199
|
}
|
196
200
|
end
|
197
201
|
|
198
202
|
def parse_get_account_opportunities_result(node)
|
199
203
|
{
|
200
204
|
:opportunities => node.xpath('./*/opportunityList', ns).map { |child| parse_opportunity(child) },
|
205
|
+
|
201
206
|
:error => xml_to_bool(node, './*/error/text()'),
|
202
207
|
:results_returned => xml_to_int(node, './*/resultsReturned/text()'),
|
203
208
|
:total_results_available => xml_to_int(node, './*/totalResultsAvailable/text()')
|
@@ -207,7 +212,48 @@ class Landslider < Handsoap::Service
|
|
207
212
|
def parse_get_account_contacts_result(node)
|
208
213
|
{
|
209
214
|
:contacts => node.xpath('./*/contactList', ns).map { |child| parse_contact(child) },
|
215
|
+
|
216
|
+
:error => xml_to_bool(node, './*/error/text()'),
|
217
|
+
:results_returned => xml_to_int(node, './*/resultsReturned/text()'),
|
218
|
+
:total_results_available => xml_to_int(node, './*/totalResultsAvailable/text()')
|
219
|
+
}
|
220
|
+
end
|
221
|
+
|
222
|
+
def parse_get_contact_notes_result(node)
|
223
|
+
{
|
224
|
+
:notes => parse_notes(node),
|
225
|
+
|
226
|
+
:error => xml_to_bool(node, './*/error/text()'),
|
227
|
+
:error_code => xml_to_int(node, './*/errorCode/text()'),
|
228
|
+
:result_msg => xml_to_str(node, './*/resultMsg/text()'),
|
229
|
+
:status_code => xml_to_int(node, './*/statusCode/text()'),
|
230
|
+
:results_returned => xml_to_int(node, './*/resultsReturned/text()'),
|
231
|
+
:total_results_available => xml_to_int(node, './*/totalResultsAvailable/text()')
|
232
|
+
|
233
|
+
}
|
234
|
+
end
|
235
|
+
|
236
|
+
def parse_get_lead_notes_result(node)
|
237
|
+
{
|
238
|
+
:notes => parse_notes(node),
|
239
|
+
|
240
|
+
:error => xml_to_bool(node, './*/error/text()'),
|
241
|
+
:error_code => xml_to_int(node, './*/errorCode/text()'),
|
242
|
+
:result_msg => xml_to_str(node, './*/resultMsg/text()'),
|
243
|
+
:status_code => xml_to_int(node, './*/statusCode/text()'),
|
244
|
+
:results_returned => xml_to_int(node, './*/resultsReturned/text()'),
|
245
|
+
:total_results_available => xml_to_int(node, './*/totalResultsAvailable/text()')
|
246
|
+
}
|
247
|
+
end
|
248
|
+
|
249
|
+
def parse_get_opportunity_notes_result(node)
|
250
|
+
{
|
251
|
+
:notes => parse_notes(node),
|
252
|
+
|
210
253
|
:error => xml_to_bool(node, './*/error/text()'),
|
254
|
+
:error_code => xml_to_int(node, './*/errorCode/text()'),
|
255
|
+
:result_msg => xml_to_str(node, './*/resultMsg/text()'),
|
256
|
+
:status_code => xml_to_int(node, './*/statusCode/text()'),
|
211
257
|
:results_returned => xml_to_int(node, './*/resultsReturned/text()'),
|
212
258
|
:total_results_available => xml_to_int(node, './*/totalResultsAvailable/text()')
|
213
259
|
}
|
@@ -275,6 +321,27 @@ class Landslider < Handsoap::Service
|
|
275
321
|
}
|
276
322
|
end
|
277
323
|
|
324
|
+
def parse_notes(node)
|
325
|
+
{
|
326
|
+
:notes => node.xpath('./*/notes', ns).map { |child| parse_note(child) }
|
327
|
+
}
|
328
|
+
end
|
329
|
+
|
330
|
+
# WsNote
|
331
|
+
def parse_note(node)
|
332
|
+
{
|
333
|
+
#:entity_id => xml_to_str(node, './entityId/text()'),
|
334
|
+
#:entity_type => xml_to_str(node, './entityType/text()'),
|
335
|
+
:archived_by => xml_to_int(node, './archivedBy/text()'),
|
336
|
+
:created_by => xml_to_int(node, './createdBy/text()'),
|
337
|
+
:created_on => xml_to_str(node, './createdOn/text()'),
|
338
|
+
:latest => xml_to_bool(node, './latest/text()'),
|
339
|
+
:note_id => xml_to_str(node, './noteId/text()'),
|
340
|
+
:note_html => xml_to_str(node, './note/text()')
|
341
|
+
|
342
|
+
}
|
343
|
+
end
|
344
|
+
|
278
345
|
# WsOpportunity
|
279
346
|
def parse_opportunity(node)
|
280
347
|
{
|
data/test/landslider_test.rb
CHANGED
@@ -3,7 +3,17 @@ require 'test_helper'
|
|
3
3
|
|
4
4
|
class LandsliderTest < Test::Unit::TestCase
|
5
5
|
|
6
|
+
def setup
|
7
|
+
# TODO: fetch a session_id once
|
8
|
+
# if $sid.nil?
|
9
|
+
result = Landslider.login('LOGINTOKEN=' + LS_INSTANCE_NAME)
|
10
|
+
$sid = result[:session_id]
|
11
|
+
# end
|
12
|
+
#puts "using #{$sid} to login"
|
13
|
+
end
|
14
|
+
|
6
15
|
def test_landslider_login
|
16
|
+
# other tests should use $sid for authenticatoin
|
7
17
|
result = Landslider.login('LOGINTOKEN=' + LS_INSTANCE_NAME)
|
8
18
|
|
9
19
|
assert_not_nil result
|
@@ -12,8 +22,7 @@ class LandsliderTest < Test::Unit::TestCase
|
|
12
22
|
end
|
13
23
|
|
14
24
|
def test_landslider_get_api_version
|
15
|
-
result = Landslider.
|
16
|
-
result = Landslider.get_api_version(result[:session_id])
|
25
|
+
result = Landslider.get_api_version($sid)
|
17
26
|
|
18
27
|
assert_not_nil result
|
19
28
|
assert_operator result[:major_version], :>=, 2
|
@@ -22,8 +31,8 @@ class LandsliderTest < Test::Unit::TestCase
|
|
22
31
|
end
|
23
32
|
|
24
33
|
def test_landslider_get_accounts
|
25
|
-
result = Landslider.
|
26
|
-
|
34
|
+
result = Landslider.get_accounts($sid)
|
35
|
+
|
27
36
|
assert_equal false, result[:error]
|
28
37
|
assert_not_nil result[:accounts]
|
29
38
|
assert result[:accounts].all? { |a| !a[:account_name].nil? }, "account name required"
|
@@ -32,34 +41,25 @@ class LandsliderTest < Test::Unit::TestCase
|
|
32
41
|
assert_not_nil result[:result_msg]
|
33
42
|
end
|
34
43
|
|
35
|
-
def test_landslider_get_account_contacts
|
36
|
-
result = Landslider.login('LOGINTOKEN=' + LS_INSTANCE_NAME)
|
37
|
-
|
44
|
+
def test_landslider_get_account_contacts
|
38
45
|
# exists on jaytest
|
39
|
-
result = Landslider.get_account_contacts(
|
46
|
+
result = Landslider.get_account_contacts($sid, 51857822)
|
40
47
|
|
41
|
-
|
42
|
-
assert_operator result[:results_returned], :>=, 1
|
48
|
+
validate_standard_api_result result
|
43
49
|
assert result[:contacts].all? { |con| !con[:last_name].nil? }, "last name required"
|
44
50
|
end
|
45
51
|
|
46
52
|
def test_landslider_get_account_notes
|
47
|
-
result = Landslider.login('LOGINTOKEN=' + LS_INSTANCE_NAME)
|
48
|
-
|
49
53
|
# exists on jaytest
|
50
|
-
result = Landslider.get_account_notes(
|
54
|
+
result = Landslider.get_account_notes($sid, 55647822)
|
51
55
|
|
52
56
|
validate_standard_api_result result
|
53
|
-
|
54
|
-
|
57
|
+
validate_at_least_one_note_returned result
|
55
58
|
end
|
56
|
-
|
57
|
-
|
58
|
-
def test_landslider_get_account_opportunities
|
59
|
-
result = Landslider.login('LOGINTOKEN=' + LS_INSTANCE_NAME)
|
60
59
|
|
60
|
+
def test_landslider_get_account_opportunities
|
61
61
|
# exists on jaytest
|
62
|
-
result = Landslider.get_account_opportunities(
|
62
|
+
result = Landslider.get_account_opportunities($sid, 51858821)
|
63
63
|
|
64
64
|
assert_equal false, result[:error]
|
65
65
|
assert result[:opportunities].all? { |opp|
|
@@ -68,22 +68,55 @@ class LandsliderTest < Test::Unit::TestCase
|
|
68
68
|
!opp[:deal_value].nil? &&
|
69
69
|
!opp[:selling_process].nil?
|
70
70
|
}, "opportunities require a name, account, deal value and selling process"
|
71
|
-
|
72
|
-
|
71
|
+
end
|
72
|
+
|
73
|
+
def test_landslider_get_contact_notes
|
74
|
+
# exists on jaytest
|
75
|
+
result = Landslider.get_contact_notes($sid, 62813411)
|
76
|
+
|
77
|
+
validate_standard_api_result result
|
78
|
+
validate_at_least_one_note_returned result
|
79
|
+
end
|
80
|
+
|
81
|
+
def test_landslider_get_lead_notes
|
82
|
+
# exists on jaytest
|
83
|
+
result = Landslider.get_lead_notes($sid, 33592028)
|
84
|
+
|
85
|
+
validate_standard_api_result result
|
86
|
+
validate_at_least_one_note_returned result
|
87
|
+
end
|
88
|
+
|
73
89
|
|
90
|
+
def test_landslider_get_opportunity_notes
|
91
|
+
# exists on jaytest
|
92
|
+
result = Landslider.get_opportunity_notes($sid, 55952453)
|
93
|
+
|
94
|
+
validate_standard_api_result result
|
95
|
+
validate_at_least_one_note_returned result
|
96
|
+
end
|
74
97
|
|
75
98
|
private
|
76
99
|
|
77
100
|
def validate_standard_api_result(result)
|
78
101
|
assert_equal Hash, result.class, "api method should return a hash"
|
102
|
+
assert_not_nil result[:results_returned], ":results_returned missing"
|
79
103
|
assert_operator result[:results_returned], :>=, 0
|
104
|
+
assert_not_nil result[:total_results_available], ":total_results_available missing"
|
105
|
+
assert_operator result[:total_results_available], :>=, 0
|
106
|
+
assert_not_nil result[:error]
|
80
107
|
assert_equal false, result[:error], "error should be false"
|
81
108
|
end
|
82
|
-
|
83
|
-
def login(session_id)
|
84
|
-
Landslider.login(session_id)
|
85
|
-
end
|
86
109
|
|
110
|
+
def validate_at_least_one_note_returned(result)
|
111
|
+
assert_operator result[:results_returned], :>=, 1
|
112
|
+
assert_not_nil result[:notes], "at least one note should be returned"
|
113
|
+
assert_equal Hash, result[:notes].class
|
114
|
+
end
|
115
|
+
|
116
|
+
# def login(session_id)
|
117
|
+
# Landslider.login(session_id)
|
118
|
+
# end
|
119
|
+
#
|
87
120
|
|
88
121
|
end
|
89
122
|
|
metadata
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
name: landslider
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease:
|
5
|
-
version: 0.2.
|
5
|
+
version: 0.2.2
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Jay Prall
|
@@ -10,7 +10,7 @@ autorequire:
|
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
12
|
|
13
|
-
date: 2011-04-
|
13
|
+
date: 2011-04-27 00:00:00 -04:00
|
14
14
|
default_executable:
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|