zendesk2 1.4.2 → 1.5.3

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.
Files changed (153) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +7 -1
  3. data/lib/zendesk2/attributes.rb +1 -1
  4. data/lib/zendesk2/{collection.rb → client/collection.rb} +22 -17
  5. data/lib/zendesk2/client/collections/categories.rb +2 -1
  6. data/lib/zendesk2/client/collections/forums.rb +2 -1
  7. data/lib/zendesk2/client/collections/groups.rb +4 -3
  8. data/lib/zendesk2/client/collections/help_center/articles.rb +2 -1
  9. data/lib/zendesk2/client/collections/help_center/categories.rb +2 -1
  10. data/lib/zendesk2/client/collections/help_center/sections.rb +2 -1
  11. data/lib/zendesk2/client/collections/memberships.rb +9 -7
  12. data/lib/zendesk2/client/collections/organizations.rb +3 -2
  13. data/lib/zendesk2/client/collections/ticket_audits.rb +5 -4
  14. data/lib/zendesk2/client/collections/ticket_comments.rb +4 -3
  15. data/lib/zendesk2/client/collections/ticket_fields.rb +3 -1
  16. data/lib/zendesk2/client/collections/tickets.rb +2 -1
  17. data/lib/zendesk2/client/collections/topic_comments.rb +2 -1
  18. data/lib/zendesk2/client/collections/topics.rb +2 -1
  19. data/lib/zendesk2/client/collections/user_fields.rb +3 -1
  20. data/lib/zendesk2/client/collections/user_identities.rb +3 -1
  21. data/lib/zendesk2/client/collections/users.rb +3 -2
  22. data/lib/zendesk2/client/help_center.rb +3 -0
  23. data/lib/zendesk2/client/mock.rb +7 -130
  24. data/lib/zendesk2/{model.rb → client/model.rb} +7 -3
  25. data/lib/zendesk2/client/models/audit_event.rb +2 -2
  26. data/lib/zendesk2/client/models/category.rb +8 -8
  27. data/lib/zendesk2/client/models/forum.rb +11 -16
  28. data/lib/zendesk2/client/models/group.rb +8 -13
  29. data/lib/zendesk2/client/models/help_center/article.rb +12 -16
  30. data/lib/zendesk2/client/models/help_center/category.rb +12 -16
  31. data/lib/zendesk2/client/models/help_center/section.rb +12 -16
  32. data/lib/zendesk2/client/models/membership.rb +10 -12
  33. data/lib/zendesk2/client/models/organization.rb +13 -20
  34. data/lib/zendesk2/client/models/ticket.rb +21 -19
  35. data/lib/zendesk2/client/models/ticket_audit.rb +3 -3
  36. data/lib/zendesk2/client/models/ticket_comment.rb +1 -1
  37. data/lib/zendesk2/client/models/ticket_comment_privacy_change.rb +1 -1
  38. data/lib/zendesk2/client/models/ticket_field.rb +5 -13
  39. data/lib/zendesk2/client/models/ticket_metric.rb +1 -1
  40. data/lib/zendesk2/client/models/ticket_voice_comment.rb +1 -1
  41. data/lib/zendesk2/client/models/topic.rb +9 -14
  42. data/lib/zendesk2/client/models/topic_comment.rb +14 -19
  43. data/lib/zendesk2/client/models/user.rb +25 -32
  44. data/lib/zendesk2/client/models/user_field.rb +10 -18
  45. data/lib/zendesk2/client/models/user_identity.rb +9 -18
  46. data/lib/zendesk2/client/real.rb +7 -8
  47. data/lib/zendesk2/client/request.rb +271 -0
  48. data/lib/zendesk2/client/requests/create_category.rb +19 -27
  49. data/lib/zendesk2/client/requests/create_forum.rb +23 -28
  50. data/lib/zendesk2/client/requests/create_group.rb +25 -29
  51. data/lib/zendesk2/client/requests/create_help_center_article.rb +54 -60
  52. data/lib/zendesk2/client/requests/create_help_center_category.rb +35 -47
  53. data/lib/zendesk2/client/requests/create_help_center_section.rb +49 -55
  54. data/lib/zendesk2/client/requests/create_membership.rb +42 -42
  55. data/lib/zendesk2/client/requests/create_organization.rb +30 -40
  56. data/lib/zendesk2/client/requests/create_ticket.rb +76 -85
  57. data/lib/zendesk2/client/requests/create_ticket_field.rb +36 -40
  58. data/lib/zendesk2/client/requests/create_topic.rb +23 -28
  59. data/lib/zendesk2/client/requests/create_topic_comment.rb +27 -31
  60. data/lib/zendesk2/client/requests/create_user.rb +51 -56
  61. data/lib/zendesk2/client/requests/create_user_field.rb +36 -40
  62. data/lib/zendesk2/client/requests/create_user_identity.rb +39 -44
  63. data/lib/zendesk2/client/requests/destroy_category.rb +8 -21
  64. data/lib/zendesk2/client/requests/destroy_forum.rb +8 -23
  65. data/lib/zendesk2/client/requests/destroy_group.rb +8 -21
  66. data/lib/zendesk2/client/requests/destroy_help_center_article.rb +8 -18
  67. data/lib/zendesk2/client/requests/destroy_help_center_category.rb +8 -18
  68. data/lib/zendesk2/client/requests/destroy_help_center_section.rb +10 -18
  69. data/lib/zendesk2/client/requests/destroy_membership.rb +8 -22
  70. data/lib/zendesk2/client/requests/destroy_organization.rb +8 -21
  71. data/lib/zendesk2/client/requests/destroy_ticket.rb +8 -21
  72. data/lib/zendesk2/client/requests/destroy_ticket_field.rb +8 -21
  73. data/lib/zendesk2/client/requests/destroy_topic.rb +8 -23
  74. data/lib/zendesk2/client/requests/destroy_topic_comment.rb +11 -24
  75. data/lib/zendesk2/client/requests/destroy_user.rb +17 -43
  76. data/lib/zendesk2/client/requests/destroy_user_field.rb +7 -22
  77. data/lib/zendesk2/client/requests/destroy_user_identity.rb +10 -25
  78. data/lib/zendesk2/client/requests/get_assignable_groups.rb +8 -16
  79. data/lib/zendesk2/client/requests/get_categories.rb +7 -15
  80. data/lib/zendesk2/client/requests/get_category.rb +11 -22
  81. data/lib/zendesk2/client/requests/get_ccd_tickets.rb +11 -18
  82. data/lib/zendesk2/client/requests/get_current_user.rb +6 -16
  83. data/lib/zendesk2/client/requests/get_forum.rb +11 -23
  84. data/lib/zendesk2/client/requests/get_forums.rb +7 -15
  85. data/lib/zendesk2/client/requests/get_group.rb +9 -23
  86. data/lib/zendesk2/client/requests/get_groups.rb +7 -15
  87. data/lib/zendesk2/client/requests/get_help_center_article.rb +13 -37
  88. data/lib/zendesk2/client/requests/get_help_center_articles.rb +6 -15
  89. data/lib/zendesk2/client/requests/get_help_center_categories.rb +6 -15
  90. data/lib/zendesk2/client/requests/get_help_center_category.rb +13 -37
  91. data/lib/zendesk2/client/requests/get_help_center_section.rb +14 -37
  92. data/lib/zendesk2/client/requests/get_help_center_sections.rb +6 -15
  93. data/lib/zendesk2/client/requests/get_membership.rb +9 -24
  94. data/lib/zendesk2/client/requests/get_organization.rb +9 -22
  95. data/lib/zendesk2/client/requests/get_organization_by_external_id.rb +11 -20
  96. data/lib/zendesk2/client/requests/get_organization_memberships.rb +10 -16
  97. data/lib/zendesk2/client/requests/get_organization_tickets.rb +14 -21
  98. data/lib/zendesk2/client/requests/get_organization_users.rb +12 -20
  99. data/lib/zendesk2/client/requests/get_organizations.rb +7 -16
  100. data/lib/zendesk2/client/requests/get_requested_tickets.rb +12 -18
  101. data/lib/zendesk2/client/requests/get_ticket.rb +9 -23
  102. data/lib/zendesk2/client/requests/get_ticket_audits.rb +12 -18
  103. data/lib/zendesk2/client/requests/get_ticket_comments.rb +10 -19
  104. data/lib/zendesk2/client/requests/get_ticket_field.rb +9 -22
  105. data/lib/zendesk2/client/requests/get_ticket_fields.rb +7 -15
  106. data/lib/zendesk2/client/requests/get_tickets.rb +7 -15
  107. data/lib/zendesk2/client/requests/get_topic.rb +8 -23
  108. data/lib/zendesk2/client/requests/get_topic_comment.rb +12 -28
  109. data/lib/zendesk2/client/requests/get_topic_comments.rb +13 -18
  110. data/lib/zendesk2/client/requests/get_topics.rb +6 -15
  111. data/lib/zendesk2/client/requests/get_user.rb +15 -28
  112. data/lib/zendesk2/client/requests/get_user_field.rb +9 -22
  113. data/lib/zendesk2/client/requests/get_user_identities.rb +11 -18
  114. data/lib/zendesk2/client/requests/get_user_identity.rb +11 -21
  115. data/lib/zendesk2/client/requests/get_user_memberships.rb +12 -18
  116. data/lib/zendesk2/client/requests/get_users.rb +7 -15
  117. data/lib/zendesk2/client/requests/mark_membership_default.rb +17 -28
  118. data/lib/zendesk2/client/requests/mark_user_identity_primary.rb +17 -30
  119. data/lib/zendesk2/client/requests/search.rb +30 -19
  120. data/lib/zendesk2/client/requests/search_help_center_articles.rb +22 -18
  121. data/lib/zendesk2/client/requests/search_organization.rb +40 -28
  122. data/lib/zendesk2/client/requests/search_user.rb +56 -44
  123. data/lib/zendesk2/client/requests/update_category.rb +14 -24
  124. data/lib/zendesk2/client/requests/update_forum.rb +13 -25
  125. data/lib/zendesk2/client/requests/update_group.rb +12 -24
  126. data/lib/zendesk2/client/requests/update_help_center_article.rb +17 -42
  127. data/lib/zendesk2/client/requests/update_help_center_category.rb +17 -42
  128. data/lib/zendesk2/client/requests/update_help_center_section.rb +17 -42
  129. data/lib/zendesk2/client/requests/update_organization.rb +23 -35
  130. data/lib/zendesk2/client/requests/update_ticket.rb +63 -63
  131. data/lib/zendesk2/client/requests/update_ticket_field.rb +12 -24
  132. data/lib/zendesk2/client/requests/update_topic.rb +11 -25
  133. data/lib/zendesk2/client/requests/update_user.rb +47 -62
  134. data/lib/zendesk2/client/requests/update_user_field.rb +11 -23
  135. data/lib/zendesk2/client/requests/update_user_identity.rb +20 -28
  136. data/lib/zendesk2/client.rb +52 -28
  137. data/lib/zendesk2/paged_collection.rb +9 -9
  138. data/lib/zendesk2/searchable.rb +1 -1
  139. data/lib/zendesk2/version.rb +1 -1
  140. data/lib/zendesk2.rb +1 -13
  141. data/spec/categories_spec.rb +132 -0
  142. data/spec/forums_spec.rb +132 -0
  143. data/spec/lib/paged_collection_spec.rb +2 -2
  144. data/spec/memberships_spec.rb +5 -9
  145. data/spec/organizations_spec.rb +176 -25
  146. data/spec/spec_helper.rb +2 -0
  147. data/spec/tickets_spec.rb +2 -2
  148. data/spec/topic_comments_spec.rb +2 -2
  149. data/spec/user_identities_spec.rb +9 -6
  150. data/spec/users_spec.rb +22 -21
  151. data/zendesk2.gemspec +1 -2
  152. metadata +7 -21
  153. data/lib/zendesk2/client/requests/update_topic_comment.rb +0 -37
@@ -1,29 +1,19 @@
1
- class Zendesk2::Client
2
- class Real
3
- def update_category(params={})
4
- id = params.delete("id")
1
+ class Zendesk2::Client::UpdateCategory < Zendesk2::Client::Request
2
+ request_method :put
3
+ request_body { |r| { "category" => Cistern::Hash.except(r.category, "id") } }
4
+ request_path { |r| "/categories/#{r.category_id}.json" }
5
5
 
6
- request(
7
- :method => :put,
8
- :path => "/categories/#{id}.json",
9
- :body => {
10
- "category" => params
11
- },
12
- )
13
- end
6
+ def category
7
+ self.params.fetch("category")
14
8
  end
15
- class Mock
16
- def update_category(params={})
17
- id = params.delete("id")
18
- body = self.find!(:categories, id).merge!(params)
19
9
 
20
- response(
21
- :method => :put,
22
- :path => "/categories/#{id}.json",
23
- :body => {
24
- "category" => body
25
- },
26
- )
27
- end
10
+ def category_id
11
+ category.fetch("id")
12
+ end
13
+
14
+ def mock
15
+ mock_response(
16
+ "category" => find!(:categories, category_id).merge!(Cistern::Hash.slice(category, *Zendesk2::Client::CreateCategory.accepted_attributes))
17
+ )
28
18
  end
29
19
  end
@@ -1,31 +1,19 @@
1
- class Zendesk2::Client
2
- class Real
3
- def update_forum(params={})
4
- id = params.delete("id")
1
+ class Zendesk2::Client::UpdateForum < Zendesk2::Client::Request
2
+ request_method :put
3
+ request_path { |r| "/forums/#{r.forum_id}.json" }
4
+ request_body { |r| { "forum" => r.forum_params } }
5
5
 
6
- request(
7
- :method => :put,
8
- :path => "/forums/#{id}.json",
9
- :body => {
10
- "forum" => params
11
- },
12
- )
13
- end
6
+ def forum_params
7
+ Cistern::Hash.slice(params.fetch("forum"), *Zendesk2::Client::CreateForum.accepted_attributes)
14
8
  end
15
- class Mock
16
- def update_forum(params={})
17
- id = params.delete("id")
18
- path = "/forums/#{id}.json"
19
9
 
20
- body = self.find!(:forums, id).merge!(params)
10
+ def forum_id
11
+ params.fetch("forum").fetch("id")
12
+ end
21
13
 
22
- response(
23
- :method => :put,
24
- :path => path,
25
- :body => {
26
- "forum" => body
27
- },
28
- )
29
- end
14
+ def mock
15
+ mock_response(
16
+ "forum" => find!(:forums, forum_id).merge!(forum_params),
17
+ )
30
18
  end
31
19
  end
@@ -1,29 +1,17 @@
1
- class Zendesk2::Client
2
- class Real
3
- def update_group(params={})
4
- id = params.delete("id")
5
- path = "/groups/#{id}.json"
1
+ class Zendesk2::Client::UpdateGroup < Zendesk2::Client::Request
2
+ request_method :put
3
+ request_path { |r| "/groups/#{r.group_id}.json" }
4
+ request_body { |r| { "group" => r.group_params } }
6
5
 
7
- request(
8
- :method => :put,
9
- :path => path,
10
- :body => {
11
- "group" => params
12
- },
13
- )
14
- end
6
+ def group_params
7
+ @_group_params ||= Cistern::Hash.slice(params.fetch("group"), *Zendesk2::Client::CreateGroup.accepted_attributes)
15
8
  end
16
- class Mock
17
- def update_group(params={})
18
- id = params.delete("id")
19
9
 
20
- response(
21
- :method => :put,
22
- :path => "/groups/#{id}.json",
23
- :body => {
24
- "group" => find!(:groups, id).merge!(params)
25
- },
26
- )
27
- end
10
+ def group_id
11
+ @_group_id ||= params.fetch("group").fetch("id")
12
+ end
13
+
14
+ def mock
15
+ mock_response("group" => find!(:groups, group_id).merge!(group_params))
28
16
  end
29
17
  end
@@ -1,48 +1,23 @@
1
- class Zendesk2::Client
2
- class Real
3
- def update_help_center_article(params={})
4
- id = require_parameters(params, "id")
5
- locale = params["locale"]
6
-
7
- path = if locale
8
- "/help_center/#{locale}/articles/#{id}.json"
9
- else
10
- "/help_center/articles/#{id}.json"
11
- end
12
-
13
- request(
14
- :method => :put,
15
- :path => path,
16
- :body => {
17
- "article" => params
18
- },
19
- )
1
+ class Zendesk2::Client::UpdateHelpCenterArticle < Zendesk2::Client::Request
2
+ request_method :put
3
+ request_body { |r| { "article" => r.article_params } }
4
+ request_path { |r|
5
+ if locale = r.article_params["locale"]
6
+ "/help_center/#{locale}/articles/#{r.article_id}.json"
7
+ else
8
+ "/help_center/articles/#{r.article_id}.json"
20
9
  end
21
- end
22
- class Mock
23
- def update_help_center_article(params={})
24
- params = Cistern::Hash.stringify_keys(params)
25
-
26
- require_parameters(params, "id")
10
+ }
27
11
 
28
- id = params.delete("id")
29
- locale = params["locale"]
30
-
31
- path = if locale
32
- "/help_center/#{locale}/articles/#{id}.json"
33
- else
34
- "/help_center/articles/#{id}.json"
35
- end
12
+ def article_params
13
+ @_article_params ||= Cistern::Hash.slice(params.fetch("article"), *Zendesk2::Client::CreateHelpCenterArticle.accepted_attributes)
14
+ end
36
15
 
37
- body = self.find!(:help_center_articles, id).merge!(params)
16
+ def article_id
17
+ params.fetch("article").fetch("id")
18
+ end
38
19
 
39
- response(
40
- :method => :put,
41
- :path => path,
42
- :body => {
43
- "article" => body,
44
- },
45
- )
46
- end
20
+ def mock
21
+ mock_response("article" => self.find!(:help_center_articles, article_id).merge!(article_params))
47
22
  end
48
23
  end
@@ -1,48 +1,23 @@
1
- class Zendesk2::Client
2
- class Real
3
- def update_help_center_category(params={})
4
- id = require_parameters(params, "id")
5
- locale = params["locale"]
6
-
7
- path = if locale
8
- "/help_center/#{locale}/categories/#{id}.json"
9
- else
10
- "/help_center/categories/#{id}.json"
11
- end
12
-
13
- request(
14
- :method => :put,
15
- :path => path,
16
- :body => {
17
- "category" => params
18
- },
19
- )
1
+ class Zendesk2::Client::UpdateHelpCenterCategory < Zendesk2::Client::Request
2
+ request_method :put
3
+ request_body { |r| { "category" => r.category_params } }
4
+ request_path { |r|
5
+ if locale = r.category_params["locale"]
6
+ "/help_center/#{locale}/categories/#{r.category_id}.json"
7
+ else
8
+ "/help_center/categories/#{r.category_id}.json"
20
9
  end
21
- end
22
- class Mock
23
- def update_help_center_category(params={})
24
- params = Cistern::Hash.stringify_keys(params)
25
-
26
- require_parameters(params, "id")
10
+ }
27
11
 
28
- id = params.delete("id").to_s
29
- locale = params["locale"]
30
-
31
- path = if locale
32
- "/help_center/#{locale}/categories/#{id}.json"
33
- else
34
- "/help_center/categories/#{id}.json"
35
- end
12
+ def category_params
13
+ @_category_params ||= Cistern::Hash.slice(params.fetch("category"), *Zendesk2::Client::CreateHelpCenterCategory.accepted_attributes)
14
+ end
36
15
 
37
- body = self.find!(:help_center_categories, id).merge!(params)
16
+ def category_id
17
+ params.fetch("category").fetch("id")
18
+ end
38
19
 
39
- response(
40
- :method => :put,
41
- :path => path,
42
- :body => {
43
- "category" => body,
44
- },
45
- )
46
- end
20
+ def mock
21
+ mock_response("category" => self.find!(:help_center_categories, self.category_id).merge!(category_params))
47
22
  end
48
23
  end
@@ -1,48 +1,23 @@
1
- class Zendesk2::Client
2
- class Real
3
- def update_help_center_section(params={})
4
- id = require_parameters(params, "id")
5
- locale = params["locale"]
6
-
7
- path = if locale
8
- "/help_center/#{locale}/sections/#{id}.json"
9
- else
10
- "/help_center/sections/#{id}.json"
11
- end
12
-
13
- request(
14
- :method => :put,
15
- :path => path,
16
- :body => {
17
- "section" => params
18
- },
19
- )
1
+ class Zendesk2::Client::UpdateHelpCenterSection < Zendesk2::Client::Request
2
+ request_method :put
3
+ request_body { |r| { "section" => r.section_params } }
4
+ request_path { |r|
5
+ if locale = r.section_params["locale"]
6
+ "/help_center/#{locale}/sections/#{r.section_id}.json"
7
+ else
8
+ "/help_center/sections/#{r.section_id}.json"
20
9
  end
21
- end
22
- class Mock
23
- def update_help_center_section(params={})
24
- params = Cistern::Hash.stringify_keys(params)
25
-
26
- require_parameters(params, "id")
10
+ }
27
11
 
28
- id = params.delete("id").to_s
29
- locale = params["locale"]
30
-
31
- path = if locale
32
- "/help_center/#{locale}/sections/#{id}.json"
33
- else
34
- "/help_center/sections/#{id}.json"
35
- end
12
+ def section_params
13
+ @_section_params ||= Cistern::Hash.slice(params.fetch("section"), *Zendesk2::Client::CreateHelpCenterSection.accepted_attributes)
14
+ end
36
15
 
37
- body = self.find!(:help_center_sections, id).merge!(params)
16
+ def section_id
17
+ params.fetch("section").fetch("id")
18
+ end
38
19
 
39
- response(
40
- :method => :put,
41
- :path => path,
42
- :body => {
43
- "section" => body,
44
- },
45
- )
46
- end
20
+ def mock
21
+ mock_response("section" => self.find!(:help_center_sections, section_id).merge!(section_params))
47
22
  end
48
23
  end
@@ -1,44 +1,32 @@
1
- class Zendesk2::Client
2
- class Real
3
- def update_organization(params={})
4
- id = params.delete("id")
5
-
6
- request(
7
- :method => :put,
8
- :path => "/organizations/#{id}.json",
9
- :body => {
10
- "organization" => params
11
- },
12
- )
13
- end
14
- end
15
- class Mock
16
- def update_organization(_params={})
17
- params = Cistern::Hash.stringify_keys(_params)
18
- id = params.delete("id")
1
+ class Zendesk2::Client::UpdateOrganization < Zendesk2::Client::Request
2
+ request_method :put
3
+ request_path { |r| "/organizations/#{r.organization_id}.json" }
4
+ request_body { |r| { "organization" => Cistern::Hash.except(r.organization, "id") } }
19
5
 
20
- organization = self.find!(:organizations, id)
6
+ def organization
7
+ params.fetch("organization")
8
+ end
21
9
 
22
- other_organizations = self.data[:organizations].dup
23
- other_organizations.delete(id.to_s)
10
+ def organization_id
11
+ organization.fetch("id").to_i
12
+ end
24
13
 
25
- if other_organizations.values.find { |o| o["name"] == params["name"] }
26
- error!(:invalid, details: {"name" => [ { "description" => "Name: has already been taken" } ]})
27
- end
14
+ def mock
15
+ record = self.find!(:organizations, organization_id)
28
16
 
29
- if params["external_id"] && other_organizations.values.find { |o| o["external_id"] == params["external_id"] }
30
- error!(:invalid, details: {"name" => [ { "description" => "External has already been taken" } ]})
31
- end
17
+ other_organizations = service.data[:organizations].dup
18
+ other_organizations.delete(organization_id)
32
19
 
33
- body = organization.merge!(params)
20
+ if organization["name"] && other_organizations.values.find { |o| o["name"].downcase == organization["name"].downcase }
21
+ error!(:invalid, details: {"name" => [ { "description" => "Name: has already been taken" } ]})
22
+ end
34
23
 
35
- response(
36
- :method => :put,
37
- :path => "/organizations/#{id}.json",
38
- :body => {
39
- "organization" => body
40
- },
41
- )
24
+ if organization["external_id"] && other_organizations.values.find { |o| o["external_id"].to_s == organization["external_id"].to_s }
25
+ error!(:invalid, details: {"name" => [ { "description" => "External has already been taken" } ]})
42
26
  end
27
+
28
+ record.merge!(Cistern::Hash.slice(organization, *Zendesk2::Client::CreateOrganization.accepted_attributes))
29
+
30
+ mock_response("organization" => record)
43
31
  end
44
32
  end
@@ -1,74 +1,74 @@
1
- class Zendesk2::Client
2
- class Real
3
- def update_ticket(params={})
4
- id = params.delete("id")
1
+ class Zendesk2::Client::UpdateTicket < Zendesk2::Client::Request
2
+ request_method :put
3
+ request_path { |r| "/tickets/#{r.ticket_id}.json" }
4
+ request_body { |r| { "ticket" => r.ticket_params } }
5
5
 
6
- request(
7
- :method => :put,
8
- :path => "/tickets/#{id}.json",
9
- :body => {
10
- "ticket" => params
11
- },
12
- )
13
- end
6
+ def self.accepted_attributes
7
+ Zendesk2::Client::CreateTicket.accepted_attributes + ["comment"]
14
8
  end
15
9
 
16
- class Mock
17
- def update_ticket(params={})
18
- ticket_id = params.delete("id")
19
- body = self.find!(:tickets, ticket_id).merge!(params)
10
+ def ticket_params
11
+ @_ticket_params ||= Cistern::Hash.slice(params.fetch("ticket"), *self.class.accepted_attributes)
12
+ end
20
13
 
21
- if comment = params["comment"]
22
- comment_id = self.class.new_id
23
- comment_data = self.data[:ticket_comments][comment_id] = {
24
- "id" => comment_id,
25
- "type" => "Comment",
26
- "author_id" => current_user["id"],
27
- "body" => comment["body"],
28
- "html_body" => "<p>#{comment["body"]}</p>",
29
- "public" => comment["public"].nil? ? true : comment["public"],
30
- "trusted" => comment["trusted"].nil? ? true : comment["trusted"],
31
- "attachments" => comment["attachments"] || [],
32
- "ticket_id" => ticket_id,
33
- }
14
+ def ticket_id
15
+ params.fetch("ticket").fetch("id")
16
+ end
34
17
 
35
- audit_id = self.class.new_id
18
+ def mock
19
+ comment = params.fetch("ticket").delete("comment")
36
20
 
37
- self.data[:ticket_audits][audit_id] = audit = {
38
- "id" => audit_id,
39
- "ticket_id" => ticket_id,
40
- "created_at" => Time.now,
41
- "author_id" => current_user["id"],
42
- "via" => {
43
- "channel" => "api",
44
- "source" => {
45
- "form" => {},
46
- "to" => {},
47
- "rel" => nil,
48
- }
49
- },
50
- "metadata" => {
51
- "system" => {
52
- "client" => Zendesk2::Client::USER_AGENT,
53
- "ip_address" => "127.0.0.1",
54
- "location" => "Oakland, CA, United States",
55
- "latitude" => 37.83449999999999,
56
- "longitude" => -122.2647,
57
- },
58
- "custom" => {},
59
- },
60
- "events" => [comment_data]
61
- }
62
- end
21
+ body = self.find!(:tickets, ticket_id).merge!(ticket_params)
22
+
23
+ if comment
24
+ comment_id = service.serial_id
63
25
 
64
- response(
65
- :method => :put,
66
- :path => "/tickets/#{ticket_id}.json",
67
- :body => {
68
- "ticket" => body,
69
- "audit" => audit,
26
+ comment_data = service.data[:ticket_comments][comment_id] = {
27
+ "id" => comment_id,
28
+ "type" => "Comment",
29
+ "author_id" => service.current_user["id"],
30
+ "body" => comment["body"],
31
+ "html_body" => "<p>#{comment["body"]}</p>",
32
+ "public" => comment["public"].nil? ? true : comment["public"],
33
+ "trusted" => comment["trusted"].nil? ? true : comment["trusted"],
34
+ "attachments" => comment["attachments"] || [],
35
+ "ticket_id" => ticket_id,
36
+ }
37
+
38
+ audit_id = service.serial_id
39
+
40
+ audit = {
41
+ "id" => audit_id,
42
+ "ticket_id" => ticket_id,
43
+ "created_at" => Time.now,
44
+ "author_id" => service.current_user["id"],
45
+ "via" => {
46
+ "channel" => "api",
47
+ "source" => {
48
+ "form" => {},
49
+ "to" => {},
50
+ "rel" => nil,
51
+ }
52
+ },
53
+ "metadata" => {
54
+ "system" => {
55
+ "client" => Zendesk2::Client::USER_AGENT,
56
+ "ip_address" => "127.0.0.1",
57
+ "location" => "Oakland, CA, United States",
58
+ "latitude" => 37.83449999999999,
59
+ "longitude" => -122.2647,
60
+ },
61
+ "custom" => {},
70
62
  },
71
- )
63
+ "events" => [comment_data]
64
+ }
65
+
66
+ self.data[:ticket_audits][audit_id] = audit
72
67
  end
68
+
69
+ mock_response(
70
+ "ticket" => body,
71
+ "audit" => audit,
72
+ )
73
73
  end
74
74
  end