zendesk2 1.9.0 → 1.10.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (222) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +30 -0
  3. data/.travis.yml +3 -1
  4. data/Gemfile +4 -5
  5. data/Guardfile +4 -3
  6. data/Rakefile +4 -3
  7. data/lib/zendesk2.rb +9 -6
  8. data/lib/zendesk2/attributes.rb +11 -8
  9. data/lib/zendesk2/audit_event.rb +5 -3
  10. data/lib/zendesk2/categories.rb +4 -3
  11. data/lib/zendesk2/category.rb +10 -5
  12. data/lib/zendesk2/client.rb +3 -3
  13. data/lib/zendesk2/collection.rb +35 -21
  14. data/lib/zendesk2/create_category.rb +10 -9
  15. data/lib/zendesk2/create_forum.rb +11 -10
  16. data/lib/zendesk2/create_group.rb +13 -12
  17. data/lib/zendesk2/create_membership.rb +21 -20
  18. data/lib/zendesk2/create_organization.rb +24 -18
  19. data/lib/zendesk2/create_ticket.rb +60 -56
  20. data/lib/zendesk2/create_ticket_field.rb +24 -22
  21. data/lib/zendesk2/create_topic.rb +11 -10
  22. data/lib/zendesk2/create_topic_comment.rb +12 -11
  23. data/lib/zendesk2/create_user.rb +54 -41
  24. data/lib/zendesk2/create_user_field.rb +22 -21
  25. data/lib/zendesk2/create_user_identity.rb +18 -15
  26. data/lib/zendesk2/create_view.rb +62 -62
  27. data/lib/zendesk2/destroy_category.rb +2 -1
  28. data/lib/zendesk2/destroy_forum.rb +2 -1
  29. data/lib/zendesk2/destroy_group.rb +3 -2
  30. data/lib/zendesk2/destroy_membership.rb +7 -5
  31. data/lib/zendesk2/destroy_organization.rb +3 -2
  32. data/lib/zendesk2/destroy_ticket.rb +3 -2
  33. data/lib/zendesk2/destroy_ticket_field.rb +3 -2
  34. data/lib/zendesk2/destroy_topic.rb +3 -2
  35. data/lib/zendesk2/destroy_topic_comment.rb +4 -3
  36. data/lib/zendesk2/destroy_user.rb +11 -10
  37. data/lib/zendesk2/destroy_user_field.rb +3 -2
  38. data/lib/zendesk2/destroy_user_identity.rb +4 -3
  39. data/lib/zendesk2/destroy_view.rb +3 -2
  40. data/lib/zendesk2/error.rb +1 -1
  41. data/lib/zendesk2/forum.rb +36 -18
  42. data/lib/zendesk2/forums.rb +4 -3
  43. data/lib/zendesk2/get_assignable_groups.rb +3 -2
  44. data/lib/zendesk2/get_categories.rb +2 -1
  45. data/lib/zendesk2/get_category.rb +3 -2
  46. data/lib/zendesk2/get_ccd_tickets.rb +4 -3
  47. data/lib/zendesk2/get_current_user.rb +3 -2
  48. data/lib/zendesk2/get_forum.rb +3 -2
  49. data/lib/zendesk2/get_forums.rb +2 -1
  50. data/lib/zendesk2/get_group.rb +3 -2
  51. data/lib/zendesk2/get_groups.rb +2 -1
  52. data/lib/zendesk2/get_membership.rb +3 -2
  53. data/lib/zendesk2/get_memberships.rb +3 -2
  54. data/lib/zendesk2/get_organization.rb +3 -2
  55. data/lib/zendesk2/get_organization_by_external_id.rb +8 -5
  56. data/lib/zendesk2/get_organization_memberships.rb +5 -2
  57. data/lib/zendesk2/get_organization_tickets.rb +7 -5
  58. data/lib/zendesk2/get_organization_users.rb +6 -5
  59. data/lib/zendesk2/get_organizations.rb +2 -1
  60. data/lib/zendesk2/get_requested_tickets.rb +5 -4
  61. data/lib/zendesk2/get_ticket.rb +3 -2
  62. data/lib/zendesk2/get_ticket_audit.rb +5 -4
  63. data/lib/zendesk2/get_ticket_audits.rb +4 -3
  64. data/lib/zendesk2/get_ticket_comments.rb +6 -5
  65. data/lib/zendesk2/get_ticket_field.rb +3 -2
  66. data/lib/zendesk2/get_ticket_fields.rb +2 -1
  67. data/lib/zendesk2/get_ticket_metric.rb +4 -3
  68. data/lib/zendesk2/get_ticket_metrics.rb +3 -2
  69. data/lib/zendesk2/get_tickets.rb +2 -1
  70. data/lib/zendesk2/get_topic.rb +3 -2
  71. data/lib/zendesk2/get_topic_comment.rb +4 -3
  72. data/lib/zendesk2/get_topic_comments.rb +5 -4
  73. data/lib/zendesk2/get_topics.rb +2 -1
  74. data/lib/zendesk2/get_user.rb +7 -7
  75. data/lib/zendesk2/get_user_field.rb +3 -2
  76. data/lib/zendesk2/get_user_fields.rb +3 -2
  77. data/lib/zendesk2/get_user_identities.rb +4 -3
  78. data/lib/zendesk2/get_user_identity.rb +4 -3
  79. data/lib/zendesk2/get_user_memberships.rb +4 -3
  80. data/lib/zendesk2/get_user_organizations.rb +5 -4
  81. data/lib/zendesk2/get_users.rb +3 -2
  82. data/lib/zendesk2/get_view.rb +3 -2
  83. data/lib/zendesk2/get_view_tickets.rb +19 -16
  84. data/lib/zendesk2/get_views.rb +2 -1
  85. data/lib/zendesk2/group.rb +6 -5
  86. data/lib/zendesk2/groups.rb +7 -6
  87. data/lib/zendesk2/help_center.rb +15 -0
  88. data/lib/zendesk2/help_center/access_policy.rb +3 -2
  89. data/lib/zendesk2/help_center/article.rb +10 -7
  90. data/lib/zendesk2/help_center/articles.rb +7 -7
  91. data/lib/zendesk2/help_center/categories.rb +3 -2
  92. data/lib/zendesk2/help_center/category.rb +8 -7
  93. data/lib/zendesk2/help_center/create_help_center_article.rb +31 -29
  94. data/lib/zendesk2/help_center/create_help_center_category.rb +17 -16
  95. data/lib/zendesk2/help_center/create_help_center_post.rb +37 -0
  96. data/lib/zendesk2/help_center/create_help_center_section.rb +32 -31
  97. data/lib/zendesk2/help_center/create_help_center_topic.rb +36 -0
  98. data/lib/zendesk2/help_center/create_help_center_translation.rb +15 -14
  99. data/lib/zendesk2/help_center/destroy_help_center_article.rb +3 -2
  100. data/lib/zendesk2/help_center/destroy_help_center_category.rb +3 -2
  101. data/lib/zendesk2/help_center/destroy_help_center_post.rb +15 -0
  102. data/lib/zendesk2/help_center/destroy_help_center_section.rb +3 -2
  103. data/lib/zendesk2/help_center/destroy_help_center_topic.rb +15 -0
  104. data/lib/zendesk2/help_center/destroy_help_center_translation.rb +2 -1
  105. data/lib/zendesk2/help_center/get_help_center_access_policy.rb +6 -5
  106. data/lib/zendesk2/help_center/get_help_center_article.rb +7 -9
  107. data/lib/zendesk2/help_center/get_help_center_articles.rb +3 -2
  108. data/lib/zendesk2/help_center/get_help_center_categories.rb +6 -2
  109. data/lib/zendesk2/help_center/get_help_center_categories_articles.rb +8 -7
  110. data/lib/zendesk2/help_center/get_help_center_categories_sections.rb +6 -5
  111. data/lib/zendesk2/help_center/get_help_center_category.rb +7 -9
  112. data/lib/zendesk2/help_center/get_help_center_post.rb +19 -0
  113. data/lib/zendesk2/help_center/get_help_center_posts.rb +28 -0
  114. data/lib/zendesk2/help_center/get_help_center_section.rb +8 -10
  115. data/lib/zendesk2/help_center/get_help_center_sections.rb +3 -2
  116. data/lib/zendesk2/help_center/get_help_center_sections_articles.rb +9 -8
  117. data/lib/zendesk2/help_center/get_help_center_topic.rb +14 -0
  118. data/lib/zendesk2/help_center/get_help_center_topics.rb +10 -0
  119. data/lib/zendesk2/help_center/get_help_center_translation.rb +5 -4
  120. data/lib/zendesk2/help_center/get_help_center_translations.rb +7 -6
  121. data/lib/zendesk2/help_center/post.rb +72 -0
  122. data/lib/zendesk2/help_center/posts.rb +18 -0
  123. data/lib/zendesk2/help_center/search_help_center_articles.rb +8 -7
  124. data/lib/zendesk2/help_center/section.rb +11 -11
  125. data/lib/zendesk2/help_center/sections.rb +7 -6
  126. data/lib/zendesk2/help_center/topic.rb +52 -0
  127. data/lib/zendesk2/help_center/topics.rb +13 -0
  128. data/lib/zendesk2/help_center/translation.rb +8 -5
  129. data/lib/zendesk2/help_center/translation_source.rb +16 -13
  130. data/lib/zendesk2/help_center/translations.rb +3 -2
  131. data/lib/zendesk2/help_center/update_help_center_access_policy.rb +8 -7
  132. data/lib/zendesk2/help_center/update_help_center_article.rb +9 -11
  133. data/lib/zendesk2/help_center/update_help_center_category.rb +9 -11
  134. data/lib/zendesk2/help_center/update_help_center_post.rb +20 -0
  135. data/lib/zendesk2/help_center/update_help_center_section.rb +9 -11
  136. data/lib/zendesk2/help_center/update_help_center_topic.rb +20 -0
  137. data/lib/zendesk2/help_center/update_help_center_translation.rb +4 -3
  138. data/lib/zendesk2/logger.rb +3 -2
  139. data/lib/zendesk2/mark_membership_default.rb +7 -6
  140. data/lib/zendesk2/mark_user_identity_primary.rb +7 -6
  141. data/lib/zendesk2/membership.rb +10 -8
  142. data/lib/zendesk2/memberships.rb +18 -12
  143. data/lib/zendesk2/mock.rb +39 -34
  144. data/lib/zendesk2/model.rb +14 -3
  145. data/lib/zendesk2/organization.rb +7 -7
  146. data/lib/zendesk2/organizations.rb +14 -12
  147. data/lib/zendesk2/paged_collection.rb +40 -36
  148. data/lib/zendesk2/rate_limit.rb +4 -3
  149. data/lib/zendesk2/real.rb +25 -22
  150. data/lib/zendesk2/request.rb +78 -82
  151. data/lib/zendesk2/search.rb +8 -7
  152. data/lib/zendesk2/search_organization.rb +14 -14
  153. data/lib/zendesk2/search_user.rb +41 -37
  154. data/lib/zendesk2/searchable.rb +36 -26
  155. data/lib/zendesk2/ticket.rb +20 -18
  156. data/lib/zendesk2/ticket_audit.rb +5 -4
  157. data/lib/zendesk2/ticket_audits.rb +10 -11
  158. data/lib/zendesk2/ticket_change.rb +10 -11
  159. data/lib/zendesk2/ticket_comment.rb +2 -1
  160. data/lib/zendesk2/ticket_comment_privacy_change.rb +12 -14
  161. data/lib/zendesk2/ticket_comments.rb +7 -6
  162. data/lib/zendesk2/ticket_create.rb +8 -9
  163. data/lib/zendesk2/ticket_field.rb +5 -4
  164. data/lib/zendesk2/ticket_fields.rb +4 -3
  165. data/lib/zendesk2/ticket_metric.rb +2 -2
  166. data/lib/zendesk2/ticket_metrics.rb +3 -2
  167. data/lib/zendesk2/ticket_notification.rb +12 -13
  168. data/lib/zendesk2/ticket_voice_comment.rb +28 -29
  169. data/lib/zendesk2/tickets.rb +8 -7
  170. data/lib/zendesk2/topic.rb +49 -22
  171. data/lib/zendesk2/topic_comment.rb +12 -9
  172. data/lib/zendesk2/topic_comments.rb +4 -3
  173. data/lib/zendesk2/topics.rb +4 -3
  174. data/lib/zendesk2/update_category.rb +8 -6
  175. data/lib/zendesk2/update_forum.rb +5 -4
  176. data/lib/zendesk2/update_group.rb +5 -4
  177. data/lib/zendesk2/update_organization.rb +18 -9
  178. data/lib/zendesk2/update_request.rb +6 -5
  179. data/lib/zendesk2/update_ticket.rb +39 -38
  180. data/lib/zendesk2/update_ticket_field.rb +5 -4
  181. data/lib/zendesk2/update_topic.rb +5 -4
  182. data/lib/zendesk2/update_user.rb +39 -31
  183. data/lib/zendesk2/update_user_field.rb +4 -3
  184. data/lib/zendesk2/update_user_identity.rb +7 -6
  185. data/lib/zendesk2/update_view.rb +38 -34
  186. data/lib/zendesk2/user.rb +41 -37
  187. data/lib/zendesk2/user_field.rb +9 -6
  188. data/lib/zendesk2/user_fields.rb +4 -3
  189. data/lib/zendesk2/user_identities.rb +4 -3
  190. data/lib/zendesk2/user_identity.rb +12 -9
  191. data/lib/zendesk2/users.rb +5 -4
  192. data/lib/zendesk2/version.rb +2 -1
  193. data/lib/zendesk2/view.rb +24 -13
  194. data/lib/zendesk2/views.rb +3 -2
  195. data/spec/categories_spec.rb +63 -60
  196. data/spec/client_spec.rb +6 -5
  197. data/spec/forums_spec.rb +64 -61
  198. data/spec/groups_spec.rb +7 -8
  199. data/spec/help_center/articles_spec.rb +22 -26
  200. data/spec/help_center/categories_spec.rb +26 -27
  201. data/spec/help_center/posts_spec.rb +39 -0
  202. data/spec/help_center/sections_spec.rb +32 -33
  203. data/spec/help_center/topics_spec.rb +13 -0
  204. data/spec/lib/paged_collection_spec.rb +11 -11
  205. data/spec/lib/rate_limit_spec.rb +9 -8
  206. data/spec/memberships_spec.rb +38 -27
  207. data/spec/organizations_spec.rb +92 -87
  208. data/spec/shared/zendesk_resource.rb +40 -25
  209. data/spec/spec_helper.rb +8 -13
  210. data/spec/support/client_helper.rb +5 -4
  211. data/spec/support/data_helper.rb +1 -0
  212. data/spec/ticket_fields_spec.rb +6 -7
  213. data/spec/tickets_spec.rb +69 -58
  214. data/spec/topic_comments_spec.rb +7 -8
  215. data/spec/topics_spec.rb +5 -6
  216. data/spec/user_fields_spec.rb +7 -7
  217. data/spec/user_identities_spec.rb +29 -25
  218. data/spec/users_spec.rb +88 -78
  219. data/spec/views_spec.rb +45 -34
  220. data/spec/zendesk2_spec.rb +3 -2
  221. data/zendesk2.gemspec +15 -14
  222. metadata +21 -2
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  class Zendesk2::TopicComments
2
3
  include Zendesk2::Collection
3
4
 
@@ -9,10 +10,10 @@ class Zendesk2::TopicComments
9
10
  attribute :topic_id, type: :integer
10
11
 
11
12
  self.collection_method = :get_topic_comments
12
- self.collection_root = "topic_comments"
13
+ self.collection_root = 'topic_comments'
13
14
  self.model_method = :get_topic_comment
14
- self.model_root = "topic_comment"
15
- self.search_type = "topic_comment"
15
+ self.model_root = 'topic_comment'
16
+ self.search_type = 'topic_comment'
16
17
 
17
18
  scopes << :topic_id
18
19
  end
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  class Zendesk2::Topics
2
3
  include Zendesk2::Collection
3
4
 
@@ -7,8 +8,8 @@ class Zendesk2::Topics
7
8
  model Zendesk2::Topic
8
9
 
9
10
  self.collection_method = :get_topics
10
- self.collection_root = "topics"
11
+ self.collection_root = 'topics'
11
12
  self.model_method = :get_topic
12
- self.model_root = "topic"
13
- self.search_type = "topic"
13
+ self.model_root = 'topic'
14
+ self.search_type = 'topic'
14
15
  end
@@ -1,21 +1,23 @@
1
+ # frozen_string_literal: true
1
2
  class Zendesk2::UpdateCategory
2
3
  include Zendesk2::Request
3
4
 
4
5
  request_method :put
5
- request_body { |r| { "category" => Cistern::Hash.except(r.category, "id") } }
6
+ request_body { |r| { 'category' => Cistern::Hash.except(r.category, 'id') } }
6
7
  request_path { |r| "/categories/#{r.category_id}.json" }
7
8
 
8
9
  def category
9
- self.params.fetch("category")
10
+ params.fetch('category')
10
11
  end
11
12
 
12
13
  def category_id
13
- category.fetch("id")
14
+ category.fetch('id')
14
15
  end
15
16
 
16
17
  def mock
17
- mock_response(
18
- "category" => find!(:categories, category_id).merge!(Cistern::Hash.slice(category, *Zendesk2::CreateCategory.accepted_attributes))
19
- )
18
+ category_data = find!(:categories, category_id)
19
+ category_data.merge!(Cistern::Hash.slice(category, *Zendesk2::CreateCategory.accepted_attributes))
20
+
21
+ mock_response('category' => category_data)
20
22
  end
21
23
  end
@@ -1,21 +1,22 @@
1
+ # frozen_string_literal: true
1
2
  class Zendesk2::UpdateForum
2
3
  include Zendesk2::Request
3
4
 
4
5
  request_method :put
5
6
  request_path { |r| "/forums/#{r.forum_id}.json" }
6
- request_body { |r| { "forum" => r.forum_params } }
7
+ request_body { |r| { 'forum' => r.forum_params } }
7
8
 
8
9
  def forum_params
9
- Cistern::Hash.slice(params.fetch("forum"), *Zendesk2::CreateForum.accepted_attributes)
10
+ Cistern::Hash.slice(params.fetch('forum'), *Zendesk2::CreateForum.accepted_attributes)
10
11
  end
11
12
 
12
13
  def forum_id
13
- params.fetch("forum").fetch("id")
14
+ params.fetch('forum').fetch('id')
14
15
  end
15
16
 
16
17
  def mock
17
18
  mock_response(
18
- "forum" => find!(:forums, forum_id).merge!(forum_params),
19
+ 'forum' => find!(:forums, forum_id).merge!(forum_params)
19
20
  )
20
21
  end
21
22
  end
@@ -1,19 +1,20 @@
1
+ # frozen_string_literal: true
1
2
  class Zendesk2::UpdateGroup
2
3
  include Zendesk2::Request
3
4
 
4
5
  request_method :put
5
6
  request_path { |r| "/groups/#{r.group_id}.json" }
6
- request_body { |r| { "group" => r.group_params } }
7
+ request_body { |r| { 'group' => r.group_params } }
7
8
 
8
9
  def group_params
9
- @_group_params ||= Cistern::Hash.slice(params.fetch("group"), *Zendesk2::CreateGroup.accepted_attributes)
10
+ @_group_params ||= Cistern::Hash.slice(params.fetch('group'), *Zendesk2::CreateGroup.accepted_attributes)
10
11
  end
11
12
 
12
13
  def group_id
13
- @_group_id ||= params.fetch("group").fetch("id")
14
+ @_group_id ||= params.fetch('group').fetch('id')
14
15
  end
15
16
 
16
17
  def mock
17
- mock_response("group" => find!(:groups, group_id).merge!(group_params))
18
+ mock_response('group' => find!(:groups, group_id).merge!(group_params))
18
19
  end
19
20
  end
@@ -1,38 +1,47 @@
1
+ # frozen_string_literal: true
1
2
  class Zendesk2::UpdateOrganization
2
3
  include Zendesk2::Request
3
4
 
4
5
  request_method :put
5
6
  request_path { |r| "/organizations/#{r.organization_id}.json" }
6
- request_body { |r| { "organization" => r.organization_params } }
7
+ request_body { |r| { 'organization' => r.organization_params } }
7
8
 
8
9
  def organization_params
9
10
  @_organization_params ||= Cistern::Hash.slice(organization, *Zendesk2::CreateOrganization.accepted_attributes)
10
11
  end
11
12
 
12
13
  def organization
13
- params.fetch("organization")
14
+ params.fetch('organization')
14
15
  end
15
16
 
16
17
  def organization_id
17
- organization.fetch("id").to_i
18
+ organization.fetch('id').to_i
18
19
  end
19
20
 
20
21
  def mock
21
- record = self.find!(:organizations, organization_id)
22
+ record = find!(:organizations, organization_id)
22
23
 
23
24
  other_organizations = cistern.data[:organizations].dup
24
25
  other_organizations.delete(organization_id)
25
26
 
26
- if organization["name"] && other_organizations.values.find { |o| o["name"].downcase == organization["name"].downcase }
27
- error!(:invalid, details: {"name" => [ { "description" => "Name: has already been taken" } ]})
27
+ other_named_organization = other_organizations.values.find do |o|
28
+ o['name'].casecmp(organization['name'].to_s.downcase).zero?
28
29
  end
29
30
 
30
- if organization["external_id"] && other_organizations.values.find { |o| o["external_id"].to_s.downcase == organization["external_id"].to_s.downcase }
31
- error!(:invalid, details: {"name" => [ { "description" => "External has already been taken" } ]})
31
+ if organization['name'] && other_named_organization
32
+ error!(:invalid, details: { 'name' => [{ 'description' => 'Name: has already been taken' }] })
33
+ end
34
+
35
+ other_external_organization = other_organizations.values.find do |o|
36
+ o['external_id'].to_s.casecmp(organization['external_id'].to_s.downcase).zero?
37
+ end
38
+
39
+ if organization['external_id'] && other_external_organization
40
+ error!(:invalid, details: { 'name' => [{ 'description' => 'External has already been taken' }] })
32
41
  end
33
42
 
34
43
  record.merge!(organization_params)
35
44
 
36
- mock_response("organization" => record)
45
+ mock_response('organization' => record)
37
46
  end
38
47
  end
@@ -1,18 +1,19 @@
1
+ # frozen_string_literal: true
1
2
  class Zendesk2::UpdateRequest
2
3
  include Zendesk2::Client
3
4
 
4
5
  request_method :put
5
- request_path { |r| "/requests/#{id}.json" }
6
- request_params { |r| { "request" => r.params } }
6
+ request_path { |_r| "/requests/#{id}.json" }
7
+ request_params { |r| { 'request' => r.params } }
7
8
 
8
9
  def request_id
9
- @_request_id ||= params.delete("id")
10
+ @_request_id ||= params.delete('id')
10
11
  end
11
12
 
12
- def mock(params={})
13
+ def mock(params = {})
13
14
  ticket = find!(:tickets, request_id)
14
15
  ticket.merge!(params)
15
16
 
16
- mock_response("request" => ticket)
17
+ mock_response('request' => ticket)
17
18
  end
18
19
  end
@@ -1,76 +1,77 @@
1
+ # frozen_string_literal: true
1
2
  class Zendesk2::UpdateTicket
2
3
  include Zendesk2::Request
3
4
 
4
5
  request_method :put
5
6
  request_path { |r| "/tickets/#{r.ticket_id}.json" }
6
- request_body { |r| { "ticket" => r.ticket_params } }
7
+ request_body { |r| { 'ticket' => r.ticket_params } }
7
8
 
8
9
  def self.accepted_attributes
9
- Zendesk2::CreateTicket.accepted_attributes + ["comment"]
10
+ Zendesk2::CreateTicket.accepted_attributes + ['comment']
10
11
  end
11
12
 
12
13
  def ticket_params
13
- @_ticket_params ||= Cistern::Hash.slice(params.fetch("ticket"), *self.class.accepted_attributes)
14
+ @_ticket_params ||= Cistern::Hash.slice(params.fetch('ticket'), *self.class.accepted_attributes)
14
15
  end
15
16
 
16
17
  def ticket_id
17
- params.fetch("ticket").fetch("id")
18
+ params.fetch('ticket').fetch('id')
18
19
  end
19
20
 
20
21
  def mock
21
- comment = params.fetch("ticket").delete("comment")
22
+ comment = params.fetch('ticket').delete('comment')
22
23
 
23
- body = self.find!(:tickets, ticket_id).merge!(ticket_params)
24
+ body = find!(:tickets, ticket_id).merge!(ticket_params)
24
25
 
25
26
  if comment
26
27
  comment_id = cistern.serial_id
27
28
 
28
29
  comment_data = cistern.data[:ticket_comments][comment_id] = {
29
- "id" => comment_id,
30
- "type" => "Comment",
31
- "author_id" => cistern.current_user["id"],
32
- "body" => comment["body"],
33
- "html_body" => "<p>#{comment["body"]}</p>",
34
- "public" => comment["public"].nil? ? true : comment["public"],
35
- "trusted" => comment["trusted"].nil? ? true : comment["trusted"],
36
- "attachments" => comment["attachments"] || [],
37
- "ticket_id" => ticket_id,
30
+ 'id' => comment_id,
31
+ 'type' => 'Comment',
32
+ 'author_id' => cistern.current_user['id'],
33
+ 'body' => comment['body'],
34
+ 'html_body' => "<p>#{comment['body']}</p>",
35
+ 'public' => comment['public'].nil? ? true : comment['public'],
36
+ 'trusted' => comment['trusted'].nil? ? true : comment['trusted'],
37
+ 'attachments' => comment['attachments'] || [],
38
+ 'ticket_id' => ticket_id,
38
39
  }
39
40
 
40
41
  audit_id = cistern.serial_id
41
42
 
42
43
  audit = {
43
- "id" => audit_id,
44
- "ticket_id" => ticket_id,
45
- "created_at" => Time.now,
46
- "author_id" => cistern.current_user["id"],
47
- "via" => {
48
- "channel" => "api",
49
- "source" => {
50
- "form" => {},
51
- "to" => {},
52
- "rel" => nil,
53
- }
44
+ 'id' => audit_id,
45
+ 'ticket_id' => ticket_id,
46
+ 'created_at' => Time.now,
47
+ 'author_id' => cistern.current_user['id'],
48
+ 'via' => {
49
+ 'channel' => 'api',
50
+ 'source' => {
51
+ 'form' => {},
52
+ 'to' => {},
53
+ 'rel' => nil,
54
+ },
54
55
  },
55
- "metadata" => {
56
- "system" => {
57
- "client" => Zendesk2::USER_AGENT,
58
- "ip_address" => "127.0.0.1",
59
- "location" => "Oakland, CA, United States",
60
- "latitude" => 37.83449999999999,
61
- "longitude" => -122.2647,
56
+ 'metadata' => {
57
+ 'system' => {
58
+ 'client' => Zendesk2::USER_AGENT,
59
+ 'ip_address' => '127.0.0.1',
60
+ 'location' => 'Oakland, CA, United States',
61
+ 'latitude' => 37.83449999999999,
62
+ 'longitude' => -122.2647,
62
63
  },
63
- "custom" => {},
64
+ 'custom' => {},
64
65
  },
65
- "events" => [comment_data]
66
+ 'events' => [comment_data],
66
67
  }
67
68
 
68
- self.data[:ticket_audits][audit_id] = audit
69
+ data[:ticket_audits][audit_id] = audit
69
70
  end
70
71
 
71
72
  mock_response(
72
- "ticket" => body,
73
- "audit" => audit,
73
+ 'ticket' => body,
74
+ 'audit' => audit
74
75
  )
75
76
  end
76
77
  end
@@ -1,19 +1,20 @@
1
+ # frozen_string_literal: true
1
2
  class Zendesk2::UpdateTicketField
2
3
  include Zendesk2::Request
3
4
 
4
5
  request_method :put
5
6
  request_path { |r| "/ticket_fields/#{r.ticket_field_id}.json" }
6
- request_body { |r| { "ticket_field" => r.ticket_field_params } }
7
+ request_body { |r| { 'ticket_field' => r.ticket_field_params } }
7
8
 
8
9
  def ticket_field_id
9
- params.fetch("ticket_field").fetch("id")
10
+ params.fetch('ticket_field').fetch('id')
10
11
  end
11
12
 
12
13
  def ticket_field_params
13
- Cistern::Hash.slice(params.fetch("ticket_field"), *Zendesk2::CreateTicketField.accepted_attributes)
14
+ Cistern::Hash.slice(params.fetch('ticket_field'), *Zendesk2::CreateTicketField.accepted_attributes)
14
15
  end
15
16
 
16
17
  def mock
17
- mock_response("ticket_field" => self.find!(:ticket_fields, ticket_field_id).merge!(ticket_field_params))
18
+ mock_response('ticket_field' => find!(:ticket_fields, ticket_field_id).merge!(ticket_field_params))
18
19
  end
19
20
  end
@@ -1,19 +1,20 @@
1
+ # frozen_string_literal: true
1
2
  class Zendesk2::UpdateTopic
2
3
  include Zendesk2::Request
3
4
 
4
5
  request_method :put
5
6
  request_path { |r| "/topics/#{r.topic_id}.json" }
6
- request_body { |r| { "topic" => r.topic_params } }
7
+ request_body { |r| { 'topic' => r.topic_params } }
7
8
 
8
9
  def topic_id
9
- params.fetch("topic").fetch("id").to_i
10
+ params.fetch('topic').fetch('id').to_i
10
11
  end
11
12
 
12
13
  def topic_params
13
- Cistern::Hash.slice(params.fetch("topic"), *Zendesk2::CreateTopic.accepted_attributes)
14
+ Cistern::Hash.slice(params.fetch('topic'), *Zendesk2::CreateTopic.accepted_attributes)
14
15
  end
15
16
 
16
17
  def mock
17
- mock_response("topic" => self.find!(:topics, topic_id).merge!(topic_params))
18
+ mock_response('topic' => find!(:topics, topic_id).merge!(topic_params))
18
19
  end
19
20
  end
@@ -1,60 +1,68 @@
1
+ # frozen_string_literal: true
1
2
  class Zendesk2::UpdateUser
2
3
  include Zendesk2::Request
3
4
 
4
5
  request_method :put
5
6
  request_path { |r| "/users/#{r.user_id}.json" }
6
- request_body { |r| {"user" => r.user_params } }
7
+ request_body { |r| { 'user' => r.user_params } }
7
8
 
8
9
  def user_params
9
- @_user_params ||= Cistern::Hash.slice(params.fetch("user"), *Zendesk2::CreateUser.accepted_attributes)
10
+ Cistern::Hash.slice(params.fetch('user'), *Zendesk2::CreateUser.accepted_attributes)
10
11
  end
11
12
 
12
13
  def user_id
13
- @_user_id ||= params.fetch("user").fetch("id").to_i
14
+ @_user_id ||= params.fetch('user').fetch('id').to_i
14
15
  end
15
16
 
16
17
  def mock
17
- email = user_params["email"]
18
+ update_params = user_params
19
+
20
+ email = update_params['email']
18
21
 
19
22
  other_users = cistern.data[:users].dup
20
23
  other_users.delete(user_id)
21
24
 
22
- external_id = user_params["external_id"]
25
+ external_id = update_params['external_id']
23
26
 
24
- if external_id && other_users.values.find { |o| o["external_id"].to_s.downcase == external_id.to_s.downcase }
25
- error!(:invalid, details: {"name" => [ { "description" => "External has already been taken" } ]})
27
+ if external_id && other_users.values.find { |o| o['external_id'].to_s.casecmp(external_id.to_s.downcase).zero? }
28
+ error!(:invalid, details: { 'name' => [{ 'description' => 'External has already been taken' }] })
26
29
  end
27
30
 
28
- existing_identity = cistern.data[:identities].values.find { |i| i["type"] == "email" && i["value"] == email }
31
+ existing_identity = cistern.data[:identities].values.find { |i| i['type'] == 'email' && i['value'] == email }
29
32
 
30
33
  if !email
31
34
  # nvm
32
- elsif existing_identity && existing_identity["user_id"] != user_id
35
+ elsif existing_identity
33
36
  # email not allowed to conflict across users
34
- error!(:invalid, details: { "email" => [ {
35
- "description" => "Email #{params["email"]} is already being used by another user",
36
- } ] })
37
- elsif existing_identity && existing_identity["user_id"] == user_id
38
- # no-op email already used
37
+ existing_identity['user_id'] != user_id &&
38
+ error!(:invalid, details: { 'email' => [{
39
+ 'description' => "Email #{params['email']} is already being used by another user",
40
+ },], })
39
41
  else
40
- # add a new identity
41
- user_identity_id = cistern.serial_id
42
-
43
- user_identity = {
44
- "id" => user_identity_id,
45
- "url" => url_for("/users/#{user_id}/identities/#{user_identity_id}.json"),
46
- "created_at" => Time.now.iso8601,
47
- "updated_at" => Time.now.iso8601,
48
- "type" => "email",
49
- "value" => email,
50
- "verified" => false,
51
- "primary" => false,
52
- "user_id" => user_id,
53
- }
54
-
55
- cistern.data[:identities][user_identity_id] = user_identity
42
+ add_user_identity(email)
56
43
  end
57
44
 
58
- mock_response("user" => self.find!(:users, user_id).merge!(user_params))
45
+ mock_response('user' => find!(:users, user_id).merge!(update_params))
46
+ end
47
+
48
+ private
49
+
50
+ def add_user_identity(email)
51
+ # add a new identity
52
+ user_identity_id = cistern.serial_id
53
+
54
+ user_identity = {
55
+ 'id' => user_identity_id,
56
+ 'url' => url_for("/users/#{user_id}/identities/#{user_identity_id}.json"),
57
+ 'created_at' => Time.now.iso8601,
58
+ 'updated_at' => Time.now.iso8601,
59
+ 'type' => 'email',
60
+ 'value' => email,
61
+ 'verified' => false,
62
+ 'primary' => false,
63
+ 'user_id' => user_id,
64
+ }
65
+
66
+ cistern.data[:identities][user_identity_id] = user_identity
59
67
  end
60
68
  end