zendesk2 1.4.2 → 1.5.3

Sign up to get free protection for your applications and to get access to all the features.
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