landslider 0.5.26 → 0.5.28

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/README.md CHANGED
@@ -79,6 +79,7 @@ API methods
79
79
 
80
80
  Here is a list of API methods that have been added:
81
81
 
82
+ * addTask
82
83
  * login
83
84
  * getApiVersion
84
85
  * getAccounts
@@ -99,6 +100,7 @@ API methods
99
100
  * getOpportunities
100
101
  * getOpportunityCustomFields
101
102
  * getOpportunityNotes
103
+ * getTasks
102
104
  * getUserInformation
103
105
  * getUserInformationById
104
106
  * runMyListbyId
@@ -1,5 +1,5 @@
1
1
  ---
2
2
  :major: 0
3
3
  :minor: 5
4
- :patch: 26
4
+ :patch: 28
5
5
  :build:
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{landslider}
8
- s.version = "0.5.26"
8
+ s.version = "0.5.28"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Jay Prall"]
12
- s.date = %q{2011-10-11}
12
+ s.date = %q{2011-12-15}
13
13
  s.description = %q{Landslider is a ruby interface to the Landslide SOAP-based API}
14
14
  s.email = %q{jay@j4y.net}
15
15
  s.extra_rdoc_files = [
@@ -64,12 +64,15 @@ Gem::Specification.new do |s|
64
64
  "lib/landslider/entities/ws_search_criterion.rb",
65
65
  "lib/landslider/entities/ws_search_operator.rb",
66
66
  "lib/landslider/entities/ws_selling_process.rb",
67
+ "lib/landslider/entities/ws_task.rb",
68
+ "lib/landslider/entities/ws_task_search.rb",
67
69
  "lib/landslider/entities/ws_user.rb",
68
70
  "lib/landslider/entities/ws_user_search.rb",
69
71
  "tasks/landslider.rake",
70
72
  "test/get_account_types_test.rb",
71
73
  "test/get_accounts_test.rb",
72
74
  "test/get_contact_test.rb",
75
+ "test/get_tasks_test.rb",
73
76
  "test/landslider_test.rb",
74
77
  "test/run_mylist_by_id_test.rb",
75
78
  "test/test_helper.rb",
@@ -89,6 +92,7 @@ Gem::Specification.new do |s|
89
92
  "test/get_account_types_test.rb",
90
93
  "test/get_accounts_test.rb",
91
94
  "test/get_contact_test.rb",
95
+ "test/get_tasks_test.rb",
92
96
  "test/landslider_test.rb",
93
97
  "test/run_mylist_by_id_test.rb",
94
98
  "test/test_helper.rb",
@@ -51,6 +51,18 @@ class Landslider < Handsoap::Service
51
51
  node = response.document.xpath('//ns:loginResponse/loginResponse', ns)
52
52
  parse_login_result(node)
53
53
  end
54
+
55
+ def add_task(session_id, task)
56
+ self.session_id = session_id
57
+ response = invoke('urn:addTask', :soap_action => :none) do |message|
58
+ message.add('task') { |req|
59
+ task.soapify_for(req)
60
+ }
61
+ end
62
+ node = response.document.xpath('//ns:addTaskResponse/Status', ns)
63
+ parse_add_task_result(node)
64
+
65
+ end
54
66
 
55
67
  # @param [WsAccountSearch] search
56
68
  # @param [String] session_id
@@ -292,6 +304,20 @@ class Landslider < Handsoap::Service
292
304
  parse_get_opportunity_notes_result(node)
293
305
  end
294
306
 
307
+ # @param [String] session_id
308
+ # @return [Hash]
309
+ def get_tasks(session_id, search)
310
+ self.session_id = session_id
311
+
312
+ response = invoke('urn:getTasks', :soap_action => :none) do |message|
313
+ message.add('taskSearch') { |req|
314
+ search.soapify_for(req)
315
+ }
316
+ end
317
+ node = response.document.xpath('//ns:getTasksResponse', ns)
318
+ parse_get_tasks_result(node)
319
+ end
320
+
295
321
  # @param [String] session_id
296
322
  # @param [String] user_id usually in the form of user@example.com
297
323
  # @return [Hash]
@@ -347,6 +373,14 @@ class Landslider < Handsoap::Service
347
373
  :session_id => xml_to_str(node, './sessionId/text()')
348
374
  }
349
375
  end
376
+
377
+ def parse_add_task_result(node)
378
+ {
379
+ :error => xml_to_bool(node, './error/text()'),
380
+ :error_code => xml_to_int(node, './errorCode/text()'),
381
+ :created => xml_to_bool(node, './created/text()')
382
+ }
383
+ end
350
384
 
351
385
  def parse_api_version_result(node)
352
386
  {
@@ -523,7 +557,19 @@ class Landslider < Handsoap::Service
523
557
  :total_results_available => xml_to_int(node, './*/totalResultsAvailable/text()')
524
558
  }.merge(notes)
525
559
  end
526
-
560
+
561
+ def parse_get_tasks_result(node)
562
+ tasks = parse_tasks(node)
563
+ {
564
+ :error => xml_to_bool(node, './*/error/text()'),
565
+ :error_code => xml_to_int(node, './*/errorCode/text()'),
566
+ :result_msg => xml_to_str(node, './*/resultMsg/text()'),
567
+ :status_code => xml_to_int(node, './*/statusCode/text()'),
568
+ :results_returned => xml_to_int(node, './*/resultsReturned/text()'),
569
+ :total_results_available => xml_to_int(node, './*/totalResultsAvailable/text()')
570
+ }.merge(tasks)
571
+ end
572
+
527
573
  def parse_get_user_information_by_id_result(node)
528
574
  {
529
575
  :employee => parse_employee(node.xpath('./WsEmployee/employee')),
@@ -718,6 +764,25 @@ class Landslider < Handsoap::Service
718
764
  :start_date => xml_to_date(node, './startDate/text()')
719
765
  }
720
766
  end
767
+
768
+ def parse_tasks(node)
769
+ {
770
+ :tasks => node.xpath('./*/taskList', ns).map { |child| parse_task(child) }
771
+ }
772
+ end
773
+
774
+ # WsTask
775
+ def parse_task(node)
776
+ {
777
+ :created_by => xml_to_int(node, './task/createdBy/text()'),
778
+ :created_on => xml_to_date(node, './task/createdOn/text()'),
779
+ :completed => xml_to_bool(node, './task/completed/text()'),
780
+ :description => xml_to_str(node, './task/description/text()'),
781
+ :due_date => xml_to_date(node, './task/dueDate/text()'),
782
+ :assigned_to => xml_to_int(node, './task/assignedTo/text()'),
783
+ :updated_on => xml_to_date(node, './task/updatedOn/text()'),
784
+ }
785
+ end
721
786
 
722
787
  end
723
788
 
@@ -38,6 +38,9 @@ require 'landslider/entities/ws_product'
38
38
  require 'landslider/entities/ws_product_family'
39
39
  require 'landslider/entities/ws_product_result'
40
40
 
41
+ require 'landslider/entities/ws_task_search'
42
+ require 'landslider/entities/ws_task'
43
+
41
44
 
42
45
  require 'landslider/entities/ws_search'
43
46
  require 'landslider/entities/ws_selling_process'
@@ -8,6 +8,9 @@ class Landslider
8
8
  # @return [String]
9
9
  attr_reader :entity_type, :entity_name
10
10
 
11
+ def soapify_for(msg)
12
+ msg.add 'entityId', @entity_id unless @entity_id.nil?
13
+ end
11
14
  end
12
15
 
13
16
  end
@@ -0,0 +1,36 @@
1
+
2
+ class Landslider
3
+
4
+ class WsTask < WsEntity
5
+
6
+ # @return [Integer]
7
+ attr_reader :task_id, :created_by, :archived_by, :associated_contact_id, :associated_entity_id, :updated_by
8
+
9
+ # Required
10
+ # @return [String]
11
+ attr_writer :task_name
12
+
13
+ # @return [Date]
14
+ attr_writer :due_date
15
+
16
+ # @return [Integer]
17
+ attr_writer :assigned_to
18
+
19
+ # @return [Boolean]
20
+ attr_reader :completed
21
+
22
+ # @param [Handsoap::XmlMason::Node] msg
23
+ # @return [Handsoap::XmlMason::Node]
24
+ def soapify_for(msg)
25
+ super(msg)
26
+ msg.add 'taskName', @task_name unless @task_name.nil?
27
+ msg.add 'dueDate', @due_date unless @due_date.nil?
28
+ msg.add 'assignedTo', @assigned_to.to_i unless @assigned_to.nil?
29
+
30
+ msg.add 'completed', @completed
31
+
32
+ end
33
+
34
+ end
35
+
36
+ end
@@ -0,0 +1,26 @@
1
+
2
+ class Landslider
3
+
4
+ # search criteria for getTasks
5
+ class WsTaskSearch < WsSearch
6
+
7
+ # @return [Integer]
8
+ attr_writer :assigned_to, :created_by, :task_type_id, :associated_entity_id, :associated_contact_id
9
+
10
+ # @return [Date]
11
+ attr_writer :updated_on
12
+
13
+ # @param [Handsoap::XmlMason::Node] msg
14
+ # @return [Handsoap::XmlMason::Node]
15
+ def soapify_for(msg)
16
+ super(msg)
17
+ msg.add 'assignedTo', @assigned_to unless @assigned_to.nil?
18
+ msg.add 'createdBy', @created_by unless @created_by.nil?
19
+ msg.add 'taskTypeId', @task_type_id unless @task_type_id.nil?
20
+ msg.add 'associatedContactId', @associated_contact_id unless @associated_contact_id.nil?
21
+ msg.add 'associatedEntityId', @associated_entity_id unless @associated_entity_id.nil?
22
+ end
23
+
24
+ end
25
+
26
+ end
@@ -16,7 +16,7 @@ class GetAccountsTest < Test::Unit::TestCase
16
16
  assert_not_nil result
17
17
  assert_equal false, result[:error]
18
18
  assert_kind_of Array, result[:accounts]
19
- assert_equal 12, result[:accounts].size
19
+ assert_equal 16, result[:accounts].size
20
20
 
21
21
  end
22
22
 
@@ -46,4 +46,4 @@ class GetAccountsTest < Test::Unit::TestCase
46
46
  end
47
47
 
48
48
 
49
- end
49
+ end
@@ -0,0 +1,39 @@
1
+ require 'test_helper'
2
+
3
+ require 'date'
4
+
5
+ class GetTasksTest < Test::Unit::TestCase
6
+
7
+ def setup
8
+ # uncomment this line to debug
9
+ # Landslider.logger = $stdout
10
+ $sesson_idt7 ||= Landslider.login('LOGINTOKEN=' + LS_INSTANCE_NAME)[:session_id]
11
+ end
12
+
13
+ def test_get_tasks_with_default_search
14
+ search = Landslider::WsTaskSearch.new
15
+ result = Landslider.get_tasks($sesson_idt7, search)
16
+ assert_not_nil result
17
+ assert_equal false, result[:error]
18
+ assert_kind_of Array, result[:tasks]
19
+ end
20
+
21
+
22
+ def test_add_task
23
+
24
+ user_info = Landslider.get_user_information($sesson_idt7, LS_API_USERNAME)
25
+
26
+ # TODO: come up with a better way for constructing objects
27
+ task = Landslider::WsTask.new
28
+ dt = DateTime.strptime("2011-12-25T11:25:56-05:00")
29
+ task.task_name='task for ' + dt.to_s
30
+ task.due_date= dt
31
+ task.assigned_to = user_info[:employee][:employee_id]
32
+
33
+ result = Landslider.add_task($sesson_idt7, task)
34
+ assert_not_nil result
35
+ assert_equal false, result[:error]
36
+ assert_equal true, result[:created]
37
+ end
38
+
39
+ end
@@ -138,7 +138,6 @@ class LandsliderTest < Test::Unit::TestCase
138
138
 
139
139
  def test_landslider_get_user_information
140
140
  result = Landslider.get_user_information($sid, 'jayp@landslide.com')
141
-
142
141
  assert_not_nil result
143
142
  assert_equal false, result[:error]
144
143
  assert_not_nil result[:employee]
@@ -8,14 +8,14 @@ class WsAccountContactSearchTest < Test::Unit::TestCase
8
8
  $sess4 ||= Landslider.login('LOGINTOKEN=' + LS_INSTANCE_NAME)[:session_id]
9
9
  end
10
10
 
11
- def test_ws_account_contact_search
12
- search = Landslider::WsAccountContactSearch.new(55647822)
13
-
14
- result = Landslider.get_account_contacts($sess4, search)
11
+ #def test_ws_account_contact_search
12
+ #search = Landslider::WsAccountContactSearch.new(55647822)
13
+ #
14
+ #result = Landslider.get_account_contacts($sess4, search)
15
15
 
16
- assert_equal false, result[:error]
16
+ #assert_equal false, result[:error]
17
17
  # assert_equal 2, result[:results_returned]
18
- end
18
+ #end
19
19
 
20
20
  # def test_contact_note_search_limit_by_results_requested
21
21
  # search = Landslider::WsContactNoteSearch.new(62813411)
@@ -26,4 +26,4 @@ class WsAccountContactSearchTest < Test::Unit::TestCase
26
26
  # assert_equal 1, result[:results_returned]
27
27
  # end
28
28
 
29
- end
29
+ end
@@ -19,7 +19,7 @@ class WsSearchTest < Test::Unit::TestCase
19
19
  result = Landslider.get_accounts($sid2)
20
20
 
21
21
  assert_equal false, result[:error]
22
- assert_equal 12, result[:results_returned]
22
+ assert_equal 16, result[:results_returned]
23
23
  end
24
24
 
25
25
  def test_get_accounts_with_search_criteria
@@ -46,7 +46,7 @@ class WsSearchTest < Test::Unit::TestCase
46
46
  result = Landslider.get_opportunities($sid2)
47
47
 
48
48
  assert_equal false, result[:error]
49
- assert_equal 7, result[:results_returned]
49
+ assert_equal 17, result[:results_returned]
50
50
  end
51
51
 
52
52
  def test_get_opportunities_with_search_criteria
@@ -76,4 +76,4 @@ class WsSearchTest < Test::Unit::TestCase
76
76
  assert_equal 50, search.instance_variable_get(:@total_results_requested)
77
77
  end
78
78
 
79
- end
79
+ end
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: landslider
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.5.26
5
+ version: 0.5.28
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-10-11 00:00:00 -04:00
13
+ date: 2011-12-15 00:00:00 -05:00
14
14
  default_executable:
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
@@ -125,12 +125,15 @@ files:
125
125
  - lib/landslider/entities/ws_search_criterion.rb
126
126
  - lib/landslider/entities/ws_search_operator.rb
127
127
  - lib/landslider/entities/ws_selling_process.rb
128
+ - lib/landslider/entities/ws_task.rb
129
+ - lib/landslider/entities/ws_task_search.rb
128
130
  - lib/landslider/entities/ws_user.rb
129
131
  - lib/landslider/entities/ws_user_search.rb
130
132
  - tasks/landslider.rake
131
133
  - test/get_account_types_test.rb
132
134
  - test/get_accounts_test.rb
133
135
  - test/get_contact_test.rb
136
+ - test/get_tasks_test.rb
134
137
  - test/landslider_test.rb
135
138
  - test/run_mylist_by_id_test.rb
136
139
  - test/test_helper.rb
@@ -172,6 +175,7 @@ test_files:
172
175
  - test/get_account_types_test.rb
173
176
  - test/get_accounts_test.rb
174
177
  - test/get_contact_test.rb
178
+ - test/get_tasks_test.rb
175
179
  - test/landslider_test.rb
176
180
  - test/run_mylist_by_id_test.rb
177
181
  - test/test_helper.rb