zendesk2 1.8.1 → 1.9.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 (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