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
data/spec/groups_spec.rb CHANGED
@@ -1,17 +1,16 @@
1
+ # frozen_string_literal: true
1
2
  require 'spec_helper'
2
3
 
3
- describe "groups" do
4
+ describe 'groups' do
4
5
  let(:client) { create_client }
5
6
 
6
- include_examples "zendesk#resource", {
7
- :collection => lambda { client.groups },
8
- :create_params => lambda { { name: mock_uuid } },
9
- :update_params => lambda { { name: mock_uuid } },
10
- }
7
+ include_examples 'zendesk#resource', collection: -> { client.groups },
8
+ create_params: -> { { name: mock_uuid } },
9
+ update_params: -> { { name: mock_uuid } }
11
10
 
12
- it "should list assignable groups" do
11
+ it 'should list assignable groups' do
13
12
  client.groups.create(name: mock_uuid) # assignable by default
14
13
 
15
- expect(client.groups.assignable).to be_all{|g| !g.deleted}
14
+ expect(client.groups.assignable).to be_all { |g| !g.deleted }
16
15
  end
17
16
  end
@@ -1,40 +1,36 @@
1
+ # frozen_string_literal: true
1
2
  require 'spec_helper'
2
3
 
3
- describe "help_center/articles" do
4
+ describe 'help_center/articles' do
4
5
  let(:client) { create_client }
5
6
  let!(:section) do
6
7
  category = client.help_center_categories.create!(name: mock_uuid,
7
- locale: "en-us",
8
- )
9
- client.help_center_sections.create!(:name => mock_uuid,
10
- :locale => "en-us",
11
- :category => category,
12
- )
8
+ locale: 'en-us')
9
+ client.help_center_sections.create!(name: mock_uuid,
10
+ locale: 'en-us',
11
+ category: category)
13
12
  end
14
13
 
15
- include_examples "zendesk#resource", {
16
- :collection => lambda { client.help_center_articles },
17
- :create_params => lambda { { title: mock_uuid, locale: "en-us", section: section } },
18
- :update_params => lambda { { title: mock_uuid } },
19
- :search_params => lambda { Cistern::Hash.slice(create_params, :title) },
20
- :search => true,
21
- }
14
+ include_examples 'zendesk#resource',
15
+ collection: -> { client.help_center_articles },
16
+ create_params: -> { { title: mock_uuid, locale: 'en-us', section: section } },
17
+ update_params: -> { { title: mock_uuid } },
18
+ search_params: -> { Cistern::Hash.slice(create_params, :title) },
19
+ search: true
22
20
 
23
- describe "translations" do
21
+ describe 'translations' do
24
22
  let!(:article) do
25
- client.help_center_articles.create!(:title => mock_uuid,
26
- :locale => "en-us",
27
- :section => section
28
- )
23
+ client.help_center_articles.create!(title: mock_uuid,
24
+ locale: 'en-us',
25
+ section: section)
29
26
  end
30
27
  let!(:locale) { mock_uuid }
31
28
 
32
- include_examples "zendesk#resource", {
33
- :collection => lambda { article.translations },
34
- :fetch_params => lambda { |r| Cistern::Hash.slice(r.attributes, :source_id, :source_type, :locale) },
35
- :create_params => lambda { { source: article, locale: locale, title: mock_uuid } },
36
- :update_params => lambda { { title: mock_uuid } },
37
- :search => false
38
- }
29
+ include_examples 'zendesk#resource',
30
+ collection: -> { article.translations },
31
+ fetch_params: ->(r) { Cistern::Hash.slice(r.attributes, :source_id, :source_type, :locale) },
32
+ create_params: -> { { source: article, locale: locale, title: mock_uuid } },
33
+ update_params: -> { { title: mock_uuid } },
34
+ search: false
39
35
  end
40
36
  end
@@ -1,44 +1,43 @@
1
+ # frozen_string_literal: true
1
2
  require 'spec_helper'
2
3
 
3
- describe "help_center/categories" do
4
- let(:client) { create_client }
4
+ describe 'help_center/categories' do
5
+ let(:client) { create_client }
5
6
 
6
- include_examples "zendesk#resource", {
7
- :collection => lambda { client.help_center_categories },
8
- :create_params => lambda { { name: mock_uuid, locale: "en-us" } },
9
- :update_params => lambda { { name: mock_uuid } },
10
- :search => false,
11
- }
7
+ include_examples 'zendesk#resource',
8
+ collection: -> { client.help_center_categories(locale: 'en-us') },
9
+ create_params: -> { { name: mock_uuid, locale: 'en-us' } },
10
+ update_params: -> { { name: mock_uuid } },
11
+ search: false
12
12
 
13
- context "with a category, sections, and articles" do
14
- let!(:category) { client.help_center_categories.create!(name: mock_uuid, locale: "en-us") }
15
- let!(:section) { category.sections.create!(name: mock_uuid, locale: "en-us") }
16
- let!(:articles) { 2.times.map { section.articles.create(title: mock_uuid, locale: "en-us") } }
13
+ context 'with a category, sections, and articles' do
14
+ let!(:category) { client.help_center_categories.create!(name: mock_uuid, locale: 'en-us') }
15
+ let!(:section) { category.sections.create!(name: mock_uuid, locale: 'en-us') }
16
+ let!(:articles) { Array.new(2) { section.articles.create(title: mock_uuid, locale: 'en-us') } }
17
17
 
18
- before {
19
- client.help_center_categories.create!(name: mock_uuid, locale: "en-us").
20
- sections.create!(name: mock_uuid, locale: "en-us").articles.create!(title: mock_uuid, locale: "en-us")
21
- }
18
+ before do
19
+ client.help_center_categories.create!(name: mock_uuid, locale: 'en-us')
20
+ .sections.create!(name: mock_uuid, locale: 'en-us').articles.create!(title: mock_uuid, locale: 'en-us')
21
+ end
22
22
 
23
- it "lists sections within a category" do
23
+ it 'lists sections within a category' do
24
24
  expect(category.sections.all).to contain_exactly(section)
25
25
  end
26
26
 
27
- it "lists articles within a category" do
27
+ it 'lists articles within a category' do
28
28
  expect(category.articles.all).to match_array(articles)
29
29
  end
30
30
  end
31
31
 
32
- describe "translations" do
33
- let!(:category) { client.help_center_categories.create!(name: mock_uuid, locale: "en-us") }
32
+ describe 'translations' do
33
+ let!(:category) { client.help_center_categories.create!(name: mock_uuid, locale: 'en-us') }
34
34
  let!(:locale) { mock_uuid }
35
35
 
36
- include_examples "zendesk#resource", {
37
- :collection => lambda { category.translations },
38
- :fetch_params => lambda { |r| Cistern::Hash.slice(r.attributes, :source_id, :source_type, :locale) },
39
- :create_params => lambda { { source: category, locale: locale, title: mock_uuid } },
40
- :update_params => lambda { { title: mock_uuid } },
41
- :search => false
42
- }
36
+ include_examples 'zendesk#resource',
37
+ collection: -> { category.translations },
38
+ fetch_params: ->(r) { Cistern::Hash.slice(r.attributes, :source_id, :source_type, :locale) },
39
+ create_params: -> { { source: category, locale: locale, title: mock_uuid } },
40
+ update_params: -> { { title: mock_uuid } },
41
+ search: false
43
42
  end
44
43
  end
@@ -0,0 +1,39 @@
1
+ # frozen_string_literal: true
2
+ require 'spec_helper'
3
+
4
+ describe 'help_center/posts' do
5
+ let(:client) { create_client }
6
+ let!(:topic) { client.help_center_topics.create(name: mock_uuid) }
7
+
8
+ include_examples 'zendesk#resource',
9
+ collection: -> { topic.posts },
10
+ create_params: -> { { title: mock_uuid, details: mock_uuid } },
11
+ update_params: -> { { title: mock_uuid, details: mock_uuid } },
12
+ search: false
13
+
14
+ let(:author) { client.users.create!(email: mock_email, name: mock_uuid) }
15
+
16
+ describe 'with an author' do
17
+ include_examples 'zendesk#resource',
18
+ collection: -> { author.posts },
19
+ create_params: lambda {
20
+ { title: mock_uuid, details: mock_uuid, topic_id: topic.id, author_id: author.id }
21
+ },
22
+ update_params: -> { { title: mock_uuid, details: mock_uuid } },
23
+ search: false
24
+ end
25
+
26
+ describe 'with a post' do
27
+ let!(:post) do
28
+ client.help_center_posts.create(title: mock_uuid, details: mock_uuid, topic_id: topic.id, author_id: author.id)
29
+ end
30
+
31
+ it 'returns the author' do
32
+ expect(post.author).to eq(author)
33
+ end
34
+
35
+ it 'returns the topic' do
36
+ expect(post.topic).to eq(topic)
37
+ end
38
+ end
39
+ end
@@ -1,60 +1,59 @@
1
+ # frozen_string_literal: true
1
2
  require 'spec_helper'
2
3
 
3
- describe "help_center/sections" do
4
- let(:client) { create_client }
4
+ describe 'help_center/sections' do
5
+ let(:client) { create_client }
5
6
  let!(:category) do
6
7
  client.help_center_categories.create!(
7
8
  name: mock_uuid,
8
- locale: "en-us",
9
+ locale: 'en-us'
9
10
  )
10
11
  end
11
12
 
12
- include_examples "zendesk#resource", {
13
- :collection => lambda { client.help_center_sections },
14
- :create_params => lambda { { name: mock_uuid, locale: "en-us", category: category } },
15
- :update_params => lambda { { name: mock_uuid } },
16
- :search => false,
17
- }
13
+ include_examples 'zendesk#resource',
14
+ collection: -> { client.help_center_sections },
15
+ create_params: -> { { name: mock_uuid, locale: 'en-us', category: category } },
16
+ update_params: -> { { name: mock_uuid } },
17
+ search: false
18
18
 
19
- context "with a category, sections, and articles" do
20
- let!(:section) { category.sections.create!(name: mock_uuid, locale: "en-us") }
21
- let!(:articles) { 2.times.map { section.articles.create(title: mock_uuid, locale: "en-us") } }
19
+ context 'with a category, sections, and articles' do
20
+ let!(:section) { category.sections.create!(name: mock_uuid, locale: 'en-us') }
21
+ let!(:articles) { Array.new(2) { section.articles.create(title: mock_uuid, locale: 'en-us') } }
22
22
 
23
- before {
24
- client.help_center_categories.create!(name: mock_uuid, locale: "en-us").
25
- sections.create!(name: mock_uuid, locale: "en-us").articles.create!(title: mock_uuid, locale: "en-us")
26
- }
23
+ before do
24
+ client.help_center_categories.create!(name: mock_uuid, locale: 'en-us')
25
+ .sections.create!(name: mock_uuid, locale: 'en-us').articles.create!(title: mock_uuid, locale: 'en-us')
26
+ end
27
27
 
28
- it "lists articles within a section" do
28
+ it 'lists articles within a section' do
29
29
  expect(section.articles.all).to match_array(articles)
30
30
  end
31
31
 
32
- it "shows the access policy for the section" do
33
- expect(section.access_policy.viewable_by).to eq("everyone")
32
+ it 'shows the access policy for the section' do
33
+ expect(section.access_policy.viewable_by).to eq('everyone')
34
34
  end
35
35
 
36
- it "updates the section access policy" do
36
+ it 'updates the section access policy' do
37
37
  policy = section.access_policy
38
38
  old_viewable_by = policy.viewable_by
39
- new_viewable_by = "staff"
39
+ new_viewable_by = 'staff'
40
40
 
41
- expect {
41
+ expect do
42
42
  policy.update!(viewable_by: new_viewable_by)
43
- }.to change { section.reload.access_policy.viewable_by }.from(old_viewable_by).to(new_viewable_by)
43
+ end.to change { section.reload.access_policy.viewable_by }.from(old_viewable_by).to(new_viewable_by)
44
44
  end
45
45
  end
46
46
 
47
- describe "translations" do
48
- let!(:category) { client.help_center_categories.create!(name: mock_uuid, locale: "en-us") }
49
- let!(:section) { category.sections.create!(name: mock_uuid, locale: "en-us") }
47
+ describe 'translations' do
48
+ let!(:category) { client.help_center_categories.create!(name: mock_uuid, locale: 'en-us') }
49
+ let!(:section) { category.sections.create!(name: mock_uuid, locale: 'en-us') }
50
50
  let!(:locale) { mock_uuid }
51
51
 
52
- include_examples "zendesk#resource", {
53
- :collection => lambda { section.translations },
54
- :fetch_params => lambda { |r| Cistern::Hash.slice(r.attributes, :source_id, :source_type, :locale) },
55
- :create_params => lambda { { source: section, locale: locale, title: mock_uuid } },
56
- :update_params => lambda { { title: mock_uuid } },
57
- :search => false
58
- }
52
+ include_examples 'zendesk#resource',
53
+ collection: -> { section.translations },
54
+ fetch_params: ->(r) { Cistern::Hash.slice(r.attributes, :source_id, :source_type, :locale) },
55
+ create_params: -> { { source: section, locale: locale, title: mock_uuid } },
56
+ update_params: -> { { title: mock_uuid } },
57
+ search: false
59
58
  end
60
59
  end
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+ require 'spec_helper'
3
+
4
+ describe 'help_center/topics' do
5
+ let(:client) { create_client }
6
+
7
+ include_examples 'zendesk#resource',
8
+ collection: -> { client.help_center_topics },
9
+ create_params: -> { { name: mock_uuid } },
10
+ update_params: -> { { name: mock_uuid } },
11
+ search: false,
12
+ paged: false
13
+ end
@@ -1,12 +1,13 @@
1
+ # frozen_string_literal: true
1
2
  require 'spec_helper'
2
3
 
3
4
  describe Zendesk2::PagedCollection, :mock_only do
4
5
  let!(:client) { create_client }
5
6
 
6
- let!(:records) { 333.times.each_with_index.map { |_,i| client.organizations.create(name: "#{i%3}_#{mock_uuid}") } }
7
+ let!(:records) { 333.times.each_with_index.map { |_, i| client.organizations.create(name: "#{i % 3}_#{mock_uuid}") } }
7
8
 
8
- context "#each_page" do
9
- it "should enumerate pages" do
9
+ context '#each_page' do
10
+ it 'should enumerate pages' do
10
11
  found_records = []
11
12
  client.organizations.all.each_page { |page| page.each { |entry| found_records << entry } }
12
13
 
@@ -14,15 +15,15 @@ describe Zendesk2::PagedCollection, :mock_only do
14
15
  end
15
16
  end
16
17
 
17
- context "#each_entry" do
18
- it "should enumerate entries" do
18
+ context '#each_entry' do
19
+ it 'should enumerate entries' do
19
20
  found_records = []
20
21
  client.organizations.all.each_entry { |entry| found_records << entry }
21
22
 
22
23
  expect(records).to match_array(found_records)
23
24
  end
24
25
 
25
- it "should chain enumerables" do
26
+ it 'should chain enumerables' do
26
27
  target = records.sample
27
28
  found = client.organizations.all.each_entry.find { |entry| entry.id == target.id }
28
29
 
@@ -30,13 +31,12 @@ describe Zendesk2::PagedCollection, :mock_only do
30
31
  end
31
32
  end
32
33
 
33
- context "#all_entries" do
34
-
35
- it "should chain search paging" do
36
- matching_records = records.select { |o| o.name.match(/\A2_/) }
34
+ context '#all_entries' do
35
+ it 'should chain search paging' do
36
+ matching_records = records.select { |o| o.name.start_with?('2_') }
37
37
  expect(matching_records).not_to be_empty
38
38
 
39
- found_records = client.organizations.search(name: "2_").all_entries
39
+ found_records = client.organizations.search(name: '2_').all_entries
40
40
 
41
41
  expect(found_records.size).to eq(matching_records.size)
42
42
  expect(found_records).to match_array(matching_records)
@@ -1,31 +1,32 @@
1
+ # frozen_string_literal: true
1
2
  require 'spec_helper'
2
3
 
3
4
  RSpec.describe Zendesk2::RateLimit do
4
5
  class Puppet
5
6
  def self.add_response(response)
6
- self.responses.unshift(response)
7
+ responses.unshift(response)
7
8
  end
8
9
 
9
10
  def self.responses
10
11
  @responses ||= []
11
12
  end
12
13
 
13
- def self.call(env)
14
- self.responses.shift || raise("not response set")
14
+ def self.call(_env)
15
+ responses.shift || raise('not response set')
15
16
  end
16
17
  end
17
18
 
18
- it "should delay requests for the specified time" do
19
+ it 'should delay requests for the specified time' do
19
20
  client = Faraday.new do |connection|
20
21
  connection.use Zendesk2::RateLimit
21
22
  connection.adapter :rack, Puppet
22
23
  end
23
24
 
24
- Puppet.responses << [429, {"Retry-After" => 0.1}, []]
25
- Puppet.responses << [429, {"Retry-After" => 0.2}, []]
26
- Puppet.responses << [200, {}, ["something"]]
25
+ Puppet.responses << [429, { 'Retry-After' => 0.1 }, []]
26
+ Puppet.responses << [429, { 'Retry-After' => 0.2 }, []]
27
+ Puppet.responses << [200, {}, ['something']]
27
28
 
28
- response = client.get("/")
29
+ response = client.get('/')
29
30
 
30
31
  expect(response.status).to eq(200)
31
32
  expect(response.headers[:rate_limits].to_s).to match(/^0\.3/) # ugh float math
@@ -1,19 +1,24 @@
1
+ # frozen_string_literal: true
1
2
  require 'spec_helper'
2
3
 
3
- describe "memberships" do
4
+ describe 'memberships' do
4
5
  let!(:client) { create_client }
5
6
  let!(:user) { client.users.create!(email: mock_email, name: mock_uuid, verified: true) }
6
7
  let(:organization) { client.organizations.create!(name: mock_uuid) }
7
8
 
8
- include_examples "zendesk#resource", {
9
- :create_params => lambda { { organization_id: client.organizations.create!(name: mock_uuid).identity, user_id: user.id } },
10
- :collection => lambda { client.memberships(user: user) },
11
- :paged => true,
12
- :update => false,
13
- :search => false,
14
- }
15
-
16
- it "should be marked as default" do
9
+ include_examples 'zendesk#resource',
10
+ create_params: lambda {
11
+ {
12
+ organization_id: client.organizations.create!(name: mock_uuid).identity,
13
+ user_id: user.id,
14
+ }
15
+ },
16
+ collection: -> { client.memberships(user: user) },
17
+ paged: true,
18
+ update: false,
19
+ search: false
20
+
21
+ it 'should be marked as default' do
17
22
  membership = client.memberships.create!(organization: organization, user: user).reload
18
23
  another_organization = client.organizations.create!(name: mock_uuid)
19
24
 
@@ -22,9 +27,9 @@ describe "memberships" do
22
27
  expect(membership.default).to eq(true)
23
28
  expect(another_membership.default).to eq(false)
24
29
 
25
- expect {
30
+ expect do
26
31
  another_membership.default!
27
- }.to change {
32
+ end.to change {
28
33
  another_membership.reload.default
29
34
  }.from(false).to(true)
30
35
 
@@ -68,25 +73,31 @@ describe "memberships" do
68
73
  expect(organization.users.to_a).to contain_exactly(another_user)
69
74
  end
70
75
 
71
- describe "create_membership" do
72
- it "should error when organization does not exist" do
73
- expect {
74
- client.create_membership("membership" => { "user_id" => user.identity, "organization_id" => 99 })
75
- }.to raise_exception(Zendesk2::Error, /RecordInvalid/)
76
+ describe 'create_membership' do
77
+ it 'should error when organization does not exist' do
78
+ expect do
79
+ client.create_membership('membership' => { 'user_id' => user.identity, 'organization_id' => 99 })
80
+ end.to raise_exception(Zendesk2::Error, /RecordInvalid/)
76
81
  end
77
82
 
78
- it "should error when creating a duplicate membership" do
79
- client.create_membership("membership" => { "user_id" => user.identity, "organization_id" => organization.identity })
80
-
81
- expect {
82
- client.create_membership("membership" => { "user_id" => user.identity, "organization_id" => organization.identity })
83
- }.to raise_exception(Zendesk2::Error, /RecordInvalid/)
83
+ it 'should error when creating a duplicate membership' do
84
+ client.create_membership('membership' => {
85
+ 'user_id' => user.identity,
86
+ 'organization_id' => organization.identity,
87
+ })
88
+
89
+ expect do
90
+ client.create_membership('membership' => {
91
+ 'user_id' => user.identity,
92
+ 'organization_id' => organization.identity,
93
+ })
94
+ end.to raise_exception(Zendesk2::Error, /RecordInvalid/)
84
95
  end
85
96
 
86
- it "should error when user does not exist" do
87
- expect {
88
- client.create_membership("membership" => { "user_id" => 99, "organization_id" => organization.identity })
89
- }.to raise_exception(Zendesk2::Error, /RecordNotFound/)
97
+ it 'should error when user does not exist' do
98
+ expect do
99
+ client.create_membership('membership' => { 'user_id' => 99, 'organization_id' => organization.identity })
100
+ end.to raise_exception(Zendesk2::Error, /RecordNotFound/)
90
101
  end
91
102
  end
92
103
  end