zendesk2 1.8.1 → 1.9.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (82) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +10 -1
  3. data/lib/zendesk2/attributes.rb +1 -1
  4. data/lib/zendesk2/audit_event.rb +1 -1
  5. data/lib/zendesk2/category.rb +3 -3
  6. data/lib/zendesk2/collection.rb +2 -2
  7. data/lib/zendesk2/create_category.rb +2 -2
  8. data/lib/zendesk2/create_forum.rb +2 -2
  9. data/lib/zendesk2/create_group.rb +1 -1
  10. data/lib/zendesk2/create_membership.rb +1 -1
  11. data/lib/zendesk2/create_organization.rb +1 -1
  12. data/lib/zendesk2/create_ticket.rb +9 -9
  13. data/lib/zendesk2/create_ticket_field.rb +1 -1
  14. data/lib/zendesk2/create_topic.rb +1 -1
  15. data/lib/zendesk2/create_topic_comment.rb +1 -1
  16. data/lib/zendesk2/create_user.rb +3 -3
  17. data/lib/zendesk2/create_user_field.rb +2 -2
  18. data/lib/zendesk2/create_user_identity.rb +4 -4
  19. data/lib/zendesk2/create_view.rb +2 -2
  20. data/lib/zendesk2/destroy_user.rb +2 -2
  21. data/lib/zendesk2/forum.rb +3 -3
  22. data/lib/zendesk2/get_assignable_groups.rb +1 -1
  23. data/lib/zendesk2/get_ccd_tickets.rb +1 -1
  24. data/lib/zendesk2/get_current_user.rb +1 -1
  25. data/lib/zendesk2/get_user_identities.rb +1 -1
  26. data/lib/zendesk2/group.rb +3 -3
  27. data/lib/zendesk2/groups.rb +2 -2
  28. data/lib/zendesk2/help_center.rb +9 -0
  29. data/lib/zendesk2/help_center/access_policy.rb +1 -1
  30. data/lib/zendesk2/help_center/article.rb +9 -3
  31. data/lib/zendesk2/help_center/articles.rb +1 -1
  32. data/lib/zendesk2/help_center/category.rb +11 -5
  33. data/lib/zendesk2/help_center/create_help_center_article.rb +2 -2
  34. data/lib/zendesk2/help_center/create_help_center_category.rb +2 -2
  35. data/lib/zendesk2/help_center/create_help_center_section.rb +4 -4
  36. data/lib/zendesk2/help_center/create_help_center_translation.rb +37 -0
  37. data/lib/zendesk2/help_center/destroy_help_center_translation.rb +13 -0
  38. data/lib/zendesk2/help_center/get_help_center_translation.rb +13 -0
  39. data/lib/zendesk2/help_center/get_help_center_translations.rb +25 -0
  40. data/lib/zendesk2/help_center/section.rb +12 -6
  41. data/lib/zendesk2/help_center/sections.rb +1 -1
  42. data/lib/zendesk2/help_center/translation.rb +48 -0
  43. data/lib/zendesk2/help_center/translation_source.rb +45 -0
  44. data/lib/zendesk2/help_center/translations.rb +29 -0
  45. data/lib/zendesk2/help_center/update_help_center_translation.rb +16 -0
  46. data/lib/zendesk2/mark_user_identity_primary.rb +1 -1
  47. data/lib/zendesk2/membership.rb +3 -3
  48. data/lib/zendesk2/memberships.rb +3 -3
  49. data/lib/zendesk2/mock.rb +2 -1
  50. data/lib/zendesk2/organization.rb +8 -8
  51. data/lib/zendesk2/organizations.rb +2 -2
  52. data/lib/zendesk2/paged_collection.rb +3 -3
  53. data/lib/zendesk2/real.rb +6 -6
  54. data/lib/zendesk2/request.rb +9 -9
  55. data/lib/zendesk2/search.rb +2 -2
  56. data/lib/zendesk2/searchable.rb +1 -1
  57. data/lib/zendesk2/ticket.rb +9 -9
  58. data/lib/zendesk2/ticket_audit.rb +2 -2
  59. data/lib/zendesk2/ticket_audits.rb +3 -3
  60. data/lib/zendesk2/ticket_comment.rb +1 -1
  61. data/lib/zendesk2/ticket_comment_privacy_change.rb +1 -1
  62. data/lib/zendesk2/ticket_comments.rb +2 -2
  63. data/lib/zendesk2/ticket_field.rb +3 -3
  64. data/lib/zendesk2/ticket_metric.rb +1 -1
  65. data/lib/zendesk2/ticket_voice_comment.rb +1 -1
  66. data/lib/zendesk2/tickets.rb +1 -1
  67. data/lib/zendesk2/topic.rb +3 -3
  68. data/lib/zendesk2/topic_comment.rb +4 -4
  69. data/lib/zendesk2/update_organization.rb +1 -1
  70. data/lib/zendesk2/update_ticket.rb +5 -5
  71. data/lib/zendesk2/update_user.rb +4 -4
  72. data/lib/zendesk2/user.rb +13 -13
  73. data/lib/zendesk2/user_field.rb +3 -3
  74. data/lib/zendesk2/user_identity.rb +5 -5
  75. data/lib/zendesk2/users.rb +1 -1
  76. data/lib/zendesk2/version.rb +1 -1
  77. data/lib/zendesk2/view.rb +4 -4
  78. data/spec/help_center/articles_spec.rb +18 -0
  79. data/spec/help_center/categories_spec.rb +13 -0
  80. data/spec/help_center/sections_spec.rb +14 -1
  81. data/spec/support/client_helper.rb +0 -1
  82. metadata +10 -2
@@ -19,6 +19,6 @@ class Zendesk2::TicketComment < Zendesk2::AuditEvent
19
19
  def author
20
20
  requires :author_id
21
21
 
22
- self.service.users.get(self.author_id)
22
+ self.cistern.users.get(self.author_id)
23
23
  end
24
24
  end
@@ -13,7 +13,7 @@ class Zendesk2
13
13
  def comment
14
14
  requires :comment_id
15
15
 
16
- self.service.ticket_comments.get(self.comment_id)
16
+ self.cistern.ticket_comments.get(self.comment_id)
17
17
  end
18
18
  end
19
19
  end
@@ -11,13 +11,13 @@ class Zendesk2::TicketComments
11
11
  self.collection_root = "comments"
12
12
 
13
13
  def ticket
14
- self.service.tickets.get(self.ticket_id)
14
+ self.cistern.tickets.get(self.ticket_id)
15
15
  end
16
16
 
17
17
  def all(params={})
18
18
  requires :ticket_id
19
19
 
20
- body = service.send(collection_method, {"ticket_id" => self.ticket_id}.merge(params)).body
20
+ body = cistern.send(collection_method, {"ticket_id" => self.ticket_id}.merge(params)).body
21
21
 
22
22
  collection = self.clone.load(body[collection_root])
23
23
  collection.merge_attributes(Cistern::Hash.slice(body, "count", "next_page", "previous_page"))
@@ -49,11 +49,11 @@ class Zendesk2::TicketField
49
49
  data = if new_record?
50
50
  requires :type, :title
51
51
 
52
- service.create_ticket_field("ticket_field" => self.attributes)
52
+ cistern.create_ticket_field("ticket_field" => self.attributes)
53
53
  else
54
54
  requires :identity
55
55
 
56
- service.update_ticket_field("ticket_field" => self.attributes)
56
+ cistern.update_ticket_field("ticket_field" => self.attributes)
57
57
  end.body["ticket_field"]
58
58
 
59
59
  merge_attributes(data)
@@ -62,6 +62,6 @@ class Zendesk2::TicketField
62
62
  def destroy!
63
63
  requires :identity
64
64
 
65
- service.destroy_ticket_field("ticket_field" => { "id" => self.identity })
65
+ cistern.destroy_ticket_field("ticket_field" => { "id" => self.identity })
66
66
  end
67
67
  end
@@ -48,7 +48,7 @@ class Zendesk2::TicketMetric < Cistern::Model
48
48
  def ticket
49
49
  requires :ticket_id
50
50
 
51
- self.service.tickets.get(self.ticket_id)
51
+ self.cistern.tickets.get(self.ticket_id)
52
52
  end
53
53
 
54
54
  end
@@ -28,7 +28,7 @@ class Zendesk2
28
28
  def author
29
29
  requires :author_id
30
30
 
31
- self.service.users.get(self.author_id)
31
+ self.cistern.users.get(self.author_id)
32
32
  end
33
33
  end
34
34
  end
@@ -30,7 +30,7 @@ class Zendesk2::Tickets
30
30
  :get_tickets
31
31
  end
32
32
 
33
- body = service.send(collection_method, Cistern::Hash.stringify_keys(self.attributes.merge(params))).body
33
+ body = cistern.send(collection_method, Cistern::Hash.stringify_keys(self.attributes.merge(params))).body
34
34
 
35
35
  self.load(body[collection_root]) # 'results' is the key for paged searches
36
36
  self.merge_attributes(Cistern::Hash.slice(body, "count", "next_page", "previous_page"))
@@ -27,18 +27,18 @@ class Zendesk2::Topic
27
27
  def destroy!
28
28
  requires :identity
29
29
 
30
- service.destroy_topic("topic" => {"id" => self.identity})
30
+ cistern.destroy_topic("topic" => {"id" => self.identity})
31
31
  end
32
32
 
33
33
  def save!
34
34
  data = if new_record?
35
35
  requires :title, :body
36
36
 
37
- service.create_topic("topic" => self.attributes)
37
+ cistern.create_topic("topic" => self.attributes)
38
38
  else
39
39
  requires :identity
40
40
 
41
- service.update_topic("topic" => self.attributes)
41
+ cistern.update_topic("topic" => self.attributes)
42
42
  end.body["topic"]
43
43
 
44
44
  merge_attributes(data)
@@ -29,18 +29,18 @@ class Zendesk2::TopicComment
29
29
  def destroy!
30
30
  requires :identity
31
31
 
32
- service.destroy_topic_comment("topic_comment" => { "id" => self.identity, "topic_id" => self.topic_id })
32
+ cistern.destroy_topic_comment("topic_comment" => { "id" => self.identity, "topic_id" => self.topic_id })
33
33
  end
34
34
 
35
35
  def save!
36
36
  response = if new_record?
37
37
  requires :topic_id, :user_id, :body
38
38
 
39
- service.create_topic_comment("topic_comment" => self.attributes)
39
+ cistern.create_topic_comment("topic_comment" => self.attributes)
40
40
  else
41
41
  requires :identity
42
42
 
43
- service.update_topic_comment("topic_comment" => self.attributes)
43
+ cistern.update_topic_comment("topic_comment" => self.attributes)
44
44
  end
45
45
 
46
46
  merge_attributes(response.body["topic_comment"])
@@ -49,7 +49,7 @@ class Zendesk2::TopicComment
49
49
  def reload
50
50
  requires :identity
51
51
 
52
- if data = self.service.topic_comments("topic_id" => topic_id).get(identity)
52
+ if data = self.cistern.topic_comments("topic_id" => topic_id).get(identity)
53
53
  new_attributes = data.attributes
54
54
  merge_attributes(new_attributes)
55
55
  self
@@ -20,7 +20,7 @@ class Zendesk2::UpdateOrganization
20
20
  def mock
21
21
  record = self.find!(:organizations, organization_id)
22
22
 
23
- other_organizations = service.data[:organizations].dup
23
+ other_organizations = cistern.data[:organizations].dup
24
24
  other_organizations.delete(organization_id)
25
25
 
26
26
  if organization["name"] && other_organizations.values.find { |o| o["name"].downcase == organization["name"].downcase }
@@ -23,12 +23,12 @@ class Zendesk2::UpdateTicket
23
23
  body = self.find!(:tickets, ticket_id).merge!(ticket_params)
24
24
 
25
25
  if comment
26
- comment_id = service.serial_id
26
+ comment_id = cistern.serial_id
27
27
 
28
- comment_data = service.data[:ticket_comments][comment_id] = {
28
+ comment_data = cistern.data[:ticket_comments][comment_id] = {
29
29
  "id" => comment_id,
30
30
  "type" => "Comment",
31
- "author_id" => service.current_user["id"],
31
+ "author_id" => cistern.current_user["id"],
32
32
  "body" => comment["body"],
33
33
  "html_body" => "<p>#{comment["body"]}</p>",
34
34
  "public" => comment["public"].nil? ? true : comment["public"],
@@ -37,13 +37,13 @@ class Zendesk2::UpdateTicket
37
37
  "ticket_id" => ticket_id,
38
38
  }
39
39
 
40
- audit_id = service.serial_id
40
+ audit_id = cistern.serial_id
41
41
 
42
42
  audit = {
43
43
  "id" => audit_id,
44
44
  "ticket_id" => ticket_id,
45
45
  "created_at" => Time.now,
46
- "author_id" => service.current_user["id"],
46
+ "author_id" => cistern.current_user["id"],
47
47
  "via" => {
48
48
  "channel" => "api",
49
49
  "source" => {
@@ -16,7 +16,7 @@ class Zendesk2::UpdateUser
16
16
  def mock
17
17
  email = user_params["email"]
18
18
 
19
- other_users = service.data[:users].dup
19
+ other_users = cistern.data[:users].dup
20
20
  other_users.delete(user_id)
21
21
 
22
22
  external_id = user_params["external_id"]
@@ -25,7 +25,7 @@ class Zendesk2::UpdateUser
25
25
  error!(:invalid, details: {"name" => [ { "description" => "External has already been taken" } ]})
26
26
  end
27
27
 
28
- existing_identity = service.data[:identities].values.find { |i| i["type"] == "email" && i["value"] == email }
28
+ existing_identity = cistern.data[:identities].values.find { |i| i["type"] == "email" && i["value"] == email }
29
29
 
30
30
  if !email
31
31
  # nvm
@@ -38,7 +38,7 @@ class Zendesk2::UpdateUser
38
38
  # no-op email already used
39
39
  else
40
40
  # add a new identity
41
- user_identity_id = service.serial_id
41
+ user_identity_id = cistern.serial_id
42
42
 
43
43
  user_identity = {
44
44
  "id" => user_identity_id,
@@ -52,7 +52,7 @@ class Zendesk2::UpdateUser
52
52
  "user_id" => user_id,
53
53
  }
54
54
 
55
- service.data[:identities][user_identity_id] = user_identity
55
+ cistern.data[:identities][user_identity_id] = user_identity
56
56
  end
57
57
 
58
58
  mock_response("user" => self.find!(:users, user_id).merge!(user_params))
data/lib/zendesk2/user.rb CHANGED
@@ -70,11 +70,11 @@ class Zendesk2::User
70
70
  data = if new_record?
71
71
  requires :name, :email
72
72
 
73
- service.create_user("user" => self.attributes)
73
+ cistern.create_user("user" => self.attributes)
74
74
  else
75
75
  requires :identity
76
76
 
77
- service.update_user("user" => self.attributes)
77
+ cistern.update_user("user" => self.attributes)
78
78
  end.body["user"]
79
79
 
80
80
  merge_attributes(data)
@@ -83,12 +83,12 @@ class Zendesk2::User
83
83
  def destroy!
84
84
  requires :identity
85
85
 
86
- if self.email == service.username
86
+ if self.email == cistern.username
87
87
  raise "don't nuke yourself"
88
88
  end
89
89
 
90
90
  merge_attributes(
91
- service.destroy_user("user" => {"id" => self.identity}).body["user"]
91
+ cistern.destroy_user("user" => {"id" => self.identity}).body["user"]
92
92
  )
93
93
  end
94
94
 
@@ -105,9 +105,9 @@ class Zendesk2::User
105
105
  requires :name, :email
106
106
 
107
107
  return_to = options[:return_to]
108
- token = self.service.token || options[:token]
108
+ token = self.cistern.token || options[:token]
109
109
 
110
- uri = URI.parse(self.service.url)
110
+ uri = URI.parse(self.cistern.url)
111
111
  uri.path = "/access/remote"
112
112
 
113
113
  raise "timestamp cannot be nil" unless timestamp
@@ -137,9 +137,9 @@ class Zendesk2::User
137
137
  requires :name, :email
138
138
 
139
139
  return_to = options[:return_to]
140
- jwt_token = self.service.jwt_token || options[:jwt_token]
140
+ jwt_token = self.cistern.jwt_token || options[:jwt_token]
141
141
 
142
- uri = URI.parse(self.service.url)
142
+ uri = URI.parse(self.cistern.url)
143
143
  uri.path = "/access/jwt"
144
144
 
145
145
  iat = Time.now.to_i
@@ -167,7 +167,7 @@ class Zendesk2::User
167
167
  def tickets
168
168
  requires :identity
169
169
 
170
- service.tickets(requester_id: self.identity)
170
+ cistern.tickets(requester_id: self.identity)
171
171
  end
172
172
  alias requested_tickets tickets
173
173
 
@@ -175,21 +175,21 @@ class Zendesk2::User
175
175
  def ccd_tickets
176
176
  requires :identity
177
177
 
178
- service.tickets(collaborator_id: self.identity)
178
+ cistern.tickets(collaborator_id: self.identity)
179
179
  end
180
180
 
181
181
  # @return [Zendesk2::UserIdentities] the identities of this user
182
182
  def identities
183
- self.service.user_identities("user_id" => self.identity)
183
+ self.cistern.user_identities("user_id" => self.identity)
184
184
  end
185
185
 
186
186
  # @return [Zendesk2::Memberships] the organization memberships of this user
187
187
  def memberships
188
- self.service.memberships(user: self)
188
+ self.cistern.memberships(user: self)
189
189
  end
190
190
 
191
191
  # @return [Zendesk2::Organizations] the organizations of this user through memberships
192
192
  def organizations
193
- self.service.organizations(user: self)
193
+ self.cistern.organizations(user: self)
194
194
  end
195
195
  end
@@ -35,11 +35,11 @@ class Zendesk2::UserField
35
35
  response = if new_record?
36
36
  requires :type, :title, :key
37
37
 
38
- service.create_user_field("user_field" => self.attributes)
38
+ cistern.create_user_field("user_field" => self.attributes)
39
39
  else
40
40
  requires :identity
41
41
 
42
- service.update_user_field("user_field" => self.attributes)
42
+ cistern.update_user_field("user_field" => self.attributes)
43
43
  end
44
44
 
45
45
  merge_attributes(response.body["user_field"])
@@ -48,6 +48,6 @@ class Zendesk2::UserField
48
48
  def destroy!
49
49
  requires :identity
50
50
 
51
- service.destroy_user_field("user_field" => { "id" => self.identity })
51
+ cistern.destroy_user_field("user_field" => { "id" => self.identity })
52
52
  end
53
53
  end
@@ -27,11 +27,11 @@ class Zendesk2::UserIdentity
27
27
  data = if new_record?
28
28
  requires :type, :value, :user_id
29
29
 
30
- service.create_user_identity("user_identity" => self.attributes)
30
+ cistern.create_user_identity("user_identity" => self.attributes)
31
31
  else
32
32
  requires :identity
33
33
 
34
- service.update_user_identity("user_identity" => self.attributes)
34
+ cistern.update_user_identity("user_identity" => self.attributes)
35
35
  end.body["identity"]
36
36
 
37
37
  merge_attributes(data)
@@ -40,20 +40,20 @@ class Zendesk2::UserIdentity
40
40
  def destroy!
41
41
  requires :identity
42
42
 
43
- service.destroy_user_identity("user_identity" => { "user_id" => self.user_id, "id" => self.identity })
43
+ cistern.destroy_user_identity("user_identity" => { "user_id" => self.user_id, "id" => self.identity })
44
44
  end
45
45
 
46
46
  def reload
47
47
  requires :identity
48
48
 
49
- if model = self.service.user_identities("user_id" => user_id).get(identity)
49
+ if model = self.cistern.user_identities("user_id" => user_id).get(identity)
50
50
  merge_attributes(model.attributes)
51
51
  self
52
52
  end
53
53
  end
54
54
 
55
55
  def primary!
56
- self.service.mark_user_identity_primary("user_identity" => { "user_id" => self.user_id, "id" => self.identity })
56
+ self.cistern.mark_user_identity_primary("user_identity" => { "user_id" => self.user_id, "id" => self.identity })
57
57
  self.primary = true
58
58
  end
59
59
  end
@@ -14,6 +14,6 @@ class Zendesk2::Users
14
14
  self.search_request = :search_user
15
15
 
16
16
  def current
17
- new(service.get_current_user.body["user"])
17
+ new(cistern.get_current_user.body["user"])
18
18
  end
19
19
  end
@@ -1,3 +1,3 @@
1
1
  module Zendesk2
2
- VERSION = "1.8.1"
2
+ VERSION = "1.9.0"
3
3
  end
data/lib/zendesk2/view.rb CHANGED
@@ -33,9 +33,9 @@ class Zendesk2::View
33
33
  }.merge(Cistern::Hash.slice(self.conditions, "any", "all"))
34
34
 
35
35
  data = if new_record?
36
- service.create_view("view" => params)
36
+ cistern.create_view("view" => params)
37
37
  else
38
- service.create_view("view" => params)
38
+ cistern.create_view("view" => params)
39
39
  end.body
40
40
 
41
41
  merge_attributes(data["view"])
@@ -44,12 +44,12 @@ class Zendesk2::View
44
44
  def tickets
45
45
  requires :identity
46
46
 
47
- service.tickets(view_id: self.identity)
47
+ cistern.tickets(view_id: self.identity)
48
48
  end
49
49
 
50
50
  def destroy!
51
51
  requires :identity
52
52
 
53
- service.destroy_view("view" => {"id" => self.identity})
53
+ cistern.destroy_view("view" => {"id" => self.identity})
54
54
  end
55
55
  end
@@ -19,4 +19,22 @@ describe "help_center/articles" do
19
19
  :search_params => lambda { Cistern::Hash.slice(create_params, :title) },
20
20
  :search => true,
21
21
  }
22
+
23
+ describe "translations" do
24
+ let!(:article) do
25
+ client.help_center_articles.create!(:title => mock_uuid,
26
+ :locale => "en-us",
27
+ :section => section
28
+ )
29
+ end
30
+ let!(:locale) { mock_uuid }
31
+
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
+ }
39
+ end
22
40
  end
@@ -28,4 +28,17 @@ describe "help_center/categories" do
28
28
  expect(category.articles.all).to match_array(articles)
29
29
  end
30
30
  end
31
+
32
+ describe "translations" do
33
+ let!(:category) { client.help_center_categories.create!(name: mock_uuid, locale: "en-us") }
34
+ let!(:locale) { mock_uuid }
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
+ }
43
+ end
31
44
  end