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,65 +1,64 @@
1
+ # frozen_string_literal: true
1
2
  require 'spec_helper'
2
3
 
3
- describe "organizations" do
4
+ describe 'organizations' do
4
5
  let(:client) { create_client }
5
6
 
6
- include_examples "zendesk#resource", {
7
- :collection => lambda { client.organizations },
8
- :create_params => lambda { { name: mock_uuid } },
9
- :update_params => lambda { { name: mock_uuid } },
10
- }
7
+ include_examples 'zendesk#resource', collection: -> { client.organizations },
8
+ create_params: -> { { name: mock_uuid } },
9
+ update_params: -> { { name: mock_uuid } }
11
10
 
12
- describe "with an organization" do
11
+ describe 'with an organization' do
13
12
  let(:organization) { client.organizations.create!(name: mock_uuid) }
14
13
 
15
- it "should get #users" do
14
+ it 'should get #users' do
16
15
  user = client.users.create!(email: "#{mock_uuid}@example.org", name: mock_uuid, organization: organization)
17
16
  expect(organization.users).to include user
18
17
  end
19
18
 
20
- it "should get #tickets" do
19
+ it 'should get #tickets' do
21
20
  user = client.users.create!(email: "#{mock_uuid}@example.org", name: mock_uuid, organization: organization)
22
21
  ticket = client.tickets.create!(subject: "#{mock_uuid}@example.org", description: mock_uuid, requester: user)
23
22
  expect(organization.tickets).to include ticket
24
23
  end
25
24
 
26
- it "should hate non-unique names" do
25
+ it 'should hate non-unique names' do
27
26
  # create
28
- expect {
27
+ expect do
29
28
  client.organizations.create!(name: organization.name)
30
- }.to raise_exception(Zendesk2::Error)
29
+ end.to raise_exception(Zendesk2::Error)
31
30
 
32
31
  expect(
33
32
  client.organizations.create(name: organization.name).errors
34
- ).to eq("name" => ["Name: has already been taken"])
33
+ ).to eq('name' => ['Name: has already been taken'])
35
34
 
36
35
  expect(
37
36
  client.organizations.create(name: organization.name.upcase).errors
38
- ).to eq("name" => ["Name: has already been taken"])
37
+ ).to eq('name' => ['Name: has already been taken'])
39
38
 
40
39
  # update
41
40
  model = client.organizations.create!(name: mock_uuid)
42
41
 
43
42
  expect(
44
43
  model.update(name: organization.name).errors
45
- ).to eq("name" => ["Name: has already been taken"])
44
+ ).to eq('name' => ['Name: has already been taken'])
46
45
 
47
46
  expect(
48
47
  model.update(name: organization.name.upcase).errors
49
- ).to eq("name" => ["Name: has already been taken"])
48
+ ).to eq('name' => ['Name: has already been taken'])
50
49
  end
51
50
 
52
- it "should update name" do
51
+ it 'should update name' do
53
52
  old_name = organization.name
54
53
  proxy = organization.dup
55
54
  new_name = mock_uuid
56
55
 
57
- expect {
56
+ expect do
58
57
  proxy.update!(name: new_name)
59
- }.to change { organization.reload.name }.from(old_name).to(new_name)
58
+ end.to change { organization.reload.name }.from(old_name).to(new_name)
60
59
  end
61
60
 
62
- it "should be able to find organizations by external id" do
61
+ it 'should be able to find organizations by external id' do
63
62
  external_id = organization.external_id = mock_uuid
64
63
  organization.save!
65
64
 
@@ -68,58 +67,59 @@ describe "organizations" do
68
67
  end
69
68
  end
70
69
 
71
- describe "#create_organization" do
70
+ describe '#create_organization' do
72
71
  let(:client) { create_client }
73
72
 
74
- it "should prevent duplicate external_ids" do
73
+ it 'should prevent duplicate external_ids' do
75
74
  external_id = mock_uuid
76
75
 
77
- client.create_organization("organization" => { "name" => mock_uuid, external_id: nil }) # fine
78
- client.create_organization("organization" => { "name" => mock_uuid, external_id: nil }) # also fine
79
- client.create_organization("organization" => { "name" => mock_uuid, external_id: external_id}) # it's cool
76
+ client.create_organization('organization' => { 'name' => mock_uuid, external_id: nil }) # fine
77
+ client.create_organization('organization' => { 'name' => mock_uuid, external_id: nil }) # also fine
78
+ client.create_organization('organization' => { 'name' => mock_uuid, external_id: external_id }) # it's cool
80
79
 
81
- expect {
82
- client.create_organization("organization" => {"name" => mock_uuid, external_id: external_id})
83
- }.to raise_exception(Zendesk2::Error, /External has already been taken/)
80
+ expect do
81
+ client.create_organization('organization' => { 'name' => mock_uuid, external_id: external_id })
82
+ end.to raise_exception(Zendesk2::Error, /External has already been taken/)
84
83
  end
85
84
 
86
- it "should correctly respond" do
87
- body = { "organization" => {"name" => (name = mock_uuid)} }
85
+ it 'should correctly respond' do
86
+ body = { 'organization' => { 'name' => (name = mock_uuid) } }
88
87
 
89
88
  response = client.create_organization(body)
90
89
 
91
90
  expect(response.status).to eq(201)
92
- expect(response.env[:url].path).to eq("/api/v2/organizations.json")
91
+ expect(response.env[:url].path).to eq('/api/v2/organizations.json')
93
92
  expect(response.env[:method]).to eq(:post)
94
93
  expect(client.last_request).to match(body)
95
- expect(response.env[:body]["organization"]).to match(
94
+ expect(response.env[:body]['organization']).to match(
96
95
  a_hash_including(
97
- "name" => name,
98
- ))
96
+ 'name' => name
97
+ )
98
+ )
99
99
  end
100
100
  end
101
101
 
102
- context "with a organization" do
102
+ context 'with a organization' do
103
103
  let(:client) { create_client }
104
104
  let!(:organization) { client.organizations.create!(name: mock_uuid) }
105
105
 
106
- describe "#destroy_organization" do
107
- it "should require a valid organization" do
108
- expect {
106
+ describe '#destroy_organization' do
107
+ it 'should require a valid organization' do
108
+ expect do
109
109
  client.destroy_organization(
110
- "organization" => {
111
- "id" => 999999999,
110
+ 'organization' => {
111
+ 'id' => 999_999_999,
112
112
  }
113
113
  )
114
- }.to raise_error(Zendesk2::Error) { |e|
114
+ end.to raise_error(Zendesk2::Error) { |e|
115
115
  expect(e.response[:status]).to eq(404)
116
116
  }
117
117
  end
118
118
 
119
- it "should correctly respond" do
119
+ it 'should correctly respond' do
120
120
  response = client.destroy_organization(
121
- "organization" => {
122
- "id" => organization.id,
121
+ 'organization' => {
122
+ 'id' => organization.id,
123
123
  }
124
124
  )
125
125
 
@@ -131,39 +131,40 @@ context "with a organization" do
131
131
  end
132
132
  end
133
133
 
134
- describe "#get_organizations" do
135
- it "should correctly respond" do
134
+ describe '#get_organizations' do
135
+ it 'should correctly respond' do
136
136
  response = client.get_organizations
137
137
 
138
138
  expect(response.status).to eq(200)
139
- expect(response.env[:url].path).to eq("/api/v2/organizations.json")
139
+ expect(response.env[:url].path).to eq('/api/v2/organizations.json')
140
140
  expect(response.env[:method]).to eq(:get)
141
141
  expect(client.last_request).to eq(nil)
142
142
  skip unless Zendesk2.mocking?
143
- expect(response.env[:body]["organizations"]).to match([
144
- a_hash_including(
145
- "id" => organization.id,
146
- )])
143
+ expect(response.env[:body]['organizations']).to match([
144
+ a_hash_including(
145
+ 'id' => organization.id
146
+ ),
147
+ ])
147
148
  end
148
149
  end
149
150
 
150
- describe "#get_organization" do
151
- it "should require a valid organization" do
152
- expect {
151
+ describe '#get_organization' do
152
+ it 'should require a valid organization' do
153
+ expect do
153
154
  client.get_organization(
154
- "organization" => {
155
- "id" => 999999999,
155
+ 'organization' => {
156
+ 'id' => 999_999_999,
156
157
  }
157
158
  )
158
- }.to raise_error(Zendesk2::Error) { |e|
159
+ end.to raise_error(Zendesk2::Error) { |e|
159
160
  expect(e.response[:status]).to eq(404)
160
161
  }
161
162
  end
162
163
 
163
- it "should correctly respond" do
164
+ it 'should correctly respond' do
164
165
  response = client.get_organization(
165
- "organization" => {
166
- "id" => organization.id,
166
+ 'organization' => {
167
+ 'id' => organization.id,
167
168
  }
168
169
  )
169
170
 
@@ -171,60 +172,64 @@ context "with a organization" do
171
172
  expect(response.env[:url].path).to eq("/api/v2/organizations/#{organization.id}.json")
172
173
  expect(response.env[:method]).to eq(:get)
173
174
  expect(client.last_request).to eq(nil)
174
- expect(response.env[:body]["organization"]).to match(
175
+ expect(response.env[:body]['organization']).to match(
175
176
  a_hash_including(
176
- "id" => organization.id,
177
- "url" => response.env[:url].to_s,
178
- ))
177
+ 'id' => organization.id,
178
+ 'url' => response.env[:url].to_s
179
+ )
180
+ )
179
181
  end
180
182
  end
181
183
 
182
- describe "#update_organization" do
183
- it "should require a valid organization" do
184
- expect {
184
+ describe '#update_organization' do
185
+ it 'should require a valid organization' do
186
+ expect do
185
187
  client.update_organization(
186
- "organization" => {
187
- "id" => 999999999,
188
- "name" => mock_uuid,
188
+ 'organization' => {
189
+ 'id' => 999_999_999,
190
+ 'name' => mock_uuid,
189
191
  }
190
192
  )
191
- }.to raise_error(Zendesk2::Error) { |e|
193
+ end.to raise_error(Zendesk2::Error) { |e|
192
194
  expect(e.response[:status]).to eq(404)
193
195
  }
194
196
  end
195
197
 
196
- it "should prevent duplicate external_ids" do
198
+ it 'should prevent duplicate external_ids' do
197
199
  external_id = mock_uuid
198
200
 
199
201
  organization = client.organizations.create!(name: mock_uuid)
200
202
  another_organization = client.organizations.create!(name: mock_uuid)
201
203
 
202
- client.update_organization("organization" => {"id" => organization.id, external_id: nil}) # fine
203
- client.update_organization("organization" => {"id" => another_organization.id, external_id: external_id}) # also fine
204
+ # fine
205
+ client.update_organization('organization' => { 'id' => organization.id, external_id: nil })
206
+ # also fine
207
+ client.update_organization('organization' => { 'id' => another_organization.id, external_id: external_id })
204
208
 
205
- expect {
206
- client.update_organization("organization" => {"id" => organization.id, external_id: external_id})
207
- }.to raise_exception(Zendesk2::Error, /External has already been taken/)
209
+ expect do
210
+ client.update_organization('organization' => { 'id' => organization.id, external_id: external_id })
211
+ end.to raise_exception(Zendesk2::Error, /External has already been taken/)
208
212
  end
209
213
 
210
- it "should correctly respond" do
214
+ it 'should correctly respond' do
211
215
  response = client.update_organization(
212
- "organization" => {
213
- "id" => organization.id,
214
- "name" => (name = mock_uuid),
216
+ 'organization' => {
217
+ 'id' => organization.id,
218
+ 'name' => (name = mock_uuid),
215
219
  }
216
220
  )
217
221
 
218
222
  expect(response.status).to eq(200)
219
223
  expect(response.env[:url].path).to eq("/api/v2/organizations/#{organization.id}.json")
220
224
  expect(response.env[:method]).to eq(:put)
221
- expect(client.last_request).to eq("organization" => {"name" => name})
222
- expect(response.env[:body]["organization"]).to match(
225
+ expect(client.last_request).to eq('organization' => { 'name' => name })
226
+ expect(response.env[:body]['organization']).to match(
223
227
  a_hash_including(
224
- "id" => organization.id,
225
- "url" => response.env[:url].to_s,
226
- "name" => name,
227
- ))
228
+ 'id' => organization.id,
229
+ 'url' => response.env[:url].to_s,
230
+ 'name' => name
231
+ )
232
+ )
228
233
  end
229
234
  end
230
235
  end
@@ -1,51 +1,52 @@
1
- shared_examples "zendesk#resource" do |options={}|
2
- context "as a resource" do
1
+ # frozen_string_literal: true
2
+ shared_examples 'zendesk#resource' do |options = {}|
3
+ context 'as a resource' do
3
4
  let!(:collection) { instance_exec(&options[:collection]) }
4
5
  let(:create_params) { instance_exec(&options[:create_params]) || {} }
5
6
  let(:update_params) { instance_exec(&options[:update_params]) }
6
- let(:fetch_params) { options[:fetch_params] || lambda { |r| r.identity } }
7
+ let(:fetch_params) { options[:fetch_params] || ->(r) { r.identity } }
7
8
  let(:search_params) { options[:search_params] ? instance_exec(&options[:search_params]) : create_params }
8
9
 
9
10
  let(:record) { @record }
10
11
  after(:each) { @record && @record.destroy }
11
12
 
12
- it "should be created" do
13
+ it 'should be created' do
13
14
  @record = collection.create!(create_params)
14
15
  expect(record.identity).not_to be_nil
15
16
  end
16
17
 
17
- it "should be fetched" do
18
+ it 'should be fetched' do
18
19
  @record = collection.create!(create_params)
19
20
  expect(collection.get!(fetch_params.call(record))).to eq(record)
20
21
  end
21
22
 
22
23
  if options.fetch(:paged, true)
23
- context "paging" do
24
+ context 'paging' do
24
25
  before(:each) do
25
- @resources = 3.times.map { collection.create!(instance_exec(&options[:create_params])) }
26
+ @resources = Array.new(3) { collection.create!(instance_exec(&options[:create_params])) }
26
27
  end
27
28
 
28
- after(:each) { (@resources || []).each { |r| r.destroy } }
29
+ after(:each) { (@resources || []).each(&:destroy) }
29
30
 
30
- it "should retrieve first page" do
31
- expect(collection.all("per_page" => "1").size).to eq(1)
31
+ it 'should retrieve first page' do
32
+ expect(collection.all('per_page' => '1').size).to eq(1)
32
33
  end
33
34
 
34
- it "should retrieve next page" do
35
- first_page = collection.all("per_page" => 1)
36
- second_page = collection.all("per_page" => 1).next_page
35
+ it 'should retrieve next page' do
36
+ first_page = collection.all('per_page' => 1)
37
+ second_page = collection.all('per_page' => 1).next_page
37
38
  expect(second_page).not_to eq(first_page)
38
39
  end
39
40
 
40
- it "should retreive previous page" do
41
- first_page = collection.all("per_page" => "1")
42
- previous_to_second_page = collection.all("per_page" => 1).next_page.previous_page
41
+ it 'should retreive previous page' do
42
+ first_page = collection.all('per_page' => '1')
43
+ previous_to_second_page = collection.all('per_page' => 1).next_page.previous_page
43
44
  expect(previous_to_second_page).to eq(first_page)
44
45
  end
45
46
  end
46
47
  else
47
- context "paging" do
48
- it "should not be present" do
48
+ context 'paging' do
49
+ it 'should not be present' do
49
50
  expect(collection.class.attributes).not_to have_key(:next_page_link)
50
51
  expect(collection.class.attributes).not_to have_key(:previous_page_link)
51
52
  expect(collection.class.attributes).to have_key(:count)
@@ -53,16 +54,30 @@ shared_examples "zendesk#resource" do |options={}|
53
54
  end
54
55
  end
55
56
 
57
+ context 'index' do
58
+ let!(:resource) { @resource = collection.create!(instance_exec(&options[:create_params])) }
59
+
60
+ after { @resource.destroy if @resource }
61
+
62
+ # real index actions sometimes have delays in population
63
+ it 'lists', mock_only: true do
64
+ expect(collection.all).to include(resource)
65
+ end
66
+ end
67
+
56
68
  if options.fetch(:update, true)
57
- it "should be updated" do
69
+ it 'should be updated' do
58
70
  @record = collection.create!(create_params)
59
- update_params.each { |k,v| record.send("#{k}=", v) }
71
+ update_params.each { |k, v| record.send("#{k}=", v) }
60
72
  record.save
61
- update_params.each {|k,v| expect(record.send(k)).to eq(v)}
73
+ update_params.each do |k, to|
74
+ from = record.send(k)
75
+ expect(from).to eq(to), "Expected #{k} to be updated #{from.inspect} to #{to.inspect}"
76
+ end
62
77
  end
63
78
  end
64
79
 
65
- it "should be destroyed" do
80
+ it 'should be destroyed' do
66
81
  @record = collection.create!(create_params)
67
82
  expect(record.identity).not_to be_nil
68
83
  record.destroy
@@ -74,14 +89,14 @@ shared_examples "zendesk#resource" do |options={}|
74
89
 
75
90
  if options.fetch(:search, true) && Zendesk2.mocking?
76
91
  # Search index takes 2-3 minutes according to the docs
77
- it "should search by hash" do
92
+ it 'should search by hash' do
78
93
  @record = collection.create!(create_params)
79
94
  expect(collection.search(search_params).to_a).to eq([record])
80
95
  end
81
96
 
82
- it "should search by string" do
97
+ it 'should search by string' do
83
98
  @record = collection.create!(create_params)
84
- expect(collection.search(search_params.map { |k,v| [k,v].join(":") }.join(" ")).to_a).to eq([record])
99
+ expect(collection.search(search_params.map { |k, v| [k, v].join(':') }.join(' ')).to_a).to eq([record])
85
100
  end
86
101
  end
87
102
  end
data/spec/spec_helper.rb CHANGED
@@ -1,26 +1,21 @@
1
+ # frozen_string_literal: true
1
2
  ENV['MOCK_ZENDESK'] ||= 'true'
2
3
 
3
4
  Bundler.require(:test)
4
5
 
5
- require File.expand_path("../../lib/zendesk2", __FILE__)
6
+ require File.expand_path('../../lib/zendesk2', __FILE__)
6
7
 
7
- Dir[File.expand_path("../{support,shared}/**/*.rb", __FILE__)].each {|f| require f}
8
+ Dir[File.expand_path('../{support,shared}/**/*.rb', __FILE__)].each { |f| require f }
8
9
 
9
- if ENV["MOCK_ZENDESK"] == 'true'
10
- Zendesk2.mock!
11
- end
10
+ Zendesk2.mock! if ENV['MOCK_ZENDESK'] == 'true'
12
11
 
13
12
  Cistern.formatter = Cistern::Formatter::AwesomePrint
14
- Cistern.deprecation_warnings = !!ENV['DEBUG']
13
+ Cistern.deprecation_warnings = ENV['DEBUG']
15
14
 
16
15
  RSpec.configure do |config|
17
- if Zendesk2.mocking?
18
- config.before(:each) { Zendesk2.reset! }
19
- else
20
- config.filter_run_excluding(mock_only: true)
21
- end
22
- config.filter_run(:focus => true)
16
+ Zendesk2.mocking? ? config.before(:each) { Zendesk2.reset! } : config.filter_run_excluding(mock_only: true)
17
+ config.filter_run(focus: true)
23
18
  config.run_all_when_everything_filtered = true
24
19
 
25
- config.order = "random"
20
+ config.order = 'random'
26
21
  end