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,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