zendesk2 1.9.0 → 1.10.0

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 (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::HelpCenter::Article
2
3
  include Zendesk2::Model
3
4
 
@@ -6,7 +7,8 @@ class Zendesk2::HelpCenter::Article
6
7
  # @return [Integer] Automatically assigned when the article is created
7
8
  identity :id, type: :integer # ro:yes required:no
8
9
 
9
- # @return [Integer] The id of the user who wrote the article (set to the user who made the request on create by default)
10
+ # @return [Integer] The id of the user who wrote the article (set to the user who made the request on create by
11
+ # default)
10
12
  attribute :author_id, type: :integer # ro:no required:no
11
13
  # @return [String] The body of the article
12
14
  attribute :body, type: :string # ro:no required:no
@@ -18,7 +20,8 @@ class Zendesk2::HelpCenter::Article
18
20
  attribute :draft, type: :boolean # ro:no required:no
19
21
  # @return [String] The url of the article in Help Center
20
22
  attribute :html_url, type: :string # ro:yes required:no
21
- # @return [String] An array of label names associated with this article. By default no label names are used (only available on certain plans)
23
+ # @return [String] An array of label names associated with this article. By default no label names are used (only
24
+ # available on certain plans)
22
25
  attribute :label_names, type: :string # ro:no required:no
23
26
  # @return [String] The locale that the article is being displayed in
24
27
  attribute :locale, type: :string # ro:no required:yes
@@ -48,26 +51,26 @@ class Zendesk2::HelpCenter::Article
48
51
  def translations
49
52
  requires :identity
50
53
 
51
- cistern.help_center_translations(source_id: self.identity, source_type: "Article")
54
+ cistern.help_center_translations(source_id: identity, source_type: 'Article')
52
55
  end
53
56
 
54
57
  def save!
55
58
  response = if new_record?
56
59
  requires :title, :locale, :section_id
57
60
 
58
- cistern.create_help_center_article("article" => self.attributes)
61
+ cistern.create_help_center_article('article' => attributes)
59
62
  else
60
63
  requires :identity
61
64
 
62
- cistern.update_help_center_article("article" => self.attributes)
65
+ cistern.update_help_center_article('article' => attributes)
63
66
  end
64
67
 
65
- merge_attributes(response.body["article"])
68
+ merge_attributes(response.body['article'])
66
69
  end
67
70
 
68
71
  def destroy!
69
72
  requires :identity
70
73
 
71
- cistern.destroy_help_center_article("article" => { "id" => self.identity })
74
+ cistern.destroy_help_center_article('article' => { 'id' => identity })
72
75
  end
73
76
  end
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  class Zendesk2::HelpCenter::Articles
2
3
  include Zendesk2::Collection
3
4
 
@@ -7,9 +8,9 @@ class Zendesk2::HelpCenter::Articles
7
8
  model Zendesk2::HelpCenter::Article
8
9
 
9
10
  self.collection_method = :get_help_center_articles
10
- self.collection_root = "articles"
11
+ self.collection_root = 'articles'
11
12
  self.model_method = :get_help_center_article
12
- self.model_root = "article"
13
+ self.model_root = 'article'
13
14
  self.search_type = nil
14
15
  self.search_request = :search_help_center_articles
15
16
 
@@ -19,7 +20,7 @@ class Zendesk2::HelpCenter::Articles
19
20
  scopes << :section_id
20
21
  scopes << :category_id
21
22
 
22
- def collection_page(params={})
23
+ def collection_page(params = {})
23
24
  collection_method = if category_id
24
25
  :get_help_center_categories_articles
25
26
  elsif section_id
@@ -28,11 +29,10 @@ class Zendesk2::HelpCenter::Articles
28
29
  :get_help_center_articles
29
30
  end
30
31
 
31
- body = cistern.send(collection_method, Cistern::Hash.stringify_keys(self.attributes.merge(params))).body
32
+ body = cistern.send(collection_method, Cistern::Hash.stringify_keys(attributes.merge(params))).body
32
33
 
33
- self.load(body[collection_root]) # 'results' is the key for paged searches
34
- self.merge_attributes(Cistern::Hash.slice(body, "count", "next_page", "previous_page"))
34
+ load(body[collection_root]) # 'results' is the key for paged searches
35
+ merge_attributes(Cistern::Hash.slice(body, 'count', 'next_page', 'previous_page'))
35
36
  self
36
37
  end
37
-
38
38
  end
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  class Zendesk2::HelpCenter::Categories
2
3
  include Zendesk2::Collection
3
4
 
@@ -7,7 +8,7 @@ class Zendesk2::HelpCenter::Categories
7
8
  model Zendesk2::HelpCenter::Category
8
9
 
9
10
  self.collection_method = :get_help_center_categories
10
- self.collection_root = "categories"
11
+ self.collection_root = 'categories'
11
12
  self.model_method = :get_help_center_category
12
- self.model_root = "category"
13
+ self.model_root = 'category'
13
14
  end
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  class Zendesk2::HelpCenter::Category
2
3
  include Zendesk2::Model
3
4
 
@@ -32,38 +33,38 @@ class Zendesk2::HelpCenter::Category
32
33
  def articles
33
34
  requires :identity
34
35
 
35
- cistern.help_center_articles(category_id: self.identity)
36
+ cistern.help_center_articles(category_id: identity)
36
37
  end
37
38
 
38
39
  def destroy!
39
40
  requires :identity
40
41
 
41
- cistern.destroy_help_center_category("category" => { "id" => self.identity })
42
+ cistern.destroy_help_center_category('category' => { 'id' => identity })
42
43
  end
43
44
 
44
45
  def sections
45
46
  requires :identity
46
47
 
47
- cistern.help_center_sections(category_id: self.identity)
48
+ cistern.help_center_sections(category_id: identity)
48
49
  end
49
50
 
50
51
  def translations
51
52
  requires :identity
52
53
 
53
- cistern.help_center_translations(source_id: self.identity, source_type: "Category")
54
+ cistern.help_center_translations(source_id: identity, source_type: 'Category')
54
55
  end
55
56
 
56
57
  def save!
57
58
  response = if new_record?
58
59
  requires :name, :locale
59
60
 
60
- cistern.create_help_center_category("category" => self.attributes)
61
+ cistern.create_help_center_category('category' => attributes)
61
62
  else
62
63
  requires :identity
63
64
 
64
- cistern.update_help_center_category("category" => self.attributes)
65
+ cistern.update_help_center_category('category' => attributes)
65
66
  end
66
67
 
67
- merge_attributes(response.body["category"])
68
+ merge_attributes(response.body['category'])
68
69
  end
69
70
  end
@@ -1,57 +1,59 @@
1
+ # frozen_string_literal: true
1
2
  class Zendesk2::CreateHelpCenterArticle
2
3
  include Zendesk2::Request
3
4
 
4
5
  request_method :post
5
- request_body { |r| { "article" => r.article_params } }
6
- request_path { |r|
7
- if locale = r.article_params["locale"]
6
+ request_body { |r| { 'article' => r.article_params } }
7
+ request_path do |r|
8
+ locale = r.article_params['locale']
9
+ if locale
8
10
  "/help_center/#{locale}/sections/#{r.section_id}/articles.json"
9
11
  else
10
12
  "/help_center/sections/#{r.section_id}/articles.json"
11
13
  end
12
- }
14
+ end
13
15
 
14
16
  def self.accepted_attributes
15
- %w[author_id body comments_disabled draft label_names locale position promoted section_id title]
17
+ %w(author_id body comments_disabled draft label_names locale position promoted section_id title)
16
18
  end
17
19
 
18
20
  def article_params
19
- @_article_params ||= Cistern::Hash.slice(params.fetch("article"), *self.class.accepted_attributes)
21
+ @_article_params ||= Cistern::Hash.slice(params.fetch('article'), *self.class.accepted_attributes)
20
22
  end
21
23
 
22
24
  def section_id
23
- params.fetch("article").fetch("section_id")
25
+ params.fetch('article').fetch('section_id')
24
26
  end
25
27
 
26
28
  def mock
27
29
  identity = cistern.serial_id
28
30
 
29
- locale = params["locale"] ||= "en-us"
30
- position = self.data[:help_center_articles].values.select { |a| a["section_id"] == section_id }.size
31
+ locale = params['locale'] ||= 'en-us'
32
+ position = data[:help_center_articles].values.select { |a| a['section_id'] == section_id }.size
31
33
 
32
34
  record = {
33
- "id" => identity,
34
- "url" => url_for("/help_center/#{locale}/articles/#{identity}.json"),
35
- "html_url" => html_url_for("/hc/#{locale}/articles/#{identity}.json"),
36
- "author_id" => cistern.current_user["id"],
37
- "comments_disabled" => false,
38
- "label_names" => [],
39
- "draft" => false,
40
- "promoted" => false,
41
- "position" => position,
42
- "vote_sum" => 0,
43
- "vote_count" => 0,
44
- "section_id" => section_id,
45
- "created_at" => Time.now.iso8601,
46
- "updated_at" => Time.now.iso8601,
47
- "title" => "",
48
- "body" => "",
49
- "source_locale" => locale,
50
- "outdated" => false,
35
+ 'id' => identity,
36
+ 'url' => url_for("/help_center/#{locale}/articles/#{identity}.json"),
37
+ 'html_url' => html_url_for("/hc/#{locale}/articles/#{identity}.json"),
38
+ 'author_id' => cistern.current_user['id'],
39
+ 'comments_disabled' => false,
40
+ 'label_names' => [],
41
+ 'draft' => false,
42
+ 'promoted' => false,
43
+ 'position' => position,
44
+ 'vote_sum' => 0,
45
+ 'vote_count' => 0,
46
+ 'section_id' => section_id,
47
+ 'created_at' => Time.now.iso8601,
48
+ 'updated_at' => Time.now.iso8601,
49
+ 'title' => '',
50
+ 'body' => '',
51
+ 'source_locale' => locale,
52
+ 'outdated' => false,
51
53
  }.merge(article_params)
52
54
 
53
- self.data[:help_center_articles][identity] = record
55
+ data[:help_center_articles][identity] = record
54
56
 
55
- mock_response("article" => record)
57
+ mock_response('article' => record)
56
58
  end
57
59
  end
@@ -1,37 +1,38 @@
1
+ # frozen_string_literal: true
1
2
  class Zendesk2::CreateHelpCenterCategory
2
3
  include Zendesk2::Request
3
4
 
4
5
  request_method :post
5
- request_path { |_| "/help_center/categories.json" }
6
- request_body { |r| {"category" => r.category_params} }
6
+ request_path { |_| '/help_center/categories.json' }
7
+ request_body { |r| { 'category' => r.category_params } }
7
8
 
8
9
  def self.accepted_attributes
9
- %w[category_id description locale name position sorting]
10
+ %w(category_id description locale name position sorting)
10
11
  end
11
12
 
12
13
  def category_params
13
- Cistern::Hash.slice(params.fetch("category"), *self.class.accepted_attributes)
14
+ Cistern::Hash.slice(params.fetch('category'), *self.class.accepted_attributes)
14
15
  end
15
16
 
16
17
  def mock
17
18
  identity = cistern.serial_id
18
19
 
19
- locale = params["locale"] ||= "en-us"
20
- position = self.data[:help_center_categories].size
20
+ locale = params['locale'] ||= 'en-us'
21
+ position = data[:help_center_categories].size
21
22
 
22
23
  record = {
23
- "id" => identity,
24
- "url" => url_for("/help_center/#{locale}/categories/#{identity}.json"),
25
- "html_url" => html_url_for("/hc/#{locale}/categories/#{identity}.json"),
26
- "author_id" => cistern.current_user["id"],
27
- "position" => position,
28
- "created_at" => Time.now.iso8601,
29
- "updated_at" => Time.now.iso8601,
30
- "description" => "",
24
+ 'id' => identity,
25
+ 'url' => url_for("/help_center/#{locale}/categories/#{identity}.json"),
26
+ 'html_url' => html_url_for("/hc/#{locale}/categories/#{identity}.json"),
27
+ 'author_id' => cistern.current_user['id'],
28
+ 'position' => position,
29
+ 'created_at' => Time.now.iso8601,
30
+ 'updated_at' => Time.now.iso8601,
31
+ 'description' => '',
31
32
  }.merge(category_params)
32
33
 
33
- self.data[:help_center_categories][identity] = record
34
+ data[:help_center_categories][identity] = record
34
35
 
35
- mock_response("category" => record)
36
+ mock_response('category' => record)
36
37
  end
37
38
  end
@@ -0,0 +1,37 @@
1
+ # frozen_string_literal: true
2
+ class Zendesk2::CreateHelpCenterPost
3
+ include Zendesk2::Request
4
+
5
+ request_method :post
6
+ request_path { |_| '/community/posts.json' }
7
+ request_body { |r| { 'post' => r.post_params } }
8
+
9
+ def self.accepted_attributes
10
+ %w(title details author_id topic_id pinned featured closed status created_at)
11
+ end
12
+
13
+ def post_params
14
+ Cistern::Hash.slice(params.fetch('post'), *self.class.accepted_attributes)
15
+ end
16
+
17
+ def mock
18
+ identity = cistern.serial_id
19
+
20
+ record = {
21
+ 'id' => identity,
22
+ 'url' => url_for("/community/posts/#{identity}.json"),
23
+ 'html_url' => html_url_for("/hc/posts/#{identity}.json"),
24
+ 'created_at' => Time.now.iso8601,
25
+ 'updated_at' => Time.now.iso8601,
26
+ 'vote_count' => 0,
27
+ 'vote_sum' => 0,
28
+ 'comment_count' => 0,
29
+ 'follower_count' => 0,
30
+ 'details' => '',
31
+ }.merge(post_params)
32
+
33
+ data[:help_center_posts][identity] = record
34
+
35
+ mock_response('post' => record)
36
+ end
37
+ end
@@ -1,61 +1,62 @@
1
+ # frozen_string_literal: true
1
2
  class Zendesk2::CreateHelpCenterSection
2
3
  include Zendesk2::Request
3
4
 
4
5
  request_method :post
5
6
  request_path { |r| "/help_center/categories/#{r.category_id}/sections.json" }
6
- request_body { |r| { "section" => r.section_params } }
7
+ request_body { |r| { 'section' => r.section_params } }
7
8
 
8
9
  def self.accepted_attributes
9
- %w[category_id description locale name position sorting]
10
+ %w(category_id description locale name position sorting)
10
11
  end
11
12
 
12
13
  def section_params
13
- Cistern::Hash.slice(params.fetch("section"), *self.class.accepted_attributes)
14
+ Cistern::Hash.slice(params.fetch('section'), *self.class.accepted_attributes)
14
15
  end
15
16
 
16
17
  def category_id
17
- params.fetch("section").fetch("category_id")
18
+ params.fetch('section').fetch('category_id')
18
19
  end
19
20
 
20
21
  def mock
21
22
  identity = cistern.serial_id
22
23
 
23
- locale = params["locale"] ||= "en-us"
24
- position = self.data[:help_center_sections].values.select { |a| a["category_id"] == category_id }.size
24
+ locale = params['locale'] ||= 'en-us'
25
+ position = data[:help_center_sections].values.select { |a| a['category_id'] == category_id }.size
25
26
 
26
27
  record = {
27
- "id" => identity,
28
- "url" => url_for("/help_center/#{locale}/sections/#{identity}.json"),
29
- "html_url" => html_url_for("/hc/#{locale}/sections/#{identity}.json"),
30
- "author_id" => cistern.current_user["id"],
31
- "comments_disabled" => false,
32
- "label_names" => [],
33
- "draft" => false,
34
- "promoted" => false,
35
- "position" => position,
36
- "vote_sum" => 0,
37
- "vote_count" => 0,
38
- "category_id" => category_id,
39
- "created_at" => Time.now.iso8601,
40
- "updated_at" => Time.now.iso8601,
41
- "name" => "",
42
- "body" => "",
43
- "source_locale" => locale,
44
- "outdated" => false,
28
+ 'id' => identity,
29
+ 'url' => url_for("/help_center/#{locale}/sections/#{identity}.json"),
30
+ 'html_url' => html_url_for("/hc/#{locale}/sections/#{identity}.json"),
31
+ 'author_id' => cistern.current_user['id'],
32
+ 'comments_disabled' => false,
33
+ 'label_names' => [],
34
+ 'draft' => false,
35
+ 'promoted' => false,
36
+ 'position' => position,
37
+ 'vote_sum' => 0,
38
+ 'vote_count' => 0,
39
+ 'category_id' => category_id,
40
+ 'created_at' => Time.now.iso8601,
41
+ 'updated_at' => Time.now.iso8601,
42
+ 'name' => '',
43
+ 'body' => '',
44
+ 'source_locale' => locale,
45
+ 'outdated' => false,
45
46
  }.merge(section_params)
46
47
 
47
48
  cistern.data[:help_center_sections][identity] = record
48
49
 
49
50
  access_policy = {
50
- "viewable_by" => "everyone",
51
- "managable_by" => "staff",
52
- "restricted_to_group_ids" => [],
53
- "restricted_to_organization_ids" => [],
54
- "required_tags" => [],
55
- "section_id" => identity
51
+ 'viewable_by' => 'everyone',
52
+ 'managable_by' => 'staff',
53
+ 'restricted_to_group_ids' => [],
54
+ 'restricted_to_organization_ids' => [],
55
+ 'required_tags' => [],
56
+ 'section_id' => identity,
56
57
  }
57
58
  cistern.data[:help_center_access_policies][identity] = access_policy
58
59
 
59
- mock_response("section" => record)
60
+ mock_response('section' => record)
60
61
  end
61
62
  end
@@ -0,0 +1,36 @@
1
+ # frozen_string_literal: true
2
+ class Zendesk2::CreateHelpCenterTopic
3
+ include Zendesk2::Request
4
+
5
+ request_method :post
6
+ request_path { |_| '/community/topics.json' }
7
+ request_body { |r| { 'topic' => r.topic_params } }
8
+
9
+ def self.accepted_attributes
10
+ %w(name position description)
11
+ end
12
+
13
+ def topic_params
14
+ Cistern::Hash.slice(params.fetch('topic'), *self.class.accepted_attributes)
15
+ end
16
+
17
+ def mock
18
+ identity = cistern.serial_id
19
+
20
+ position = data[:help_center_topics].size
21
+
22
+ record = {
23
+ 'id' => identity,
24
+ 'url' => url_for("/communit/topics/#{identity}.json"),
25
+ 'html_url' => html_url_for("/hc/topics/#{identity}.json"),
26
+ 'position' => position,
27
+ 'created_at' => Time.now.iso8601,
28
+ 'updated_at' => Time.now.iso8601,
29
+ 'description' => '',
30
+ }.merge(topic_params)
31
+
32
+ data[:help_center_topics][identity] = record
33
+
34
+ mock_response('topic' => record)
35
+ end
36
+ end